-
Notifications
You must be signed in to change notification settings - Fork 250
Expand file tree
/
Copy pathunit_test_server.cpp
More file actions
153 lines (125 loc) · 4.03 KB
/
unit_test_server.cpp
File metadata and controls
153 lines (125 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
* 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;
}