#include #include #include #include #include "livoxProto1.h" #include "device.h" #include "core.h" #include "udpCommandDemuxer.h" extern "C" { void livoxProto1_getOrCreateDeviceReq( 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, smo::Callback callback ) { // Get the global DeviceManager instance auto& protoState = livoxProto1::getProtoState(); if (!protoState.deviceManager) { throw std::runtime_error( std::string(__func__) + ": LivoxProto1 not initialized - call " "livoxProto1_main first"); } // Delegate to DeviceManager protoState.deviceManager->getOrCreateDeviceReq( deviceIdentifier, componentThread, commandTimeoutMs, retryDelayMs, smoIp, smoSubnetNbits, dataPort, cmdPort, imuPort, callback); } void livoxProto1_destroyDeviceReq( std::shared_ptr device, smo::Callback callback ) { 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& componentThread, const smo::stim_buff::SmoCallbacks& smoCallbacks) { livoxProto1::main(componentThread, smoCallbacks); } void livoxProto1_exit(void) { livoxProto1::exit(); } void livoxProto1_device_enablePcloudDataReq( std::shared_ptr device, smo::Callback callback ) { if (!device) { throw std::runtime_error(std::string(__func__) + ": Device pointer is null"); } device->enablePcloudDataReq(callback); } void livoxProto1_device_disablePcloudDataReq( std::shared_ptr device, smo::Callback callback ) { if (!device) { throw std::runtime_error(std::string(__func__) + ": Device pointer is null"); } device->disablePcloudDataReq(callback); } void livoxProto1_device_getReturnModeReq( std::shared_ptr device, smo::Callback callback ) { if (!device) { throw std::runtime_error(std::string(__func__) + ": Device pointer is null"); } device->getReturnModeReq(callback); } std::shared_ptr livoxProto1_getPcloudDataFdDesc(void) { auto& protoState = livoxProto1::getProtoState(); if (!protoState.deviceManager) { throw std::runtime_error(std::string(__func__) + ": DeviceManager not initialized"); } return protoState.deviceManager->udpCommandDemuxer.getPcloudDataFdDesc(); } } // extern "C"