UNPKG

@signalk/n2k-signalk

Version:

NMEA 2000 to SignalK conversion library

75 lines (63 loc) 2 kB
import { PGN_65288_SeatalkAlarm, ManufacturerCode, SeatalkAlarmStatus, SeatalkAlarmId } from '@canboat/ts-pgns' module.exports = [ { pgnClass: PGN_65288_SeatalkAlarm, filter: function (n2k: PGN_65288_SeatalkAlarm) { return ( typeof n2k.fields.alarmGroup !== 'undefined' && typeof n2k.fields.alarmStatus !== 'undefined' ) }, node: function (n2k: PGN_65288_SeatalkAlarm) { var alarmName: string if (typeof n2k.fields.alarmId === 'string') { alarmName = (n2k.fields.alarmId as string).replace(/ /g, '') } else { alarmName = `unknown${n2k.fields.alarmId}` } var alarmGroup:string = n2k.fields.alarmGroup !== undefined ? n2k.fields.alarmGroup.toString() : "unknownGroup" var path = alarmGroup.toLowerCase().replace(/ /g, '') + '.' + alarmName return 'notifications.' + path }, value: function (n2k: PGN_65288_SeatalkAlarm) { var state = n2k.fields.alarmStatus var method = ['visual'] if (state === SeatalkAlarmStatus.AlarmConditionMetAndNotSilenced ) { method.push('sound') } let notifState : string if (state == SeatalkAlarmStatus.AlarmConditionNotMet) { notifState = 'normal' } else { notifState = 'alarm' } var alarmName : string const alarmId = n2k.fields.alarmId if (alarmId === undefined || typeof alarmId !== 'string') { alarmName = `Unknown Seatalk Alarm ${alarmId}` } else { alarmName = alarmId as string if ( notifState == 'alarm' && (alarmId === SeatalkAlarmId.WpArrival || alarmId === SeatalkAlarmId.PilotWayPointAdvance || alarmId === SeatalkAlarmId.PilotRouteComplete) ) { notifState = 'alert' } } return { message: alarmName, method: method, state: notifState, timestamp: n2k.timestamp } } } ]