#pragma once #include "../common/adc_utils.h" #include "adc_netmsg.h" namespace adc { /* ABSTRACT DEVICE DEFAULT APPLICATION-LEVEL NETWORK PROTOCOL DEFINITIONS */ namespace constants { static constexpr char ADC_DEFAULT_KEY_PARAM_DELIMITER[] = " "; static constexpr char ADC_DEFAULT_PARAM_PARAM_DELIMITER[] = " "; } // namespace constants template class AdcDeviceNetMessage : protected AdcKeyValueMessage { using base_t = AdcKeyValueMessage; public: static constexpr std::span keyParamDelimiter{constants::ADC_DEFAULT_KEY_PARAM_DELIMITER, sizeof(constants::ADC_DEFAULT_KEY_PARAM_DELIMITER)}; static constexpr std::span paramParamDelimiter{constants::ADC_DEFAULT_PARAM_PARAM_DELIMITER, sizeof(constants::ADC_DEFAULT_PARAM_PARAM_DELIMITER)}; AdcDeviceNetMessage(ByteSeqT& byte_seq) : base_t(byte_seq) {} template VT keyword() const { auto v = utils::AdcTrimSpaces(base_t::template key()); return VT(v.begin(), v.end()); } auto keyword() const { return keyword(); } template auto params(size_t start = 0, size_t N = std::numeric_limits::max()) { auto val = base_t::template value>(); } }; } // namespace adc