mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-13 18:00:36 +08:00
Gave up on using bitfields
This commit is contained in:
@@ -122,6 +122,9 @@ MavlinkFTP::_worker(Request *req)
|
||||
// check request CRC to make sure this is one of ours
|
||||
messageCRC = hdr->crc32;
|
||||
hdr->crc32 = 0;
|
||||
hdr->padding[0] = 0;
|
||||
hdr->padding[1] = 0;
|
||||
hdr->padding[2] = 0;
|
||||
if (crc32(req->rawData(), req->dataSize()) != messageCRC) {
|
||||
errorCode = kErrNoRequest;
|
||||
goto out;
|
||||
@@ -203,6 +206,9 @@ MavlinkFTP::_reply(Request *req)
|
||||
|
||||
// message is assumed to be already constructed in the request buffer, so generate the CRC
|
||||
hdr->crc32 = 0;
|
||||
hdr->padding[0] = 0;
|
||||
hdr->padding[1] = 0;
|
||||
hdr->padding[2] = 0;
|
||||
hdr->crc32 = crc32(req->rawData(), req->dataSize());
|
||||
|
||||
// then pack and send the reply back to the request source
|
||||
|
||||
@@ -71,16 +71,17 @@ private:
|
||||
|
||||
static MavlinkFTP *_server;
|
||||
|
||||
/// @brief This structure is sent in the payload portion of the file transfer protocol mavlink message.
|
||||
/// This structure is layed out such that it should not require any special compiler packing to not consume extra space.
|
||||
/// @brief Trying to pack structures across differing compilers is questionable for Clients, so we pad the
|
||||
/// structure ourselves to 32 bit alignment which should get us what we want.
|
||||
struct RequestHeader
|
||||
{
|
||||
uint16_t seqNumber; ///< sequence number for message
|
||||
unsigned int session:4; ///< Session id for read and write commands
|
||||
unsigned int opcode:4; ///< Command opcode
|
||||
uint8_t size; ///< Size of data
|
||||
uint32_t crc32; ///< CRC for entire Request structure, with crc32 set to 0
|
||||
uint32_t offset; ///< Offsets for List and Read commands
|
||||
uint16_t seqNumber; ///< sequence number for message
|
||||
uint8_t session; ///< Session id for read and write commands
|
||||
uint8_t opcode; ///< Command opcode
|
||||
uint8_t size; ///< Size of data
|
||||
uint8_t padding[3];
|
||||
uint32_t crc32; ///< CRC for entire Request structure, with crc32 and padding set to 0
|
||||
uint32_t offset; ///< Offsets for List and Read commands
|
||||
uint8_t data[];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user