55 lines
1.0 KiB
C++
55 lines
1.0 KiB
C++
#ifndef __UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__
|
|
#define __UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__
|
|
|
|
#include <unitree/robot/channel/channel_factory.hpp>
|
|
|
|
namespace unitree
|
|
{
|
|
namespace robot
|
|
{
|
|
template<typename MSG>
|
|
class ChannelPublisher
|
|
{
|
|
public:
|
|
explicit ChannelPublisher(const std::string& channelName) :
|
|
mChannelName(channelName)
|
|
{}
|
|
|
|
void InitChannel()
|
|
{
|
|
mChannelPtr = ChannelFactory::Instance()->CreateSendChannel<MSG>(mChannelName);
|
|
}
|
|
|
|
bool Write(const MSG& msg, int64_t waitMicrosec = 0)
|
|
{
|
|
if (mChannelPtr)
|
|
{
|
|
return mChannelPtr->Write(msg, waitMicrosec);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void CloseChannel()
|
|
{
|
|
mChannelPtr.reset();
|
|
}
|
|
|
|
const std::string& GetChannelName() const
|
|
{
|
|
return mChannelName;
|
|
}
|
|
|
|
private:
|
|
std::string mChannelName;
|
|
ChannelPtr<MSG> mChannelPtr;
|
|
};
|
|
|
|
template<typename MSG>
|
|
using ChannelPublisherPtr = std::shared_ptr<ChannelPublisher<MSG>>;
|
|
|
|
}
|
|
}
|
|
|
|
#endif//__UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__
|