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

Core/CoreAPI.h

Committer:
yangcq88517
Date:
2015-10-22
Revision:
0:837e6c48e90d
Child:
1:3dc0ec2f9fd6

File content as of revision 0:837e6c48e90d:

#ifndef UK_AC_HERTS_SMARTLAB_XBEE_CoreAPI
#define UK_AC_HERTS_SMARTLAB_XBEE_CoreAPI

#include "APIFrame.h"
#include "ISerial.h"

#include "ATCommandRequest.h"
#include "CreateSourceRouteRequest.h"
#include "IOCDetectionConfigRequest.h"
#include "PinConfigurationRequest.h"
#include "RemoteATCommandRequest.h"
#include "RemoteIODetectionConfigRequest.h"
#include "RemotePinConfigurationRequest.h"
#include "XBeeTx16Request.h"
#include "XBeeTx64Request.h"
#include "ZigBeeExplicitTxRequest.h"
#include "ZigBeeTxRequest.h"


#include "XBeeRx64Indicator.h"
#include "XBeeRx16Indicator.h"
#include "XBeeRx64IOSampleIndicator.h"
#include "XBeeRx16IOSampleIndicator.h"
#include "XBeeTxStatusIndicator.h"
#include "ATCommandIndicator.h"
#include "ModemStatusIndicator.h"
#include "ZigBeeTxStatusIndicator.h"
#include "ZigBeeRxIndicator.h"
#include "ZigBeeExplicitRxIndicator.h"
#include "ZigBeeIOSampleIndicator.h"
#include "SensorReadIndicator.h"
#include "NodeIdentificationIndicator.h"
#include "RemoteCommandIndicator.h"
#include "RouteRecordIndicator.h"
#include "ManyToOneRouteIndicator.h"

class CoreAPI
{
private:
    static const char KEY = 0x7E;
    static const char ESCAPED = 0x7D;
    static const char XON = 0x11;
    static const char XOFF = 0x13;
    static const int INITIAL_FRAME_LENGTH = 100;

    ISerial * serial;
    bool isEscapeMode;
    bool isRunning;
    bool isChecksum;

    APIFrame * msg;
    XBeeRx64Indicator xBeeRx64Indicator;
    XBeeRx16Indicator xBeeRx16Indicator;
    XBeeRx64IOSampleIndicator xBeeRx64IOSampleIndicator;
    XBeeRx16IOSampleIndicator xBeeRx16IOSampleIndicator;
    XBeeTxStatusIndicator xBeeTxStatusIndicator;
    ATCommandIndicator aTCommandIndicator;
    ModemStatusIndicator modemStatusIndicator;
    ZigBeeTxStatusIndicator zigBeeTxStatusIndicator;
    ZigBeeRxIndicator zigBeeRxIndicator;
    ZigBeeExplicitRxIndicator zigBeeExplicitRxIndicator;
    ZigBeeIOSampleIndicator zigBeeIOSampleIndicator;
    SensorReadIndicator sensorReadIndicator;
    NodeIdentificationIndicator nodeIdentificationIndicator;
    RemoteCommandIndicator remoteCommandIndicator;
    RouteRecordIndicator routeRecordIndicator;
    ManyToOneRouteIndicator manyToOneRouteIndicator;

protected:

    /// <summary>
    /// read one byte payload, which allready handle the escape char, if less than 0 means error occured
    /// </summary>
    /// <returns></returns>
    int readByte();

    /// <summary>
    /// write one byte to the payload, which allready handle the escape char
    /// </summary>
    /// <param name="data"></param>
    void writeByte(char data);

    void packetProcess();

    int getLength();

    void readPayLoad(int length);

public:
    CoreAPI(ISerial * serial, bool escape);

    ~CoreAPI();

    /// <summary>
    /// get or set whether to verify receive packet's checksum
    /// </summary>
    void setVerifyChecksum(bool isCheck);

    /// <summary>
    /// to start send and process response, must be called before any function
    /// </summary>
    void start();

    /// <summary>
    /// stop so the serial port can be used for other purpose
    /// </summary>
    void stop();

    /// <summary>
    /// a general function to send frame out, do not process response
    /// </summary>
    /// <param name="request"></param>
    void send(APIFrame * request);

    APIFrame * getResponse();

    XBeeRx64Indicator * getXBeeRx64();

    XBeeRx16Indicator * getXBeeRx16();

    XBeeRx64IOSampleIndicator * getXBeeRx64IOSample();

    XBeeRx16IOSampleIndicator * getXBeeRx16IOSample();

    XBeeTxStatusIndicator * getXBeeTxStatus();

    ATCommandIndicator * getATCommand();
    
    ModemStatusIndicator * getModemStatus();
    
    ZigBeeTxStatusIndicator * getZigBeeTxStatus();
    
    ZigBeeRxIndicator * getZigBeeRx();
    
    ZigBeeExplicitRxIndicator * getZigBeeExplicitRx();
    
    ZigBeeIOSampleIndicator * getZigBeeIOSample();
    
    SensorReadIndicator * getSensorRead();
    
    NodeIdentificationIndicator * getNodeIdentification();
    
    RemoteCommandIndicator * getRemoteCommand();
    
    RouteRecordIndicator * getRouteRecord();
    
    ManyToOneRouteIndicator * getManyToOneRoute();
};




















#endif