/*****************************************************************
 *****************************************************************
 ***                                                            **
 ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
 ***                                                            **
 ***            All Rights Reserved.                            **
 ***                                                            **
 ***        6145-F, Northbelt Parkway, Norcross,                **
 ***                                                            **
 ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
 ***                                                            **
 *****************************************************************
 *****************************************************************
*****************************************************************
 *
 * SDRRecord.h
 * SDR record structures.
 *
 *  Author: Govind Kothandapani <govindk@ami.com>
 *
 ******************************************************************/
#ifndef SDR_RECORD_H
#define SDR_RECORD_H

#include "com_IPMI_SDRRecord.h"
#include "com_BmcType.h"


#pragma pack( 1 )

/*** External Definitions */
#define SHARED_RECD_COUNT   0x000F


/**
 * @brief Number of various record types
**/
#define SDR_REPOSITORY_HEADER   16


/**
 * @struct HdrFullSensorRec_T
 * @brief Record Tables With Valid & Length Fields Header
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    FullSensorRec_T         FullSensorRec;

}   HdrFullSensorRec_T;


/**
 * @struct HdrMgmtCtrlrConfirmRec_T
 * @brief Management Controller Confirmation Record
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    MgmtCtrlrConfirmRec_T   MgmtCtrlrConfirmRec;

}   HdrMgmtCtrlrConfirmRec_T;


/**
 * @struct HdrMgmtCtrlrDevLocator_T
 * @brief Management Controller Device Locator Record
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    MgmtCtrlrDevLocator_T   MgmtCtrlrDevLocator;

}   HdrMgmtCtrlrDevLocator_T;


/**
 * @struct HdrBMCMsgChannelInfoRec_T
 * @brief BMC Message Channel Information Record
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    BMCMsgChannelInfoRec_T  BMCMsgChannelInfoRec;

}   HdrBMCMsgChannelInfoRec_T;


/**
 * @struct HdrGnrcDevLocatorRec_T
 * @brief Generic Device Locator Record
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    GnrcDevLocatorRec_T     GnrcDevLocatorRec;

}   HdrGnrcDevLocatorRec_T;


/**
 * @struct HdrCompactSensorRec_T
 * @brief Compact Sensor Record
**/
typedef struct
{
    uint8_t                   Valid;
    uint8_t                   Len;
    CompactSensorRec_T      CompactSensorRec;

}   HdrCompactSensorRec_T;


// /**
//  * @struct SDRRepository_T
//  * @brief SDR Repository organisation
// **/
// typedef struct
// {
//     uint8_t   Signature [4];      /* $SDR */

//     uint16_t  NumRecords;         /* Number of records */
//     uint16_t  Size;               /* Size of the SDR Records Data */

//     uint32_t  AddTimeStamp;       /* Most recent addition timestamp */
//     uint32_t  EraseTimeStamp;     /* Most recent erase timestamp */

// }   SDRRepository_T;

#pragma pack( )

#endif  /* SDR_RECORD_H */
