Skip to content

Commit

Permalink
Add Furuno proprietary types
Browse files Browse the repository at this point in the history
Signed-off-by: Joep de Jong <[email protected]>
  • Loading branch information
JoepdeJong committed Apr 18, 2024
1 parent eb2617b commit fba855f
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 0 deletions.
1 change: 1 addition & 0 deletions pynmea2/types/proprietary/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from . import ash
from . import fec
from . import grm
from . import kwd
from . import mgn
Expand Down
61 changes: 61 additions & 0 deletions pynmea2/types/proprietary/fec.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
'''
Support for proprietary messages from Furuno receivers.
'''
# Implemented by Joep de Jong
# pylint: disable=wildcard-import,unused-wildcard-import

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


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

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

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

class FECGPatt(FEC):
"""
Furuno GPatt Message
$PFEC,GPatt,aaa.a,bb.b,cc.c,*hh<CR><LF>
$PFEC: Talker identifier + sentence formatter*
GPatt: Global positioning attitude, sentence formatter
aaa.a: Yaw (degrees)*
bb.b: Pitch (degrees)*
cc.c: Roll (degrees)*
*hh: Checksum*
"""
fields = (
('R', '_r'),
('Subtype', 'subtype'),
('Yaw', 'yaw', float),
('Pitch', 'pitch', float),
('Roll', 'roll', float),
)


class FECGPhve(FEC):
"""
Furuno GPatt Message
$PFEC,GPhve,xx.xxx,A*hh<CR><LF>
$PFEC: Talker identifier
GPhve: Datagram identifier
xx.xxx: Heave (Metres)
A: Status
*hh: Checksum
"""

fields = (
("R", "_r"),
("Subtype", "subtype"),
("Heave", "heave", float),
)
21 changes: 21 additions & 0 deletions test/test_fec.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pynmea2


def test_fecgpatt():
data = "$PFEC,GPatt,294.7,-02.5,+00.4*45"
msg = pynmea2.parse(data)
assert type(msg) == pynmea2.fec.FECGPatt
assert msg.manufacturer == 'FEC'
assert msg.yaw == 294.7
assert msg.pitch == -2.5
assert msg.roll == 0.4
assert msg.render() == data


def test_fecgphve():
data = "$PFEC,GPhve,00.007,A*08"
msg = pynmea2.parse(data)
assert type(msg) == pynmea2.fec.FECGPhve
assert msg.manufacturer == "FEC"
assert msg.heave == 0.007
assert msg.render() == data

0 comments on commit fba855f

Please sign in to comment.