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:
Mon Dec 21 11:36:29 2015 +0000
Revision:
6:adf2837c1e7f
Parent:
5:d9f8c2f63323
Child:
7:238c6fd5c209
Fixed incorrect boolean response for sw2 and sw3; Added ACK for print to lcd and clear screen

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