LivoxGen1: Port to coros
No longer uses CPS. We also found and documented a potential bug in the way we deal with disablePcloudData during detachDeviceReq.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
#include "livoxGen1Proto1CpsBridge.h"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
namespace smo::stim_buff {
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<adapters::smo::GetOrCreateDeviceResult>
|
||||
coAwaitGetOrCreateDevice(
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const std::string &deviceIdentifier,
|
||||
const LivoxProviderParams ¶ms)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_getOrCreateDeviceReq) {
|
||||
throw std::runtime_error("coAwaitGetOrCreateDevice: proto1 function missing");
|
||||
}
|
||||
|
||||
auto result = co_await adapters::smo::getGetOrCreateDeviceReqAReqAwaiter(
|
||||
componentThread->getIoService(),
|
||||
livoxProto1.livoxProto1_getOrCreateDeviceReq,
|
||||
deviceIdentifier,
|
||||
componentThread,
|
||||
params.commandTimeoutMs,
|
||||
params.retryDelayMs,
|
||||
params.smoIp,
|
||||
params.smoSubnetNbits,
|
||||
params.dataPort,
|
||||
params.cmdPort,
|
||||
params.imuPort);
|
||||
co_return result;
|
||||
}
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<adapters::smo::GetReturnModeResult>
|
||||
coAwaitGetReturnMode(
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<livoxProto1::Device> &device)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_device_getReturnModeReq) {
|
||||
throw std::runtime_error("coAwaitGetReturnMode: proto1 function missing");
|
||||
}
|
||||
|
||||
co_return co_await adapters::smo::getDeviceGetReturnModeReqAReqAwaiter(
|
||||
componentThread->getIoService(),
|
||||
livoxProto1.livoxProto1_device_getReturnModeReq,
|
||||
device);
|
||||
}
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<bool> coAwaitEnablePcloudData(
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<livoxProto1::Device> &device)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_device_enablePcloudDataReq) {
|
||||
throw std::runtime_error("coAwaitEnablePcloudData: proto1 function missing");
|
||||
}
|
||||
|
||||
co_return co_await adapters::smo::getDeviceEnablePcloudDataReqAReqAwaiter(
|
||||
componentThread->getIoService(),
|
||||
livoxProto1.livoxProto1_device_enablePcloudDataReq,
|
||||
device);
|
||||
}
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<bool> coAwaitDisablePcloudData(
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<livoxProto1::Device> &device)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_device_disablePcloudDataReq) {
|
||||
throw std::runtime_error("coAwaitDisablePcloudData: proto1 function missing");
|
||||
}
|
||||
|
||||
co_return co_await adapters::smo::getDeviceDisablePcloudDataReqAReqAwaiter(
|
||||
componentThread->getIoService(),
|
||||
livoxProto1.livoxProto1_device_disablePcloudDataReq,
|
||||
device);
|
||||
}
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<bool> coAwaitDestroyDevice(
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<livoxProto1::Device> &device)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_destroyDeviceReq) {
|
||||
throw std::runtime_error("coAwaitDestroyDevice: proto1 function missing");
|
||||
}
|
||||
|
||||
co_return co_await adapters::smo::getDestroyDeviceReqAReqAwaiter(
|
||||
componentThread->getIoService(),
|
||||
livoxProto1.livoxProto1_destroyDeviceReq,
|
||||
device);
|
||||
}
|
||||
|
||||
} // namespace smo::stim_buff
|
||||
Reference in New Issue
Block a user