livoxProto1: Implement async getOrCreateDeviceReq+destroyDeviceReq
These are now both fully asynchronous. They also work fully and both connect and disconnect to/from the Avia just fine, in all tested scenarios.
This commit is contained in:
@@ -6,12 +6,13 @@
|
||||
|
||||
extern "C" {
|
||||
|
||||
std::shared_ptr<livoxProto1::Device> livoxProto1_getOrCreateDevice(
|
||||
void livoxProto1_getOrCreateDeviceReq(
|
||||
const std::string& deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
int handshakeTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort,
|
||||
livoxProto1_getOrCreateDeviceReqCbFn callback
|
||||
)
|
||||
{
|
||||
// Get the global DeviceManager instance
|
||||
@@ -24,16 +25,34 @@ std::shared_ptr<livoxProto1::Device> livoxProto1_getOrCreateDevice(
|
||||
}
|
||||
|
||||
// Delegate to DeviceManager
|
||||
return protoState.deviceManager->getOrCreateDevice(
|
||||
protoState.deviceManager->getOrCreateDeviceReq(
|
||||
deviceIdentifier, componentThread,
|
||||
handshakeTimeoutMs, retryDelayMs,
|
||||
smoIp, smoSubnetNbits,
|
||||
dataPort, cmdPort, imuPort);
|
||||
dataPort, cmdPort, imuPort,
|
||||
callback);
|
||||
}
|
||||
|
||||
void livoxProto1_main(const std::shared_ptr<smo::ComponentThread>& componentThread)
|
||||
void livoxProto1_destroyDeviceReq(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
livoxProto1_destroyDeviceReqCbFn callback
|
||||
)
|
||||
{
|
||||
livoxProto1::main(componentThread);
|
||||
auto& protoState = livoxProto1::getProtoState();
|
||||
if (!protoState.deviceManager)
|
||||
{
|
||||
throw std::runtime_error(std::string(__func__)
|
||||
+ ": DeviceManager not initialized");
|
||||
}
|
||||
|
||||
protoState.deviceManager->destroyDeviceReq(device, callback);
|
||||
}
|
||||
|
||||
void livoxProto1_main(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const smo::sense_api::SmoCallbacks& smoCallbacks)
|
||||
{
|
||||
livoxProto1::main(componentThread, smoCallbacks);
|
||||
}
|
||||
|
||||
void livoxProto1_exit(void)
|
||||
|
||||
Reference in New Issue
Block a user