示例#1
0
        else:
            raise AprsParseError(message)

    return result


dstcall_parser_mapping = {
    'APRS': OgnParser(),
    'OGNFNT': FanetParser(),
    'OGFLR': FlarmParser(),
    'OGNTRK': TrackerParser(),
    'OGNSDR': ReceiverParser(),
    'OGCAPT': GenericParser(beacon_type='capturs'),
    'OGFLYM': GenericParser(beacon_type='flymaster'),
    'OGINRE': InreachParser(),
    'OGLT24': LT24Parser(),
    'OGNAVI': NaviterParser(),
    'OGPAW': GenericParser(beacon_type='pilot_aware'),
    'OGSKYL': SkylinesParser(),
    'OGSPID': SpiderParser(),
    'OGSPOT': SpotParser(),
    'GENERIC': GenericParser(beacon_type='unknown'),
}


def parse_comment(aprs_comment, dstcall='APRS', aprs_type="position"):
    parser = dstcall_parser_mapping.get(dstcall)
    if parser:
        return parser.parse(aprs_comment, aprs_type)
    else:
        return dstcall_parser_mapping.get('GENERIC').parse(
    def test_position_comment(self):
        message = LT24Parser().parse_position("id25387 +123fpm GPS")

        self.assertEqual(message['lt24_id'], "25387")
        self.assertAlmostEqual(message['climb_rate'], 123 * FPM_TO_MS, 2)
        self.assertEqual(message['source'], 'GPS')