#ifndef _vspDm_H
#define _vspDm_H

/****************************************************************************/
/* Copyright 1992 to 1995 MBARI                                             */
/****************************************************************************/
/* Summary  : Virtual Serial Port Interface for VxWorks                     */
/* Filename : vspDm.h                                                       */
/* Author   : Douglas Au                                                    */
/* Project  : New ROV                                                       */
/* Version  : Version 1.0                                                   */
/* Created  : 08/22/94                                                      */
/* Modified : 01/31/95                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* Initial revision

 *
 */
/****************************************************************************/

#define VSP_BAUD_DM             "BAUD"
#define VSP_DATA_BITS_DM        "DATA_BITS"
#define VSP_STOP_BITS_DM        "STOP_BITS"
#define VSP_PARITY_DM           "PARITY"
#define VSP_MSGIN_DM            "MSGIN"
#define VSP_MSGOUT_DM           "MSGOUT"
#define VSP_MSG_RECEIVED_DM     "MSG_RECEIVED"
#define VSP_HANDSHAKE_DM        "HANDSHAKE"
#define VSP_PROTOCOL_DM         "PROTOCOL"
#define VSP_BREAK_DM            "BREAK"
#define VSP_ERROR_DM            "ERROR"

typedef struct
{
    Int16 len;
    Char buffer[256]; /* MAX_PACKET_LEN = 256 */
} messageStruct;

typedef struct             /* Virtual Serial Port Data Manager Item Handles */
{
   DM_Item vspBaud;        /* Virtual Serial Port Baud Rate                 */
   DM_Item vspData;        /* Virtual Serial Port Data Bits                 */
   DM_Item vspStop;        /* Virtual Serial Port Stop Bit                  */
   DM_Item vspPar;         /* Virtual Serial Port Parity bit                */
   DM_Item vspMsgIn;       /* Virtual Serial Port Incomming Message         */
   DM_Item vspMsgOut;      /* Virtual Serial Port Outgoing Message          */
   DM_Item vspMsgReceived; /* Message Received Flag                         */
   DM_Item vspHandshake;   /* Handshake mode                                */
   DM_Item vspProtocol;    /* Protocol rs485 or rs232                       */
   DM_Item vspBreak;       /* VSP Break Flag                                */
   DM_Item vspError;       /* VSP Quad Serial Receiver Error                */
} ibcVspDmItems;

typedef struct             /* Virtual Serial Port Item Update Bits */
{
   DWord baudBit;
   DWord dataBit;
   DWord stopBit;
   DWord parityBit;
   DWord msgInBit;
   DWord msgOutBit;
   DWord msgReceivedBit;
   DWord handshakeBit;
   DWord protocolBit;
   DWord breakBit;
   DWord errorBit;
} vspUpdateBits;

#ifdef INCLUDE_PROTOTYPES

#ifdef __STDC__

STATUS createIbcVspDmItems ( ibcVspDmItems *vspDmItems, const char* ibcDmPrefix,
                          const char* ibcDataCon, Int16 quadSerBoardNum );

Void  initIbcVspProvider ( ibcVspDmItems* vspItems );

DWord initIbcVspConsumer ( ibcVspDmItems* vspItems, vspUpdateBits *vspBits,
                           SEM_ID updateSem );

STATUS updateIbcVspDm ( sio32Chan* sio32DataChan, Word boardAddr,
                        ibcVspDmItems* vspItems );

void updateIbcVspDmItems ( sio32Chan* sio32DataChan, Word boardAddr, Word chan,
                           ibcVspDmItems* vspItems, const char* ibcDataCon );

void ibcVspUpdateCheck ( sio32Chan* sio32DataChan, Word boardAddr, Word chan,
                         ibcVspDmItems* vspItems, vspUpdateBits* vspBits,
                         DM_Group vspGroup );

MBool processIbcVspSRQ(Word srqRequest, Byte* buffer, Word quadSerBoardAddr,
                 Word chan, ibcVspDmItems* vspItems );
#endif  /* __STDC__ */
#endif  /* INCLUDE_PROTOTYPES */














#endif
