Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Payload.cpp
00001 #include "Payload.h" 00002 00003 using namespace SmartLabMuRata; 00004 00005 Payload::Payload() 00006 { 00007 max = EXPANDSIZE; 00008 data = new char[EXPANDSIZE]; 00009 position = 0; 00010 } 00011 00012 Payload::Payload(Payload * payload) 00013 { 00014 position = 0; 00015 max = 0; 00016 SetPayload(payload); 00017 } 00018 00019 void Payload::SetPayload(Payload * payload) 00020 { 00021 if (payload == NULL) 00022 return; 00023 00024 this->data = payload->data; 00025 this->position = payload->position; 00026 this->max = payload->max; 00027 } 00028 00029 char * Payload::GetData() 00030 { 00031 return data; 00032 } 00033 00034 ResponseFlag Payload::GetResponseFlag() 00035 { 00036 if ((data[0] >> 7) == 0x01) 00037 return Response_Confirmation; 00038 else return Request_Indication; 00039 } 00040 00041 void Payload::SetResponseFlag(const ResponseFlag flag) 00042 { 00043 if (flag == Request_Indication) 00044 data[0] &= 0x7F; 00045 else data[0] |= 0x80; 00046 } 00047 00048 SubCommandID Payload::GetSubCommandID() 00049 { 00050 return (SubCommandID)(data[0] & 0x7F); 00051 } 00052 00053 void Payload::SetSubCommandID(const SubCommandID id) 00054 { 00055 SetSubCommandID((int)id); 00056 } 00057 00058 void Payload::SetSubCommandID(const int value) 00059 { 00060 data[0] = (data[0] & 0x80) | (value & 0x7F); 00061 position = 1; 00062 } 00063 00064 char Payload::GetFrameID() 00065 { 00066 return data[1]; 00067 } 00068 00069 void Payload::SetFrameID(const char frameID) 00070 { 00071 data[1] = frameID; 00072 position = 2; 00073 } 00074 00075 int Payload::GetPosition() 00076 { 00077 return position; 00078 } 00079 00080 void Payload::SetPosition(const int position) 00081 { 00082 if (this->position > max) 00083 this->position = max; 00084 else this->position = position; 00085 } 00086 00087 void Payload::Allocate(const int length) 00088 { 00089 if (length <= 0) 00090 return; 00091 00092 if (length > max) { 00093 delete[] data; 00094 data = new char[length]; 00095 } 00096 00097 Rewind(); 00098 } 00099 00100 void Payload::Rewind() 00101 { 00102 position = 0; 00103 } 00104 00105 void Payload::SetContent(const char value) 00106 { 00107 if (position >= max) { 00108 max += EXPANDSIZE; 00109 char * temp = new char[max]; 00110 memcpy(temp, data, position); 00111 delete[] data; 00112 data = temp; 00113 } 00114 00115 data[position++] = value; 00116 } 00117 00118 void Payload::SetContent(const char * value, const int offset, const int length) 00119 { 00120 if (length <= 0) 00121 return; 00122 00123 if (position + length >= max) { 00124 max += EXPANDSIZE * (1 + length / EXPANDSIZE); 00125 char * temp = new char[max]; 00126 memcpy(temp, data, position); 00127 delete[] data; 00128 data = temp; 00129 } 00130 00131 memcpy(data + position, value + offset, length); 00132 position += length; 00133 }
Generated on Fri Jul 15 2022 01:02:11 by
1.7.2