mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-30 20:24:06 +08:00
Fixed template instantiation of ServiceResponseTransferListener<>
This commit is contained in:
parent
78e2351df5
commit
2dbf8cd432
@ -115,7 +115,11 @@ public:
|
||||
/**
|
||||
* This helper class does some compile-time magic on the transport layer machinery. For authorized personnel only.
|
||||
*/
|
||||
template <typename DataStruct_, unsigned NumStaticReceivers_, unsigned NumStaticBufs_>
|
||||
template <typename DataStruct_,
|
||||
unsigned NumStaticReceivers_,
|
||||
unsigned NumStaticBufs_,
|
||||
template<unsigned, unsigned, unsigned> class TransferListenerTemplate = TransferListener
|
||||
>
|
||||
class UAVCAN_EXPORT TransferListenerInstantiationHelper
|
||||
{
|
||||
enum { DataTypeMaxByteLen = BitLenToByteLen<DataStruct_::MaxBitLen>::Result };
|
||||
@ -130,7 +134,7 @@ class UAVCAN_EXPORT TransferListenerInstantiationHelper
|
||||
#endif
|
||||
|
||||
public:
|
||||
typedef TransferListener<BufferSize, NumStaticBufs, NumStaticReceivers> Type;
|
||||
typedef TransferListenerTemplate<BufferSize, NumStaticBufs, NumStaticReceivers> Type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@ namespace uavcan
|
||||
template <typename ServiceDataType>
|
||||
class UAVCAN_EXPORT ServiceResponseTransferListenerInstantiationHelper
|
||||
{
|
||||
enum { DataTypeMaxByteLen = BitLenToByteLen<ServiceDataType::Response::MaxBitLen>::Result };
|
||||
public:
|
||||
typedef ServiceResponseTransferListener<DataTypeMaxByteLen> Type;
|
||||
public: // so much templating it hurts
|
||||
typedef typename TransferListenerInstantiationHelper<typename ServiceDataType::Response,
|
||||
1, 1, ServiceResponseTransferListener>::Type Type;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@ -167,15 +167,13 @@ public:
|
||||
/**
|
||||
* This class should be derived by callers.
|
||||
*/
|
||||
template <unsigned MaxBufSize>
|
||||
template <unsigned MaxBufSize, unsigned NumStaticBufs, unsigned NumStaticReceivers>
|
||||
class UAVCAN_EXPORT ServiceResponseTransferListener
|
||||
#if UAVCAN_TINY
|
||||
: public TransferListener<MaxBufSize, 0, 0>
|
||||
#else
|
||||
: public TransferListener<MaxBufSize, 1, 1>
|
||||
#endif
|
||||
: public TransferListener<MaxBufSize, NumStaticBufs, NumStaticReceivers>
|
||||
{
|
||||
public:
|
||||
typedef TransferListener<MaxBufSize, NumStaticBufs, NumStaticReceivers> BaseType;
|
||||
|
||||
struct ExpectedResponseParams
|
||||
{
|
||||
NodeID src_node_id;
|
||||
@ -201,8 +199,6 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
typedef TransferListener<MaxBufSize, 1, 1> BaseType;
|
||||
|
||||
ExpectedResponseParams response_params_;
|
||||
|
||||
void handleFrame(const RxFrame& frame);
|
||||
@ -225,8 +221,8 @@ public:
|
||||
/*
|
||||
* ServiceResponseTransferListener<>
|
||||
*/
|
||||
template <unsigned MaxBufSize>
|
||||
void ServiceResponseTransferListener<MaxBufSize>::handleFrame(const RxFrame& frame)
|
||||
template <unsigned MaxBufSize, unsigned NumStaticBufs, unsigned NumStaticReceivers>
|
||||
void ServiceResponseTransferListener<MaxBufSize, NumStaticBufs, NumStaticReceivers>::handleFrame(const RxFrame& frame)
|
||||
{
|
||||
if (response_params_.match(frame))
|
||||
{
|
||||
@ -234,14 +230,15 @@ void ServiceResponseTransferListener<MaxBufSize>::handleFrame(const RxFrame& fra
|
||||
}
|
||||
}
|
||||
|
||||
template <unsigned MaxBufSize>
|
||||
void ServiceResponseTransferListener<MaxBufSize>::setExpectedResponseParams(const ExpectedResponseParams& erp)
|
||||
template <unsigned MaxBufSize, unsigned NumStaticBufs, unsigned NumStaticReceivers>
|
||||
void ServiceResponseTransferListener<MaxBufSize, NumStaticBufs, NumStaticReceivers>::setExpectedResponseParams(
|
||||
const ExpectedResponseParams& erp)
|
||||
{
|
||||
response_params_ = erp;
|
||||
}
|
||||
|
||||
template <unsigned MaxBufSize>
|
||||
void ServiceResponseTransferListener<MaxBufSize>::stopAcceptingAnything()
|
||||
template <unsigned MaxBufSize, unsigned NumStaticBufs, unsigned NumStaticReceivers>
|
||||
void ServiceResponseTransferListener<MaxBufSize, NumStaticBufs, NumStaticReceivers>::stopAcceptingAnything()
|
||||
{
|
||||
response_params_ = ExpectedResponseParams();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user