Our High Level protocol include a 1 byte message code. The reality is that we can also add PID’s as messages with an object containing several parameters. In fact we talked about reserving ranges of PID’s for special needs. With a 2 byte integer we have 65536 possibilities so if we reserve 0 – 0x7FFF for parameters we can use the ranges above for special needs.
I am thinking about something like this:
- Bottom PID range for variables/Objects.
- A range for common, mandatory objects like firmware information etc.
- A range for special purpose PID’s like envelope etc.
- A range for standard commands (restart etc) or should this be in the main message code?
- A range for device specific commands.
As for the main message code we need:
- – Support for the start-up sequence.
- – Link maintenance messages (ack, nack, repeat etc).
- – A generic message to act as a container for PID commands that is neither read or write.
- – A generic read message.
- – A generic write message.
- – A subscription/unsubscribe message.
- – A range dedicated for device specific messages.
- – A heartbeat/Status message.
- – Error messages.
What else? Let’s leave this for now. This is an early draft and we will definitely be adding stuff here as we dig into the details. With both a 1 byte main message code and the possibility to use PID ranges as sub-messages I think we should be well covered. We can even let the PID ranges be message specific if we need to.