Matthias Grob & Manuel Stalder / Mbed 2 deprecated DecaWave

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
manumaet
Date:
Tue Feb 17 10:58:58 2015 +0000
Parent:
34:f56962030c5c
Child:
36:883de6f9a73b
Commit message:
working console bar with two nodes after cleanup

Changed in this revision

MMRanging/MMRanging.cpp Show annotated file Show diff for this revision Revisions of this file
MMRanging/MMRanging.h 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/MMRanging/MMRanging.cpp	Sat Dec 27 14:37:12 2014 +0000
+++ b/MMRanging/MMRanging.cpp	Tue Feb 17 10:58:58 2015 +0000
@@ -1,15 +1,8 @@
 #include "MMRanging.h"
 
 MMRanging::MMRanging(DW1000& DW) : dw(DW) {
-    MMRanging::dw = dw;
-    
-    ranging_i = 0;
-    
-    message[0] = '\0';
-    messageRX[0] = '\0';
     event_i = 0;
     counter = 0;
-    
     dw.setCallbacks(this, &MMRanging::callbackRX, &MMRanging::callbackTX);
     dw.startRX();
 }
@@ -24,23 +17,16 @@
     switch (RX.type) {
         case 1:
             rangingtimingsReceiver[Index][0] = dw.getRXTimestamp();
-            TX.type = 2;
-            TX.sequence_number = RX.sequence_number;
-            TX.time_difference_receiver = 0;
-            dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+            sendRangingframe(2, RX.sequence_number, 0);
             break;
         case 2:
             rangingtimingsSender[Index][1] = dw.getRXTimestamp();
             break;
         case 3:
-            TX.type = 4;
-            TX.time_difference_receiver = rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0];
-            dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+            sendRangingframe(4, TX.sequence_number, rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0]); // TODO: sequence number???
             break;
         case 4:
-            //tofs[Index] = RX.time_difference_receiver;
-            tofs[Index] = (rangingtimingsSender[Index][1] - rangingtimingsSender[Index][0] - RX.time_difference_receiver);// - 65536;
-            //tofs[RX->sequence_number] = (rangingtimingsSender[RX->sequence_number][1] - rangingtimingsSender[RX->sequence_number][0] - RX->time_difference_receiver) >> 1;
+            tofs = (rangingtimingsSender[Index][1] - rangingtimingsSender[Index][0] - RX.time_difference_receiver);// - 65536;
             break;
         default : break;
     }
@@ -83,21 +69,15 @@
 }
 
 void MMRanging::requestRanging() {
-    TX.type = 1;
-    TX.sequence_number = counter;
-    TX.time_difference_receiver = 0;
-    dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+    sendRangingframe(1, counter, 0);
 }
 
 void MMRanging::requestTime() {
-    TX.type = 3;
-    TX.sequence_number = counter;
-    TX.time_difference_receiver = 0;
-    dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+    sendRangingframe(3, counter, 0);
     counter++;
 }
 
-void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy) {
+void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver) {
     TX.type = type;
     TX.sequence_number = sequence_number;
     TX.time_difference_receiver = time_difference_receiver;
--- a/MMRanging/MMRanging.h	Sat Dec 27 14:37:12 2014 +0000
+++ b/MMRanging/MMRanging.h	Tue Feb 17 10:58:58 2015 +0000
@@ -6,7 +6,8 @@
 #include "mbed.h"
 #include "DW1000.h"
 
-#define MMRANGING_TIMEUNIT      1/(128*499.2)               // conversion between LSB of TX and RX timestamps and microseconds
+#define MMRANGING_TIMEUNIT_US      1/(128*499.2)                // conversion between LSB of TX and RX timestamps and microseconds
+#define MMRANGING_TIMEUNIT_NS      1000/(128*499.2)             // conversion between LSB of TX and RX timestamps and nanoseconds
 
 class MMRanging {
     public:
@@ -18,7 +19,7 @@
         
         void callbackRX();
         void callbackTX();
-        void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy);
+        void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver);
         
         struct rangingframe {
             uint32_t type;
@@ -27,15 +28,12 @@
         } ;
         uint64_t rangingtimingsSender[10][2];
         uint64_t rangingtimingsReceiver[10][2];
-        uint8_t ranging_i;
-        uint64_t tofs[10];
+        uint64_t tofs;
         
         rangingframe TX;
         
         // draft for first test
         bool receiver;
-        char message[1021];
-        char messageRX[1021];
         uint64_t TX_timestamp;
         uint64_t RX_timestamp;
         int event_i;
--- a/main.cpp	Sat Dec 27 14:37:12 2014 +0000
+++ b/main.cpp	Tue Feb 17 10:58:58 2015 +0000
@@ -18,30 +18,32 @@
     pc.printf("Voltage: %f\r\n", dw.getVoltage());
     pc.printf("Size of Frame: %d\r\n", sizeof(r.TX));
     
-    uint16_t setdelay = 65500;
+    uint16_t setdelay = 32768;
     dw.writeRegister16(DW1000_TX_ANTD, 0, setdelay);
     pc.printf("Antenna Delay TX: %d\r\n", dw.readRegister16(DW1000_TX_ANTD, 0));
     pc.printf("Antenna Delay RX: %d\r\n", dw.readRegister16(DW1000_LDE_CTRL, 0x1804));
-    r.receiver = true;
+    //r.receiver = true;
     
-    bool senderstart = true;
     while(1) {
-        for(int j = 0; j < 10; j++)
-            pc.printf("%d ", (unsigned int)r.tofs[j]);
-        pc.printf("\r\n");
-        for(int j = 0; j < 10; j++)
+        for(int j = 0; j < 1; j++)
+            //pc.printf("%f ", r.tofs[j]*MMRANGING_TIMEUNIT_NS);
+            pc.printf("%lld [", r.tofs);
+        int dots = r.tofs*70/1400;
+        if (abs(dots) < 100000)
+            for(int j = 0; j < dots; j++)
+                pc.printf("=");
+        pc.printf("]\r\n");
+        /*for(int j = 0; j < 10; j++)
             if(r.event[j][0] == '!') {
                 pc.printf("%s Time: %lldus\r\n", r.event[j], r.eventtimes[j]);
                 r.event[j][0] = 'X';
-            }    
+            }    */
         if (!r.receiver) {
-                if(senderstart)
-                    r.requestRanging();
-                else
-                    r.requestTime();
-                senderstart = !senderstart;
+            r.requestRanging();
+            wait(0.05);
+            r.requestTime();
         }
-        pc.printf("Status: %llX\r\n", dw.getStatus());
-        wait(2);
+        //pc.printf("Status: %llX\r\n", dw.getStatus());
+        wait(0.01);
     }
 }
\ No newline at end of file