UNPKG

@signalk/n2k-signalk

Version:

NMEA 2000 to SignalK conversion library

151 lines (140 loc) 4.25 kB
import { PGN_126720_Seatalk1DisplayBrightness, PGN_126720_Seatalk1DisplayColor, PGN_126720_Seatalk1PilotMode, PGN_126720_Seatalk1PilotHullType, PGN_126720_SeatalkPilotAutoTurn, SeatalkPilotMode, SeatalkPilotHullType, YesNo } from '@canboat/ts-pgns' const debug = require('debug')('n2k-signalk-126720') import camelCase from 'camelcase' module.exports = [ { // Display Brightness pgnClass: PGN_126720_Seatalk1DisplayBrightness, filter: function (n2k:PGN_126720_Seatalk1DisplayBrightness) { return ( n2k.fields.group !== undefined ) }, node: (n2k:PGN_126720_Seatalk1DisplayBrightness) => { return `electrical.displays.raymarine.${camelCase( n2k.fields.group!.toString() )}.brightness` }, allowNull: true, value: (n2k:PGN_126720_Seatalk1DisplayBrightness) => { let val = n2k.fields.brightness return val !== undefined ? val / 100.0 : null } }, { // Display Color pgnClass: PGN_126720_Seatalk1DisplayColor, filter: function (n2k:PGN_126720_Seatalk1DisplayColor) { return ( n2k.fields.group !== undefined && n2k.fields.color !== undefined ) }, node: (n2k:PGN_126720_Seatalk1DisplayColor) => { return `electrical.displays.raymarine.${camelCase( n2k.fields.group!.toString() )}.color` }, allowNull: true, value: (n2k:PGN_126720_Seatalk1DisplayColor) => { return camelCase(n2k.fields.color!.toString()) } }, { pgnClass: PGN_126720_Seatalk1PilotMode, // filters for SmartPilot behind Seatalk-STNG-Converter filter: function (n2k:PGN_126720_Seatalk1PilotMode) { return ( typeof n2k.fields.pilotMode !== undefined && typeof n2k.fields.subMode !== undefined ) }, node: 'steering.autopilot.state', value: function (n2k:PGN_126720_Seatalk1PilotMode) { var mode = n2k.fields.pilotMode var subMode = Number(n2k.fields.subMode) if ( n2k.fields.pilotMode == 10 ) { } if ( (mode == 0 || mode == SeatalkPilotMode.Standby || mode == 68 || mode == 72) && subMode == 0 ) { return 'standby' } else if ( mode == SeatalkPilotMode.Wind && (subMode == 0 || subMode == 4 || subMode == 8 || subMode == 12) ) { // submodes: 0=on course, 4=off course pt/stb, 8=wind shift, submode 12 tbd return 'wind' } else if (mode == SeatalkPilotMode.Track && subMode == 0) { return 'route' } else if (mode == SeatalkPilotMode.Auto && (subMode == 0 || subMode == 4)) { //subMode 4 means offcourse return 'auto' } else { debug( 'Unknown PGN 126720 AP state found - Mode: ' + mode + ', SubMode: ' + subMode ) return } /* if ( mode == SeatalkPilotMode.Standby ) { return 'standby' } else if ( mode == SeatalkPilotMode.Wind ) { return 'wind' } else if (mode == 'Track') { return 'route' } else if (mode == 'Auto') { return 'auto' } else { debug( 'Unknown PGN 126720 AP state found - Mode: ' + mode ) return } */ } }, { pgnClass: PGN_126720_Seatalk1PilotHullType, node: 'steering.autopilot.hullType', value: function (n2k: PGN_126720_Seatalk1PilotHullType) { switch (n2k.fields.hullType) { case SeatalkPilotHullType.Power: return 'power' case SeatalkPilotHullType.Sail: return 'sail' case SeatalkPilotHullType.SailCatamaran: return 'sailCatamaran' case SeatalkPilotHullType.SailslowTurn: return 'sailSlowTurn' case SeatalkPilotHullType.PowerfastTurn: return 'powerFastTurn' case SeatalkPilotHullType.PowerslowTurn: return 'powerSlowTurn' default: return 'unknown' } } }, { pgnClass: PGN_126720_SeatalkPilotAutoTurn, node: 'steering.autopilot.autoTurn.state', value: function (n2k: PGN_126720_SeatalkPilotAutoTurn) { return n2k.fields.enabled === YesNo.Yes ? true : false } } ]