kopia lustrzana https://github.com/cyoung/stratux
TIS-B target tracking, re-send.
rodzic
ef40f48017
commit
75aaea1430
21
gen_gdl90.go
21
gen_gdl90.go
|
@ -204,7 +204,7 @@ func makeOwnshipReport() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
func makeOwnshipGeometricAltitudeReport() false {
|
func makeOwnshipGeometricAltitudeReport() bool {
|
||||||
if !isGPSValid() {
|
if !isGPSValid() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -277,6 +277,8 @@ func heartBeatSender() {
|
||||||
makeOwnshipReport()
|
makeOwnshipReport()
|
||||||
makeOwnshipGeometricAltitudeReport()
|
makeOwnshipGeometricAltitudeReport()
|
||||||
outConn.Write(makeInitializationMessage())
|
outConn.Write(makeInitializationMessage())
|
||||||
|
sendTrafficUpdates()
|
||||||
|
updateStatus()
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,6 +301,10 @@ func updateStatus() {
|
||||||
MsgLog = t
|
MsgLog = t
|
||||||
globalStatus.UAT_messages_last_minute = UAT_messages_last_minute
|
globalStatus.UAT_messages_last_minute = UAT_messages_last_minute
|
||||||
globalStatus.ES_messages_last_minute = ES_messages_last_minute
|
globalStatus.ES_messages_last_minute = ES_messages_last_minute
|
||||||
|
|
||||||
|
if isGPSValid() {
|
||||||
|
globalStatus.GPS_satellites_locked = myGPS.satellites
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -347,7 +353,6 @@ func parseInput(buf string) ([]byte, uint16) {
|
||||||
thisMsg.TimeReceived = time.Now()
|
thisMsg.TimeReceived = time.Now()
|
||||||
thisMsg.Data = frame
|
thisMsg.Data = frame
|
||||||
MsgLog = append(MsgLog, thisMsg)
|
MsgLog = append(MsgLog, thisMsg)
|
||||||
updateStatus()
|
|
||||||
|
|
||||||
return frame, msgtype
|
return frame, msgtype
|
||||||
}
|
}
|
||||||
|
@ -365,7 +370,7 @@ type status struct {
|
||||||
UAT_messages_max uint
|
UAT_messages_max uint
|
||||||
ES_messages_last_minute uint
|
ES_messages_last_minute uint
|
||||||
ES_messages_max uint
|
ES_messages_max uint
|
||||||
GPS_satellites_locked uint
|
GPS_satellites_locked uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
var globalSettings settings
|
var globalSettings settings
|
||||||
|
@ -470,19 +475,21 @@ func saveSettings() {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
MsgLog = make([]msg, 0)
|
MsgLog = make([]msg, 0)
|
||||||
|
|
||||||
|
crcInit() // Initialize CRC16 table.
|
||||||
|
initTraffic()
|
||||||
|
|
||||||
globalStatus.Version = stratuxVersion
|
globalStatus.Version = stratuxVersion
|
||||||
globalStatus.Devices = 123 //TODO
|
globalStatus.Devices = 123 //TODO
|
||||||
globalStatus.UAT_messages_last_minute = 567 //TODO
|
globalStatus.UAT_messages_last_minute = 567 //TODO
|
||||||
globalStatus.ES_messages_last_minute = 981 //TODO
|
globalStatus.ES_messages_last_minute = 981 //TODO
|
||||||
|
|
||||||
|
readSettings()
|
||||||
|
|
||||||
if globalSettings.GPS_Enabled {
|
if globalSettings.GPS_Enabled {
|
||||||
go gpsReader()
|
go gpsReader()
|
||||||
}
|
}
|
||||||
|
|
||||||
readSettings()
|
|
||||||
|
|
||||||
crcInit() // Initialize CRC16 table.
|
|
||||||
|
|
||||||
// Open UDP port to send out the messages.
|
// Open UDP port to send out the messages.
|
||||||
addr, err := net.ResolveUDPAddr("udp", ipadAddr)
|
addr, err := net.ResolveUDPAddr("udp", ipadAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
24
traffic.go
24
traffic.go
|
@ -66,6 +66,27 @@ type TrafficInfo struct {
|
||||||
last_seen time.Time
|
last_seen time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var traffic map[uint32]TrafficInfo
|
||||||
|
|
||||||
|
func cleanupOldEntries() {
|
||||||
|
for icao_addr, ti := range traffic {
|
||||||
|
if time.Since(ti.last_seen).Seconds() > float64(60) { //FIXME: 60 seconds with no update on this address - stop displaying.
|
||||||
|
delete(traffic, icao_addr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func sendTrafficUpdates() {
|
||||||
|
cleanupOldEntries()
|
||||||
|
for _, ti := range traffic {
|
||||||
|
makeTrafficReport(ti)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initTraffic() {
|
||||||
|
traffic = make(map[uint32]TrafficInfo)
|
||||||
|
}
|
||||||
|
|
||||||
func makeTrafficReport(ti TrafficInfo) {
|
func makeTrafficReport(ti TrafficInfo) {
|
||||||
msg := make([]byte, 28)
|
msg := make([]byte, 28)
|
||||||
// See p.16.
|
// See p.16.
|
||||||
|
@ -259,6 +280,7 @@ func parseDownlinkReport(s string) {
|
||||||
//OK.
|
//OK.
|
||||||
// fmt.Printf("tisb_site_id %d, utc_coupled %t\n", tisb_site_id, utc_coupled)
|
// fmt.Printf("tisb_site_id %d, utc_coupled %t\n", tisb_site_id, utc_coupled)
|
||||||
|
|
||||||
makeTrafficReport(ti)
|
ti.last_seen = time.Now()
|
||||||
|
|
||||||
|
traffic[ti.icao_addr] = ti
|
||||||
}
|
}
|
Ładowanie…
Reference in New Issue