Browse Source

Merge pull request #2404 from PX4/master_uavcan_memory

Compile Time - Conditional inclusion of the Node Allocation and FW Server
sbg
Lorenz Meier 10 years ago
parent
commit
f56990a9ec
  1. 25
      src/modules/uavcan/uavcan_main.cpp
  2. 21
      src/modules/uavcan/uavcan_main.hpp

25
src/modules/uavcan/uavcan_main.cpp

@ -53,14 +53,15 @@
#include <drivers/drv_pwm_output.h> #include <drivers/drv_pwm_output.h>
#include "uavcan_main.hpp" #include "uavcan_main.hpp"
#include <uavcan_posix/dynamic_node_id_server/file_event_tracer.hpp>
#include <uavcan_posix/dynamic_node_id_server/file_storage_backend.hpp>
#include <uavcan_posix/firmware_version_checker.hpp>
#if defined(USE_FW_NODE_SERVER)
# include <uavcan_posix/dynamic_node_id_server/file_event_tracer.hpp>
# include <uavcan_posix/dynamic_node_id_server/file_storage_backend.hpp>
# include <uavcan_posix/firmware_version_checker.hpp>
//todo:The Inclusion of file_server_backend is killing //todo:The Inclusion of file_server_backend is killing
// #include <sys/types.h> and leaving OK undefined // #include <sys/types.h> and leaving OK undefined
#define OK 0 # define OK 0
#endif
/** /**
* @file uavcan_main.cpp * @file uavcan_main.cpp
@ -75,20 +76,26 @@
* UavcanNode * UavcanNode
*/ */
UavcanNode *UavcanNode::_instance; UavcanNode *UavcanNode::_instance;
#if defined(USE_FW_NODE_SERVER)
uavcan::dynamic_node_id_server::CentralizedServer *UavcanNode::_server_instance; uavcan::dynamic_node_id_server::CentralizedServer *UavcanNode::_server_instance;
uavcan_posix::dynamic_node_id_server::FileEventTracer tracer; uavcan_posix::dynamic_node_id_server::FileEventTracer tracer;
uavcan_posix::dynamic_node_id_server::FileStorageBackend storage_backend; uavcan_posix::dynamic_node_id_server::FileStorageBackend storage_backend;
uavcan_posix::FirmwareVersionChecker fw_version_checker; uavcan_posix::FirmwareVersionChecker fw_version_checker;
#endif
UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &system_clock) : UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &system_clock) :
CDev("uavcan", UAVCAN_DEVICE_PATH), CDev("uavcan", UAVCAN_DEVICE_PATH),
_node(can_driver, system_clock), _node(can_driver, system_clock),
_node_mutex(), _node_mutex(),
#if !defined(USE_FW_NODE_SERVER)
_esc_controller(_node)
#else
_esc_controller(_node), _esc_controller(_node),
_fileserver_backend(_node), _fileserver_backend(_node),
_node_info_retriever(_node), _node_info_retriever(_node),
_fw_upgrade_trigger(_node, fw_version_checker), _fw_upgrade_trigger(_node, fw_version_checker),
_fw_server(_node, _fileserver_backend) _fw_server(_node, _fileserver_backend)
#endif
{ {
_control_topics[0] = ORB_ID(actuator_controls_0); _control_topics[0] = ORB_ID(actuator_controls_0);
_control_topics[1] = ORB_ID(actuator_controls_1); _control_topics[1] = ORB_ID(actuator_controls_1);
@ -154,7 +161,10 @@ UavcanNode::~UavcanNode()
perf_free(_perfcnt_node_spin_elapsed); perf_free(_perfcnt_node_spin_elapsed);
perf_free(_perfcnt_esc_mixer_output_elapsed); perf_free(_perfcnt_esc_mixer_output_elapsed);
perf_free(_perfcnt_esc_mixer_total_elapsed); perf_free(_perfcnt_esc_mixer_total_elapsed);
#if defined(USE_FW_NODE_SERVER)
delete(_server_instance); delete(_server_instance);
#endif
} }
@ -305,7 +315,7 @@ int UavcanNode::init(uavcan::NodeID node_id)
br = br->getSibling(); br = br->getSibling();
} }
#if defined(USE_FW_NODE_SERVER)
/* Initialize the fw version checker. /* Initialize the fw version checker.
* giving it it's path * giving it it's path
*/ */
@ -373,6 +383,7 @@ int UavcanNode::init(uavcan::NodeID node_id)
return ret; return ret;
} }
#endif
/* Start the Node */ /* Start the Node */
return _node.start(); return _node.start();

21
src/modules/uavcan/uavcan_main.hpp

@ -34,6 +34,7 @@
#pragma once #pragma once
#include <px4_config.h> #include <px4_config.h>
#include <uavcan_stm32/uavcan_stm32.hpp> #include <uavcan_stm32/uavcan_stm32.hpp>
#include <drivers/device/device.h> #include <drivers/device/device.h>
#include <systemlib/perf_counter.h> #include <systemlib/perf_counter.h>
@ -47,13 +48,13 @@
#include "actuators/esc.hpp" #include "actuators/esc.hpp"
#include "sensors/sensor_bridge.hpp" #include "sensors/sensor_bridge.hpp"
#if defined(USE_FW_NODE_SERVER)
#include <uavcan/protocol/dynamic_node_id_server/centralized.hpp> # include <uavcan/protocol/dynamic_node_id_server/centralized.hpp>
#include <uavcan/protocol/node_info_retriever.hpp> # include <uavcan/protocol/node_info_retriever.hpp>
#include <uavcan_posix/basic_file_server_backend.hpp> # include <uavcan_posix/basic_file_server_backend.hpp>
#include <uavcan/protocol/firmware_update_trigger.hpp> # include <uavcan/protocol/firmware_update_trigger.hpp>
#include <uavcan/protocol/file_server.hpp> # include <uavcan/protocol/file_server.hpp>
#endif
/** /**
* @file uavcan_main.hpp * @file uavcan_main.hpp
@ -147,7 +148,6 @@ private:
unsigned _output_count = 0; ///< number of actuators currently available unsigned _output_count = 0; ///< number of actuators currently available
static UavcanNode *_instance; ///< singleton pointer static UavcanNode *_instance; ///< singleton pointer
static uavcan::dynamic_node_id_server::CentralizedServer *_server_instance; ///< server singleton pointer
Node _node; ///< library instance Node _node; ///< library instance
pthread_mutex_t _node_mutex; pthread_mutex_t _node_mutex;
@ -155,11 +155,14 @@ private:
UavcanEscController _esc_controller; UavcanEscController _esc_controller;
#if defined(USE_FW_NODE_SERVER)
static uavcan::dynamic_node_id_server::CentralizedServer *_server_instance; ///< server singleton pointer
uavcan_posix::BasicFileSeverBackend _fileserver_backend; uavcan_posix::BasicFileSeverBackend _fileserver_backend;
uavcan::NodeInfoRetriever _node_info_retriever; uavcan::NodeInfoRetriever _node_info_retriever;
uavcan::FirmwareUpdateTrigger _fw_upgrade_trigger; uavcan::FirmwareUpdateTrigger _fw_upgrade_trigger;
uavcan::BasicFileServer _fw_server; uavcan::BasicFileServer _fw_server;
#endif
List<IUavcanSensorBridge *> _sensor_bridges; ///< List of active sensor bridges List<IUavcanSensorBridge *> _sensor_bridges; ///< List of active sensor bridges
MixerGroup *_mixers = nullptr; MixerGroup *_mixers = nullptr;

Loading…
Cancel
Save