A libery to connect to telegesis zigbee module. Bassed on implemtation of XBEE
Fork of xbee_lib by
telegesis.h
- Committer:
- gert_lauritsen
- Date:
- 2013-10-18
- Revision:
- 18:10fcddf238c9
- Parent:
- 17:5a3f81b10a61
- Child:
- 19:78f44233a12f
File content as of revision 18:10fcddf238c9:
#ifndef telegesis_h #define telegesis_h #include "mbed.h" /**Eksemple #include "telegesis.h" zigbee ZB(p9,p10); int main() { ZB.Reset(); wait(1); ZB.GetSerial(); while(1) { ZB.GetSerial(); ZB.RecieveData(read_data,0); ZB.UniCast("0000","tester forbindelse"); if (ZB.Zdat) { ZB.Zdat=0; printf(ZB.Zdata); } } } */ /** Zigbee interface class for configuring, sending and recieving data using an telegesis zigbee */ #define START_BYTE 0x7e #define ESCAPE 0x7d #define MAX_FRAME_DATA_SIZE 110 class zigbee { private: PinName _tx; PinName _rx; PinName _reset; public: zigbee(PinName tx, PinName rx); ~zigbee(); /** Gets the serial number/mac address of the zigbee and places it into serial_no. * @param serial_no array to store the serial of zigbee (must be 8 long). * @return Returns 1 on success. */ int GetSerial(); /** Sets the encryption key. This should be a 128-bit key. * @param key Pointer to the network key to set. * @return Returns 1 on success. */ int SetKey(char*); /** Recieves data sent to the xbee. * @param data_buf Pointer to the buffer to put recieved data into. * @param numchar Number of characters to read. If 0, will use the size of data_buf. */ void RecieveData(char*, int); /** Get hw version and local ID (64bit uniq number) * */ int ATI(); /** Sends a ping to Coo or any other adresse * */ int PingOut(); /** Scan the Pan for nodes */ int PanScan(); /** Make a new network. It then gets the role as coordinator */ int Establish_Network(); /** Join a pan */ int JoinNetwork(); /** * Scan network */ int ScanNetwork(); /** *Give info on what role the modem has in the network */ int NetworkInfo(); /** */ int Reset(); /** Sends data using the ascii mode */ int UniCast(char *adr,char *payload); /** Sends data using the binary mode */ int UniCastb(char *adr,char *payload, char payloadSize); /** converts a string to a long */ unsigned long hextolong(const char *hex); /** convertes a string to a int */ unsigned int hextoint(const char *hex); /** */ int EUI64; /** COO or FBB */ char Devicetype[3]; /** Gives type of HW */ char HWType[15]; /** incomming data */ char Zdata[80]; /** */ char LocalID[17]; /** * indication of incoming data */ uint8_t Zdat; /** * Indicator on that we have got a ack on a packet */ uint8_t PacketAck; int channel, NodeID, EPID,framesize, PanOnline; /** */ uint8_t ErrorCode; /** * Reads all available serial bytes until a packet is parsed, an error occurs, or the buffer is empty. * You may call <i>xbee</i>.getResponse().isAvailable() after calling this method to determine if * a packet is ready, or <i>xbee</i>.getResponse().isError() to determine if * a error occurred. * <p/> * This method should always return quickly since it does not wait for serial data to arrive. * You will want to use this method if you are doing other timely stuff in your loop, where * a delay would cause problems. * NOTE: calling this method resets the current response, so make sure you first consume the * current response */ void readPacket(); /**Looks for a packet but dont wait */ void SeePacket(); /** * Non blocking check og data. To be used in NON IRQ mode */ void Work(); private: uint8_t b; int SeqNumber; uint8_t GotFrame; //indicate that a frame has been recieved // buffer for incoming RX packets. holds only the api specific frame data, starting after the api id byte and prior to checksum char _responseFrameString[MAX_FRAME_DATA_SIZE]; Serial _zbee; bool wait4OK(); }; #endif