#ifndef ADAPTERS_SMO_LIVOX_PROTO1_CPS_AWAITERS_H #define ADAPTERS_SMO_LIVOX_PROTO1_CPS_AWAITERS_H #include #include #include #include #include namespace adapters::smo { struct GetOrCreateDeviceResult { bool success = false; std::shared_ptr device; }; struct GetReturnModeResult { bool success = false; uint8_t returnMode = 0; }; inline auto getGetOrCreateDeviceReqAReqAwaiter( boost::asio::io_service &resumeIoService, livoxProto1_getOrCreateDeviceReqFn *fn, const std::string &deviceIdentifier, const std::shared_ptr &componentThread, int commandTimeoutMs, int retryDelayMs, const std::string &smoIp, uint8_t smoSubnetNbits, uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort) { return ::smo::cpsBoundary::CpsCallbackAReq< GetOrCreateDeviceResult, livoxProto1_getOrCreateDeviceReqCbFn, std::function)>>( resumeIoService, [=](sscl::cps::Callback cb) { (*fn)( deviceIdentifier, componentThread, commandTimeoutMs, retryDelayMs, smoIp, smoSubnetNbits, dataPort, cmdPort, imuPort, std::move(cb)); }); } inline auto getDeviceGetReturnModeReqAReqAwaiter( boost::asio::io_service &resumeIoService, livoxProto1_device_getReturnModeReqFn *fn, std::shared_ptr device) { return ::smo::cpsBoundary::CpsCallbackAReq< GetReturnModeResult, livoxProto1_device_getReturnModeReqCbFn, std::function)>>( resumeIoService, [=](sscl::cps::Callback cb) { (*fn)(device, std::move(cb)); }); } inline auto getDeviceEnablePcloudDataReqAReqAwaiter( boost::asio::io_service &resumeIoService, livoxProto1_device_enablePcloudDataReqFn *fn, std::shared_ptr device) { return ::smo::cpsBoundary::CpsCallbackAReq< bool, livoxProto1_device_enablePcloudDataReqCbFn, std::function)>>( resumeIoService, [=](sscl::cps::Callback cb) { (*fn)(device, std::move(cb)); }); } inline auto getDeviceDisablePcloudDataReqAReqAwaiter( boost::asio::io_service &resumeIoService, livoxProto1_device_disablePcloudDataReqFn *fn, std::shared_ptr device) { return ::smo::cpsBoundary::CpsCallbackAReq< bool, livoxProto1_device_disablePcloudDataReqCbFn, std::function)>>( resumeIoService, [=](sscl::cps::Callback cb) { (*fn)(device, std::move(cb)); }); } inline auto getDestroyDeviceReqAReqAwaiter( boost::asio::io_service &resumeIoService, livoxProto1_destroyDeviceReqFn *fn, std::shared_ptr device) { return ::smo::cpsBoundary::CpsCallbackAReq< bool, livoxProto1_destroyDeviceReqCbFn, std::function)>>( resumeIoService, [=](sscl::cps::Callback cb) { (*fn)(device, std::move(cb)); }); } } // namespace adapters::smo #endif // ADAPTERS_SMO_LIVOX_PROTO1_CPS_AWAITERS_H