By controllers i’m presuming you are referring to joysticks, if not, then completely disregard this.
The controlers give input to the OI, which sends whatever data you want it to sends it’s data to the RC, which uses whatever data you want to use.
In the default code, under the IFI_Aliases file, IFI makes you some nice aliases for the various buttons. The obvious ones r the x and y axies, p1_x and p1_y. The number can vary based on where on the OI the controller is plugged into (port 1, 2, 3, or 4). This returns a value between 0 and 255.
The z axis, i’m guessing, is the aux wheel. On the old controllers, it was that wheel on the left side of the joystick (not the calibration one). It returns a value between 0 and 255.
Then, there are the buttons. There is a top button, and a trigger button (for all IRI is concerned, that’s what they call them). There are also 2 aux buttons, which can be located anywhere (effectively). Hooking up the OI to a computer makes it easy to determine which button on the controller is which data bit. When the buttons are pressed, they return a 1, when they are not pressed, they return a 0.
And, here’s a programing tip: Make your own Aliases file, call it “team#_aliases.h” and include it into your user routines file. In the aliases file, define your own aliases. For example, if the p1_y is the left drive, put this into the code:
#define STICK_LEFT_DRIVE p1_y
Use of aliases will make life easier when trying to remember which stick does what.
If there’s anything else you don’t understand, PM me and i’ll clarify asap.