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-15
- Revision:
- 12:debf76f0c0bf
- Parent:
- 11:18ff088287ea
- Child:
- 13:1b557befdeff
- Child:
- 14:dcf2390f89e2
File content as of revision 12:debf76f0c0bf:
#ifndef telegesis_h #define telegesis_h #include "mbed.h" /** Zigbee interface class for configuring, sending and recieving data using an telegesis zigbee */ #define START_BYTE 0x7e #define ESCAPE 0x7d #define CR 0x0D #define LF 0x0A #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[100]; /** */ uint64_t LocalID; /** * 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; /** * 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(); private: uint8_t _pos; // last byte read uint8_t b; uint8_t _checksumTotal; uint8_t _nextFrameId; 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 uint8_t _responseFrameData[MAX_FRAME_DATA_SIZE]; char _responseFrameString[MAX_FRAME_DATA_SIZE]; Serial _zbee; bool wait4OK(); }; #endif