/****************************************************************
 ****************************************************************
 **                                                            **
 **    (C)Copyright 2005-2006, American Megatrends Inc.        **
 **                                                            **
 **            All Rights Reserved.                            **
 **                                                            **
 **        6145-F, Northbelt Parkway, Norcross,                **
 **                                                            **
 **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
 **                                                            **
 ****************************************************************
 ****************************************************************
 ****************************************************************
 *
 * IPMI_App.h
 * AppDevice Commands Handler
 *
 * Author: Govind Kothandapani <govindk@ami.com>
 *       : Rama Bisa <ramab@ami.com>
 *       : Basavaraj Astekar <basavaraja@ami.com>
 *       : Bakka Ravinder Reddy <bakkar@ami.com>
 *
 *****************************************************************/
#ifndef IPMI_APPDEV_PLUS_H
#define IPMI_APPDEV_PLUS_H

#include "stdint.h"

#pragma pack( 1 )

/*** Macro Definitions ***/
#define MAX_PLD_ENABLES     4

/* ActivatePayloadReq_T */
typedef struct
{
    uint8_t   PayldType;
    uint8_t   PayldInst;
    uint8_t   AuxData [4];

}    ActivatePayloadReq_T;

/* ActivatePayloadRes_T */
typedef struct
{

    uint8_t   CompletionCode;
    uint8_t   AuxData [4];
    uint16_t  InboundPayldSize;
    uint16_t  OutboundPayldSize;
    uint16_t  UDPPort;
    uint16_t  VLANNo;

}    ActivatePayloadRes_T;

/* DeactivatePayloadReq_T */
typedef struct
{
    uint8_t   PayldType;
    uint8_t   PayldInst;
    uint8_t   AuxData [4];

}    DeactivatePayloadReq_T;

/* GetPayldActStatRes_T */
typedef struct
{
    uint8_t   CompletionCode;
    uint8_t   InstCap;
    uint16_t  ActivatedInst;

}    GetPayldActStatRes_T;

/* GetPayldInstInfoReq_T */
typedef struct 
{
    uint8_t   PayldType;
    uint8_t   PayldInst;

}    GetPayldInstInfoReq_T;

/* GetPayldInstInfoRes_T */
typedef struct
{
    uint8_t   CompletionCode;
    uint32_t  SessionID;
    uint8_t   SpecificInfo [8];

}    GetPayldInstInfoRes_T;

/* SetUsrPayldAccReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   UserId;
    uint8_t   PayloadEnables [MAX_PLD_ENABLES];

}    SetUsrPayldAccReq_T;

/* SetUsrPayldAccRes_T */
typedef struct
{
    uint8_t CompletionCode;

}    SetUsrPayldAccRes_T;


/* GetUsrPayldAccReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   UserId;

}    GetUsrPayldAccReq_T;

/* GetUsrPayldAccRes_T */
typedef struct
{
    uint8_t   CompletionCode;
    uint8_t   PayloadEnables [MAX_PLD_ENABLES];

}    GetUsrPayldAccRes_T;


/* GetChPayldSupRes_T */
typedef struct
{

    uint8_t   CompletionCode;
    uint8_t   StdPldtype1;
    uint8_t   StdPldtype2;
    uint8_t   SessStpPldtype1;
    uint8_t   SessStpPldtype2;
    uint8_t   OemPldtype1;
    uint8_t   OemPldtype2;
    uint16_t  Rsvd;

}    GetChPayldSupRes_T;

/* GetChPayldVerReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   PayloadNum;

}    GetChPayldVerReq_T;

/* GetChPayldVerRes_T */
typedef struct
{

    uint8_t   CompletionCode;
    uint8_t   FormatVer;

}    GetChPayldVerRes_T;

/* GetChOemPayldInfoReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   PayloadNum;
    uint8_t   OemIANA [3];
    uint8_t   OemPyldId [2];

}    GetChOemPayldInfoReq_T;

/* GetChOemPayldInfoRes_T */
typedef struct
{

    uint8_t   CompletionCode;
    uint8_t   PayloadNum;
    uint8_t   OemIANA [3];
    uint8_t   OemPyldId [2];
    uint8_t   FormatVer;

}    GetChOemPayldInfoRes_T;

/* SusResPayldEncryptReq_T */
typedef struct
{
    uint8_t   PayldType;
    uint8_t   PayldInst;
    uint8_t   Operation;

}    SusResPayldEncryptReq_T;

/* SetChSecurityKeysReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   Operation;
    uint8_t   KeyID;

}    SetChSecurityKeysReq_T;

/* SetChSecurityKeysRes_T */
typedef struct
{

    uint8_t   CompletionCode;
    uint8_t   LockStatus;

}    SetChSecurityKeysRes_T;

/* GetSysIfcCapsRes_T */
typedef struct
{
    uint8_t   CompletionCode;
    uint8_t   Rsrvd;

}    GetSysIfcCapsRes_T;

/* GetChCipherSuitesReq_T */
typedef struct
{
    uint8_t   ChannelNum;
    uint8_t   PayloadType;
    uint8_t   ListIndex;

}    GetChCipherSuitesReq_T;

/* GetChCipherSuitesRes_T */
typedef struct
{
    uint8_t   CompletionCode;
    uint8_t   ChannelNum;

}    GetChCipherSuitesRes_T;

#pragma pack( )

#endif /* IPMI_APPDEV_PLUS_H */
