Use callsign, not payload in sentence. Also, improve checks

pull/1/merge
Daniel Richman 2012-09-03 22:04:51 +01:00
rodzic b641981709
commit ff9d343ebb
2 zmienionych plików z 11 dodań i 10 usunięć

Wyświetl plik

@ -320,18 +320,19 @@ static void attempt_settings(Json::Value &data, const Json::Value &sentence,
const string &checksum_name, const string &checksum_name,
const vector<string> &parts) const vector<string> &parts)
{ {
if (!sentence.isObject()) if (!sentence.isObject() || !sentence["callsign"].isString() ||
throw runtime_error("Invalid configuration (sentence not an object)"); !sentence["fields"].isArray() || !sentence["fields"].size())
throw runtime_error("Invalid configuration "
"(missing callsign or fields)");
const Json::Value &fields = sentence["fields"]; if (sentence["callsign"] != parts[0])
const string callsign = sentence["payload"].asString();
if (parts[0] != callsign)
throw runtime_error("Incorrect callsign"); throw runtime_error("Incorrect callsign");
if (sentence["checksum"] != checksum_name) if (sentence["checksum"] != checksum_name)
throw runtime_error("Wrong checksum type"); throw runtime_error("Wrong checksum type");
const Json::Value &fields = sentence["fields"];
if (fields.size() != (parts.size() - 1)) if (fields.size() != (parts.size() - 1))
throw runtime_error("Incorrect number of fields"); throw runtime_error("Incorrect number of fields");

Wyświetl plik

@ -233,7 +233,7 @@ class TestUKHASExtractor:
crude_parse_flight_doc = { crude_parse_flight_doc = {
"sentences": [ { "sentences": [ {
"payload": "TESTING", "callsign": "TESTING",
"checksum": "crc16-ccitt", "checksum": "crc16-ccitt",
"fields": [ "fields": [
{"name": "field_a"}, {"name": "field_a"},
@ -281,10 +281,10 @@ class TestUKHASExtractor:
multi_config_flight_doc = { multi_config_flight_doc = {
"sentences": [ "sentences": [
{ "payload": "AWKWARD", { "callsign": "AWKWARD",
"checksum": "crc16-ccitt", "checksum": "crc16-ccitt",
"fields": [ {"name": "fa"}, {"name": "fo"}, {"name": "fc"} ] }, "fields": [ {"name": "fa"}, {"name": "fo"}, {"name": "fc"} ] },
{ "payload": "AWKWARD", { "callsign": "AWKWARD",
"checksum": "crc16-ccitt", "checksum": "crc16-ccitt",
"fields": [ {"name": "fa"}, {"name": "fb"} ] } "fields": [ {"name": "fa"}, {"name": "fb"} ] }
] ]
@ -312,7 +312,7 @@ class TestUKHASExtractor:
ddmmmmmm_flight_doc = { ddmmmmmm_flight_doc = {
"sentences": [ { "sentences": [ {
"payload": "TESTING", "callsign": "TESTING",
"checksum": "crc16-ccitt", "checksum": "crc16-ccitt",
"fields": [ "fields": [
{"sensor":"stdtelem.coordinate","name":"lat_a", {"sensor":"stdtelem.coordinate","name":"lat_a",