14#if defined(_LIN_SLAVE_NEOHWSERIAL_AVR_H_)
17bool LIN_Slave_NeoHWSerial_AVR::flagBreak[];
24#if defined(HAVE_HWSERIAL0)
32 bool LIN_Slave_NeoHWSerial_AVR::_onSerialReceive0(uint8_t
byte, uint8_t status)
35 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 3)
36 LIN_SLAVE_DEBUG_SERIAL.print(
"LIN_Slave_NeoHWSerial_AVR::_onSerialReceive0()");
37 LIN_SLAVE_DEBUG_SERIAL.print(
": Rx = 0x");
38 LIN_SLAVE_DEBUG_SERIAL.print(
byte, HEX);
39 if (status & (0x01<< FE0))
40 LIN_SLAVE_DEBUG_SERIAL.println(
", BREAK");
42 LIN_SLAVE_DEBUG_SERIAL.println();
46 if ((
byte ==0x00) && (status & (0x01<< FE0)))
48 (LIN_Slave_NeoHWSerial_AVR::flagBreak)[0] =
true;
60#if defined(HAVE_HWSERIAL1)
68 bool LIN_Slave_NeoHWSerial_AVR::_onSerialReceive1(uint8_t
byte, uint8_t status)
71 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 3)
72 LIN_SLAVE_DEBUG_SERIAL.print(
"LIN_Slave_NeoHWSerial_AVR::_onSerialReceive1()");
73 LIN_SLAVE_DEBUG_SERIAL.print(
": Rx = 0x");
74 LIN_SLAVE_DEBUG_SERIAL.print(
byte, HEX);
75 if (status & (0x01<< FE1))
76 LIN_SLAVE_DEBUG_SERIAL.println(
", BREAK");
78 LIN_SLAVE_DEBUG_SERIAL.println();
82 if ((
byte ==0x00) && (status & (0x01<< FE1)))
84 (LIN_Slave_NeoHWSerial_AVR::flagBreak)[1] =
true;
96#if defined(HAVE_HWSERIAL2)
104 bool LIN_Slave_NeoHWSerial_AVR::_onSerialReceive2(uint8_t
byte, uint8_t status)
107 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 3)
108 LIN_SLAVE_DEBUG_SERIAL.print(
"LIN_Slave_NeoHWSerial_AVR::_onSerialReceive2()");
109 LIN_SLAVE_DEBUG_SERIAL.print(
": Rx = 0x");
110 LIN_SLAVE_DEBUG_SERIAL.print(
byte, HEX);
111 if (status & (0x01<< FE2))
112 LIN_SLAVE_DEBUG_SERIAL.println(
", BREAK");
114 LIN_SLAVE_DEBUG_SERIAL.println();
118 if ((
byte ==0x00) && (status & (0x01<< FE2)))
120 (LIN_Slave_NeoHWSerial_AVR::flagBreak)[2] =
true;
132#if defined(HAVE_HWSERIAL3)
140 bool LIN_Slave_NeoHWSerial_AVR::_onSerialReceive3(uint8_t
byte, uint8_t status)
143 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 3)
144 LIN_SLAVE_DEBUG_SERIAL.print(
"LIN_Slave_NeoHWSerial_AVR::_onSerialReceive3()");
145 LIN_SLAVE_DEBUG_SERIAL.print(
": Rx = 0x");
146 LIN_SLAVE_DEBUG_SERIAL.print(
byte, HEX);
147 if (status & (0x01<< FE3))
148 LIN_SLAVE_DEBUG_SERIAL.println(
", BREAK");
150 LIN_SLAVE_DEBUG_SERIAL.println();
154 if ((
byte ==0x00) && (status & (0x01<< FE3)))
156 (LIN_Slave_NeoHWSerial_AVR::flagBreak)[3] =
true;
180 return (LIN_Slave_NeoHWSerial_AVR::flagBreak)[LIN_Slave_NeoHWSerial_AVR::idxSerial];
193 (LIN_Slave_NeoHWSerial_AVR::flagBreak)[LIN_Slave_NeoHWSerial_AVR::idxSerial] =
false;
219 this->pSerial = &Interface;
238 while(!(*pSerial)) { }
241 #if defined(HAVE_HWSERIAL0)
242 if (pSerial == &NeoSerial)
244 LIN_Slave_NeoHWSerial_AVR::idxSerial = 0;
245 pSerial->attachInterrupt(LIN_Slave_NeoHWSerial_AVR::_onSerialReceive0);
248 #if defined(HAVE_HWSERIAL1)
249 if (pSerial == &NeoSerial1)
251 LIN_Slave_NeoHWSerial_AVR::idxSerial = 1;
252 pSerial->attachInterrupt(LIN_Slave_NeoHWSerial_AVR::_onSerialReceive1);
255 #if defined(HAVE_HWSERIAL2)
256 if (pSerial == &NeoSerial2)
258 LIN_Slave_NeoHWSerial_AVR::idxSerial = 2;
259 pSerial->attachInterrupt(LIN_Slave_NeoHWSerial_AVR::_onSerialReceive2);
262 #if defined(HAVE_HWSERIAL3)
263 if (pSerial == &NeoSerial3)
265 LIN_Slave_NeoHWSerial_AVR::idxSerial = 3;
266 pSerial->attachInterrupt(LIN_Slave_NeoHWSerial_AVR::_onSerialReceive3);
274 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 2)
275 LIN_SLAVE_DEBUG_SERIAL.print(this->
nameLIN);
276 LIN_SLAVE_DEBUG_SERIAL.println(
": LIN_Slave_NeoHWSerial_AVR::begin()");
296 #if defined(LIN_SLAVE_DEBUG_SERIAL) && (LIN_SLAVE_DEBUG_LEVEL >= 2)
297 LIN_SLAVE_DEBUG_SERIAL.print(this->
nameLIN);
298 LIN_SLAVE_DEBUG_SERIAL.println(
": LIN_Slave_NeoHWSerial_AVR::end()");
LIN slave emulation library using a NeoHWSerial interface of AVR.
LIN slave node base class.
uint16_t baudrate
communication baudrate [Baud]
virtual void begin(uint16_t Baudrate=19200)
Open serial interface.
char nameLIN[LIN_SLAVE_BUFLEN_NAME]
LIN node name, e.g. for debug.
version_t
LIN protocol version.
virtual void end(void)
Close serial interface.
LIN_Slave_NeoHWSerial_AVR(NeoHWSerial &Interface, LIN_Slave_Base::version_t Version=LIN_Slave_Base::LIN_V2, const char NameLIN[]="Slave", uint32_t TimeoutRx=1500L, const int8_t PinTxEN=INT8_MIN)
Class constructor.
bool _getBreakFlag(void)
Get break detection flag.
void _resetBreakFlag(void)
Clear break detection flag.
void begin(uint16_t Baudrate=19200)
Open serial interface.
void end(void)
Close serial interface.