Skip to content

Commit c82d143

Browse files
committed
initial XDATA decoding support
1 parent 103895f commit c82d143

File tree

1 file changed

+166
-22
lines changed

1 file changed

+166
-22
lines changed

js/tracker.js

Lines changed: 166 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1759,7 +1759,15 @@ function habitat_data(jsondata, alternative) {
17591759
"manufacturer": "Manufacturer",
17601760
"type": "Sonde Type",
17611761
"burst_timer": "Burst Timer",
1762-
"xdata": "XDATA"
1762+
"xdata": "XDATA",
1763+
"xdata_instrument": "XDATA Instrument",
1764+
"oif411_ozone_battery_v": "OIF411 Battery",
1765+
"oif411_ozone_current_uA": "Ozone Current",
1766+
"oif411_ozone_pump_curr_mA": "Ozone Pump Current",
1767+
"oif411_ozone_pump_temp": "Ozone Pump Temperature",
1768+
"oif411_serial": "OIF411 Serial Number",
1769+
"oif411_diagnostics": "OIF411 Diagnostics",
1770+
"oif411_version": "OIF411 Version",
17631771
};
17641772

17651773
var tooltips = {
@@ -1797,7 +1805,11 @@ function habitat_data(jsondata, alternative) {
17971805
"humidity": " %",
17981806
"frequency": " MHz",
17991807
"frequency_tx": " MHz",
1800-
"spam": ""
1808+
"spam": "",
1809+
"oif411_ozone_battery_v": " V",
1810+
"oif411_ozone_current_uA": " uA",
1811+
"oif411_ozone_pump_curr_mA": " mA",
1812+
"oif411_ozone_pump_temp": "°C",
18011813
};
18021814

18031815
try
@@ -1808,22 +1820,27 @@ function habitat_data(jsondata, alternative) {
18081820
var array = [];
18091821
var output = "";
18101822
var txFreq = false
1823+
var xdataFound = false
18111824

18121825
if(Object.keys(data).length === 0) return "";
18131826

18141827
if ("frequency_tx" in data) {
18151828
txFreq = true
18161829
}
18171830

1831+
if ("xdata_instrument" in data) {
1832+
xdataFound = true
1833+
}
1834+
18181835
for(var key in data) {
1819-
if (key === "frequency" && txFreq) {} else {
1836+
if ((key === "frequency" && txFreq) || (key === "xdata" && xdataFound)) {} else {
18201837
array.push([key, data[key]]);
18211838
}
18221839
}
18231840

1824-
array.sort(function(a, b) {
1825-
return a[0].localeCompare(b[0]);
1826-
});
1841+
//array.sort(function(a, b) {
1842+
// return a[0].localeCompare(b[0]);
1843+
//});
18271844

18281845
for(var i = 0, ii = array.length; i < ii; i++) {
18291846
var k = array[i][0]; // key
@@ -3113,6 +3130,9 @@ function mapInfoBox_handle_path_new(data, vehicle, date) {
31133130
if (data.hasOwnProperty("manufacturer")) {
31143131
html += "<div><b>Manufacturer:&nbsp;</b>" + data.manufacturer + "</div>";
31153132
};
3133+
if (data.hasOwnProperty("pressure")) {
3134+
html += "<div><b>Pressure:&nbsp;</b>" + data.pressure + " Pa</div>";
3135+
};
31163136
if (data.hasOwnProperty("sats")) {
31173137
html += "<div><b>Satellites:&nbsp;</b>" + data.sats + "</div>";
31183138
};
@@ -3124,11 +3144,35 @@ function mapInfoBox_handle_path_new(data, vehicle, date) {
31243144
} else if (data.hasOwnProperty("type")) {
31253145
html += "<div><b>Sonde Type:&nbsp;</b>" + data.type + "</div>";
31263146
};
3127-
if (data.hasOwnProperty("pressure")) {
3128-
html += "<div><b>Pressure:&nbsp;</b>" + data.pressure + " Pa</div>";
3129-
};
31303147
if (data.hasOwnProperty("xdata")) {
3148+
html += "<hr style='margin:0px;margin-top:5px'>";
3149+
html += "<div style='font-size:11px;'>"
31313150
html += "<div><b>XDATA:&nbsp;</b>" + data.xdata + "</div>";
3151+
var tempXDATA = parseXDATA(data.xdata);
3152+
if (tempXDATA.hasOwnProperty('xdata_instrument')) {
3153+
html += "<div><b>XDATA Instrument:&nbsp;</b>" + tempXDATA.xdata_instrument + "</div>";
3154+
}
3155+
if (tempXDATA.hasOwnProperty('oif411_ozone_battery_v')) {
3156+
html += "<div><b>OIF411 Battery:&nbsp;</b>" + tempXDATA.oif411_ozone_battery_v + " V</div>";
3157+
}
3158+
if (tempXDATA.hasOwnProperty('oif411_ozone_current_uA')) {
3159+
html += "<div><b>Ozone Current:&nbsp;</b>" + tempXDATA.oif411_ozone_current_uA + " uA</div>";
3160+
}
3161+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_curr_mA')) {
3162+
html += "<div><b>Ozone Pump Current:&nbsp;</b>" + tempXDATA.oif411_ozone_pump_curr_mA + " mA</div>";
3163+
}
3164+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_temp')) {
3165+
html += "<div><b>Ozone Pump Temperature:&nbsp;</b>" + tempXDATA.oif411_ozone_pump_temp + "°C</div>";
3166+
}
3167+
if (tempXDATA.hasOwnProperty('oif411_serial')) {
3168+
html += "<div><b>OIF411 Serial Number:&nbsp;</b>" + tempXDATA.oif411_serial + "</div>";
3169+
}
3170+
if (tempXDATA.hasOwnProperty('oif411_diagnostics')) {
3171+
html += "<div><b>OIF411 Diagnostics:&nbsp;</b>" + tempXDATA.oif411_diagnostics + "</div>";
3172+
}
3173+
if (tempXDATA.hasOwnProperty('oif411_version')) {
3174+
html += "<div><b>OIF411 Version:&nbsp;</b>" + tempXDATA.oif411_version + "</div>";
3175+
}
31323176
};
31333177

31343178
html += "<hr style='margin:0px;margin-top:5px'>";
@@ -3851,7 +3895,7 @@ function addPosition(position) {
38513895

38523896
// Graph Stuff
38533897

3854-
var graph_inhibited_fields = ['frequency', 'frequency_tx', 'burst_timer'];
3898+
var graph_inhibited_fields = ['frequency', 'frequency_tx', 'burst_timer', 'xdata', 'oif411_ozone_pump_temp', 'oif411_ozone_current_uA', 'oif411_ozone_battery_v', 'oif411_ozone_pump_curr_mA', 'oif411_serial', 'oif411_version'];
38553899

38563900
function updateGraph(vcallsign, reset_selection) {
38573901
if(!plot || !plot_open) return;
@@ -4167,6 +4211,9 @@ function formatData(data, live) {
41674211
if (data[entry].manufacturer) {
41684212
dataTempEntry.data.manufacturer = data[entry].manufacturer;
41694213
}
4214+
if (data[entry].hasOwnProperty("pressure")) {
4215+
dataTempEntry.data.pressure = data[entry].pressure;
4216+
}
41704217
if (data[entry].sats) {
41714218
dataTempEntry.data.sats = data[entry].sats;
41724219
}
@@ -4181,11 +4228,33 @@ function formatData(data, live) {
41814228
dataTempEntry.data.type = data[entry].subtype;
41824229
dataTempEntry.type = data[entry].subtype;
41834230
}
4184-
if (data[entry].hasOwnProperty("pressure")) {
4185-
dataTempEntry.data.pressure = data[entry].pressure;
4186-
}
41874231
if (data[entry].xdata) {
41884232
dataTempEntry.data.xdata = data[entry].xdata;
4233+
var tempXDATA = parseXDATA(data[entry].xdata);
4234+
if (tempXDATA.hasOwnProperty('xdata_instrument')) {
4235+
dataTempEntry.data.xdata_instrument = tempXDATA.xdata_instrument;
4236+
}
4237+
if (tempXDATA.hasOwnProperty('oif411_ozone_battery_v')) {
4238+
dataTempEntry.data.oif411_ozone_battery_v = tempXDATA.oif411_ozone_battery_v;
4239+
}
4240+
if (tempXDATA.hasOwnProperty('oif411_ozone_current_uA')) {
4241+
dataTempEntry.data.oif411_ozone_current_uA = tempXDATA.oif411_ozone_current_uA;
4242+
}
4243+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_curr_mA')) {
4244+
dataTempEntry.data.oif411_ozone_pump_curr_mA = tempXDATA.oif411_ozone_pump_curr_mA;
4245+
}
4246+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_temp')) {
4247+
dataTempEntry.data.oif411_ozone_pump_temp = tempXDATA.oif411_ozone_pump_temp;
4248+
}
4249+
if (tempXDATA.hasOwnProperty('oif411_serial')) {
4250+
dataTempEntry.data.oif411_serial = tempXDATA.oif411_serial;
4251+
}
4252+
if (tempXDATA.hasOwnProperty('oif411_diagnostics')) {
4253+
dataTempEntry.oif411_diagnostics = tempXDATA.oif411_diagnostics;
4254+
}
4255+
if (tempXDATA.hasOwnProperty('oif411_version')) {
4256+
dataTempEntry.oif411_version = tempXDATA.oif411_version;
4257+
}
41894258
}
41904259
if (data[entry].serial.toLowerCase() != "xxxxxxxx") {
41914260
dataTemp.push(dataTempEntry);
@@ -4255,6 +4324,9 @@ function formatData(data, live) {
42554324
if (data.manufacturer) {
42564325
dataTempEntry.data.manufacturer = data.manufacturer;
42574326
}
4327+
if (data.hasOwnProperty("pressure")) {
4328+
dataTempEntry.data.pressure = data.pressure;
4329+
}
42584330
if (data.sats) {
42594331
dataTempEntry.data.sats = data.sats;
42604332
}
@@ -4269,11 +4341,33 @@ function formatData(data, live) {
42694341
dataTempEntry.data.type = data.subtype;
42704342
dataTempEntry.type = data.subtype;
42714343
}
4272-
if (data.hasOwnProperty("pressure")) {
4273-
dataTempEntry.data.pressure = data.pressure;
4274-
}
42754344
if (data.xdata) {
42764345
dataTempEntry.data.xdata = data.xdata;
4346+
var tempXDATA = parseXDATA(data.xdata);
4347+
if (tempXDATA.hasOwnProperty('xdata_instrument')) {
4348+
dataTempEntry.data.xdata_instrument = tempXDATA.xdata_instrument;
4349+
}
4350+
if (tempXDATA.hasOwnProperty('oif411_ozone_battery_v')) {
4351+
dataTempEntry.data.oif411_ozone_battery_v = tempXDATA.oif411_ozone_battery_v;
4352+
}
4353+
if (tempXDATA.hasOwnProperty('oif411_ozone_current_uA')) {
4354+
dataTempEntry.data.oif411_ozone_current_uA = tempXDATA.oif411_ozone_current_uA;
4355+
}
4356+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_curr_mA')) {
4357+
dataTempEntry.data.oif411_ozone_pump_curr_mA = tempXDATA.oif411_ozone_pump_curr_mA;
4358+
}
4359+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_temp')) {
4360+
dataTempEntry.data.oif411_ozone_pump_temp = tempXDATA.oif411_ozone_pump_temp;
4361+
}
4362+
if (tempXDATA.hasOwnProperty('oif411_serial')) {
4363+
dataTempEntry.data.oif411_serial = tempXDATA.oif411_serial;
4364+
}
4365+
if (tempXDATA.hasOwnProperty('oif411_diagnostics')) {
4366+
dataTempEntry.oif411_diagnostics = tempXDATA.oif411_diagnostics;
4367+
}
4368+
if (tempXDATA.hasOwnProperty('oif411_version')) {
4369+
dataTempEntry.oif411_version = tempXDATA.oif411_version;
4370+
}
42774371
}
42784372
if (data.serial.toLowerCase() != "xxxxxxxx") {
42794373
dataTemp.push(dataTempEntry);
@@ -4326,6 +4420,9 @@ function formatData(data, live) {
43264420
if (data[key][i].manufacturer) {
43274421
dataTempEntry.data.manufacturer = data[key][i].manufacturer;
43284422
}
4423+
if (data[key][i].hasOwnProperty("pressure")) {
4424+
dataTempEntry.data.pressure = data[key][i].pressure;
4425+
}
43294426
if (data[key][i].sats) {
43304427
dataTempEntry.data.sats = data[key][i].sats;
43314428
}
@@ -4340,11 +4437,33 @@ function formatData(data, live) {
43404437
dataTempEntry.data.type = data[key][i].subtype;
43414438
dataTempEntry.type = data[key][i].subtype;
43424439
}
4343-
if (data[key][i].hasOwnProperty("pressure")) {
4344-
dataTempEntry.data.pressure = data[key][i].pressure;
4345-
}
43464440
if (data[key][i].xdata) {
43474441
dataTempEntry.data.xdata = data[key][i].xdata;
4442+
var tempXDATA = parseXDATA(data[key][i].xdata);
4443+
if (tempXDATA.hasOwnProperty('xdata_instrument')) {
4444+
dataTempEntry.data.xdata_instrument = tempXDATA.xdata_instrument;
4445+
}
4446+
if (tempXDATA.hasOwnProperty('oif411_ozone_battery_v')) {
4447+
dataTempEntry.data.oif411_ozone_battery_v = tempXDATA.oif411_ozone_battery_v;
4448+
}
4449+
if (tempXDATA.hasOwnProperty('oif411_ozone_current_uA')) {
4450+
dataTempEntry.data.oif411_ozone_current_uA = tempXDATA.oif411_ozone_current_uA;
4451+
}
4452+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_curr_mA')) {
4453+
dataTempEntry.data.oif411_ozone_pump_curr_mA = tempXDATA.oif411_ozone_pump_curr_mA;
4454+
}
4455+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_temp')) {
4456+
dataTempEntry.data.oif411_ozone_pump_temp = tempXDATA.oif411_ozone_pump_temp;
4457+
}
4458+
if (tempXDATA.hasOwnProperty('oif411_serial')) {
4459+
dataTempEntry.data.oif411_serial = tempXDATA.oif411_serial;
4460+
}
4461+
if (tempXDATA.hasOwnProperty('oif411_diagnostics')) {
4462+
dataTempEntry.oif411_diagnostics = tempXDATA.oif411_diagnostics;
4463+
}
4464+
if (tempXDATA.hasOwnProperty('oif411_version')) {
4465+
dataTempEntry.oif411_version = tempXDATA.oif411_version;
4466+
}
43484467
}
43494468
if (data[key][i].serial.toLowerCase() != "xxxxxxxx") {
43504469
dataTemp.push(dataTempEntry);
@@ -4418,6 +4537,9 @@ function formatData(data, live) {
44184537
if (data[i].manufacturer) {
44194538
dataTempEntry.data.manufacturer = data[i].manufacturer;
44204539
}
4540+
if (data[i].hasOwnProperty("pressure")) {
4541+
dataTempEntry.data.pressure = data[i].pressure;
4542+
}
44214543
if (data[i].sats) {
44224544
dataTempEntry.data.sats = data[i].sats;
44234545
}
@@ -4442,11 +4564,33 @@ function formatData(data, live) {
44424564
dataTempEntry.data.type = data[i].subtype;
44434565
dataTempEntry.type = data[i].subtype;
44444566
}
4445-
if (data[i].hasOwnProperty("pressure")) {
4446-
dataTempEntry.data.pressure = data[i].pressure;
4447-
}
44484567
if (data[i].xdata) {
44494568
dataTempEntry.data.xdata = data[i].xdata;
4569+
var tempXDATA = parseXDATA(data[i].xdata);
4570+
if (tempXDATA.hasOwnProperty('xdata_instrument')) {
4571+
dataTempEntry.data.xdata_instrument = tempXDATA.xdata_instrument;
4572+
}
4573+
if (tempXDATA.hasOwnProperty('oif411_ozone_battery_v')) {
4574+
dataTempEntry.data.oif411_ozone_battery_v = tempXDATA.oif411_ozone_battery_v;
4575+
}
4576+
if (tempXDATA.hasOwnProperty('oif411_ozone_current_uA')) {
4577+
dataTempEntry.data.oif411_ozone_current_uA = tempXDATA.oif411_ozone_current_uA;
4578+
}
4579+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_curr_mA')) {
4580+
dataTempEntry.data.oif411_ozone_pump_curr_mA = tempXDATA.oif411_ozone_pump_curr_mA;
4581+
}
4582+
if (tempXDATA.hasOwnProperty('oif411_ozone_pump_temp')) {
4583+
dataTempEntry.data.oif411_ozone_pump_temp = tempXDATA.oif411_ozone_pump_temp;
4584+
}
4585+
if (tempXDATA.hasOwnProperty('oif411_serial')) {
4586+
dataTempEntry.data.oif411_serial = tempXDATA.oif411_serial;
4587+
}
4588+
if (tempXDATA.hasOwnProperty('oif411_diagnostics')) {
4589+
dataTempEntry.oif411_diagnostics = tempXDATA.oif411_diagnostics;
4590+
}
4591+
if (tempXDATA.hasOwnProperty('oif411_version')) {
4592+
dataTempEntry.oif411_version = tempXDATA.oif411_version;
4593+
}
44504594
}
44514595
dataTemp.push(dataTempEntry);
44524596
}

0 commit comments

Comments
 (0)