gnssview_old/plugins/gnss/lib/nmea/dor.dart

67 lines
2.1 KiB
Dart
Raw Normal View History

2024-07-31 19:04:11 +08:00
// ignore_for_file: constant_identifier_names
import 'parser.dart';
import 'sentence.dart';
const TypeDOR = "DOR";
// TypeSingleDoorDOR is type for single door related event
const TypeSingleDoorDOR = "E";
// TypeFaultDOR is type for fault with door
const TypeFaultDOR = "F";
// TypeSectionDOR is type for section of doors related event
const TypeSectionDOR = "S";
// DoorStatusOpenDOR is status for open door
const DoorStatusOpenDOR = "O";
// DoorStatusClosedDOR is status for closed door
const DoorStatusClosedDOR = "C";
// DoorStatusFaultDOR is status for fault with door
const DoorStatusFaultDOR = "X";
// SwitchSettingHarbourModeDOR is setting for Harbour mode (allowed open)
const SwitchSettingHarbourModeDOR = "O";
// SwitchSettingSeaModeDOR is setting for Sea mode (ordered closed)
const SwitchSettingSeaModeDOR = "C";
class DOR {
String type;
Time time;
String systemIndicator;
String divisionIndicator1;
int divisionIndicator2;
int doorNumberOrCount;
String doorStatus;
String switchSetting;
String message;
DOR(
{required this.type,
required this.time,
required this.systemIndicator,
required this.divisionIndicator1,
required this.divisionIndicator2,
required this.doorNumberOrCount,
required this.doorStatus,
required this.switchSetting,
required this.message});
static DOR newDOR(BaseSentence s) {
var p = Parser(s);
return DOR(
type: p.enumString(
0, "message type", [TypeSingleDoorDOR, TypeFaultDOR, TypeSectionDOR]),
time: p.time(1, "time"),
systemIndicator: p.string(2, "system indicator"),
divisionIndicator1: p.string(3, "division indicator 1"),
divisionIndicator2: p.int64(4, "division indicator 2"),
doorNumberOrCount: p.int64(5, "door number or count"),
doorStatus: p.enumString(6, "door state",
[DoorStatusOpenDOR, DoorStatusClosedDOR, DoorStatusFaultDOR]),
switchSetting: p.enumString(7, "switch setting mode",
[SwitchSettingHarbourModeDOR, SwitchSettingSeaModeDOR]),
message: p.string(8, "message"),
);
}
}