Better error parsing for METAR / TAF
This commit is contained in:
parent
868b6c9610
commit
39c1a6447a
2 changed files with 41 additions and 7 deletions
|
@ -173,7 +173,7 @@ var MessageController = {
|
||||||
TypeIMessage.new("USING COST INDEX N", 1),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),TypeIMessage.new("RWY/LS MISMATCH"),
|
TypeIMessage.new("USING COST INDEX N", 1),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),TypeIMessage.new("RWY/LS MISMATCH"),
|
||||||
TypeIMessage.new("VHF3 VOICE MSG NOT GEN"),TypeIMessage.new("NO COMM MSG NOT GEN"),TypeIMessage.new("WX UPLINK"),
|
TypeIMessage.new("VHF3 VOICE MSG NOT GEN"),TypeIMessage.new("NO COMM MSG NOT GEN"),TypeIMessage.new("WX UPLINK"),
|
||||||
TypeIMessage.new("SIMBRIEF DOWNLOAD FAILED"),TypeIMessage.new("MISSING USERNAME"),TypeIMessage.new("AOC ACT F-PLN UPLINK"),
|
TypeIMessage.new("SIMBRIEF DOWNLOAD FAILED"),TypeIMessage.new("MISSING USERNAME"),TypeIMessage.new("AOC ACT F-PLN UPLINK"),
|
||||||
TypeIMessage.new("NO ANSWER TO REQUEST"),TypeIMessage.new("NO D-ATIS AVAILABLE")
|
TypeIMessage.new("NO ANSWER TO REQUEST"),TypeIMessage.new("NO D-ATIS AVAILABLE"),TypeIMessage.new("BAD SERVER RESPONSE")
|
||||||
]),
|
]),
|
||||||
typeIIMessages: std.Vector.new([
|
typeIIMessages: std.Vector.new([
|
||||||
TypeIIMessage.new("LAT DISCONT AHEAD", "amb", 0),TypeIIMessage.new("MORE DRAG"),TypeIIMessage.new("RWY/LS MISMATCH", "amb", 0),TypeIIMessage.new("STEP DELETED"),
|
TypeIIMessage.new("LAT DISCONT AHEAD", "amb", 0),TypeIIMessage.new("MORE DRAG"),TypeIIMessage.new("RWY/LS MISMATCH", "amb", 0),TypeIIMessage.new("STEP DELETED"),
|
||||||
|
|
|
@ -175,7 +175,16 @@ var AOC = {
|
||||||
|
|
||||||
http.load(serverString ~ airport)
|
http.load(serverString ~ airport)
|
||||||
.fail(func(r) me.downloadFail(i, r))
|
.fail(func(r) me.downloadFail(i, r))
|
||||||
.done(func(r) me.processMETAR(r, i));
|
.done(func(r) {
|
||||||
|
var errs = [];
|
||||||
|
call(me.processMETAR, [r, i], me, {}, errs);
|
||||||
|
if (size(errs) > 0) {
|
||||||
|
print("Failed to parse METAR for " ~ airport);
|
||||||
|
debug.dump(r.response);
|
||||||
|
debug.printerror(errs);
|
||||||
|
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||||
|
}
|
||||||
|
});
|
||||||
return 0;
|
return 0;
|
||||||
},
|
},
|
||||||
fetchTAF: func(airport, i) {
|
fetchTAF: func(airport, i) {
|
||||||
|
@ -189,16 +198,32 @@ var AOC = {
|
||||||
}
|
}
|
||||||
http.load("https://www.aviationweather.gov/adds/dataserver_current/httpparam?dataSource=tafs&requestType=retrieve&format=xml&timeType=issue&mostRecent=true&hoursBeforeNow=12&stationString=" ~ airport)
|
http.load("https://www.aviationweather.gov/adds/dataserver_current/httpparam?dataSource=tafs&requestType=retrieve&format=xml&timeType=issue&mostRecent=true&hoursBeforeNow=12&stationString=" ~ airport)
|
||||||
.fail(func(r) me.downloadFail(i))
|
.fail(func(r) me.downloadFail(i))
|
||||||
.done(func(r) me.processTAF(r, i));
|
.done(func(r) {
|
||||||
|
var errs = [];
|
||||||
|
call(me.processTAF, [r, i], me, {}, errs);
|
||||||
|
if (size(errs) > 0) {
|
||||||
|
print("Failed to parse TAF for " ~ airport);
|
||||||
|
debug.dump(r.response);
|
||||||
|
debug.printerror(errs);
|
||||||
|
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||||
|
}
|
||||||
|
});
|
||||||
return 0;
|
return 0;
|
||||||
},
|
},
|
||||||
processMETAR: func(r, i) {
|
processMETAR: func(r, i) {
|
||||||
var raw = r.response;
|
var raw = r.response;
|
||||||
if (find("<raw_text>", raw) != -1) {
|
if (me.server.getValue() == "vatsim") {
|
||||||
|
me.lastMETAR = raw;
|
||||||
|
} else if (find("<raw_text>", raw) != -1) {
|
||||||
raw = split("<raw_text>", raw)[1];
|
raw = split("<raw_text>", raw)[1];
|
||||||
raw = split("</raw_text>", raw)[0];
|
raw = split("</raw_text>", raw)[0];
|
||||||
|
me.lastMETAR = raw;
|
||||||
|
} else {
|
||||||
|
me.received = 0;
|
||||||
|
me.sent = 0;
|
||||||
|
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
me.lastMETAR = raw;
|
|
||||||
settimer(func() {
|
settimer(func() {
|
||||||
me.received = 1;
|
me.received = 1;
|
||||||
mcdu.mcdu_message(i, "WX UPLINK");
|
mcdu.mcdu_message(i, "WX UPLINK");
|
||||||
|
@ -211,8 +236,16 @@ var AOC = {
|
||||||
},
|
},
|
||||||
processTAF: func(r, i) {
|
processTAF: func(r, i) {
|
||||||
var raw = r.response;
|
var raw = r.response;
|
||||||
raw = split("<raw_text>", raw)[1];
|
if (find("<raw_text>", raw) != -1) {
|
||||||
raw = split("</raw_text>", raw)[0];
|
raw = split("<raw_text>", raw)[1];
|
||||||
|
raw = split("</raw_text>", raw)[0];
|
||||||
|
me.lastTAF = raw;
|
||||||
|
} else {
|
||||||
|
me.received = 0;
|
||||||
|
me.sent = 0;
|
||||||
|
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||||
|
return;
|
||||||
|
}
|
||||||
me.lastTAF = raw;
|
me.lastTAF = raw;
|
||||||
settimer(func() {
|
settimer(func() {
|
||||||
me.received = 1;
|
me.received = 1;
|
||||||
|
@ -290,6 +323,7 @@ var ATIS = {
|
||||||
print("Failed to parse ATIS for " ~ airport);
|
print("Failed to parse ATIS for " ~ airport);
|
||||||
debug.dump(r.response);
|
debug.dump(r.response);
|
||||||
debug.printerror(errs);
|
debug.printerror(errs);
|
||||||
|
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue