110 "This app's own name - its Logger label, its bus identity's name, and "
111 "ConsoleApp's own CLI --help header/single-instance lock file name "
112 "(read straight off AppContext::app_name, not a separate copy)",
115 "app_description",
"Human-readable one-line app description (CLI --help)",
124 "Base directory for this app's own data (firmware-file search "
125 "directory, database, board cache - see this file's own doc comment) "
126 "- used as-is, deliberately kept at its historical value",
127 "/usr/local/daemon/lacte"};
129 "bus_multicast_group",
"Multicast group every bus participant joins",
132 "bus_multicast_port",
"Multicast port every bus participant joins", 47761};
134 "shared_bus_address",
135 "This process's ONE shared insitech::bus::Hub<RX,TX> node's own "
136 "address (see AppContext::bus) - distinct from every "
137 "participant's own client address below (kModelBusAddress/kUiBusAddress/"
138 "kDbBusAddress), which each builds its own client onto this same node.",
150 "Directory the diagnostic logger's own (large) file lives under, in "
151 "an app_name subdirectory - also the secondary firmware-search "
152 "directory (used as-is) - NOT this app's own operational data "
153 "(database, cache), see app_dir for that",
154 "/mnt/nand_disk_ext/lacte/"};
162 "Minimum severity level written to the log (0=TRACE, 1=INFO, "
163 "2=WARNING, 3=ERROR)",
175 "model_bus_node_name",
"Identity name for the Model's bus node",
178 "db_bus_node_name",
"Identity name for AppDb's own bus node",
"lacte-db"};
203 "Mount point checked before using the NAND firmware directory "
204 "(log_dir) - the bare mount root, one level up from log_dir itself",
205 "/mnt/nand_disk_ext"};
208 "sysfs new_id file used to bind the pl2303 UART driver to the board's "
210 "/sys/bus/usb-serial/drivers/pl2303/new_id"};
219 "device_name",
"Board UART device path or VID:PID",
"067b:23a3"};
225 "framebuffer_path",
"Framebuffer device node the 'fb' UI renders to",
228 "touch_path",
"Touchscreen input device node the 'fb' UI reads",
229 "/dev/input/event1"};
232 "UART device node the 'fb' UI's HMI/back-board protocol uses",
233 "/dev/ptyhmi-sniff"};
245 "db_name",
"SQLite database file name (lives directly under app_dir)",
248 "firmware_glob",
"Glob TryToUpdate() scans app_dir/log_dir with",
"*.bin"};
251 "Board's USB VID:PID, space-separated (sysfs new_id's own format) — "
252 "written to pl2303_sysfs_path so the board's UART shows up as a device "
253 "node at all. Distinct from device_name: that one names how to *open* "
254 "the device (a path, or the same VID:PID colon-separated), this one is "
255 "only ever used to register it with the kernel driver",
264 "This process's bus node address for the Model "
265 "(bus::kModelBusAddress)",
269 "Hub node address a UI process/thread uses (bus::kUiBusAddress)", 2};
272 "Hub node address AppDb's own internal bus node uses (kDbBusAddress "
276 "model_ui_notifier_address",
277 "Hub node address the Model's second client (a UiBusClient - see "
278 "Model::ConnectBus()) uses purely to push UiCommand/BoardSnapshotEvent "
279 "to the UI - distinct from kModelBusAddress since one client can't be "
280 "registered at two addresses.",
284 "uart_baud_rate",
"Board UART baud rate", 115200};
286 "ui_mode",
"'fb' (framebuffer), 'console', or 'no' (headless)",
"fb"};
288 "check_update_interval_ms",
289 "How often to poll app_dir/log_dir for a new firmware file", 30000};
291 "board_online_timeout_ms",
292 "How long without an info packet before Model reports the board "
298 "hmi_uart_baud_rate",
"Baud rate for hmi_uart_path", 115200};
300 "frame_time_ms",
"Target frame time in ms the 'fb' UI's GUI loop runs at",
305 "vnc_port",
"TCP port the 'fb' UI's VNC (RFB) mirror server listens on",
309 "Classic VNC (RFB DES challenge-response) password, up to 8 characters "
310 "(a real protocol limit, not a bug) - typed manually into the VNC "
311 "viewer at connect time, same as any other VNC server. Empty "
312 "(default) disables the VNC server entirely - there is no "
313 "unauthenticated fallback.",
constexpr ConfigField< int64_t > K_BOARD_ONLINE_TIMEOUT_MS
constexpr ConfigField< const char * > K_FIRMWARE_GLOB
insitech::config::FieldSpec< T > ConfigField
constexpr ConfigField< int64_t > K_BUS_MULTICAST_PORT
constexpr ConfigField< const char * > K_TOUCH_PATH
constexpr ConfigField< int64_t > K_HMI_UART_BAUD_RATE
constexpr ConfigField< const char * > K_APP_NAME
constexpr ConfigField< int64_t > K_UI_BUS_ADDRESS
constexpr ConfigField< int64_t > K_UART_BAUD_RATE
constexpr ConfigField< int64_t > K_MODEL_BUS_ADDRESS
constexpr ConfigField< const char * > K_MODEL_BUS_NODE_NAME
constexpr ConfigField< const char * > K_UI_MODE
constexpr ConfigField< int64_t > K_MODEL_UI_NOTIFIER_ADDRESS
constexpr ConfigField< const char * > K_DB_NAME
constexpr ConfigField< const char * > K_USB_VID_PID
constexpr ConfigField< const char * > K_DEVICE_NAME
constexpr ConfigField< const char * > K_NAND_DISK_PATH
constexpr ConfigField< int64_t > K_LOG_MIN_LEVEL
constexpr ConfigField< const char * > K_DB_BUS_NODE_NAME
constexpr ConfigField< const char * > K_FRAMEBUFFER_PATH
constexpr ConfigField< const char * > K_APP_DESCRIPTION
constexpr ConfigField< const char * > K_LOG_DIR
constexpr auto K_ALL_FIELDS
constexpr ConfigField< const char * > K_APP_DIR
constexpr ConfigField< int64_t > K_SHARED_BUS_ADDRESS
constexpr ConfigField< int64_t > K_VNC_PORT
constexpr ConfigField< const char * > K_BUS_MULTICAST_GROUP
constexpr ConfigField< const char * > K_VNC_PASSWORD
constexpr ConfigField< int64_t > K_CHECK_UPDATE_INTERVAL_MS
constexpr ConfigField< int64_t > K_FRAME_TIME_MS
constexpr ConfigField< const char * > K_PL2303_SYSFS_PATH
constexpr ConfigField< const char * > K_HMI_UART_PATH
constexpr ConfigField< int64_t > K_DB_BUS_ADDRESS