2222
2323#include < Arduino.h>
2424
25+ #ifdef ARDUINO_SAM_DUE
26+ #define SERIAL_HARDWARE_CLASS USARTClass
27+ #define SERIAL_MODE_TYPE UARTClass::UARTModes
28+ #else
29+ #define SERIAL_HARDWARE_CLASS HardwareSerial
30+ #define SERIAL_MODE_TYPE uint16_t
31+ #endif
32+
33+ #ifdef ARDUINO_ARCH_SAM
34+ #define PIN_SERIAL1_TX 18
35+ #endif
36+
2537#ifndef RS485_DEFAULT_TX_PIN
2638#ifdef PIN_SERIAL1_TX
2739#define RS485_DEFAULT_TX_PIN PIN_SERIAL1_TX
3951#elif ARDUINO_SAMD_ZERO
4052#define RS485_DEFAULT_DE_PIN A4
4153#define RS485_DEFAULT_RE_PIN A5
54+ // #elif defined(ARDUINO_UNOR4_WIFI) || defined(ARDUINO_UNOR4_MINIMA)
4255#elif defined(ARDUINO_UNOR4_WIFI) || defined(ARDUINO_UNOR4_MINIMA)
43- #define SERIAL_PORT_HARDWARE Serial1
56+ #define SERIAL_PORT_HARDWARE_DEFAULT Serial1
4457#define RS485_DEFAULT_DE_PIN 8
4558#define RS485_DEFAULT_RE_PIN 7
59+ #elif defined(ARDUINO_ARCH_SAM)
60+ #define SERIAL_PORT_HARDWARE_DEFAULT Serial1
61+ #define RS485_DEFAULT_DE_PIN 23
62+ #define RS485_DEFAULT_RE_PIN -1
4663#else
4764#ifndef RS485_DEFAULT_DE_PIN
4865#define RS485_DEFAULT_DE_PIN A6
6481class RS485Class : public Stream {
6582 public:
6683#ifdef __MBED__
67- RS485Class (HardwareSerial & hwSerial, PinName txPin, PinName dePin, PinName rePin);
84+ RS485Class (SERIAL_HARDWARE_LIB & hwSerial, PinName txPin, PinName dePin, PinName rePin);
6885#endif
69- RS485Class (HardwareSerial & hwSerial, int txPin, int dePin, int rePin);
86+ RS485Class (SERIAL_HARDWARE_CLASS & hwSerial, int txPin, int dePin, int rePin);
7087
7188 virtual void begin (unsigned long baudrate);
72- virtual void begin (unsigned long baudrate, uint16_t config);
7389 virtual void begin (unsigned long baudrate, int predelay, int postdelay);
74- virtual void begin (unsigned long baudrate, uint16_t config, int predelay, int postdelay);
90+ virtual void begin (unsigned long baudrate, SERIAL_MODE_TYPE config);
91+ virtual void begin (unsigned long baudrate, SERIAL_MODE_TYPE config, int predelay, int postdelay);
7592 virtual void end ();
7693 virtual int available ();
7794 virtual int peek ();
@@ -94,7 +111,7 @@ class RS485Class : public Stream {
94111 void setDelays (int predelay, int postdelay);
95112
96113 private:
97- HardwareSerial * _serial;
114+ SERIAL_HARDWARE_CLASS * _serial;
98115 int _txPin;
99116 int _dePin;
100117 int _rePin;
@@ -103,9 +120,9 @@ class RS485Class : public Stream {
103120
104121 bool _transmisionBegun;
105122 unsigned long _baudrate;
106- uint16_t _config;
123+ SERIAL_MODE_TYPE _config;
107124};
108125
109126extern RS485Class RS485;
110127
111- #endif
128+ #endif
0 commit comments