#ifndef _hpsDm_H
#define _hpsDm_H

/****************************************************************************/
/* Copyright 1992 to 1993, MBARI                                            */
/****************************************************************************/
/* Summary  : IBC HPS Board Data Manager Function Prototypes for VxWorks    */
/* Filename : hpsDm.h                                                       */
/* Author   : Andrew Pearce                                                 */
/* Project  : New ROV                                                       */
/* Version  : Version 1.0                                                   */
/* Created  : 04/08/93                                                      */
/* Modified : 06/08/93                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* $Header: hpsDm.h,v 1.1 93/07/01 14:38:14 pean Exp $
 * $Log:        hpsDm.h,v $
 * Revision 1.1  93/07/01  14:38:14  14:38:14  pean (Andrew Pearce)
 * Initial revision
 *
 *
 */
/********************** IBC HPS Data Manager Item Names *********************/

#define HPS_CURRENT_DM                          "CURRENT"
#define HPS_CURRENT_WARN_THRESH_DM              "CURRENT_WARN_THRESH"
#define HPS_CURRENT_ALARM_THRESH_DM             "CURRENT_ALARM_THRESH"
#define HPS_CURRENT_ALARM_DM                    "CURRENT_ALARM"
#define HPS_SWITCH_TRIP_ALARM_DM                "TRIP_ALARM"

#ifdef INCLUDE_PROTOTYPES

typedef struct                      /* IBC HPS Board Data Manager Item      */
{
    DM_Item current;                /* Switch Current                       */
    DM_Item currentWarnThresh;      /* Current Warning Threshold            */
    DM_Item currentAlarmThresh;     /* Current Alarm Threshold              */
    DM_Item currentAlarm;           /* Current Alarm Status                 */
    DM_Item switchTripAlarm;        /* Switch Trip Alarm Status             */

    switchEntry *deviceSwitch;      /* Pointer to switchEntry structure     */
} ibcHpsDmItems;

typedef struct                      /* IBC HPS Board Item Update Bits       */
{
    DWord currentWarnBit;
    DWord currentAlarmBit;
} hpsUpdateBits;

#ifdef __STDC__

STATUS createIbcHpsDmItems( ibcHpsDmItems *hpsDmItems, const char* ibcDmPrefix,
                    const char* ibcDataCon, Int16 hpsBoardNum );

Void initIbcHpsProvider( ibcHpsDmItems* hpsItems, Period period );

Void initIbcHpsAlarmProvider( ibcHpsDmItems* hpsItems );

DWord initIbcHpsConsumer( ibcHpsDmItems* hpsItems, hpsUpdateBits *hpsBits,
         SEM_ID updateSem );

STATUS ibcConnectHpsDmItems( ibcHpsDmItems *hps,   switchEntry *device,
         const char *dataConName,  const char *itemName,
         char *current,            char *currentAlarm,
         char *currentWarnThresh,  char *currentAlarmThresh,
         char *tripAlarm );

STATUS updateIbcHpsDm( sio32Chan *sio32DataChan, Word boardAddr,
        ibcHpsDmItems *hpsItems );

STATUS updateIbcHpsAlarmsDm( sio32Chan *sio32DataChan, Word boardAddr,
         ibcHpsDmItems *hpsItems );

STATUS writeHpsCurrentThresholds( sio32Chan* sio32DataChan, Word boardAddr,
                          ibcHpsDmItems* hpsItems );

STATUS writeHpsTempThresholds( sio32Chan* sio32DataChan, Word boardAddr,
                          ibcHpsDmItems* hpsItems );

Void updateIbcHpsDmItems( sio32Chan* sio32DataChan, Word boardAddr,
         ibcHpsDmItems* hpsItems, const char* ibcDataCon );


Void ibcHpsUpdateCheck( sio32Chan* sio32DataChan, Word boardAddr,
         ibcHpsDmItems* hpsItems, hpsUpdateBits* hpsBits, DM_Group hpsGroup );

STATUS ibcHpsSetCurrentThresh( ibcHpsDmItems *hps, sio32Chan *sio32DataChan,
    Word boardAddr, Nat16 warnThresh, Nat16 alarmThresh );

MBool processIbcHpsSRQ( Word srqRequest, Byte* buffer, Word hpsBoardAddr,
                 ibcHpsDmItems* hpsItems );



STATUS ibcHpsDefineGfBoard( switchEntry *device, Word gfBoardAddr );

#endif /* __STDC__ */

#endif /* INCLUDE_PROTOTYPES */



#endif

