Murata RF modules are designed to simplify wireless development and certification by minimizing the amount of RF expertise you need to wirelessly enable a wide range of applications.

UARTFrame.h

Committer:
yangcq88517
Date:
2016-03-16
Revision:
9:0ce800923eda
Parent:
0:8e83b9448758

File content as of revision 9:0ce800923eda:

#ifndef SmartLab_MuRata_UARTFrame
#define SmartLab_MuRata_UARTFrame

#include "Payload.h"
#include "CommandID.h"

namespace SmartLabMuRata
{
/*
 * 7 | 6 | 5 4 3 2 1 0
 *         SOM(0x02)
 * 1 |       L0
 * 1 | A |    L1
 * 1 |   Command ID
 *       Payload
 *       ...
 *       ...
 * 1 |   Checksum
 *         EOM(0x04)
 */

/*
 * Each frame is delineated by a Start of Message (SOM) and End of Message (EOM) byte. The rest of the
 * fields are as follows:
 * The frame starts with a SOM (0x02) and ends with an EOM (0x04). The SOM and EOM values
 * may also appear in application payload.
 * Payload length (L1:L0): octet length of application payload including any escape characters. L0
 * stands for bit0 to bit6, and L1 stands for bit7 to bit12 of the payload length.
 * Command ID: specifies types of payload
 * A: 1 if ACK required, 0 if no ACK is required. If A=1, then the receiver must send ACK upon a
 * successful validation of the frame. A frame requiring acknowledgement must be acknowledged
 * Murata SW Design
 * Murata Proprietary Page 11 of 101
 * before any other non-response frame may be transmitted, i.e., a command response is always permitted.
 * Checksum: sum of L0, A | L1 and command ID.
 */
class UARTFrame
{

private :
    char l0;
    char l1;

    bool needACK;

    CommandID commandid;

    Payload * payload;

    char checksum;

public :

    static const char SOM = 0x02;
    static const char EOM = 0x04;

    // length
    char GetL0();

    void SetL0(const int value);

    char GetL1();

    void SetL1(const int value);

    int GetPayloadLength();

    void SetPayloadLength(const int length);

    // ack
    bool GetACKRequired();

    void SetACKRequired(const bool ack);

    //command id
    CommandID GetCommandID();

    void SetCommandID(const CommandID id);

    void SetCommandID(const int value);

    // payload
    void SetPayload(Payload * payload);

    Payload * GetPayload();

    // checksum
    char GetChecksum();

    void SetChecksum(const int checksum);

    bool VerifyChecksum();
};
}

#endif