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.

Revision:
0:8e83b9448758
Child:
2:f8e393a81c25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Payload.cpp	Tue Feb 03 21:24:15 2015 +0000
@@ -0,0 +1,118 @@
+#include "Payload.h"
+
+using namespace SmartLabMuRata;
+
+Payload::Payload()
+{
+    max = EXPANDSIZE;
+    data = new char[EXPANDSIZE];
+    position = 0;
+}
+
+Payload::Payload(Payload * payload)
+{
+    this->data = payload->data;
+    this->position = payload->position;
+}
+
+const char * Payload::GetData()
+{
+    return data;
+}
+
+ResponseFlag Payload::GetResponseFlag()
+{
+    if ((data[0] >> 7) == 0x01)
+        return Response_Confirmation;
+    else return Request_Indication;
+}
+
+void Payload::SetResponseFlag(const ResponseFlag flag)
+{
+    if (flag == Request_Indication)
+        data[0] &= 0x7F;
+    else data[0] |= 0x80;
+}
+
+SubCommandID Payload::GetSubCommandID()
+{
+    return (SubCommandID)(data[0] & 0x7F);
+}
+
+void Payload::SetSubCommandID(const SubCommandID id)
+{
+    SetSubCommandID((char)id);
+}
+
+void Payload::SetSubCommandID(const int value)
+{
+    data[0] = (data[0] & 0x80) | (value & 0x7F);
+    position = 1;
+}
+
+char Payload::GetFrameID()
+{
+    return data[1];
+}
+
+void Payload::SetFrameID(const char frameID)
+{
+    data[1] = frameID;
+    position = 2;
+}
+
+int Payload::GetPosition()
+{
+    return position;
+}
+
+void Payload::SetPosition(const int position)
+{
+    if (this->position > max)
+        this->position = max;
+    else this->position = position;
+}
+
+void Payload::Allocate(const int length)
+{
+    if (length <= 0)
+        return;
+
+    if (length > max) {
+        delete data;
+        data = new char[length];
+    }
+
+    Rewind();
+}
+
+void Payload::Rewind()
+{
+    position = 0;
+}
+
+void Payload::SetContent(const char value)
+{
+    if (position >= max) {
+        char temp[max + EXPANDSIZE];
+        memcpy(temp, data, position);
+        delete data;
+        data = temp;
+    }
+
+    data[position++] = value;
+}
+
+void Payload::SetContent(const char * value, const int offset, const int length)
+{
+    if (position + length - offset>= max) {
+        max += EXPANDSIZE * (1 + length / EXPANDSIZE);
+        char temp[max];
+        memcpy(temp, data, position);
+        delete data;
+        data = temp;
+    }
+
+    memcpy(data + position, value, length);
+    position += length;
+}
\ No newline at end of file