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.

Dependencies:   BufferedArray

Dependents:   MBEDminiproject

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?

UserRevisionLine numberNew 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