67 lines
1.6 KiB
Dart
67 lines
1.6 KiB
Dart
|
// ignore_for_file: constant_identifier_names
|
||
|
|
||
|
import 'parser.dart';
|
||
|
|
||
|
import 'sentence.dart';
|
||
|
|
||
|
const TypeALC = "ALC";
|
||
|
|
||
|
class ALC {
|
||
|
int numFragments; // 0
|
||
|
int fragmentNumber; // 1
|
||
|
int messageID; // 2
|
||
|
int entriesNumber; // 3
|
||
|
List<ALCAlertEntry> alertEntries;
|
||
|
|
||
|
ALC({
|
||
|
required this.numFragments,
|
||
|
required this.fragmentNumber,
|
||
|
required this.messageID,
|
||
|
required this.entriesNumber,
|
||
|
required this.alertEntries,
|
||
|
});
|
||
|
|
||
|
static ALC newALC(BaseSentence s) {
|
||
|
var p = Parser(s);
|
||
|
var alc = ALC(
|
||
|
numFragments: p.int64(0, "number of fragments"),
|
||
|
fragmentNumber: p.int64(1, "fragment number"),
|
||
|
messageID: p.int64(2, "message ID"),
|
||
|
entriesNumber: p.int64(3, "entries number"),
|
||
|
alertEntries: []);
|
||
|
|
||
|
int fieldCount = s.fields.length;
|
||
|
if (fieldCount == 4) {
|
||
|
return alc;
|
||
|
}
|
||
|
if (fieldCount % 4 != 0) {
|
||
|
return alc;
|
||
|
}
|
||
|
for (int i = 4; i < fieldCount; i = i + 4) {
|
||
|
var tmp = ALCAlertEntry(
|
||
|
manufacturerMnemonicCode:
|
||
|
p.string(i * 4 + 4, "manufacturer mnemonic code"),
|
||
|
alertIdentifier: p.int64(i * 4 + 5, "alert identifier"),
|
||
|
alertInstance: p.int64(i * 4 + 6, "alert instance"),
|
||
|
revisionCounter: p.int64(i * 4 + 7, "revision counter"),
|
||
|
);
|
||
|
alc.alertEntries.add(tmp);
|
||
|
}
|
||
|
return alc;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class ALCAlertEntry {
|
||
|
String manufacturerMnemonicCode; // i+4
|
||
|
int alertIdentifier; // i+5
|
||
|
int alertInstance; // i+6
|
||
|
int revisionCounter; // i+7
|
||
|
|
||
|
ALCAlertEntry({
|
||
|
required this.manufacturerMnemonicCode,
|
||
|
required this.alertIdentifier,
|
||
|
required this.alertInstance,
|
||
|
required this.revisionCounter,
|
||
|
});
|
||
|
}
|