CPS-Lab* / Mbed 2 deprecated lab6

Dependencies:   ADXL362 mbed MPL3115A2

Files at this revision

API Documentation at this revision

Comitter:
htdoughe
Date:
Thu Feb 22 15:45:26 2018 +0000
Parent:
3:813694e51f72
Child:
5:02aa71487c01
Commit message:
so many errors but i think i know where to go from here

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Feb 20 15:45:14 2018 +0000
+++ b/main.cpp	Thu Feb 22 15:45:26 2018 +0000
@@ -1,12 +1,56 @@
-#include "mbed.h"
 #include "mbed.h"
 #include "ADXL362.h"
- 
+#include "string.h"
+#include <map>
+#include <string>
+
+//map of register values and names
+std::map< int, int > registerids;
+std::map< int, char* > registernames;
+//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));
+}
+
 // 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);
@@ -23,27 +67,41 @@
 }
 
 int adxl362_reg_print(int s, int l){
-    //check s is 0x00 and 0x2E
+    //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;
+        return -1;
     }else if(l < 0){
-        //check length >0
+        //check length > 0
         printf("adx: requires length >= 0, given %d\n", l);
-        return 1;
+        return -1;
     }else{
         // start sending stuff
         //first check DEVID_AD == 0xAD
-        if(DEVID_AD != 0xAD){
+        if(adxl362_board.DEVID_AD != 0xAD){
             printf("error: DEVID_AD is not 0xAD; exiting\n");
-            return 1;
+            return -1;
         }else{
             //now do stuff
             //if length == 0, send everything from s to end of registers
+            //else print from s to l
+            // formula : range = end - start - length
+            // area = start + range
+            int stop = 0;
             if(l == 0){
-                
+                stop = 34;
             }else{
-                //else send from s to s+l
+                stop = s + l;
+            }
+            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
+                //print val
+                printf("0x%01x: %s=0x%01x\r\n", in, name, val);
+                in++;
             }
         }
     }