/Users/brianlane/projs/aisparser/c/src/seaway.c File Reference


Detailed Description

St. Lawrence Seaway Message Parsing.

Author:
Copyright 2006-2008 by Brian C. Lane <bcl@brianlane.com>, All Rights Reserved
Version:
1.0
For exact definitions of each field you should see the ITU M.1371, IEC 62287 and the IALA Clarifications on M.1371

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.


Function Documentation

int __stdcall parse_pawss1_4 ( sixbit state,
pawss1_4 result 
)

PAWSS Message 1.4 - Hydro/Current.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Hydro/Current message into seaway1_1 structure

int __stdcall parse_pawss1_5 ( sixbit state,
pawss1_5 result 
)

PAWSS Message 1.5 - Hydro/Salinity Temp Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Hydro/Salinity Temp message into seaway1_1 structure

int __stdcall parse_pawss2_3 ( sixbit state,
pawss2_3 result 
)

PAWSS Message 2.3 - Vessel Procession Order Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Vessel Procession Order Message into seaway1_1 structure

int __stdcall parse_seaway1_1 ( sixbit state,
seaway1_1 result 
)

Weather Station Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Weather Station message into seaway1_1 structure

int __stdcall parse_seaway1_2 ( sixbit state,
seaway1_2 result 
)

Wind Information Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Wind Information message into seaway1_2 structure

int __stdcall parse_seaway1_3 ( sixbit state,
seaway1_3 result 
)

Water Level Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Water Level message into seaway1_2 structure

int __stdcall parse_seaway1_6 ( sixbit state,
seaway1_6 result 
)

Water Flow Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Water Flow message into seaway1_2 structure

int __stdcall parse_seaway2_1 ( sixbit state,
seaway2_1 result 
)

Lockage Order Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Lockage Order message into seaway1_2 structure

int __stdcall parse_seaway2_2 ( sixbit state,
seaway2_2 result 
)

Estimated Lock Times Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Estimated Lock Times message into seaway1_2 structure

int __stdcall parse_seaway32_1 ( sixbit state,
seaway32_1 result 
)

Version Message.

Parameters:
state pointer to parser state
result pointer to result structure
return

This function parses a Version message into seaway1_2 structure


Generated on Tue Aug 26 13:57:50 2008 for AIS Parser by  doxygen 1.5.2