Matthias Grob & Manuel Stalder / Mbed 2 deprecated DecaWave

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
manumaet
Date:
Tue Dec 02 13:32:34 2014 +0000
Parent:
31:6f76f3d518ac
Child:
33:6ea4c3dd504d
Commit message:
transmitting of the time fails

Changed in this revision

DW1000/DW1000.h Show annotated file Show diff for this revision Revisions of this file
MMRanging/MMRanging.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/DW1000/DW1000.h	Mon Dec 01 13:04:18 2014 +0000
+++ b/DW1000/DW1000.h	Tue Dec 02 13:32:34 2014 +0000
@@ -77,7 +77,7 @@
         void startRX();                                                                         // start listening for frames
         void stopTRX();                                                                         // disable tranceiver go back to idle mode
         
-    private:
+    //private:
         void loadLDE();                                                                         // load the leading edge detection algorithm to RAM, [IMPORTANT because receiving malfunction may occur] see User Manual LDELOAD on p22 & p158
         void resetRX();                                                                         // soft reset only the tranciever part of DW1000
         void resetAll();                                                                        // soft reset the entire DW1000 (some registers stay as they were see User Manual)
--- a/MMRanging/MMRanging.cpp	Mon Dec 01 13:04:18 2014 +0000
+++ b/MMRanging/MMRanging.cpp	Tue Dec 02 13:32:34 2014 +0000
@@ -17,27 +17,27 @@
 void MMRanging::callbackRX() {
     RX_timestamp = dw.getRXTimestamp();
     
-    dw.receiveString(messageRX);
+    rangingframe RX;
+    dw.readRegister(DW1000_RX_BUFFER, 0, (uint8_t*)&RX, dw.getFramelength());  // get data from buffer
     
-    rangingframe* RX = (rangingframe*)messageRX;
-    switch (RX->type) {
+    switch (RX.type) {
         case 1:
-            rangingtimingsReceiver[RX->sequence_number][0] = dw.getRXTimestamp();
+            rangingtimingsReceiver[RX.sequence_number][0] = dw.getRXTimestamp();
             TX.type = 2;
-            TX.sequence_number = RX->sequence_number;
+            TX.sequence_number = RX.sequence_number;
             TX.time_difference_receiver = 0;
             dw.sendFrame((uint8_t*)&TX, 10);
             break;
         case 2:
-            rangingtimingsSender[RX->sequence_number][1] = dw.getRXTimestamp();
+            rangingtimingsSender[RX.sequence_number][1] = dw.getRXTimestamp();
             break;
         case 3:
             TX.type = 4;
-            TX.time_difference_receiver = rangingtimingsReceiver[TX.sequence_number][1] - rangingtimingsReceiver[TX.sequence_number][0];
+            TX.time_difference_receiver = 0;//rangingtimingsReceiver[TX.sequence_number][1] - rangingtimingsReceiver[TX.sequence_number][0];
             dw.sendFrame((uint8_t*)&TX, 10);
             break;
         case 4:
-            tofs[RX->sequence_number] = rangingtimingsSender[RX->sequence_number][1] - rangingtimingsSender[RX->sequence_number][0] - RX->time_difference_receiver;
+            tofs[RX.sequence_number] = /*rangingtimingsSender[RX.sequence_number][1] - rangingtimingsSender[RX.sequence_number][0] - */RX.time_difference_receiver;
             //tofs[RX->sequence_number] = (rangingtimingsSender[RX->sequence_number][1] - rangingtimingsSender[RX->sequence_number][0] - RX->time_difference_receiver) >> 1;
             break;
         default : break;
@@ -47,8 +47,7 @@
     event[event_i][0] = '!';
     event[event_i][1] = 'R';
     event[event_i][2] = ' ';
-    for(int i = 0; i < 10; i++)
-        event[event_i][i+3] = messageRX[i];
+    sprintf(&event[event_i][3], "%d %d", RX.sequence_number, RX.type);
     if (event_i == 8)
         event_i = 0;
     else
@@ -75,8 +74,6 @@
     event[event_i][1] = 'S';
     event[event_i][2] = ' ';
     sprintf(&event[event_i][3], "%d %d", TX.sequence_number, TX.type);
-    //for(int i = 0; i < 10; i++)
-    //    event[event_i][i+3] = message[i];
     if (event_i == 8)
         event_i = 0;
     else
--- a/main.cpp	Mon Dec 01 13:04:18 2014 +0000
+++ b/main.cpp	Tue Dec 02 13:32:34 2014 +0000
@@ -18,10 +18,11 @@
     pc.printf("Voltage: %f\r\n", dw.getVoltage());
 
     r.receiver = true;
+    
     bool senderstart = true;
     while(1) {
         for(int j = 0; j < 10; j++)
-            pc.printf("%f ", r.tofs[j]*MMRANGING_TIMEUNIT);
+            pc.printf("%d  ", r.tofs[j]);//*MMRANGING_TIMEUNIT);
         pc.printf("\r\n");
         for(int j = 0; j < 10; j++)
             if(r.event[j][0] == '!') {