Skip to content

Commit f1df26c

Browse files
Merge pull request #88 from Ocean-Signal/feature/safety-related-broadcast-test-message
Add support for message 14, Safety Related Broadcast
2 parents 62272cd + 04d2a4e commit f1df26c

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

src/AisParser/AisMessageFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public AisMessage Create(Payload payload)
3535
return new AddressedSafetyRelatedMessage(payload);
3636
case AisMessageType.SafetyRelatedAcknowledgement:
3737
return new SafetyRelatedAcknowledgementMessage(payload);
38-
//case AisMessageType.SafetyRelatedBroadcastMessage:
38+
case AisMessageType.SafetyRelatedBroadcastMessage:
39+
return new SafetyRelatedBroadcastMessage(payload);
3940
case AisMessageType.Interrogation:
4041
return new InterrogationMessage(payload);
4142
//case AisMessageType.AssignmentModeCommand:
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
namespace AisParser.Messages
2+
{
3+
public class SafetyRelatedBroadcastMessage : AisMessage
4+
{
5+
public uint Spare { get; set; }
6+
7+
public string SafetyRelatedText { get; set; }
8+
9+
public SafetyRelatedBroadcastMessage()
10+
: base(AisMessageType.SafetyRelatedBroadcastMessage)
11+
{
12+
}
13+
14+
public SafetyRelatedBroadcastMessage(Payload payload)
15+
: base(AisMessageType.SafetyRelatedBroadcastMessage, payload)
16+
{
17+
Spare = payload.ReadUInt(38, 2);
18+
SafetyRelatedText = payload.ReadString(40, 968);
19+
}
20+
}
21+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using AisParser;
2+
using AisParser.Messages;
3+
using Shouldly;
4+
using Xunit;
5+
6+
namespace AisParserTests.MessagesTests
7+
{
8+
9+
public class SafetyRelatedBroadcastMessageTests : MessageTestBase
10+
{
11+
[Fact]
12+
public void Should_parse_message()
13+
{
14+
const string sentence = "!AIVDM,1,1,,A,>>QK2khE0U8:1@E=@0,4*52"; // EPIRB test message
15+
16+
var message = Parser.Parse(sentence) as SafetyRelatedBroadcastMessage;
17+
message.ShouldNotBeNull();
18+
message.MessageType.ShouldBe(AisMessageType.SafetyRelatedBroadcastMessage);
19+
message.Repeat.ShouldBe(0u);
20+
message.Mmsi.ShouldBe(974570191u);
21+
message.Spare.ShouldBe(0u);
22+
message.SafetyRelatedText.ShouldBe("EPIRB TEST");
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)