Bowler Communications System
From Neuron Robotics Wiki
The Bowler communication system is designed to be a distributed processing system for micro-controllers and OS based computers. A Device's features are accessed using remote procedure calls called Bowler RPCs. These RPCs are then grouped together into Bowler Namespaces which serve as an interface to a specific sets of functionality( For example, IO manipulation and PID control) Each device is addressable using a IEEE standard MAC address that is unique to that device.
The protocol allows for the host to query a device for implemented name-spaces to allow for zero-configuration.
The network topology is an asymmetric star, with one host (Client) to N devices (Server). The connection between these elements is called a link.
Communicating with the Bowler Communication System consists of sending packets from host to device to establish a link, then packets can be sent in either direction.
A synchronous communication is a transaction initiated by the host and responded to by the device.
Once a link is established, the device can send packets to the host without the host initiating the transaction. These are Asynchronous Transactions consisting of one Upstream Bowler Packet and are used to inform the host of device state updates.
The structure of the bowler packets makes use of "Remote Procedure Calls" or RPC's. An RPC is defined within a namespace, or collection of RPC's. The RPC is a code that will define how the raw data in the data section of the packet is formatted. This formatting needs to be known by both host and device. The Host will use the list of namespaces, that the device reposts back as implementing, to determine compatibility. This allows the application to check the device for the functionality it needs.