2,7 → 2,7 |
|
// Base64 Decoder |
// see Parser.h for details about sRxData |
void Parser::decode64(sRxData &rx) |
bool Parser::decode64(sRxData &rx) |
{ |
int length = rx.str.size(); |
unsigned char a,b,c,d; |
15,8 → 15,10 |
int len = length; |
int decLen = 0; |
|
if (rx.Input[ptrIn] == 0) { |
throw "Nothing received"; |
if (rx.input[ptrIn] == 0) { |
return false; |
//TODO: catch error to show that something went wrong during the decode process |
//throw "Nothing received"; |
} |
|
while(len != 0) { |
37,7 → 39,7 |
} |
|
for (int a=0; a<ptr; a++) { |
if (Long == false) { |
if (length == false) { |
int b1, b2, b3; |
|
b1 = ptrOut[a++]; |
48,14 → 50,15 |
if (b3 > 32767) |
b3 = b3 - 65536; |
|
RX.decode[DecLen] = b3; |
DecLen++; |
rx.decode[decLen] = b3; |
decLen++; |
} else { |
RX.decode[DecLen] = ptrOut[a]; |
DecLen++; |
rx.decode[decLen] = ptrOut[a]; |
decLen++; |
} |
RX.DecLen = DecLen; |
rx.decLen = decLen; |
} |
return true; |
} |
|
// base64 encoder |
67,11 → 70,11 |
|
char tx_buff[150]; |
|
while(Length > 0) |
while(length > 0) |
{ |
if(Length) { a = data[ptr++]; length--;} else a = 0; |
if(Length) { b = data[ptr++]; length--;} else b = 0; |
if(Length) { c = data[ptr++]; length--;} else c = 0; |
if(length) { a = data[ptr++]; length--;} else a = 0; |
if(length) { b = data[ptr++]; length--;} else b = 0; |
if(length) { c = data[ptr++]; length--;} else c = 0; |
|
tx_buff[pt++] = '=' + (a >> 2); |
tx_buff[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
125,11 → 128,11 |
|
float Parser::getFloat(long value, int count) |
{ |
long num = math.pow(10, count); |
long num = pow(10, count); |
|
float temp = value; |
|
return value / num; |
return temp / num; |
} |
|
string Parser::dataToString(int Data[150], int Start, int End) |
145,10 → 148,11 |
} |
|
// check CRC |
bool Parser::check_CRC(char * RX, int length) |
bool Parser::check_CRC(string RXstr) |
{ |
int length = RXstr.size(); |
int CRC = 0; |
char *RX; |
char *RX = (char *)RXstr.c_str(); |
|
if (RX[1] == 127) |
{ |
176,8 → 180,9 |
} |
|
// add CRC |
string Parser::add_CRC(char * TX, int length) |
string Parser::add_CRC(string TX) |
{ |
int length = TX.size(); |
unsigned int tmpCRC = 0; |
|
char CRC[2]; |