Browse Source

UAVCAN: Move to semaphore abstraction

sbg
Lorenz Meier 10 years ago
parent
commit
f37f8fb977
  1. 14
      src/modules/uavcan/uavcan_main.cpp
  2. 2
      src/modules/uavcan/uavcan_main.hpp
  3. 2
      src/modules/uavcan/uavcan_virtual_can_driver.hpp

14
src/modules/uavcan/uavcan_main.cpp

@ -94,7 +94,7 @@ UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &sys @@ -94,7 +94,7 @@ UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &sys
std::abort();
}
res = sem_init(&_server_command_sem, 0 , 0);
res = px4_sem_init(&_server_command_sem, 0 , 0);
if (res < 0) {
std::abort();
@ -158,7 +158,7 @@ UavcanNode::~UavcanNode() @@ -158,7 +158,7 @@ UavcanNode::~UavcanNode()
perf_free(_perfcnt_esc_mixer_output_elapsed);
perf_free(_perfcnt_esc_mixer_total_elapsed);
pthread_mutex_destroy(&_node_mutex);
sem_destroy(&_server_command_sem);
px4_sem_destroy(&_server_command_sem);
}
@ -208,7 +208,7 @@ int UavcanNode::start_fw_server() @@ -208,7 +208,7 @@ int UavcanNode::start_fw_server()
}
_fw_server_action = None;
sem_post(&_server_command_sem);
px4_sem_post(&_server_command_sem);
return rv;
}
@ -224,7 +224,7 @@ int UavcanNode::request_fw_check() @@ -224,7 +224,7 @@ int UavcanNode::request_fw_check()
}
_fw_server_action = None;
sem_post(&_server_command_sem);
px4_sem_post(&_server_command_sem);
return rv;
}
@ -248,7 +248,7 @@ int UavcanNode::stop_fw_server() @@ -248,7 +248,7 @@ int UavcanNode::stop_fw_server()
}
_fw_server_action = None;
sem_post(&_server_command_sem);
px4_sem_post(&_server_command_sem);
return rv;
}
@ -263,7 +263,7 @@ int UavcanNode::fw_server(eServerAction action) @@ -263,7 +263,7 @@ int UavcanNode::fw_server(eServerAction action)
case CheckFW:
if (_fw_server_action == None) {
_fw_server_action = action;
sem_wait(&_server_command_sem);
px4_sem_wait(&_server_command_sem);
rv = _fw_server_status;
}
@ -678,7 +678,7 @@ UavcanNode::control_callback(uintptr_t handle, uint8_t control_group, uint8_t co @@ -678,7 +678,7 @@ UavcanNode::control_callback(uintptr_t handle, uint8_t control_group, uint8_t co
int
UavcanNode::teardown()
{
sem_post(&_server_command_sem);
px4_sem_post(&_server_command_sem);
for (unsigned i = 0; i < actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS; i++) {
if (_control_subs[i] > 0) {

2
src/modules/uavcan/uavcan_main.hpp

@ -148,7 +148,7 @@ private: @@ -148,7 +148,7 @@ private:
Node _node; ///< library instance
pthread_mutex_t _node_mutex;
sem_t _server_command_sem;
px4_sem_t _server_command_sem;
UavcanEscController _esc_controller;
List<IUavcanSensorBridge *> _sensor_bridges; ///< List of active sensor bridges

2
src/modules/uavcan/uavcan_virtual_can_driver.hpp

@ -395,7 +395,7 @@ class VirtualCanDriver : public uavcan::ICanDriver, @@ -395,7 +395,7 @@ class VirtualCanDriver : public uavcan::ICanDriver,
int rv = sem_getvalue(&sem, &count);
if (rv > 0 && count <= 0) {
sem_post(&sem);
px4_sem_post(&sem);
}
}
};

Loading…
Cancel
Save