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 Dec 04 14:42:01 2015 +0000
Revision:
5:d9f8c2f63323
Parent:
4:39e949908fc5
Child:
6:adf2837c1e7f
Final changes to MBed library.

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