@@ -17,15 +17,50 @@ using namespace erpc;
1717// Variables
1818// //////////////////////////////////////////////////////////////////////////////
1919
20- ERPC_MANUALLY_CONSTRUCTED (DspiMasterTransport, s_transport );
20+ ERPC_MANUALLY_CONSTRUCTED_STATIC (DspiMasterTransport, s_dspiTransport );
2121
2222// //////////////////////////////////////////////////////////////////////////////
2323// Code
2424// //////////////////////////////////////////////////////////////////////////////
2525
2626erpc_transport_t erpc_transport_dspi_master_init (void *baseAddr, uint32_t baudRate, uint32_t srcClock_Hz)
2727{
28- s_transport.construct (reinterpret_cast <SPI_Type *>(baseAddr), baudRate, srcClock_Hz);
29- (void )s_transport->init ();
30- return reinterpret_cast <erpc_transport_t >(s_transport.get ());
28+ DspiMasterTransport *dspiTransport;
29+
30+ #if ERPC_ALLOCATION_POLICY == ERPC_ALLOCATION_POLICY_STATIC
31+ if (s_dspiTransport.isUsed ())
32+ {
33+ dspiTransport = NULL ;
34+ }
35+ else
36+ {
37+ s_dspiTransport.construct (reinterpret_cast <SPI_Type *>(baseAddr), baudRate, srcClock_Hz);
38+ dspiTransport = s_dspiTransport.get ();
39+ }
40+ #elif ERPC_ALLOCATION_POLICY == ERPC_ALLOCATION_POLICY_DYNAMIC
41+ dspiTransport = new DspiMasterTransport (reinterpret_cast <SPI_Type *>(baseAddr), baudRate, srcClock_Hz);
42+ #else
43+ #error "Unknown eRPC allocation policy!"
44+ #endif
45+
46+ if (dspiTransport != NULL )
47+ {
48+ (void )dspiTransport->init ();
49+ }
50+
51+ return reinterpret_cast <erpc_transport_t >(dspiTransport);
52+ }
53+
54+ void erpc_transport_dspi_master_deinit (erpc_transport_t transport)
55+ {
56+ #if ERPC_ALLOCATION_POLICY == ERPC_ALLOCATION_POLICY_STATIC
57+ (void )transport;
58+ s_dspiTransport.destroy ();
59+ #elif ERPC_ALLOCATION_POLICY == ERPC_ALLOCATION_POLICY_DYNAMIC
60+ erpc_assert (transport != NULL );
61+
62+ DspiMasterTransport *dspiTransport = reinterpret_cast <DspiMasterTransport *>(transport);
63+
64+ delete dspiTransport;
65+ #endif
3166}
0 commit comments