CPS-Lab / Mbed 2 deprecated Lab7

Dependencies:   MPL3115A2 mbed

Revision:
4:1b449b5bbfe4
Parent:
3:9f3053336250
Child:
6:2568b22678fc
--- a/lab7.cpp	Thu Mar 01 15:44:10 2018 +0000
+++ b/lab7.cpp	Thu Mar 01 22:18:57 2018 +0000
@@ -10,51 +10,54 @@
 MPL3115A2 pressure_sensor(PB_7, PB_6, 0x60);
 
 
+
 int mpl3115_reg_print(int start, int length);
-void register_map(int i, int value);
+void register_map_mpl3115A2(int i, int value);
 
 
 
 int main() {
-    uint8_t id;
     printf("\n\rMPL3115A2 test\n\r");
-    while((id = pressure_sensor.getID()) != 0xC4) {
-        printf("Status read unsuccessful: Value = 0x%02x\n\r",id);
-        printf("Check wiring to the pressure sensor\n\r");
-        printf("Retesting for correct ID in 1 second...\n\r");
-        wait(1);
-        
-    }
-    pc.printf("Status read successfully: Value = 0x%02x\n\r",id);
-    pc.printf("***1hz readings from the pressure sensor***\n\r");
-    while(1) {
-        pc.printf("%f hPA; %f m\n\r",pressure_sensor.getPressure(),pressure_sensor.getAltitude());
-        myled = !myled;
-        wait(1);
-    }
+    
     
    
-    /*printf("start\r\n");
+    printf("start\r\n");
     mpl3115_reg_print(0, 0);
     printf("finish\r\n");
-    return(0);*/
+    return(0);
     
 }
-
+//void MPL3115A2::readRegs(int addr, uint8_t * data, int len)
 int mpl3115_reg_print(int start, int length) {
-        
-    printf("Success, chip is connected.\r\n");
-    
-    int l = 0;
-    l = (length == 0? 46: length);
+
+  if(pressure_sensor.getID() != 0xC4) { 
+    printf("chip is not connected\r\n");
+    return -1;
+  }
+  printf("0xC4! Welcome, user.\r\n");
+  
+  wait_ms(500);
+
+  int l = 0;
+  l = (length == 0? 45: length); //if length is 0 make l= 46
+
+  // check input range: [0x00, 0x2E] 0,46 && confirm length >= 0
+  if(start < 0 || l > 45 || l < 0) {
+    printf("illegal input exception\r\n");
+    return -1;
+  }
+
+    uint8_t data[1];
     
-    if(start < 0 || l > 46 || l < 0) {
-        printf("illegal input exception\r\n");
-        return -1;
-    }
-    
+      // print reg, name, val
+  for(int i = start; i < l; i++) {
+    // reading (1 byte its bit oriented)8-bits from each register
+    pressure_sensor.readRegs(i, data, 1); 
+    //printf("0x%x\tregister: 0x%.2x\r\n", i, data[0]);
+    register_map_mpl3115A2(i, data[0]);
+  }
   
-        //printf("Reg Address %d: Register Name = %s", address, name)
+  //printf("Reg Address %d: Register Name = %s", address, name)
   return 0;
 }
 
@@ -62,192 +65,194 @@
 
 
 
-void register_map(int i, int value) {
+
+
+void register_map_mpl3115A2(int i, int value) {
   //char* regi;
   switch(i) {
   case 0x00:
     //    *regi = 'STATUS';
-    printf("%x:\tSTATUS %x\r\n",i,value);
+    printf("%x:\tSTATUS 0x%.2x\r\n",i,value);
     break;
   case 0x01:
     //    *regi = "OUT P_MSB";
-    printf("%x:\tOUT P_MSB %x\r\n",i, value);
+    printf("%x:\tOUT P_MSB 0x%.2x\r\n",i, value);
     break;
   case 0x02:
     //    *regi = "OUT_P_CSB";
-    printf("%x:\tOUT_P_CSB= %x\r\n",i, value);
+    printf("%x:\tOUT_P_CSB= 0x%.2x\r\n",i, value);
     break;
   case 0x03:
     //    *regi = "OUT_P_LSB";
-    printf("%x:\tOUT_P_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_P_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x04:
     //    *regi = "OUT_T_MSB";
-    printf("%x:\tOUT_T_MSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x05:
     //    *regi = "OUT_T_LSB";
-    printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
     break;    
   case 0x06:
     //    *regi = "DR_STATUS";
-    printf("%x:\tDR_STATUS= %x\r\n",i, value);
+    printf("%x:\tDR_STATUS= 0x%.2x\r\n",i, value);
     break;
   case 0x07:
     //    *regi = "OUT_P_DELTA_MSB";
-    printf("%x:\tOUT_P_DELTA_MSB= %x\r\n",i, value);
+    printf("%x:\tOUT_P_DELTA_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x08:
     //    *regi = "OUT_P_DELTA_CSB";
-    printf("%x:\tOUT_P_DELTA_CSB= %x\r\n",i, value);
+    printf("%x:\tOUT_P_DELTA_CSB= 0x%.2x\r\n",i, value);
     break;
   case 0x09:
     //    *regi = "OUT_P_DELTA_LSB";
-    printf("%x:\tOUT_P_DELTA_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_P_DELTA_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x0A:
     //    *regi = "OUT_T_DELTA_MSB";
-    printf("%x:\tOUT_T_DELTA_MSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_DELTA_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x0B:
     //    *regi = "OUT_T_DELTA_LSB";
-    printf("%x:\tOUT_T_DELTA_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_DELTA_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x0C:
     //    *regi = "WHO_AM_I";
-    printf("%x:\tWHO_AM_I= %x\r\n",i, value);
+    printf("%x:\tWHO_AM_I= 0x%.2x\r\n",i, value);
     break;
   case 0x0D:
     //    *regi = "F_STATUS";
-    printf("%x:\tF_STATUS= %x\r\n",i, value);
+    printf("%x:\tF_STATUS= 0x%.2x\r\n",i, value);
     break;
   case 0x0E:
     //    *regi = "F_DATA";
-    printf("%x:\tF_DATA= %x\r\n",i, value);
+    printf("%x:\tF_DATA= 0x%.2x\r\n",i, value);
     break;
   case 0x0F:
     //    *regi = "F_SETUP";
-    printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x10:
     //    *regi = "TIME_DLY";
-    printf("%x:\tTIME_DLY= %x\r\n",i, value);
+    printf("%x:\tTIME_DLY= 0x%.2x\r\n",i, value);
     break;
   case 0x11:
     //    *regi = "SYSMOD";
-    printf("%x:\tSYSMOD= %x\r\n",i, value);
+    printf("%x:\tSYSMOD= 0x%.2x\r\n",i, value);
     break;
   case 0x12:
     //    *regi = "INT_SOURCE";
-    printf("%x:\tINT_SOURCE= %x\r\n",i, value);
+    printf("%x:\tINT_SOURCE= 0x%.2x\r\n",i, value);
     break;
   case 0x13:
     //    *regi = "PT_DATA_CFG";
-    printf("%x:\tPT_DATA_CFG= %x\r\n",i, value);
+    printf("%x:\tPT_DATA_CFG= 0x%.2x\r\n",i, value);
     break;
   case 0x14:
     //    *regi = "BAR_IN_MSB";
-    printf("%x:\tBAR_IN_MSB= %x\r\n",i, value);
+    printf("%x:\tBAR_IN_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x15:
     //    *regi = "BAR_IN_LSB";
-    printf("%x:\tBAR_IN_LSB= %x\r\n",i, value);
+    printf("%x:\tBAR_IN_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x16:
     //    *regi = "P_TGT_MSB";
-    printf("%x:\tP_TGT_MSB= %x\r\n",i, value);
+    printf("%x:\tP_TGT_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x17:
     //    *regi = "P_TGT_LSB";
-    printf("%x:\tP_TGT_LSB= %x\r\n",i, value);
+    printf("%x:\tP_TGT_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x18:
     //    *regi = "T_TGT";
-    printf("%x:\tT_TGT= %x\r\n",i, value);
+    printf("%x:\tT_TGT= 0x%.2x\r\n",i, value);
     break;
   case 0x19:
     //    *regi = "P_WND_MSB";
-    printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+    printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x1A:
     //    *regi = "P_WND_LSB";
-    printf("%x:\tP_WND_LSB= %x\r\n",i, value);
+    printf("%x:\tP_WND_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x1B:
     //    *regi = "T_WND";
-    printf("%x:\tT_WND= %x\r\n",i, value);
+    printf("%x:\tT_WND= 0x%.2x\r\n",i, value);
     break;
   case 0x1C:
     //    *regi = "P_MIN_MSB";
-    printf("%x:\tP_MIN_MSB= %x\r\n",i, value);
+    printf("%x:\tP_MIN_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x1D:
     //    *regi = "P_MIN_CSB";
-    printf("%x:\tP_MIN_CSB= %x\r\n",i, value);
+    printf("%x:\tP_MIN_CSB= 0x%.2x\r\n",i, value);
     break;
   case 0x1E:
     //    *regi = "P_MIN_LSB";
-    printf("%x:\tP_MIN_LSB= %x\r\n",i, value);
+    printf("%x:\tP_MIN_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x1F:
     //    *regi = "T_MIN_MSB";
-    printf("%x:\tT_MIN_MSB= %x\r\n",i, value);
+    printf("%x:\tT_MIN_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x20:
     //    *regi = "T_MIN_LSB";
-    printf("%x:\tT_MIN_LSB= %x\r\n",i, value);
+    printf("%x:\tT_MIN_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x21:
     //    *regi = "P_MAX_MSB";
-    printf("%x:\tP_MAX_MSB= %x\r\n",i, value);
+    printf("%x:\tP_MAX_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x22:
     //    *regi = "P_MAX_CSB";
-    printf("%x:\tP_MAX_CSB= %x\r\n",i, value);
+    printf("%x:\tP_MAX_CSB= 0x%.2x\r\n",i, value);
     break;
   case 0x23:
     //    *regi = "P_MAX_LSB";
-    printf("%x:\tP_MAX_LSB= %x\r\n",i, value);
+    printf("%x:\tP_MAX_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x24:
     //    *regi = "T_MAX_MSB";
-    printf("%x:\tT_MAX_MSB= %x\r\n",i, value);
+    printf("%x:\tT_MAX_MSB= 0x%.2x\r\n",i, value);
     break;
   case 0x25:
     //    *regi = "T_MAX_LSB";
-    printf("%x:\tT_MAX_LSB= %x\r\n",i, value);
+    printf("%x:\tT_MAX_LSB= 0x%.2x\r\n",i, value);
     break;
   case 0x26:
     //    *regi = "CTRL_REG1";
-    printf("%x:\tCTRL_REG1= %x\r\n",i, value);
+    printf("%x:\tCTRL_REG1= 0x%.2x\r\n",i, value);
     break;
   case 0x27:
     //    *regi = "CTRL_REG2";
-    printf("%x:\tCTRL_REG2= %x\r\n",i, value);
+    printf("%x:\tCTRL_REG2= 0x%.2x\r\n",i, value);
     break;
   case 0x28:
     //    *regi = "CTRL_REG3";
-    printf("%x:\tCTRL_REG3= %x\r\n",i, value);
+    printf("%x:\tCTRL_REG3= 0x%.2x\r\n",i, value);
     break;
   case 0x29:
     //    *regi = "CTRL_REG4";
-    printf("%x:\tCTRL_REG4= %x\r\n",i, value);
+    printf("%x:\tCTRL_REG4= 0x%.2x\r\n",i, value);
     break;
   case 0x2A:
     //    *regi = "CTRL_REG5";
-    printf("%x:\tCTRL_REG5= %x\r\n",i, value);
+    printf("%x:\tCTRL_REG5= 0x%.2x\r\n",i, value);
     break;
   case 0x2B:
     //    *regi = "OFF_P";
-    printf("%x:\tOFF_P= %x\r\n",i, value);
+    printf("%x:\tOFF_P= 0x%.2x\r\n",i, value);
     break;
   case 0x2C:
     //    *regi = "OFF_T";
-    printf("%x:\tOFF_T= %x\r\n",i, value);
+    printf("%x:\tOFF_T= 0x%.2x\r\n",i, value);
     break;
   case 0x2D:
     //    *regi = "OFF_H";
-    printf("%x:\tOFF_H= %x\r\n",i, value);
+    printf("%x:\tOFF_H= 0x%.2x\r\n",i, value);
     break;
     }
 }
\ No newline at end of file