// 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 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, }); }