154 lines
4.0 KiB
C++
154 lines
4.0 KiB
C++
/*
|
|
* Copyright (c) 2014-2016, Freescale Semiconductor, Inc.
|
|
* Copyright 2016 - 2023 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "erpc_mbf_setup.h"
|
|
#include "erpc_server_setup.h"
|
|
#include "erpc_simple_server.hpp"
|
|
#include "erpc_transport_setup.h"
|
|
|
|
#if (defined(RPMSG) || defined(UART) || defined(MU))
|
|
extern "C" {
|
|
#if defined(UART)
|
|
/* clang-format off */
|
|
#include "fsl_lpuart_cmsis.h"
|
|
|
|
#include "app_core0.h"
|
|
/* clang-format on */
|
|
#else
|
|
#if defined(RPMSG)
|
|
#include "rpmsg_lite.h"
|
|
#endif
|
|
#define APP_ERPC_READY_EVENT_DATA (1)
|
|
/* clang-format off */
|
|
#include "mcmgr.h"
|
|
|
|
#include "app_core1.h"
|
|
/* clang-format on */
|
|
#endif
|
|
#if defined(__CC_ARM) || defined(__ARMCC_VERSION)
|
|
int main(void);
|
|
#endif
|
|
}
|
|
#endif
|
|
|
|
#include "board.h"
|
|
|
|
#include "c_test_unit_test_common_server.h"
|
|
#include "myAlloc.hpp"
|
|
#include "unit_test_wrapped.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Variables
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
int ::MyAlloc::allocated_ = 0;
|
|
erpc_service_t service_common = NULL;
|
|
erpc_server_t server;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Code
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#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 */
|
|
MCMGR_TriggerEvent(kMCMGR_RemoteApplicationEvent, APP_ERPC_READY_EVENT_DATA);
|
|
}
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
BOARD_InitHardware();
|
|
|
|
#if (defined(RPMSG) || defined(MU))
|
|
uint32_t startupData;
|
|
mcmgr_status_t status;
|
|
|
|
/* Initialize MCMGR before calling its API */
|
|
MCMGR_Init();
|
|
/* Get the startup data */
|
|
do
|
|
{
|
|
status = MCMGR_GetStartupData(&startupData);
|
|
} while (status != kStatus_MCMGR_Success);
|
|
#endif
|
|
|
|
erpc_transport_t transport;
|
|
erpc_mbf_t message_buffer_factory;
|
|
|
|
#if defined(RPMSG)
|
|
transport = erpc_transport_rpmsg_lite_remote_init(101, 100, (void *)startupData, ERPC_TRANSPORT_RPMSG_LITE_LINK_ID,
|
|
SignalReady, NULL);
|
|
message_buffer_factory = erpc_mbf_rpmsg_init(transport);
|
|
#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 */
|
|
server = erpc_server_init(transport, message_buffer_factory);
|
|
|
|
/* Add test services. This function call erpc_add_service_to_server for all necessary services. */
|
|
add_services_to_server(server);
|
|
|
|
/* Add common service */
|
|
add_common_service(server);
|
|
|
|
#if defined(MU)
|
|
SignalReady();
|
|
#endif
|
|
/* Add run server */
|
|
erpc_server_run(server);
|
|
|
|
/* Deinit server */
|
|
erpc_server_deinit(server);
|
|
|
|
return 0;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Server helper functions
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void add_common_service(erpc_server_t server)
|
|
{
|
|
service_common = create_Common_service();
|
|
erpc_add_service_to_server(server, service_common);
|
|
}
|
|
|
|
void remove_common_services_from_server(erpc_server_t server, erpc_service_t service)
|
|
{
|
|
erpc_remove_service_from_server(server, service);
|
|
destroy_Common_service(service);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Common service implementations here
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void quit()
|
|
{
|
|
/* removing common services from the server */
|
|
remove_common_services_from_server(server, service_common);
|
|
|
|
/* removing individual test services from the server */
|
|
remove_services_from_server(server);
|
|
|
|
erpc_server_stop(server);
|
|
}
|
|
|
|
int32_t getServerAllocated()
|
|
{
|
|
int result = ::MyAlloc::allocated();
|
|
::MyAlloc::allocated(0);
|
|
return result;
|
|
}
|