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.
Payload.cpp
- Committer:
- yangcq88517
- Date:
- 2015-02-05
- Revision:
- 4:7388451219ee
- Parent:
- 2:f8e393a81c25
- Child:
- 7:a71d7c24afc0
File content as of revision 4:7388451219ee:
#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; } 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) { max += EXPANDSIZE; char * temp = new char[max]; memcpy(temp, data, position); delete[] data; data = temp; } data[position++] = value; } void Payload::SetContent(const char * value, const int offset, const int length) { if (length <= 0) return; if (position + length >= max) { max += EXPANDSIZE * (1 + length / EXPANDSIZE); char * temp = new char[max]; memcpy(temp, data, position); delete[] data; data = temp; } memcpy(data + position, value + offset, length); position += length; }