diff --git a/README.md b/README.md index e054932b..298ef96a 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ Steps are described in [`erpcgen/VisualStudio_v14/readme_erpcgen.txt`](erpcgen/V Install these packages: * bison: GNU yacc-compatible parser generator * flex: A fast lexical analyzer generator -* libboost-dev, libboost-filesystem-dev, libboost-system-dev: Boost C++ libraries (Linux needs to use libboost version 1.58.0) +* libboost-dev, libboost-filesystem-dev, libboost-system-dev: Boost C++ libraries (Linux needs to use libboost version 1.67.0) * make: the GNU version of the 'make' utility * python: Python language interpreter (either 2.7 or 3.5+ work) * gcc-core: GNU Compiler Collection (C, OpenMP) diff --git a/doxygen/Doxyfile.erpc b/doxygen/Doxyfile.erpc index dae9cb25..16cd59f7 100644 --- a/doxygen/Doxyfile.erpc +++ b/doxygen/Doxyfile.erpc @@ -38,7 +38,7 @@ PROJECT_NAME = "eRPC API Reference" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "Rev. 1.7.3" +PROJECT_NUMBER = "Rev. 1.7.4" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doxygen/Doxyfile.erpcgen b/doxygen/Doxyfile.erpcgen index 1771189b..8a767aef 100644 --- a/doxygen/Doxyfile.erpcgen +++ b/doxygen/Doxyfile.erpcgen @@ -38,7 +38,7 @@ PROJECT_NAME = "eRPC Generator (erpcgen)" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "Rev. 1.7.3" +PROJECT_NUMBER = "Rev. 1.7.4" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doxygen/html_footer.html b/doxygen/html_footer.html index 99eff856..dd02cae3 100644 --- a/doxygen/html_footer.html +++ b/doxygen/html_footer.html @@ -3,14 +3,14 @@ diff --git a/erpc_c/config/erpc_config.h b/erpc_c/config/erpc_config.h index d3e0b818..ad16559f 100644 --- a/erpc_c/config/erpc_config.h +++ b/erpc_c/config/erpc_config.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2019 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -95,8 +95,9 @@ //! @def ERPC_MESSAGE_LOGGING //! -//! Enable eRPC message logging code through the eRPC. Take look into "erpc_message_loggers.h". Can be used for base printing -//! messages, or sending data to another system for data analysis. Default set to ERPC_MESSAGE_LOGGING_DISABLED. +//! Enable eRPC message logging code through the eRPC. Take look into "erpc_message_loggers.h". Can be used for base +//! printing messages, or sending data to another system for data analysis. Default set to +//! ERPC_MESSAGE_LOGGING_DISABLED. //! //! Uncomment for using logging feature. //#define ERPC_MESSAGE_LOGGING (ERPC_MESSAGE_LOGGING_ENABLED) diff --git a/erpc_c/infra/erpc_arbitrated_client_manager.cpp b/erpc_c/infra/erpc_arbitrated_client_manager.cpp index a6866164..15312e3d 100644 --- a/erpc_c/infra/erpc_arbitrated_client_manager.cpp +++ b/erpc_c/infra/erpc_arbitrated_client_manager.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -11,6 +11,10 @@ #include "erpc_transport_arbitrator.h" #include "assert.h" +#if ERPC_THREADS_IS(NONE) +#error "Arbitrator code does not work in no-threading configuration." +#endif + using namespace erpc; //////////////////////////////////////////////////////////////////////////////// diff --git a/erpc_c/infra/erpc_transport_arbitrator.cpp b/erpc_c/infra/erpc_transport_arbitrator.cpp index d004af3a..158e576c 100644 --- a/erpc_c/infra/erpc_transport_arbitrator.cpp +++ b/erpc_c/infra/erpc_transport_arbitrator.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -12,6 +12,10 @@ #include #include +#if ERPC_THREADS_IS(NONE) +#error "Arbitrator code does not work in no-threading configuration." +#endif + using namespace erpc; //////////////////////////////////////////////////////////////////////////////// diff --git a/erpc_c/infra/erpc_version.h b/erpc_c/infra/erpc_version.h index 653b1cb1..f3d610ff 100644 --- a/erpc_c/infra/erpc_version.h +++ b/erpc_c/infra/erpc_version.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2019 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -20,9 +20,9 @@ //////////////////////////////////////////////////////////////////////////////// //! @brief String version of eRPC. -#define ERPC_VERSION "1.7.3" +#define ERPC_VERSION "1.7.4" //! @brief Integer version of eRPC. -#define ERPC_VERSION_NUMBER 10703 +#define ERPC_VERSION_NUMBER 10704 /*! @} */ diff --git a/erpc_c/port/erpc_threading.h b/erpc_c/port/erpc_threading.h index d5806ec3..fbcc643b 100644 --- a/erpc_c/port/erpc_threading.h +++ b/erpc_c/port/erpc_threading.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -214,7 +214,7 @@ class Thread struct k_thread m_thread; /*!< Current thread. */ k_thread_stack_t *m_stack; /*!< Pointer to stack. */ #elif ERPC_THREADS_IS(MBED) - rtos::Thread* m_thread; /*!< Underlying Thread instance */ + rtos::Thread *m_thread; /*!< Underlying Thread instance */ Thread *m_next; /*!< Pointer to next Thread. */ static Thread *s_first; /*!< Pointer to first Thread. */ #endif @@ -249,10 +249,10 @@ class Thread #elif ERPC_THREADS_IS(MBED) /*! - * @brief This function execute threadEntryPoint function. - * - * @param[in] arg Thread to execute. - */ + * @brief This function execute threadEntryPoint function. + * + * @param[in] arg Thread to execute. + */ static void threadEntryPointStub(void *arg); #endif @@ -359,7 +359,7 @@ class Mutex #elif ERPC_THREADS_IS(ZEPHYR) struct k_mutex m_mutex; /*!< Mutex.*/ #elif ERPC_THREADS_IS(MBED) - rtos::Mutex* m_mutex; /*!< Mutex. */ + rtos::Mutex *m_mutex; /*!< Mutex. */ #endif private: @@ -442,7 +442,7 @@ class Semaphore #elif ERPC_THREADS_IS(ZEPHYR) struct k_sem m_sem; /*!< Semaphore. */ #elif ERPC_THREADS_IS(MBED) - rtos::Semaphore* m_sem; /*!< Semaphore. */ + rtos::Semaphore *m_sem; /*!< Semaphore. */ int m_count; /*!< Semaphore count number. */ #endif diff --git a/erpc_c/port/erpc_threading_mbed.cpp b/erpc_c/port/erpc_threading_mbed.cpp index bdd254f1..aef9df8d 100644 --- a/erpc_c/port/erpc_threading_mbed.cpp +++ b/erpc_c/port/erpc_threading_mbed.cpp @@ -15,215 +15,221 @@ #if ERPC_THREADS_IS(MBED) -namespace erpc -{ +namespace erpc { //////////////////////////////////////////////////////////////////////////////// // Variables //////////////////////////////////////////////////////////////////////////////// - Thread *Thread::s_first = NULL; +Thread *Thread::s_first = NULL; //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// - Thread::Thread(const char *name) - : m_name(name) - , m_entry(0) - , m_arg(0) - , m_stackSize(0) - , m_priority(0) - , m_thread(NULL) - , m_next(NULL) - { - } +Thread::Thread(const char *name) +: m_name(name) +, m_entry(0) +, m_arg(0) +, m_stackSize(0) +, m_priority(0) +, m_thread(NULL) +, m_next(NULL) +{ +} - Thread::Thread(thread_entry_t entry, uint32_t priority, uint32_t stackSize, const char *name) - : m_name(name) - , m_entry(entry) - , m_arg(0) - , m_stackSize(stackSize) - , m_priority(priority) - , m_thread(NULL) - , m_next(NULL) +Thread::Thread(thread_entry_t entry, uint32_t priority, uint32_t stackSize, const char *name) +: m_name(name) +, m_entry(entry) +, m_arg(0) +, m_stackSize(stackSize) +, m_priority(priority) +, m_thread(NULL) +, m_next(NULL) +{ +} + +Thread::~Thread(void) +{ + if (m_thread != NULL) { + delete m_thread; + m_thread = NULL; } +} - Thread::~Thread(void) { - if(m_thread != NULL) { - delete m_thread; - m_thread = NULL; - } - } +void Thread::init(thread_entry_t entry, uint32_t priority, uint32_t stackSize) +{ + m_entry = entry; + m_stackSize = stackSize; + m_priority = priority; + m_thread = + new rtos::Thread(osPriorityNormal, // Ignore priority because erpc does not map their priority to anything + ((m_stackSize + sizeof(uint32_t) - 1) / sizeof(uint32_t)), // Round up number of words + NULL, m_name); +} - void Thread::init(thread_entry_t entry, uint32_t priority, uint32_t stackSize) - { - m_entry = entry; - m_stackSize = stackSize; - m_priority = priority; - m_thread = new rtos::Thread(osPriorityNormal, // Ignore priority because erpc does not map their priority to anything - ((m_stackSize + sizeof(uint32_t) - 1) / sizeof(uint32_t)),// Round up number of words - NULL, m_name); - } +void Thread::start(void *arg) +{ + m_arg = arg; - void Thread::start(void *arg) - { - m_arg = arg; + // Enter a critical section to disable preemptive scheduling until we add the newly + // created thread to the linked list. This prevents a race condition if the new thread is + // higher priority than the current thread, and the new thread calls getCurrenThread(), + // which will scan the linked list. + mbed::CriticalSectionLock::enable(); - // Enter a critical section to disable preemptive scheduling until we add the newly - // created thread to the linked list. This prevents a race condition if the new thread is - // higher priority than the current thread, and the new thread calls getCurrenThread(), - // which will scan the linked list. - mbed::CriticalSectionLock::enable(); + if (s_first) + { + m_next = s_first; + } + s_first = this; - if(s_first) - { - m_next = s_first; - } - s_first = this; + // Start the thread + m_thread->start(mbed::callback(&erpc::Thread::threadEntryPointStub, this)); - // Start the thread - m_thread->start(mbed::callback(&erpc::Thread::threadEntryPointStub, this)); + mbed::CriticalSectionLock::disable(); +} - mbed::CriticalSectionLock::disable(); - } +bool Thread::operator==(Thread &o) +{ + return (this->getThreadId() == o.getThreadId()); +} - bool Thread::operator==(Thread &o) - { - return (this->getThreadId() == o.getThreadId()); - } +Thread *Thread::getCurrentThread() +{ + osThreadId_t currentThreadId = rtos::ThisThread::get_id(); - Thread *Thread::getCurrentThread() + // Walk the threads list to find the Thread object for the current task. + mbed::CriticalSectionLock::enable(); + Thread *it = s_first; + while (it) { - osThreadId_t currentThreadId = rtos::ThisThread::get_id(); - -// Walk the threads list to find the Thread object for the current task. - mbed::CriticalSectionLock::enable(); - Thread *it = s_first; - while (it) + if (it->getThreadId() == currentThreadId) { - if (it->getThreadId() == currentThreadId) - { - break; - } - it = it->m_next; + break; } - mbed::CriticalSectionLock::disable(); - return it; + it = it->m_next; } + mbed::CriticalSectionLock::disable(); + return it; +} - void Thread::sleep(uint32_t usecs) - { - rtos::ThisThread::sleep_for(usecs/1000); - } +void Thread::sleep(uint32_t usecs) +{ + rtos::ThisThread::sleep_for(usecs / 1000); +} - void Thread::threadEntryPoint(void) +void Thread::threadEntryPoint(void) +{ + if (m_entry) { - if (m_entry) - { - m_entry(m_arg); - } + m_entry(m_arg); } +} + +void Thread::threadEntryPointStub(void *arg) +{ + Thread *_this = reinterpret_cast(arg); + MBED_ASSERT(_this); // Reinterpreting 'void *arg' to 'Thread *' failed. + _this->threadEntryPoint(); - void Thread::threadEntryPointStub(void *arg) + // Remove this thread from the linked list. + mbed::CriticalSectionLock::enable(); + Thread *it = s_first; + Thread *prev = NULL; + while (it) { - Thread *_this = reinterpret_cast(arg); - MBED_ASSERT(_this); // Reinterpreting 'void *arg' to 'Thread *' failed. - _this->threadEntryPoint(); - - // Remove this thread from the linked list. - mbed::CriticalSectionLock::enable(); - Thread *it = s_first; - Thread *prev = NULL; - while (it) + if (it == _this) { - if (it == _this) + if (it == s_first) + { + s_first = _this->m_next; + } + else if (prev) { - if (it == s_first) - { - s_first = _this->m_next; - } - else if (prev) - { - prev->m_next = _this->m_next; - } - _this->m_next = NULL; - - break; + prev->m_next = _this->m_next; } - prev = it; - it = it->m_next; + _this->m_next = NULL; + + break; } - mbed::CriticalSectionLock::disable(); + prev = it; + it = it->m_next; } + mbed::CriticalSectionLock::disable(); +} - Mutex::Mutex(void) - { - // Having a member variable mutex - // was causing memory alignment issues... - m_mutex = new rtos::Mutex(); - } +Mutex::Mutex(void) +{ + // Having a member variable mutex + // was causing memory alignment issues... + m_mutex = new rtos::Mutex(); +} - Mutex::~Mutex(void) +Mutex::~Mutex(void) +{ + if (m_mutex != NULL) { - if(m_mutex != NULL) { - delete m_mutex; - m_mutex = NULL; - } + delete m_mutex; + m_mutex = NULL; } +} - bool Mutex::tryLock(void) - { - // Pass a zero timeout to poll the mutex. - return m_mutex->trylock(); - } +bool Mutex::tryLock(void) +{ + // Pass a zero timeout to poll the mutex. + return m_mutex->trylock(); +} - bool Mutex::lock(void) - { - return m_mutex->lock(); - } +bool Mutex::lock(void) +{ + return m_mutex->lock(); +} - bool Mutex::unlock(void) - { - return m_mutex->unlock(); - } +bool Mutex::unlock(void) +{ + return m_mutex->unlock(); +} - Semaphore::Semaphore(int count) - : m_count(count) - { - m_sem = new rtos::Semaphore(m_count); - } +Semaphore::Semaphore(int count) +: m_count(count) +{ + m_sem = new rtos::Semaphore(m_count); +} - Semaphore::~Semaphore(void) +Semaphore::~Semaphore(void) +{ + if (m_sem != NULL) { - if(m_sem != NULL) { - delete m_sem; - m_sem = NULL; - } + delete m_sem; + m_sem = NULL; } +} - void Semaphore::put(void) - { - m_sem->release(); - } +void Semaphore::put(void) +{ + m_sem->release(); +} - bool Semaphore::get(uint32_t timeout) +bool Semaphore::get(uint32_t timeout) +{ + m_count = m_sem->wait(timeout); + if (m_count < 0) { - m_count = m_sem->wait(timeout); - if(m_count < 0) { - return true; - } - else { - return false; - } + return true; } - - int Semaphore::getCount(void) const + else { - return m_count; + return false; } +} +int Semaphore::getCount(void) const +{ + return m_count; } +} // namespace erpc + #endif diff --git a/erpc_c/setup/erpc_arbitrated_client_setup.cpp b/erpc_c/setup/erpc_arbitrated_client_setup.cpp index b03e75ba..ec8d1650 100644 --- a/erpc_c/setup/erpc_arbitrated_client_setup.cpp +++ b/erpc_c/setup/erpc_arbitrated_client_setup.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -18,6 +18,10 @@ #endif #include +#if ERPC_THREADS_IS(NONE) +#error "Arbitrator code does not work in no-threading configuration." +#endif + using namespace erpc; //////////////////////////////////////////////////////////////////////////////// diff --git a/erpc_c/setup/erpc_setup_rpmsg_lite_master.cpp b/erpc_c/setup/erpc_setup_rpmsg_lite_master.cpp index 4cb00af8..fa24806b 100644 --- a/erpc_c/setup/erpc_setup_rpmsg_lite_master.cpp +++ b/erpc_c/setup/erpc_setup_rpmsg_lite_master.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -18,7 +18,7 @@ using namespace erpc; //////////////////////////////////////////////////////////////////////////////// #if !defined(SH_MEM_TOTAL_SIZE) -#define SH_MEM_TOTAL_SIZE (6144) +#define SH_MEM_TOTAL_SIZE (6144U) #endif #if defined(__ICCARM__) /* IAR Workbench */ @@ -38,7 +38,7 @@ static ManuallyConstructed s_transport; // Code //////////////////////////////////////////////////////////////////////////////// -erpc_transport_t erpc_transport_rpmsg_lite_master_init(uint32_t src_addr, uint32_t dst_addr, int32_t rpmsg_link_id) +erpc_transport_t erpc_transport_rpmsg_lite_master_init(uint32_t src_addr, uint32_t dst_addr, uint32_t rpmsg_link_id) { s_transport.construct(); if (s_transport->init(src_addr, dst_addr, rpmsg_lite_base, SH_MEM_TOTAL_SIZE, rpmsg_link_id) == kErpcStatus_Success) diff --git a/erpc_c/setup/erpc_setup_rpmsg_lite_remote.cpp b/erpc_c/setup/erpc_setup_rpmsg_lite_remote.cpp index 90064653..efdb5c35 100644 --- a/erpc_c/setup/erpc_setup_rpmsg_lite_remote.cpp +++ b/erpc_c/setup/erpc_setup_rpmsg_lite_remote.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -24,7 +24,7 @@ static ManuallyConstructed s_transport; //////////////////////////////////////////////////////////////////////////////// erpc_transport_t erpc_transport_rpmsg_lite_remote_init(uint32_t src_addr, uint32_t dst_addr, void *start_address, - int32_t rpmsg_link_id, rpmsg_ready_cb ready, + uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name) { s_transport.construct(); diff --git a/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_master.cpp b/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_master.cpp index 1d20569c..43d8fe0c 100644 --- a/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_master.cpp +++ b/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_master.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -37,7 +37,8 @@ static ManuallyConstructed s_transport; // Code //////////////////////////////////////////////////////////////////////////////// -erpc_transport_t erpc_transport_rpmsg_lite_rtos_master_init(uint32_t src_addr, uint32_t dst_addr, int32_t rpmsg_link_id) +erpc_transport_t erpc_transport_rpmsg_lite_rtos_master_init(uint32_t src_addr, uint32_t dst_addr, + uint32_t rpmsg_link_id) { s_transport.construct(); if (s_transport->init(src_addr, dst_addr, rpmsg_lite_base, SH_MEM_TOTAL_SIZE, rpmsg_link_id) == kErpcStatus_Success) diff --git a/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_remote.cpp b/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_remote.cpp index 35fe535d..517e3e31 100644 --- a/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_remote.cpp +++ b/erpc_c/setup/erpc_setup_rpmsg_lite_rtos_remote.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -24,7 +24,7 @@ static ManuallyConstructed s_transport; //////////////////////////////////////////////////////////////////////////////// erpc_transport_t erpc_transport_rpmsg_lite_rtos_remote_init(uint32_t src_addr, uint32_t dst_addr, void *start_address, - int32_t rpmsg_link_id, rpmsg_ready_cb ready, + uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name) { s_transport.construct(); diff --git a/erpc_c/setup/erpc_setup_rpmsg_tty_rtos_remote.cpp b/erpc_c/setup/erpc_setup_rpmsg_tty_rtos_remote.cpp index bfdfd52a..153d5475 100644 --- a/erpc_c/setup/erpc_setup_rpmsg_tty_rtos_remote.cpp +++ b/erpc_c/setup/erpc_setup_rpmsg_tty_rtos_remote.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2019 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -24,7 +24,7 @@ static ManuallyConstructed s_transport; //////////////////////////////////////////////////////////////////////////////// erpc_transport_t erpc_transport_rpmsg_lite_tty_rtos_remote_init(uint32_t src_addr, uint32_t dst_addr, - void *start_address, int32_t rpmsg_link_id, + void *start_address, uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name) { s_transport.construct(); diff --git a/erpc_c/setup/erpc_transport_setup.h b/erpc_c/setup/erpc_transport_setup.h index 1caf4666..af3e6abf 100644 --- a/erpc_c/setup/erpc_transport_setup.h +++ b/erpc_c/setup/erpc_transport_setup.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2019 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -161,7 +161,7 @@ erpc_transport_t erpc_transport_mu_init(void *baseAddr); * * @return Return NULL or erpc_transport_t instance pointer. */ -erpc_transport_t erpc_transport_rpmsg_lite_master_init(uint32_t src_addr, uint32_t dst_addr, int32_t rpmsg_link_id); +erpc_transport_t erpc_transport_rpmsg_lite_master_init(uint32_t src_addr, uint32_t dst_addr, uint32_t rpmsg_link_id); /*! * @brief Create an RPMsg-Lite transport. @@ -183,7 +183,7 @@ erpc_transport_t erpc_transport_rpmsg_lite_master_init(uint32_t src_addr, uint32 * @return Return NULL or erpc_transport_t instance pointer. */ erpc_transport_t erpc_transport_rpmsg_lite_remote_init(uint32_t src_addr, uint32_t dst_addr, void *start_address, - int32_t rpmsg_link_id, rpmsg_ready_cb ready, + uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name); /*! @@ -199,7 +199,7 @@ erpc_transport_t erpc_transport_rpmsg_lite_remote_init(uint32_t src_addr, uint32 * @return Return NULL or erpc_transport_t instance pointer. */ erpc_transport_t erpc_transport_rpmsg_lite_rtos_master_init(uint32_t src_addr, uint32_t dst_addr, - int32_t rpmsg_link_id); + uint32_t rpmsg_link_id); /*! * @brief Create an RPMsg-Lite RTOS transport. @@ -220,7 +220,7 @@ erpc_transport_t erpc_transport_rpmsg_lite_rtos_master_init(uint32_t src_addr, u * @return Return NULL or erpc_transport_t instance pointer. */ erpc_transport_t erpc_transport_rpmsg_lite_rtos_remote_init(uint32_t src_addr, uint32_t dst_addr, void *start_address, - int32_t rpmsg_link_id, rpmsg_ready_cb ready, + uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name); /*! @@ -243,7 +243,7 @@ erpc_transport_t erpc_transport_rpmsg_lite_rtos_remote_init(uint32_t src_addr, u * @return Return NULL or erpc_transport_t instance pointer. */ erpc_transport_t erpc_transport_rpmsg_lite_tty_rtos_remote_init(uint32_t src_addr, uint32_t dst_addr, - void *start_address, int32_t rpmsg_link_id, + void *start_address, uint32_t rpmsg_link_id, rpmsg_ready_cb ready, char *nameservice_name); /*! diff --git a/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.cpp b/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.cpp index c48eb090..ead30f80 100644 --- a/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.cpp +++ b/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2015, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -17,7 +17,7 @@ using namespace erpc; //////////////////////////////////////////////////////////////////////////////// // Variables //////////////////////////////////////////////////////////////////////////////// -uint8_t RPMsgBaseTransport::s_initialized = 0; +uint8_t RPMsgBaseTransport::s_initialized = 0U; struct rpmsg_lite_instance *RPMsgBaseTransport::s_rpmsg; //////////////////////////////////////////////////////////////////////////////// @@ -37,43 +37,44 @@ RPMsgRTOSTransport::RPMsgRTOSTransport(void) RPMsgRTOSTransport::~RPMsgRTOSTransport(void) { rpmsg_lite_deinit(s_rpmsg); - s_initialized = 0; + s_initialized = 0U; } erpc_status_t RPMsgRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id) + uint32_t rpmsg_link_id) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_master_init(base_address, length, rpmsg_link_id, RL_NO_FLAGS); if (!s_rpmsg) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_queue = rpmsg_queue_create(s_rpmsg); if (!m_rpmsg_queue) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_queue_rx_cb, m_rpmsg_queue); m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } -erpc_status_t RPMsgRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, int32_t rpmsg_link_id, +erpc_status_t RPMsgRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_remote_init(base_address, rpmsg_link_id, RL_NO_FLAGS); if (!s_rpmsg) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } /* Signal the other core we are ready */ @@ -82,11 +83,11 @@ erpc_status_t RPMsgRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, voi ready_cb(); } - while (!rpmsg_lite_is_link_up(s_rpmsg)) + while (0 == rpmsg_lite_is_link_up(s_rpmsg)) { } - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_queue = rpmsg_queue_create(s_rpmsg); @@ -96,16 +97,17 @@ erpc_status_t RPMsgRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, voi } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_queue_rx_cb, m_rpmsg_queue); - if (nameservice_name) + if (NULL != nameservice_name) { - if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, RL_NS_CREATE)) + if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, (uint32_t)RL_NS_CREATE)) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } } m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgRTOSTransport::receive(MessageBuffer *message) @@ -116,7 +118,7 @@ erpc_status_t RPMsgRTOSTransport::receive(MessageBuffer *message) assert(buf); message->set((uint8_t *)buf, length); message->setUsed(length); - return ret_val != RL_SUCCESS ? kErpcStatus_ReceiveFailed : kErpcStatus_Success; + return ret_val != RL_SUCCESS ? (erpc_status_t)kErpcStatus_ReceiveFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgRTOSTransport::send(MessageBuffer *message) @@ -128,9 +130,9 @@ erpc_status_t RPMsgRTOSTransport::send(MessageBuffer *message) int32_t ret_val = rpmsg_lite_send_nocopy(s_rpmsg, m_rpmsg_ept, m_dst_addr, buf, used); if (ret_val == RL_SUCCESS) { - return kErpcStatus_Success; + return (erpc_status_t)kErpcStatus_Success; } message->set(buf, length); message->setUsed(used); - return kErpcStatus_SendFailed; + return (erpc_status_t)kErpcStatus_SendFailed; } diff --git a/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.h b/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.h index 3a07d901..ba3351f7 100644 --- a/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.h +++ b/erpc_c/transports/erpc_rpmsg_lite_rtos_transport.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2015-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -63,7 +63,7 @@ class RPMsgRTOSTransport : public RPMsgBaseTransport * @retval kErpcStatus_InitFailed When rpmsg init function wasn't executed successfully. */ virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id); + uint32_t rpmsg_link_id); /*! * @brief This function call RPMsg rtos init function - as RPMsg remote @@ -79,7 +79,7 @@ class RPMsgRTOSTransport : public RPMsgBaseTransport * @retval kErpcStatus_Success When rpmsg init function was executed successfully. * @retval kErpcStatus_InitFailed When rpmsg init function wasn't executed successfully. */ - virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, int32_t rpmsg_link_id, + virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name); /*! diff --git a/erpc_c/transports/erpc_rpmsg_lite_transport.cpp b/erpc_c/transports/erpc_rpmsg_lite_transport.cpp index 8202f879..d4e259d6 100644 --- a/erpc_c/transports/erpc_rpmsg_lite_transport.cpp +++ b/erpc_c/transports/erpc_rpmsg_lite_transport.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2015-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -15,7 +15,7 @@ using namespace erpc; //////////////////////////////////////////////////////////////////////////////// // Variables //////////////////////////////////////////////////////////////////////////////// -uint8_t RPMsgBaseTransport::s_initialized = 0; +uint8_t RPMsgBaseTransport::s_initialized = 0U; struct rpmsg_lite_instance RPMsgTransport::s_rpmsg_ctxt; struct rpmsg_lite_instance *RPMsgBaseTransport::s_rpmsg = NULL; @@ -30,7 +30,7 @@ int32_t RPMsgTransport::rpmsg_read_cb(void *payload, uint32_t payload_len, uint3 { MessageBuffer message((uint8_t *)payload, payload_len); message.setUsed(payload_len); - transport->m_messageQueue.add(message); + (void)transport->m_messageQueue.add(message); } return RL_HOLD; } @@ -46,25 +46,25 @@ RPMsgTransport::RPMsgTransport(void) RPMsgTransport::~RPMsgTransport(void) {} erpc_status_t RPMsgTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id) + uint32_t rpmsg_link_id) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_master_init(base_address, length, rpmsg_link_id, RL_NO_FLAGS, &s_rpmsg_ctxt); - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_read_cb, this, &m_rpmsg_ept_context); m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } -erpc_status_t RPMsgTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, int32_t rpmsg_link_id, +erpc_status_t RPMsgTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_remote_init(base_address, rpmsg_link_id, RL_NO_FLAGS, &s_rpmsg_ctxt); @@ -74,26 +74,26 @@ erpc_status_t RPMsgTransport::init(uint32_t src_addr, uint32_t dst_addr, void *b ready_cb(); } - while (!rpmsg_lite_is_link_up(s_rpmsg)) + while (0 == rpmsg_lite_is_link_up(s_rpmsg)) { } - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_read_cb, this, &m_rpmsg_ept_context); - if (nameservice_name) + if (NULL != nameservice_name) { - if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, RL_NS_CREATE)) + if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, (uint32_t)RL_NS_CREATE)) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } } m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgTransport::receive(MessageBuffer *message) @@ -102,7 +102,7 @@ erpc_status_t RPMsgTransport::receive(MessageBuffer *message) { } - return kErpcStatus_Success; + return (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgTransport::send(MessageBuffer *message) @@ -110,5 +110,5 @@ erpc_status_t RPMsgTransport::send(MessageBuffer *message) int32_t ret_val = rpmsg_lite_send_nocopy(s_rpmsg, m_rpmsg_ept, m_dst_addr, (char *)message->get(), message->getUsed()); message->set(NULL, 0); - return ret_val != RL_SUCCESS ? kErpcStatus_SendFailed : kErpcStatus_Success; + return ret_val != RL_SUCCESS ? (erpc_status_t)kErpcStatus_SendFailed : (erpc_status_t)kErpcStatus_Success; } diff --git a/erpc_c/transports/erpc_rpmsg_lite_transport.h b/erpc_c/transports/erpc_rpmsg_lite_transport.h index 201bbcd5..42983855 100644 --- a/erpc_c/transports/erpc_rpmsg_lite_transport.h +++ b/erpc_c/transports/erpc_rpmsg_lite_transport.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2015-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * @@ -66,7 +66,7 @@ class RPMsgTransport : public RPMsgBaseTransport * @retval kErpcStatus_InitFailed When rpmsg init function wasn't executed successfully. */ virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id); + uint32_t rpmsg_link_id); /*! * @brief Initialization of RPMsgTransport layer - as RPMsg remote @@ -84,7 +84,7 @@ class RPMsgTransport : public RPMsgBaseTransport * @retval kErpcStatus_Success When rpmsg init function was executed successfully. * @retval kErpcStatus_InitFailed When rpmsg init function wasn't executed successfully. */ - virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, int32_t rpmsg_link_id, + virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name); /*! diff --git a/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.cpp b/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.cpp index 983ecd1b..403b29f0 100644 --- a/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.cpp +++ b/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2017-2019 NXP + * Copyright 2017-2020 NXP * All rights reserved. * * @@ -19,7 +19,7 @@ using namespace std; //////////////////////////////////////////////////////////////////////////////// // Variables //////////////////////////////////////////////////////////////////////////////// -uint8_t RPMsgBaseTransport::s_initialized = 0; +uint8_t RPMsgBaseTransport::s_initialized = 0U; struct rpmsg_lite_instance *RPMsgBaseTransport::s_rpmsg; //////////////////////////////////////////////////////////////////////////////// @@ -60,7 +60,7 @@ RPMsgTTYRTOSTransport::~RPMsgTTYRTOSTransport(void) return; } - s_initialized = 0; + s_initialized = 0U; } } @@ -71,39 +71,40 @@ void RPMsgTTYRTOSTransport::setCrc16(Crc16 *crcImpl) } erpc_status_t RPMsgTTYRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id) + uint32_t rpmsg_link_id) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_master_init(base_address, length, rpmsg_link_id, RL_NO_FLAGS); if (!s_rpmsg) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_queue = rpmsg_queue_create(s_rpmsg); if (!m_rpmsg_queue) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_queue_rx_cb, m_rpmsg_queue); m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgTTYRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, void *base_address, - int32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name) + uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name) { - if (!s_initialized) + if (0U == s_initialized) { s_rpmsg = rpmsg_lite_remote_init(base_address, rpmsg_link_id, RL_NO_FLAGS); if (!s_rpmsg) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } /* Signal the other core we are ready */ @@ -112,11 +113,11 @@ erpc_status_t RPMsgTTYRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, ready_cb(); } - while (!rpmsg_lite_is_link_up(s_rpmsg)) + while (0 == rpmsg_lite_is_link_up(s_rpmsg)) { } - s_initialized = 1; + s_initialized = 1U; } m_rpmsg_queue = rpmsg_queue_create(s_rpmsg); @@ -126,16 +127,17 @@ erpc_status_t RPMsgTTYRTOSTransport::init(uint32_t src_addr, uint32_t dst_addr, } m_rpmsg_ept = rpmsg_lite_create_ept(s_rpmsg, src_addr, rpmsg_queue_rx_cb, m_rpmsg_queue); - if (nameservice_name) + if (NULL != nameservice_name) { - if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, RL_NS_CREATE)) + if (RL_SUCCESS != rpmsg_ns_announce(s_rpmsg, m_rpmsg_ept, nameservice_name, (uint32_t)RL_NS_CREATE)) { - return kErpcStatus_InitFailed; + return (erpc_status_t)kErpcStatus_InitFailed; } } m_dst_addr = dst_addr; - return m_rpmsg_ept == RL_NULL ? kErpcStatus_InitFailed : kErpcStatus_Success; + + return m_rpmsg_ept == RL_NULL ? (erpc_status_t)kErpcStatus_InitFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgTTYRTOSTransport::receive(MessageBuffer *message) @@ -152,15 +154,15 @@ erpc_status_t RPMsgTTYRTOSTransport::receive(MessageBuffer *message) message->set(&((uint8_t *)buf)[sizeof(h)], length - sizeof(h)); - // Verify CRC. + /* Verify CRC. */ uint16_t computedCrc = m_crcImpl->computeCRC16(&((uint8_t *)buf)[sizeof(h)], h.m_messageSize); if (computedCrc != h.m_crc) { - return kErpcStatus_CrcCheckFailed; + return (erpc_status_t)kErpcStatus_CrcCheckFailed; } message->setUsed(h.m_messageSize); - return ret_val != RL_SUCCESS ? kErpcStatus_ReceiveFailed : kErpcStatus_Success; + return ret_val != RL_SUCCESS ? (erpc_status_t)kErpcStatus_ReceiveFailed : (erpc_status_t)kErpcStatus_Success; } erpc_status_t RPMsgTTYRTOSTransport::send(MessageBuffer *message) @@ -180,9 +182,9 @@ erpc_status_t RPMsgTTYRTOSTransport::send(MessageBuffer *message) int32_t ret_val = rpmsg_lite_send_nocopy(s_rpmsg, m_rpmsg_ept, m_dst_addr, buf - sizeof(h), used + sizeof(h)); if (ret_val == RL_SUCCESS) { - return kErpcStatus_Success; + return (erpc_status_t)kErpcStatus_Success; } message->set(buf, length); message->setUsed(used); - return kErpcStatus_SendFailed; + return (erpc_status_t)kErpcStatus_SendFailed; } diff --git a/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.h b/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.h index 70c9a3d1..1c27edde 100644 --- a/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.h +++ b/erpc_c/transports/erpc_rpmsg_tty_rtos_transport.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2017 NXP + * Copyright 2020 NXP * All rights reserved. * * @@ -68,7 +68,7 @@ class RPMsgTTYRTOSTransport : public RPMsgBaseTransport * successfully. */ virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t length, - int32_t rpmsg_link_id); + uint32_t rpmsg_link_id); /*! * @brief This function call RPMsg rtos init function - as RPMsg remote @@ -88,7 +88,7 @@ class RPMsgTTYRTOSTransport : public RPMsgBaseTransport * @retval kErpcStatus_InitFailed When rpmsg init function wasn't executed * successfully. */ - virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, int32_t rpmsg_link_id, + virtual erpc_status_t init(uint32_t src_addr, uint32_t dst_addr, void *base_address, uint32_t rpmsg_link_id, void (*ready_cb)(void), char *nameservice_name); /*! diff --git a/erpc_python/erpc/erpc_version.py b/erpc_python/erpc/erpc_version.py index d669c1a1..1a49ff35 100644 --- a/erpc_python/erpc/erpc_version.py +++ b/erpc_python/erpc/erpc_version.py @@ -1,9 +1,9 @@ #!/usr/bin/env python -# Copyright 2017-2019 NXP +# Copyright 2017-2020 NXP # All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause #Should be same as in erpc_version.h -ERPC_VERSION = "1.7.3" +ERPC_VERSION = "1.7.4" diff --git a/examples/matrix_multiply_tcp_python/service/__init__.py b/examples/matrix_multiply_tcp_python/service/__init__.py index f6d859d0..9f8092a1 100644 --- a/examples/matrix_multiply_tcp_python/service/__init__.py +++ b/examples/matrix_multiply_tcp_python/service/__init__.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # diff --git a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/__init__.py b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/__init__.py index 5ecf43d9..cbe9f0c3 100644 --- a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/__init__.py +++ b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/__init__.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # @@ -15,8 +15,8 @@ version = erpc_version.ERPC_VERSION except ImportError: version = "unknown" -if version != "1.7.3": - raise ValueError("The generated shim code version (1.7.3) is different to the rest of eRPC code (%s). \ +if version != "1.7.4": + raise ValueError("The generated shim code version (1.7.4) is different to the rest of eRPC code (%s). \ Install newer version by running \"python setup.py install\" in folder erpc/erpc_python/." % repr(version)) from . import common diff --git a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/client.py b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/client.py index 834b30c6..ac494b59 100644 --- a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/client.py +++ b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/client.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # diff --git a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/common.py b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/common.py index 1e1264d1..1e8f6a5a 100644 --- a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/common.py +++ b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/common.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # diff --git a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/interface.py b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/interface.py index 6f3fe773..b6ec9db4 100644 --- a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/interface.py +++ b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/interface.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # diff --git a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/server.py b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/server.py index 6bbc32ee..782c7c99 100644 --- a/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/server.py +++ b/examples/matrix_multiply_tcp_python/service/erpc_matrix_multiply/server.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Generated by erpcgen 1.7.3 on Mon Sep 23 13:00:45 2019. +# Generated by erpcgen 1.7.4 on Thu Apr 16 10:59:26 2020. # # AUTOGENERATED - DO NOT EDIT # diff --git a/test/common/retarget_cpp_streamed_io.c b/test/common/retarget_cpp_streamed_io.c index 273180d0..6cb1e31c 100644 --- a/test/common/retarget_cpp_streamed_io.c +++ b/test/common/retarget_cpp_streamed_io.c @@ -34,9 +34,10 @@ #define DEFAULT_HANDLE 0x100; -#if 0 //already defined in fsl_debug_console.c -char *_sys_command_string(char *cmd, int len) { return (cmd); } -#endif +char *_sys_command_string(char *cmd, int len) +{ + return (cmd); +} /* * These names are special strings which will be recognized by * _sys_open and will cause it to return the standard I/O handles, instead @@ -50,14 +51,18 @@ const char __stderr_name[] = "STDERR"; * Open a file. May return -1 if the file failed to open. We do not require * this function to do anything. Simply return a dummy handle. */ -FILEHANDLE _sys_open(const char *name, int openmode) { return DEFAULT_HANDLE; } +FILEHANDLE _sys_open(const char *name, int openmode) +{ + return DEFAULT_HANDLE; +} /* * Close a file. Should return 0 on success or a negative value on error. * Not required in this implementation. Always return success. */ -int _sys_close(FILEHANDLE fh) { - return 0; // return success +int _sys_close(FILEHANDLE fh) +{ + return 0; // return success } /* @@ -65,18 +70,18 @@ int _sys_close(FILEHANDLE fh) { * of characters _not_ written on partial success. This implementation sends * a buffer of size 'len' to the UART. */ -int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, - int mode) { - // int i; - // for (i = 0; i < len; i++) - //{ - // // UART_write(buf[i]); - // LOG_Push((uint8_t *)(&buf[i]), 1); - //} - - DbgConsole_SendData((uint8_t *)buf, len); - - return 0; +int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) +{ + // int i; + // for (i = 0; i < len; i++) + //{ + // // UART_write(buf[i]); + // LOG_Push((uint8_t *)(&buf[i]), 1); + //} + + DbgConsole_SendData((uint8_t *)buf, len); + + return 0; } /* @@ -90,65 +95,70 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, * if required (backspace) and then echo the character to the Terminal * Emulator, printing the correct sequence after successive keystrokes. */ -int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { - int pos = 0; - - do { - - // buf[pos]=UART_read(); - // LOG_ReadCharacter((uint8_t *)&buf[pos]); - DbgConsole_ReadCharacter((uint8_t *)&buf[pos]); - - // Advance position in buffer - pos++; - - // Handle backspace - if (buf[pos - 1] == '\b') { - // More than 1 char in buffer - if (pos > 1) { - // Delete character on terminal - // UART_write('\b'); - // UART_write(' '); - // UART_write('\b'); - - // Update position in buffer - pos -= 2; - } else if (pos > 0) - pos--; // Backspace pressed, empty buffer - } - // else UART_write(buf[pos-1]); // Echo normal char to terminal - else - // LOG_Push((uint8_t *)(&buf[pos - 1]), 1); // Echo normal char to - // terminal - DbgConsole_SendData((uint8_t *)(&buf[pos - 1]), - 1); // Echo normal char to terminal - - } while (buf[pos - 1] != '\r'); - - buf[pos] = '\0'; // Ensure Null termination - - return 0; +int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) +{ + int pos = 0; + + do + { + + // buf[pos]=UART_read(); + // LOG_ReadCharacter((uint8_t *)&buf[pos]); + DbgConsole_ReadCharacter((uint8_t *)&buf[pos]); + + // Advance position in buffer + pos++; + + // Handle backspace + if (buf[pos - 1] == '\b') + { + // More than 1 char in buffer + if (pos > 1) + { + // Delete character on terminal + // UART_write('\b'); + // UART_write(' '); + // UART_write('\b'); + + // Update position in buffer + pos -= 2; + } + else if (pos > 0) + pos--; // Backspace pressed, empty buffer + } + // else UART_write(buf[pos-1]); // Echo normal char to terminal + else + // LOG_Push((uint8_t *)(&buf[pos - 1]), 1); // Echo normal char to + // terminal + DbgConsole_SendData((uint8_t *)(&buf[pos - 1]), + 1); // Echo normal char to terminal + + } while (buf[pos - 1] != '\r'); + + buf[pos] = '\0'; // Ensure Null termination + + return 0; } -#if 0 //already defined in fsl_debug_console.c /* * Writes a character to the output channel. This function is used * for last-resort error message output. */ -void _ttywrch(int ch) { - // Convert correctly for endianness change - char ench = ch; - - // UART_write(ench); - // LOG_Push((uint8_t *)(&ench), 1); - DbgConsole_SendData((uint8_t *)(&ench), 1); +void _ttywrch(int ch) +{ + // Convert correctly for endianness change + char ench = ch; + + // UART_write(ench); + // LOG_Push((uint8_t *)(&ench), 1); + DbgConsole_SendData((uint8_t *)(&ench), 1); } -#endif /* * Return non-zero if the argument file is connected to a terminal. */ -int _sys_istty(FILEHANDLE fh) { - return 1; // no interactive device present +int _sys_istty(FILEHANDLE fh) +{ + return 1; // no interactive device present } /* @@ -156,8 +166,9 @@ int _sys_istty(FILEHANDLE fh) { * Returns >=0 on success, <0 on failure. Seeking is not supported for the * UART. */ -int _sys_seek(FILEHANDLE fh, long pos) { - return -1; // error +int _sys_seek(FILEHANDLE fh, long pos) +{ + return -1; // error } /* @@ -165,8 +176,9 @@ int _sys_seek(FILEHANDLE fh, long pos) { * is up to date on disk. Result is >=0 if OK, negative for an * error. */ -int _sys_ensure(FILEHANDLE fh) { - return 0; // success +int _sys_ensure(FILEHANDLE fh) +{ + return 0; // success } /* @@ -176,23 +188,29 @@ int _sys_ensure(FILEHANDLE fh) { * called when processing SEEK_END relative fseeks, and therefore a * call to _sys_flen is always followed by a call to _sys_seek. */ -long _sys_flen(FILEHANDLE fh) { return 0; } +long _sys_flen(FILEHANDLE fh) +{ + return 0; +} /* * Return the name for temporary file number sig in the buffer * name. Returns 0 on failure. maxlen is the maximum name length * allowed. */ -int _sys_tmpnam(char *name, int sig, unsigned maxlen) { - return 0; // fail, not supported +int _sys_tmpnam(char *name, int sig, unsigned maxlen) +{ + return 0; // fail, not supported } -#if 0 //already defined in fsl_debug_console.c /* * Terminate the program, passing a return code back to the user. * This function may not return. */ -void _sys_exit(int returncode) { while (1) { }; +void _sys_exit(int returncode) +{ + while (1) + { + }; } -#endif #endif /* __CC_ARM */ diff --git a/test/common/unit_test.h b/test/common/unit_test.h index dde7cf3f..ace9e57f 100644 --- a/test/common/unit_test.h +++ b/test/common/unit_test.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2014, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -17,6 +17,10 @@ void add_services(erpc::SimpleServer *server); +void remove_services(erpc::SimpleServer *server); + void add_common_service(erpc::SimpleServer *server); +void remove_common_service(erpc::SimpleServer *server); + #endif // _EMBEDDED_RPC__UNIT_TEST_H_ diff --git a/test/common/unit_test_arbitrator_app0.cpp b/test/common/unit_test_arbitrator_app0.cpp index a1217f86..7aadad36 100644 --- a/test/common/unit_test_arbitrator_app0.cpp +++ b/test/common/unit_test_arbitrator_app0.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -29,7 +29,12 @@ extern "C" { #include "board.h" #include "fsl_debug_console.h" #include "mcmgr.h" +#if defined(RPMSG) #include "rpmsg_lite.h" +#endif +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int main(int argc, char **argv); +#endif #ifdef __cplusplus } #endif @@ -49,6 +54,7 @@ TaskHandle_t g_clientTask; volatile int waitQuit = 0; volatile uint16_t eRPCReadyEventData = 0; extern const uint32_t erpc_generated_crc; +erpc_service_t service = NULL; //////////////////////////////////////////////////////////////////////////////// // Code @@ -131,12 +137,21 @@ void runInit(void *arg) MCMGR_RegisterEvent(kMCMGR_RemoteApplicationEvent, eRPCReadyEventHandler, NULL); // Boot source for Core 1 - MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, (uint32_t)rpmsg_lite_base, kMCMGR_Start_Synchronous); +#if defined(RPMSG) + MCMGR_StartCore(kMCMGR_Core1, (void *)(char *)CORE1_BOOT_ADDRESS, (uint32_t)rpmsg_lite_base, + kMCMGR_Start_Synchronous); +#elif defined(MU) + MCMGR_StartCore(kMCMGR_Core1, (void *)(char *)CORE1_BOOT_ADDRESS, (uint32_t)0, kMCMGR_Start_Asynchronous); +#endif - // RPMsg-Lite transport layer initialization erpc_transport_t transportClient; erpc_transport_t transportServer; +#if defined(RPMSG) + // RPMsg-Lite transport layer initialization transportClient = erpc_transport_rpmsg_lite_rtos_master_init(100, 101, ERPC_TRANSPORT_RPMSG_LITE_LINK_ID); +#elif defined(MU) + transportClient = erpc_transport_mu_init(MU_BASE); +#endif if (transportClient == NULL) { // error in initialization of transport layer @@ -154,7 +169,11 @@ void runInit(void *arg) // MessageBufferFactory initialization erpc_mbf_t message_buffer_factory; +#if defined(RPMSG) message_buffer_factory = erpc_mbf_rpmsg_init(transportClient); +#elif defined(MU) + message_buffer_factory = erpc_mbf_dynamic_init(); +#endif // eRPC client side initialization transportServer = erpc_arbitrated_client_init(transportClient, message_buffer_factory); @@ -169,7 +188,8 @@ void runInit(void *arg) erpc_arbitrated_client_set_server_thread_id((void *)g_serverTask); // adding the service to the server - erpc_add_service_to_server(create_SecondInterface_service()); + service = create_SecondInterface_service(); + erpc_add_service_to_server(service); // unblock server and client task xTaskNotifyGive(g_serverTask); @@ -188,6 +208,12 @@ void runInit(void *arg) vTaskSuspend(NULL); } +/************************************************************************************ + * Following snippet reused from https://github.com/google/googletest/blob/master/googletest/docs/advanced.md + * Copyright 2008, Google Inc. + * SPDX-License-Identifier: BSD-3-Clause + */ + class MinimalistPrinter : public ::testing::EmptyTestEventListener { // Called before a test starts. @@ -199,8 +225,8 @@ class MinimalistPrinter : public ::testing::EmptyTestEventListener // Called after a failed assertion or a SUCCEED() invocation. virtual void OnTestPartResult(const ::testing::TestPartResult &test_part_result) { - PRINTF("%s in %s:%d\r\n%s\r\n", test_part_result.failed() ? "*** Failure" : "Success", test_part_result.file_name(), - test_part_result.line_number(), test_part_result.summary()); + PRINTF("%s in %s:%d\r\n%s\r\n", test_part_result.failed() ? "*** Failure" : "Success", + test_part_result.file_name(), test_part_result.line_number(), test_part_result.summary()); } // Called after a test ends. @@ -215,10 +241,10 @@ class MinimalistPrinter : public ::testing::EmptyTestEventListener test_case.failed_test_count()); } }; +/* + * end of reused snippet + ***********************************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); @@ -235,10 +261,10 @@ int main(int argc, char **argv) // Calculate size of the image uint32_t core1_image_size; core1_image_size = get_core1_image_size(); - PRINTF("Copy CORE1 image to address: 0x%x, size: %d\r\n", CORE1_BOOT_ADDRESS, core1_image_size); + PRINTF("Copy CORE1 image to address: 0x%x, size: %d\r\n", (void *)(char *)CORE1_BOOT_ADDRESS, core1_image_size); // Copy application from FLASH to RAM - memcpy(CORE1_BOOT_ADDRESS, (void *)CORE1_IMAGE_START, core1_image_size); + memcpy((void *)(char *)CORE1_BOOT_ADDRESS, (void *)CORE1_IMAGE_START, core1_image_size); #endif g_waitQuitMutex = xSemaphoreCreateMutex(); @@ -252,12 +278,13 @@ int main(int argc, char **argv) { } } -#ifdef __cplusplus -} -#endif void quitSecondInterfaceServer() { + /* removing the service from the server */ + erpc_remove_service_from_server(service); + destroy_SecondInterface_service(); + // Stop server part erpc_server_stop(); increaseWaitQuit(); diff --git a/test/common/unit_test_arbitrator_app1.cpp b/test/common/unit_test_arbitrator_app1.cpp index add7eb75..69259e6e 100644 --- a/test/common/unit_test_arbitrator_app1.cpp +++ b/test/common/unit_test_arbitrator_app1.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -26,7 +26,12 @@ extern "C" { #include "app_core1.h" #include "board.h" #include "mcmgr.h" +#if defined(RPMSG) #include "rpmsg_lite.h" +#endif +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int main(int argc, char **argv); +#endif #ifdef __cplusplus } #endif @@ -47,6 +52,7 @@ uint32_t startupData; mcmgr_status_t status; volatile int stopTest = 0; extern const uint32_t erpc_generated_crc; +erpc_service_t service = NULL; //////////////////////////////////////////////////////////////////////////////// // Code @@ -143,14 +149,21 @@ void runInit(void *arg) status = MCMGR_GetStartupData(&startupData); } while (status != kStatus_MCMGR_Success); - // RPMsg-Lite transport layer initialization erpc_transport_t transportClient; erpc_transport_t transportServer; + erpc_mbf_t message_buffer_factory; + +#if defined(RPMSG) + // RPMsg-Lite transport layer initialization transportClient = erpc_transport_rpmsg_lite_rtos_remote_init(101, 100, (void *)startupData, 0, SignalReady, NULL); // MessageBufferFactory initialization - erpc_mbf_t message_buffer_factory; message_buffer_factory = erpc_mbf_rpmsg_init(transportClient); +#elif defined(MU) + // MU transport layer initialization + transportClient = erpc_transport_mu_init(MU_BASE); + message_buffer_factory = erpc_mbf_dynamic_init(); +#endif // eRPC client side initialization transportServer = erpc_arbitrated_client_init(transportClient, message_buffer_factory); @@ -165,7 +178,12 @@ void runInit(void *arg) erpc_arbitrated_client_set_server_thread_id((void *)g_serverTask); // adding the service to the server - erpc_add_service_to_server(create_FirstInterface_service()); + service = create_FirstInterface_service(); + erpc_add_service_to_server(service); + +#if defined(MU) + SignalReady(); +#endif // unblock server and client task xTaskNotifyGive(g_serverTask); @@ -184,9 +202,6 @@ void runInit(void *arg) vTaskSuspend(NULL); } -#ifdef __cplusplus -extern "C" { -#endif int main(int argc, char **argv) { BOARD_InitHardware(); @@ -202,9 +217,6 @@ int main(int argc, char **argv) { } } -#ifdef __cplusplus -} -#endif void stopSecondSide() { @@ -219,6 +231,10 @@ int32_t getResultFromSecondSide() void quitFirstInterfaceServer() { + /* removing the service from the server */ + erpc_remove_service_from_server(service); + destroy_FirstInterface_service(); + // Stop server part erpc_server_stop(); } diff --git a/test/common/unit_test_client.cpp b/test/common/unit_test_client.cpp index b83b2207..711eff05 100644 --- a/test/common/unit_test_client.cpp +++ b/test/common/unit_test_client.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -9,12 +9,13 @@ #include "erpc_client_setup.h" #include "erpc_mbf_setup.h" #include "erpc_transport_setup.h" +#include "board.h" #include "gtest.h" #include "gtestListener.h" #include "myAlloc.h" #include "test_unit_test_common.h" -#if (defined(RPMSG) || defined(UART)) +#if (defined(RPMSG) || defined(UART) || defined(MU)) extern "C" { #include "app_core0.h" #include "board.h" @@ -25,6 +26,9 @@ extern "C" { #elif defined(UART) #include "fsl_usart_cmsis.h" #endif +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int main(int argc, char **argv); +#endif } #ifdef UNITY_DUMP_RESULTS @@ -37,6 +41,12 @@ using namespace std; // Classes //////////////////////////////////////////////////////////////////////////////// +/************************************************************************************ + * Following snippet reused from https://github.com/google/googletest/blob/master/googletest/docs/advanced.md + * Copyright 2008, Google Inc. + * SPDX-License-Identifier: BSD-3-Clause + */ + class MinimalistPrinter : public ::testing::EmptyTestEventListener { // Called before a test starts. @@ -48,8 +58,8 @@ class MinimalistPrinter : public ::testing::EmptyTestEventListener // Called after a failed assertion or a SUCCEED() invocation. virtual void OnTestPartResult(const ::testing::TestPartResult &test_part_result) { - PRINTF("%s in %s:%d\n%s\r\n", test_part_result.failed() ? "*** Failure" : "Success", test_part_result.file_name(), - test_part_result.line_number(), test_part_result.summary()); + PRINTF("%s in %s:%d\r\n%s\r\n", test_part_result.failed() ? "*** Failure" : "Success", + test_part_result.file_name(), test_part_result.line_number(), test_part_result.summary()); } // Called after a test ends. @@ -64,6 +74,9 @@ class MinimalistPrinter : public ::testing::EmptyTestEventListener test_case.failed_test_count()); } }; +/* + * end of reused snippet + ***********************************************************************************/ #endif //////////////////////////////////////////////////////////////////////////////// @@ -76,15 +89,15 @@ int MyAlloc::allocated_ = 0; #define APP_ERPC_READY_EVENT_DATA (1) extern char rpmsg_lite_base[]; volatile uint16_t eRPCReadyEventData = 0; +#elif defined(MU) +#define APP_ERPC_READY_EVENT_DATA (1) +volatile uint16_t eRPCReadyEventData = 0; #endif //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// -#ifdef __cplusplus -extern "C" { -#endif -#if defined(RPMSG) +#if (defined(RPMSG) || defined(MU)) /*! * @brief eRPC server side ready event handler */ @@ -113,7 +126,7 @@ int main(int argc, char **argv) ::testing::TestEventListeners &listeners = ::testing::UnitTest::GetInstance()->listeners(); listeners.Append(new LeakChecker); -#if (defined(RPMSG) || defined(UART)) +#if (defined(RPMSG) || defined(UART) || defined(MU)) delete listeners.Release(listeners.default_result_printer()); listeners.Append(new MinimalistPrinter); #ifdef UNITY_DUMP_RESULTS @@ -127,10 +140,10 @@ int main(int argc, char **argv) /* Calculate size of the image */ uint32_t core1_image_size; core1_image_size = get_core1_image_size(); - PRINTF("Copy CORE1 image to address: 0x%x, size: %d\r\n", CORE1_BOOT_ADDRESS, core1_image_size); + PRINTF("Copy CORE1 image to address: 0x%x, size: %d\r\n", (void *)(char *)CORE1_BOOT_ADDRESS, core1_image_size); /* Copy application from FLASH to RAM */ - memcpy(CORE1_BOOT_ADDRESS, (void *)CORE1_IMAGE_START, core1_image_size); + memcpy((void *)(char *)CORE1_BOOT_ADDRESS, (void *)CORE1_IMAGE_START, core1_image_size); #endif #if defined(RPMSG) @@ -146,7 +159,23 @@ int main(int argc, char **argv) MCMGR_RegisterEvent(kMCMGR_RemoteApplicationEvent, eRPCReadyEventHandler, NULL); /* Boot Secondary core application */ - MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, (uint32_t)rpmsg_lite_base, kMCMGR_Start_Synchronous); + MCMGR_StartCore(kMCMGR_Core1, (void *)(char *)CORE1_BOOT_ADDRESS, (uint32_t)rpmsg_lite_base, + kMCMGR_Start_Synchronous); + + /* Wait until the secondary core application signals the rpmsg remote has been initialized and is ready to + * communicate. */ + while (APP_ERPC_READY_EVENT_DATA != eRPCReadyEventData) + { + }; +#elif defined(MU) + /* Initialize MCMGR before calling its API */ + MCMGR_Init(); + + /* Register the application event before starting the secondary core */ + MCMGR_RegisterEvent(kMCMGR_RemoteApplicationEvent, eRPCReadyEventHandler, NULL); + + /* Boot Secondary core application */ + MCMGR_StartCore(kMCMGR_Core1, (void *)(char *)CORE1_BOOT_ADDRESS, (uint32_t)0, kMCMGR_Start_Asynchronous); /* Wait until the secondary core application signals the rpmsg remote has been initialized and is ready to * communicate. */ @@ -163,6 +192,9 @@ int main(int argc, char **argv) #elif defined(UART) transport = erpc_transport_cmsis_uart_init((void *)&Driver_USART0); message_buffer_factory = erpc_mbf_dynamic_init(); +#elif defined(MU) + transport = erpc_transport_mu_init(MU_BASE); + message_buffer_factory = erpc_mbf_dynamic_init(); #endif erpc_client_init(transport, message_buffer_factory); @@ -179,6 +211,3 @@ int main(int argc, char **argv) return i; } -#ifdef __cplusplus -} -#endif diff --git a/test/common/unit_test_serial_server.cpp b/test/common/unit_test_serial_server.cpp index 786c14de..131565bc 100644 --- a/test/common/unit_test_serial_server.cpp +++ b/test/common/unit_test_serial_server.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -43,6 +43,8 @@ SimpleServer g_server; int MyAlloc::allocated_ = 0; +Common_service *svc_common; + //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// @@ -79,17 +81,27 @@ int main(int argc, const char *argv[]) //////////////////////////////////////////////////////////////////////////////// void add_common_service(SimpleServer *server) { - Common_service *svc = new Common_service(); + svc_common = new Common_service(); - server->addService(svc); + server->addService(svc_common); +} + +void remove_common_service(SimpleServer *server) +{ + server->removeService(svc_common); + delete svc_common; } extern "C" void erpc_add_service_to_server(void *service) {} +extern "C" void erpc_remove_service_from_server(void *service) {} + //////////////////////////////////////////////////////////////////////////////// // Common service implementations here //////////////////////////////////////////////////////////////////////////////// void quit() { + remove_common_service(&g_server); + remove_services(&g_server); exit(0); } diff --git a/test/common/unit_test_server.cpp b/test/common/unit_test_server.cpp index 370af62d..54f347a2 100644 --- a/test/common/unit_test_server.cpp +++ b/test/common/unit_test_server.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -10,11 +10,12 @@ #include "erpc_server_setup.h" #include "erpc_simple_server.h" #include "erpc_transport_setup.h" +#include "board.h" #include "myAlloc.h" #include "test_unit_test_common_server.h" #include "unit_test_wrapped.h" -#if (defined(RPMSG) || defined(UART)) +#if (defined(RPMSG) || defined(UART) || defined(MU)) extern "C" { #include "app_core1.h" #if defined(RPMSG) @@ -23,6 +24,12 @@ extern "C" { #include "rpmsg_lite.h" #elif defined(UART) #include "fsl_usart_cmsis.h" +#elif defined(MU) +#define APP_ERPC_READY_EVENT_DATA (1) +#include "mcmgr.h" +#endif +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int main(int argc, const char *argv[]); #endif } #endif @@ -32,14 +39,12 @@ extern "C" { //////////////////////////////////////////////////////////////////////////////// int MyAlloc::allocated_ = 0; +erpc_service_t service_common = NULL; //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// -#ifdef __cplusplus -extern "C" { -#endif -#if defined(RPMSG) +#if (defined(RPMSG) || defined(MU)) static void SignalReady(void) { /* Signal the other core we are ready by trigerring the event and passing the APP_ERPC_READY_EVENT_DATA */ @@ -60,7 +65,7 @@ void SystemInitHook(void) int main(int argc, const char *argv[]) { -#if defined(RPMSG) +#if (defined(RPMSG) || defined(MU)) uint32_t startupData; mcmgr_status_t status; @@ -82,6 +87,9 @@ int main(int argc, const char *argv[]) #elif defined(UART) transport = erpc_transport_cmsis_uart_init((void *)&Driver_USART0); message_buffer_factory = erpc_mbf_dynamic_init(); +#elif defined(MU) + transport = erpc_transport_mu_init(MU_BASE); + message_buffer_factory = erpc_mbf_dynamic_init(); #endif /* Init server */ @@ -93,6 +101,9 @@ int main(int argc, const char *argv[]) /* Add common service */ add_common_service(); +#if defined(MU) + SignalReady(); +#endif /* Add run server */ erpc_server_run(); @@ -101,9 +112,6 @@ int main(int argc, const char *argv[]) return 0; } -#ifdef __cplusplus -} -#endif //////////////////////////////////////////////////////////////////////////////// // Server helper functions @@ -111,7 +119,8 @@ int main(int argc, const char *argv[]) void add_common_service() { - erpc_add_service_to_server(create_Common_service()); + service_common = create_Common_service(); + erpc_add_service_to_server(service_common); } //////////////////////////////////////////////////////////////////////////////// @@ -120,6 +129,12 @@ void add_common_service() void quit() { + /* removing common services from the server */ + remove_common_services_from_server(service_common); + + /* removing individual test services from the server */ + remove_services_from_server(); + erpc_server_stop(); } diff --git a/test/common/unit_test_tcp_arbitrator_client.cpp b/test/common/unit_test_tcp_arbitrator_client.cpp index 743f4061..0296e06b 100644 --- a/test/common/unit_test_tcp_arbitrator_client.cpp +++ b/test/common/unit_test_tcp_arbitrator_client.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -186,6 +186,8 @@ int main(int argc, char **argv) void quitSecondInterfaceServer() { + // removing SecondInterface service from the server + remove_services(&g_server); // Stop server part g_server.stop(); increaseWaitQuit(); diff --git a/test/common/unit_test_tcp_arbitrator_server.cpp b/test/common/unit_test_tcp_arbitrator_server.cpp index d273134c..d6296857 100644 --- a/test/common/unit_test_tcp_arbitrator_server.cpp +++ b/test/common/unit_test_tcp_arbitrator_server.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -52,10 +52,10 @@ Mutex waitQuitMutex; extern const uint32_t erpc_generated_crc; Crc16 g_crc16(erpc_generated_crc); -int waitQuit = 0; -int waitClient = 0; -int isTestPassing = 0; -int stopTest = 0; +volatile int waitQuit = 0; +volatile int waitClient = 0; +volatile int isTestPassing = 0; +volatile int stopTest = 0; void increaseWaitQuit() { @@ -193,6 +193,8 @@ int32_t getResultFromSecondSide() void quitFirstInterfaceServer() { + // removing FirstInterface service from the server + remove_services(&g_server); // Stop server part g_server.stop(); } diff --git a/test/common/unit_test_tcp_server.cpp b/test/common/unit_test_tcp_server.cpp index 24453ee6..008a3431 100644 --- a/test/common/unit_test_tcp_server.cpp +++ b/test/common/unit_test_tcp_server.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -44,6 +44,8 @@ Crc16 g_crc16; int MyAlloc::allocated_ = 0; +Common_service *svc_common; + //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// @@ -89,18 +91,27 @@ int main(int argc, const char *argv[]) //////////////////////////////////////////////////////////////////////////////// void add_common_service(SimpleServer *server) { - Common_service *svc = new Common_service(); + svc_common = new Common_service(); + + server->addService(svc_common); +} - server->addService(svc); +void remove_common_service(SimpleServer *server) +{ + server->removeService(svc_common); + delete svc_common; } extern "C" void erpc_add_service_to_server(void *service) {} +extern "C" void erpc_remove_service_from_server(void *service) {} //////////////////////////////////////////////////////////////////////////////// // Common service implementations here //////////////////////////////////////////////////////////////////////////////// void quit() { + remove_common_service(&g_server); + remove_services(&g_server); g_server.stop(); } diff --git a/test/common/unit_test_wrapped.h b/test/common/unit_test_wrapped.h index b901ab51..78c8016d 100644 --- a/test/common/unit_test_wrapped.h +++ b/test/common/unit_test_wrapped.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * @@ -17,6 +17,8 @@ extern "C" { #endif void add_services_to_server(); +void remove_services_from_server(); +void remove_common_services_from_server(erpc_service_t service); void add_common_service(); #ifdef __cplusplus } diff --git a/test/test_annotations/test_annotations_server_impl.cpp b/test/test_annotations/test_annotations_server_impl.cpp index 83433ecf..68d9441c 100644 --- a/test/test_annotations/test_annotations_server_impl.cpp +++ b/test/test_annotations/test_annotations_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,10 +8,13 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include +AnnotateTest_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -37,21 +40,50 @@ myInt testIfMyIntAndConstExist(myInt a) void add_services(erpc::SimpleServer *server) { /* Define services to add using dynamic memory allocation - * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); - */ // NOTE: possible memory leak? not ever deleting - AnnotateTest_service *svc = new AnnotateTest_service(); + * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); + */ + svc = new AnnotateTest_service(); /* Add services * Example: server->addService (svc); */ server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_AnnotateTest_service()); + service_test = create_AnnotateTest_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_AnnotateTest_service(&service_test); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(&service); } #ifdef __cplusplus } diff --git a/test/test_arbitrator/test_arbitrator_client_impl.cpp b/test/test_arbitrator/test_arbitrator_client_impl.cpp index 4e312095..86154280 100644 --- a/test/test_arbitrator/test_arbitrator_client_impl.cpp +++ b/test/test_arbitrator/test_arbitrator_client_impl.cpp @@ -6,8 +6,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include "gtest.h" #include "erpc_simple_server.h" +#include "gtest.h" #include "test_firstInterface.h" #include "test_secondInterface_server.h" @@ -20,6 +20,7 @@ int i = 0; int numbers[number]; volatile bool enabled = false; +SecondInterface_service *svc; TEST(test_arbitrator, FirstSendReceiveInt) { @@ -95,12 +96,27 @@ void enableFirstSide() void add_services(erpc::SimpleServer *server) { /* Define services to add using dynamic memory allocation - * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); - */ // NOTE: possible memory leak? not ever deleting - SecondInterface_service *svc = new SecondInterface_service(); + * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); + */ + svc = new SecondInterface_service(); /* Add services * Example: server->addService(svc); */ server->addService(svc); } + +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} diff --git a/test/test_arbitrator/test_arbitrator_server_impl.cpp b/test/test_arbitrator/test_arbitrator_server_impl.cpp index ae52fa71..c3bcf736 100644 --- a/test/test_arbitrator/test_arbitrator_server_impl.cpp +++ b/test/test_arbitrator/test_arbitrator_server_impl.cpp @@ -17,6 +17,7 @@ #define number 15 int i = 0; int numbers[number]; +FirstInterface_service *svc; void firstSendInt(int32_t a) { @@ -43,12 +44,27 @@ int32_t callSecondSide() void add_services(erpc::SimpleServer *server) { /* Define services to add using dynamic memory allocation - * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); - */ // NOTE: possible memory leak? not ever deleting - FirstInterface_service *svc = new FirstInterface_service(); + * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); + */ + svc = new FirstInterface_service(); /* Add services * Example: server->addService(svc); */ server->addService(svc); } + +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} diff --git a/test/test_arrays/test_arrays_server_impl.cpp b/test/test_arrays/test_arrays_server_impl.cpp index 81cf34c2..0e4e0143 100644 --- a/test/test_arrays/test_arrays_server_impl.cpp +++ b/test/test_arrays/test_arrays_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,14 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +PointersService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -377,19 +380,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - PointersService_service *svc = new PointersService_service(); + svc = new PointersService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_PointersService_service()); + service_test = create_PointersService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_PointersService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_binary/test_binary_server_impl.cpp b/test/test_binary/test_binary_server_impl.cpp index d6207a2c..74e73f3b 100644 --- a/test/test_binary/test_binary_server_impl.cpp +++ b/test/test_binary/test_binary_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,10 +8,13 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include +Binary_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -73,9 +76,9 @@ void test_binary_allDirectionLength(const uint8_t *a, const binary_t *b, binary_ void add_services(erpc::SimpleServer *server) { /* Define services to add using dynamic memory allocation - * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); - */ // NOTE: possible memory leak? not ever deleting - Binary_service *svc = new Binary_service(); + * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); + */ + svc = new Binary_service(); /* Add services * Example: server->addService(svc); @@ -83,12 +86,41 @@ void add_services(erpc::SimpleServer *server) server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_Binary_service()); + service_test = create_Binary_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_Binary_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_builtin/test_builtin_server_impl.cpp b/test/test_builtin/test_builtin_server_impl.cpp index b6ffd334..bc67f965 100644 --- a/test/test_builtin/test_builtin_server_impl.cpp +++ b/test/test_builtin/test_builtin_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,14 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +BuiltinServices_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -153,19 +156,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - BuiltinServices_service *svc = new BuiltinServices_service(); + svc = new BuiltinServices_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_BuiltinServices_service()); + service_test = create_BuiltinServices_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_BuiltinServices_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_callbacks/test_callbacks_server_impl.cpp b/test/test_callbacks/test_callbacks_server_impl.cpp index 1d76d7ee..38483284 100644 --- a/test/test_callbacks/test_callbacks_server_impl.cpp +++ b/test/test_callbacks/test_callbacks_server_impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2017 NXP + * Copyright 2017 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,10 +8,13 @@ #include "erpc_server_setup.h" #include "test_core0_server.h" #include "test_core1.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include +ClientCore0Services_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -57,19 +60,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - ClientCore0Services_service *svc = new ClientCore0Services_service(); + svc = new ClientCore0Services_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_ClientCore0Services_service()); + service_test = create_ClientCore0Services_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_ClientCore0Services_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_const/test_const_server_impl.cpp b/test/test_const/test_const_server_impl.cpp index 80465ad4..9c8961b6 100644 --- a/test/test_const/test_const_server_impl.cpp +++ b/test/test_const/test_const_server_impl.cpp @@ -1,12 +1,14 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ +#include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include @@ -22,18 +24,39 @@ void add_services(erpc::SimpleServer *server) { /* Define services to add using dynamic memory allocation - * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); - */ // NOTE: possible memory leak? not ever deleting + * Exapmle:ArithmeticService_service * svc = new ArithmeticService_service(); + */ /* Add services * Example: server->addService(svc); */ } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + + /* Delete unused service + */ +} + #ifdef __cplusplus extern "C" { #endif void add_services_to_server() {} +void remove_services_from_server() {} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); +} #ifdef __cplusplus } #endif diff --git a/test/test_enums/test_enums_server_impl.cpp b/test/test_enums/test_enums_server_impl.cpp index a1674022..87bccee4 100644 --- a/test/test_enums/test_enums_server_impl.cpp +++ b/test/test_enums/test_enums_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,10 +8,13 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include +EnumsService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -71,19 +74,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - EnumsService_service *svc = new EnumsService_service(); + svc = new EnumsService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_EnumsService_service()); + service_test = create_EnumsService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_EnumsService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_lists/test_lists_server_impl.cpp b/test/test_lists/test_lists_server_impl.cpp index b5175b4d..cad77fd0 100644 --- a/test/test_lists/test_lists_server_impl.cpp +++ b/test/test_lists/test_lists_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,14 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +PointersService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -312,19 +315,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - PointersService_service *svc = new PointersService_service(); + svc = new PointersService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_PointersService_service()); + service_test = create_PointersService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_PointersService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_shared/test_shared_server_impl.cpp b/test/test_shared/test_shared_server_impl.cpp index 1be335d3..772dfd90 100644 --- a/test/test_shared/test_shared_server_impl.cpp +++ b/test/test_shared/test_shared_server_impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2017 NXP + * Copyright 2017 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -7,10 +7,13 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include +SharedService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -32,19 +35,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - SharedService_service *svc = new SharedService_service(); + svc = new SharedService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_SharedService_service()); + service_test = create_SharedService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_SharedService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_struct/test_struct_server_impl.cpp b/test/test_struct/test_struct_server_impl.cpp index 9f9b2c46..12c89440 100644 --- a/test/test_struct/test_struct_server_impl.cpp +++ b/test/test_struct/test_struct_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,15 @@ #include "erpc_server_setup.h" #include "test_ArithmeticService_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +ArithmeticService1_service *svc1; +ArithmeticService2_service *svc2; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -181,22 +185,56 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - ArithmeticService1_service *svc1 = new ArithmeticService1_service(); - ArithmeticService2_service *svc2 = new ArithmeticService2_service(); + svc1 = new ArithmeticService1_service(); + svc2 = new ArithmeticService2_service(); // add services server->addService(svc1); server->addService(svc2); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc1); + server->removeService(svc2); + /* Delete unused service + */ + delete svc1; + delete svc2; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service1 = NULL; +erpc_service_t service2 = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_ArithmeticService1_service()); - erpc_add_service_to_server(create_ArithmeticService2_service()); + service1 = create_ArithmeticService1_service(); + service2 = create_ArithmeticService2_service(); + erpc_add_service_to_server(service1); + erpc_add_service_to_server(service2); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service1); + erpc_remove_service_from_server(service2); + destroy_ArithmeticService1_service(); + destroy_ArithmeticService2_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_typedef/test_typedef_server_impl.cpp b/test/test_typedef/test_typedef_server_impl.cpp index 3b7642e8..72227929 100644 --- a/test/test_typedef/test_typedef_server_impl.cpp +++ b/test/test_typedef/test_typedef_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016 NXP + * Copyright 2016 - 2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,14 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +TypedefService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -132,19 +135,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - TypedefService_service *svc = new TypedefService_service(); + svc = new TypedefService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_TypedefService_service()); + service_test = create_TypedefService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_TypedefService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus } diff --git a/test/test_unions/test_unions_server_impl.cpp b/test/test_unions/test_unions_server_impl.cpp index 94a86ef6..5dbde4d3 100644 --- a/test/test_unions/test_unions_server_impl.cpp +++ b/test/test_unions/test_unions_server_impl.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2014-2016, Freescale Semiconductor, Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -8,11 +8,14 @@ #include "erpc_server_setup.h" #include "test_server.h" +#include "test_unit_test_common_server.h" #include "unit_test.h" #include "unit_test_wrapped.h" #include #include +ArithmeticService_service *svc; + //////////////////////////////////////////////////////////////////////////////// // Implementation of function code //////////////////////////////////////////////////////////////////////////////// @@ -222,19 +225,47 @@ void add_services(erpc::SimpleServer *server) { // define services to add on heap // allocate on heap so service doesn't go out of scope at end of method - // NOTE: possible memory leak? not ever deleting - ArithmeticService_service *svc = new ArithmeticService_service(); + svc = new ArithmeticService_service(); // add services server->addService(svc); } +//////////////////////////////////////////////////////////////////////////////// +// Remove service from server code +//////////////////////////////////////////////////////////////////////////////// + +void remove_services(erpc::SimpleServer *server) +{ + /* Remove services + * Example: server->removeService (svc); + */ + server->removeService(svc); + /* Delete unused service + */ + delete svc; +} + #ifdef __cplusplus extern "C" { #endif +erpc_service_t service_test = NULL; void add_services_to_server() { - erpc_add_service_to_server(create_ArithmeticService_service()); + service_test = create_ArithmeticService_service(); + erpc_add_service_to_server(service_test); +} + +void remove_services_from_server() +{ + erpc_remove_service_from_server(service_test); + destroy_ArithmeticService_service(); +} + +void remove_common_services_from_server(erpc_service_t service) +{ + erpc_remove_service_from_server(service); + destroy_Common_service(); } #ifdef __cplusplus }