LivoxProto1: port to sscl::co framework
Code now actually looks a lot cleaner, tbh.
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
#include <boost/asio/deadline_timer.hpp>
|
||||
#include <boost/asio/posix/stream_descriptor.hpp>
|
||||
#include "protocol.h"
|
||||
#include <spinscale/cps/callback.h>
|
||||
#include <spinscale/co/invokers.h>
|
||||
#include <spinscale/spinLock.h>
|
||||
|
||||
// Custom hash function for std::pair<uint8_t, uint8_t>
|
||||
@@ -96,16 +96,6 @@ private:
|
||||
std::optional<std::string> detectSmoIp(const std::string& deviceIP);
|
||||
uint32_t getSubnetMaskFor(uint8_t nbits);
|
||||
|
||||
class ConnectReq;
|
||||
class ConnectToKnownDeviceReq;
|
||||
class ConnectByDeviceIdentifierReq;
|
||||
class ExecuteHandshakeReq;
|
||||
class DisconnectReq;
|
||||
class EnablePcloudDataReq;
|
||||
class DisablePcloudDataReq;
|
||||
class SetReturnModeReq;
|
||||
class GetReturnModeReq;
|
||||
|
||||
public:
|
||||
enum class ReturnMode : uint8_t
|
||||
{
|
||||
@@ -146,37 +136,30 @@ public:
|
||||
// Utility methods
|
||||
std::optional<std::string> getSmoIp(const std::string& deviceIP);
|
||||
|
||||
// Callback function type definitions for async methods
|
||||
typedef std::function<void(bool success)> connectReqCbFn;
|
||||
typedef std::function<
|
||||
void(bool success, const std::string& ipAddr)>
|
||||
connectToKnownDeviceReqCbFn;
|
||||
typedef std::function<
|
||||
void(bool success, const std::string& ipAddr)>
|
||||
connectByDeviceIdentifierReqCbFn;
|
||||
typedef std::function<void(bool success)> executeHandshakeReqCbFn;
|
||||
typedef std::function<void(bool success)> disconnectReqCbFn;
|
||||
typedef std::function<void(bool success)> enablePcloudDataReqCbFn;
|
||||
typedef std::function<void(bool success)> disablePcloudDataReqCbFn;
|
||||
typedef std::function<void(bool success)> setReturnModeReqCbFn;
|
||||
typedef std::function<void(bool success, uint8_t returnMode)>
|
||||
getReturnModeReqCbFn;
|
||||
struct ConnectIpResult
|
||||
{
|
||||
bool success = false;
|
||||
std::string ipAddr;
|
||||
};
|
||||
|
||||
// Async connection methods
|
||||
void connectReq(sscl::cps::Callback<connectReqCbFn> callback);
|
||||
void connectToKnownDeviceReq(
|
||||
sscl::cps::Callback<connectToKnownDeviceReqCbFn> callback);
|
||||
void connectByDeviceIdentifierReq(
|
||||
sscl::cps::Callback<connectByDeviceIdentifierReqCbFn> callback);
|
||||
void executeHandshakeReq(
|
||||
const std::string& deviceIP,
|
||||
sscl::cps::Callback<executeHandshakeReqCbFn> callback);
|
||||
void disconnectReq(sscl::cps::Callback<disconnectReqCbFn> callback);
|
||||
void enablePcloudDataReq(sscl::cps::Callback<enablePcloudDataReqCbFn> callback);
|
||||
void disablePcloudDataReq(sscl::cps::Callback<disablePcloudDataReqCbFn> callback);
|
||||
void setReturnModeReq(
|
||||
uint8_t returnMode, sscl::cps::Callback<setReturnModeReqCbFn> callback);
|
||||
void getReturnModeReq(sscl::cps::Callback<getReturnModeReqCbFn> callback);
|
||||
sscl::co::ViralNonPostingInvoker<bool> connectCReq();
|
||||
sscl::co::ViralNonPostingInvoker<ConnectIpResult> connectToKnownDeviceCReq();
|
||||
sscl::co::ViralNonPostingInvoker<ConnectIpResult> connectByDeviceIdentifierCReq();
|
||||
sscl::co::ViralNonPostingInvoker<bool> executeHandshakeCReq(
|
||||
const std::string& deviceIP);
|
||||
sscl::co::ViralNonPostingInvoker<bool> disconnectCReq();
|
||||
sscl::co::ViralNonPostingInvoker<bool> enablePcloudDataCReq();
|
||||
sscl::co::ViralNonPostingInvoker<bool> disablePcloudDataCReq();
|
||||
|
||||
struct GetReturnModeResult
|
||||
{
|
||||
bool success = false;
|
||||
uint8_t returnMode = 0;
|
||||
};
|
||||
|
||||
sscl::co::ViralNonPostingInvoker<bool> setReturnModeCReq(uint8_t returnMode);
|
||||
sscl::co::ViralNonPostingInvoker<GetReturnModeResult> getReturnModeCReq();
|
||||
|
||||
public:
|
||||
comms::DiscoveredDevice discoveredDevice;
|
||||
|
||||
Reference in New Issue
Block a user