/****************************************************************************/
/* Copyright 1992 to 1995 MBARI                                             */
/****************************************************************************/
/* Summary  : Virtual Serial Port Interface for VxWorks                     */
/* Filename : vspDmTop.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"
#define VSP_PORT_NAME_DM        "PORT_NAME"

#define SERIAL_TIMEOUT          50000

typedef struct 
{
    Int16 len;
    char buffer[MAX_PACKET_LEN];
} 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;   /* VSP Handshake Mode                            */
   DM_Item vspProtocol;    /* VSP Protocol RS232 or RS485                   */
   DM_Item vspBreak;       /* VSP Break Flag                                */
   DM_Item vspError;       /* VSP Quad Serial Receiver Error                */
   DM_Item vspPortName;    /* Name of serial port on topside                */
} 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;
   DWord portBit;
} vspUpdateBits;

#ifdef INCLUDE_PROTOTYPES

#ifdef __STDC__

STATUS createIbcVspTopDmItems ( ibcVspDmItems *vspDmItems, 
                              const char* ibcDmPrefix, const char* ibcDataCon, 
                              Int16 quadSerBoardNum );

Void  initIbcVspTopProvider ( ibcVspDmItems* vspItems, Period period );

DWord initIbcVspTopConsumer ( ibcVspDmItems* vspItems, vspUpdateBits *vspBits,
                           SEM_ID updateSem );

Void updateIbcVspTopDm ( Int16 fd, ibcVspDmItems* vspItems );

void updateIbcVspTopDmItems (ibcVspDmItems* vspItems, Nat16 baud, Nat16 data, 
                Nat16 stop, Nat16 par, MBool Handshake, Nat16 proto);

void ibcVspTopUpdateCheck ( Int16 fd, ibcVspDmItems* vspItems, 
           vspUpdateBits* vspBits, DM_Group vspGroup );

DWord setTermControl(Nat16 baud, Nat16 data, Nat16 stop, Nat16 par);

#endif  /* __STDC__ */
#endif  /* INCLUDE_PROTOTYPES */














