You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
6.9 KiB
227 lines
6.9 KiB
/* |
|
* UAVCAN data structure definition for libcanard. |
|
* |
|
* Autogenerated, do not edit. |
|
* |
|
* Source file: E:\000_MyProjects\UAVCAN\libcanard_zrzk_new\dsdl_compiler\zrzk\equipment\range_sensor\26110.Proximity.uavcan |
|
*/ |
|
#include "node_proximity.h" |
|
#include "canard.h" |
|
|
|
#ifndef CANARD_INTERNAL_SATURATE |
|
#define CANARD_INTERNAL_SATURATE(x, max) ( ((x) > max) ? max : ( (-(x) > max) ? (-max) : (x) ) ); |
|
#endif |
|
|
|
#ifndef CANARD_INTERNAL_SATURATE_UNSIGNED |
|
#define CANARD_INTERNAL_SATURATE_UNSIGNED(x, max) ( ((x) >= max) ? max : (x) ); |
|
#endif |
|
|
|
#if defined(__GNUC__) |
|
# define CANARD_MAYBE_UNUSED(x) x __attribute__((unused)) |
|
#else |
|
# define CANARD_MAYBE_UNUSED(x) x |
|
#endif |
|
|
|
/** |
|
* @brief zrzk_equipment_range_sensor_Proximity_encode_internal |
|
* @param source : pointer to source data struct |
|
* @param msg_buf: pointer to msg storage |
|
* @param offset: bit offset to msg storage |
|
* @param root_item: for detecting if TAO should be used |
|
* @retval returns offset |
|
*/ |
|
uint32_t zrzk_equipment_range_sensor_Proximity_encode_internal(uavcan_proximity_t* source, |
|
void* msg_buf, |
|
uint32_t offset, |
|
uint8_t CANARD_MAYBE_UNUSED(root_item)) |
|
{ |
|
canardEncodeScalar(msg_buf, offset, 8, (void*)&source->sensor_id); // 255 |
|
offset += 8; |
|
|
|
source->sensor_type = CANARD_INTERNAL_SATURATE_UNSIGNED(source->sensor_type, 31) |
|
canardEncodeScalar(msg_buf, offset, 5, (void*)&source->sensor_type); // 31 |
|
offset += 5; |
|
|
|
source->reading_type = CANARD_INTERNAL_SATURATE_UNSIGNED(source->reading_type, 7) |
|
canardEncodeScalar(msg_buf, offset, 3, (void*)&source->reading_type); // 7 |
|
offset += 3; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d0); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d45); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d90); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d135); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d180); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d225); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d270); // 65535 |
|
offset += 16; |
|
|
|
canardEncodeScalar(msg_buf, offset, 16, (void*)&source->d315); // 65535 |
|
offset += 16; |
|
|
|
return offset; |
|
} |
|
|
|
/** |
|
* @brief zrzk_equipment_range_sensor_Proximity_encode |
|
* @param source : Pointer to source data struct |
|
* @param msg_buf: Pointer to msg storage |
|
* @retval returns message length as bytes |
|
*/ |
|
uint32_t zrzk_equipment_range_sensor_Proximity_encode(uavcan_proximity_t* source, void* msg_buf) |
|
{ |
|
uint32_t offset = 0; |
|
|
|
offset = zrzk_equipment_range_sensor_Proximity_encode_internal(source, msg_buf, offset, 1); |
|
|
|
return (offset + 7 ) / 8; |
|
} |
|
|
|
/** |
|
* @brief zrzk_equipment_range_sensor_Proximity_decode_internal |
|
* @param transfer: Pointer to CanardRxTransfer transfer |
|
* @param payload_len: Payload message length |
|
* @param dest: Pointer to destination struct |
|
* @param dyn_arr_buf: NULL or Pointer to memory storage to be used for dynamic arrays |
|
* uavcan_proximity_t dyn memory will point to dyn_arr_buf memory. |
|
* NULL will ignore dynamic arrays decoding. |
|
* @param offset: Call with 0, bit offset to msg storage |
|
* @retval offset or ERROR value if < 0 |
|
*/ |
|
int32_t zrzk_equipment_range_sensor_Proximity_decode_internal( |
|
const CanardRxTransfer* transfer, |
|
uint16_t CANARD_MAYBE_UNUSED(payload_len), |
|
uavcan_proximity_t* dest, |
|
uint8_t** CANARD_MAYBE_UNUSED(dyn_arr_buf), |
|
int32_t offset) |
|
{ |
|
int32_t ret = 0; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 8, false, (void*)&dest->sensor_id); |
|
if (ret != 8) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 8; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 5, false, (void*)&dest->sensor_type); |
|
if (ret != 5) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 5; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 3, false, (void*)&dest->reading_type); |
|
if (ret != 3) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 3; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d0); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d45); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d90); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d135); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d180); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d225); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d270); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
|
|
ret = canardDecodeScalar(transfer, (uint32_t)offset, 16, false, (void*)&dest->d315); |
|
if (ret != 16) |
|
{ |
|
goto zrzk_equipment_range_sensor_Proximity_error_exit; |
|
} |
|
offset += 16; |
|
return offset; |
|
|
|
zrzk_equipment_range_sensor_Proximity_error_exit: |
|
if (ret < 0) |
|
{ |
|
return ret; |
|
} |
|
else |
|
{ |
|
return -CANARD_ERROR_INTERNAL; |
|
} |
|
} |
|
|
|
/** |
|
* @brief zrzk_equipment_range_sensor_Proximity_decode |
|
* @param transfer: Pointer to CanardRxTransfer transfer |
|
* @param payload_len: Payload message length |
|
* @param dest: Pointer to destination struct |
|
* @param dyn_arr_buf: NULL or Pointer to memory storage to be used for dynamic arrays |
|
* uavcan_proximity_t dyn memory will point to dyn_arr_buf memory. |
|
* NULL will ignore dynamic arrays decoding. |
|
* @retval offset or ERROR value if < 0 |
|
*/ |
|
int32_t zrzk_equipment_range_sensor_Proximity_decode(const CanardRxTransfer* transfer, |
|
uint16_t payload_len, |
|
uavcan_proximity_t* dest, |
|
uint8_t** dyn_arr_buf) |
|
{ |
|
const int32_t offset = 0; |
|
int32_t ret = 0; |
|
|
|
// Clear the destination struct |
|
for (uint32_t c = 0; c < sizeof(uavcan_proximity_t); c++) |
|
{ |
|
((uint8_t*)dest)[c] = 0x00; |
|
} |
|
|
|
ret = zrzk_equipment_range_sensor_Proximity_decode_internal(transfer, payload_len, dest, dyn_arr_buf, offset); |
|
|
|
return ret; |
|
}
|
|
|