// ============================================================================= Common::Result Client::handle_command(Protocol::Packet &packet, Common::ByteArray &payload, uint16_t offset) { Common::Result result = Common::Result::OK; CMD cmd = static_cast<CMD>(packet.message.itf.member); switch (cmd) { case NEW_VERSION_AVAILABLE_CMD /* CHECK_VERSION_CMD */: { if (packet.message.isCommand()) { Version version; uint16_t size = version.unpack(payload, offset); /* *INDENT-OFF* */ HF_ASSERT(size != 0, {result = Common::Result::FAIL_ARG;}); /* *INDENT-ON* */ auto code = new_version_available(packet.source, version); Protocol::Response response; response.code = static_cast<Common::Result>(code); Protocol::Message message(packet.message, response.size()); response.pack(message.payload); send(packet.source, message); }