XBee and XBee-PRO ZigBee RF modules provide cost-effective wireless connectivity to electronic devices. They are interoperable with other ZigBee PRO feature set devices, including devices from other vendors.
Core/CoreAPI.h@0:837e6c48e90d, 2015-10-22 (annotated)
- Committer:
- yangcq88517
- Date:
- Thu Oct 22 12:28:26 2015 +0000
- Revision:
- 0:837e6c48e90d
- Child:
- 1:3dc0ec2f9fd6
initial upload
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 0:837e6c48e90d | 1 | #ifndef UK_AC_HERTS_SMARTLAB_XBEE_CoreAPI |
yangcq88517 | 0:837e6c48e90d | 2 | #define UK_AC_HERTS_SMARTLAB_XBEE_CoreAPI |
yangcq88517 | 0:837e6c48e90d | 3 | |
yangcq88517 | 0:837e6c48e90d | 4 | #include "APIFrame.h" |
yangcq88517 | 0:837e6c48e90d | 5 | #include "ISerial.h" |
yangcq88517 | 0:837e6c48e90d | 6 | |
yangcq88517 | 0:837e6c48e90d | 7 | #include "ATCommandRequest.h" |
yangcq88517 | 0:837e6c48e90d | 8 | #include "CreateSourceRouteRequest.h" |
yangcq88517 | 0:837e6c48e90d | 9 | #include "IOCDetectionConfigRequest.h" |
yangcq88517 | 0:837e6c48e90d | 10 | #include "PinConfigurationRequest.h" |
yangcq88517 | 0:837e6c48e90d | 11 | #include "RemoteATCommandRequest.h" |
yangcq88517 | 0:837e6c48e90d | 12 | #include "RemoteIODetectionConfigRequest.h" |
yangcq88517 | 0:837e6c48e90d | 13 | #include "RemotePinConfigurationRequest.h" |
yangcq88517 | 0:837e6c48e90d | 14 | #include "XBeeTx16Request.h" |
yangcq88517 | 0:837e6c48e90d | 15 | #include "XBeeTx64Request.h" |
yangcq88517 | 0:837e6c48e90d | 16 | #include "ZigBeeExplicitTxRequest.h" |
yangcq88517 | 0:837e6c48e90d | 17 | #include "ZigBeeTxRequest.h" |
yangcq88517 | 0:837e6c48e90d | 18 | |
yangcq88517 | 0:837e6c48e90d | 19 | |
yangcq88517 | 0:837e6c48e90d | 20 | #include "XBeeRx64Indicator.h" |
yangcq88517 | 0:837e6c48e90d | 21 | #include "XBeeRx16Indicator.h" |
yangcq88517 | 0:837e6c48e90d | 22 | #include "XBeeRx64IOSampleIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 23 | #include "XBeeRx16IOSampleIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 24 | #include "XBeeTxStatusIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 25 | #include "ATCommandIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 26 | #include "ModemStatusIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 27 | #include "ZigBeeTxStatusIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 28 | #include "ZigBeeRxIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 29 | #include "ZigBeeExplicitRxIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 30 | #include "ZigBeeIOSampleIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 31 | #include "SensorReadIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 32 | #include "NodeIdentificationIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 33 | #include "RemoteCommandIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 34 | #include "RouteRecordIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 35 | #include "ManyToOneRouteIndicator.h" |
yangcq88517 | 0:837e6c48e90d | 36 | |
yangcq88517 | 0:837e6c48e90d | 37 | class CoreAPI |
yangcq88517 | 0:837e6c48e90d | 38 | { |
yangcq88517 | 0:837e6c48e90d | 39 | private: |
yangcq88517 | 0:837e6c48e90d | 40 | static const char KEY = 0x7E; |
yangcq88517 | 0:837e6c48e90d | 41 | static const char ESCAPED = 0x7D; |
yangcq88517 | 0:837e6c48e90d | 42 | static const char XON = 0x11; |
yangcq88517 | 0:837e6c48e90d | 43 | static const char XOFF = 0x13; |
yangcq88517 | 0:837e6c48e90d | 44 | static const int INITIAL_FRAME_LENGTH = 100; |
yangcq88517 | 0:837e6c48e90d | 45 | |
yangcq88517 | 0:837e6c48e90d | 46 | ISerial * serial; |
yangcq88517 | 0:837e6c48e90d | 47 | bool isEscapeMode; |
yangcq88517 | 0:837e6c48e90d | 48 | bool isRunning; |
yangcq88517 | 0:837e6c48e90d | 49 | bool isChecksum; |
yangcq88517 | 0:837e6c48e90d | 50 | |
yangcq88517 | 0:837e6c48e90d | 51 | APIFrame * msg; |
yangcq88517 | 0:837e6c48e90d | 52 | XBeeRx64Indicator xBeeRx64Indicator; |
yangcq88517 | 0:837e6c48e90d | 53 | XBeeRx16Indicator xBeeRx16Indicator; |
yangcq88517 | 0:837e6c48e90d | 54 | XBeeRx64IOSampleIndicator xBeeRx64IOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 55 | XBeeRx16IOSampleIndicator xBeeRx16IOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 56 | XBeeTxStatusIndicator xBeeTxStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 57 | ATCommandIndicator aTCommandIndicator; |
yangcq88517 | 0:837e6c48e90d | 58 | ModemStatusIndicator modemStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 59 | ZigBeeTxStatusIndicator zigBeeTxStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 60 | ZigBeeRxIndicator zigBeeRxIndicator; |
yangcq88517 | 0:837e6c48e90d | 61 | ZigBeeExplicitRxIndicator zigBeeExplicitRxIndicator; |
yangcq88517 | 0:837e6c48e90d | 62 | ZigBeeIOSampleIndicator zigBeeIOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 63 | SensorReadIndicator sensorReadIndicator; |
yangcq88517 | 0:837e6c48e90d | 64 | NodeIdentificationIndicator nodeIdentificationIndicator; |
yangcq88517 | 0:837e6c48e90d | 65 | RemoteCommandIndicator remoteCommandIndicator; |
yangcq88517 | 0:837e6c48e90d | 66 | RouteRecordIndicator routeRecordIndicator; |
yangcq88517 | 0:837e6c48e90d | 67 | ManyToOneRouteIndicator manyToOneRouteIndicator; |
yangcq88517 | 0:837e6c48e90d | 68 | |
yangcq88517 | 0:837e6c48e90d | 69 | protected: |
yangcq88517 | 0:837e6c48e90d | 70 | |
yangcq88517 | 0:837e6c48e90d | 71 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 72 | /// read one byte payload, which allready handle the escape char, if less than 0 means error occured |
yangcq88517 | 0:837e6c48e90d | 73 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 74 | /// <returns></returns> |
yangcq88517 | 0:837e6c48e90d | 75 | int readByte(); |
yangcq88517 | 0:837e6c48e90d | 76 | |
yangcq88517 | 0:837e6c48e90d | 77 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 78 | /// write one byte to the payload, which allready handle the escape char |
yangcq88517 | 0:837e6c48e90d | 79 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 80 | /// <param name="data"></param> |
yangcq88517 | 0:837e6c48e90d | 81 | void writeByte(char data); |
yangcq88517 | 0:837e6c48e90d | 82 | |
yangcq88517 | 0:837e6c48e90d | 83 | void packetProcess(); |
yangcq88517 | 0:837e6c48e90d | 84 | |
yangcq88517 | 0:837e6c48e90d | 85 | int getLength(); |
yangcq88517 | 0:837e6c48e90d | 86 | |
yangcq88517 | 0:837e6c48e90d | 87 | void readPayLoad(int length); |
yangcq88517 | 0:837e6c48e90d | 88 | |
yangcq88517 | 0:837e6c48e90d | 89 | public: |
yangcq88517 | 0:837e6c48e90d | 90 | CoreAPI(ISerial * serial, bool escape); |
yangcq88517 | 0:837e6c48e90d | 91 | |
yangcq88517 | 0:837e6c48e90d | 92 | ~CoreAPI(); |
yangcq88517 | 0:837e6c48e90d | 93 | |
yangcq88517 | 0:837e6c48e90d | 94 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 95 | /// get or set whether to verify receive packet's checksum |
yangcq88517 | 0:837e6c48e90d | 96 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 97 | void setVerifyChecksum(bool isCheck); |
yangcq88517 | 0:837e6c48e90d | 98 | |
yangcq88517 | 0:837e6c48e90d | 99 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 100 | /// to start send and process response, must be called before any function |
yangcq88517 | 0:837e6c48e90d | 101 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 102 | void start(); |
yangcq88517 | 0:837e6c48e90d | 103 | |
yangcq88517 | 0:837e6c48e90d | 104 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 105 | /// stop so the serial port can be used for other purpose |
yangcq88517 | 0:837e6c48e90d | 106 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 107 | void stop(); |
yangcq88517 | 0:837e6c48e90d | 108 | |
yangcq88517 | 0:837e6c48e90d | 109 | /// <summary> |
yangcq88517 | 0:837e6c48e90d | 110 | /// a general function to send frame out, do not process response |
yangcq88517 | 0:837e6c48e90d | 111 | /// </summary> |
yangcq88517 | 0:837e6c48e90d | 112 | /// <param name="request"></param> |
yangcq88517 | 0:837e6c48e90d | 113 | void send(APIFrame * request); |
yangcq88517 | 0:837e6c48e90d | 114 | |
yangcq88517 | 0:837e6c48e90d | 115 | APIFrame * getResponse(); |
yangcq88517 | 0:837e6c48e90d | 116 | |
yangcq88517 | 0:837e6c48e90d | 117 | XBeeRx64Indicator * getXBeeRx64(); |
yangcq88517 | 0:837e6c48e90d | 118 | |
yangcq88517 | 0:837e6c48e90d | 119 | XBeeRx16Indicator * getXBeeRx16(); |
yangcq88517 | 0:837e6c48e90d | 120 | |
yangcq88517 | 0:837e6c48e90d | 121 | XBeeRx64IOSampleIndicator * getXBeeRx64IOSample(); |
yangcq88517 | 0:837e6c48e90d | 122 | |
yangcq88517 | 0:837e6c48e90d | 123 | XBeeRx16IOSampleIndicator * getXBeeRx16IOSample(); |
yangcq88517 | 0:837e6c48e90d | 124 | |
yangcq88517 | 0:837e6c48e90d | 125 | XBeeTxStatusIndicator * getXBeeTxStatus(); |
yangcq88517 | 0:837e6c48e90d | 126 | |
yangcq88517 | 0:837e6c48e90d | 127 | ATCommandIndicator * getATCommand(); |
yangcq88517 | 0:837e6c48e90d | 128 | |
yangcq88517 | 0:837e6c48e90d | 129 | ModemStatusIndicator * getModemStatus(); |
yangcq88517 | 0:837e6c48e90d | 130 | |
yangcq88517 | 0:837e6c48e90d | 131 | ZigBeeTxStatusIndicator * getZigBeeTxStatus(); |
yangcq88517 | 0:837e6c48e90d | 132 | |
yangcq88517 | 0:837e6c48e90d | 133 | ZigBeeRxIndicator * getZigBeeRx(); |
yangcq88517 | 0:837e6c48e90d | 134 | |
yangcq88517 | 0:837e6c48e90d | 135 | ZigBeeExplicitRxIndicator * getZigBeeExplicitRx(); |
yangcq88517 | 0:837e6c48e90d | 136 | |
yangcq88517 | 0:837e6c48e90d | 137 | ZigBeeIOSampleIndicator * getZigBeeIOSample(); |
yangcq88517 | 0:837e6c48e90d | 138 | |
yangcq88517 | 0:837e6c48e90d | 139 | SensorReadIndicator * getSensorRead(); |
yangcq88517 | 0:837e6c48e90d | 140 | |
yangcq88517 | 0:837e6c48e90d | 141 | NodeIdentificationIndicator * getNodeIdentification(); |
yangcq88517 | 0:837e6c48e90d | 142 | |
yangcq88517 | 0:837e6c48e90d | 143 | RemoteCommandIndicator * getRemoteCommand(); |
yangcq88517 | 0:837e6c48e90d | 144 | |
yangcq88517 | 0:837e6c48e90d | 145 | RouteRecordIndicator * getRouteRecord(); |
yangcq88517 | 0:837e6c48e90d | 146 | |
yangcq88517 | 0:837e6c48e90d | 147 | ManyToOneRouteIndicator * getManyToOneRoute(); |
yangcq88517 | 0:837e6c48e90d | 148 | }; |
yangcq88517 | 0:837e6c48e90d | 149 | |
yangcq88517 | 0:837e6c48e90d | 150 | |
yangcq88517 | 0:837e6c48e90d | 151 | |
yangcq88517 | 0:837e6c48e90d | 152 | |
yangcq88517 | 0:837e6c48e90d | 153 | |
yangcq88517 | 0:837e6c48e90d | 154 | |
yangcq88517 | 0:837e6c48e90d | 155 | |
yangcq88517 | 0:837e6c48e90d | 156 | |
yangcq88517 | 0:837e6c48e90d | 157 | |
yangcq88517 | 0:837e6c48e90d | 158 | |
yangcq88517 | 0:837e6c48e90d | 159 | |
yangcq88517 | 0:837e6c48e90d | 160 | |
yangcq88517 | 0:837e6c48e90d | 161 | |
yangcq88517 | 0:837e6c48e90d | 162 | |
yangcq88517 | 0:837e6c48e90d | 163 | |
yangcq88517 | 0:837e6c48e90d | 164 | |
yangcq88517 | 0:837e6c48e90d | 165 | |
yangcq88517 | 0:837e6c48e90d | 166 | |
yangcq88517 | 0:837e6c48e90d | 167 | |
yangcq88517 | 0:837e6c48e90d | 168 | |
yangcq88517 | 0:837e6c48e90d | 169 | #endif |