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

67 lines
2.1 KiB
Dart
Raw Normal View History

2024-07-31 19:04:11 +08:00
// TypeDSC type of DSC sentence for Digital Selective Calling Information
// ignore_for_file: constant_identifier_names
import 'sentence.dart';
import 'parser.dart';
const TypeDSC = "DSC";
// AcknowledgementRequestDSC is type for Acknowledge request
const AcknowledgementRequestDSC = "R";
// AcknowledgementDSC is type for Acknowledgement
const AcknowledgementDSC = "B";
// AcknowledgementNeitherDSC is type for Neither (end of sequence)
const AcknowledgementNeitherDSC = "S";
class DSC {
String formatSpecifier;
String address;
String category;
String distressCauseOrTeleCommand1;
String commandTypeOrTeleCommand2;
String positionOrCanal;
String timeOrTelephoneNumber;
String mmsi;
String distressCause;
String acknowledgement;
String expansionIndicator;
DSC({
required this.formatSpecifier,
required this.address,
required this.category,
required this.distressCauseOrTeleCommand1,
required this.commandTypeOrTeleCommand2,
required this.positionOrCanal,
required this.timeOrTelephoneNumber,
required this.mmsi,
required this.distressCause,
required this.acknowledgement,
required this.expansionIndicator,
});
static DSC newDSC(BaseSentence s) {
var p = Parser(s);
return DSC(
formatSpecifier: p.string(0, "format specifier"),
address: p.string(1, "address"),
category: p.string(2, "category"),
distressCauseOrTeleCommand1:
p.string(3, "cause of the distress or first telecommand"),
commandTypeOrTeleCommand2:
p.string(4, "type of communication or second telecommand"),
positionOrCanal: p.string(5, "position or canal"),
timeOrTelephoneNumber: p.string(6, "time or telephone"),
mmsi: p.string(7, "MMSI"),
distressCause: p.string(8, "distress cause"),
acknowledgement: p.enumString(9, "acknowledgement", [
AcknowledgementRequestDSC,
" $AcknowledgementRequestDSC",
AcknowledgementDSC,
" $AcknowledgementDSC",
AcknowledgementNeitherDSC,
" $AcknowledgementNeitherDSC",
]).trim(),
expansionIndicator: p.string(10, "expansion indicator"),
);
}
}