mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-20 17:23:34 +08:00
Automated style fixes in order to bring the code a little bit closer to compliance with MISRA C++ rules. No changes in logic.
This commit is contained in:
@@ -24,8 +24,11 @@ namespace uavcan
|
||||
template <typename DataSpec, typename DataStruct>
|
||||
class GenericPublisher
|
||||
{
|
||||
enum { Qos = (DataTypeKind(DataSpec::DataTypeKind) == DataTypeKindMessage) ?
|
||||
CanTxQueue::Volatile : CanTxQueue::Persistent };
|
||||
enum
|
||||
{
|
||||
Qos = (DataTypeKind(DataSpec::DataTypeKind) == DataTypeKindMessage) ?
|
||||
CanTxQueue::Volatile : CanTxQueue::Persistent
|
||||
};
|
||||
|
||||
const MonotonicDuration max_transfer_interval_; // TODO: memory usage can be reduced
|
||||
MonotonicDuration tx_timeout_;
|
||||
@@ -35,7 +38,9 @@ class GenericPublisher
|
||||
bool checkInit()
|
||||
{
|
||||
if (sender_)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
GlobalDataTypeRegistry::instance().freeze();
|
||||
|
||||
@@ -63,11 +68,15 @@ class GenericPublisher
|
||||
TransferID* tid, MonotonicTime blocking_deadline)
|
||||
{
|
||||
if (!checkInit())
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
IMarshalBuffer* const buf = getBuffer();
|
||||
if (!buf)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
{
|
||||
BitStream bitstream(*buf);
|
||||
@@ -94,9 +103,9 @@ class GenericPublisher
|
||||
public:
|
||||
GenericPublisher(INode& node, MonotonicDuration tx_timeout,
|
||||
MonotonicDuration max_transfer_interval = TransferSender::getDefaultMaxTransferInterval())
|
||||
: max_transfer_interval_(max_transfer_interval)
|
||||
, tx_timeout_(tx_timeout)
|
||||
, node_(node)
|
||||
: max_transfer_interval_(max_transfer_interval)
|
||||
, tx_timeout_(tx_timeout)
|
||||
, node_(node)
|
||||
{
|
||||
setTxTimeout(tx_timeout);
|
||||
#if UAVCAN_DEBUG
|
||||
|
||||
@@ -22,7 +22,7 @@ class ReceivedDataStructure : public DataType_
|
||||
{
|
||||
const IncomingTransfer* transfer_;
|
||||
|
||||
template <typename Ret, Ret (IncomingTransfer::*Fun)() const>
|
||||
template <typename Ret, Ret(IncomingTransfer::*Fun) () const>
|
||||
Ret safeget() const
|
||||
{
|
||||
if (!transfer_)
|
||||
@@ -60,8 +60,8 @@ template <typename Stream, typename DataType>
|
||||
static Stream& operator<<(Stream& s, const ReceivedDataStructure<DataType>& rds)
|
||||
{
|
||||
s << "# Received struct ts_m=" << rds.getMonotonicTimestamp()
|
||||
<< " ts_utc=" << rds.getUtcTimestamp()
|
||||
<< " snid=" << int(rds.getSrcNodeID().get()) << "\n";
|
||||
<< " ts_utc=" << rds.getUtcTimestamp()
|
||||
<< " snid=" << int(rds.getSrcNodeID().get()) << "\n";
|
||||
s << static_cast<const DataType&>(rds);
|
||||
return s;
|
||||
}
|
||||
@@ -98,8 +98,8 @@ class GenericSubscriber : Noncopyable
|
||||
|
||||
public:
|
||||
TransferForwarder(SelfType& obj, const DataTypeDescriptor& data_type, IAllocator& allocator)
|
||||
: TransferListenerType(data_type, allocator)
|
||||
, obj_(obj)
|
||||
: TransferListenerType(data_type, allocator)
|
||||
, obj_(obj)
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -116,7 +116,9 @@ class GenericSubscriber : Noncopyable
|
||||
bool checkInit()
|
||||
{
|
||||
if (forwarder_)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
GlobalDataTypeRegistry::instance().freeze();
|
||||
|
||||
@@ -161,7 +163,7 @@ class GenericSubscriber : Noncopyable
|
||||
}
|
||||
}
|
||||
|
||||
int genericStart(bool(Dispatcher::*registration_method)(TransferListenerBase* listener))
|
||||
int genericStart(bool (Dispatcher::*registration_method)(TransferListenerBase* listener))
|
||||
{
|
||||
stop();
|
||||
|
||||
@@ -182,8 +184,8 @@ class GenericSubscriber : Noncopyable
|
||||
|
||||
protected:
|
||||
explicit GenericSubscriber(INode& node)
|
||||
: node_(node)
|
||||
, failure_count_(0)
|
||||
: node_(node)
|
||||
, failure_count_(0)
|
||||
{ }
|
||||
|
||||
virtual ~GenericSubscriber() { stop(); }
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <uavcan/fatal_error.hpp>
|
||||
#include <uavcan/linked_list.hpp>
|
||||
#if UAVCAN_DEBUG
|
||||
#include <uavcan/debug.hpp>
|
||||
# include <uavcan/debug.hpp>
|
||||
#endif
|
||||
|
||||
namespace uavcan
|
||||
@@ -30,7 +30,7 @@ class GlobalDataTypeRegistry : Noncopyable
|
||||
Entry() { }
|
||||
|
||||
Entry(DataTypeKind kind, DataTypeID id, const DataTypeSignature& signature, const char* name)
|
||||
: descriptor(kind, id, signature, name)
|
||||
: descriptor(kind, id, signature, name)
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -75,19 +75,25 @@ public:
|
||||
RegistResult regist(DataTypeID id)
|
||||
{
|
||||
if (isFrozen())
|
||||
{
|
||||
return RegistResultFrozen;
|
||||
}
|
||||
|
||||
static Entry entry;
|
||||
{
|
||||
const RegistResult remove_res = remove(&entry);
|
||||
if (remove_res != RegistResultOk)
|
||||
{
|
||||
return remove_res;
|
||||
}
|
||||
}
|
||||
entry = Entry(DataTypeKind(Type::DataTypeKind), id, Type::getDataTypeSignature(), Type::getDataTypeFullName());
|
||||
{
|
||||
const RegistResult remove_res = remove(&entry);
|
||||
if (remove_res != RegistResultOk)
|
||||
{
|
||||
return remove_res;
|
||||
}
|
||||
}
|
||||
return registImpl(&entry);
|
||||
}
|
||||
@@ -114,9 +120,13 @@ public:
|
||||
int(frozen_), getNumMessageTypes(), getNumServiceTypes());
|
||||
frozen_ = false;
|
||||
while (msgs_.get())
|
||||
{
|
||||
msgs_.remove(msgs_.get());
|
||||
}
|
||||
while (srvs_.get())
|
||||
{
|
||||
srvs_.remove(srvs_.get());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
};
|
||||
@@ -131,7 +141,9 @@ struct DefaultDataTypeRegistrator
|
||||
GlobalDataTypeRegistry::instance().regist<Type>(Type::DefaultDataTypeID);
|
||||
|
||||
if (res != GlobalDataTypeRegistry::RegistResultOk)
|
||||
{
|
||||
handleFatalError("Type registration failed");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -59,7 +59,9 @@ public:
|
||||
IMarshalBuffer* getBuffer(unsigned int size)
|
||||
{
|
||||
if (size > MaxSize)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
buffer_.reset();
|
||||
return &buffer_;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
|
||||
explicit Publisher(INode& node, MonotonicDuration tx_timeout = getDefaultTxTimeout(),
|
||||
MonotonicDuration max_transfer_interval = TransferSender::getDefaultMaxTransferInterval())
|
||||
: BaseType(node, tx_timeout, max_transfer_interval)
|
||||
: BaseType(node, tx_timeout, max_transfer_interval)
|
||||
{
|
||||
#if UAVCAN_DEBUG
|
||||
assert(getTxTimeout() == tx_timeout); // Making sure default values are OK
|
||||
|
||||
@@ -20,7 +20,7 @@ protected:
|
||||
Scheduler& scheduler_;
|
||||
|
||||
explicit DeadlineHandler(Scheduler& scheduler)
|
||||
: scheduler_(scheduler)
|
||||
: scheduler_(scheduler)
|
||||
{ }
|
||||
|
||||
virtual ~DeadlineHandler() { stop(); }
|
||||
@@ -76,10 +76,10 @@ class Scheduler : Noncopyable
|
||||
|
||||
public:
|
||||
Scheduler(ICanDriver& can_driver, IAllocator& allocator, ISystemClock& sysclock, IOutgoingTransferRegistry& otr)
|
||||
: dispatcher_(can_driver, allocator, sysclock, otr)
|
||||
, prev_cleanup_ts_(sysclock.getMonotonic())
|
||||
, deadline_resolution_(MonotonicDuration::fromMSec(DefaultDeadlineResolutionMs))
|
||||
, cleanup_period_(MonotonicDuration::fromMSec(DefaultCleanupPeriodMs))
|
||||
: dispatcher_(can_driver, allocator, sysclock, otr)
|
||||
, prev_cleanup_ts_(sysclock.getMonotonic())
|
||||
, deadline_resolution_(MonotonicDuration::fromMSec(DefaultDeadlineResolutionMs))
|
||||
, cleanup_period_(MonotonicDuration::fromMSec(DefaultCleanupPeriodMs))
|
||||
{ }
|
||||
|
||||
int spin(MonotonicTime deadline);
|
||||
|
||||
@@ -29,9 +29,9 @@ struct ServiceCallResult
|
||||
ResponseFieldType& response; ///< Either response contents or unspecified response structure
|
||||
|
||||
ServiceCallResult(Status status, NodeID server_node_id, ResponseFieldType& response)
|
||||
: status(status)
|
||||
, server_node_id(server_node_id)
|
||||
, response(response)
|
||||
: status(status)
|
||||
, server_node_id(server_node_id)
|
||||
, response(response)
|
||||
{
|
||||
assert(server_node_id.isUnicast());
|
||||
assert(status == Success || status == ErrorTimeout);
|
||||
@@ -44,21 +44,25 @@ template <typename Stream, typename DataType>
|
||||
static Stream& operator<<(Stream& s, const ServiceCallResult<DataType>& scr)
|
||||
{
|
||||
s << "# Service call result [" << DataType::getDataTypeFullName() << "] "
|
||||
<< (scr.isSuccessful() ? "OK" : "FAILURE")
|
||||
<< " server_node_id=" << int(scr.server_node_id.get()) << "\n";
|
||||
<< (scr.isSuccessful() ? "OK" : "FAILURE")
|
||||
<< " server_node_id=" << int(scr.server_node_id.get()) << "\n";
|
||||
if (scr.isSuccessful())
|
||||
{
|
||||
s << scr.response;
|
||||
}
|
||||
else
|
||||
{
|
||||
s << "# (no data)";
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
template <typename DataType_, typename Callback = void(*)(const ServiceCallResult<DataType_>&)>
|
||||
class ServiceClient :
|
||||
public GenericSubscriber<DataType_, typename DataType_::Response,
|
||||
typename ServiceResponseTransferListenerInstantiationHelper<DataType_>::Type >,
|
||||
public DeadlineHandler
|
||||
template <typename DataType_, typename Callback = void (*)(const ServiceCallResult<DataType_>&)>
|
||||
class ServiceClient
|
||||
: public GenericSubscriber<DataType_, typename DataType_::Response,
|
||||
typename ServiceResponseTransferListenerInstantiationHelper<DataType_>::Type >
|
||||
, public DeadlineHandler
|
||||
{
|
||||
public:
|
||||
typedef DataType_ DataType;
|
||||
@@ -82,9 +86,13 @@ private:
|
||||
void invokeCallback(ServiceCallResultType& result)
|
||||
{
|
||||
if (isCallbackValid())
|
||||
{
|
||||
callback_(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleFatalError("Invalid caller callback");
|
||||
}
|
||||
}
|
||||
|
||||
void handleReceivedDataStruct(ReceivedDataStructure<ResponseType>& response)
|
||||
@@ -128,12 +136,12 @@ private:
|
||||
|
||||
public:
|
||||
explicit ServiceClient(INode& node, const Callback& callback = Callback())
|
||||
: SubscriberType(node)
|
||||
, DeadlineHandler(node.getScheduler())
|
||||
, publisher_(node, getDefaultRequestTimeout())
|
||||
, callback_(callback)
|
||||
, request_timeout_(getDefaultRequestTimeout())
|
||||
, pending_(false)
|
||||
: SubscriberType(node)
|
||||
, DeadlineHandler(node.getScheduler())
|
||||
, publisher_(node, getDefaultRequestTimeout())
|
||||
, callback_(callback)
|
||||
, request_timeout_(getDefaultRequestTimeout())
|
||||
, pending_(false)
|
||||
{
|
||||
setRequestTimeout(getDefaultRequestTimeout());
|
||||
#if UAVCAN_DEBUG
|
||||
@@ -181,7 +189,7 @@ public:
|
||||
const MonotonicTime otr_deadline =
|
||||
SubscriberType::getNode().getMonotonicTime() + TransferSender::getDefaultMaxTransferInterval();
|
||||
TransferID* const otr_tid = SubscriberType::getNode().getDispatcher().getOutgoingTransferRegistry()
|
||||
.accessOrCreate(otr_key, otr_deadline);
|
||||
.accessOrCreate(otr_key, otr_deadline);
|
||||
if (!otr_tid)
|
||||
{
|
||||
UAVCAN_TRACE("ServiceClient", "OTR access failure, dtd=%s", descr->toString().c_str());
|
||||
@@ -238,7 +246,9 @@ public:
|
||||
DeadlineHandler::stop();
|
||||
TransferListenerType* const tl = SubscriberType::getTransferListener();
|
||||
if (tl)
|
||||
{
|
||||
tl->stopAcceptingAnything();
|
||||
}
|
||||
}
|
||||
|
||||
bool isPending() const { return pending_; }
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace uavcan
|
||||
{
|
||||
|
||||
template <typename DataType_,
|
||||
typename Callback = void(*)(const ReceivedDataStructure<typename DataType_::Request>&,
|
||||
typename DataType_::Response&),
|
||||
typename Callback = void (*)(const ReceivedDataStructure<typename DataType_::Request>&,
|
||||
typename DataType_::Response&),
|
||||
unsigned int NumStaticReceivers = 2,
|
||||
unsigned int NumStaticBufs = 1>
|
||||
class ServiceServer : public GenericSubscriber<DataType_, typename DataType_::Request,
|
||||
@@ -45,10 +45,12 @@ private:
|
||||
callback_(request, response_);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleFatalError("Invalid service server callback");
|
||||
}
|
||||
|
||||
const int res = publisher_.publish(response_, TransferTypeServiceResponse, request.getSrcNodeID(),
|
||||
request.getTransferID());
|
||||
request.getTransferID());
|
||||
if (res < 0)
|
||||
{
|
||||
UAVCAN_TRACE("ServiceServer", "Response publication failure: %i", res);
|
||||
@@ -58,10 +60,10 @@ private:
|
||||
|
||||
public:
|
||||
explicit ServiceServer(INode& node)
|
||||
: SubscriberType(node)
|
||||
, publisher_(node, getDefaultTxTimeout())
|
||||
, callback_()
|
||||
, response_failure_count_(0)
|
||||
: SubscriberType(node)
|
||||
, publisher_(node, getDefaultTxTimeout())
|
||||
, callback_()
|
||||
, response_failure_count_(0)
|
||||
{
|
||||
assert(getTxTimeout() == getDefaultTxTimeout()); // Making sure it is valid
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace uavcan
|
||||
{
|
||||
|
||||
template <typename DataType_,
|
||||
typename Callback = void(*)(const ReceivedDataStructure<DataType_>&),
|
||||
typename Callback = void (*)(const ReceivedDataStructure<DataType_>&),
|
||||
unsigned int NumStaticReceivers = 2,
|
||||
unsigned int NumStaticBufs = 1>
|
||||
class Subscriber : public GenericSubscriber<DataType_, DataType_,
|
||||
@@ -28,17 +28,21 @@ class Subscriber : public GenericSubscriber<DataType_, DataType_,
|
||||
void handleReceivedDataStruct(ReceivedDataStructure<DataType_>& msg)
|
||||
{
|
||||
if (try_implicit_cast<bool>(callback_, true))
|
||||
{
|
||||
callback_(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleFatalError("Invalid subscriber callback");
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
typedef DataType_ DataType;
|
||||
|
||||
explicit Subscriber(INode& node)
|
||||
: BaseType(node)
|
||||
, callback_()
|
||||
: BaseType(node)
|
||||
, callback_()
|
||||
{
|
||||
StaticAssert<DataTypeKind(DataType::DataTypeKind) == DataTypeKindMessage>::check();
|
||||
}
|
||||
|
||||
@@ -22,8 +22,8 @@ struct TimerEvent
|
||||
MonotonicTime real_time;
|
||||
|
||||
TimerEvent(MonotonicTime scheduled_time, MonotonicTime real_time)
|
||||
: scheduled_time(scheduled_time)
|
||||
, real_time(real_time)
|
||||
: scheduled_time(scheduled_time)
|
||||
, real_time(real_time)
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -41,8 +41,8 @@ public:
|
||||
using DeadlineHandler::getScheduler;
|
||||
|
||||
explicit Timer(INode& node)
|
||||
: DeadlineHandler(node.getScheduler())
|
||||
, period_(MonotonicDuration::getInfinite())
|
||||
: DeadlineHandler(node.getScheduler())
|
||||
, period_(MonotonicDuration::getInfinite())
|
||||
{ }
|
||||
|
||||
void startOneShotWithDeadline(MonotonicTime deadline);
|
||||
@@ -63,20 +63,24 @@ class TimerEventForwarder : public Timer
|
||||
void handleTimerEvent(const TimerEvent& event)
|
||||
{
|
||||
if (try_implicit_cast<bool>(callback_, true))
|
||||
{
|
||||
callback_(event);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleFatalError("Invalid timer callback");
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
explicit TimerEventForwarder(INode& node)
|
||||
: Timer(node)
|
||||
, callback_()
|
||||
: Timer(node)
|
||||
, callback_()
|
||||
{ }
|
||||
|
||||
TimerEventForwarder(INode& node, Callback callback)
|
||||
: Timer(node)
|
||||
, callback_(callback)
|
||||
: Timer(node)
|
||||
, callback_(callback)
|
||||
{ }
|
||||
|
||||
const Callback& getCallback() const { return callback_; }
|
||||
|
||||
Reference in New Issue
Block a user