From 8769ced73ef764a1cf7e6bb9860e64eb24313930 Mon Sep 17 00:00:00 2001 From: Christopher Young Date: Sat, 10 Oct 2015 16:02:09 -0400 Subject: [PATCH] Error checking on OwnshipModeS. --- main/gen_gdl90.go | 13 ++++++++++--- main/managementinterface.go | 13 ++++++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/main/gen_gdl90.go b/main/gen_gdl90.go index e7318467..fd666f8b 100644 --- a/main/gen_gdl90.go +++ b/main/gen_gdl90.go @@ -178,9 +178,16 @@ func makeOwnshipReport() bool { msg[1] = 0x01 // Alert status, address type. code, _ := hex.DecodeString(globalSettings.OwnshipModeS) - msg[2] = code[0] // Mode S address. - msg[3] = code[1] // Mode S address. - msg[4] = code[2] // Mode S address. + if len(code) != 3 { + // Reserved dummy code. + msg[2] = 0xF0 + msg[3] = 0x00 + msg[4] = 0x00 + } else { + msg[2] = code[0] // Mode S address. + msg[3] = code[1] // Mode S address. + msg[4] = code[2] // Mode S address. + } tmp := makeLatLng(mySituation.Lat) msg[5] = tmp[0] // Latitude. diff --git a/main/managementinterface.go b/main/managementinterface.go index 79d562f1..f9ee0984 100644 --- a/main/managementinterface.go +++ b/main/managementinterface.go @@ -177,14 +177,17 @@ func handleSettingsSetRequest(w http.ResponseWriter, r *http.Request) { if len(val.(string)) > 6 { // Too long. continue } + // Pad string, must be 6 characters long. vals := strings.ToUpper(val.(string)) - hexn, _ := hex.DecodeString(vals) - hexs := strings.ToUpper(hex.EncodeToString(hexn)) - if vals != hexs { // Number not valid. - log.Printf("handleSettingsSetRequest:OwnshipModeS: %s != %s\n", vals, hexs) + for len(vals) < 6 { + vals = "0" + vals + } + hexn, err := hex.DecodeString(vals) + if err != nil { // Number not valid. + log.Printf("handleSettingsSetRequest:OwnshipModeS: %s\n", err.Error()) continue } - globalSettings.OwnshipModeS = vals + globalSettings.OwnshipModeS = fmt.Sprintf("%02X%02X%02X", hexn[0], hexn[1], hexn[2]) default: log.Printf("handleSettingsSetRequest:json: unrecognized key:%s\n", key) }