13
13
// followed by a UINT32 command, UINT32 payload length and a UINT16 CRC
14
14
// The back and forth protocol works like this:
15
15
// (all integers are in little-endian order)
16
- //
16
+ //
17
17
// Send Command:
18
18
// Master --> Slave magic HEADER value, cmd, payload len, CRC
19
19
// Master <-- Slave magic HEADER ack + CRC (4 bytes total)
20
20
// Master --> Slave magic DATA value, n-byte payload, CRC
21
21
// Master <-- Slave magic DATA ack + UINT16 CRC (4 bytes total)
22
- //
22
+ //
23
23
// Get Result:
24
24
// Master --> Slave magic RESULT value, CRC
25
25
// Master <-- Slave magic RESULT ack, length, CRC
@@ -307,23 +307,23 @@ bool rpc_master::__get_result(uint8_t **data, size_t *size, unsigned long timeou
307
307
}
308
308
309
309
bool rpc_master::call_no_copy_no_args (const __FlashStringHelper *name,
310
- void **result_data, size_t *result_data_len,
310
+ void **result_data, size_t *result_data_len,
311
311
unsigned long send_timeout, unsigned long recv_timeout)
312
312
{
313
313
return __put_command (_hash (name), NULL , 0 , send_timeout)
314
314
? __get_result ((uint8_t **) result_data, result_data_len, recv_timeout) : false ;
315
315
}
316
316
317
317
bool rpc_master::call_no_copy_no_args (const String &name,
318
- void **result_data, size_t *result_data_len,
318
+ void **result_data, size_t *result_data_len,
319
319
unsigned long send_timeout, unsigned long recv_timeout)
320
320
{
321
321
return __put_command (_hash (name.c_str (), name.length ()), NULL , 0 , send_timeout)
322
322
? __get_result ((uint8_t **) result_data, result_data_len, recv_timeout) : false ;
323
323
}
324
324
325
325
bool rpc_master::call_no_copy_no_args (const char *name,
326
- void **result_data, size_t *result_data_len,
326
+ void **result_data, size_t *result_data_len,
327
327
unsigned long send_timeout, unsigned long recv_timeout)
328
328
{
329
329
return __put_command (_hash (name), NULL , 0 , send_timeout)
@@ -332,7 +332,7 @@ bool rpc_master::call_no_copy_no_args(const char *name,
332
332
333
333
bool rpc_master::call_no_copy (const __FlashStringHelper *name,
334
334
void *command_data, size_t command_data_len,
335
- void **result_data, size_t *result_data_len,
335
+ void **result_data, size_t *result_data_len,
336
336
unsigned long send_timeout, unsigned long recv_timeout)
337
337
{
338
338
return __put_command (_hash (name), (uint8_t *) command_data, command_data_len, send_timeout)
@@ -341,7 +341,7 @@ bool rpc_master::call_no_copy(const __FlashStringHelper *name,
341
341
342
342
bool rpc_master::call_no_copy (const String &name,
343
343
void *command_data, size_t command_data_len,
344
- void **result_data, size_t *result_data_len,
344
+ void **result_data, size_t *result_data_len,
345
345
unsigned long send_timeout, unsigned long recv_timeout)
346
346
{
347
347
return __put_command (_hash (name.c_str (), name.length ()), (uint8_t *) command_data, command_data_len, send_timeout)
@@ -350,7 +350,7 @@ bool rpc_master::call_no_copy(const String &name,
350
350
351
351
bool rpc_master::call_no_copy (const char *name,
352
352
void *command_data, size_t command_data_len,
353
- void **result_data, size_t *result_data_len,
353
+ void **result_data, size_t *result_data_len,
354
354
unsigned long send_timeout, unsigned long recv_timeout)
355
355
{
356
356
return __put_command (_hash (name), (uint8_t *) command_data, command_data_len, send_timeout)
@@ -474,7 +474,7 @@ bool rpc_slave::__get_command(uint32_t *command, uint8_t **data, size_t *size, u
474
474
_get_short_timeout = min (_get_short_timeout + 1 , timeout);
475
475
}
476
476
477
- return false ;
477
+ return false ;
478
478
}
479
479
480
480
bool rpc_slave::__put_result (uint8_t *data, size_t size, unsigned long timeout)
@@ -857,84 +857,88 @@ bool rpc_spi_master::put_bytes(uint8_t *data, size_t size, unsigned long timeout
857
857
return true ;
858
858
}
859
859
860
- #define RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (name ) \
860
+ #define RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (name, port ) \
861
861
void rpc_hardware_serial##name##_uart_master::_flush() \
862
862
{ \
863
- for (int i = Serial##name .available (); i > 0 ; i--) Serial##name .read (); \
863
+ for (int i = port .available (); i > 0 ; i--) port .read (); \
864
864
} \
865
865
\
866
866
bool rpc_hardware_serial##name##_uart_master::get_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
867
867
{ \
868
- Serial##name .setTimeout (timeout + 1 ); \
869
- bool ok = (Serial##name .readBytes ((char *) buff, size) == size) && (!_same (buff, size)); \
868
+ port .setTimeout (timeout + 1 ); \
869
+ bool ok = (port .readBytes ((char *) buff, size) == size) && (!_same (buff, size)); \
870
870
if (!ok) delay (_get_short_timeout); \
871
871
return ok; \
872
872
} \
873
873
\
874
874
bool rpc_hardware_serial##name##_uart_master::put_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
875
875
{ \
876
876
(void ) timeout; \
877
- return Serial##name .write ((char *) buff, size) == size; \
877
+ return port .write ((char *) buff, size) == size; \
878
878
}
879
879
880
880
#ifdef SERIAL_PORT_HARDWARE
881
- RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION ()
881
+ RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (,SERIAL_PORT_HARDWARE )
882
882
#endif
883
883
884
884
#ifdef SERIAL_PORT_HARDWARE1
885
- RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (1 )
885
+ RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (1 ,SERIAL_PORT_HARDWARE1 )
886
886
#endif
887
887
888
888
#ifdef SERIAL_PORT_HARDWARE2
889
- RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (2 )
889
+ RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (2 ,SERIAL_PORT_HARDWARE2 )
890
890
#endif
891
891
892
892
#ifdef SERIAL_PORT_HARDWARE3
893
- RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (3 )
893
+ RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (3 ,SERIAL_PORT_HARDWARE3 )
894
894
#endif
895
895
896
896
#ifdef SERIAL_PORT_USBVIRTUAL
897
- RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (USB)
897
+ RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION (USB,SERIAL_PORT_USBVIRTUAL )
898
898
#endif
899
899
900
- #define RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (name ) \
900
+ #undef RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION
901
+
902
+ #define RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (name, port ) \
901
903
void rpc_hardware_serial##name##_uart_slave::_flush() \
902
904
{ \
903
- for (int i = Serial##name .available (); i > 0 ; i--) Serial##name .read (); \
905
+ for (int i = port .available (); i > 0 ; i--) port .read (); \
904
906
} \
905
907
\
906
908
bool rpc_hardware_serial##name##_uart_slave::get_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
907
909
{ \
908
- Serial##name .setTimeout (timeout + 1 ); \
909
- return Serial##name .readBytes ((char *) buff, size) == size; \
910
+ port .setTimeout (timeout + 1 ); \
911
+ return port .readBytes ((char *) buff, size) == size; \
910
912
} \
911
913
\
912
914
bool rpc_hardware_serial##name##_uart_slave::put_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
913
915
{ \
914
916
(void ) timeout; \
915
- return Serial##name .write ((char *) buff, size) == size; \
917
+ return port .write ((char *) buff, size) == size; \
916
918
}
917
919
918
920
#ifdef SERIAL_PORT_HARDWARE
919
- RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION ()
921
+ RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (,SERIAL_PORT_HARDWARE )
920
922
#endif
921
923
922
924
#ifdef SERIAL_PORT_HARDWARE1
923
- RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (1 )
925
+ RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (1 ,SERIAL_PORT_HARDWARE1 )
924
926
#endif
925
927
926
928
#ifdef SERIAL_PORT_HARDWARE2
927
- RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (2 )
929
+ RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (2 ,SERIAL_PORT_HARDWARE2 )
928
930
#endif
929
931
930
932
#ifdef SERIAL_PORT_HARDWARE3
931
- RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (3 )
933
+ RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (3 ,SERIAL_PORT_HARDWARE3 )
932
934
#endif
933
935
934
936
#ifdef SERIAL_PORT_USBVIRTUAL
935
- RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (USB)
937
+ RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION (USB,SERIAL_PORT_USBVIRTUAL )
936
938
#endif
937
939
940
+ #undef RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION
941
+
938
942
#ifdef ARDUINO_ARCH_AVR
939
943
void rpc_software_serial_uart_master::_flush ()
940
944
{
0 commit comments