CPS-Lab* / Mbed 2 deprecated lab6

Dependencies:   ADXL362 mbed MPL3115A2

Revision:
5:02aa71487c01
Parent:
4:8065ca897f8b
Child:
6:f05c72e636aa
--- a/main.cpp	Thu Feb 22 15:45:26 2018 +0000
+++ b/main.cpp	Thu Feb 22 20:19:25 2018 +0000
@@ -5,70 +5,87 @@
 #include <string>
 
 //map of register values and names
-std::map< int, int > registerids;
-std::map< int, char* > registernames;
+int regids[34];
+char* regnames[34];
 //populating the map
 void initmap() {
-    registerids.insert(0, 0x00);
-    registers.insert(1, make_pair("DEVID_MST", 0x01));
-    registers.insert(2, make_pair("PARTID", 0x02));
-    registers.insert(3, make_pair("REVID", 0x03));
-    registers.insert(4, make_pair("XDATA", 0x08));
-    registers.insert(5, make_pair("YDATA", 0x09));
-    registers.insert(6, make_pair("ZDATA", 0x0A));
-    registers.insert(7, make_pair("STATUS", 0x0B));
-    registers.insert(8, make_pair("FIFO_ENTRIES_L", 0x0C));
-    registers.insert(9, make_pair("FIFO_ENTRIES_H", 0x0D));
-    registers.insert(10, make_pair("XDATA_L", 0x0E));
-    registers.insert(11, make_pair("XDATA_H", 0x0F));
-    registers.insert(12, make_pair("YDATA_L", 0x10));
-    registers.insert(13, make_pair("YDATA_H", 0x11));
-    registers.insert(14, make_pair("ZDATA_L", 0x12));
-    registers.insert(15, make_pair("ZDATA_H", 0x13));
-    registers.insert(16, make_pair("TEMP_L", 0x14));
-    registers.insert(17, make_pair("TEMP_H", 0x15));
-    registers.insert(18, make_pair("SOFT_RESET", 0x1F));
-    registers.insert(19, make_pair("THRESH_ACT_L", 0x20));
-    registers.insert(20, make_pair("THRESH_ACT_H", 0x21));
-    registers.insert(21, make_pair("TIME_ACT", 0x22));
-    registers.insert(22, make_pair("THRESH_INACT_L", 0x23));
-    registers.insert(23, make_pair("THRESH_INACT_H", 0x24));
-    registers.insert(24, make_pair("TIME_INACT_L", 0x25));
-    registers.insert(25, make_pair("TIME_INACT_H", 0x26));
-    registers.insert(26, make_pair("ACT_INACT_CTL", 0x27));
-    registers.insert(27, make_pair("FIFO_CONTROL", 0x28));
-    registers.insert(28, make_pair("FIFO_SAMPLES", 0x29));
-    registers.insert(29, make_pair("INTMAP1", 0x2A));
-    registers.insert(30, make_pair("INTMAP2", 0x2B));
-    registers.insert(31, make_pair("FILTER_CTL", 0x2C));
-    registers.insert(32, make_pair("POWER_CTL", 0x2D));
-    registers.insert(33, make_pair("SELF_TEST", 0x2E));
+    regids[0] = 0x00;
+    regids[1] = 0x01;
+    regids[2] = 0x02;
+    regids[3] = 0x03;
+    regids[4] = 0x08;
+    regids[5] = 0x09;
+    regids[6] = 0x0A;
+    regids[7] = 0x0B;
+    regids[8] = 0x0c;
+    regids[9] = 0x0D;
+    regids[10] = 0x0E;
+    regids[11] = 0x0F;
+    regids[12] = 0x10;
+    regids[13] = 0x11;
+    regids[14] = 0x12;
+    regids[15] = 0x13;
+    regids[16] = 0x14;
+    regids[17] = 0x15;
+    regids[18] = 0x1F;
+    regids[19] = 0x20;
+    regids[20] = 0x21;
+    regids[21] = 0x22;
+    regids[22] = 0x23;
+    regids[23] = 0x24;
+    regids[24] = 0x25;
+    regids[25] = 0x26;
+    regids[26] = 0x27;
+    regids[27] = 0x28;
+    regids[28] = 0x29;
+    regids[29] = 0x2A;
+    regids[30] = 0x2B;
+    regids[31] = 0x2C;
+    regids[32] = 0x2D;
+    regids[33] = 0x2E;
+    
+    regnames[0] = "DEVID_AD";
+    regnames[1] = "DEVID_MST";
+    regnames[2] = "PARTID";
+    regnames[3] = "REVID";
+    regnames[4] = "XDATA";
+    regnames[5] = "YDATA";
+    regnames[6] = "ZDATA";
+    regnames[7] = "STATUS";
+    regnames[8] = "FIFO_ENTRIES_L";
+    regnames[9] = "FIFO_ENTRIES_H";
+    regnames[10] = "XDATA_L";
+    regnames[11] = "XDATA_H";
+    regnames[12] = "YDATA_L";
+    regnames[13] = "YDATA_H";
+    regnames[14] = "ZDATA_L";
+    regnames[15] = "ZDATA_H";
+    regnames[16] = "TEMP_L";
+    regnames[17] = "TEMP_H";
+    regnames[18] = "SOFT_RESET";
+    regnames[19] = "THRESH_ACT_L";
+    regnames[20] = "THRESH_ACT_H";
+    regnames[21] = "TIME_ACT";
+    regnames[22] = "THRESH_INACT_L";
+    regnames[23] = "THRESH_INACT_H";
+    regnames[24] = "TIME_INACT_L";
+    regnames[25] = "TIME_INACT_H";
+    regnames[26] = "ACT_INACT_CTL";
+    regnames[27] = "FIFO_CONTROL";
+    regnames[28] = "FIFO_SAMPLES";
+    regnames[29] = "INTMAP1";
+    regnames[30] = "INTMAP2";
+    regnames[31] = "FILTER_CTL";
+    regnames[32] = "POWER_CTL";
+    regnames[33] = "SELF_TEST";
 }
 
 // Interface pulled from ADXL362.cpp
 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
 ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
 
-int main() {
-    initmap();
-    adxl362.reset();
-    wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
-    adxl362.set_mode(ADXL362::MEASUREMENT);
-    int8_t x,y,z; 
-    adxl362_reg_print(start, length);
-    
-    while(1) {
-        x=adxl362.scanx_u8();
-        y=adxl362.scany_u8();
-        z=adxl362.scanz_u8();
-        printf("x = %d y = %d z = %d\r\n",x,y,z);
-        wait_ms(100);
-    }
-}
-
 int adxl362_reg_print(int s, int l){
     //check s is between 0x00 and 0x2E
-    unsigned char regVal = 0;
     if(s > 0x2E || s < 0x00){
         printf("adx: requires start between 0x00 and 0x2E; given %d (0x%01x)\n", s,s);
         return -1;
@@ -79,7 +96,8 @@
     }else{
         // start sending stuff
         //first check DEVID_AD == 0xAD
-        if(adxl362_board.DEVID_AD != 0xAD){
+        int devid = (int) adxl362.read_reg_u16(ADXL362::DEVID_AD);
+        if(devid != 0xAD){
             printf("error: DEVID_AD is not 0xAD; exiting\n");
             return -1;
         }else{
@@ -97,13 +115,34 @@
             int in = s;
             while(in < stop){
                 //get register name
-                string name = registers[in].first; //GET NAME
-                uint16_t val = ADXL362::read_reg_u16(registers[in].secod); //GET REG VAL
+                char * name = regnames[in]; //GET NAME
+                ADXL362::ADXL362_register_t reg = (ADXL362::ADXL362_register_t) regids[in];
+                int val = (int) adxl362.read_reg_u16(reg); //GET REG VAL
                 //print val
-                printf("0x%01x: %s=0x%01x\r\n", in, name, val);
+                printf("0x%01x: %s=0x%01x\r\n", regids[in], name, val);
                 in++;
             }
         }
     }
+    return 0;
+}
+
+int main() {
+    initmap();
+    adxl362.reset();
+    wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
+    adxl362.set_mode(ADXL362::MEASUREMENT);
+    int8_t x,y,z; 
+    int start, length;
+    start = 0;
+    length = 3;
+    adxl362_reg_print(start, length);
     
+    while(1) {
+        x=adxl362.scanx_u8();
+        y=adxl362.scany_u8();
+        z=adxl362.scanz_u8();
+        printf("x = %d y = %d z = %d\r\n",x,y,z);
+        wait_ms(100);
+    }
 }