@@ -1662,37 +1662,82 @@ function updateVehicleInfo(vcallsign, newPosition) {
16621662
16631663 var callsign_list = [ ] ;
16641664
1665- if ( $ . type ( newPosition . callsign ) === "string" ) {
1666- // Single callsign entry, as a string (chase cars)
1667- callsign_list = newPosition . callsign ;
1668- } else {
1669- // Multiple callsigns, as an object
1670- for ( var rxcall in newPosition . callsign ) {
1671- if ( newPosition . callsign . hasOwnProperty ( rxcall ) ) {
1672- _new_call = rxcall ;
1673- tempFields = [ ] ;
1674- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'snr' ) ) {
1675- if ( newPosition . callsign [ rxcall ] . snr ) {
1676- tempFields . push ( newPosition . callsign [ rxcall ] . snr . toFixed ( 0 ) + " dB" ) ;
1665+ var current_time = convert_time ( newPosition . server_time )
1666+
1667+ for ( var i = 0 ; i < vehicle . receiver_info . length ; i ++ ) {
1668+ if ( vehicle . receiver_info [ i ] [ "time" ] < current_time - 10000 ) {
1669+ vehicle . receiver_info . splice ( i , 1 ) ;
1670+ }
1671+ }
1672+
1673+ function addReceiver ( callsign ) {
1674+ for ( var i = 0 ; i < vehicle . receiver_info . length ; i ++ ) {
1675+ if ( vehicle . receiver_info [ i ] [ "callsign" ] === callsign ) {
1676+ vehicle . receiver_info [ i ] [ "time" ] = current_time
1677+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'snr' ) ) {
1678+ if ( newPosition . callsign [ callsign ] . snr ) {
1679+ vehicle . receiver_info [ i ] . snr = newPosition . callsign [ rxcall ] . snr . toFixed ( 0 )
16771680 }
16781681 }
1679- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'rssi' ) ) {
1680- if ( newPosition . callsign [ rxcall ] . rssi ) {
1681- tempFields . push ( newPosition . callsign [ rxcall ] . rssi . toFixed ( 0 ) + " dBm" ) ;
1682+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'rssi' ) ) {
1683+ if ( newPosition . callsign [ callsign ] . rssi ) {
1684+ vehicle . receiver_info [ i ] . rssi = newPosition . callsign [ rxcall ] . rssi . toFixed ( 0 )
16821685 }
16831686 }
1684- if ( newPosition . callsign [ rxcall ] . hasOwnProperty ( 'frequency' ) ) {
1685- if ( newPosition . callsign [ rxcall ] . frequency ) {
1686- tempFields . push ( newPosition . callsign [ rxcall ] . frequency + " MHz" ) ;
1687+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'frequency' ) ) {
1688+ if ( newPosition . callsign [ callsign ] . frequency ) {
1689+ vehicle . receiver_info [ i ] . frequency = newPosition . callsign [ rxcall ] . frequency . toFixed ( 4 )
16871690 }
16881691 }
1689- if ( tempFields . length > 0 ) {
1690- _new_call += " (" + tempFields . join ( ", " ) + ")" ;
1691- }
1692- callsign_list . push ( _new_call ) ; // catch cases where there are no fields
1692+ return
1693+ }
1694+ }
1695+ var temp_receiver = { callsign : callsign , time : current_time }
1696+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'snr' ) ) {
1697+ if ( newPosition . callsign [ callsign ] . snr ) {
1698+ temp_receiver . snr = newPosition . callsign [ rxcall ] . snr . toFixed ( 0 )
1699+ }
1700+ }
1701+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'rssi' ) ) {
1702+ if ( newPosition . callsign [ callsign ] . rssi ) {
1703+ temp_receiver . rssi = newPosition . callsign [ rxcall ] . rssi . toFixed ( 0 )
1704+ }
1705+ }
1706+ if ( newPosition . callsign [ callsign ] . hasOwnProperty ( 'frequency' ) ) {
1707+ if ( newPosition . callsign [ callsign ] . frequency ) {
1708+ temp_receiver . frequency = newPosition . callsign [ rxcall ] . frequency . toFixed ( 4 )
1709+ }
1710+ }
1711+ vehicle . receiver_info . push ( temp_receiver )
1712+ }
1713+
1714+ if ( $ . type ( newPosition . callsign ) === "string" ) {
1715+ // Single callsign entry, as a string (chase cars)
1716+ callsign_list = newPosition . callsign ;
1717+ } else {
1718+ // Multiple callsigns, as an object
1719+ for ( var rxcall in newPosition . callsign ) {
1720+ addReceiver ( rxcall )
1721+ }
1722+
1723+ for ( var receiver in vehicle . receiver_info ) {
1724+ _new_call = "- " + vehicle . receiver_info [ receiver ] . callsign ;
1725+ tempFields = [ ] ;
1726+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'snr' ) ) {
1727+ tempFields . push ( vehicle . receiver_info [ receiver ] . snr + " dB" ) ;
1728+ }
1729+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'rssi' ) ) {
1730+ tempFields . push ( vehicle . receiver_info [ receiver ] . rssi + " dBm" ) ;
1731+ }
1732+ if ( vehicle . receiver_info [ receiver ] . hasOwnProperty ( 'frequency' ) ) {
1733+ tempFields . push ( vehicle . receiver_info [ receiver ] . frequency + " MHz" ) ;
16931734 }
1735+ if ( tempFields . length > 0 ) {
1736+ _new_call += " (" + tempFields . join ( ", " ) + ")" ;
1737+ }
1738+ callsign_list . push ( _new_call ) ; // catch cases where there are no fields
16941739 }
1695- callsign_list = callsign_list . join ( ", " ) ;
1740+ callsign_list = callsign_list . join ( "<br> " ) ;
16961741 }
16971742
16981743 var timeNow = new Date ( ) ;
@@ -3072,7 +3117,8 @@ function addPosition(position) {
30723117 graph_data : [ ] ,
30733118 graph_yaxes : [ ] ,
30743119 updated : false ,
3075- start_time : 2147483647000
3120+ start_time : 2147483647000 ,
3121+ receiver_info : [ ]
30763122 } ;
30773123
30783124 // deep copy yaxes config for graph
0 commit comments