#ifndef _microDm_H
#define _microDm_H
/******************************************************************************/
/* Copyright 1993 MBARI                                                       */
/******************************************************************************/
/* Summary  : Data Manager Support Function Definitions for Microcontrollers  */
/* Filename : microDM.h                                                       */
/* Author   : Andrew Pearce                                                   */
/* Project  : New ROV                                                         */
/* Version  : Version 1.0                                                     */
/* Created  : 04/12/93                                                        */
/* Modified : 04/12/93                                                        */
/* Archived :                                                                 */
/******************************************************************************/
/* Modification History:                                                      */
/* $Header: /usr/tiburon/.cvsroot/vw/h/microDm.h,v 1.1.1.1 1997/05/16 22:33:04 pean Exp $
 * $Log: microDm.h,v $
 * Revision 1.1.1.1  1997/05/16 22:33:04  pean
 * Initial check in after software freeze.
 *
 *
 */
/****************** Microcontroller Data Manager Item Names *******************/

                                     /* Max length of data manager item name */
#define DM_ITEM_NAME_LEN            MAX_NMLEN

#define MICRO_RESET_EVENT_DM        "RESET_EVENT"
#define MICRO_RESET_CMD_DM          "RESET_CMD"
#define MICRO_IDENT_DM              "IDENT"
#define MICRO_SERIAL_NO_DM          "MICRO_SERIAL_NO"
#define SOFTWARE_REV_DM             "SOFTWARE_REV"
#define MICRO_SERIAL_ERROR_DM       "SERIAL_IO_ERROR"
#define RAM_TEST_STATUS_DM          "RAM_TEST_STATUS"
#define COM_LINK_ERROR_DM           "COM_LINK_ERROR"

typedef struct                      /* Microcontroller Data Manager Handles */
{
    DM_Item idString;               /* Microcontroller Identification String*/
    DM_Item serialNo;               /* Microcontroller Board Serial Number  */
    DM_Item softwareRev;            /* Micro Software Revision String       */
    DM_Item resetEvent;             /* Microcontroller Board Reset Occurred */
    DM_Item resetCmd;               /* Send Reset Command to Microcontroller*/
    DM_Item ramTest;                /* Microcontroller RAM Test Status      */
    DM_Item pktRxTimeout;           /* Micro packet receive timeout         */
} microDmItems;

typedef struct                      /* Data Manager Item Table for table    */
{                                   /* driven item initialization           */
    DM_Item *dmItem;                /* pointer to actual dm item handle     */
    char    *errorMsg;              /* Message to display of dmCreate fails */
    char    *name;                  /* Data Manager Item Name               */
    DM_Type type;                   /* Data Manager Item Type               */
    DM_Num  len;                    /* Data Manager Item Element Count      */
} dmItemList;

typedef struct
{
    MBool   event;                 /* Reset event synchronization flag       */
    SEM_ID  taskSyncSem;           /* Task synchronization semaphore         */
} microResetEvent;

#ifdef INCLUDE_PROTOTYPES

#ifdef __STDC__

STATUS  initMicroDmItemList(dmItemList *dmItems, const char *prefix,
                         const char * taskName );

DM_Item initMicroDmItem( const char *dmPrefix, char *itemName,
                         DM_Type itemType, DM_Num numElements );

STATUS writeDmItem(DM_Item dmItem, void *value, DM_Size itemSize);
STATUS urgentWriteDmItem(DM_Item dmItem, void *value, DM_Size itemSize);
STATUS writeBooleanDmItem(DM_Item dmItem, MBool status);
STATUS updateMicroIdentDm( sio32Chan *sio32DataChan, DM_Item microIdentDm );
STATUS updateSerialNoDm( sio32Chan *sio32DataChan, DM_Item serialNoDm );
STATUS writeMicroSerialNo( sio32Chan *sio32DataChan, DM_Item serialNoDm );
STATUS updateSoftwareRevDm( sio32Chan *sio32DataChan, DM_Item softwareRevDm );
STATUS microResetEventDm(DM_Item microResetDm);
STATUS updateMicroRamTestDm( sio32Chan *sio32DataChan, DM_Item microRamTestDm );

STATUS initMicroPacketRxTimeoutDm( sio32Chan *sio32DataChan,
                         DM_Item rxTimeoutDm );

STATUS setPacketRxTimeout( sio32Chan *sio32DataChan, DM_Item packetRxTimeoutDm);
STATUS microWriteGndFaultTest( sio32Chan *sio32DataChan, DM_Item gfTestDm);

#endif /* __STDC__ */

#endif /* INCLUDE_PROTOTYPES */

#endif /* _microDm_H */



