This commit is contained in:
Timur A. Fatkhullin 2024-10-30 23:02:32 +03:00
parent 9cde583688
commit ff42a30717
3 changed files with 19 additions and 9 deletions

View File

@ -52,10 +52,16 @@ public:
/* PUBLIC METHODS */
IdentT ident() const { return ident; }
ident_t ident() const
{
return _ident;
}
void operator()() { _execFunc(); }
void operator()()
{
_execFunc();
}
};

View File

@ -108,9 +108,10 @@ namespace adc
class AdcDeviceNetServer : public AdcGenericNetServer
{
protected:
public:
typedef std::vector<char> serialized_t;
protected:
class DeviceWrapper
{
public:
@ -134,8 +135,8 @@ protected:
DeviceWrapper() : _id()
{
// null device
std::string_view is{"NULL-DEVICE"};
std::ranges::copy(_id, std::back_inserter(_id));
std::string_view id{"NULL-DEVICE"};
std::ranges::copy(id, std::back_inserter(_id));
};
template <interfaces::adc_device_c DeviceT,
@ -375,7 +376,7 @@ public:
virtual ~AdcDeviceNetServer() = default;
template <interfaces::adc_device_c DeviceT,
typename IdSerialT = traits::adc_char_identity<typename DeviceT::ident_t>,
typename IdSerialT = traits::adc_char_identity<serialized_t>,
typename AttrIdDeserialT = traits::adc_char_identity<typename DeviceT::attr_ident_t>,
typename CmdIdDeserialT = traits::adc_char_identity<typename DeviceT::cmd_ident_t>>
AdcDeviceNetServer& addDevice(DeviceT* dev_ptr,

View File

@ -78,7 +78,7 @@ int main(int argc, char* argv[])
// read-only attr
dev2.addAttribute({0x1, [&dev1_val1]() { return dev1_val1; }});
// write-only
dev2.addAttribute({0x2, [&dev1_val1](const int& v) { dev1_val1 = v; }});
dev2.addAttribute({0xff, [&dev1_val1](const int& v) { dev1_val1 = v; }});
/* COMMANDLINE OPTS */
@ -116,12 +116,15 @@ int main(int argc, char* argv[])
asio::signal_set signals(io_ctx, SIGINT, SIGTERM);
signals.async_wait([&](std::error_code, int) { io_ctx.stop(); });
using server_t = adc::impl::AdcDeviceNetServerASIO;
adc::impl::AdcDeviceNetServerASIO server("TEST SRV", io_ctx);
server.setupSignals();
server.addDevice(&dev1);
server.addDevice(&dev2, adc::traits::adc_char_identity<std::string>{},
adc::utils::AdcDefaultValueConverter<>::serialize<std::string, Device2::attr_ident_t>);
server.addDevice(
&dev2, {},
// adc::traits::adc_char_identity<server_t::serialized_t>{},
adc::utils::AdcDefaultValueConverter<>::deserialize<Device2::attr_ident_t, server_t::serialized_t>);
auto epnt = opt_result["endpoints"].as<std::vector<std::string>>();