@@ -1372,38 +1372,66 @@ function updateVehicleInfo(vcallsign, newPosition) {
13721372
13731373 var callsign_list = [ ] ;
13741374
1375+ var current_time = convert_time ( newPosition . server_time )
1376+
1377+ for ( var i = 0 ; i < vehicle . receiver_info . length ; i ++ ) {
1378+ if ( vehicle . receiver_info [ i ] [ "time" ] < current_time - 10000 ) {
1379+ vehicle . receiver_info . splice ( i , 1 ) ;
1380+ }
1381+ }
1382+
1383+ function addReceiver ( callsign ) {
1384+ if ( vehicle . receiver_info . filter ( function ( e ) { return e . callsign === callsign ; } ) . length > 0 ) {
1385+ return
1386+ }
1387+ var temp_receiver = { callsign : callsign , time : current_time }
1388+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'snr' ) ) {
1389+ if ( newPosition . callsign [ callsign ] . snr ) {
1390+ temp_receiver . snr = newPosition . callsign [ rxcall ] . snr . toFixed ( 0 )
1391+ }
1392+ }
1393+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'rssi' ) ) {
1394+ if ( newPosition . callsign [ callsign ] . rssi ) {
1395+ temp_receiver . rssi = newPosition . callsign [ rxcall ] . rssi . toFixed ( 0 )
1396+ }
1397+ }
1398+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'frequency' ) ) {
1399+ if ( newPosition . callsign [ callsign ] . frequency ) {
1400+ temp_receiver . frequency = newPosition . callsign [ rxcall ] . frequency . toFixed ( 0 )
1401+ }
1402+ }
1403+ vehicle . receiver_info . push ( temp_receiver )
1404+ }
1405+
13751406 if ( $ . type ( newPosition . callsign ) === "string" ) {
13761407 // Single callsign entry, as a string (chase cars)
13771408 callsign_list = newPosition . callsign ;
13781409 } else {
13791410 // Multiple callsigns, as an object
13801411 for ( var rxcall in newPosition . callsign ) {
1381- if ( newPosition . callsign . hasOwnProperty ( rxcall ) ) {
1382- _new_call = rxcall ;
1383- tempFields = [ ] ;
1384- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'snr' ) ) {
1385- if ( newPosition . callsign [ rxcall ] . snr ) {
1386- tempFields . push ( newPosition . callsign [ rxcall ] . snr . toFixed ( 0 ) + " dB" ) ;
1387- }
1388- }
1389- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'rssi' ) ) {
1390- if ( newPosition . callsign [ rxcall ] . rssi ) {
1391- tempFields . push ( newPosition . callsign [ rxcall ] . rssi . toFixed ( 0 ) + " dBm" ) ;
1392- }
1393- }
1394- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'frequency' ) ) {
1395- if ( newPosition . callsign [ rxcall ] . frequency ) {
1396- tempFields . push ( newPosition . callsign [ rxcall ] . frequency + " MHz" ) ;
1397- }
1398- }
1399- if ( tempFields . length > 0 ) {
1400- _new_call += " (" + tempFields . join ( ", " ) + ")" ;
1401- }
1402- callsign_list . push ( _new_call ) ; // catch cases where there are no fields
1412+ addReceiver ( rxcall )
1413+ }
1414+
1415+ for ( var receiver in vehicle . receiver_info ) {
1416+ _new_call = vehicle . receiver_info [ receiver ] . callsign ;
1417+ tempFields = [ ] ;
1418+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'snr' ) ) {
1419+ tempFields . push ( vehicle . receiver_info [ receiver ] . snr + " dB" ) ;
1420+ }
1421+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'rssi' ) ) {
1422+ tempFields . push ( vehicle . receiver_info [ receiver ] . rssi + " dBm" ) ;
14031423 }
1424+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'frequency' ) ) {
1425+ tempFields . push ( vehicle . receiver_info [ receiver ] . frequency + " MHz" ) ;
1426+ }
1427+ if ( tempFields . length > 0 ) {
1428+ _new_call += " (" + tempFields . join ( ", " ) + ")" ;
1429+ }
1430+ callsign_list . push ( _new_call ) ; // catch cases where there are no fields
14041431 }
1432+
14051433 callsign_list = callsign_list . join ( ", " ) ;
1406- }
1434+ }
14071435
14081436 var timeNow = new Date ( ) ;
14091437 var timeSent = convert_time ( newPosition . server_time ) ;
@@ -2483,7 +2511,8 @@ function addPosition(position) {
24832511 graph_data : [ ] ,
24842512 graph_yaxes : [ ] ,
24852513 updated : false ,
2486- start_time : 2147483647000
2514+ start_time : 2147483647000 ,
2515+ receiver_info : [ ]
24872516 } ;
24882517
24892518 // deep copy yaxes config for graph
@@ -3242,6 +3271,7 @@ function refreshReceivers() {
32423271 updateReceivers ( response ) ;
32433272 } ,
32443273 complete : function ( request , textStatus ) {
3274+ periodical_receivers = setTimeout ( function ( ) { refreshReceivers ( false ) } , 60 * 5 * 1000 ) ;
32453275 if ( ! offline . get ( "opt_hide_chase" ) ) {
32463276 refreshNewReceivers ( true ) ;
32473277 }
0 commit comments