From 30c009fe8f8e51d08940efef87022d8615356208 Mon Sep 17 00:00:00 2001 From: Kyle Schwarz Date: Tue, 4 Nov 2025 16:24:49 -0500 Subject: [PATCH] Device: Refactor online keep alive --- communication/encoder.cpp | 1 + device/device.cpp | 5 ++++- include/icsneo/communication/command.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/communication/encoder.cpp b/communication/encoder.cpp index 6aad15b..90b1dad 100644 --- a/communication/encoder.cpp +++ b/communication/encoder.cpp @@ -284,6 +284,7 @@ bool Encoder::encode(const Packetizer& packetizer, std::vector& result, case Command::RequestSerialNumber: case Command::EnableNetworkCommunication: case Command::EnableNetworkCommunicationEx: + case Command::KeepAlive: case Command::GetMainVersion: case Command::GetSecondaryVersions: case Command::NeoReadMemory: diff --git a/device/device.cpp b/device/device.cpp index 6c0b0b2..17ea651 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -585,7 +585,10 @@ bool Device::goOnline() { } // (re)start the keeponline - keeponline = std::make_unique([this] { return enableNetworkCommunication(true, onlineTimeoutMs); }, std::chrono::milliseconds(onlineTimeoutMs / 4)); + keeponline = std::make_unique([this] { + static std::vector timeoutBytes = std::vector((uint8_t*)&onlineTimeoutMs, (uint8_t*)&onlineTimeoutMs + sizeof(onlineTimeoutMs)); + return com->sendCommand(Command::KeepAlive, timeoutBytes); + }, std::chrono::milliseconds(onlineTimeoutMs / 4)); online = true; diff --git a/include/icsneo/communication/command.h b/include/icsneo/communication/command.h index 16dbd4e..df8ad09 100644 --- a/include/icsneo/communication/command.h +++ b/include/icsneo/communication/command.h @@ -8,6 +8,7 @@ namespace icsneo { enum class Command : uint8_t { EnableNetworkCommunication = 0x07, EnableNetworkCommunicationEx = 0x08, + KeepAlive = 0x09, NeoReadMemory = 0x40, NeoWriteMemory = 0x41, ClearCoreMini = 0x42,