Interface layer for the mbed boards ready for the JAVA library

Dependencies:   C12832 LM75B MMA7660 mbed FXOS8700Q

Fork of frdm_serial by Michael Berry

Revision:
8:d70e3e3690fd
Parent:
7:238c6fd5c209
--- a/main.cpp	Tue Feb 16 23:07:10 2016 +0000
+++ b/main.cpp	Fri Jan 06 11:08:56 2017 +0000
@@ -17,8 +17,13 @@
 LM75B temp(D14, D15);
 MMA7660 sAcc(D14, D15);
 
-FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
-FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
+I2C i2c(PTE25, PTE24);
+//FXOS8700Q fxos(i2c, FXOS8700CQ_SLAVE_ADDR1);
+FXOS8700QAccelerometer bAcc(i2c, FXOS8700CQ_SLAVE_ADDR1);    // Configured for the FRDM-K64F with onboard sensors
+FXOS8700QMagnetometer  bMag(i2c, FXOS8700CQ_SLAVE_ADDR1);
+
+//FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
+//FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
 
 InterruptIn sw2_int(SW2), sw3_int(SW3), up_int(A2), down_int(A3), left_int(A4), right_int(A5), fire_int(D4);
 DigitalIn   sw2(SW2),     sw3(SW3),     up(A2),     down(A3),     left(A4),     right(A5),     fire(D4);
@@ -159,7 +164,7 @@
 }
 
 void get_heading() {
-    MotionSensorDataUnits mag;
+    motion_data_units_t mag;
     bMag.getAxis(mag);
     float heading = atan2(-(mag.x-20.0f),mag.y-5.0f)*180.0f/M_PI;
     if(heading<0) heading+=360.0f;
@@ -174,8 +179,15 @@
     lr = r; lg = g; lb = b;
 }
 
+void set_piezo() { // set piezo buzzer
+    float vol = pc.readFloat();
+    float period = 1.0f/pc.readFloat();
+    spkr=vol*0.5f; //convert volume to duty cycle
+    spkr.period(period);
+}
+
 void read_board_magno() { //read board magno
-    MotionSensorDataUnits mag;
+    motion_data_units_t mag;
     bMag.getAxis(mag);
     pc.sendFloat(mag.x);
     pc.sendFloat(mag.y);
@@ -183,10 +195,11 @@
 }
 
 void read_board_accel() { //read board accel
-    float f;
-    bAcc.getX(&f); pc.sendFloat(f);
-    bAcc.getY(&f); pc.sendFloat(f);
-    bAcc.getZ(&f); pc.sendFloat(f);
+    motion_data_units_t acc;
+    bAcc.getAxis(acc);
+    pc.sendFloat(acc.x);
+    pc.sendFloat(acc.y);
+    pc.sendFloat(acc.z);
 }
 
 void set_lcd_position() { //set lcd position
@@ -211,11 +224,39 @@
     lcd.copy_to_lcd();
 }
 
-void set_piezo() { // set piezo buzzer
-    float vol = pc.readFloat();
-    float period = 1.0f/pc.readFloat();
-    spkr=vol*0.5f; //convert volume to duty cycle
-    spkr.period(period);
+void draw_circle() {
+    char xyrc[4];
+    pc.readData(xyrc, 4);
+    lcd.circle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]);
+    lcd.copy_to_lcd();
+}
+
+void fill_circle() {
+    char xyrc[4];
+    pc.readData(xyrc, 4);
+    lcd.fillcircle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]);
+    lcd.copy_to_lcd();
+}
+
+void draw_line() {
+    char xyxyc[5];
+    pc.readData(xyxyc, 5);
+    lcd.line(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
+    lcd.copy_to_lcd();
+}
+
+void draw_rect() {
+    char xyxyc[5];
+    pc.readData(xyxyc, 5);
+    lcd.rect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
+    lcd.copy_to_lcd();
+}
+
+void fill_rect() {
+    char xyxyc[5];
+    pc.readData(xyxyc, 5);
+    lcd.fillrect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]);
+    lcd.copy_to_lcd();
 }
 
 void clear_lcd() { //clear lcd
@@ -245,6 +286,15 @@
     bAcc.enable();
     bMag.enable();
     
+    //Pretty wait
+    ctr=0;
+    lcd.locate(0,0);
+    lcd.printf("Awaiting connection...");
+    waitTicker.attach(&waitTick,0.5);
+    while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep();
+    waitTicker.detach();
+    cleanup();
+    
     sw2_int.mode (PullUp);
     sw2_int.fall(&sw2Down);
     sw2_int.rise(&sw2Up);
@@ -273,15 +323,6 @@
     fire_int.rise(&fireDown);
     fire_int.fall(&fireUp);
     
-    //Pretty wait
-    ctr=0;
-    lcd.locate(0,0);
-    lcd.printf("Awaiting connection...");
-    waitTicker.attach(&waitTick,0.5);
-    while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep();
-    waitTicker.detach();
-    cleanup();
-    
     for(;;) {
         //Check if any interrupts fired
         if(flags&SW2_UP) {