25 #if defined(ARDUINO) && ARDUINO >= 100 40 #define START_BYTE 0x7e 51 #define MAX_FRAME_DATA_SIZE 110 53 #define BROADCAST_ADDRESS 0xffff 54 #define ZB_BROADCAST_ADDRESS 0xfffe 57 #define ZB_TX_API_LENGTH 12 58 #define TX_16_API_LENGTH 3 59 #define TX_64_API_LENGTH 9 60 #define AT_COMMAND_API_LENGTH 2 61 #define REMOTE_AT_COMMAND_API_LENGTH 13 63 #define PACKET_OVERHEAD_LENGTH 6 65 #define API_ID_INDEX 3 68 #define RX_16_RSSI_OFFSET 2 69 #define RX_64_RSSI_OFFSET 8 71 #define DEFAULT_FRAME_ID 1 72 #define NO_RESPONSE_FRAME_ID 0 76 #define DISABLE_ACK_OPTION 1 77 #define BROADCAST_OPTION 4 80 #define ZB_PACKET_ACKNOWLEDGED 0x01 81 #define ZB_BROADCAST_PACKET 0x02 87 #define TX_64_REQUEST 0x0 88 #define TX_16_REQUEST 0x1 89 #define AT_COMMAND_REQUEST 0x08 90 #define AT_COMMAND_QUEUE_REQUEST 0x09 91 #define REMOTE_AT_REQUEST 0x17 92 #define ZB_TX_REQUEST 0x10 93 #define ZB_EXPLICIT_TX_REQUEST 0x11 94 #define RX_64_RESPONSE 0x80 95 #define RX_16_RESPONSE 0x81 96 #define RX_64_IO_RESPONSE 0x82 97 #define RX_16_IO_RESPONSE 0x83 98 #define AT_RESPONSE 0x88 99 #define TX_STATUS_RESPONSE 0x89 100 #define MODEM_STATUS_RESPONSE 0x8a 101 #define ZB_RX_RESPONSE 0x90 102 #define ZB_EXPLICIT_RX_RESPONSE 0x91 103 #define ZB_TX_STATUS_RESPONSE 0x8b 104 #define ZB_IO_SAMPLE_RESPONSE 0x92 105 #define ZB_IO_NODE_IDENTIFIER_RESPONSE 0x95 106 #define AT_COMMAND_RESPONSE 0x88 107 #define REMOTE_AT_COMMAND_RESPONSE 0x97 114 #define CCA_FAILURE 0x2 115 #define INVALID_DESTINATION_ENDPOINT_SUCCESS 0x15 116 #define NETWORK_ACK_FAILURE 0x21 117 #define NOT_JOINED_TO_NETWORK 0x22 118 #define SELF_ADDRESSED 0x23 119 #define ADDRESS_NOT_FOUND 0x24 120 #define ROUTE_NOT_FOUND 0x25 121 #define PAYLOAD_TOO_LARGE 0x74 124 #define HARDWARE_RESET 0 125 #define WATCHDOG_TIMER_RESET 1 127 #define DISASSOCIATED 3 128 #define SYNCHRONIZATION_LOST 4 129 #define COORDINATOR_REALIGNMENT 5 130 #define COORDINATOR_STARTED 6 132 #define ZB_BROADCAST_RADIUS_MAX_HOPS 0 134 #define ZB_TX_UNICAST 0 135 #define ZB_TX_BROADCAST 8 139 #define AT_INVALID_COMMAND 2 140 #define AT_INVALID_PARAMETER 3 141 #define AT_NO_RESPONSE 4 144 #define CHECKSUM_FAILURE 1 145 #define PACKET_EXCEEDS_BYTE_ARRAY_LENGTH 2 146 #define UNEXPECTED_START_BYTE 3 165 void setApiId(uint8_t apiId);
170 void setMsbLength(uint8_t msbLength);
175 void setLsbLength(uint8_t lsbLength);
180 void setChecksum(uint8_t checksum);
186 void setFrameData(uint8_t* frameDataPtr);
197 void setFrameLength(uint8_t frameLength);
266 void setAvailable(
bool complete);
276 void setErrorCode(uint8_t errorCode);
279 uint8_t* _frameDataPtr;
286 uint8_t _frameLength;
305 void setMsb(uint32_t msb);
306 void setLsb(uint32_t lsb);
328 uint8_t getFrameId();
343 uint8_t getData(
int index);
351 virtual uint8_t getDataLength() = 0;
355 virtual uint8_t getDataOffset() = 0;
369 uint16_t getRemoteAddress();
370 uint8_t getTxRetryCount();
371 uint8_t getDeliveryStatus();
372 uint8_t getDiscoveryStatus();
383 uint16_t getRemoteAddress16();
385 uint8_t getDataLength();
387 uint8_t getDataOffset();
398 bool containsAnalog();
399 bool containsDigital();
403 bool isAnalogEnabled(uint8_t pin);
407 bool isDigitalEnabled(uint8_t pin);
412 uint16_t getAnalog(uint8_t pin);
417 bool isDigitalOn(uint8_t pin);
418 uint8_t getDigitalMaskMsb();
419 uint8_t getDigitalMaskLsb();
420 uint8_t getAnalogMask();
445 bool isAddressBroadcast();
446 bool isPanBroadcast();
447 uint8_t getDataLength();
448 uint8_t getDataOffset();
449 virtual uint8_t getRssiOffset() = 0;
458 uint8_t getRssiOffset();
459 uint16_t getRemoteAddress16();
461 uint16_t _remoteAddress;
470 uint8_t getRssiOffset();
485 uint8_t getSampleSize();
486 bool containsAnalog();
487 bool containsDigital();
491 bool isAnalogEnabled(uint8_t pin);
495 bool isDigitalEnabled(uint8_t pin);
500 uint16_t getAnalog(uint8_t pin, uint8_t sample);
505 bool isDigitalOn(uint8_t pin, uint8_t sample);
506 uint8_t getSampleOffset();
513 uint16_t getRemoteAddress16();
514 uint8_t getRssiOffset();
522 uint8_t getRssiOffset();
547 uint8_t* getCommand();
561 uint8_t getValueLength();
577 uint8_t* getCommand();
591 uint8_t getValueLength();
595 uint16_t getRemoteAddress16();
626 void setFrameId(uint8_t frameId);
630 uint8_t getFrameId();
649 void setApiId(uint8_t apiId);
689 bool readPacket(
int timeout);
695 void readPacketUntilAvailable();
714 uint16_t getPANID(
void);
716 uint8_t parseRX16(
BayEOS &client,
int rx_panid);
719 uint8_t getNextFrameId();
720 virtual void i_begin(
long baud) = 0;
721 virtual int i_available() = 0;
722 virtual int read() = 0;
723 virtual void flush() = 0;
724 virtual size_t write(uint8_t val) = 0;
726 void sendByte(uint8_t b,
bool escape);
727 void resetResponse();
734 uint8_t _checksumTotal;
735 uint8_t _nextFrameId;
737 uint8_t _responseFrameData[MAX_FRAME_DATA_SIZE];
742 HardwareSerial* _serial;
750 void setSerial(HardwareSerial &serial){
754 int i_available(
void){
755 return _serial->available();
757 void begin(
long baud){
758 _serial->begin(baud);
760 void i_begin(
long baud){
761 _serial->begin(baud);
767 return _serial->read();
769 size_t write(uint8_t c){
770 return _serial->write(c);
780 PayloadRequest(uint8_t apiId, uint8_t frameId, uint8_t *payload, uint8_t payloadLength);
784 uint8_t* getPayload();
788 void setPayload(uint8_t* payloadPtr);
792 uint8_t getPayloadLength();
798 void setPayloadLength(uint8_t payloadLength);
800 uint8_t* _payloadPtr;
801 uint8_t _payloadLength;
816 Tx16Request(uint16_t addr16, uint8_t option, uint8_t *payload, uint8_t payloadLength, uint8_t frameId);
820 Tx16Request(uint16_t addr16, uint8_t *payload, uint8_t payloadLength);
826 uint16_t getAddress16();
827 void setAddress16(uint16_t addr16);
829 void setOption(uint8_t option);
862 void setOption(uint8_t option);
893 ZBTxRequest(
XBeeAddress64 &addr64, uint16_t addr16, uint8_t broadcastRadius, uint8_t option, uint8_t *payload, uint8_t payloadLength, uint8_t frameId);
900 uint16_t getAddress16();
901 uint8_t getBroadcastRadius();
904 void setAddress16(uint16_t addr16);
905 void setBroadcastRadius(uint8_t broadcastRadius);
906 void setOption(uint8_t option);
914 uint8_t _broadcastRadius;
928 AtCommandRequest(uint8_t *command, uint8_t *commandValue, uint8_t commandValueLength);
931 uint8_t* getCommand();
932 void setCommand(uint8_t* command);
933 uint8_t* getCommandValue();
934 void setCommandValue(uint8_t* command);
935 uint8_t getCommandValueLength();
936 void setCommandValueLength(uint8_t length);
940 void clearCommandValue();
944 uint8_t *_commandValue;
945 uint8_t _commandValueLength;
959 RemoteAtCommandRequest(uint16_t remoteAddress16, uint8_t *command, uint8_t *commandValue, uint8_t commandValueLength);
975 uint16_t getRemoteAddress16();
976 void setRemoteAddress16(uint16_t remoteAddress16);
979 bool getApplyChanges();
980 void setApplyChanges(
bool applyChanges);
987 uint16_t _remoteAddress16;
void getZBRxIoSampleResponse(XBeeResponse &response)
void getRx16IoSampleResponse(XBeeResponse &response)
void getRx64Response(XBeeResponse &response)
void getModemStatusResponse(XBeeResponse &response)
uint16_t getPacketLength()
void getRx16Response(XBeeResponse &response)
void getZBTxStatusResponse(XBeeResponse &response)
uint8_t getFrameDataLength()
void getRemoteAtCommandResponse(XBeeResponse &response)
void getTxStatusResponse(XBeeResponse &response)
void getAtCommandResponse(XBeeResponse &responses)
void getZBRxResponse(XBeeResponse &response)
void getRx64IoSampleResponse(XBeeResponse &response)