mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
OP-4 GCS/Telemetry More bug fixes after telemetry testing (basic functionality now working)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@507 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
bc472102b4
commit
c107ab34d4
@ -240,6 +240,7 @@ qint32 UAVObject::unpack(const quint8* dataIn)
|
||||
}
|
||||
emit objectUnpacked(this); // trigger object updated event
|
||||
emit objectUpdated(this);
|
||||
|
||||
return numBytes;
|
||||
}
|
||||
|
||||
@ -285,7 +286,7 @@ bool UAVObject::save(QFile& file)
|
||||
quint8 tmpId[4];
|
||||
|
||||
// Write the object ID
|
||||
qToBigEndian<quint32>(objID, tmpId);
|
||||
qToLittleEndian<quint32>(objID, tmpId);
|
||||
if ( file.write((const char*)tmpId, 4) == -1 )
|
||||
{
|
||||
return false;
|
||||
@ -294,7 +295,7 @@ bool UAVObject::save(QFile& file)
|
||||
// Write the instance ID
|
||||
if (!isSingleInst)
|
||||
{
|
||||
qToBigEndian<quint16>(instID, tmpId);
|
||||
qToLittleEndian<quint16>(instID, tmpId);
|
||||
if ( file.write((const char*)tmpId, 2) == -1 )
|
||||
{
|
||||
return false;
|
||||
@ -360,7 +361,7 @@ bool UAVObject::load(QFile& file)
|
||||
}
|
||||
|
||||
// Check that the IDs match
|
||||
if (qFromBigEndian<quint32>(tmpId) != objID)
|
||||
if (qFromLittleEndian<quint32>(tmpId) != objID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -372,7 +373,7 @@ bool UAVObject::load(QFile& file)
|
||||
}
|
||||
|
||||
// Check that the IDs match
|
||||
if (qFromBigEndian<quint16>(tmpId) != instID)
|
||||
if (qFromLittleEndian<quint16>(tmpId) != instID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ qint32 UAVObjectFieldFloat::pack(quint8* dataOut)
|
||||
{
|
||||
quint32 value;
|
||||
memcpy(&value, &data[offset + numBytesPerElement*index], numBytesPerElement);
|
||||
qToBigEndian<quint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
qToLittleEndian<quint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
}
|
||||
// Done
|
||||
return getNumBytes();
|
||||
@ -74,7 +74,7 @@ qint32 UAVObjectFieldFloat::unpack(const quint8* dataIn)
|
||||
for (quint32 index = 0; index < numElements; ++index)
|
||||
{
|
||||
quint32 value;
|
||||
value = qFromBigEndian<quint32>(&dataIn[numBytesPerElement*index]);
|
||||
value = qFromLittleEndian<quint32>(&dataIn[numBytesPerElement*index]);
|
||||
memcpy(&data[offset + numBytesPerElement*index], &value, numBytesPerElement);
|
||||
}
|
||||
// Done
|
||||
|
@ -58,7 +58,7 @@ qint32 UAVObjectFieldInt16::pack(quint8* dataOut)
|
||||
{
|
||||
qint16 value;
|
||||
memcpy(&value, &data[offset + numBytesPerElement*index], numBytesPerElement);
|
||||
qToBigEndian<qint16>(value, &dataOut[numBytesPerElement*index]);
|
||||
qToLittleEndian<qint16>(value, &dataOut[numBytesPerElement*index]);
|
||||
}
|
||||
// Done
|
||||
return getNumBytes();
|
||||
@ -74,7 +74,7 @@ qint32 UAVObjectFieldInt16::unpack(const quint8* dataIn)
|
||||
for (quint32 index = 0; index < numElements; ++index)
|
||||
{
|
||||
qint16 value;
|
||||
value = qFromBigEndian<qint16>(&dataIn[numBytesPerElement*index]);
|
||||
value = qFromLittleEndian<qint16>(&dataIn[numBytesPerElement*index]);
|
||||
memcpy(&data[offset + numBytesPerElement*index], &value, numBytesPerElement);
|
||||
}
|
||||
// Done
|
||||
|
@ -58,7 +58,7 @@ qint32 UAVObjectFieldInt32::pack(quint8* dataOut)
|
||||
{
|
||||
qint32 value;
|
||||
memcpy(&value, &data[offset + numBytesPerElement*index], numBytesPerElement);
|
||||
qToBigEndian<qint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
qToLittleEndian<qint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
}
|
||||
// Done
|
||||
return getNumBytes();
|
||||
@ -74,7 +74,7 @@ qint32 UAVObjectFieldInt32::unpack(const quint8* dataIn)
|
||||
for (quint32 index = 0; index < numElements; ++index)
|
||||
{
|
||||
qint32 value;
|
||||
value = qFromBigEndian<qint32>(&dataIn[numBytesPerElement*index]);
|
||||
value = qFromLittleEndian<qint32>(&dataIn[numBytesPerElement*index]);
|
||||
memcpy(&data[offset + numBytesPerElement*index], &value, numBytesPerElement);
|
||||
}
|
||||
// Done
|
||||
|
@ -58,7 +58,7 @@ qint32 UAVObjectFieldUInt16::pack(quint8* dataOut)
|
||||
{
|
||||
quint16 value;
|
||||
memcpy(&value, &data[offset + numBytesPerElement*index], numBytesPerElement);
|
||||
qToBigEndian<quint16>(value, &dataOut[numBytesPerElement*index]);
|
||||
qToLittleEndian<quint16>(value, &dataOut[numBytesPerElement*index]);
|
||||
}
|
||||
// Done
|
||||
return getNumBytes();
|
||||
@ -74,7 +74,7 @@ qint32 UAVObjectFieldUInt16::unpack(const quint8* dataIn)
|
||||
for (quint32 index = 0; index < numElements; ++index)
|
||||
{
|
||||
quint16 value;
|
||||
value = qFromBigEndian<quint16>(&dataIn[numBytesPerElement*index]);
|
||||
value = qFromLittleEndian<quint16>(&dataIn[numBytesPerElement*index]);
|
||||
memcpy(&data[offset + numBytesPerElement*index], &value, numBytesPerElement);
|
||||
}
|
||||
// Done
|
||||
|
@ -58,7 +58,7 @@ qint32 UAVObjectFieldUInt32::pack(quint8* dataOut)
|
||||
{
|
||||
quint32 value;
|
||||
memcpy(&value, &data[offset + numBytesPerElement*index], numBytesPerElement);
|
||||
qToBigEndian<quint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
qToLittleEndian<quint32>(value, &dataOut[numBytesPerElement*index]);
|
||||
}
|
||||
// Done
|
||||
return getNumBytes();
|
||||
@ -74,7 +74,7 @@ qint32 UAVObjectFieldUInt32::unpack(const quint8* dataIn)
|
||||
for (quint32 index = 0; index < numElements; ++index)
|
||||
{
|
||||
quint32 value;
|
||||
value = qFromBigEndian<quint32>(&dataIn[numBytesPerElement*index]);
|
||||
value = qFromLittleEndian<quint32>(&dataIn[numBytesPerElement*index]);
|
||||
memcpy(&data[offset + numBytesPerElement*index], &value, numBytesPerElement);
|
||||
}
|
||||
// Done
|
||||
|
@ -156,7 +156,7 @@ bool UAVTalk::processInputByte(quint8 rxbyte)
|
||||
if (rxCount == 4)
|
||||
{
|
||||
// Search for object, if not found reset state machine
|
||||
rxObjId = (qint32)qFromBigEndian<quint32>(rxTmpBuffer);
|
||||
rxObjId = (qint32)qFromLittleEndian<quint32>(rxTmpBuffer);
|
||||
UAVObject* rxObj = objMngr->getObject(rxObjId);
|
||||
if (rxObj == NULL)
|
||||
{
|
||||
@ -210,7 +210,7 @@ bool UAVTalk::processInputByte(quint8 rxbyte)
|
||||
rxTmpBuffer[rxCount++] = rxbyte;
|
||||
if (rxCount == 2)
|
||||
{
|
||||
rxInstId = (qint16)qFromBigEndian<quint16>(rxTmpBuffer);
|
||||
rxInstId = (qint16)qFromLittleEndian<quint16>(rxTmpBuffer);
|
||||
rxCS = updateChecksum(rxCS, rxTmpBuffer, 2);
|
||||
rxCount = 0;
|
||||
// If there is a payload get it, otherwise receive checksum
|
||||
@ -237,7 +237,7 @@ bool UAVTalk::processInputByte(quint8 rxbyte)
|
||||
rxTmpBuffer[rxCount++] = rxbyte;
|
||||
if (rxCount == 2)
|
||||
{
|
||||
rxCSPacket = (qint16)qFromBigEndian<quint16>(rxTmpBuffer);
|
||||
rxCSPacket = (qint16)qFromLittleEndian<quint16>(rxTmpBuffer);
|
||||
if (rxCS == rxCSPacket)
|
||||
{
|
||||
mutex->lock();
|
||||
@ -486,7 +486,7 @@ bool UAVTalk::transmitSingleObject(UAVObject* obj, quint8 type, bool allInstance
|
||||
// Setup type and object id fields
|
||||
objId = obj->getObjID();
|
||||
txBuffer[0] = type;
|
||||
qToBigEndian<quint32>(objId, &txBuffer[1]);
|
||||
qToLittleEndian<quint32>(objId, &txBuffer[1]);
|
||||
|
||||
// Setup instance ID if one is required
|
||||
if ( obj->isSingleInstance() )
|
||||
@ -498,12 +498,12 @@ bool UAVTalk::transmitSingleObject(UAVObject* obj, quint8 type, bool allInstance
|
||||
// Check if all instances are requested
|
||||
if (allInstances)
|
||||
{
|
||||
qToBigEndian<quint16>(allInstId, &txBuffer[5]);
|
||||
qToLittleEndian<quint16>(allInstId, &txBuffer[5]);
|
||||
}
|
||||
else
|
||||
{
|
||||
instId = obj->getInstID();
|
||||
qToBigEndian<quint16>(instId, &txBuffer[5]);
|
||||
qToLittleEndian<quint16>(instId, &txBuffer[5]);
|
||||
}
|
||||
dataOffset = 7;
|
||||
}
|
||||
@ -536,7 +536,7 @@ bool UAVTalk::transmitSingleObject(UAVObject* obj, quint8 type, bool allInstance
|
||||
// Calculate checksum
|
||||
cs = 0;
|
||||
cs = updateChecksum(cs, txBuffer, dataOffset+length);
|
||||
qToBigEndian<quint16>(cs, &txBuffer[dataOffset+length]);
|
||||
qToLittleEndian<quint16>(cs, &txBuffer[dataOffset+length]);
|
||||
|
||||
// Send buffer
|
||||
io->write((const char*)txBuffer, dataOffset+length+CHECKSUM_LENGTH);
|
||||
|
Loading…
x
Reference in New Issue
Block a user