@@ -49,6 +49,12 @@ function formatData(data, live) {
4949 dataTempEntry . gps_alt = data [ entry ] . alt ;
5050 dataTempEntry . gps_lat = data [ entry ] . lat ;
5151 dataTempEntry . gps_lon = data [ entry ] . lon ;
52+
53+ // Discard positions with null values.
54+ if ( dataTempEntry . gps_lat == 0 && dataTempEntry . gps_lon == 0 ) {
55+ continue ;
56+ }
57+
5258 if ( data [ entry ] . heading ) {
5359 dataTempEntry . gps_heading = data [ entry ] . heading ;
5460 }
@@ -72,14 +78,16 @@ function formatData(data, live) {
7278 if ( data [ entry ] . hasOwnProperty ( "humidity" ) ) {
7379 dataTempEntry . data . humidity = data [ entry ] . humidity ;
7480 }
75- if ( data [ entry ] . manufacturer ) {
76- dataTempEntry . data . manufacturer = data [ entry ] . manufacturer ;
77- }
7881 if ( data [ entry ] . hasOwnProperty ( "pressure" ) ) {
7982 dataTempEntry . data . pressure = data [ entry ] . pressure ;
8083 }
8184 if ( data [ entry ] . sats ) {
8285 dataTempEntry . data . sats = data [ entry ] . sats ;
86+
87+ // Drop frames where sats = 0! We do not want to be handling invalid positions.
88+ if ( dataTempEntry . data . sats == 0 ) {
89+ continue ;
90+ }
8391 }
8492 if ( data [ entry ] . hasOwnProperty ( "temp" ) ) {
8593 dataTempEntry . data . temperature_external = data [ entry ] . temp ;
@@ -88,9 +96,7 @@ function formatData(data, live) {
8896 if ( data [ entry ] . hasOwnProperty ( "rs41_mainboard" ) ) {
8997 dataTempEntry . data . rs41_mainboard = data [ entry ] . rs41_mainboard ;
9098 }
91- if ( data [ entry ] . hasOwnProperty ( "rs41_mainboard_fw" ) ) {
92- dataTempEntry . data . rs41_mainboard_fw = data [ entry ] . rs41_mainboard_fw ;
93- }
99+ // Removed showing mainboard firmware, not really valuable
94100
95101 if ( data [ entry ] . type ) {
96102 dataTempEntry . data . type = data [ entry ] . type ;
@@ -100,6 +106,14 @@ function formatData(data, live) {
100106 dataTempEntry . data . type = data [ entry ] . subtype ;
101107 dataTempEntry . type = data [ entry ] . subtype ;
102108 }
109+
110+ if ( data [ entry ] . manufacturer ) {
111+ // Instead of adding a separate manufacturer field, prefix the type with it.
112+ if ( dataTempEntry . data . type ) {
113+ dataTempEntry . data . type = data [ entry ] . manufacturer + " " + dataTempEntry . data . type ;
114+ }
115+ }
116+
103117 if ( data [ entry ] . xdata ) {
104118 dataTempEntry . data . xdata = data [ entry ] . xdata ;
105119
@@ -145,6 +159,12 @@ function formatData(data, live) {
145159 dataTempEntry . gps_alt = data [ key ] [ i ] . alt ;
146160 dataTempEntry . gps_lat = data [ key ] [ i ] . lat ;
147161 dataTempEntry . gps_lon = data [ key ] [ i ] . lon ;
162+
163+ // Discard positions with null values.
164+ if ( dataTempEntry . gps_lat == 0 && dataTempEntry . gps_lon == 0 ) {
165+ continue ;
166+ }
167+
148168 if ( data [ key ] [ i ] . heading ) {
149169 dataTempEntry . gps_heading = data [ key ] [ i ] . heading ;
150170 }
@@ -168,14 +188,17 @@ function formatData(data, live) {
168188 if ( data [ key ] [ i ] . hasOwnProperty ( "humidity" ) ) {
169189 dataTempEntry . data . humidity = data [ key ] [ i ] . humidity ;
170190 }
171- if ( data [ key ] [ i ] . manufacturer ) {
172- dataTempEntry . data . manufacturer = data [ key ] [ i ] . manufacturer ;
173- }
191+
174192 if ( data [ key ] [ i ] . hasOwnProperty ( "pressure" ) ) {
175193 dataTempEntry . data . pressure = data [ key ] [ i ] . pressure ;
176194 }
177195 if ( data [ key ] [ i ] . sats ) {
178196 dataTempEntry . data . sats = data [ key ] [ i ] . sats ;
197+
198+ // Drop frames where sats = 0! We do not want to be handling invalid positions.
199+ if ( dataTempEntry . data . sats == 0 ) {
200+ continue ;
201+ }
179202 }
180203 if ( data [ key ] [ i ] . hasOwnProperty ( "temp" ) ) {
181204 dataTempEntry . data . temperature_external = data [ key ] [ i ] . temp ;
@@ -188,6 +211,21 @@ function formatData(data, live) {
188211 dataTempEntry . data . type = data [ key ] [ i ] . subtype ;
189212 dataTempEntry . type = data [ key ] [ i ] . subtype ;
190213 }
214+
215+ if ( data [ key ] [ i ] . manufacturer ) {
216+ // Instead of adding a separate manufacturer field, prefix the type with it.
217+ if ( dataTempEntry . data . type ) {
218+ dataTempEntry . data . type = data [ key ] [ i ] . manufacturer + " " + dataTempEntry . data . type ;
219+ }
220+ }
221+
222+ // RS41 specific stuff
223+ if ( data [ key ] [ i ] . hasOwnProperty ( "rs41_mainboard" ) ) {
224+ dataTempEntry . data . rs41_mainboard = data [ key ] [ i ] . rs41_mainboard ;
225+ }
226+ // Removed showing mainboard firmware, not really valuable
227+
228+ // XDATA Handling
191229 if ( data [ key ] [ i ] . xdata ) {
192230 dataTempEntry . data . xdata = data [ key ] [ i ] . xdata ;
193231 if ( data [ key ] [ i ] . hasOwnProperty ( "pressure" ) ) {
@@ -252,6 +290,12 @@ function formatData(data, live) {
252290 dataTempEntry . gps_alt = data [ i ] . alt ;
253291 dataTempEntry . gps_lat = data [ i ] . lat ;
254292 dataTempEntry . gps_lon = data [ i ] . lon ;
293+
294+ // Discard positions with null values.
295+ if ( dataTempEntry . gps_lat == 0 && dataTempEntry . gps_lon == 0 ) {
296+ continue ;
297+ }
298+
255299 if ( data [ i ] . heading ) {
256300 dataTempEntry . gps_heading = data [ i ] . heading ;
257301 }
@@ -283,6 +327,11 @@ function formatData(data, live) {
283327 }
284328 if ( data [ i ] . sats ) {
285329 dataTempEntry . data . sats = data [ i ] . sats ;
330+
331+ // Drop frames where sats = 0! We do not want to be handling invalid positions.
332+ if ( dataTempEntry . data . sats == 0 ) {
333+ continue ;
334+ }
286335 }
287336 if ( data [ i ] . hasOwnProperty ( "temp" ) ) {
288337 dataTempEntry . data . temperature_external = data [ i ] . temp ;
@@ -293,7 +342,8 @@ function formatData(data, live) {
293342 dataTempEntry . data . type = v1types [ comment [ 0 ] ] ;
294343 dataTempEntry . type = v1types [ comment [ 0 ] ] ;
295344 if ( v1manufacturers . hasOwnProperty ( dataTempEntry . type ) ) {
296- dataTempEntry . data . manufacturer = v1manufacturers [ dataTempEntry . type ] ;
345+ // dataTempEntry.data.manufacturer = v1manufacturers[dataTempEntry.type];
346+ dataTempEntry . data . type = v1manufacturers [ dataTempEntry . type ] + " " + dataTempEntry . data . type ;
297347 }
298348 }
299349 dataTempEntry . data . frequency = comment [ 2 ] ;
@@ -305,6 +355,21 @@ function formatData(data, live) {
305355 dataTempEntry . data . type = data [ i ] . subtype ;
306356 dataTempEntry . type = data [ i ] . subtype ;
307357 }
358+
359+ if ( data [ i ] . manufacturer ) {
360+ // Instead of adding a separate manufacturer field, prefix the type with it.
361+ if ( dataTempEntry . data . type ) {
362+ dataTempEntry . data . type = data [ i ] . manufacturer + " " + dataTempEntry . data . type ;
363+ }
364+ }
365+
366+ // RS41 specific stuff
367+ if ( data [ i ] . hasOwnProperty ( "rs41_mainboard" ) ) {
368+ dataTempEntry . data . rs41_mainboard = data [ i ] . rs41_mainboard ;
369+ }
370+ // Removed showing mainboard firmware, not really valuable
371+
372+ // XDATA Handling
308373 if ( data [ i ] . xdata ) {
309374 dataTempEntry . data . xdata = data [ i ] . xdata ;
310375 if ( data [ i ] . hasOwnProperty ( "pressure" ) ) {
0 commit comments