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.

Committer:
yangcq88517
Date:
Wed Mar 16 15:04:46 2016 +0000
Revision:
9:0ce800923eda
Parent:
0:8e83b9448758
bug fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangcq88517 0:8e83b9448758 1 #ifndef SmartLab_MuRata_UARTFrame
yangcq88517 0:8e83b9448758 2 #define SmartLab_MuRata_UARTFrame
yangcq88517 0:8e83b9448758 3
yangcq88517 0:8e83b9448758 4 #include "Payload.h"
yangcq88517 0:8e83b9448758 5 #include "CommandID.h"
yangcq88517 0:8e83b9448758 6
yangcq88517 0:8e83b9448758 7 namespace SmartLabMuRata
yangcq88517 0:8e83b9448758 8 {
yangcq88517 0:8e83b9448758 9 /*
yangcq88517 0:8e83b9448758 10 * 7 | 6 | 5 4 3 2 1 0
yangcq88517 0:8e83b9448758 11 * SOM(0x02)
yangcq88517 0:8e83b9448758 12 * 1 | L0
yangcq88517 0:8e83b9448758 13 * 1 | A | L1
yangcq88517 0:8e83b9448758 14 * 1 | Command ID
yangcq88517 0:8e83b9448758 15 * Payload
yangcq88517 0:8e83b9448758 16 * ...
yangcq88517 0:8e83b9448758 17 * ...
yangcq88517 0:8e83b9448758 18 * 1 | Checksum
yangcq88517 0:8e83b9448758 19 * EOM(0x04)
yangcq88517 0:8e83b9448758 20 */
yangcq88517 0:8e83b9448758 21
yangcq88517 0:8e83b9448758 22 /*
yangcq88517 0:8e83b9448758 23 * Each frame is delineated by a Start of Message (SOM) and End of Message (EOM) byte. The rest of the
yangcq88517 0:8e83b9448758 24 * fields are as follows:
yangcq88517 0:8e83b9448758 25 * The frame starts with a SOM (0x02) and ends with an EOM (0x04). The SOM and EOM values
yangcq88517 0:8e83b9448758 26 * may also appear in application payload.
yangcq88517 0:8e83b9448758 27 * Payload length (L1:L0): octet length of application payload including any escape characters. L0
yangcq88517 0:8e83b9448758 28 * stands for bit0 to bit6, and L1 stands for bit7 to bit12 of the payload length.
yangcq88517 0:8e83b9448758 29 * Command ID: specifies types of payload
yangcq88517 0:8e83b9448758 30 * A: 1 if ACK required, 0 if no ACK is required. If A=1, then the receiver must send ACK upon a
yangcq88517 0:8e83b9448758 31 * successful validation of the frame. A frame requiring acknowledgement must be acknowledged
yangcq88517 0:8e83b9448758 32 * Murata SW Design
yangcq88517 0:8e83b9448758 33 * Murata Proprietary Page 11 of 101
yangcq88517 0:8e83b9448758 34 * before any other non-response frame may be transmitted, i.e., a command response is always permitted.
yangcq88517 0:8e83b9448758 35 * Checksum: sum of L0, A | L1 and command ID.
yangcq88517 0:8e83b9448758 36 */
yangcq88517 0:8e83b9448758 37 class UARTFrame
yangcq88517 0:8e83b9448758 38 {
yangcq88517 0:8e83b9448758 39
yangcq88517 0:8e83b9448758 40 private :
yangcq88517 0:8e83b9448758 41 char l0;
yangcq88517 0:8e83b9448758 42 char l1;
yangcq88517 0:8e83b9448758 43
yangcq88517 0:8e83b9448758 44 bool needACK;
yangcq88517 0:8e83b9448758 45
yangcq88517 0:8e83b9448758 46 CommandID commandid;
yangcq88517 0:8e83b9448758 47
yangcq88517 0:8e83b9448758 48 Payload * payload;
yangcq88517 0:8e83b9448758 49
yangcq88517 0:8e83b9448758 50 char checksum;
yangcq88517 0:8e83b9448758 51
yangcq88517 0:8e83b9448758 52 public :
yangcq88517 0:8e83b9448758 53
yangcq88517 0:8e83b9448758 54 static const char SOM = 0x02;
yangcq88517 0:8e83b9448758 55 static const char EOM = 0x04;
yangcq88517 0:8e83b9448758 56
yangcq88517 0:8e83b9448758 57 // length
yangcq88517 0:8e83b9448758 58 char GetL0();
yangcq88517 0:8e83b9448758 59
yangcq88517 0:8e83b9448758 60 void SetL0(const int value);
yangcq88517 0:8e83b9448758 61
yangcq88517 0:8e83b9448758 62 char GetL1();
yangcq88517 0:8e83b9448758 63
yangcq88517 0:8e83b9448758 64 void SetL1(const int value);
yangcq88517 0:8e83b9448758 65
yangcq88517 0:8e83b9448758 66 int GetPayloadLength();
yangcq88517 0:8e83b9448758 67
yangcq88517 0:8e83b9448758 68 void SetPayloadLength(const int length);
yangcq88517 0:8e83b9448758 69
yangcq88517 0:8e83b9448758 70 // ack
yangcq88517 0:8e83b9448758 71 bool GetACKRequired();
yangcq88517 0:8e83b9448758 72
yangcq88517 0:8e83b9448758 73 void SetACKRequired(const bool ack);
yangcq88517 0:8e83b9448758 74
yangcq88517 0:8e83b9448758 75 //command id
yangcq88517 0:8e83b9448758 76 CommandID GetCommandID();
yangcq88517 0:8e83b9448758 77
yangcq88517 0:8e83b9448758 78 void SetCommandID(const CommandID id);
yangcq88517 0:8e83b9448758 79
yangcq88517 0:8e83b9448758 80 void SetCommandID(const int value);
yangcq88517 0:8e83b9448758 81
yangcq88517 0:8e83b9448758 82 // payload
yangcq88517 0:8e83b9448758 83 void SetPayload(Payload * payload);
yangcq88517 0:8e83b9448758 84
yangcq88517 0:8e83b9448758 85 Payload * GetPayload();
yangcq88517 0:8e83b9448758 86
yangcq88517 0:8e83b9448758 87 // checksum
yangcq88517 0:8e83b9448758 88 char GetChecksum();
yangcq88517 0:8e83b9448758 89
yangcq88517 0:8e83b9448758 90 void SetChecksum(const int checksum);
yangcq88517 0:8e83b9448758 91
yangcq88517 0:8e83b9448758 92 bool VerifyChecksum();
yangcq88517 0:8e83b9448758 93 };
yangcq88517 0:8e83b9448758 94 }
yangcq88517 0:8e83b9448758 95
yangcq88517 0:8e83b9448758 96 #endif