File: vtx.py

package info (click to toggle)
python-nmea2 1.19.0-3
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 420 kB
  • sloc: python: 2,948; makefile: 3
file content (84 lines) | stat: -rw-r--r-- 2,812 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Vectronix Moskito TI (LRF)

from decimal import Decimal

from ... import nmea
from ...nmea_utils import *

class VTX(nmea.ProprietarySentence):
    sentence_types = {}

    def __new__(_cls, manufacturer, data):
        name = manufacturer + data[1]
        cls = _cls.sentence_types.get(name, _cls)
        return super(VTX, cls).__new__(cls)

    def __init__(self, manufacturer, data):
        self.sentence_type = manufacturer + data[0]
        super(VTX, self).__init__(manufacturer, data)


class VTX0002(VTX):
    """ Vectronix measurement: laser distance and angles (degrees) with declination
    """
    fields = (
        ("Message Placeholder", "mplaceholder"),
        ("Subtype", "subtype"),
        ("Measurement ID", "measurement_id", int),
        ("Distance (meters)", "dist", float),
        ("Distance unit", "dist_unit"),
        ("Direction (degrees)", "direction", float),
        ("Direction unit", "direction_unit"),
        ("Vertical angle (degrees)", "va", float),
        ("Magnetic declination (degrees)", "decl", float),
        ("Magnetic declination ref (E/W)", "decl_ref")
    )


class VTX0000(VTX):
    """ Vectronix raw measurement: laser distance and angles (radians) without declination
    """
    fields = (
        ("Message Placeholder", "mplaceholder"),
        ("Subtype", "subtype"),
        ("Distance (meters)", "dist", float),
        ("Distance unit", "dist_unit"),
        ("Direction (radians)", "direction", float),
        ("Roll angle (radians)", "roll", float),
        ("Vertical angle (radians)", "va", float),
        ("Angular units type", "angle_units")
    )


class VTX0020(VTX, LatLonFix):
    """ Vectronix self location: lat, long, altitude
    """
    fields = (
        ("Message Placeholder", "mplaceholder"),
        ("Subtype", "subtype"),
        ("Measurement ID", "measurement_id", int),
        ('Latitude', 'lat'),
        ('Latitude Direction', 'lat_dir'),
        ('Longitude', 'lon'),
        ('Longitude Direction', 'lon_dir'),
        ('Altitude above WGS84 ellipsoid, meters', 'altitude', float),
        ('Altitude units', 'altitude_units')
    )


class VTX0012(VTX, LatLonFix):
    """ Vectronix target location: lat, long, altitude, gain
    """
    fields = (
        ("Message Placeholder", "mplaceholder"),
        ("Subtype", "subtype"),
        ("Measurement ID", "measurement_id", int),
        ('Latitude', 'lat'),
        ('Latitude Direction', 'lat_dir'),
        ('Longitude', 'lon'),
        ('Longitude Direction', 'lon_dir'),
        ('Altitude above WGS84 ellipsoid, meters', 'altitude', float),
        ('Altitude units', 'altitude_units'),
        ('Gain (meters)', 'gain', float),
        ('Gain units', 'gain_units')
    )