Devices & Commands
A Device in ARES represents a physical laboratory instrument or a software simulation of one. The ARES datamodel standardizes how these instruments describe their capabilities, how they are configured, and how they report their real-time state.
Device Discovery: DeviceInfo
When a device (or its driver) connects to ARES, it provides a DeviceInfo manifest. This manifest tells ARES everything it needs to know to generate a user interface and validate commands.
message DeviceInfo {
string unique_id = 1;
string name = 2;
string type = 3; // e.g., "AlicatMFC", "ThorlabsLaser"
string version = 5;
optional string url = 6; // Remote address for networked devices
// Self-Description
AresStructSchema settings_schema = 7; // Configuration parameters
repeated DeviceCommandDescriptor commands = 8; // Available actions
}
Command Descriptors
Every action a device can take is described by a DeviceCommandDescriptor. This allows ARES to know what inputs a command requires and what output it will return before execution.
message DeviceCommandDescriptor {
string name = 1;
string description = 2;
AresStructSchema input_schema = 5; // Required arguments
AresValueSchema output_schema = 4; // Expected return type
}
Configuration & Connectivity
DeviceConfig & SerialConnection
Devices are configured using DeviceConfig. This includes the driver identifier, whether the device is in "simulation" mode, and physical connection details like serial ports.
message DeviceConfig {
string device_name = 2;
string driver_id = 4;
bool is_simulated = 5;
// Connection specific info
optional SerialConnection serial_info = 13;
AresStruct device_settings = 20; // Matches settings_schema
}
message SerialConnection {
string port_name = 1; // e.g., "COM3", "/dev/ttyUSB0"
optional int32 baud_rate = 3;
}