Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 449 → Rev 450

/QMK-Groundstation/branches/libMK/libMK/Parser.cpp
10,29 → 10,28
* in data
*/
void Parser::create_frame(char cmd, int address, char * data, unsigned int length) {
//if # is cmd we do not touch anything, because
// the command is already encoded in data
if (cmd != '#') {
/*
//calculate buffer length
//(4 Bytes for 1-byte '#', 1-byte address, and 2-byte crc)
//(the rest for the data length - see encode how this is calculated)
int buff_len = 4+(length/3 + (length%3==0?0:1) )*4;
//if # is cmd we do not touch anything, because
// the command is already encoded in data
if (cmd != '#') {
/*
//calculate buffer length
//(4 Bytes for 1-byte '#', 1-byte address, and 2-byte crc)
//(the rest for the data length - see encode how this is calculated)
int buff_len = 4+(length/3 + (length%3==0?0:1) )*4;
 
//allociate memory for the data we want to send
char * send_data = (char *)malloc(buf_len);
*/
char send_data[150];
send_data[0]='#';
send_data[1]=(char)address;
send_data[2]=cmd;
for (int i = 0; i < length; i++)
send_data[i+3] = data[i];
//TODO: abgleich mit MKCommunication::send_command
Parser::encode64(send_data, length);
address = 'a' + address;
}
//allociate memory for the data we want to send
char * send_data = (char *)malloc(buf_len);
*/
Parser::encode64(data, length);
char send_data[150];
send_data[0]='#';
send_data[1]=(char)address+'a';
send_data[2]=cmd;
for (int i = 0; i < length; i++)
send_data[i+3] = data[i];
add_CRC(send_data, length+3);
data = send_data;
}
}
 
 
130,7 → 129,7
}
 
// Datensatz nach 8bit Integer
int Parser::dataToChar(int *data , int start, bool is_signed) {
int Parser::dataToChar(char *data , int start, bool is_signed) {
int out = (data[start]);
 
if ((out > 128) && (is_signed))
151,7 → 150,7
/**
* convert data to 16bit Integer
*/
int Parser::dataToInt(int *Data , int Start, bool is_signed)
int Parser::dataToInt(char *Data , int Start, bool is_signed)
{
int Out = (Data[Start+1]<<8) | (Data[Start+0]);
 
165,7 → 164,7
/**
* convert data to 32bit Long
*/
long Parser::dataToLong(int *Data , int Start, bool is_signed)
long Parser::dataToLong(char *Data , int Start, bool is_signed)
{
long Out = (Data[Start+3]<<24) | (Data[Start+2]<<16) | (Data[Start+1]<<8) | (Data[Start+0]);
 
175,6 → 174,14
return Out;
}
 
std::string Parser::dataToString(char * data, int start, int end)
{
char tmp[MAX_DATA_SIZE];
for (int i = start; i < end; i++)
tmp[i-start] = data[i];
return std::string(tmp);
}
 
float Parser::getFloat(long value, int count)
{
long num = pow(10, count);
230,8 → 237,8
 
tmpCRC %= 4096;
 
tx[length-2] = '=' + tmpCRC / 64;
tx[length-1] = '=' + tmpCRC % 64;
tx[length] = '\0';
tx[length] = '=' + tmpCRC / 64;
tx[length+1] = '=' + tmpCRC % 64;
tx[length+2] = '\0';
}