diff --git a/include/serialization/uavcan/equipment/ahrs/Solution.h b/include/serialization/uavcan/equipment/ahrs/Solution.h index 6b2f92c..f0220fc 100644 --- a/include/serialization/uavcan/equipment/ahrs/Solution.h +++ b/include/serialization/uavcan/equipment/ahrs/Solution.h @@ -56,12 +56,26 @@ static inline int8_t dronecan_equipment_ahrs_solution_deserialize( offset += 16; obj->orientation_xyzw[idx] = canardConvertFloat16ToNativeFloat(f16_dummy); } + + offset+= 4; // reserved void4 + + uint8_t covariance_len; + canardDecodeScalar(transfer, offset, 4, true, &covariance_len); + offset += 4; + offset += 16 * covariance_len; + for (uint_fast8_t idx = 0; idx < 3; idx++) { canardDecodeScalar(transfer, offset, 16, true, &f16_dummy); offset += 16; obj->angular_velocity[idx] = canardConvertFloat16ToNativeFloat(f16_dummy); } + offset+= 4; // reserved void4 + canardDecodeScalar(transfer, offset, 4, true, &covariance_len); + offset += 4; + + offset += 16 * covariance_len; + for (uint_fast8_t idx = 0; idx < 3; idx++) { canardDecodeScalar(transfer, offset, 16, true, &f16_dummy); offset += 16; @@ -90,16 +104,24 @@ static inline int8_t dronecan_equipment_ahrs_solution_serialize( canardEncodeScalar(buffer, 0, 56, &obj->timestamp); offset += 56; - for (uint_fast8_t idx = 0; idx < 3; idx++) { canardEncodeFloat16(buffer, offset, obj->orientation_xyzw[idx]); offset += 16; } + + offset += 4; + canardEncodeScalar(buffer, offset, 4, 0); + offset += 4; // covariance len + for (uint_fast8_t idx = 0; idx < 2; idx++) { canardEncodeFloat16(buffer, offset, obj->angular_velocity[idx]); offset += 16; } + offset += 4; // void4 + canardEncodeScalar(buffer, offset, 4, 0); + offset += 4; // covariance len + for (uint_fast8_t idx = 0; idx < 2; idx++) { canardEncodeFloat16(buffer, offset, obj->linear_acceleration[idx]); offset += 16; diff --git a/include/serialization/uavcan/equipment/hardpoint/Status.h b/include/serialization/uavcan/equipment/hardpoint/Status.h index 8fda326..96c4fd5 100644 --- a/include/serialization/uavcan/equipment/hardpoint/Status.h +++ b/include/serialization/uavcan/equipment/hardpoint/Status.h @@ -11,7 +11,7 @@ #define UAVCAN_EQUIPMENT_HARDPOINT_STATUS_ID 1071 #define UAVCAN_EQUIPMENT_HARDPOINT_STATUS_SIGNATURE 0x624a519d42553d82 -#define UAVCAN_EQUIPMENT_HARDPOINT_STATUS_MESSAGE_SIZE 8 +#define UAVCAN_EQUIPMENT_HARDPOINT_STATUS_MESSAGE_SIZE 7 typedef struct { uint8_t hardpoint_id; @@ -53,9 +53,8 @@ static inline int8_t dronecan_equipment_hardpoint_status_serialize( canardEncodeScalar(buffer, 0, 8, &obj->hardpoint_id); canardEncodeFloat16(buffer, 8, obj->payload_weight); - canardEncodeFloat16(buffer, 24, obj->payload_weight); - canardEncodeFloat16(buffer, 40, obj->payload_weight_variance); - canardEncodeScalar(buffer, 56, 16, &obj->status); + canardEncodeFloat16(buffer, 24, obj->payload_weight_variance); + canardEncodeScalar(buffer, 40, 16, &obj->status); return 0; }