Config is now loaded at runtime via WebSocket (ConfigCtrlMessage) instead of from hardcoded TOML files. The emulator starts with no devices and waits for clients to send configuration. - Define FlatBuffers schemas: EmulationConfig, ComposeDeviceConfig, BaseDeviceConfig with recursive DeviceConfig union - Rename MemSegment.start → addr (flatcc builder/reader name collision) - Add ConfigCtrlMessage handler: validates STILL state, walks the device tree depth-first, assigns numeric IDs, responds with DeviceIdMappingNotif or ConfigLoadError - Add fb_build_config_device_id_mapping() and fb_build_config_error() FlatBuffer builders - Remove hardcoded device loading from main.c; iterate dynamically loaded devices in the exec loop - Fix double-free: freeConf() already frees the struct itself, remove redundant free() calls in config.c and base_device.c - Fix heap-buffer-overflow in device parseSpecsFromConfig: malloc for segment name was missing +1 for the null terminator Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
15 lines
360 B
C
15 lines
360 B
C
#ifndef __PROTO_HANDLERS_CONFIG_H__
|
|
#define __PROTO_HANDLERS_CONFIG_H__
|
|
|
|
#include "context.h"
|
|
#include "proto/handlers/ws.h"
|
|
#include "config_ctrl_reader.h"
|
|
|
|
void handleConfigCtrlMessage(
|
|
hmmmm_ctrl_config_ctrl_ConfigCtrlMessage_table_t msg,
|
|
uint64_t nonce,
|
|
ClientContext* ctx,
|
|
EmulContext* emulContext);
|
|
|
|
#endif // __PROTO_HANDLERS_CONFIG_H__
|