diff --git a/alembic/versions/3a0765c9a2_hardware_version_hex_to_dec.py b/alembic/versions/3a0765c9a2_hardware_version_hex_to_dec.py new file mode 100644 index 0000000..54d8588 --- /dev/null +++ b/alembic/versions/3a0765c9a2_hardware_version_hex_to_dec.py @@ -0,0 +1,32 @@ +"""hardware version hex to dec + +Revision ID: 3a0765c9a2 +Revises: 269ec1bcf99 +Create Date: 2016-02-20 10:31:55.520815 + +""" + +# revision identifiers, used by Alembic. +revision = '3a0765c9a2' +down_revision = '269ec1bcf99' +branch_labels = None +depends_on = None + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + conn = op.get_bind() + res = conn.execute("UPDATE aircraft_beacon " + "SET hardware_version = " + "16 * (hardware_version / 10) + (hardware_version % 10) " + "WHERE hardware_version IS NOT NULL") + + +def downgrade(): + conn = op.get_bind() + res = conn.execute("UPDATE aircraft_beacon " + "SET hardware_version = " + "10 * (hardware_version / 16) + (hardware_version % 16) " + "WHERE hardware_version IS NOT NULL") diff --git a/ogn/parser/parse.py b/ogn/parser/parse.py index e0a37c6..33c82b3 100644 --- a/ogn/parser/parse.py +++ b/ogn/parser/parse.py @@ -46,7 +46,7 @@ def parse_ogn_aircraft_beacon(aprs_comment): 'frequency_offset': float(ac_match.group('frequency_offset')), 'gps_status': ac_match.group('gps_accuracy'), 'software_version': float(ac_match.group('flarm_software_version')) if ac_match.group('flarm_software_version') else None, - 'hardware_version': int(ac_match.group('flarm_hardware_version')) if ac_match.group('flarm_hardware_version') else None, + 'hardware_version': int(ac_match.group('flarm_hardware_version'), 16) if ac_match.group('flarm_hardware_version') else None, 'real_address': ac_match.group('flarm_id')} else: return None diff --git a/tests/parser/test_aircraft_beacon.py b/tests/parser/test_aircraft_beacon.py index 72167aa..31ef8b3 100644 --- a/tests/parser/test_aircraft_beacon.py +++ b/tests/parser/test_aircraft_beacon.py @@ -33,10 +33,10 @@ class TestStringMethods(unittest.TestCase): self.assertTrue(aircraft_beacon['stealth']) def test_v024(self): - aircraft_beacon = parse_ogn_aircraft_beacon("id21400EA9 -2454fpm +0.9rot 19.5dB 0e -6.6kHz gps1x1 s6.02 h44 rDF0C56") + aircraft_beacon = parse_ogn_aircraft_beacon("id21400EA9 -2454fpm +0.9rot 19.5dB 0e -6.6kHz gps1x1 s6.02 h0A rDF0C56") self.assertEqual(aircraft_beacon['software_version'], 6.02) - self.assertEqual(aircraft_beacon['hardware_version'], 44) + self.assertEqual(aircraft_beacon['hardware_version'], 10) self.assertEqual(aircraft_beacon['real_address'], "DF0C56") def test_v024_ogn_tracker(self):