Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/serialization/publisher.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class DronecanPeriodicPublisher : public DronecanPublisher<MessageType> {
public:
DronecanPeriodicPublisher(float frequency) :
DronecanPublisher<MessageType>(),
PUB_PERIOD_MS(static_cast<uint32_t>(1000.0f / std::clamp(frequency, 0.001f, 100.0f))) {};
PUB_PERIOD_MS(static_cast<uint32_t>(1000.0f / std::clamp(frequency, 0.001f, 1000.0f))) {};

inline void spinOnce() {
auto crnt_time_ms = platformSpecificGetTimeMs();
Expand Down
3 changes: 1 addition & 2 deletions include/serialization/subscriber.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include "uavcan/equipment/safety/ArmingStatus.h"
#include "uavcan/equipment/hardpoint/Command.h"


template <typename MessageType>
struct DronecanSubscriberTraits;

Expand All @@ -46,7 +45,7 @@ DEFINE_SUBSCRIBER_TRAITS(BeepCommand_t,
DEFINE_SUBSCRIBER_TRAITS(LightsCommand_t,
uavcanSubscribeIndicationLightsCommand,
dronecan_equipment_indication_lights_command_deserialize)
DEFINE_SUBSCRIBER_TRAITS(ArmingStatus,
DEFINE_SUBSCRIBER_TRAITS(SafetyArmingStatus,
uavcanSubscribeArmingStatus,
dronecan_equipment_safety_arming_status_deserialize)
DEFINE_SUBSCRIBER_TRAITS(HardpointCommand,
Expand Down
4 changes: 2 additions & 2 deletions include/serialization/uavcan/equipment/safety/ArmingStatus.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#define UAVCAN_EQUIPMENT_SAFETY_ARMING_STATUS_MESSAGE_SIZE 1
#define UAVCAN_EQUIPMENT_SAFETY_ARMING_STATUS UAVCAN_EXPAND(UAVCAN_EQUIPMENT_SAFETY_ARMING_STATUS)

enum class ArmingStatus: uint8_t {
enum class SafetyArmingStatus: uint8_t {
STATUS_DISARMED = 0,
STATUS_FULLY_ARMED = 255,
};
Expand All @@ -29,7 +29,7 @@ extern "C" {


static inline int8_t dronecan_equipment_safety_arming_status_deserialize(
const CanardRxTransfer* transfer, ArmingStatus* obj)
const CanardRxTransfer* transfer, SafetyArmingStatus* obj)
{
canardDecodeScalar(transfer, 0, 8, false, obj);

Expand Down
4 changes: 2 additions & 2 deletions platform_specific/socketcan/can_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ int16_t canDriverInit(uint32_t can_speed, uint8_t can_driver_idx) {
int16_t canDriverReceive(CanardCANFrame* const rx_frame, uint8_t can_driver_idx) {
(void)can_driver_idx;
rx_frame->iface_id = 0;
return socketcanReceive(&socket_can_instance, rx_frame, 10);
return socketcanReceive(&socket_can_instance, rx_frame, 0);
}

int16_t canDriverTransmit(const CanardCANFrame* const tx_frame, uint8_t can_driver_idx) {
(void)can_driver_idx;
return socketcanTransmit(&socket_can_instance, tx_frame, 10);
return socketcanTransmit(&socket_can_instance, tx_frame, 0);
}

uint64_t canDriverGetErrorCount() {
Expand Down
14 changes: 9 additions & 5 deletions src/dronecan.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,12 +314,16 @@ static uint8_t uavcanProcessSending() {

static bool uavcanProcessReceiving(uint32_t crnt_time_ms) {
CanardCANFrame rx_frame;
int16_t res = canDriverReceive(&rx_frame, CAN_DRIVER_FIRST);
if (res) {
uint64_t crnt_time_us = crnt_time_ms * 1000;
canardHandleRxFrame(&g_canard, &rx_frame, crnt_time_us);
return true;
for (size_t idx = 0; idx < 10; idx++) {
int16_t res = canDriverReceive(&rx_frame, CAN_DRIVER_FIRST);
if (res) {
uint64_t crnt_time_us = crnt_time_ms * 1000;
canardHandleRxFrame(&g_canard, &rx_frame, crnt_time_us);
} else {
break;
}
}

return false;
}

Expand Down