Support multiple bots on the same network

This commit is contained in:
2026-03-10 16:15:02 -04:00
parent eca875a791
commit 9986b07362
5 changed files with 56 additions and 3 deletions

View File

@@ -15,6 +15,7 @@ struct ModuleInstance {
uint8_t id;
ModuleType type;
int angle;
uint8_t leader;
};
struct ModuleConnectionInstance {

View File

@@ -19,7 +19,8 @@ LIB_API void cleanup();
LIB_API int send_angle_control(int module_id, int angle);
LIB_API int send_string_control(int module_id, const char *string);
LIB_API double get_distance_control(int module_id);
LIB_API char *get_configuration(int *size_out);
LIB_API char *get_configuration(int *size_out, int leader_id);
LIB_API const uint8_t *get_leaders(int *length);
LIB_API bool remote_call_c(uint8_t function_tag, uint8_t module, const uint8_t *params,
uint16_t params_len, uint8_t *out_buffer, uint16_t out_buffer_capacity,

View File

@@ -93,6 +93,9 @@ class RobotController {
*/
void resetModules();
bool select_leader(uint8_t leader_id);
std::vector<uint8_t> get_leaders();
/**
* \brief Poll for devices accessible to the PC.
*
@@ -103,6 +106,8 @@ class RobotController {
std::optional<std::unique_ptr<std::vector<uint8_t>>>
remote_call(uint8_t function_tag, uint8_t module, const std::vector<uint8_t> &parameters);
uint8_t get_selected_leader();
private:
std::shared_ptr<spdlog::logger> m_logger;
std::unordered_map<uint8_t, std::shared_ptr<Module>> m_id_to_module{};
@@ -118,6 +123,7 @@ class RobotController {
std::thread m_configuration_loop;
std::thread m_sensor_loop;
std::thread m_expiry_looop;
uint8_t m_selected_leader = 0;
void metadata_loop();
void transmit_loop();