Moved UOrbPubliction/Subscription to uORB::Publication/Subscription

This commit is contained in:
James Goppert
2014-03-20 12:12:42 -04:00
parent 2c32cdf16b
commit fd6590cfa7
14 changed files with 81 additions and 83 deletions
+2 -2
View File
@@ -52,7 +52,7 @@
#include <arch/board/board.h> #include <arch/board/board.h>
#include <mavlink/mavlink_log.h> #include <mavlink/mavlink_log.h>
#include <controllib/uorb/UOrbPublication.hpp> #include </uORB/Publication.hpp>
#include <uORB/topics/debug_key_value.h> #include <uORB/topics/debug_key_value.h>
#include <drivers/drv_hrt.h> #include <drivers/drv_hrt.h>
@@ -587,7 +587,7 @@ int md25Sine(const char *deviceName, uint8_t bus, uint8_t address, float amplitu
float prev_revolution = md25.getRevolutions1(); float prev_revolution = md25.getRevolutions1();
// debug publication // debug publication
control::UOrbPublication<debug_key_value_s> debug_msg(NULL, uORB::Publication<debug_key_value_s> debug_msg(NULL,
ORB_ID(debug_key_value)); ORB_ID(debug_key_value));
// sine wave for motor 1 // sine wave for motor 1
+2 -2
View File
@@ -46,7 +46,7 @@
#include <poll.h> #include <poll.h>
#include <stdio.h> #include <stdio.h>
#include <controllib/uorb/UOrbSubscription.hpp> #include <uORB/Subscription.hpp>
#include <uORB/topics/actuator_controls.h> #include <uORB/topics/actuator_controls.h>
#include <drivers/device/i2c.h> #include <drivers/device/i2c.h>
@@ -270,7 +270,7 @@ private:
struct pollfd _controlPoll; struct pollfd _controlPoll;
/** actuator controls subscription */ /** actuator controls subscription */
control::UOrbSubscription<actuator_controls_s> _actuators; uORB::Subscription<actuator_controls_s> _actuators;
// local copy of data from i2c device // local copy of data from i2c device
uint8_t _version; uint8_t _version;
+1 -1
View File
@@ -53,7 +53,7 @@
#include <arch/board/board.h> #include <arch/board/board.h>
#include <mavlink/mavlink_log.h> #include <mavlink/mavlink_log.h>
#include <controllib/uorb/UOrbPublication.hpp> #include <uORB/Publication.hpp>
#include <uORB/topics/debug_key_value.h> #include <uORB/topics/debug_key_value.h>
#include <drivers/drv_hrt.h> #include <drivers/drv_hrt.h>
+2 -2
View File
@@ -45,7 +45,7 @@
#include <poll.h> #include <poll.h>
#include <stdio.h> #include <stdio.h>
#include <controllib/uorb/UOrbSubscription.hpp> #include <uORB/Subscription.hpp>
#include <uORB/topics/actuator_controls.h> #include <uORB/topics/actuator_controls.h>
#include <drivers/device/i2c.h> #include <drivers/device/i2c.h>
@@ -169,7 +169,7 @@ private:
struct pollfd _controlPoll; struct pollfd _controlPoll;
/** actuator controls subscription */ /** actuator controls subscription */
control::UOrbSubscription<actuator_controls_s> _actuators; uORB::Subscription<actuator_controls_s> _actuators;
// private data // private data
float _motor1Position; float _motor1Position;
@@ -47,8 +47,8 @@
#include <mathlib/mathlib.h> #include <mathlib/mathlib.h>
#include <controllib/blocks.hpp> #include <controllib/blocks.hpp>
#include <controllib/block/BlockParam.hpp> #include <controllib/block/BlockParam.hpp>
#include <controllib/uorb/UOrbSubscription.hpp> #include <uORB/Subscription.hpp>
#include <controllib/uorb/UOrbPublication.hpp> #include <uORB/Publication.hpp>
#include <uORB/topics/vehicle_attitude.h> #include <uORB/topics/vehicle_attitude.h>
#include <uORB/topics/vehicle_global_position.h> #include <uORB/topics/vehicle_global_position.h>
@@ -138,13 +138,13 @@ protected:
math::Matrix<3,3> C_nb; /**< direction cosine matrix from body to nav frame */ math::Matrix<3,3> C_nb; /**< direction cosine matrix from body to nav frame */
math::Quaternion q; /**< quaternion from body to nav frame */ math::Quaternion q; /**< quaternion from body to nav frame */
// subscriptions // subscriptions
control::UOrbSubscription<sensor_combined_s> _sensors; /**< sensors sub. */ uORB::Subscription<sensor_combined_s> _sensors; /**< sensors sub. */
control::UOrbSubscription<vehicle_gps_position_s> _gps; /**< gps sub. */ uORB::Subscription<vehicle_gps_position_s> _gps; /**< gps sub. */
control::UOrbSubscription<parameter_update_s> _param_update; /**< parameter update sub. */ uORB::Subscription<parameter_update_s> _param_update; /**< parameter update sub. */
// publications // publications
control::UOrbPublication<vehicle_global_position_s> _pos; /**< position pub. */ uORB::Publication<vehicle_global_position_s> _pos; /**< position pub. */
control::UOrbPublication<vehicle_local_position_s> _localPos; /**< local position pub. */ uORB::Publication<vehicle_local_position_s> _localPos; /**< local position pub. */
control::UOrbPublication<vehicle_attitude_s> _att; /**< attitude pub. */ uORB::Publication<vehicle_attitude_s> _att; /**< attitude pub. */
// time stamps // time stamps
uint64_t _pubTimeStamp; /**< output data publication time stamp */ uint64_t _pubTimeStamp; /**< output data publication time stamp */
uint64_t _predictTimeStamp; /**< prediction time stamp */ uint64_t _predictTimeStamp; /**< prediction time stamp */
+4 -4
View File
@@ -43,8 +43,8 @@
#include "Block.hpp" #include "Block.hpp"
#include "BlockParam.hpp" #include "BlockParam.hpp"
#include "../uorb/UOrbSubscription.hpp" #include "uORB/Subscription.hpp"
#include "../uorb/UOrbPublication.hpp" #include "uORB/Publication.hpp"
namespace control namespace control
{ {
@@ -100,7 +100,7 @@ void Block::updateParams()
void Block::updateSubscriptions() void Block::updateSubscriptions()
{ {
UOrbSubscriptionBase *sub = getSubscriptions().getHead(); uORB::SubscriptionBase *sub = getSubscriptions().getHead();
int count = 0; int count = 0;
while (sub != NULL) { while (sub != NULL) {
@@ -118,7 +118,7 @@ void Block::updateSubscriptions()
void Block::updatePublications() void Block::updatePublications()
{ {
UOrbPublicationBase *pub = getPublications().getHead(); uORB::PublicationBase *pub = getPublications().getHead();
int count = 0; int count = 0;
while (pub != NULL) { while (pub != NULL) {
+10 -6
View File
@@ -44,6 +44,12 @@
#include "List.hpp" #include "List.hpp"
// forward declaration
namespace uORB {
class SubscriptionBase;
class PublicationBase;
}
namespace control namespace control
{ {
@@ -55,8 +61,6 @@ static const uint8_t blockNameLengthMax = 80;
// forward declaration // forward declaration
class BlockParamBase; class BlockParamBase;
class UOrbSubscriptionBase;
class UOrbPublicationBase;
class SuperBlock; class SuperBlock;
/** /**
@@ -79,15 +83,15 @@ public:
protected: protected:
// accessors // accessors
SuperBlock *getParent() { return _parent; } SuperBlock *getParent() { return _parent; }
List<UOrbSubscriptionBase *> & getSubscriptions() { return _subscriptions; } List<uORB::SubscriptionBase *> & getSubscriptions() { return _subscriptions; }
List<UOrbPublicationBase *> & getPublications() { return _publications; } List<uORB::PublicationBase *> & getPublications() { return _publications; }
List<BlockParamBase *> & getParams() { return _params; } List<BlockParamBase *> & getParams() { return _params; }
// attributes // attributes
const char *_name; const char *_name;
SuperBlock *_parent; SuperBlock *_parent;
float _dt; float _dt;
List<UOrbSubscriptionBase *> _subscriptions; List<uORB::SubscriptionBase *> _subscriptions;
List<UOrbPublicationBase *> _publications; List<uORB::PublicationBase *> _publications;
List<BlockParamBase *> _params; List<BlockParamBase *> _params;
}; };
-2
View File
@@ -37,7 +37,5 @@
SRCS = test_params.c \ SRCS = test_params.c \
block/Block.cpp \ block/Block.cpp \
block/BlockParam.cpp \ block/BlockParam.cpp \
uorb/UOrbPublication.cpp \
uorb/UOrbSubscription.cpp \
uorb/blocks.cpp \ uorb/blocks.cpp \
blocks.cpp blocks.cpp
+11 -11
View File
@@ -62,8 +62,8 @@ extern "C" {
} }
#include "../blocks.hpp" #include "../blocks.hpp"
#include "UOrbSubscription.hpp" #include <uORB/Subscription.hpp>
#include "UOrbPublication.hpp" #include <uORB/Publication.hpp>
namespace control namespace control
{ {
@@ -94,16 +94,16 @@ class __EXPORT BlockUorbEnabledAutopilot : public SuperBlock
{ {
protected: protected:
// subscriptions // subscriptions
UOrbSubscription<vehicle_attitude_s> _att; uORB::Subscription<vehicle_attitude_s> _att;
UOrbSubscription<vehicle_attitude_setpoint_s> _attCmd; uORB::Subscription<vehicle_attitude_setpoint_s> _attCmd;
UOrbSubscription<vehicle_rates_setpoint_s> _ratesCmd; uORB::Subscription<vehicle_rates_setpoint_s> _ratesCmd;
UOrbSubscription<vehicle_global_position_s> _pos; uORB::Subscription<vehicle_global_position_s> _pos;
UOrbSubscription<position_setpoint_triplet_s> _missionCmd; uORB::Subscription<position_setpoint_triplet_s> _missionCmd;
UOrbSubscription<manual_control_setpoint_s> _manual; uORB::Subscription<manual_control_setpoint_s> _manual;
UOrbSubscription<vehicle_status_s> _status; uORB::Subscription<vehicle_status_s> _status;
UOrbSubscription<parameter_update_s> _param_update; uORB::Subscription<parameter_update_s> _param_update;
// publications // publications
UOrbPublication<actuator_controls_s> _actuators; uORB::Publication<actuator_controls_s> _actuators;
public: public:
BlockUorbEnabledAutopilot(SuperBlock *parent, const char *name); BlockUorbEnabledAutopilot(SuperBlock *parent, const char *name);
virtual ~BlockUorbEnabledAutopilot(); virtual ~BlockUorbEnabledAutopilot();
@@ -32,8 +32,8 @@
****************************************************************************/ ****************************************************************************/
/** /**
* @file UOrbPublication.cpp * @file Publication.cpp
* *
*/ */
#include "UOrbPublication.hpp" #include "Publication.hpp"
@@ -32,32 +32,29 @@
****************************************************************************/ ****************************************************************************/
/** /**
* @file UOrbPublication.h * @file Publication.h
* *
*/ */
#pragma once #pragma once
#include <uORB/uORB.h> #include <uORB/uORB.h>
#include "../block/Block.hpp" #include <controllib/block/List.hpp>
#include "../block/List.hpp"
namespace control namespace uORB
{ {
class Block;
/** /**
* Base publication warapper class, used in list traversal * Base publication warapper class, used in list traversal
* of various publications. * of various publications.
*/ */
class __EXPORT UOrbPublicationBase : public ListNode<control::UOrbPublicationBase *> class __EXPORT PublicationBase : public ListNode<uORB::PublicationBase *>
{ {
public: public:
UOrbPublicationBase( PublicationBase(
List<UOrbPublicationBase *> * list, List<PublicationBase *> * list,
const struct orb_metadata *meta) : const struct orb_metadata *meta) :
_meta(meta), _meta(meta),
_handle(-1) { _handle(-1) {
@@ -71,7 +68,7 @@ public:
} }
} }
virtual void *getDataVoidPtr() = 0; virtual void *getDataVoidPtr() = 0;
virtual ~UOrbPublicationBase() { virtual ~PublicationBase() {
orb_unsubscribe(getHandle()); orb_unsubscribe(getHandle());
} }
const struct orb_metadata *getMeta() { return _meta; } const struct orb_metadata *getMeta() { return _meta; }
@@ -83,12 +80,12 @@ protected:
}; };
/** /**
* UOrb Publication wrapper class * Publication wrapper class
*/ */
template<class T> template<class T>
class UOrbPublication : class Publication :
public T, // this must be first! public T, // this must be first!
public UOrbPublicationBase public PublicationBase
{ {
public: public:
/** /**
@@ -98,13 +95,13 @@ public:
* @param meta The uORB metadata (usually from the ORB_ID() macro) * @param meta The uORB metadata (usually from the ORB_ID() macro)
* for the topic. * for the topic.
*/ */
UOrbPublication( Publication(
List<UOrbPublicationBase *> * list, List<PublicationBase *> * list,
const struct orb_metadata *meta) : const struct orb_metadata *meta) :
T(), // initialize data structure to zero T(), // initialize data structure to zero
UOrbPublicationBase(list, meta) { PublicationBase(list, meta) {
} }
virtual ~UOrbPublication() {} virtual ~Publication() {}
/* /*
* XXX * XXX
* This function gets the T struct, assuming * This function gets the T struct, assuming
@@ -115,4 +112,4 @@ public:
void *getDataVoidPtr() { return (void *)(T *)(this); } void *getDataVoidPtr() { return (void *)(T *)(this); }
}; };
} // namespace control } // namespace uORB
@@ -32,20 +32,20 @@
****************************************************************************/ ****************************************************************************/
/** /**
* @file UOrbSubscription.cpp * @file Subscription.cpp
* *
*/ */
#include "UOrbSubscription.hpp" #include "Subscription.hpp"
namespace control namespace uORB
{ {
bool __EXPORT UOrbSubscriptionBase::updated() bool __EXPORT SubscriptionBase::updated()
{ {
bool isUpdated = false; bool isUpdated = false;
orb_check(_handle, &isUpdated); orb_check(_handle, &isUpdated);
return isUpdated; return isUpdated;
} }
} // namespace control } // namespace uORB
@@ -32,28 +32,25 @@
****************************************************************************/ ****************************************************************************/
/** /**
* @file UOrbSubscription.h * @file Subscription.h
* *
*/ */
#pragma once #pragma once
#include <uORB/uORB.h> #include <uORB/uORB.h>
#include "../block/Block.hpp" #include <controllib/block/List.hpp>
#include "../block/List.hpp"
namespace control namespace uORB
{ {
class Block;
/** /**
* Base subscription warapper class, used in list traversal * Base subscription warapper class, used in list traversal
* of various subscriptions. * of various subscriptions.
*/ */
class __EXPORT UOrbSubscriptionBase : class __EXPORT SubscriptionBase :
public ListNode<control::UOrbSubscriptionBase *> public ListNode<SubscriptionBase *>
{ {
public: public:
// methods // methods
@@ -64,8 +61,8 @@ public:
* @param meta The uORB metadata (usually from the ORB_ID() macro) * @param meta The uORB metadata (usually from the ORB_ID() macro)
* for the topic. * for the topic.
*/ */
UOrbSubscriptionBase( SubscriptionBase(
List<UOrbSubscriptionBase *> * list, List<SubscriptionBase *> * list,
const struct orb_metadata *meta) : const struct orb_metadata *meta) :
_meta(meta), _meta(meta),
_handle() { _handle() {
@@ -78,7 +75,7 @@ public:
} }
} }
virtual void *getDataVoidPtr() = 0; virtual void *getDataVoidPtr() = 0;
virtual ~UOrbSubscriptionBase() { virtual ~SubscriptionBase() {
orb_unsubscribe(_handle); orb_unsubscribe(_handle);
} }
// accessors // accessors
@@ -93,12 +90,12 @@ protected:
}; };
/** /**
* UOrb Subscription wrapper class * Subscription wrapper class
*/ */
template<class T> template<class T>
class __EXPORT UOrbSubscription : class __EXPORT Subscription :
public T, // this must be first! public T, // this must be first!
public UOrbSubscriptionBase public SubscriptionBase
{ {
public: public:
/** /**
@@ -109,11 +106,11 @@ public:
* for the topic. * for the topic.
* @param interval The minimum interval in milliseconds between updates * @param interval The minimum interval in milliseconds between updates
*/ */
UOrbSubscription( Subscription(
List<UOrbSubscriptionBase *> * list, List<SubscriptionBase *> * list,
const struct orb_metadata *meta, unsigned interval) : const struct orb_metadata *meta, unsigned interval) :
T(), // initialize data structure to zero T(), // initialize data structure to zero
UOrbSubscriptionBase(list, meta) { SubscriptionBase(list, meta) {
setHandle(orb_subscribe(getMeta())); setHandle(orb_subscribe(getMeta()));
orb_set_interval(getHandle(), interval); orb_set_interval(getHandle(), interval);
} }
@@ -121,7 +118,7 @@ public:
/** /**
* Deconstructor * Deconstructor
*/ */
virtual ~UOrbSubscription() {} virtual ~Subscription() {}
/* /*
* XXX * XXX
@@ -134,4 +131,4 @@ public:
T getData() { return T(*this); } T getData() { return T(*this); }
}; };
} // namespace control } // namespace uORB
+3 -1
View File
@@ -41,4 +41,6 @@ MODULE_COMMAND = uorb
MODULE_STACKSIZE = 4096 MODULE_STACKSIZE = 4096
SRCS = uORB.cpp \ SRCS = uORB.cpp \
objects_common.cpp objects_common.cpp \
Publication.cpp \
Subscription.cpp