blob: 3792038e35a55db316b4fe1cce0b7e7ac1ab52c9 [file] [log] [blame]
#ifndef GYRO_BOARD_USB_DIGITAL_H_
#define GYRO_BOARD_USB_DIGITAL_H_
#include "FreeRTOS.h"
#define readGPIO(gpio, chan) ((((gpio)->FIOPIN) >> (chan)) & 1)
// These are the actual pin numbers for all of the digital I(/0) pins on the
// board.
//
// GPIO1 P0.4
// GPIO2 P0.5
// GPIO3 P0.6
// GPIO4 P0.7
// GPIO5 P0.8
// GPIO6 P0.9
// GPIO7 P2.0
// GPIO8 P2.1
// GPIO9 P2.2
// GPIO10 P2.3
// GPIO11 P2.4
// GPIO12 P2.5
//
// DIP0 P1.29
// DIP1 P2.13
// DIP2 P0.11
// DIP3 P0.10
//
// ENC0A 1.20
// ENC0B 1.23
// ENC1A 2.11
// ENC1B 2.12
// ENC2A 0.21
// ENC2B 0.22
// ENC3A 0.19
// ENC3B 0.20
void digital_init(void);
inline int digital(int channel) {
if (channel < 1) {
return -1;
} else if (channel < 7) {
int chan = channel + 3;
return readGPIO(GPIO0, chan);
} else if (channel < 13) {
int chan = channel - 7;
return readGPIO(GPIO2, chan);
}
return -1;
}
int dip_switch(int channel);
// Boolean set by digital_init() which says whether or not this is the 3rd
// robot.
extern int is_bot3;
#endif // GYRO_BOARD_USB_DIGITAL_H_