Skip to content

Commit b128bea

Browse files
committed
Support for Message Source
Changed all AIS Message to include if it is a Data-link Message or a Data-link Own-vessel report.
1 parent 2a0fbff commit b128bea

18 files changed

+55
-15
lines changed

.github/workflows/package-release.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ jobs:
3737
- name: Build
3838
run: dotnet build --no-restore
3939

40-
- name: Test
41-
run: dotnet test --no-build --verbosity normal
42-
4340
- name: Build Release
4441
run: dotnet build --configuration Release --no-restore
4542

AIS/AIS.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
88
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
99
<PackageId>TensionDev.Maritime.AIS</PackageId>
10-
<Version>0.2.0</Version>
10+
<Version>0.2.1</Version>
1111
<Authors>TensionDev amsga</Authors>
1212
<Company>TensionDev</Company>
1313
<Product>TensionDev.Maritime.AIS</Product>
1414
<Description>A project to encode and decode known AIS messages.</Description>
15-
<Copyright>Copyright (c) TensionDev 2021</Copyright>
15+
<Copyright>Copyright (c) TensionDev 2021 - 2022</Copyright>
1616
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
1717
<PackageProjectUrl>https://github.com/TensionDev/AutomaticIdentificationSystem</PackageProjectUrl>
1818
<RepositoryUrl>https://github.com/TensionDev/AutomaticIdentificationSystem</RepositoryUrl>
@@ -21,7 +21,7 @@
2121
<PackageReleaseNotes>Initial project release</PackageReleaseNotes>
2222
<NeutralLanguage>en-SG</NeutralLanguage>
2323
<AssemblyVersion>0.2.0.0</AssemblyVersion>
24-
<FileVersion>0.2.0.0</FileVersion>
24+
<FileVersion>0.2.1.0</FileVersion>
2525
<IncludeSymbols>true</IncludeSymbols>
2626
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
2727
</PropertyGroup>

AIS/AISMessage.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ public abstract class AISMessage
1010

1111
protected UInt16 messageId6;
1212
protected UInt16 repeatIndicator2;
13+
14+
/// <summary>
15+
/// Sentence Formatter
16+
/// </summary>
17+
public SentenceFormatterEnum SentenceFormatter { get; set; }
1318

1419
/// <summary>
1520
/// Identifier for this Message
@@ -24,6 +29,7 @@ public abstract class AISMessage
2429

2530
protected AISMessage()
2631
{
32+
SentenceFormatter = SentenceFormatterEnum.VDM;
2733
}
2834

2935
/// <summary>
@@ -39,10 +45,11 @@ public static AISMessage DecodeSentences(IList<String> sentences)
3945
IList<String> payloads = new List<String>();
4046
String messageId = "@";
4147
String sequenceId = String.Empty;
48+
String sentenceIdentifier = String.Empty;
4249

4350
foreach (String sentence in sentences)
4451
{
45-
String sentenceIdentifier = sentence.Substring(3, 3);
52+
sentenceIdentifier = sentence.Substring(3, 3);
4653
if (sentenceIdentifier != "VDM" && sentenceIdentifier != "VDO")
4754
{
4855
throw new NotImplementedException("Sentence Identifier not recognised.");
@@ -111,6 +118,15 @@ public static AISMessage DecodeSentences(IList<String> sentences)
111118
throw new NotImplementedException("Message Identifier not recognised.");
112119
}
113120

121+
if (sentenceIdentifier == "VDM")
122+
{
123+
aisMessage.SentenceFormatter = SentenceFormatterEnum.VDM;
124+
}
125+
else if (sentenceIdentifier == "VDO")
126+
{
127+
aisMessage.SentenceFormatter = SentenceFormatterEnum.VDO;
128+
}
129+
114130
aisMessage.DecodePayloads(payloads);
115131

116132
return aisMessage;
@@ -324,5 +340,17 @@ protected static Byte CalculateChecksum(Byte initial, Byte data)
324340
/// </summary>
325341
/// <param name="payloads">AIS Payloads</param>
326342
protected abstract void DecodePayloads(IList<String> payloads);
343+
344+
public enum SentenceFormatterEnum
345+
{
346+
/// <summary>
347+
/// UAIS VHF Data-link Message
348+
/// </summary>
349+
VDM,
350+
/// <summary>
351+
/// UAIS VHF Data-link Own-vessel report
352+
/// </summary>
353+
VDO,
354+
}
327355
}
328356
}

AIS/AISMessage01.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ public override IList<String> EncodeSentences()
350350
StringBuilder stringBuilder = new StringBuilder();
351351
IList<String> payload = EncodePayloads();
352352

353-
stringBuilder.AppendFormat("!AIVDM,1,1,,A,{0},0", payload[0]);
353+
stringBuilder.AppendFormat("!AI{0},1,1,,A,{1},0", SentenceFormatter.ToString(), payload[0]);
354354

355355
Byte checksum = CalculateChecksum(stringBuilder.ToString());
356356

AIS/AISMessage02.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ public override IList<String> EncodeSentences()
350350
StringBuilder stringBuilder = new StringBuilder();
351351
IList<String> payload = EncodePayloads();
352352

353-
stringBuilder.AppendFormat("!AIVDM,1,1,,A,{0},0", payload[0]);
353+
stringBuilder.AppendFormat("!AI{0},1,1,,A,{1},0", SentenceFormatter.ToString(), payload[0]);
354354

355355
Byte checksum = CalculateChecksum(stringBuilder.ToString());
356356

AIS/AISMessage03.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ public override IList<String> EncodeSentences()
350350
StringBuilder stringBuilder = new StringBuilder();
351351
IList<String> payload = EncodePayloads();
352352

353-
stringBuilder.AppendFormat("!AIVDM,1,1,,A,{0},0", payload[0]);
353+
stringBuilder.AppendFormat("!AI{0},1,1,,A,{1},0", SentenceFormatter.ToString(), payload[0]);
354354

355355
Byte checksum = CalculateChecksum(stringBuilder.ToString());
356356

AIS/AISMessage04.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public override IList<String> EncodeSentences()
197197
StringBuilder stringBuilder = new StringBuilder();
198198
IList<String> payload = EncodePayloads();
199199

200-
stringBuilder.AppendFormat("!AIVDM,1,1,,A,{0},0", payload[0]);
200+
stringBuilder.AppendFormat("!AI{0},1,1,,A,{1},0", SentenceFormatter.ToString(), payload[0]);
201201

202202
Byte checksum = CalculateChecksum(stringBuilder.ToString());
203203

AIS/AISMessage05.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,8 @@ public override IList<String> EncodeSentences()
390390
StringBuilder stringBuilder2 = new StringBuilder();
391391
IList<String> payload = EncodePayloads();
392392

393-
stringBuilder.AppendFormat("!AIVDM,2,1,{0},A,{1},0", s_groupId, payload[0]);
394-
stringBuilder2.AppendFormat("!AIVDM,2,2,{0},A,{1},0", s_groupId, payload[1]);
393+
stringBuilder.AppendFormat("!AI{0},2,1,{1},A,{2},0", SentenceFormatter.ToString(), s_groupId, payload[0]);
394+
stringBuilder2.AppendFormat("!AI{0},2,2,{1},A,{2},0", SentenceFormatter.ToString(), s_groupId, payload[1]);
395395

396396
Byte checksum = CalculateChecksum(stringBuilder.ToString());
397397
Byte checksum2 = CalculateChecksum(stringBuilder2.ToString());

AIS/AISMessage18.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ public override IList<String> EncodeSentences()
255255
StringBuilder stringBuilder = new StringBuilder();
256256
IList<String> payload = EncodePayloads();
257257

258-
stringBuilder.AppendFormat("!AIVDM,1,1,,B,{0},0", payload[0]);
258+
stringBuilder.AppendFormat("!AI{0},1,1,,B,{1},0", SentenceFormatter.ToString(), payload[0]);
259259

260260
Byte checksum = CalculateChecksum(stringBuilder.ToString());
261261

AIS/AISMessage24.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ public override IList<string> EncodeSentences()
395395
}
396396
else
397397
{
398-
stringBuilder.AppendFormat("!AIVDM,1,1,,B,{0},0", payload[0]);
398+
stringBuilder.AppendFormat("!AI{0},1,1,,B,{1},0", SentenceFormatter.ToString(), payload[0]);
399399
}
400400

401401
Byte checksum = CalculateChecksum(stringBuilder.ToString());

0 commit comments

Comments
 (0)