]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
added matlab script that calculates mean timesync error and updated doc
authorkusy <kusy>
Wed, 23 Jul 2008 20:34:41 +0000 (20:34 +0000)
committerkusy <kusy>
Wed, 23 Jul 2008 20:34:41 +0000 (20:34 +0000)
apps/tests/TestFtsp/FtspDataAnalyzer.m [new file with mode: 0644]
apps/tests/TestFtsp/README.txt

diff --git a/apps/tests/TestFtsp/FtspDataAnalyzer.m b/apps/tests/TestFtsp/FtspDataAnalyzer.m
new file mode 100644 (file)
index 0000000..94dda15
--- /dev/null
@@ -0,0 +1,60 @@
+%load file written out by FtspDataLogger.java class\r
+%arg0 - filename, e.g. '1205543689171.report'\r
+function FTSPDataAnalyzer(file, varargin)\r
+[c1 c2 c3 c4 c5]= textread(file, '%u %u %u %u %u', 'commentstyle', 'shell');\r
+data = [c2 c3 c4 c5]; %skipping the first column (java time)\r
+data1 = sortrows(sortrows(data,1),2);\r
+newdata = [];\r
+\r
+row=1;\r
+newrow=1;\r
+unsynced=0;\r
+while (row<=size(data1,1))\r
+\r
+    seqnum=data1(row,2);\r
+\r
+    data2=[];\r
+    row2=1;\r
+    tmprow1=row;\r
+    while (row <= size(data1,1) && data1(row,2)==seqnum)\r
+        if (data1(row,4)==0)\r
+            data2(row2,1)=data1(row,3);\r
+            row2= row2+ 1;\r
+        else\r
+            unsynced=unsynced+1;\r
+        end\r
+        row = row + 1;\r
+    end\r
+    \r
+    if (row2>1)\r
+        row2size=row2-1;\r
+        rcvdsize=row-tmprow1;\r
+        newdata(newrow,1) = seqnum;\r
+        newdata(newrow,2) = mad(data2(1:row2size,1));\r
+        newdata(newrow,3) = mean(data2(1:row2size,1));\r
+        newdata(newrow,4) = row2size/rcvdsize;\r
+        newrow = newrow + 1;\r
+    end\r
+end\r
+\r
+if (length(newdata)==0)\r
+    disp('no data found (at least one data point from a synchronized mote is required)!');\r
+else\r
+    newsize=newrow-1;\r
+    subplot(3,1,1);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,2));\r
+    title(sprintf('TimeSync Errors'));\r
+    subplot(3,1,2);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,3));\r
+    title(sprintf('Avg Glob Time'));\r
+    subplot(3,1,3);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,4),'b-');\r
+    title(sprintf('%% Synced Motes'));\r
+\r
+    disp(sprintf('total unsycned num %d (all %d)',unsynced,newsize));\r
+    disp(sprintf('avg %0.3f',mean(newdata(1:newsize,2))));\r
+    disp(sprintf('max %d',max(newdata(1:newsize,2))));\r
+    savedata = newdata(1:newsize,:);\r
+    save data.out savedata -ASCII;\r
+end\r
+    
\ No newline at end of file
index 23ca3644e5d388e7f5163ca96349cc86e2e35b86..b011bc39250528c6abda57b389caaefcabd211c3 100644 (file)
@@ -86,3 +86,8 @@ is what it looks like when node 1 in the earlier trace is reset:
 1214516498277 5 10964 445705 0
 1214516498285 1 10964 445707 0
 1214516498521 1 10965 445964 0
+
+This output is also saved in a file named 'current_timestamp.report'.
+'.report' files can be used with the FtspDataAnalyzer.m Matlab
+application. Mean absolute timesync error, global time, and % of
+synced motes will be plotted.