5#define SUBITEM_IS_COMMAND 0x20
8#if defined(ARDUINO_ARCH_STM32)
9#if !defined(HAL_CAN_MODULE_ENABLED)
10#define HAL_CAN_MODULE_ENABLED
51 uint8_t payloadType:4;
93#define MAXCANID 0x1FFFFFFF
114 uint16_t currentConfCRC;
118 uint8_t sysCmdData[7];
158canDriver(){ready=
false; controllerId=0; responseTimer=0; state=canState::stateUnknown;canConfigObj=NULL;canRemoteConfigObj=NULL;confCRC=0xFFFF;};
171bool sendStatus(uint16_t itemNum, itemCmd cmd,
int subItem =
NO_SUBITEM);
181bool sendCommand(uint8_t devID, uint16_t itemID, itemCmd cmd,
bool status=
false,
int subItemID=
NO_SUBITEM );
190bool sendCommand(aJsonObject * can,itemCmd cmd,
bool status =
false);
196bool upTime(uint32_t ut);
202bool salt(uint32_t salt);
216bool requestFrame(uint8_t devId, payloadType _payloadType, uint16_t seqNo );
247bool processPacket(canid_t
id, datagram_t *packet, uint8_t len,
bool rtr=
false);
255bool write(uint32_t msg_id, datagram_t * buf = NULL, uint8_t size=0);
262aJsonObject * findConfbyName(
char* devName,
int * devAddr=NULL);
263#if not defined (NOIP)
271bool subscribeTopics(
char *
root,
size_t buflen);
278uint8_t getControllerID(){
return controllerId;};
286aJsonObject * canConfigObj;
288aJsonObject * canRemoteConfigObj;
304 aJsonObject * getConfbyID(uint8_t devId);
306 #if defined(ARDUINO_ARCH_STM32)
307 CAN_message_t CAN_RX_msg;
308 CAN_message_t CAN_TX_msg;
311 #if defined(__SAM3X8E__)
319 uint8_t controllerId;
323 uint32_t responseTimer;
330extern aJsonObject *
topics;
342class canStream :
public Stream
349 canStream(canDriver * _driver) : readPos(0),writePos(0),devId(0), pType(payloadType::unknown),state(canState::stateUnknown),seqNo(0),failedCount(0){driver=_driver; }
357 int open(uint8_t controllerID, payloadType _pType,
char _mode)
365 if (mode ==
'w') state=canState::StreamOpenedWrite;
366 else state=canState::StreamOpenedRead;
375 if ((mode ==
'w') && writePos) flush();
377 state=canState::stateUnknown;
387 virtual int available();
402 virtual void flush();
409 virtual size_t write(uint8_t c) ;
414 virtual int availableForWrite();
425 int send(uint8_t len, uint16_t _seqNo);
435 unsigned int readPos;
437 unsigned int writePos;
440 datagram_t writeBuffer;
#define NO_SUBITEM
Sub-item index meaning "no sub-item" (top of 6-bit field).
Definition candriver.h:3
aJsonObject * topics
Definition main.cpp:118
uint8_t macAddress[6]
6-byte MAC address.
Definition systemconfigdata.h:38
32-bit parameter storage of itemCmd.
Definition itemCmd.h:267
Packed 32-bit command word of itemCmd.
Definition itemCmd.h:245