Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 395 → Rev 396

/QMK-Groundstation/branches/own_com_lib/com/Parser.cpp
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];