Spinscale: create new namespace sscl
This commit is contained in:
@@ -92,7 +92,7 @@ void StimulusProducer::destroyAttachedStimulusBuffer(
|
||||
void StimulusProducer::stop()
|
||||
{
|
||||
{
|
||||
SpinLock::Guard lock(shouldContinueLock);
|
||||
sscl::SpinLock::Guard lock(shouldContinueLock);
|
||||
shouldContinue = false;
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ void StimulusProducer::onTimeout(const boost::system::error_code& error)
|
||||
return;
|
||||
}
|
||||
|
||||
SpinLock::Guard lock(shouldContinueLock);
|
||||
sscl::SpinLock::Guard lock(shouldContinueLock);
|
||||
if (!shouldContinue)
|
||||
{ return; }
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace livoxProto1 {
|
||||
namespace comms {
|
||||
|
||||
BroadcastListener::BroadcastListener(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
uint16_t listeningPort, uint16_t connectPort
|
||||
)
|
||||
: componentThread(componentThread),
|
||||
@@ -94,7 +94,7 @@ void BroadcastListener::broadcastMsgInd(
|
||||
reinterpret_cast<const char*>(msg->broadcast_code));
|
||||
|
||||
// Early return if device already exists
|
||||
smo::SpinLock::Guard lock(isListeningLock);
|
||||
sscl::SpinLock::Guard lock(isListeningLock);
|
||||
|
||||
if (deviceExists(broadcastCode))
|
||||
{
|
||||
@@ -134,7 +134,7 @@ void BroadcastListener::start(void)
|
||||
* away.
|
||||
*/
|
||||
{
|
||||
smo::SpinLock::Guard lock(isListeningLock);
|
||||
sscl::SpinLock::Guard lock(isListeningLock);
|
||||
|
||||
socket.open(boost::asio::ip::udp::v4());
|
||||
socket.bind(listeningEndpoint);
|
||||
@@ -172,7 +172,7 @@ void BroadcastListener::startReceive(void)
|
||||
void BroadcastListener::stop(void)
|
||||
{
|
||||
{
|
||||
smo::SpinLock::Guard lock(isListeningLock);
|
||||
sscl::SpinLock::Guard lock(isListeningLock);
|
||||
if (!isListening) { return; }
|
||||
|
||||
isListening = false;
|
||||
|
||||
@@ -29,7 +29,7 @@ class BroadcastListener
|
||||
{
|
||||
public:
|
||||
BroadcastListener(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
uint16_t listeningPort=55000, uint16_t connectPort=65000);
|
||||
|
||||
~BroadcastListener() = default;
|
||||
@@ -54,7 +54,7 @@ private:
|
||||
void startReceive(void);
|
||||
|
||||
private:
|
||||
std::shared_ptr<smo::ComponentThread> componentThread;
|
||||
std::shared_ptr<sscl::ComponentThread> componentThread;
|
||||
/** EXPLANATION:
|
||||
* The Livox proto says that client devices will spam broadcast UDP
|
||||
* dgrams to us on the listening port. We can then use the source IP from
|
||||
@@ -68,7 +68,7 @@ private:
|
||||
|
||||
boost::asio::ip::udp::socket socket;
|
||||
boost::asio::ip::udp::endpoint listeningEndpoint, senderEndpoint;
|
||||
smo::SpinLock isListeningLock;
|
||||
sscl::SpinLock isListeningLock;
|
||||
bool isListening;
|
||||
|
||||
uint8_t bcastMsgRecvBuffer[UDP_BCAST_MSG_BUFFER_NBYTES];
|
||||
|
||||
@@ -74,7 +74,7 @@ std::optional<std::shared_ptr<Device>> DeviceManager::getDevice(
|
||||
|
||||
// GetOrCreateDeviceReq nested class implementation
|
||||
class DeviceManager::GetOrCreateDeviceReq
|
||||
: public smo::NonPostedAsynchronousContinuation<
|
||||
: public sscl::NonPostedAsynchronousContinuation<
|
||||
livoxProto1_getOrCreateDeviceReqCbFn>
|
||||
{
|
||||
public:
|
||||
@@ -86,8 +86,8 @@ public:
|
||||
GetOrCreateDeviceReq(
|
||||
DeviceManager& mgr,
|
||||
std::shared_ptr<Device> device,
|
||||
smo::Callback<livoxProto1_getOrCreateDeviceReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<
|
||||
sscl::Callback<livoxProto1_getOrCreateDeviceReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<
|
||||
livoxProto1_getOrCreateDeviceReqCbFn>(std::move(cb)),
|
||||
deviceManager(mgr), pendingDevice(device)
|
||||
{}
|
||||
@@ -128,11 +128,11 @@ public:
|
||||
|
||||
void DeviceManager::getOrCreateDeviceReq(
|
||||
const std::string &deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort,
|
||||
smo::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback)
|
||||
sscl::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback)
|
||||
{
|
||||
// Validate smoIp format using Boost.Asio IPv4 validation
|
||||
if (!smoIp.empty() && !comms::isValidIPv4(smoIp))
|
||||
@@ -179,7 +179,7 @@ void DeviceManager::getOrCreateDeviceReq(
|
||||
}
|
||||
|
||||
class DeviceManager::DestroyDeviceReq
|
||||
: public smo::NonPostedAsynchronousContinuation<
|
||||
: public sscl::NonPostedAsynchronousContinuation<
|
||||
livoxProto1_destroyDeviceReqCbFn>
|
||||
{
|
||||
public:
|
||||
@@ -190,8 +190,8 @@ public:
|
||||
DestroyDeviceReq(
|
||||
DeviceManager& mgr,
|
||||
std::shared_ptr<Device> device,
|
||||
smo::Callback<livoxProto1_destroyDeviceReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<
|
||||
sscl::Callback<livoxProto1_destroyDeviceReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<
|
||||
livoxProto1_destroyDeviceReqCbFn>(std::move(cb)),
|
||||
deviceManager(mgr), pendingDevice(device)
|
||||
{}
|
||||
@@ -220,7 +220,7 @@ public:
|
||||
|
||||
void DeviceManager::destroyDeviceReq(
|
||||
std::shared_ptr<Device> dev,
|
||||
smo::Callback<livoxProto1_destroyDeviceReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_destroyDeviceReqCbFn> callback
|
||||
)
|
||||
{
|
||||
/** EXPLANATION:
|
||||
@@ -245,7 +245,7 @@ void DeviceManager::destroyDeviceReq(
|
||||
request.get(), request, std::placeholders::_1)});
|
||||
}
|
||||
|
||||
void main(const std::shared_ptr<smo::ComponentThread> &componentThread,
|
||||
void main(const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const smo::stim_buff::SmoCallbacks& smoCallbacks)
|
||||
{
|
||||
if (protoState.isInitialized) {
|
||||
|
||||
@@ -25,15 +25,15 @@ public:
|
||||
|
||||
void getOrCreateDeviceReq(
|
||||
const std::string &deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort,
|
||||
smo::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback);
|
||||
|
||||
void destroyDeviceReq(
|
||||
std::shared_ptr<Device> device,
|
||||
smo::Callback<livoxProto1_destroyDeviceReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_destroyDeviceReqCbFn> callback);
|
||||
|
||||
std::optional<std::shared_ptr<Device>> getDevice(
|
||||
const std::string &deviceIdentifier);
|
||||
@@ -59,7 +59,7 @@ public:
|
||||
};
|
||||
|
||||
void main(
|
||||
const std::shared_ptr<smo::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
const smo::stim_buff::SmoCallbacks& smoCallbacks);
|
||||
void exit(void);
|
||||
|
||||
@@ -67,7 +67,7 @@ void exit(void);
|
||||
struct ProtoState
|
||||
{
|
||||
bool isInitialized = false;
|
||||
std::shared_ptr<smo::ComponentThread> componentThread;
|
||||
std::shared_ptr<sscl::ComponentThread> componentThread;
|
||||
std::unique_ptr<DeviceManager> deviceManager;
|
||||
smo::stim_buff::SmoCallbacks smoCallbacks;
|
||||
};
|
||||
|
||||
@@ -90,7 +90,7 @@ std::string DiscoveredDevice::getDeviceTypeName(void) const
|
||||
} // namespace comms
|
||||
|
||||
Device::Device(const std::string &deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort)
|
||||
@@ -124,15 +124,15 @@ Device::~Device()
|
||||
* This class manages the overall device connection process including handshake and heartbeat setup
|
||||
*/
|
||||
class Device::ConnectReq
|
||||
: public smo::NonPostedAsynchronousContinuation<Device::connectReqCbFn>
|
||||
: public sscl::NonPostedAsynchronousContinuation<Device::connectReqCbFn>
|
||||
{
|
||||
private:
|
||||
Device& device;
|
||||
boost::asio::deadline_timer delayTimer;
|
||||
|
||||
public:
|
||||
ConnectReq(Device& dev, smo::Callback<Device::connectReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<Device::connectReqCbFn>(
|
||||
ConnectReq(Device& dev, sscl::Callback<Device::connectReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<Device::connectReqCbFn>(
|
||||
std::move(cb)), device(dev),
|
||||
delayTimer(dev.componentThread->getIoService())
|
||||
{}
|
||||
@@ -216,7 +216,7 @@ public:
|
||||
{ callOriginalCallback(false); }
|
||||
};
|
||||
|
||||
void Device::connectReq(smo::Callback<Device::connectReqCbFn> callback)
|
||||
void Device::connectReq(sscl::Callback<Device::connectReqCbFn> callback)
|
||||
{
|
||||
// Create the connection request object to hold state and callbacks
|
||||
auto request = std::make_shared<ConnectReq>(*this, std::move(callback));
|
||||
@@ -233,7 +233,7 @@ void Device::connectReq(smo::Callback<Device::connectReqCbFn> callback)
|
||||
}
|
||||
|
||||
class Device::ConnectToKnownDeviceReq
|
||||
: public smo::NonPostedAsynchronousContinuation<
|
||||
: public sscl::NonPostedAsynchronousContinuation<
|
||||
Device::connectToKnownDeviceReqCbFn>
|
||||
{
|
||||
public:
|
||||
@@ -241,8 +241,8 @@ public:
|
||||
std::string deviceIP;
|
||||
std::shared_ptr<livoxProto1::comms::DiscoveredDevice> deviceInfo;
|
||||
|
||||
ConnectToKnownDeviceReq(Device& dev, smo::Callback<Device::connectToKnownDeviceReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<
|
||||
ConnectToKnownDeviceReq(Device& dev, sscl::Callback<Device::connectToKnownDeviceReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<
|
||||
Device::connectToKnownDeviceReqCbFn>(std::move(cb)), device(dev)
|
||||
{}
|
||||
|
||||
@@ -269,7 +269,7 @@ public:
|
||||
* broadcastListener.
|
||||
*/
|
||||
void Device::connectToKnownDeviceReq(
|
||||
smo::Callback<Device::connectToKnownDeviceReqCbFn> callback
|
||||
sscl::Callback<Device::connectToKnownDeviceReqCbFn> callback
|
||||
)
|
||||
{
|
||||
// Create the connection request object to hold state and callbacks
|
||||
@@ -336,7 +336,7 @@ void Device::connectToKnownDeviceReq(
|
||||
}
|
||||
|
||||
class Device::ConnectByDeviceIdentifierReq
|
||||
: public smo::NonPostedAsynchronousContinuation<
|
||||
: public sscl::NonPostedAsynchronousContinuation<
|
||||
Device::connectByDeviceIdentifierReqCbFn>
|
||||
{
|
||||
public:
|
||||
@@ -344,8 +344,8 @@ public:
|
||||
std::string deviceIP;
|
||||
|
||||
ConnectByDeviceIdentifierReq(
|
||||
Device& dev, smo::Callback<Device::connectByDeviceIdentifierReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<
|
||||
Device& dev, sscl::Callback<Device::connectByDeviceIdentifierReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<
|
||||
Device::connectByDeviceIdentifierReqCbFn>(
|
||||
std::move(cb)), device(dev)
|
||||
{}
|
||||
@@ -370,7 +370,7 @@ public:
|
||||
};
|
||||
|
||||
void Device::connectByDeviceIdentifierReq(
|
||||
smo::Callback<Device::connectByDeviceIdentifierReqCbFn> callback
|
||||
sscl::Callback<Device::connectByDeviceIdentifierReqCbFn> callback
|
||||
)
|
||||
{
|
||||
/** EXPLANATION:
|
||||
@@ -419,13 +419,13 @@ void Device::connectByDeviceIdentifierReq(
|
||||
}
|
||||
|
||||
class Device::ExecuteHandshakeReq
|
||||
: public smo::NonPostedAsynchronousContinuation<
|
||||
: public sscl::NonPostedAsynchronousContinuation<
|
||||
Device::executeHandshakeReqCbFn>
|
||||
{
|
||||
public:
|
||||
friend void Device::executeHandshakeReq(
|
||||
const std::string& deviceIP,
|
||||
smo::Callback<Device::executeHandshakeReqCbFn> callback);
|
||||
sscl::Callback<Device::executeHandshakeReqCbFn> callback);
|
||||
|
||||
enum class SocketState
|
||||
{
|
||||
@@ -459,8 +459,8 @@ public:
|
||||
Device& dev, const std::string& deviceIP,
|
||||
std::shared_ptr<boost::asio::posix::stream_descriptor>
|
||||
&cmdEndpointFdDesc,
|
||||
smo::Callback<Device::executeHandshakeReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<Device::executeHandshakeReqCbFn>(
|
||||
sscl::Callback<Device::executeHandshakeReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<Device::executeHandshakeReqCbFn>(
|
||||
std::move(cb)),
|
||||
device(dev), deviceIP(deviceIP),
|
||||
cmdEndpointFdDesc(cmdEndpointFdDesc),
|
||||
@@ -753,7 +753,7 @@ private:
|
||||
|
||||
void Device::executeHandshakeReq(
|
||||
const std::string& deviceIP,
|
||||
smo::Callback<Device::executeHandshakeReqCbFn> callback
|
||||
sscl::Callback<Device::executeHandshakeReqCbFn> callback
|
||||
)
|
||||
{
|
||||
// Get the command endpoint from the UdpCommandDemuxer
|
||||
@@ -803,7 +803,7 @@ void Device::executeHandshakeReq(
|
||||
}
|
||||
}
|
||||
|
||||
void Device::disconnectReq(smo::Callback<Device::disconnectReqCbFn> callback)
|
||||
void Device::disconnectReq(sscl::Callback<Device::disconnectReqCbFn> callback)
|
||||
{
|
||||
// Stop heartbeat first
|
||||
stopHeartbeat();
|
||||
@@ -1042,7 +1042,7 @@ void Device::startHeartbeat()
|
||||
}
|
||||
|
||||
// Register heartbeat ACK handler (cmd_set=0x00, cmd_id=0x03)
|
||||
smo::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
sscl::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
|
||||
registerUdpCommandHandler(
|
||||
0x00, 0x03, discardHeartbeatAck, discoveredDevice.ipAddr);
|
||||
@@ -1060,7 +1060,7 @@ void Device::startHeartbeat()
|
||||
void Device::stopHeartbeat()
|
||||
{
|
||||
{
|
||||
smo::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
sscl::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
|
||||
heartbeatActive.store(false);
|
||||
unregisterUdpCommandHandler(0x00, 0x03, discoveredDevice.ipAddr);
|
||||
@@ -1168,7 +1168,7 @@ void Device::onHeartbeatTimer(const boost::system::error_code& error)
|
||||
|
||||
// Send next heartbeat
|
||||
{
|
||||
smo::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
sscl::SpinLock::Guard lock(heartbeatActiveLock);
|
||||
if (!heartbeatActive.load())
|
||||
{ return; }
|
||||
|
||||
@@ -1331,7 +1331,7 @@ std::optional<std::string> Device::getSmoIp(const std::string& deviceIP)
|
||||
// Base class for both enable and disable pcloud data requests
|
||||
template<typename CallbackType>
|
||||
class EnDisablePcloudDataReq
|
||||
: public smo::NonPostedAsynchronousContinuation<CallbackType>
|
||||
: public sscl::NonPostedAsynchronousContinuation<CallbackType>
|
||||
{
|
||||
public:
|
||||
enum class SocketState
|
||||
@@ -1362,8 +1362,8 @@ public:
|
||||
protected:
|
||||
EnDisablePcloudDataReq(
|
||||
Device& dev,
|
||||
smo::Callback<CallbackType> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<CallbackType>(std::move(cb)),
|
||||
sscl::Callback<CallbackType> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<CallbackType>(std::move(cb)),
|
||||
device(dev),
|
||||
timeoutTimer(device.componentThread->getIoService())
|
||||
{}
|
||||
@@ -1608,11 +1608,11 @@ class Device::EnablePcloudDataReq
|
||||
{
|
||||
public:
|
||||
friend void Device::enablePcloudDataReq(
|
||||
smo::Callback<Device::enablePcloudDataReqCbFn> callback);
|
||||
sscl::Callback<Device::enablePcloudDataReqCbFn> callback);
|
||||
|
||||
EnablePcloudDataReq(
|
||||
Device& dev,
|
||||
smo::Callback<Device::enablePcloudDataReqCbFn> cb)
|
||||
sscl::Callback<Device::enablePcloudDataReqCbFn> cb)
|
||||
: EnDisablePcloudDataReq<Device::enablePcloudDataReqCbFn>(dev, std::move(cb))
|
||||
{}
|
||||
|
||||
@@ -1643,11 +1643,11 @@ class Device::DisablePcloudDataReq
|
||||
{
|
||||
public:
|
||||
friend void Device::disablePcloudDataReq(
|
||||
smo::Callback<Device::disablePcloudDataReqCbFn> callback);
|
||||
sscl::Callback<Device::disablePcloudDataReqCbFn> callback);
|
||||
|
||||
DisablePcloudDataReq(
|
||||
Device& dev,
|
||||
smo::Callback<Device::disablePcloudDataReqCbFn> cb)
|
||||
sscl::Callback<Device::disablePcloudDataReqCbFn> cb)
|
||||
: EnDisablePcloudDataReq<Device::disablePcloudDataReqCbFn>(
|
||||
dev, std::move(cb))
|
||||
{}
|
||||
@@ -1675,7 +1675,7 @@ private:
|
||||
};
|
||||
|
||||
void Device::enablePcloudDataReq(
|
||||
smo::Callback<Device::enablePcloudDataReqCbFn> callback
|
||||
sscl::Callback<Device::enablePcloudDataReqCbFn> callback
|
||||
)
|
||||
{
|
||||
auto request = std::make_shared<EnablePcloudDataReq>(
|
||||
@@ -1702,7 +1702,7 @@ void Device::enablePcloudDataReq(
|
||||
}
|
||||
|
||||
void Device::disablePcloudDataReq(
|
||||
smo::Callback<Device::disablePcloudDataReqCbFn> callback
|
||||
sscl::Callback<Device::disablePcloudDataReqCbFn> callback
|
||||
)
|
||||
{
|
||||
auto request = std::make_shared<DisablePcloudDataReq>(
|
||||
@@ -1858,7 +1858,7 @@ void Device::unregisterUdpCommandHandler(
|
||||
|
||||
// SetReturnModeReq continuation class
|
||||
class Device::SetReturnModeReq
|
||||
: public smo::NonPostedAsynchronousContinuation<Device::setReturnModeReqCbFn>
|
||||
: public sscl::NonPostedAsynchronousContinuation<Device::setReturnModeReqCbFn>
|
||||
{
|
||||
public:
|
||||
enum class SocketState
|
||||
@@ -1890,12 +1890,12 @@ public:
|
||||
public:
|
||||
friend void Device::setReturnModeReq(
|
||||
uint8_t returnMode,
|
||||
smo::Callback<Device::setReturnModeReqCbFn> callback);
|
||||
sscl::Callback<Device::setReturnModeReqCbFn> callback);
|
||||
|
||||
SetReturnModeReq(
|
||||
Device& dev, uint8_t mode,
|
||||
smo::Callback<Device::setReturnModeReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<Device::setReturnModeReqCbFn>(
|
||||
sscl::Callback<Device::setReturnModeReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<Device::setReturnModeReqCbFn>(
|
||||
std::move(cb)),
|
||||
device(dev), returnMode(mode),
|
||||
timeoutTimer(device.componentThread->getIoService())
|
||||
@@ -2107,7 +2107,7 @@ public:
|
||||
|
||||
// GetReturnModeReq continuation class
|
||||
class Device::GetReturnModeReq
|
||||
: public smo::NonPostedAsynchronousContinuation<Device::getReturnModeReqCbFn>
|
||||
: public sscl::NonPostedAsynchronousContinuation<Device::getReturnModeReqCbFn>
|
||||
{
|
||||
public:
|
||||
enum class SocketState
|
||||
@@ -2137,12 +2137,12 @@ public:
|
||||
|
||||
public:
|
||||
friend void Device::getReturnModeReq(
|
||||
smo::Callback<Device::getReturnModeReqCbFn> callback);
|
||||
sscl::Callback<Device::getReturnModeReqCbFn> callback);
|
||||
|
||||
GetReturnModeReq(
|
||||
Device& dev,
|
||||
smo::Callback<Device::getReturnModeReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<Device::getReturnModeReqCbFn>(
|
||||
sscl::Callback<Device::getReturnModeReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<Device::getReturnModeReqCbFn>(
|
||||
std::move(cb)),
|
||||
device(dev),
|
||||
timeoutTimer(device.componentThread->getIoService())
|
||||
@@ -2351,7 +2351,7 @@ public:
|
||||
|
||||
void Device::setReturnModeReq(
|
||||
uint8_t returnMode,
|
||||
smo::Callback<Device::setReturnModeReqCbFn> callback
|
||||
sscl::Callback<Device::setReturnModeReqCbFn> callback
|
||||
)
|
||||
{
|
||||
auto request = std::make_shared<SetReturnModeReq>(
|
||||
@@ -2378,7 +2378,7 @@ void Device::setReturnModeReq(
|
||||
}
|
||||
|
||||
void Device::getReturnModeReq(
|
||||
smo::Callback<Device::getReturnModeReqCbFn> callback
|
||||
sscl::Callback<Device::getReturnModeReqCbFn> callback
|
||||
)
|
||||
{
|
||||
auto request = std::make_shared<GetReturnModeReq>(
|
||||
|
||||
@@ -77,7 +77,7 @@ class Device
|
||||
{
|
||||
public:
|
||||
Device(const std::string &deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort);
|
||||
@@ -163,27 +163,27 @@ public:
|
||||
getReturnModeReqCbFn;
|
||||
|
||||
// Async connection methods
|
||||
void connectReq(smo::Callback<connectReqCbFn> callback);
|
||||
void connectReq(sscl::Callback<connectReqCbFn> callback);
|
||||
void connectToKnownDeviceReq(
|
||||
smo::Callback<connectToKnownDeviceReqCbFn> callback);
|
||||
sscl::Callback<connectToKnownDeviceReqCbFn> callback);
|
||||
void connectByDeviceIdentifierReq(
|
||||
smo::Callback<connectByDeviceIdentifierReqCbFn> callback);
|
||||
sscl::Callback<connectByDeviceIdentifierReqCbFn> callback);
|
||||
void executeHandshakeReq(
|
||||
const std::string& deviceIP,
|
||||
smo::Callback<executeHandshakeReqCbFn> callback);
|
||||
void disconnectReq(smo::Callback<disconnectReqCbFn> callback);
|
||||
void enablePcloudDataReq(smo::Callback<enablePcloudDataReqCbFn> callback);
|
||||
void disablePcloudDataReq(smo::Callback<disablePcloudDataReqCbFn> callback);
|
||||
sscl::Callback<executeHandshakeReqCbFn> callback);
|
||||
void disconnectReq(sscl::Callback<disconnectReqCbFn> callback);
|
||||
void enablePcloudDataReq(sscl::Callback<enablePcloudDataReqCbFn> callback);
|
||||
void disablePcloudDataReq(sscl::Callback<disablePcloudDataReqCbFn> callback);
|
||||
void setReturnModeReq(
|
||||
uint8_t returnMode, smo::Callback<setReturnModeReqCbFn> callback);
|
||||
void getReturnModeReq(smo::Callback<getReturnModeReqCbFn> callback);
|
||||
uint8_t returnMode, sscl::Callback<setReturnModeReqCbFn> callback);
|
||||
void getReturnModeReq(sscl::Callback<getReturnModeReqCbFn> callback);
|
||||
|
||||
public:
|
||||
comms::DiscoveredDevice discoveredDevice;
|
||||
std::atomic<size_t> nAttachedStimulusProducers;
|
||||
|
||||
// Configuration
|
||||
std::shared_ptr<smo::ComponentThread> componentThread;
|
||||
std::shared_ptr<sscl::ComponentThread> componentThread;
|
||||
int commandTimeoutMs, retryDelayMs;
|
||||
std::string smoIp;
|
||||
std::string detectedSmoListeningIp;
|
||||
@@ -193,7 +193,7 @@ public:
|
||||
// Heartbeat state
|
||||
std::unique_ptr<boost::asio::deadline_timer> heartbeatTimer;
|
||||
std::atomic<bool> heartbeatActive;
|
||||
smo::SpinLock heartbeatActiveLock;
|
||||
sscl::SpinLock heartbeatActiveLock;
|
||||
|
||||
// Point cloud data state
|
||||
std::atomic<bool> pcloudDataActive;
|
||||
|
||||
@@ -12,11 +12,11 @@ extern "C" {
|
||||
|
||||
void livoxProto1_getOrCreateDeviceReq(
|
||||
const std::string& deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort,
|
||||
smo::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback
|
||||
)
|
||||
{
|
||||
// Get the global DeviceManager instance
|
||||
@@ -39,7 +39,7 @@ void livoxProto1_getOrCreateDeviceReq(
|
||||
|
||||
void livoxProto1_destroyDeviceReq(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_destroyDeviceReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_destroyDeviceReqCbFn> callback
|
||||
)
|
||||
{
|
||||
auto& protoState = livoxProto1::getProtoState();
|
||||
@@ -54,7 +54,7 @@ void livoxProto1_destroyDeviceReq(
|
||||
}
|
||||
|
||||
void livoxProto1_main(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
const smo::stim_buff::SmoCallbacks& smoCallbacks)
|
||||
{
|
||||
livoxProto1::main(componentThread, smoCallbacks);
|
||||
@@ -67,7 +67,7 @@ void livoxProto1_exit(void)
|
||||
|
||||
void livoxProto1_device_enablePcloudDataReq(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_enablePcloudDataReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_device_enablePcloudDataReqCbFn> callback
|
||||
)
|
||||
{
|
||||
if (!device)
|
||||
@@ -81,7 +81,7 @@ void livoxProto1_device_enablePcloudDataReq(
|
||||
|
||||
void livoxProto1_device_disablePcloudDataReq(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_disablePcloudDataReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_device_disablePcloudDataReqCbFn> callback
|
||||
)
|
||||
{
|
||||
if (!device)
|
||||
@@ -95,7 +95,7 @@ void livoxProto1_device_disablePcloudDataReq(
|
||||
|
||||
void livoxProto1_device_getReturnModeReq(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_getReturnModeReqCbFn> callback
|
||||
sscl::Callback<livoxProto1_device_getReturnModeReqCbFn> callback
|
||||
)
|
||||
{
|
||||
if (!device)
|
||||
|
||||
@@ -14,6 +14,8 @@ namespace smo {
|
||||
namespace stim_buff {
|
||||
struct SmoCallbacks;
|
||||
}
|
||||
}
|
||||
namespace sscl {
|
||||
class ComponentThread;
|
||||
}
|
||||
|
||||
@@ -31,7 +33,7 @@ extern "C" {
|
||||
* @param smoCallbacks Callbacks provided by SMO
|
||||
*/
|
||||
typedef void livoxProto1_mainFn(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
const smo::stim_buff::SmoCallbacks& smoCallbacks);
|
||||
|
||||
/**
|
||||
@@ -58,34 +60,34 @@ typedef std::function<
|
||||
|
||||
typedef void livoxProto1_getOrCreateDeviceReqFn(
|
||||
const std::string& deviceIdentifier,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
int commandTimeoutMs, int retryDelayMs,
|
||||
const std::string& smoIp, uint8_t smoSubnetNbits,
|
||||
uint16_t dataPort, uint16_t cmdPort, uint16_t imuPort,
|
||||
smo::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_getOrCreateDeviceReqCbFn> callback);
|
||||
|
||||
typedef std::function<void(bool success)> livoxProto1_destroyDeviceReqCbFn;
|
||||
typedef void livoxProto1_destroyDeviceReqFn(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_destroyDeviceReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_destroyDeviceReqCbFn> callback);
|
||||
|
||||
typedef std::function<void(bool success)>
|
||||
livoxProto1_device_enablePcloudDataReqCbFn;
|
||||
typedef void livoxProto1_device_enablePcloudDataReqFn(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_enablePcloudDataReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_device_enablePcloudDataReqCbFn> callback);
|
||||
|
||||
typedef std::function<void(bool success)>
|
||||
livoxProto1_device_disablePcloudDataReqCbFn;
|
||||
typedef void livoxProto1_device_disablePcloudDataReqFn(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_disablePcloudDataReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_device_disablePcloudDataReqCbFn> callback);
|
||||
|
||||
typedef std::function<void(bool success, uint8_t returnMode)>
|
||||
livoxProto1_device_getReturnModeReqCbFn;
|
||||
typedef void livoxProto1_device_getReturnModeReqFn(
|
||||
std::shared_ptr<livoxProto1::Device> device,
|
||||
smo::Callback<livoxProto1_device_getReturnModeReqCbFn> callback);
|
||||
sscl::Callback<livoxProto1_device_getReturnModeReqCbFn> callback);
|
||||
|
||||
typedef std::shared_ptr<boost::asio::posix::stream_descriptor>
|
||||
livoxProto1_getPcloudDataFdDescFn(void);
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace livoxProto1 {
|
||||
namespace comms {
|
||||
|
||||
UdpCommandDemuxer::UdpCommandDemuxer(
|
||||
const std::shared_ptr<smo::ComponentThread> &componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread> &componentThread,
|
||||
DeviceManager &deviceManager,
|
||||
uint16_t commandPort,
|
||||
uint16_t dataPort
|
||||
@@ -44,7 +44,7 @@ void UdpCommandDemuxer::start()
|
||||
try
|
||||
{
|
||||
{
|
||||
smo::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
sscl::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
|
||||
setupSockets();
|
||||
isActive.store(true);
|
||||
@@ -71,7 +71,7 @@ void UdpCommandDemuxer::start()
|
||||
void UdpCommandDemuxer::stop()
|
||||
{
|
||||
{
|
||||
smo::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
sscl::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
if (!isActive.load())
|
||||
{ return; }
|
||||
|
||||
@@ -291,7 +291,7 @@ void UdpCommandDemuxer::onDataReady(const boost::system::error_code &error)
|
||||
return;
|
||||
}
|
||||
|
||||
smo::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
sscl::SpinLock::Guard lock(isActiveAndShouldStopLock);
|
||||
|
||||
if (!isActive.load() || shouldStop.load())
|
||||
{ return; }
|
||||
|
||||
@@ -37,7 +37,7 @@ class UdpCommandDemuxer
|
||||
{
|
||||
public:
|
||||
UdpCommandDemuxer(
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
DeviceManager& deviceManager,
|
||||
uint16_t commandPort = 56001,
|
||||
uint16_t dataPort = 56000);
|
||||
@@ -76,13 +76,13 @@ private:
|
||||
void onDataReady(const boost::system::error_code& error);
|
||||
void processIncomingData();
|
||||
|
||||
std::shared_ptr<smo::ComponentThread> componentThread;
|
||||
std::shared_ptr<sscl::ComponentThread> componentThread;
|
||||
DeviceManager& deviceManager;
|
||||
uint16_t commandPort;
|
||||
uint16_t dataPort;
|
||||
|
||||
// State management
|
||||
smo::SpinLock isActiveAndShouldStopLock;
|
||||
sscl::SpinLock isActiveAndShouldStopLock;
|
||||
std::atomic<bool> isActive{false};
|
||||
std::atomic<bool> shouldStop{false};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user