Browse Source

fix timer in hardpoint controller

sbg
blah 9 years ago committed by Lorenz Meier
parent
commit
ecf2b56013
  1. 15
      src/modules/uavcan/actuators/hardpoint.cpp
  2. 2
      src/modules/uavcan/actuators/hardpoint.hpp

15
src/modules/uavcan/actuators/hardpoint.cpp

@ -74,14 +74,17 @@ void UavcanHardpointController::set_command(uint8_t hardpoint_id, uint16_t comma @@ -74,14 +74,17 @@ void UavcanHardpointController::set_command(uint8_t hardpoint_id, uint16_t comma
* Publish the command message to the bus
*/
(void)_uavcan_pub_raw_cmd.broadcast(_cmd);
/*
* Start the periodic update timer after a command is set
*/
if (!_timer.isRunning())
{
_timer.startPeriodic(uavcan::MonotonicDuration::fromMSec(1000 / MAX_RATE_HZ));
}
}
void UavcanHardpointController::periodic_update()
void UavcanHardpointController::periodic_update(const uavcan::TimerEvent &)
{
//lets not broadcast if command is not set
if(_cmd_set == false){
return;
}
(void)_uavcan_pub_raw_cmd.broadcast(_cmd);
//do something
}

2
src/modules/uavcan/actuators/hardpoint.hpp

@ -66,7 +66,7 @@ private: @@ -66,7 +66,7 @@ private:
bool _cmd_set = false;
void UavcanHardpointController::periodic_update();
void periodic_update(const uavcan::TimerEvent &);
typedef uavcan::MethodBinder<UavcanHardpointController *, void (UavcanHardpointController::*)(const uavcan::TimerEvent &)>
TimerCbBinder;

Loading…
Cancel
Save