Skip to content

Commit 209c7e3

Browse files
committed
Fix Arduino Serial Defines
1 parent e00a554 commit 209c7e3

File tree

3 files changed

+56
-48
lines changed

3 files changed

+56
-48
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=OpenMV Arduino RPC
2-
version=1.0.0
2+
version=1.0.1
33
author=OpenMV
44
maintainer=OpenMV
55
sentence=OpenMV Arduino RPC Interface Library

src/openmvrpc.cpp

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
// followed by a UINT32 command, UINT32 payload length and a UINT16 CRC
1414
// The back and forth protocol works like this:
1515
// (all integers are in little-endian order)
16-
//
16+
//
1717
// Send Command:
1818
// Master --> Slave magic HEADER value, cmd, payload len, CRC
1919
// Master <-- Slave magic HEADER ack + CRC (4 bytes total)
2020
// Master --> Slave magic DATA value, n-byte payload, CRC
2121
// Master <-- Slave magic DATA ack + UINT16 CRC (4 bytes total)
22-
//
22+
//
2323
// Get Result:
2424
// Master --> Slave magic RESULT value, CRC
2525
// 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
307307
}
308308

309309
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,
311311
unsigned long send_timeout, unsigned long recv_timeout)
312312
{
313313
return __put_command(_hash(name), NULL, 0, send_timeout)
314314
? __get_result((uint8_t **) result_data, result_data_len, recv_timeout) : false;
315315
}
316316

317317
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,
319319
unsigned long send_timeout, unsigned long recv_timeout)
320320
{
321321
return __put_command(_hash(name.c_str(), name.length()), NULL, 0, send_timeout)
322322
? __get_result((uint8_t **) result_data, result_data_len, recv_timeout) : false;
323323
}
324324

325325
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,
327327
unsigned long send_timeout, unsigned long recv_timeout)
328328
{
329329
return __put_command(_hash(name), NULL, 0, send_timeout)
@@ -332,7 +332,7 @@ bool rpc_master::call_no_copy_no_args(const char *name,
332332

333333
bool rpc_master::call_no_copy(const __FlashStringHelper *name,
334334
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,
336336
unsigned long send_timeout, unsigned long recv_timeout)
337337
{
338338
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,
341341

342342
bool rpc_master::call_no_copy(const String &name,
343343
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,
345345
unsigned long send_timeout, unsigned long recv_timeout)
346346
{
347347
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,
350350

351351
bool rpc_master::call_no_copy(const char *name,
352352
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,
354354
unsigned long send_timeout, unsigned long recv_timeout)
355355
{
356356
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
474474
_get_short_timeout = min(_get_short_timeout + 1, timeout);
475475
}
476476

477-
return false;
477+
return false;
478478
}
479479

480480
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
857857
return true;
858858
}
859859

860-
#define RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(name) \
860+
#define RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(name, port) \
861861
void rpc_hardware_serial##name##_uart_master::_flush() \
862862
{ \
863-
for (int i = Serial##name.available(); i > 0; i--) Serial##name.read(); \
863+
for (int i = port.available(); i > 0; i--) port.read(); \
864864
} \
865865
\
866866
bool rpc_hardware_serial##name##_uart_master::get_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
867867
{ \
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)); \
870870
if (!ok) delay(_get_short_timeout); \
871871
return ok; \
872872
} \
873873
\
874874
bool rpc_hardware_serial##name##_uart_master::put_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
875875
{ \
876876
(void) timeout; \
877-
return Serial##name.write((char *) buff, size) == size; \
877+
return port.write((char *) buff, size) == size; \
878878
}
879879

880880
#ifdef SERIAL_PORT_HARDWARE
881-
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION()
881+
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(,SERIAL_PORT_HARDWARE)
882882
#endif
883883

884884
#ifdef SERIAL_PORT_HARDWARE1
885-
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(1)
885+
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(1,SERIAL_PORT_HARDWARE1)
886886
#endif
887887

888888
#ifdef SERIAL_PORT_HARDWARE2
889-
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(2)
889+
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(2,SERIAL_PORT_HARDWARE2)
890890
#endif
891891

892892
#ifdef SERIAL_PORT_HARDWARE3
893-
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(3)
893+
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(3,SERIAL_PORT_HARDWARE3)
894894
#endif
895895

896896
#ifdef SERIAL_PORT_USBVIRTUAL
897-
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(USB)
897+
RPC_HARDWARE_SERIAL_UART_MASTER_IMPLEMENTATION(USB,SERIAL_PORT_USBVIRTUAL)
898898
#endif
899899

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) \
901903
void rpc_hardware_serial##name##_uart_slave::_flush() \
902904
{ \
903-
for (int i = Serial##name.available(); i > 0; i--) Serial##name.read(); \
905+
for (int i = port.available(); i > 0; i--) port.read(); \
904906
} \
905907
\
906908
bool rpc_hardware_serial##name##_uart_slave::get_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
907909
{ \
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; \
910912
} \
911913
\
912914
bool rpc_hardware_serial##name##_uart_slave::put_bytes(uint8_t *buff, size_t size, unsigned long timeout) \
913915
{ \
914916
(void) timeout; \
915-
return Serial##name.write((char *) buff, size) == size; \
917+
return port.write((char *) buff, size) == size; \
916918
}
917919

918920
#ifdef SERIAL_PORT_HARDWARE
919-
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION()
921+
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(,SERIAL_PORT_HARDWARE)
920922
#endif
921923

922924
#ifdef SERIAL_PORT_HARDWARE1
923-
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(1)
925+
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(1,SERIAL_PORT_HARDWARE1)
924926
#endif
925927

926928
#ifdef SERIAL_PORT_HARDWARE2
927-
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(2)
929+
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(2,SERIAL_PORT_HARDWARE2)
928930
#endif
929931

930932
#ifdef SERIAL_PORT_HARDWARE3
931-
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(3)
933+
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(3,SERIAL_PORT_HARDWARE3)
932934
#endif
933935

934936
#ifdef SERIAL_PORT_USBVIRTUAL
935-
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(USB)
937+
RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION(USB,SERIAL_PORT_USBVIRTUAL)
936938
#endif
937939

940+
#undef RPC_HARDWARE_SERIAL_UART_SLAVE_IMPLEMENTATION
941+
938942
#ifdef ARDUINO_ARCH_AVR
939943
void rpc_software_serial_uart_master::_flush()
940944
{

src/openmvrpc.h

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ class rpc_spi_master : public rpc_master
307307
rpc_spi_master(const rpc_spi_master &);
308308
};
309309

310-
#define RPC_HARDWARE_SERIAL_UART_MASTER(name) \
310+
#define RPC_HARDWARE_SERIAL_UART_MASTER(name, port) \
311311
class rpc_hardware_serial##name##_uart_master : public rpc_master \
312312
{ \
313313
public: \
@@ -316,34 +316,36 @@ public: \
316316
virtual void _flush() override; \
317317
virtual bool get_bytes(uint8_t *buff, size_t size, unsigned long timeout) override; \
318318
virtual bool put_bytes(uint8_t *data, size_t size, unsigned long timeout) override; \
319-
virtual void begin() override { Serial##name.begin(__baudrate); } \
320-
virtual void end() override { Serial##name.end(); } \
319+
virtual void begin() override { port.begin(__baudrate); } \
320+
virtual void end() override { port.end(); } \
321321
private: \
322322
unsigned long __baudrate; \
323323
rpc_hardware_serial##name##_uart_master(const rpc_hardware_serial##name##_uart_master &); \
324324
};
325325

326326
#ifdef SERIAL_PORT_HARDWARE
327-
RPC_HARDWARE_SERIAL_UART_MASTER()
327+
RPC_HARDWARE_SERIAL_UART_MASTER(,SERIAL_PORT_HARDWARE)
328328
#endif
329329

330330
#ifdef SERIAL_PORT_HARDWARE1
331-
RPC_HARDWARE_SERIAL_UART_MASTER(1)
331+
RPC_HARDWARE_SERIAL_UART_MASTER(1,SERIAL_PORT_HARDWARE1)
332332
#endif
333333

334334
#ifdef SERIAL_PORT_HARDWARE2
335-
RPC_HARDWARE_SERIAL_UART_MASTER(2)
335+
RPC_HARDWARE_SERIAL_UART_MASTER(2,SERIAL_PORT_HARDWARE2)
336336
#endif
337337

338338
#ifdef SERIAL_PORT_HARDWARE3
339-
RPC_HARDWARE_SERIAL_UART_MASTER(3)
339+
RPC_HARDWARE_SERIAL_UART_MASTER(3,SERIAL_PORT_HARDWARE3)
340340
#endif
341341

342342
#ifdef SERIAL_PORT_USBVIRTUAL
343-
RPC_HARDWARE_SERIAL_UART_MASTER(USB)
343+
RPC_HARDWARE_SERIAL_UART_MASTER(USB,SERIAL_PORT_USBVIRTUAL)
344344
#endif
345345

346-
#define RPC_HARDWARE_SERIAL_UART_SLAVE(name) \
346+
#undef RPC_HARDWARE_SERIAL_UART_MASTER
347+
348+
#define RPC_HARDWARE_SERIAL_UART_SLAVE(name, port) \
347349
class rpc_hardware_serial##name##_uart_slave : public rpc_slave \
348350
{ \
349351
public: \
@@ -352,33 +354,35 @@ public: \
352354
virtual void _flush() override; \
353355
virtual bool get_bytes(uint8_t *buff, size_t size, unsigned long timeout) override; \
354356
virtual bool put_bytes(uint8_t *data, size_t size, unsigned long timeout) override; \
355-
virtual void begin() override { Serial##name.begin(__baudrate); } \
356-
virtual void end() override { Serial##name.end(); } \
357+
virtual void begin() override { port.begin(__baudrate); } \
358+
virtual void end() override { port.end(); } \
357359
private: \
358360
unsigned long __baudrate; \
359361
rpc_hardware_serial##name##_uart_slave(const rpc_hardware_serial##name##_uart_slave &); \
360362
};
361363

362364
#ifdef SERIAL_PORT_HARDWARE
363-
RPC_HARDWARE_SERIAL_UART_SLAVE()
365+
RPC_HARDWARE_SERIAL_UART_SLAVE(,SERIAL_PORT_HARDWARE)
364366
#endif
365367

366368
#ifdef SERIAL_PORT_HARDWARE1
367-
RPC_HARDWARE_SERIAL_UART_SLAVE(1)
369+
RPC_HARDWARE_SERIAL_UART_SLAVE(1,SERIAL_PORT_HARDWARE1)
368370
#endif
369371

370372
#ifdef SERIAL_PORT_HARDWARE2
371-
RPC_HARDWARE_SERIAL_UART_SLAVE(2)
373+
RPC_HARDWARE_SERIAL_UART_SLAVE(2,SERIAL_PORT_HARDWARE2)
372374
#endif
373375

374376
#ifdef SERIAL_PORT_HARDWARE3
375-
RPC_HARDWARE_SERIAL_UART_SLAVE(3)
377+
RPC_HARDWARE_SERIAL_UART_SLAVE(3,SERIAL_PORT_HARDWARE3)
376378
#endif
377379

378380
#ifdef SERIAL_PORT_USBVIRTUAL
379-
RPC_HARDWARE_SERIAL_UART_SLAVE(USB)
381+
RPC_HARDWARE_SERIAL_UART_SLAVE(USB,SERIAL_PORT_USBVIRTUAL)
380382
#endif
381383

384+
#undef RPC_HARDWARE_SERIAL_UART_SLAVE
385+
382386
#ifdef ARDUINO_ARCH_AVR
383387
class rpc_software_serial_uart_master : public rpc_master
384388
{
@@ -392,7 +396,7 @@ class rpc_software_serial_uart_master : public rpc_master
392396
private:
393397
long __baudrate;
394398
SoftwareSerial __serial;
395-
rpc_software_serial_uart_master(const rpc_software_serial_uart_master &);
399+
rpc_software_serial_uart_master(const rpc_software_serial_uart_master &);
396400
};
397401

398402
class rpc_software_serial_uart_slave : public rpc_slave
@@ -407,7 +411,7 @@ class rpc_software_serial_uart_slave : public rpc_slave
407411
private:
408412
long __baudrate;
409413
SoftwareSerial __serial;
410-
rpc_software_serial_uart_slave(const rpc_software_serial_uart_slave &);
414+
rpc_software_serial_uart_slave(const rpc_software_serial_uart_slave &);
411415
};
412416
#endif // ARDUINO_ARCH_AVR
413417

0 commit comments

Comments
 (0)