From f900fe67c52b58b9dca9ec5dc8d3dea944eeb87f Mon Sep 17 00:00:00 2001 From: Javier Dal Monte Casoni Date: Wed, 18 Feb 2026 20:06:55 -0700 Subject: [PATCH 1/2] ADD runcam interface to remote repos - feat: Add new commands and UI improvements to Runcam interface --- Runcam_6/New_RunCam_interface.cpp | 308 ++++++++++++++++++++++++++++++ Runcam_6/New_RunCam_interface.exe | Bin 0 -> 269343 bytes Runcam_6/New_RunCam_registry.h | 57 ++++++ Runcam_6/README.md | 71 +++++++ 4 files changed, 436 insertions(+) create mode 100644 Runcam_6/New_RunCam_interface.cpp create mode 100644 Runcam_6/New_RunCam_interface.exe create mode 100644 Runcam_6/New_RunCam_registry.h create mode 100644 Runcam_6/README.md diff --git a/Runcam_6/New_RunCam_interface.cpp b/Runcam_6/New_RunCam_interface.cpp new file mode 100644 index 0000000..a95fb46 --- /dev/null +++ b/Runcam_6/New_RunCam_interface.cpp @@ -0,0 +1,308 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "New_RunCam_registry.h" + +// --- CRC8 DVB-S2 Calculator --- +uint8_t crc8_dvb_s2(const uint8_t* data, size_t len) { + uint8_t crc = 0x00; + for (size_t i = 0; i < len; ++i) { + crc ^= data[i]; + for (int j = 0; j < 8; ++j) { + if (crc & 0x80) crc = (crc << 1) ^ 0xD5; + else crc <<= 1; + } + } + return crc; +} + +// --- FSM States --- +enum class RunCamState { Idle, WaitingResponse, Success, Error, Timeout, Disconnected }; +enum class RxState { WaitHeader, Buffering }; + +// --- Request Context --- +struct RunCamRequest { + std::vector packet; + int retries; + DWORD sendTime; + bool awaitingResponse; + std::function&, bool)> callback; +}; + +// --- RunCam Serial Class --- +class RunCamSerialFSM { +public: + bool blindMode = true; // DEFAULT ON - Send commands without waiting for response, assume success. + +private: + HANDLE hSerial = INVALID_HANDLE_VALUE; + RunCamState state = RunCamState::Idle; + std::queue requestQueue; + RunCamRequest currentRequest; + int maxRetries = 3; + int timeoutMs = 500; + RxState rxState = RxState::WaitHeader; + std::vector rxBuffer; + size_t currentExpectedLen = 5; + +public: + bool connect(const std::string& portName) { + hSerial = CreateFileA(portName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hSerial == INVALID_HANDLE_VALUE) return false; + + DCB dcb = {0}; + dcb.DCBlength = sizeof(dcb); + GetCommState(hSerial, &dcb); + dcb.BaudRate = CBR_115200; + dcb.ByteSize = 8; + dcb.StopBits = ONESTOPBIT; + dcb.Parity = NOPARITY; + SetCommState(hSerial, &dcb); + + COMMTIMEOUTS timeouts = {0}; + timeouts.ReadIntervalTimeout = 20; + timeouts.ReadTotalTimeoutConstant = 50; + timeouts.WriteTotalTimeoutConstant = 50; + SetCommTimeouts(hSerial, &timeouts); + + state = RunCamState::Idle; + return true; + } + + void disconnect() { + if (hSerial != INVALID_HANDLE_VALUE) CloseHandle(hSerial); + hSerial = INVALID_HANDLE_VALUE; + state = RunCamState::Disconnected; + } + + void queueRequest(const std::vector& packet, std::function&, bool)> cb = nullptr) { + RunCamRequest req; + req.packet = packet; + req.retries = 0; + req.sendTime = 0; + req.awaitingResponse = false; + req.callback = cb; + requestQueue.push(req); + } + + void processFSM() { + switch (state) { + case RunCamState::Idle: + if (!requestQueue.empty()) { + currentRequest = requestQueue.front(); + requestQueue.pop(); + + // Flush and Send + rxState = RxState::WaitHeader; + rxBuffer.clear(); + PurgeComm(hSerial, PURGE_RXCLEAR | PURGE_RXABORT); + sendCommand(currentRequest.packet, true); + currentRequest.sendTime = GetTickCount(); + + if (blindMode) { + Sleep(50); // Tiny physical delay + state = RunCamState::Success; + if (currentRequest.callback) currentRequest.callback({}, true); + } else { + state = RunCamState::WaitingResponse; + } + } + break; + + case RunCamState::WaitingResponse: + if (GetTickCount() - currentRequest.sendTime > timeoutMs) { + state = RunCamState::Timeout; // Simple timeout for now + if (currentRequest.callback) currentRequest.callback({}, false); + } else if (processIncomingBytes()) { + state = RunCamState::Success; + if (currentRequest.callback) currentRequest.callback(rxBuffer, true); + } + break; + + case RunCamState::Success: + case RunCamState::Timeout: + case RunCamState::Error: + state = RunCamState::Idle; + break; + default: break; + } + } + +private: + void sendCommand(const std::vector& basePacket, bool appendCRC) { + std::vector packet = basePacket; + if (appendCRC) { + uint8_t crc = crc8_dvb_s2(packet.data(), packet.size()); + packet.push_back(crc); + } + DWORD bytesWritten; + WriteFile(hSerial, packet.data(), packet.size(), &bytesWritten, NULL); + } + + bool processIncomingBytes() { + uint8_t byte; + DWORD read; + while (ReadFile(hSerial, &byte, 1, &read, NULL) && read > 0) { + switch (rxState) { + case RxState::WaitHeader: + if (byte == 0xCC) { + rxBuffer.clear(); + rxBuffer.push_back(byte); + rxState = RxState::Buffering; + } + break; + case RxState::Buffering: + rxBuffer.push_back(byte); + if (rxBuffer.size() >= currentExpectedLen) { + rxState = RxState::WaitHeader; + return validateCRC(rxBuffer); + } + break; + } + } + return false; + } + + bool validateCRC(const std::vector& data) { + if (data.size() < 2) return false; + uint8_t crc = data.back(); + return crc8_dvb_s2(data.data(), data.size() - 1) == crc; + } +}; + +// --- MAIN MENU INTERFACE --- +int main() { + RunCamSerialFSM cam; + cam.blindMode = true; + + std::cout << "--- RUNCAM CONTROLLER (BLIND FSM) ---" << std::endl; + std::cout << "Enter COM Port: "; + std::string comPort; + std::cin >> comPort; + std::cin.ignore(1000, '\n'); // Clear buffer + + if (!cam.connect("\\\\.\\COM" + comPort)) { + std::cerr << "ERROR: Check COM port!" << std::endl; + return 1; + } + + uint8_t textCmdID = 0x22; // Default to Horizontal (Can be toggled) + bool running = true; + + while (running) { + system("cls"); + std::cout << "--------------------------------" << std::endl; + std::cout << "--- SOAR RUNCAM CONTROLLER ---" << std::endl; + std::cout << "--------------------------------" << std::endl; + std::cout << "" << std::endl; + std::cout << " [1] Power Toggle (0x01)" << std::endl; + std::cout << " [2] Start Record (0x03) - Non Functional?" << std::endl; + std::cout << " [3] Stop Record (0x04)- Non Functional?" << std::endl; + std::cout << " [4] WiFi Button (0x00)" << std::endl; + std::cout << " [5] Change Mode (0x05)" << std::endl; + std::cout << " [9] Get Info (0x00)" << std::endl; + std::cout << "[10] Get Settings (0x10)" << std::endl; + std::cout << "[11] Read Detail (0x11)" << std::endl; + std::cout << "[12] Write Setting (0x13)" << std::endl; + std::cout << "--------------------------------" << std::endl; + std::cout << " [6] OSD Menu OPEN (Locks Camera!)" << std::endl; + std::cout << " [7] OSD Menu CLOSE (Unlocks Camera)" << std::endl; + std::cout << " [8] Write Text (Requires Open [6])" << std::endl; + std::cout << "[13] OSD ENTER PRESS" << std::endl; + std::cout << "[14] OSD ENTER RELEASE" << std::endl; + std::cout << "-------- OSD NAVIGATION --------" << std::endl; + std::cout << " [w] OSD UP" << std::endl; + std::cout << " [a] OSD LEFT" << std::endl; + std::cout << " [s] OSD DOWN" << std::endl; + std::cout << " [d] OSD RIGHT" << std::endl; + std::cout << "--------------------------------" << std::endl; + std::cout << " [p] Protocol Toggle (Current: " << (textCmdID == 0x22 ? "0x22 Horizontal" : "0x23 Vertical") << ")" << std::endl; + std::cout << " [x] Exit" << std::endl; + + std::cout << "\n Command >> "; + std::string input; + std::getline(std::cin, input); + char key = input.empty() ? 0 : input[0]; + + if (input == "10") key = 'g'; + if (input == "11") key = 'h'; + if (input == "12") key = 'i'; + if (input == "13") key = 'j'; + if (input == "14") key = 'k'; + + switch (key) { + case '1': cam.queueRequest({0xCC, CMD_CAM_CONTROL, ACT_POWER_BTN}); break; + case '2': cam.queueRequest(RunCamHex::START_REC); break; + case '3': cam.queueRequest(RunCamHex::STOP_REC); break; + case '4': cam.queueRequest(RunCamHex::WIFI_BTN); break; + case '5': cam.queueRequest(RunCamHex::CHANGE_MODE); break; + case '6': + std::cout << "Opening OSD..." << std::endl; + cam.queueRequest(RunCamHex::OSD_OPEN); + break; + case '7': + std::cout << "Closing OSD..." << std::endl; + cam.queueRequest(RunCamHex::OSD_CLOSE); + break; + case '8': { + int x, y; + std::string text; + std::cout << "\n--- WRITE TEXT (" << std::hex << (int)textCmdID << ") ---" << std::endl; + std::cout << "X (0-29): "; std::cin >> x; + std::cout << "Y (0-15): "; std::cin >> y; + std::cin.ignore(1000, '\n'); + std::cout << "Text: "; std::getline(std::cin, text); + std::vector packet = {0xCC, textCmdID, (uint8_t)text.length(), (uint8_t)x, (uint8_t)y}; + for(char c : text) packet.push_back((uint8_t)c); + cam.queueRequest(packet); + break; + } + case '9': cam.queueRequest(RunCamHex::GET_INFO); break; + case 'g': cam.queueRequest(RunCamHex::GET_SETTINGS); break; + case 'h': cam.queueRequest(RunCamHex::READ_DETAIL); break; + case 'i': cam.queueRequest(RunCamHex::WRITE_SETTING); break; + case 'j': cam.queueRequest(RunCamHex::OSD_ENTER_PRESS); break; + case 'k': cam.queueRequest(RunCamHex::OSD_ENTER_RELEASE); break; + case 'w': { + std::vector packet = {0xCC, CMD_5KEY_PRESS, OSD_UP}; + cam.queueRequest(packet); + break; + } + case 'a': { + std::vector packet = {0xCC, CMD_5KEY_PRESS, OSD_LEFT}; + cam.queueRequest(packet); + break; + } + case 's': { + std::vector packet = {0xCC, CMD_5KEY_PRESS, OSD_DOWN}; + cam.queueRequest(packet); + break; + } + case 'd': { + std::vector packet = {0xCC, CMD_5KEY_PRESS, OSD_RIGHT}; + cam.queueRequest(packet); + break; + } + case 'p': + textCmdID = (textCmdID == 0x22) ? 0x23 : 0x22; + break; + case 'x': running = false; break; + } + + std::cout << " [Sending...]"; + for(int i=0; i<5; i++) { + cam.processFSM(); + Sleep(20); + } + } + + cam.disconnect(); + return 0; +} \ No newline at end of file diff --git a/Runcam_6/New_RunCam_interface.exe b/Runcam_6/New_RunCam_interface.exe new file mode 100644 index 0000000000000000000000000000000000000000..d0a7d2e25dd3e28c87dcb984ae7e1a750edc04bc GIT binary patch literal 269343 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 fA>IR&81jE9{iT^b|O1ofla6^uI~Q +#include + +// --- PROTOCOL CONSTANTS --- +const uint8_t RC_HEADER = 0xCC; + +// --- 1. COMMAND IDs (The "Category") --- +enum CommandID : uint8_t { + CMD_GET_INFO = 0x00, + CMD_CAM_CONTROL = 0x01, + CMD_5KEY_PRESS = 0x02, + CMD_5KEY_RELEASE = 0x03, + CMD_OSD_HANDSHAKE = 0x04, + CMD_GET_SETTINGS = 0x10, + CMD_READ_DETAIL = 0x11, + CMD_WRITE_SETTING = 0x13, + CMD_WRITE_STRING = 0x22 +}; + +// --- 2. CAMERA CONTROL ACTIONS (Payloads for CMD 0x01) --- +enum ControlAction : uint8_t { + ACT_WIFI_BTN = 0x00, + ACT_POWER_BTN = 0x01, + ACT_CHANGE_MODE = 0x02, + ACT_START_REC = 0x03, + ACT_STOP_REC = 0x04 +}; + +// --- 3. 5-KEY OSD ACTIONS (Payloads for CMD 0x02) --- +enum OSDAction : uint8_t { + OSD_ENTER = 0x01, + OSD_LEFT = 0x02, + OSD_RIGHT = 0x03, + OSD_UP = 0x04, + OSD_DOWN = 0x05 +}; + +// --- 4. PRE-CALCULATED PACKETS --- +namespace RunCamHex { + const std::vector GET_INFO = {0xCC, 0x00, 0x00}; + const std::vector START_REC = {0xCC, 0x01, 0x03}; + const std::vector STOP_REC = {0xCC, 0x01, 0x04}; + const std::vector OSD_OPEN = {0xCC, 0x04, 0x01}; + const std::vector OSD_CLOSE = {0xCC, 0x04, 0x02}; + const std::vector CHANGE_MODE = {RC_HEADER, CMD_CAM_CONTROL, ACT_CHANGE_MODE}; + const std::vector WIFI_BTN = {RC_HEADER, CMD_CAM_CONTROL, ACT_WIFI_BTN}; + const std::vector OSD_ENTER_PRESS = {RC_HEADER, CMD_5KEY_PRESS, OSD_ENTER}; + const std::vector OSD_ENTER_RELEASE = {RC_HEADER, CMD_5KEY_RELEASE, OSD_ENTER}; + const std::vector GET_SETTINGS = {RC_HEADER, CMD_GET_SETTINGS, 0x00}; + const std::vector READ_DETAIL = {RC_HEADER, CMD_READ_DETAIL, 0x00}; + const std::vector WRITE_SETTING = {RC_HEADER, CMD_WRITE_SETTING, 0x00}; +} + +#endif // NEW_TEST_RUNCAM_REGISTRY_H diff --git a/Runcam_6/README.md b/Runcam_6/README.md new file mode 100644 index 0000000..bbe9b7a --- /dev/null +++ b/Runcam_6/README.md @@ -0,0 +1,71 @@ + +# RunCam Serial Interface (Testing Tool) + +This directory contains a C++ command-line tool for testing and controlling RunCam devices over a serial (UART/COM) connection. It is intended for development and diagnostic purposes mainly. + +## Features + +- Send basic control commands to a RunCam (power(simulation - can not turn on/off), OSD, etc.) +- Write custom text to the OSD +- Simple finite state machine (FSM) for command queueing +- Supports "blind mode" (no response required) + +## Usage + +1. **Build the Project** + +- Open the project in your C++ IDE or use a command-line compiler (e.g., MSVC, MinGW). +- Ensure you are building on **Windows** (uses Win32 serial APIs). + +2. **Connect the RunCam** + +- Attach the RunCam to your PC via a USB-to-serial adapter. +- Note the COM port number (e.g., `COM3`). + +3. **Run the Interface** + +- Launch the compiled executable. +- When prompted, enter the COM port **number** (e.g., `3` for `COM3`). + +4. **Menu Options** + +### Use the keyboard to select commands: + +- `[1]` Power Toggle +- `[2]` Start Record - Non Functional (At least outside OSD) +- `[3]` Stop Record - Non Functional (At least outside OSD) +- `[4]` WiFi Button +- `[5]` Change Mode +- ----- OSD and settings ----- +- `[6]` OSD Menu OPEN (locks camera) +- `[7]` OSD Menu CLOSE (unlocks camera) +- `[8]` Write Text (requires OSD open) +- `[9]` Get Info +- `[10]` Get Settings +- `[11]` Read Detail +- `[12]` Write Setting +- ----- OSD Navigation ----- +- `[13]` OSD ENTER PRESS +- `[14]` OSD ENTER RELEASE +- `[w]` OSD UP +- `[a]` OSD LEFT +- `[s]` OSD DOWN +- `[d]` OSD RIGHT +- `[p]` Toggle protocol for text (0x22/0x23) +- `[x]` Exit + +5. **Notes** + +- The tool defaults to "blind mode" (commands are sent without waiting for a response). +- For text writing, you will be prompted for X/Y coordinates and the text string. +- OSD must be open to write text. +- This tool is for **testing and development**. Use with caution on production devices. + +## File Overview + +- `New_RunCam_interface.cpp` — Main interface and FSM logic +- `New_RunCam_registry.h` — Protocol constants and packet templates + +## Disclaimer + +This tool is provided for development and testing only. Use at your own risk. Ensure you have backups and do not use on critical hardware without proper validation. From 3d7f582faaaaea4dca4c58ae3235877e5b437c07 Mon Sep 17 00:00:00 2001 From: Javier Dal Monte Casoni Date: Wed, 18 Feb 2026 20:10:26 -0700 Subject: [PATCH 2/2] ADD runcam interface to remote repos - feat: Add new commands and UI improvements to Runcam interface --- Runcam_6/New_RunCam_registry.h | 2 +- Runcam_6/README.md | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Runcam_6/New_RunCam_registry.h b/Runcam_6/New_RunCam_registry.h index 81f0eba..325f60e 100644 --- a/Runcam_6/New_RunCam_registry.h +++ b/Runcam_6/New_RunCam_registry.h @@ -7,7 +7,7 @@ // --- PROTOCOL CONSTANTS --- const uint8_t RC_HEADER = 0xCC; -// --- 1. COMMAND IDs (The "Category") --- +// --- 1. COMMAND IDs --- enum CommandID : uint8_t { CMD_GET_INFO = 0x00, CMD_CAM_CONTROL = 0x01, diff --git a/Runcam_6/README.md b/Runcam_6/README.md index bbe9b7a..53c9d94 100644 --- a/Runcam_6/README.md +++ b/Runcam_6/README.md @@ -59,13 +59,9 @@ This directory contains a C++ command-line tool for testing and controlling RunC - The tool defaults to "blind mode" (commands are sent without waiting for a response). - For text writing, you will be prompted for X/Y coordinates and the text string. - OSD must be open to write text. -- This tool is for **testing and development**. Use with caution on production devices. +- This tool is for **testing and development**. ## File Overview - `New_RunCam_interface.cpp` — Main interface and FSM logic - `New_RunCam_registry.h` — Protocol constants and packet templates - -## Disclaimer - -This tool is provided for development and testing only. Use at your own risk. Ensure you have backups and do not use on critical hardware without proper validation.