添加广播方式升级
This commit is contained in:
@@ -75,15 +75,28 @@ myarray CodecYm::decode(int &srcAddr, int &dstAddr, int &cmd, myarray data)
|
||||
{
|
||||
cmd = this->cmd;
|
||||
if (is_big_data == false)
|
||||
r = data.mid(7, len - 3);
|
||||
r = data.mid(offset+7, len - 3);
|
||||
else
|
||||
r = data.mid(11, len - 7);
|
||||
r = data.mid(offset+11, len - 7);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
bool CodecYm::packCheck(myarray data)
|
||||
int CodecYm::packCheck(myarray data)
|
||||
{
|
||||
bool ack = false;
|
||||
int ack = 0;
|
||||
offset=0;
|
||||
while(data.size()>=2){
|
||||
if ((uint8_t(data[0]) != 0x59u) || (uint8_t(data[1]) != 0x6du))
|
||||
{
|
||||
// 帧头不对
|
||||
// qWarning("frame head not 0x59 0x6d");
|
||||
// return ack;
|
||||
data.remove(0,1);
|
||||
offset++;
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (data.size() < 9)
|
||||
{
|
||||
// 主机一帧数据至少9字节
|
||||
@@ -91,13 +104,6 @@ bool CodecYm::packCheck(myarray data)
|
||||
return ack;
|
||||
}
|
||||
|
||||
if ((uint8_t(data[0]) != 0x59u) || (uint8_t(data[1]) != 0x6du))
|
||||
{
|
||||
// 帧头不对
|
||||
qWarning("frame head not 0x59 0x6d");
|
||||
return ack;
|
||||
}
|
||||
|
||||
len = (data[2] | (data[3] << 8));
|
||||
if (len == 65535)
|
||||
{
|
||||
@@ -109,7 +115,7 @@ bool CodecYm::packCheck(myarray data)
|
||||
{
|
||||
is_big_data = false;
|
||||
}
|
||||
if (len + 6 != data.size())
|
||||
if (len + 6 > data.size())
|
||||
{
|
||||
// 如果长度不相等则产生了数据丢失
|
||||
qWarning("recv data have lossed");
|
||||
@@ -127,7 +133,7 @@ bool CodecYm::packCheck(myarray data)
|
||||
cmd_no = data[5] | (data[6] << 8);
|
||||
cmd = data[4];
|
||||
// 数据负载
|
||||
return true;
|
||||
return len+offset;
|
||||
}
|
||||
myarray CodecYm::encode(int srcAddr, int dstAddr, int cmd, myarray data)
|
||||
{
|
||||
|
Reference in New Issue
Block a user