Our devices are configured via Open Sound Control. The communication scheme we use is adaptable and pretty straight forward: With each OSC request also a (unique) Int32 as message UUID is sent. The device handles the command and replies with a /fail or /success message. Both messages return your UUID and queried path as first two reply arguments. The fail message additionally returns an error string, the success message may return requested reply arguments. The default configuration port is set to port 4444. The device sends its replies to the same IP/port the request was sent from.
Here an example session with pseudo OSC commands to configure the Chimaera.
send request to get the firware version
$ oscsend osc.udp://chimaera.local:4444 /info/version i $[RANDOM]
returns a successful answer, the firmware version string
/success iss 30415 "/info/version" "0.3.0 Rev4"
when your request failed, the chimaera will tell you so with an error message
/fail iss 30415 "/info/version" "wrong format, uuid(int32) expected"
to query a given configuration value use the path without any arguments, but the ID
$ oscsend osc.udp://chimaera.local:4444 /sensors/rate i $[RANDOM]
you’ll get the value with the reply
/success isi 17444 "/sensors/rate" 2500
to set a given configuration value, use the path with the new value
$ oscsend osc.udp://chimaera.local:4444 /sensors/rate ii $[RANDOM] 20000
you’ll get a reply whether the value was set or not
/fail iss 18065 "/sensors/rate" "value is out of bound"
With this system, using command UUIDs (which could be implemented as an increasing counter or random numbers) and the /success and /fail answers, it’s straight-forward to build a custom asynchronous configuration system in any programming language or environment.