Add untested code to allow multiple robots on the same network

This commit is contained in:
2026-03-10 16:12:41 -04:00
parent 023fc1960e
commit 0d3323255b
3 changed files with 20 additions and 4 deletions

View File

@@ -17,7 +17,7 @@ public class ControlLibrary : MonoBehaviour
public static extern int send_angle_control(int module_id, int angle);
[DllImport("libc_control")]
private static extern IntPtr get_configuration(out int module_id); // the data this points to will be invalidated when called again
private static extern IntPtr get_configuration(out int module_id, int leader_id); // the data this points to will be invalidated when called again
[DllImport("libc_control")]
public static extern int send_string_control(int module_id, string s);
@@ -41,11 +41,27 @@ public class ControlLibrary : MonoBehaviour
[DllImport("libc_control")]
public static extern void control_sentry_shutdown();
[DllImport("libc_control")]
private static extern IntPtr get_leaders(out int length);
public static Frontend.RobotConfiguration getRobotConfiguration() // this is not thread safe
public static int[] getRobotLeaders() {
int length;
IntPtr ptr = get_leaders(out length);
byte[] bytes = new byte[length];
Marshal.Copy(ptr, bytes, 0, length);
int[] ints = new int[length];
for (int i = 0; i < length; i++) {
ints[i] = bytes[i];
}
return ints;
}
public static Frontend.RobotConfiguration getRobotConfiguration(int leader_id) // this is not thread safe
{
int size;
IntPtr ptr = get_configuration(out size);
IntPtr ptr = get_configuration(out size, leader_id);
byte[] buffer = new byte[size];
Marshal.Copy(ptr, buffer, 0, size);