XBee API operation library for mbed

XBeeAPI.h

Committer:
yangcq88517
Date:
2015-10-22
Revision:
2:723cccd7659a
Parent:
0:415f4b1b988e
Child:
5:da252d355673

File content as of revision 2:723cccd7659a:

#ifndef UK_AC_HERTS_SMARTLAB_XBEE_API
#define UK_AC_HERTS_SMARTLAB_XBEE_API

#include "mbed.h"
#include "SerialData.h"
#include "CoreAPI.h"

/** XBee API library entry poiont.
*Example:
* @code
*#include "mbed.h"
*#include "XBeeAPI.h"
*
*XBeeAPI xbee(p9, p10, true);
*Address add(0x00,0x00,0x1022);
*XBeeTx16Request tx16(0x00, &add, &OptionsBase::DEFAULT, "Hello From XBEE API", 0, 19);
*XBeeRx16Indicator rx16(NULL);
*
*int main()
*{
*    xbee.setVerifyChecksum(false);
*    xbee.start();
*
*    // option 1
*    while(1) {
*        XBeeRx16Indicator * response = xbee.getXBeeRx16();
*        if (response != NULL) {
*            tx16.setPayload(response->getReceivedData(), 0, response->getReceivedDataLength());
*            xbee.send(&tx16);
*        }
*    }
*
*    // option 2
*    while(1) {
*
*        APIFrame * frame = xbee.getResponse();
*        while(frame != NULL) {
*            switch (frame->getFrameType()) {
*                case APIFrame::Tx64_Request :
*                    break;
*                case APIFrame::Tx16_Request :
*                    break;
*                case APIFrame::AT_Command:
*                    break;
*                case APIFrame::AT_Command_Queue_Parameter_Value:
*                    break;
*                case APIFrame::ZigBee_Transmit_Request:
*                    break;
*                case APIFrame::Explicit_Addressing_ZigBee_Command_Frame:
*                    break;
*                case APIFrame::Remote_Command_Request :
*                    break;
*                case APIFrame::Create_Source_Route :
*                    break;
*                case APIFrame::Register_Joining_Device:
*                    break;
*                case APIFrame::Rx64_Receive_Packet :
*                    break;
*                case APIFrame::Rx16_Receive_Packet:
*                    rx16.convert(frame);
*                    tx16.setPayload(rx16.getReceivedData(), 0, rx16.getReceivedDataLength());
*                    xbee.send(&tx16);
*                    break;
*                case APIFrame::Rx64_IO_Data_Sample_Rx_Indicator:
*                    break;
*                case APIFrame::Rx16_IO_Data_Sample_Rx_Indicator :
*                    xbee.send(&tx16);
*                    break;
*                case APIFrame::AT_Command_Response:
*                    break;
*                case APIFrame::XBee_Transmit_Status :
*                    break;
*                case APIFrame::Modem_Status:
*                    break;
*                case APIFrame::ZigBee_Transmit_Status :
*                    break;
*                case APIFrame::ZigBee_Receive_Packet:
*                    break;
*                case APIFrame::ZigBee_Explicit_Rx_Indicator :
*                    break;
*                case APIFrame::ZigBee_IO_Data_Sample_Rx_Indicator :
*                    break;
*                case APIFrame::XBee_Sensor_Read_Indicato :
*                    break;
*                case APIFrame::Node_Identification_Indicator:
*                    break;
*                case APIFrame::Remote_Command_Response:
*                    break;
*                case APIFrame::Over_the_Air_Firmware_Update_Status :
*                    break;
*                case APIFrame::Route_Record_Indicator :
*                    break;
*                case APIFrame::Device_Authenticated_Indicator:
*                    break;
*                case APIFrame::Many_to_One_Route_Request_Indicator:
*                    break;
*            }
*
*            frame = xbee.getResponse();
*        }
*    }
*}
*@endcode
*/
class XBeeAPI: public CoreAPI
{
public:

    /** Create a XBeeAPI instance. 
    *
    * @param tx data transmission line
    * @param rx data receiving line
    *
    */
    XBeeAPI(PinName tx, PinName rx);

    /** Create a XBeeAPI instance. 
    *
    * @param tx data transmission line
    * @param rx data receiving line
    * @param isEscape API escaped operating mode (AP = 2) works similarly to API mode. The only difference is that when working in API escaped mode, some bytes of the API frame specific data must be escaped.
    *
    */
    XBeeAPI(PinName tx, PinName rx, bool isEscape);

    /** Create a XBeeAPI instance. 
    *
    * @param tx data transmission line
    * @param rx data receiving line
    * @param baudRate baud rate
    * @param isEscape API escaped operating mode (AP = 2) works similarly to API mode. The only difference is that when working in API escaped mode, some bytes of the API frame specific data must be escaped.
    *
    */
    XBeeAPI(PinName tx, PinName rx, int baudRate, bool isEscape);

    /** Create a SerialData instance with other serial interface.
    *
    * @param serial class that implementes ISerial interface.
    * @param isEscape API escaped operating mode (AP = 2) works similarly to API mode. The only difference is that when working in API escaped mode, some bytes of the API frame specific data must be escaped.
    *
    */
    XBeeAPI(ISerial * serial, bool isEscape);
};

#endif