Merge branch 'master' into newradio

pull/750/head
cyoung 2018-09-27 15:15:39 -04:00
commit b10b1769d8
5 zmienionych plików z 48 dodań i 12 usunięć

Wyświetl plik

@ -24,16 +24,13 @@ Apps with stratux recognition/support:
* AvPlan EFB. * AvPlan EFB.
* iFly GPS 9.4+. * iFly GPS 9.4+.
* DroidEFB 2.1.1+. * DroidEFB 2.1.1+.
* kwikEFIS
Tested weather/traffic displays: Tested weather/traffic displays:
* Avare * Avare
Other EFBs? See the [app vendor integration guide](https://github.com/cyoung/stratux/blob/master/notes/app-vendor-integration.md). Other EFBs? See the [app vendor integration guide](https://github.com/cyoung/stratux/blob/master/notes/app-vendor-integration.md).
Dangerzone builds (AHRS display):
* ForeFlight 7+ - weather, traffic, AHRS.
Questions? [See the FAQ](https://github.com/cyoung/stratux/wiki/FAQ) Questions? [See the FAQ](https://github.com/cyoung/stratux/wiki/FAQ)
http://stratux.me/ http://stratux.me/
@ -47,6 +44,7 @@ Jet tests (high gain antennas):
* Dassault Falcon 20 * Dassault Falcon 20
* Embraer ERJ 145 * Embraer ERJ 145
* Cessna Citation 501 * Cessna Citation 501
* Citation Sovereign+
* Lear 35 * Lear 35
* Rockwell B-1b * Rockwell B-1b
* Boeing C-17 * Boeing C-17

Wyświetl plik

@ -33,3 +33,11 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="
# --set-bus-powered=no # --set-bus-powered=no
SUBSYSTEMS=="usb", ATTRS{interface}=="Stratux Serialout", SYMLINK+="serialout%n" SUBSYSTEMS=="usb", ATTRS{interface}=="Stratux Serialout", SYMLINK+="serialout%n"
# SoftRF.
# SoftRF Standalone (NodeMCU or DoIt ESP32 devkit with CP2102 chip)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{product}=="DIY SoftRF", SYMLINK+="softrf"
# TTGO T-Beam (ESP32 with OTP CP2104 chip)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{product}=="CP2104 USB to UART Bridge Controller", SYMLINK+="softrf"

Wyświetl plik

@ -303,12 +303,12 @@ func initGPSSerial() bool {
glonass := []byte{0x06, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x01} // this disables GLONASS glonass := []byte{0x06, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x01} // this disables GLONASS
galileo := []byte{0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01} // this disables Galileo galileo := []byte{0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01} // this disables Galileo
//if (globalStatus.GPS_detected_type == GPS_TYPE_UBX8) || (globalStatus.GPS_detected_type == GPS_TYPE_UART) { // assume that any GPS connected to serial GPIO is ublox8 (RY835/6AI) if (globalStatus.GPS_detected_type == GPS_TYPE_UBX8) || (globalStatus.GPS_detected_type == GPS_TYPE_UART) { // assume that any GPS connected to serial GPIO is ublox8 (RY835/6AI)
//log.Printf("UBX8 device detected on USB, or GPS serial connection in use. Attempting GLONASS and Galelio configuration.\n") log.Printf("UBX8 device detected on USB, or GPS serial connection in use. Attempting GLONASS and Galelio configuration.\n")
// glonass = []byte{0x06, 0x08, 0x0E, 0x00, 0x01, 0x00, 0x01, 0x01} // this enables GLONASS with 8-14 tracking channels glonass = []byte{0x06, 0x08, 0x0E, 0x00, 0x01, 0x00, 0x01, 0x01} // this enables GLONASS with 8-14 tracking channels
// galileo = []byte{0x02, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x01} // this enables Galileo with 4-8 tracking channels galileo = []byte{0x02, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x01} // this enables Galileo with 4-8 tracking channels
// updatespeed = []byte{0x06, 0x00, 0xF4, 0x01, 0x01, 0x00} // Nav speed 2Hz updatespeed = []byte{0x06, 0x00, 0xF4, 0x01, 0x01, 0x00} // Nav speed 2Hz
// } }
cfgGnss = append(cfgGnss, gps...) cfgGnss = append(cfgGnss, gps...)
cfgGnss = append(cfgGnss, sbas...) cfgGnss = append(cfgGnss, sbas...)
cfgGnss = append(cfgGnss, beidou...) cfgGnss = append(cfgGnss, beidou...)

Wyświetl plik

@ -40,6 +40,9 @@ func initPingSerial() bool {
if _, err := os.Stat("/dev/ping"); err == nil { if _, err := os.Stat("/dev/ping"); err == nil {
device = "/dev/ping" device = "/dev/ping"
} else if _, err := os.Stat("/dev/softrf"); err == nil {
device = "/dev/softrf"
baudrate = int(38400)
} else { } else {
log.Printf("No suitable Ping device found.\n") log.Printf("No suitable Ping device found.\n")
return false return false

Wyświetl plik

@ -1164,11 +1164,13 @@ func updateDemoTraffic(icao uint32, tail string, relAlt float32, gs float64, off
but are not used for aicraft on the civil registry. These could be but are not used for aicraft on the civil registry. These could be
military, other public aircraft, or future use. military, other public aircraft, or future use.
Values between C0CDF9 - C3FFFF are allocated to Canada, Values between C0CDF9 - C3FFFF are allocated to Canada,
but are not used for aicraft on the civil registry. These could be but are not used for aicraft on the civil registry. These could be
military, other public aircraft, or future use. military, other public aircraft, or future use.
Values between 7C0000 - 7FFFFF are allocated to Australia.
Output: Output:
string: String containing the decoded tail number (if decoding succeeded), string: String containing the decoded tail number (if decoding succeeded),
"NON-NA" (for non-US / non Canada allocation), and "US-MIL" or "CA-MIL" for non-civil US / Canada allocation. "NON-NA" (for non-US / non Canada allocation), and "US-MIL" or "CA-MIL" for non-civil US / Canada allocation.
@ -1189,9 +1191,11 @@ func icao2reg(icao_addr uint32) (string, bool) {
nation = "US" nation = "US"
} else if (icao_addr >= 0xC00001) && (icao_addr <= 0xC3FFFF) { } else if (icao_addr >= 0xC00001) && (icao_addr <= 0xC3FFFF) {
nation = "CA" nation = "CA"
} else if (icao_addr >= 0x7C0000) && (icao_addr <= 0x7FFFFF) {
nation = "AU"
} else { } else {
//TODO: future national decoding. //TODO: future national decoding.
return "NON-NA", false return "OTHER", false
} }
if nation == "CA" { // Canada decoding if nation == "CA" { // Canada decoding
@ -1222,6 +1226,29 @@ func icao2reg(icao_addr uint32) (string, bool) {
tail = fmt.Sprintf("C-%c%c%c%c", b_str[b], c+65, d+65, e+65) tail = fmt.Sprintf("C-%c%c%c%c", b_str[b], c+65, d+65, e+65)
} }
if nation == "AU" { // Australia decoding
nationalOffset := uint32(0x7C0000)
offset := (icao_addr - nationalOffset)
i1 := offset / 1296
offset2 := offset % 1296
i2 := offset2 / 36
offset3 := offset2 % 36
i3 := offset3
var a_char, b_char, c_char string
a_char = fmt.Sprintf("%c", i1+65)
b_char = fmt.Sprintf("%c", i2+65)
c_char = fmt.Sprintf("%c", i3+65)
if i1 < 0 || i1 > 25 || i2 < 0 || i2 > 25 || i3 < 0 || i3 > 25 {
return "OTHER", false
}
tail = "VH-" + a_char + b_char + c_char
}
if nation == "US" { // FAA decoding if nation == "US" { // FAA decoding
// First, discard addresses that are not assigned to aircraft on the civil registry // First, discard addresses that are not assigned to aircraft on the civil registry
if icao_addr > 0xADF7C7 { if icao_addr > 0xADF7C7 {