@@ -26,8 +26,8 @@ class BridgeClass {
2626
2727 struct k_mutex read_mutex;
2828 struct k_mutex write_mutex;
29- struct k_mutex server_mutex;
30- struct k_mutex client_mutex;
29+ // struct k_mutex server_mutex;
30+ // struct k_mutex client_mutex;
3131
3232 k_tid_t upd_tid;
3333 k_thread_stack_t *upd_stack_area;
@@ -46,8 +46,8 @@ class BridgeClass {
4646
4747 k_mutex_init (&read_mutex);
4848 k_mutex_init (&write_mutex);
49- k_mutex_init (&server_mutex);
50- k_mutex_init (&client_mutex);
49+ // k_mutex_init(&server_mutex);
50+ // k_mutex_init(&client_mutex);
5151
5252 client = new RPCClient (*transport);
5353 server = new RPCServer (*transport);
@@ -85,26 +85,27 @@ class BridgeClass {
8585
8686 void update () {
8787
88- if (k_mutex_lock (&server_mutex, K_MSEC (10 )) != 0 ) return ;
88+ // if (k_mutex_lock(&server_mutex, K_MSEC(10)) != 0) return;
8989
9090 // Lock read mutex
9191 if (k_mutex_lock (&read_mutex, K_MSEC (10 )) != 0 ) return ;
9292
93- if (!server->get_rpc ()) {
93+ RPCRequest<> req;
94+ if (!server->get_rpc (req)) {
9495 k_mutex_unlock (&read_mutex);
9596 k_msleep (1 );
9697 return ;
9798 }
9899
99100 k_mutex_unlock (&read_mutex);
100101
101- server->process_request ();
102+ server->process_request (req );
102103
103104 // Lock write mutex
104105 while (true ) {
105106
106107 if (k_mutex_lock (&write_mutex, K_MSEC (10 )) == 0 ){
107- server->send_response ();
108+ server->send_response (req );
108109 k_mutex_unlock (&write_mutex);
109110 k_msleep (1 );
110111 break ;
@@ -114,19 +115,20 @@ class BridgeClass {
114115
115116 }
116117
117- k_mutex_unlock (&server_mutex);
118+ // k_mutex_unlock(&server_mutex);
118119
119120 }
120121
121122 template <typename RType, typename ... Args>
122123 bool call (const MsgPack::str_t method, RType& result, Args&&... args) {
123124
124- k_mutex_lock (&client_mutex, K_FOREVER);
125-
125+ // k_mutex_lock(&client_mutex, K_FOREVER);
126+ uint32_t msg_id_wait;
127+
126128 // Lock write mutex
127129 while (true ) {
128130 if (k_mutex_lock (&write_mutex, K_MSEC (10 )) == 0 ) {
129- client->send_rpc (method, std::forward<Args>(args)...);
131+ client->send_rpc (method, msg_id_wait, std::forward<Args>(args)...);
130132 k_mutex_unlock (&write_mutex);
131133 k_msleep (1 );
132134 break ;
@@ -138,7 +140,7 @@ class BridgeClass {
138140 // Lock read mutex
139141 while (true ) {
140142 if (k_mutex_lock (&read_mutex, K_MSEC (10 )) == 0 ) {
141- if (client->get_response (result)) {
143+ if (client->get_response (msg_id_wait, result)) {
142144 k_mutex_unlock (&read_mutex);
143145 k_msleep (1 );
144146 break ;
@@ -153,7 +155,7 @@ class BridgeClass {
153155
154156 return (client->lastError .code == NO_ERR);
155157
156- k_mutex_unlock (&client_mutex);
158+ // k_mutex_unlock(&client_mutex);
157159
158160 }
159161
@@ -174,26 +176,27 @@ class BridgeClass {
174176
175177 void update_safe () {
176178
177- if (k_mutex_lock (&server_mutex, K_MSEC (10 )) != 0 ) return ;
179+ // if (k_mutex_lock(&server_mutex, K_MSEC(10)) != 0) return;
178180
179181 // Lock read mutex
180182 if (k_mutex_lock (&read_mutex, K_MSEC (10 )) != 0 ) return ;
181183
182- if (!server->get_rpc ()) {
184+ RPCRequest<> req;
185+ if (!server->get_rpc (req, " __safe__" )) {
183186 k_mutex_unlock (&read_mutex);
184187 k_msleep (1 );
185188 return ;
186189 }
187190
188191 k_mutex_unlock (&read_mutex);
189192
190- server->process_request (" __safe__ " );
193+ server->process_request (req );
191194
192195 // Lock write mutex
193196 while (true ) {
194197
195198 if (k_mutex_lock (&write_mutex, K_MSEC (10 )) == 0 ){
196- server->send_response ();
199+ server->send_response (req );
197200 k_mutex_unlock (&write_mutex);
198201 k_msleep (1 );
199202 break ;
@@ -203,7 +206,7 @@ class BridgeClass {
203206
204207 }
205208
206- k_mutex_unlock (&server_mutex);
209+ // k_mutex_unlock(&server_mutex);
207210
208211 }
209212
0 commit comments