I would suggest that to allow for the future that you
format the usb communications in the form of packets
that way when you want to add a new feature you just
add a new packet format in stead of a whole new
rewrite of the communications format.
Example for your Local throttle.
below are bytes
1. Packet Type # for Local throttle
2. Packet Length = Number of bytes following here
3. Local throttle #
4. Local throttle, direction
5. Local throttle, speed
6. Local throttle, special functions
if your building some simple throttle's using a pic or
amr you might like to have a display attached. To
update the display you would just add a new packet
format for the throttle display data
1. Packet Type # for Local throttle Display
2. Packet Length
3. Local throttle #
4..255 Display bytes
By the same token DCC input/output packets could have
a field to identify the Booster.
Programming track could be booster #0 with the
mainline booster #1. this would even allow future to
have many boosters running off the same port and
connecting output of dcc device that generates DCC
signal to be read for retransmission.