Interface layer for the mbed boards ready for the JAVA library

Dependencies:   C12832 LM75B MMA7660 mbed FXOS8700Q

Fork of frdm_serial by Michael Berry

Committer:
Condo2k4
Date:
Fri Jan 06 11:08:56 2017 +0000
Revision:
8:d70e3e3690fd
Parent:
7:238c6fd5c209
Extended LCD functionality.; Temporarily disable LEDs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
azazeal88 1:38f32fc3db2c 1 #include "mbed.h"
co657_mjrb6 0:6891aea05ef2 2 #include "C12832.h"
co657_mjrb6 0:6891aea05ef2 3 #include "LM75B.h"
azazeal88 1:38f32fc3db2c 4 #include "MMA7660.h"
Condo2k4 4:39e949908fc5 5 #include "FXOS8700Q.h"
Condo2k4 4:39e949908fc5 6 #include "comms.h"
Condo2k4 5:d9f8c2f63323 7 #include "main.h"
azazeal88 1:38f32fc3db2c 8
azazeal88 1:38f32fc3db2c 9 //OUTPUTS
azazeal88 1:38f32fc3db2c 10
Condo2k4 4:39e949908fc5 11 DigitalOut lr(PTB22), lg(PTE26), lb(PTB21), xr(D5), xg(D9), xb(PTC12);
azazeal88 1:38f32fc3db2c 12 C12832 lcd(D11, D13, D12, D7, D10);
Condo2k4 5:d9f8c2f63323 13 PwmOut spkr(D6);
co657_mjrb6 0:6891aea05ef2 14
azazeal88 1:38f32fc3db2c 15 //INPUTS
azazeal88 1:38f32fc3db2c 16
azazeal88 1:38f32fc3db2c 17 LM75B temp(D14, D15);
Condo2k4 4:39e949908fc5 18 MMA7660 sAcc(D14, D15);
Condo2k4 4:39e949908fc5 19
Condo2k4 8:d70e3e3690fd 20 I2C i2c(PTE25, PTE24);
Condo2k4 8:d70e3e3690fd 21 //FXOS8700Q fxos(i2c, FXOS8700CQ_SLAVE_ADDR1);
Condo2k4 8:d70e3e3690fd 22 FXOS8700QAccelerometer bAcc(i2c, FXOS8700CQ_SLAVE_ADDR1); // Configured for the FRDM-K64F with onboard sensors
Condo2k4 8:d70e3e3690fd 23 FXOS8700QMagnetometer bMag(i2c, FXOS8700CQ_SLAVE_ADDR1);
Condo2k4 8:d70e3e3690fd 24
Condo2k4 8:d70e3e3690fd 25 //FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
Condo2k4 8:d70e3e3690fd 26 //FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
azazeal88 1:38f32fc3db2c 27
Condo2k4 3:990f8380da21 28 InterruptIn sw2_int(SW2), sw3_int(SW3), up_int(A2), down_int(A3), left_int(A4), right_int(A5), fire_int(D4);
Condo2k4 3:990f8380da21 29 DigitalIn sw2(SW2), sw3(SW3), up(A2), down(A3), left(A4), right(A5), fire(D4);
azazeal88 1:38f32fc3db2c 30
azazeal88 1:38f32fc3db2c 31 AnalogIn pot1(A0), pot2(A1);
co657_mjrb6 0:6891aea05ef2 32
Condo2k4 3:990f8380da21 33 //INTERRUPT FLAGS
co657_mjrb6 0:6891aea05ef2 34
azazeal88 1:38f32fc3db2c 35 uint16_t flags;
azazeal88 1:38f32fc3db2c 36 #define SW2_DOWN 0x0001
azazeal88 1:38f32fc3db2c 37 #define SW2_UP 0x0002
azazeal88 1:38f32fc3db2c 38 #define SW3_UP 0x0004
azazeal88 1:38f32fc3db2c 39 #define SW3_DOWN 0x0008
azazeal88 1:38f32fc3db2c 40 #define UP_UP 0x0010
azazeal88 1:38f32fc3db2c 41 #define UP_DOWN 0x0020
azazeal88 1:38f32fc3db2c 42 #define DOWN_UP 0x0040
azazeal88 1:38f32fc3db2c 43 #define DOWN_DOWN 0x0080
azazeal88 1:38f32fc3db2c 44 #define LEFT_UP 0x0100
azazeal88 1:38f32fc3db2c 45 #define LEFT_DOWN 0x0200
azazeal88 1:38f32fc3db2c 46 #define RIGHT_UP 0x0400
azazeal88 1:38f32fc3db2c 47 #define RIGHT_DOWN 0x0800
azazeal88 1:38f32fc3db2c 48 #define FIRE_UP 0x1000
azazeal88 1:38f32fc3db2c 49 #define FIRE_DOWN 0x2000
co657_mjrb6 0:6891aea05ef2 50
azazeal88 1:38f32fc3db2c 51 //COMMS
co657_mjrb6 0:6891aea05ef2 52
Condo2k4 4:39e949908fc5 53 DataSerial pc(USBTX, USBRX);
co657_mjrb6 0:6891aea05ef2 54
Condo2k4 2:2dcdbb85cae0 55 //INTERRUPT HANDLERS
Condo2k4 2:2dcdbb85cae0 56
azazeal88 1:38f32fc3db2c 57 void sw2Down(){ flags |= SW2_DOWN; }
azazeal88 1:38f32fc3db2c 58 void sw2Up() { flags |= SW2_UP; }
azazeal88 1:38f32fc3db2c 59
azazeal88 1:38f32fc3db2c 60 void sw3Down(){ flags |= SW3_DOWN; }
azazeal88 1:38f32fc3db2c 61 void sw3Up() { flags |= SW3_UP; }
azazeal88 1:38f32fc3db2c 62
azazeal88 1:38f32fc3db2c 63 void upDown(){ flags |= UP_DOWN; }
azazeal88 1:38f32fc3db2c 64 void upUp() { flags |= UP_UP; }
azazeal88 1:38f32fc3db2c 65
azazeal88 1:38f32fc3db2c 66 void downDown(){ flags |= DOWN_DOWN; }
azazeal88 1:38f32fc3db2c 67 void downUp() { flags |= DOWN_UP; }
azazeal88 1:38f32fc3db2c 68
azazeal88 1:38f32fc3db2c 69 void leftDown(){ flags |= LEFT_DOWN; }
azazeal88 1:38f32fc3db2c 70 void leftUp() { flags |= LEFT_UP; }
azazeal88 1:38f32fc3db2c 71
azazeal88 1:38f32fc3db2c 72 void rightDown(){ flags |= RIGHT_DOWN; }
azazeal88 1:38f32fc3db2c 73 void rightUp() { flags |= RIGHT_UP; }
azazeal88 1:38f32fc3db2c 74
azazeal88 1:38f32fc3db2c 75 void fireDown(){ flags |= FIRE_DOWN; }
azazeal88 1:38f32fc3db2c 76 void fireUp() { flags |= FIRE_UP; }
azazeal88 1:38f32fc3db2c 77
Condo2k4 6:adf2837c1e7f 78 //PRETTY WAITING LEDS
Condo2k4 4:39e949908fc5 79
Condo2k4 4:39e949908fc5 80 Ticker waitTicker;
Condo2k4 4:39e949908fc5 81 int ctr;
Condo2k4 4:39e949908fc5 82
Condo2k4 4:39e949908fc5 83 void waitTick() {
Condo2k4 4:39e949908fc5 84 switch(ctr) {
Condo2k4 4:39e949908fc5 85 case 0:
Condo2k4 4:39e949908fc5 86 xr=xg=0; xb=1; break;
Condo2k4 4:39e949908fc5 87 case 1:
Condo2k4 4:39e949908fc5 88 xr=0; xg=xb=1; break;
Condo2k4 4:39e949908fc5 89 case 2:
Condo2k4 4:39e949908fc5 90 xr=xb=0; xg=1; break;
Condo2k4 4:39e949908fc5 91 case 3:
Condo2k4 4:39e949908fc5 92 xb=0; xr=xg=1; break;
Condo2k4 4:39e949908fc5 93 case 4:
Condo2k4 4:39e949908fc5 94 xg=xb=0; xr=1; break;
Condo2k4 4:39e949908fc5 95 case 5:
Condo2k4 5:d9f8c2f63323 96 lr=xg=lb=0; xr=lg=xb=1;
Condo2k4 5:d9f8c2f63323 97 ctr=0; return;
Condo2k4 4:39e949908fc5 98 }
Condo2k4 5:d9f8c2f63323 99 lr=!xr; lg=!xg; lb=!xb;
Condo2k4 4:39e949908fc5 100 ctr++;
Condo2k4 4:39e949908fc5 101 }
Condo2k4 4:39e949908fc5 102
Condo2k4 2:2dcdbb85cae0 103 /*
Condo2k4 2:2dcdbb85cae0 104 Return the state of a requested pin
Condo2k4 2:2dcdbb85cae0 105 */
Condo2k4 5:d9f8c2f63323 106 void read_digital() {
azazeal88 1:38f32fc3db2c 107 bool val;
Condo2k4 5:d9f8c2f63323 108 switch(pc.readChar()) {
Condo2k4 6:adf2837c1e7f 109 case '2': val=!sw2; break;
Condo2k4 6:adf2837c1e7f 110 case '3': val=!sw3; break;
azazeal88 1:38f32fc3db2c 111 case 'u': val=up; break;
azazeal88 1:38f32fc3db2c 112 case 'd': val=down; break;
azazeal88 1:38f32fc3db2c 113 case 'l': val=left; break;
azazeal88 1:38f32fc3db2c 114 case 'r': val=right; break;
azazeal88 1:38f32fc3db2c 115 case 'f': val=fire; break;
azazeal88 1:38f32fc3db2c 116 default: return;
co657_mjrb6 0:6891aea05ef2 117 }
Condo2k4 6:adf2837c1e7f 118 pc.sendBool(val);
co657_mjrb6 0:6891aea05ef2 119 }
co657_mjrb6 0:6891aea05ef2 120
Condo2k4 2:2dcdbb85cae0 121 /*
Condo2k4 2:2dcdbb85cae0 122 Return the state of a requested potentiometer
Condo2k4 2:2dcdbb85cae0 123 */
Condo2k4 5:d9f8c2f63323 124 void read_pot() {
azazeal88 1:38f32fc3db2c 125 float val;
Condo2k4 5:d9f8c2f63323 126 switch(pc.readChar()) {
azazeal88 1:38f32fc3db2c 127 case '1': val=pot1; break;
azazeal88 1:38f32fc3db2c 128 case '2': val=pot2; break;
azazeal88 1:38f32fc3db2c 129 default: return;
azazeal88 1:38f32fc3db2c 130 }
Condo2k4 4:39e949908fc5 131 pc.sendFloat(val);
Condo2k4 3:990f8380da21 132 }
Condo2k4 5:d9f8c2f63323 133 void read_temp() { //read temp
Condo2k4 5:d9f8c2f63323 134 float t = temp.read();
Condo2k4 5:d9f8c2f63323 135 pc.sendFloat(t);
Condo2k4 5:d9f8c2f63323 136 }
Condo2k4 3:990f8380da21 137
Condo2k4 5:d9f8c2f63323 138 void read_shield_accel() {//read shield accel
Condo2k4 5:d9f8c2f63323 139 float x, y, z;
Condo2k4 5:d9f8c2f63323 140 x = sAcc.x();
Condo2k4 5:d9f8c2f63323 141 y = sAcc.y();
Condo2k4 5:d9f8c2f63323 142 z = sAcc.z();
Condo2k4 5:d9f8c2f63323 143 pc.sendFloat(x);
Condo2k4 5:d9f8c2f63323 144 pc.sendFloat(y);
Condo2k4 5:d9f8c2f63323 145 pc.sendFloat(z);
Condo2k4 5:d9f8c2f63323 146 }
Condo2k4 5:d9f8c2f63323 147
Condo2k4 5:d9f8c2f63323 148 void set_shield_led() { //shield led
Condo2k4 5:d9f8c2f63323 149 char raw = pc.readChar();
Condo2k4 5:d9f8c2f63323 150 char r = ((raw>>2)&1)^1;
Condo2k4 5:d9f8c2f63323 151 char g = ((raw>>1)&1)^1;
Condo2k4 5:d9f8c2f63323 152 char b = (raw&1)^1;
Condo2k4 5:d9f8c2f63323 153 xr = r; xg = g; xb = b;
Condo2k4 5:d9f8c2f63323 154 }
Condo2k4 5:d9f8c2f63323 155
Condo2k4 5:d9f8c2f63323 156 void get_orientation() { //read shield accel orientation
Condo2k4 5:d9f8c2f63323 157 MMA7660::Orientation o = sAcc.getOrientation();
Condo2k4 5:d9f8c2f63323 158 pc.sendChar((char)o);
Condo2k4 5:d9f8c2f63323 159 }
Condo2k4 5:d9f8c2f63323 160
Condo2k4 5:d9f8c2f63323 161 void get_side() { //read shield accel orientation
Condo2k4 5:d9f8c2f63323 162 MMA7660::Orientation o = sAcc.getSide();
Condo2k4 5:d9f8c2f63323 163 pc.sendChar((char)o);
Condo2k4 5:d9f8c2f63323 164 }
Condo2k4 5:d9f8c2f63323 165
Condo2k4 5:d9f8c2f63323 166 void get_heading() {
Condo2k4 8:d70e3e3690fd 167 motion_data_units_t mag;
Condo2k4 4:39e949908fc5 168 bMag.getAxis(mag);
Condo2k4 7:238c6fd5c209 169 float heading = atan2(-(mag.x-20.0f),mag.y-5.0f)*180.0f/M_PI;
Condo2k4 7:238c6fd5c209 170 if(heading<0) heading+=360.0f;
Condo2k4 5:d9f8c2f63323 171 pc.sendFloat(heading);
Condo2k4 5:d9f8c2f63323 172 }
Condo2k4 5:d9f8c2f63323 173
Condo2k4 5:d9f8c2f63323 174 void set_board_led() { // board led
Condo2k4 5:d9f8c2f63323 175 char raw = pc.readChar();
Condo2k4 5:d9f8c2f63323 176 char r = ((raw>>2)&1)^1;
Condo2k4 5:d9f8c2f63323 177 char g = ((raw>>1)&1)^1;
Condo2k4 5:d9f8c2f63323 178 char b = (raw&1)^1;
Condo2k4 5:d9f8c2f63323 179 lr = r; lg = g; lb = b;
Condo2k4 5:d9f8c2f63323 180 }
Condo2k4 5:d9f8c2f63323 181
Condo2k4 8:d70e3e3690fd 182 void set_piezo() { // set piezo buzzer
Condo2k4 8:d70e3e3690fd 183 float vol = pc.readFloat();
Condo2k4 8:d70e3e3690fd 184 float period = 1.0f/pc.readFloat();
Condo2k4 8:d70e3e3690fd 185 spkr=vol*0.5f; //convert volume to duty cycle
Condo2k4 8:d70e3e3690fd 186 spkr.period(period);
Condo2k4 8:d70e3e3690fd 187 }
Condo2k4 8:d70e3e3690fd 188
Condo2k4 5:d9f8c2f63323 189 void read_board_magno() { //read board magno
Condo2k4 8:d70e3e3690fd 190 motion_data_units_t mag;
Condo2k4 5:d9f8c2f63323 191 bMag.getAxis(mag);
Condo2k4 5:d9f8c2f63323 192 pc.sendFloat(mag.x);
Condo2k4 5:d9f8c2f63323 193 pc.sendFloat(mag.y);
Condo2k4 5:d9f8c2f63323 194 pc.sendFloat(mag.z);
Condo2k4 5:d9f8c2f63323 195 }
Condo2k4 5:d9f8c2f63323 196
Condo2k4 5:d9f8c2f63323 197 void read_board_accel() { //read board accel
Condo2k4 8:d70e3e3690fd 198 motion_data_units_t acc;
Condo2k4 8:d70e3e3690fd 199 bAcc.getAxis(acc);
Condo2k4 8:d70e3e3690fd 200 pc.sendFloat(acc.x);
Condo2k4 8:d70e3e3690fd 201 pc.sendFloat(acc.y);
Condo2k4 8:d70e3e3690fd 202 pc.sendFloat(acc.z);
Condo2k4 5:d9f8c2f63323 203 }
Condo2k4 5:d9f8c2f63323 204
Condo2k4 5:d9f8c2f63323 205 void set_lcd_position() { //set lcd position
Condo2k4 5:d9f8c2f63323 206 unsigned char xy[2];
Condo2k4 5:d9f8c2f63323 207 pc.readData(xy,2);
Condo2k4 5:d9f8c2f63323 208 lcd.locate(xy[0],xy[1]);
Condo2k4 5:d9f8c2f63323 209 }
Condo2k4 5:d9f8c2f63323 210
Condo2k4 5:d9f8c2f63323 211 void print_text() { //print lcd text
Condo2k4 5:d9f8c2f63323 212 char buff[256];
Condo2k4 5:d9f8c2f63323 213 char len = pc.readString(buff);
Condo2k4 5:d9f8c2f63323 214 buff[len]=0;
Condo2k4 5:d9f8c2f63323 215 lcd.printf(buff);
Condo2k4 5:d9f8c2f63323 216 lcd.copy_to_lcd();
Condo2k4 6:adf2837c1e7f 217 pc.sendBool(true);
Condo2k4 5:d9f8c2f63323 218 }
Condo2k4 5:d9f8c2f63323 219
Condo2k4 5:d9f8c2f63323 220 void set_lcd_pixel() { //set lcd pixel
Condo2k4 5:d9f8c2f63323 221 char xyc[3];
Condo2k4 5:d9f8c2f63323 222 pc.readData(xyc, 3);
Condo2k4 5:d9f8c2f63323 223 lcd.pixel(xyc[0],xyc[1],xyc[2]);
Condo2k4 5:d9f8c2f63323 224 lcd.copy_to_lcd();
Condo2k4 5:d9f8c2f63323 225 }
Condo2k4 5:d9f8c2f63323 226
Condo2k4 8:d70e3e3690fd 227 void draw_circle() {
Condo2k4 8:d70e3e3690fd 228 char xyrc[4];
Condo2k4 8:d70e3e3690fd 229 pc.readData(xyrc, 4);
Condo2k4 8:d70e3e3690fd 230 lcd.circle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]);
Condo2k4 8:d70e3e3690fd 231 lcd.copy_to_lcd();
Condo2k4 8:d70e3e3690fd 232 }
Condo2k4 8:d70e3e3690fd 233
Condo2k4 8:d70e3e3690fd 234 void fill_circle() {
Condo2k4 8:d70e3e3690fd 235 char xyrc[4];
Condo2k4 8:d70e3e3690fd 236 pc.readData(xyrc, 4);
Condo2k4 8:d70e3e3690fd 237 lcd.fillcircle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]);
Condo2k4 8:d70e3e3690fd 238 lcd.copy_to_lcd();
Condo2k4 8:d70e3e3690fd 239 }
Condo2k4 8:d70e3e3690fd 240
Condo2k4 8:d70e3e3690fd 241 void draw_line() {
Condo2k4 8:d70e3e3690fd 242 char xyxyc[5];
Condo2k4 8:d70e3e3690fd 243 pc.readData(xyxyc, 5);
Condo2k4 8:d70e3e3690fd 244 lcd.line(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
Condo2k4 8:d70e3e3690fd 245 lcd.copy_to_lcd();
Condo2k4 8:d70e3e3690fd 246 }
Condo2k4 8:d70e3e3690fd 247
Condo2k4 8:d70e3e3690fd 248 void draw_rect() {
Condo2k4 8:d70e3e3690fd 249 char xyxyc[5];
Condo2k4 8:d70e3e3690fd 250 pc.readData(xyxyc, 5);
Condo2k4 8:d70e3e3690fd 251 lcd.rect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
Condo2k4 8:d70e3e3690fd 252 lcd.copy_to_lcd();
Condo2k4 8:d70e3e3690fd 253 }
Condo2k4 8:d70e3e3690fd 254
Condo2k4 8:d70e3e3690fd 255 void fill_rect() {
Condo2k4 8:d70e3e3690fd 256 char xyxyc[5];
Condo2k4 8:d70e3e3690fd 257 pc.readData(xyxyc, 5);
Condo2k4 8:d70e3e3690fd 258 lcd.fillrect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
Condo2k4 8:d70e3e3690fd 259 lcd.copy_to_lcd();
Condo2k4 5:d9f8c2f63323 260 }
Condo2k4 5:d9f8c2f63323 261
Condo2k4 5:d9f8c2f63323 262 void clear_lcd() { //clear lcd
Condo2k4 5:d9f8c2f63323 263 lcd.cls();
Condo2k4 6:adf2837c1e7f 264 pc.sendBool(true);
Condo2k4 5:d9f8c2f63323 265 }
Condo2k4 5:d9f8c2f63323 266
Condo2k4 5:d9f8c2f63323 267 void cleanup() {
Condo2k4 5:d9f8c2f63323 268 lr = lg = lb = 1;
Condo2k4 5:d9f8c2f63323 269 xr = xg = xb = 1;
Condo2k4 5:d9f8c2f63323 270 lcd.cls();
Condo2k4 5:d9f8c2f63323 271
Condo2k4 5:d9f8c2f63323 272 pc.sendChar(RECONNECT);
Condo2k4 5:d9f8c2f63323 273 }
Condo2k4 5:d9f8c2f63323 274
Condo2k4 5:d9f8c2f63323 275 void reconnect() { //reconnection
Condo2k4 5:d9f8c2f63323 276 cleanup();
Condo2k4 3:990f8380da21 277 }
Condo2k4 3:990f8380da21 278
Condo2k4 3:990f8380da21 279 int main() {
azazeal88 1:38f32fc3db2c 280 //SETUP
Condo2k4 5:d9f8c2f63323 281 pc.baud(115200);
azazeal88 1:38f32fc3db2c 282
Condo2k4 3:990f8380da21 283 lr = lg = lb = 1;
Condo2k4 5:d9f8c2f63323 284 xr = xg = xb = 1;
Condo2k4 5:d9f8c2f63323 285
Condo2k4 5:d9f8c2f63323 286 bAcc.enable();
Condo2k4 5:d9f8c2f63323 287 bMag.enable();
co657_mjrb6 0:6891aea05ef2 288
Condo2k4 8:d70e3e3690fd 289 //Pretty wait
Condo2k4 8:d70e3e3690fd 290 ctr=0;
Condo2k4 8:d70e3e3690fd 291 lcd.locate(0,0);
Condo2k4 8:d70e3e3690fd 292 lcd.printf("Awaiting connection...");
Condo2k4 8:d70e3e3690fd 293 waitTicker.attach(&waitTick,0.5);
Condo2k4 8:d70e3e3690fd 294 while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep();
Condo2k4 8:d70e3e3690fd 295 waitTicker.detach();
Condo2k4 8:d70e3e3690fd 296 cleanup();
Condo2k4 8:d70e3e3690fd 297
co657_mjrb6 0:6891aea05ef2 298 sw2_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 299 sw2_int.fall(&sw2Down);
co657_mjrb6 0:6891aea05ef2 300 sw2_int.rise(&sw2Up);
co657_mjrb6 0:6891aea05ef2 301
co657_mjrb6 0:6891aea05ef2 302 sw3_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 303 sw3_int.fall(&sw3Down);
co657_mjrb6 0:6891aea05ef2 304 sw3_int.rise(&sw3Up);
co657_mjrb6 0:6891aea05ef2 305
azazeal88 1:38f32fc3db2c 306 up_int.mode (PullUp);
Condo2k4 4:39e949908fc5 307 up_int.rise(&upDown);
Condo2k4 4:39e949908fc5 308 up_int.fall(&upUp);
azazeal88 1:38f32fc3db2c 309
azazeal88 1:38f32fc3db2c 310 down_int.mode (PullUp);
Condo2k4 4:39e949908fc5 311 down_int.rise(&downDown);
Condo2k4 4:39e949908fc5 312 down_int.fall(&downUp);
azazeal88 1:38f32fc3db2c 313
azazeal88 1:38f32fc3db2c 314 left_int.mode (PullUp);
Condo2k4 4:39e949908fc5 315 left_int.rise(&leftDown);
Condo2k4 4:39e949908fc5 316 left_int.fall(&leftUp);
azazeal88 1:38f32fc3db2c 317
azazeal88 1:38f32fc3db2c 318 right_int.mode (PullUp);
Condo2k4 4:39e949908fc5 319 right_int.rise(&rightDown);
Condo2k4 4:39e949908fc5 320 right_int.fall(&rightUp);
azazeal88 1:38f32fc3db2c 321
azazeal88 1:38f32fc3db2c 322 fire_int.mode (PullUp);
Condo2k4 4:39e949908fc5 323 fire_int.rise(&fireDown);
Condo2k4 4:39e949908fc5 324 fire_int.fall(&fireUp);
co657_mjrb6 0:6891aea05ef2 325
azazeal88 1:38f32fc3db2c 326 for(;;) {
Condo2k4 2:2dcdbb85cae0 327 //Check if any interrupts fired
azazeal88 1:38f32fc3db2c 328 if(flags&SW2_UP) {
Condo2k4 3:990f8380da21 329 flags&=!SW2_UP;
Condo2k4 4:39e949908fc5 330 pc.sendSpecialCommand('2','u');
azazeal88 1:38f32fc3db2c 331 }
azazeal88 1:38f32fc3db2c 332 if(flags&SW2_DOWN) {
Condo2k4 3:990f8380da21 333 flags&=!SW2_DOWN;
Condo2k4 4:39e949908fc5 334 pc.sendSpecialCommand('2','d');
azazeal88 1:38f32fc3db2c 335 }
azazeal88 1:38f32fc3db2c 336 if(flags&SW3_UP) {
Condo2k4 3:990f8380da21 337 flags&=!SW3_UP;
Condo2k4 4:39e949908fc5 338 pc.sendSpecialCommand('3','u');
azazeal88 1:38f32fc3db2c 339 }
azazeal88 1:38f32fc3db2c 340 if(flags&SW3_DOWN) {
Condo2k4 3:990f8380da21 341 flags&=!SW3_DOWN;
Condo2k4 4:39e949908fc5 342 pc.sendSpecialCommand('3','d');
azazeal88 1:38f32fc3db2c 343 }
azazeal88 1:38f32fc3db2c 344 if(flags&UP_UP) {
Condo2k4 3:990f8380da21 345 flags&=!UP_UP;
Condo2k4 4:39e949908fc5 346 pc.sendSpecialCommand('u','u');
azazeal88 1:38f32fc3db2c 347 }
azazeal88 1:38f32fc3db2c 348 if(flags&UP_DOWN) {
Condo2k4 3:990f8380da21 349 flags&=!UP_DOWN;
Condo2k4 4:39e949908fc5 350 pc.sendSpecialCommand('u','d');
co657_mjrb6 0:6891aea05ef2 351 }
azazeal88 1:38f32fc3db2c 352 if(flags&DOWN_UP) {
Condo2k4 3:990f8380da21 353 flags&=!DOWN_UP;
Condo2k4 4:39e949908fc5 354 pc.sendSpecialCommand('d','u');
azazeal88 1:38f32fc3db2c 355 }
azazeal88 1:38f32fc3db2c 356 if(flags&DOWN_DOWN) {
Condo2k4 3:990f8380da21 357 flags&=!DOWN_DOWN;
Condo2k4 4:39e949908fc5 358 pc.sendSpecialCommand('d','d');
azazeal88 1:38f32fc3db2c 359 }
azazeal88 1:38f32fc3db2c 360 if(flags&LEFT_UP) {
Condo2k4 3:990f8380da21 361 flags&=!LEFT_UP;
Condo2k4 4:39e949908fc5 362 pc.sendSpecialCommand('l','u');
azazeal88 1:38f32fc3db2c 363 }
azazeal88 1:38f32fc3db2c 364 if(flags&LEFT_DOWN) {
Condo2k4 3:990f8380da21 365 flags&=!LEFT_DOWN;
Condo2k4 4:39e949908fc5 366 pc.sendSpecialCommand('l','d');
co657_mjrb6 0:6891aea05ef2 367 }
azazeal88 1:38f32fc3db2c 368 if(flags&RIGHT_UP) {
Condo2k4 3:990f8380da21 369 flags&=!RIGHT_UP;
Condo2k4 4:39e949908fc5 370 pc.sendSpecialCommand('r','u');
azazeal88 1:38f32fc3db2c 371 }
azazeal88 1:38f32fc3db2c 372 if(flags&RIGHT_DOWN) {
Condo2k4 3:990f8380da21 373 flags&=!RIGHT_DOWN;
Condo2k4 4:39e949908fc5 374 pc.sendSpecialCommand('r','d');
azazeal88 1:38f32fc3db2c 375 }
azazeal88 1:38f32fc3db2c 376 if(flags&FIRE_UP) {
Condo2k4 3:990f8380da21 377 flags&=!FIRE_UP;
Condo2k4 4:39e949908fc5 378 pc.sendSpecialCommand('f','u');
azazeal88 1:38f32fc3db2c 379 }
azazeal88 1:38f32fc3db2c 380 if(flags&FIRE_DOWN) {
Condo2k4 3:990f8380da21 381 flags&=!FIRE_DOWN;
Condo2k4 4:39e949908fc5 382 pc.sendSpecialCommand('f','d');
co657_mjrb6 0:6891aea05ef2 383 }
azazeal88 1:38f32fc3db2c 384
azazeal88 1:38f32fc3db2c 385 //Check for host requests
co657_mjrb6 0:6891aea05ef2 386 if(pc.readable()) {
Condo2k4 5:d9f8c2f63323 387 unsigned char cmd = pc.readChar();
Condo2k4 5:d9f8c2f63323 388 if(cmd<COMMAND_LENGTH) {
Condo2k4 5:d9f8c2f63323 389 commandFunctions[cmd]();
co657_mjrb6 0:6891aea05ef2 390 }
co657_mjrb6 0:6891aea05ef2 391 }
co657_mjrb6 0:6891aea05ef2 392 }
Condo2k4 4:39e949908fc5 393 }