The format of the !AIVDM strings are covered in IEC 61993-2
St. Lawrence Seaway messages are documented in the document titled - "St. Lawrence Seaway AIS Data Messaging Formats and Specifications" available from http://www.greatlakes-seaway.com/en/pdf/aisdata.pdf
AIS Messages 6 and 8 are used to pass the data.
Includes information like wind information, water level and flow, lock order, lock time.
Example Code:
ais_state state; aismsg_8 message; sixbit seaway; int dac, fi, spare, msgid; seaway1_3 msg1_3; unsigned int result; char buf_1[] = "!AIVDM,2,1,2,B,8030ojA?0@=DE3@?BDPA3onQiUFttP1Wh01DE3<1EJ?>0onlkUG0e01I,0*3D"; char buf_2[] = "!AIVDM,2,2,2,B,h00,2*7D"; memset( &state, 0, sizeof(state) ); assemble_vdm( &state, buf_1 ); assemble_vdm( &state, buf_2 ); state.msgid = (char) get_6bit( &state.six_state, 6 ); if (state.msgid == 8 ) { result = parse_ais_8( &state, &message ); // Get the seaway info from the payload of the message 8 memset( &seaway, 0, sizeof( seaway ) ); // Copy the DAC and FI from the message 8 over to seaway dac = message.app_id >> 6; fi = message.app_id & 0x3F; seaway = message.data; // Get the Seaway msgid spare = (char) get_6bit( &seaway, 2); msgid = (char) get_6bit( &seaway, 6); // Is it a Water Level Message? if ((fi == 1) && (msgid == 3)) { result = parse_seaway1_3( &seaway, &msg1_3); // msg1_3 now holds the water level information } }
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "portable.h"
#include "nmea.h"
#include "sixbit.h"
#include "vdm_parse.h"
#include "seaway.h"
Functions | |
| int __stdcall | parse_seaway1_1 (sixbit *state, seaway1_1 *result) |
| Weather Station Message. | |
| int __stdcall | parse_seaway1_2 (sixbit *state, seaway1_2 *result) |
| Wind Information Message. | |
| int __stdcall | parse_seaway1_3 (sixbit *state, seaway1_3 *result) |
| Water Level Message. | |
| int __stdcall | parse_seaway1_6 (sixbit *state, seaway1_6 *result) |
| Water Flow Message. | |
| int __stdcall | parse_seaway2_1 (sixbit *state, seaway2_1 *result) |
| Lockage Order Message. | |
| int __stdcall | parse_seaway2_2 (sixbit *state, seaway2_2 *result) |
| Estimated Lock Times Message. | |
| int __stdcall | parse_seaway32_1 (sixbit *state, seaway32_1 *result) |
| Version Message. | |
| int __stdcall | parse_pawss1_4 (sixbit *state, pawss1_4 *result) |
| PAWSS Message 1.4 - Hydro/Current. | |
| int __stdcall | parse_pawss1_5 (sixbit *state, pawss1_5 *result) |
| PAWSS Message 1.5 - Hydro/Salinity Temp Message. | |
| int __stdcall | parse_pawss2_3 (sixbit *state, pawss2_3 *result) |
| PAWSS Message 2.3 - Vessel Procession Order Message. | |
PAWSS Message 1.4 - Hydro/Current.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Hydro/Current message into seaway1_1 structure
PAWSS Message 1.5 - Hydro/Salinity Temp Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Hydro/Salinity Temp message into seaway1_1 structure
PAWSS Message 2.3 - Vessel Procession Order Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Vessel Procession Order Message into seaway1_1 structure
Weather Station Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Weather Station message into seaway1_1 structure
Wind Information Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Wind Information message into seaway1_2 structure
Water Level Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Water Level message into seaway1_2 structure
Water Flow Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Water Flow message into seaway1_2 structure
Lockage Order Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Lockage Order message into seaway1_2 structure
Estimated Lock Times Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Estimated Lock Times message into seaway1_2 structure
| int __stdcall parse_seaway32_1 | ( | sixbit * | state, | |
| seaway32_1 * | result | |||
| ) |
Version Message.
| state | pointer to parser state | |
| result | pointer to result structure |
This function parses a Version message into seaway1_2 structure
1.5.2