NAME
UAV::Pilot::Wumpus::Server::Backend
DESCRIPTION
Role for Wumpus Backends. A Backend connects directly to the hardware that drives the rover. For instance, the RaspberryPiI2C backend communicates over the Raspberry Pi's I2C interface using a protocol shared by the wumpus_rover Arduino implementation.
Does the UAV::Pilot::Logger
role.
ATTRIBUTES
started
Specifies if this backend has been started yet. Starting it is done by passing a RequestStartupMessage
packet to process_packet()
.
METHODS
process_packet
process_packet( $packet )
Takes the packet and does something with it. Usually, this something is a sensible thing to do.
REQUIRED METHODS/ATTRIBUTES
_packet_request_startup
_packet_request_startup( $packet, $server )
Passed a packet and the server associated with the connection. Handles the initial startup.
_packet_radio_trims
_packet_request_trims( $packet, $server )
Passed a packet and the server associated with the connection. Handles the radio trims.
_packet_radio_out
_packet_radio_out( $packet, $server )
Passed a packet and the server associated with the connection. Handles the radio outputs, which is the primary way of moving.
_ch*_min_out() and _ch*_max_out()
Returns the min/max settings for each channel that will be output by this backend. Channels are numbered 1 through 8.
Why do we map the values at this level? For the Arduino output, wouldn't it be better for it to take specified values and convert it to its own output internally? Perhaps. The reason why it was chosen to do the value mapping here is to make the Arduino end as simple-stupid as possible.