/****************************************************************
 ****************************************************************
 **                                                            **
 **    (C)Copyright 2005-2006, American Megatrends Inc.        **
 **                                                            **
 **            All Rights Reserved.                            **
 **                                                            **
 **        6145-F, Northbelt Parkway, Norcross,                **
 **                                                            **
 **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
 **                                                            **
 ****************************************************************
 ****************************************************************
 *
 * AppDevice.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 APPDEVICE_H
#define APPDEVICE_H

#include "com_BmcType.h"
#define EVT_MSG_BUF_SIZE    1  /**<Event Message maximum Buffer size */
//#define USER_ID             (((uint32_t)'U'<< 24) | ((uint32_t)'S'<< 16) | ('E'<<8) | 'R')
#define IPMI_ROOT_USER      ( 2 )
#define TWENTY_BYTE_PWD  0x80
#define CURRENT_CHANNEL_NUM		0x0E
#define MASTER_RW_ERRCODE 0xFF
#define IGNORE_ADD_OR_REMOVE 0
#define IGNORE_ADD_OR_REMOVE_SHELL -1
#define IPMI_15_PASSWORD_LEN (16 + 2)
#define IPMI_20_PASSWORD_LEN (20 + 2)
#define SYS_SEND_MSG_LUN 0x02

/*** Extern Declaration ***/


/*** Function Prototypes ***/
/**
 * @defgroup apcf2 BMC Watchdog Timer Commands
 * @ingroup apcf
 * IPMI BMC Watchdog Timer Command Handlers. Invoked by the message handler
 * @{
 **/
extern int      ResetWDT            ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetWDT              ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetWDT              ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
/** @} */

/**
 * @defgroup apcf3 BMC Device and Messaging Commands
 * @ingroup apcf
 * IPMI BMC Device and Messaging Command Handlers. Invoked by the message handler
 * @{
 **/
extern int      SetBMCGlobalEnables ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetBMCGlobalEnables ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      ClrMsgFlags         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetMsgFlags         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      EnblMsgChannelRcv   ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetMessage          ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SendMessage         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      ReadEvtMsgBuffer    ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetBTIfcCap         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetSystemGUID       ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetChAuthCap        ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetSessionChallenge ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      ActivateSession     ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetSessionPrivLevel ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      CloseSession        ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetSessionInfo      ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetAuthCode         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetChAccess         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetChAccess         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetChInfo           ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetUserAccess       ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetUserAccess       ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetUserName         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      GetUserName         ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      SetUserPassword     ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int      MasterWriteRead     ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int		SetSystemInfoParam  ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern int 		GetSystemInfoParam  ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes);
extern uint8_t  IsChannelSuppGroups(uint8_t ChannelNum);
extern int ModifyUsrGrp(char * UserName,uint8_t ChannelNum,uint8_t OldAccessLimit, uint8_t NewAccessLimit );

/** @} */

#endif  /* APPDEVICE_H */

