Matthias Grob & Manuel Stalder / Mbed 2 deprecated DecaWave

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
manumaet
Date:
Sat Dec 27 14:37:12 2014 +0000
Parent:
33:6ea4c3dd504d
Child:
35:95d838d33bf5
Commit message:
when merging to eclipse & svn

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	Tue Dec 02 13:55:01 2014 +0000
+++ b/MMRanging/MMRanging.cpp	Sat Dec 27 14:37:12 2014 +0000
@@ -1,6 +1,6 @@
 #include "MMRanging.h"
 
-MMRanging::MMRanging(DW1000& DW) : dw(DW){
+MMRanging::MMRanging(DW1000& DW) : dw(DW) {
     MMRanging::dw = dw;
     
     ranging_i = 0;
@@ -19,27 +19,27 @@
     
     rangingframe RX;
     dw.readRegister(DW1000_RX_BUFFER, 0, (uint8_t*)&RX, dw.getFramelength());  // get data from buffer
-    
+    uint8_t Index = RX.sequence_number % 10;
+
     switch (RX.type) {
         case 1:
-            rangingtimingsReceiver[RX.sequence_number][0] = dw.getRXTimestamp();
+            rangingtimingsReceiver[Index][0] = dw.getRXTimestamp();
             TX.type = 2;
             TX.sequence_number = RX.sequence_number;
             TX.time_difference_receiver = 0;
-            TX.dummy = 1;
-            dw.sendFrame((uint8_t*)&TX, 12);
+            dw.sendFrame((uint8_t*)&TX, sizeof(TX));
             break;
         case 2:
-            rangingtimingsSender[RX.sequence_number][1] = dw.getRXTimestamp();
+            rangingtimingsSender[Index][1] = dw.getRXTimestamp();
             break;
         case 3:
             TX.type = 4;
-            TX.time_difference_receiver = rangingtimingsReceiver[TX.sequence_number][1] - rangingtimingsReceiver[TX.sequence_number][0];
-            TX.dummy = 1;
-            dw.sendFrame((uint8_t*)&TX, 12);
+            TX.time_difference_receiver = rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0];
+            dw.sendFrame((uint8_t*)&TX, sizeof(TX));
             break;
         case 4:
-            tofs[RX.sequence_number % 10] = rangingtimingsSender[RX.sequence_number][1] - rangingtimingsSender[RX.sequence_number][0] - (uint32_t)RX.time_difference_receiver;
+            //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;
             break;
         default : break;
@@ -60,13 +60,13 @@
 
 void MMRanging::callbackTX() {
     TX_timestamp = dw.getTXTimestamp();
-    
+    uint8_t Index = TX.sequence_number % 10;
     switch (TX.type) {
         case 1:
-            rangingtimingsSender[TX.sequence_number][0] = dw.getTXTimestamp();
+            rangingtimingsSender[Index][0] = dw.getTXTimestamp();
             break;
         case 2:
-            rangingtimingsReceiver[TX.sequence_number][1] = dw.getTXTimestamp();
+            rangingtimingsReceiver[Index][1] = dw.getTXTimestamp();
             break;
         default: break;
     }
@@ -86,15 +86,20 @@
     TX.type = 1;
     TX.sequence_number = counter;
     TX.time_difference_receiver = 0;
-    TX.dummy = 1;
-    dw.sendFrame((uint8_t*)&TX, 12);
+    dw.sendFrame((uint8_t*)&TX, sizeof(TX));
 }
 
 void MMRanging::requestTime() {
     TX.type = 3;
     TX.sequence_number = counter;
     TX.time_difference_receiver = 0;
-    TX.dummy = 1;
-    dw.sendFrame((uint8_t*)&TX, 12);
+    dw.sendFrame((uint8_t*)&TX, sizeof(TX));
     counter++;
+}
+
+void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy) {
+    TX.type = type;
+    TX.sequence_number = sequence_number;
+    TX.time_difference_receiver = time_difference_receiver;
+    dw.sendFrame((uint8_t*)&TX, sizeof(TX));
 }
\ No newline at end of file
--- a/MMRanging/MMRanging.h	Tue Dec 02 13:55:01 2014 +0000
+++ b/MMRanging/MMRanging.h	Sat Dec 27 14:37:12 2014 +0000
@@ -18,12 +18,12 @@
         
         void callbackRX();
         void callbackTX();
+        void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy);
         
-        struct rangingframe {               // has a length of 10 bytes
-            uint8_t type;
-            uint8_t sequence_number;
+        struct rangingframe {
+            uint32_t type;
+            uint32_t sequence_number;
             uint64_t time_difference_receiver;
-            uint16_t dummy;
         } ;
         uint64_t rangingtimingsSender[10][2];
         uint64_t rangingtimingsReceiver[10][2];
--- a/main.cpp	Tue Dec 02 13:55:01 2014 +0000
+++ b/main.cpp	Sat Dec 27 14:37:12 2014 +0000
@@ -16,17 +16,22 @@
     pc.printf("DEVICE_ID register: 0x%X\r\n", dw.getDeviceID());
     pc.printf("EUI register: %016llX\r\n", dw.getEUI());
     pc.printf("Voltage: %f\r\n", dw.getVoltage());
-
-    //r.receiver = true;
+    pc.printf("Size of Frame: %d\r\n", sizeof(r.TX));
+    
+    uint16_t setdelay = 65500;
+    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;
     
     bool senderstart = true;
     while(1) {
         for(int j = 0; j < 10; j++)
-            pc.printf("%f ", r.tofs[j]*MMRANGING_TIMEUNIT);
+            pc.printf("%d ", (unsigned int)r.tofs[j]);
         pc.printf("\r\n");
         for(int j = 0; j < 10; j++)
             if(r.event[j][0] == '!') {
-                pc.printf("%s Time: %fus\r\n", r.event[j], r.eventtimes[j]*MMRANGING_TIMEUNIT);
+                pc.printf("%s Time: %lldus\r\n", r.event[j], r.eventtimes[j]);
                 r.event[j][0] = 'X';
             }    
         if (!r.receiver) {