@@ -2676,82 +2676,162 @@ function formatData(data, live) {
26762676 response . positions = { } ;
26772677 var dataTemp = [ ] ;
26782678 if ( live ) {
2679- for ( let entry in data ) {
2679+ if ( data . length ) {
2680+ for ( let entry in data ) {
2681+ var dataTempEntry = { } ;
2682+ var station = data [ entry ] . uploader_callsign ;
2683+ dataTempEntry . callsign = { } ;
2684+ //check if other stations also received this packet
2685+ if ( vehicles . hasOwnProperty ( data [ entry ] . serial ) ) {
2686+ if ( data [ entry ] . datetime == vehicles [ data [ entry ] . serial ] . curr_position . gps_time ) {
2687+ for ( let key in vehicles [ data [ entry ] . serial ] . curr_position . callsign ) {
2688+ if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign . hasOwnProperty ( key ) ) {
2689+ if ( key != station ) {
2690+ dataTempEntry . callsign [ key ] = { } ;
2691+ if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "snr" ) ) {
2692+ dataTempEntry . callsign [ key ] . snr = vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . snr ;
2693+ }
2694+ if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "rssi" ) ) {
2695+ dataTempEntry . callsign [ key ] . rssi = vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . rssi ;
2696+ }
2697+ }
2698+ }
2699+ }
2700+ }
2701+ }
2702+ dataTempEntry . callsign [ station ] = { } ;
2703+ if ( data [ entry ] . snr ) {
2704+ dataTempEntry . callsign [ station ] . snr = data [ entry ] . snr ;
2705+ }
2706+ if ( data [ entry ] . rssi ) {
2707+ dataTempEntry . callsign [ station ] . rssi = data [ entry ] . rssi ;
2708+ }
2709+ dataTempEntry . gps_alt = data [ entry ] . alt ;
2710+ dataTempEntry . gps_lat = data [ entry ] . lat ;
2711+ dataTempEntry . gps_lon = data [ entry ] . lon ;
2712+ if ( data [ entry ] . heading ) {
2713+ dataTempEntry . gps_heading = data [ entry ] . heading ;
2714+ }
2715+ dataTempEntry . gps_time = data [ entry ] . datetime ;
2716+ dataTempEntry . server_time = data [ entry ] . datetime ;
2717+ dataTempEntry . vehicle = data [ entry ] . serial ;
2718+ dataTempEntry . position_id = data [ entry ] . serial + "-" + data [ entry ] . datetime ;
2719+ dataTempEntry . data = { } ;
2720+ if ( data [ entry ] . batt ) {
2721+ dataTempEntry . data . batt = data [ entry ] . batt ;
2722+ }
2723+ if ( data [ entry ] . burst_timer ) {
2724+ dataTempEntry . data . burst_timer = data [ entry ] . burst_timer ;
2725+ }
2726+ if ( data [ entry ] . frequency ) {
2727+ dataTempEntry . data . frequency = data [ entry ] . frequency ;
2728+ }
2729+ if ( data [ entry ] . humidity ) {
2730+ dataTempEntry . data . humidity = data [ entry ] . humidity ;
2731+ }
2732+ if ( data [ entry ] . manufacturer ) {
2733+ dataTempEntry . data . manufacturer = data [ entry ] . manufacturer ;
2734+ }
2735+ if ( data [ entry ] . sats ) {
2736+ dataTempEntry . data . sats = data [ entry ] . sats ;
2737+ }
2738+ if ( data [ entry ] . temp ) {
2739+ dataTempEntry . data . temperature_external = data [ entry ] . temp ;
2740+ }
2741+ if ( data [ entry ] . type ) {
2742+ dataTempEntry . data . type = data [ entry ] . type ;
2743+ dataTempEntry . type = data [ entry ] . type ;
2744+ }
2745+ if ( data [ entry ] . subtype ) {
2746+ dataTempEntry . data . type = data [ entry ] . subtype ;
2747+ dataTempEntry . type = data [ entry ] . subtype ;
2748+ }
2749+ if ( data [ entry ] . pressure ) {
2750+ dataTempEntry . data . pressure = data [ entry ] . pressure ;
2751+ }
2752+ if ( data [ entry ] . xdata ) {
2753+ dataTempEntry . data . xdata = data [ entry ] . xdata ;
2754+ }
2755+ if ( data [ entry ] . serial . toLowerCase ( ) != "xxxxxxxx" ) {
2756+ dataTemp . push ( dataTempEntry ) ;
2757+ }
2758+ }
2759+ } else {
26802760 var dataTempEntry = { } ;
2681- var station = data [ entry ] . uploader_callsign ;
2761+ var station = data . uploader_callsign ;
26822762 dataTempEntry . callsign = { } ;
26832763 //check if other stations also received this packet
2684- if ( vehicles . hasOwnProperty ( data [ entry ] . serial ) ) {
2685- if ( data [ entry ] . datetime == vehicles [ data [ entry ] . serial ] . curr_position . gps_time ) {
2686- for ( let key in vehicles [ data [ entry ] . serial ] . curr_position . callsign ) {
2687- if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign . hasOwnProperty ( key ) ) {
2764+ if ( vehicles . hasOwnProperty ( data . serial ) ) {
2765+ if ( data . datetime == vehicles [ data . serial ] . curr_position . gps_time ) {
2766+ for ( let key in vehicles [ data . serial ] . curr_position . callsign ) {
2767+ if ( vehicles [ data . serial ] . curr_position . callsign . hasOwnProperty ( key ) ) {
26882768 if ( key != station ) {
26892769 dataTempEntry . callsign [ key ] = { } ;
2690- if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "snr" ) ) {
2691- dataTempEntry . callsign [ key ] . snr = vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . snr ;
2770+ if ( vehicles [ data . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "snr" ) ) {
2771+ dataTempEntry . callsign [ key ] . snr = vehicles [ data . serial ] . curr_position . callsign [ key ] . snr ;
26922772 }
2693- if ( vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "rssi" ) ) {
2694- dataTempEntry . callsign [ key ] . rssi = vehicles [ data [ entry ] . serial ] . curr_position . callsign [ key ] . rssi ;
2773+ if ( vehicles [ data . serial ] . curr_position . callsign [ key ] . hasOwnProperty ( "rssi" ) ) {
2774+ dataTempEntry . callsign [ key ] . rssi = vehicles [ data . serial ] . curr_position . callsign [ key ] . rssi ;
26952775 }
26962776 }
26972777 }
26982778 }
26992779 }
27002780 }
27012781 dataTempEntry . callsign [ station ] = { } ;
2702- if ( data [ entry ] . snr ) {
2703- dataTempEntry . callsign [ station ] . snr = data [ entry ] . snr ;
2704- }
2705- if ( data [ entry ] . rssi ) {
2706- dataTempEntry . callsign [ station ] . rssi = data [ entry ] . rssi ;
2707- }
2708- dataTempEntry . gps_alt = data [ entry ] . alt ;
2709- dataTempEntry . gps_lat = data [ entry ] . lat ;
2710- dataTempEntry . gps_lon = data [ entry ] . lon ;
2711- if ( data [ entry ] . heading ) {
2712- dataTempEntry . gps_heading = data [ entry ] . heading ;
2713- }
2714- dataTempEntry . gps_time = data [ entry ] . datetime ;
2715- dataTempEntry . server_time = data [ entry ] . datetime ;
2716- dataTempEntry . vehicle = data [ entry ] . serial ;
2717- dataTempEntry . position_id = data [ entry ] . serial + "-" + data [ entry ] . datetime ;
2782+ if ( data . snr ) {
2783+ dataTempEntry . callsign [ station ] . snr = data . snr ;
2784+ }
2785+ if ( data . rssi ) {
2786+ dataTempEntry . callsign [ station ] . rssi = data . rssi ;
2787+ }
2788+ dataTempEntry . gps_alt = data . alt ;
2789+ dataTempEntry . gps_lat = data . lat ;
2790+ dataTempEntry . gps_lon = data . lon ;
2791+ if ( data . heading ) {
2792+ dataTempEntry . gps_heading = data . heading ;
2793+ }
2794+ dataTempEntry . gps_time = data . datetime ;
2795+ dataTempEntry . server_time = data . datetime ;
2796+ dataTempEntry . vehicle = data . serial ;
2797+ dataTempEntry . position_id = data . serial + "-" + data . datetime ;
27182798 dataTempEntry . data = { } ;
2719- if ( data [ entry ] . batt ) {
2720- dataTempEntry . data . batt = data [ entry ] . batt ;
2799+ if ( data . batt ) {
2800+ dataTempEntry . data . batt = data . batt ;
27212801 }
2722- if ( data [ entry ] . burst_timer ) {
2723- dataTempEntry . data . burst_timer = data [ entry ] . burst_timer ;
2802+ if ( data . burst_timer ) {
2803+ dataTempEntry . data . burst_timer = data . burst_timer ;
27242804 }
2725- if ( data [ entry ] . frequency ) {
2726- dataTempEntry . data . frequency = data [ entry ] . frequency ;
2805+ if ( data . frequency ) {
2806+ dataTempEntry . data . frequency = data . frequency ;
27272807 }
2728- if ( data [ entry ] . humidity ) {
2729- dataTempEntry . data . humidity = data [ entry ] . humidity ;
2808+ if ( data . humidity ) {
2809+ dataTempEntry . data . humidity = data . humidity ;
27302810 }
2731- if ( data [ entry ] . manufacturer ) {
2732- dataTempEntry . data . manufacturer = data [ entry ] . manufacturer ;
2811+ if ( data . manufacturer ) {
2812+ dataTempEntry . data . manufacturer = data . manufacturer ;
27332813 }
2734- if ( data [ entry ] . sats ) {
2735- dataTempEntry . data . sats = data [ entry ] . sats ;
2814+ if ( data . sats ) {
2815+ dataTempEntry . data . sats = data . sats ;
27362816 }
2737- if ( data [ entry ] . temp ) {
2738- dataTempEntry . data . temperature_external = data [ entry ] . temp ;
2817+ if ( data . temp ) {
2818+ dataTempEntry . data . temperature_external = data . temp ;
27392819 }
2740- if ( data [ entry ] . type ) {
2741- dataTempEntry . data . type = data [ entry ] . type ;
2742- dataTempEntry . type = data [ entry ] . type ;
2820+ if ( data . type ) {
2821+ dataTempEntry . data . type = data . type ;
2822+ dataTempEntry . type = data . type ;
27432823 }
2744- if ( data [ entry ] . subtype ) {
2745- dataTempEntry . data . type = data [ entry ] . subtype ;
2746- dataTempEntry . type = data [ entry ] . subtype ;
2824+ if ( data . subtype ) {
2825+ dataTempEntry . data . type = data . subtype ;
2826+ dataTempEntry . type = data . subtype ;
27472827 }
2748- if ( data [ entry ] . pressure ) {
2749- dataTempEntry . data . pressure = data [ entry ] . pressure ;
2828+ if ( data . pressure ) {
2829+ dataTempEntry . data . pressure = data . pressure ;
27502830 }
2751- if ( data [ entry ] . xdata ) {
2752- dataTempEntry . data . xdata = data [ entry ] . xdata ;
2831+ if ( data . xdata ) {
2832+ dataTempEntry . data . xdata = data . xdata ;
27532833 }
2754- if ( data [ entry ] . serial . toLowerCase ( ) != "xxxxxxxx" ) {
2834+ if ( data . serial . toLowerCase ( ) != "xxxxxxxx" ) {
27552835 dataTemp . push ( dataTempEntry ) ;
27562836 }
27572837 }
@@ -3027,7 +3107,12 @@ function liveData() {
30273107 if ( clientActive ) {
30283108 var frame = JSON . parse ( message . payloadString . toString ( ) ) ;
30293109 if ( wvar . query == "" || sondePrefix . indexOf ( wvar . query ) > - 1 || wvar . query == frame . serial ) {
3030- if ( ( dateNow - new Date ( frame [ frame . length - 1 ] . time_received ) . getTime ( ) ) < 30000 ) {
3110+ if ( frame . length == null ) {
3111+ var tempDate = new Date ( frame . time_received ) . getTime ( ) ;
3112+ } else {
3113+ var tempDate = new Date ( frame [ frame . length - 1 ] . time_received ) . getTime ( )
3114+ }
3115+ if ( ( dateNow - tempDate ) < 30000 ) {
30313116 var test = formatData ( frame , true ) ;
30323117 if ( clientActive ) {
30333118 live_data_buffer . positions . position . push . apply ( live_data_buffer . positions . position , test . positions . position )
0 commit comments