2762 lines
88 KiB
C++
2762 lines
88 KiB
C++
#ifndef _ARCLIB_H
|
|
#define _ARCLIB_H
|
|
|
|
#include "commdef.h"
|
|
#include "interface.h"
|
|
#ifdef _WIN32
|
|
#include <Winsock2.h>
|
|
#endif
|
|
|
|
#include "sasbase.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#pragma pack(1)
|
|
|
|
// THE BELOW BLOCK IS ONLY FOR INTERNAL USE
|
|
/************************************************************************************/
|
|
enum
|
|
{
|
|
GUI_SET_SERIAL = 0x10,
|
|
GUI_SET_VENDOR,
|
|
GUI_SET_MODEL,
|
|
GUI_IDENTIFY,
|
|
GUI_CHECK_PASSWORD,
|
|
GUI_LOGOUT,
|
|
GUI_HTTP,
|
|
GUI_SET_ETHERNET_ADDR,
|
|
GUI_SET_LOGO,
|
|
GUI_POLL_EVENT,
|
|
GUI_GET_EVENT,
|
|
GUI_GET_HW_MONITOR,
|
|
GUI_SMART_TEST,
|
|
GUI_SET_TIME,
|
|
GUI_SNMP,
|
|
GUI_MISC,
|
|
|
|
GUI_GET_INFO_R = 0x20,
|
|
GUI_GET_INFO_V,
|
|
GUI_GET_INFO_P,
|
|
GUI_GET_INFO_S,
|
|
GUI_CLEAR_EVENT,
|
|
|
|
GUI_MUTE_BEEPER = 0x30,
|
|
GUI_BEEPER_SETTING,
|
|
GUI_SET_PASSWORD,
|
|
GUI_HOST_INTERFACE_MODE,
|
|
GUI_REBUILD_PRIORITY,
|
|
GUI_MAX_ATA_MODE,
|
|
GUI_RESET_CONTROLLER,
|
|
GUI_COM_PORT_SETTING,
|
|
GUI_NO_OPERATION,
|
|
GUI_DHCP_IP,
|
|
|
|
GUI_CREATE_PASS_THROUGH = 0x40,
|
|
GUI_MODIFY_PASS_THROUGH,
|
|
GUI_DELETE_PASS_THROUGH,
|
|
GUI_IDENTIFY_DEVICE,
|
|
|
|
GUI_CREATE_RAIDSET = 0x50,
|
|
GUI_DELETE_RAIDSET,
|
|
GUI_EXPAND_RAIDSET,
|
|
GUI_ACTIVATE_RAIDSET,
|
|
GUI_CREATE_HOT_SPARE,
|
|
GUI_DELETE_HOT_SPARE,
|
|
|
|
GUI_CREATE_VOLUME = 0x60,
|
|
GUI_MODIFY_VOLUME,
|
|
GUI_DELETE_VOLUME,
|
|
GUI_START_CHECK_VOLUME,
|
|
GUI_STOP_CHECK_VOLUME
|
|
};
|
|
|
|
// Application specific
|
|
enum
|
|
{
|
|
GUI_RAW_WRITE = 0xEE,
|
|
GUI_SET_ENCLOSURE_UNIT_SERIAL,
|
|
GUI_GET_TCPPORT,
|
|
GUI_GET_COMATTR,
|
|
|
|
// status code
|
|
GUI_WOULDBLOCK,
|
|
GUI_TIMEOUT
|
|
};
|
|
/****************************************************************************************/
|
|
|
|
|
|
//
|
|
// Library returned status
|
|
//
|
|
#define ARC_STATUS int
|
|
#define ARC_SUCCESS 0x00 // Operation succeeded
|
|
#define ARC_FAILURE 0x01 // Operation failed
|
|
#define ARC_RETURN_FRAME_ERROR 0x02 // The library does not recognize the returned data
|
|
// (including invalid data header, length or checksum, etc...)
|
|
#define ARC_INVALID_COM_HANDLE 0x03 // Invalid RS-232 handle
|
|
#define ARC_DATA_TRANSMIT_ERROR 0x04 // Failed to write to media
|
|
#define ARC_DATA_RECEIVE_ERROR 0x05 // Failed to read from media( no response from raid subsystem)
|
|
#define ARC_PARAMETER_ERROR 0x06 // The wrong parameter(s)
|
|
#define ARC_OPENFILE_ERROR 0x07 // Failed to open file
|
|
#define ARC_PASSWORD_REQUIRED 0x08 // Password required
|
|
#define ARC_INVALID_PASSWORD 0x09 // Wrong password
|
|
#define ARC_INSUFFICIENT_MEM 0x0A // Memory too small
|
|
#define ARC_CANT_ALLOC_MEM 0x0B // Failed to allocate necessary memory
|
|
#define ARC_BUFFER_TOO_SMALL 0x0C // The buffer is too small to put the returned data
|
|
#define ARC_SOCKET_ERROR 0x0D // Socket error
|
|
#define ARC_INVALID_SOCKET 0x0E // Invalid socket
|
|
#define ARC_INIT_COM_ERROR 0x0F // Failed to open COM port
|
|
#define ARC_SOCKET_STARTUP_ERROR 0x10 // Failed to init socket
|
|
#define ARC_INVALID_INTERFACE 0x11 // Invalid interface
|
|
#define ARC_NO_SUCH_DEVICE 0x12 // Device not found( including raidset, volumeset, physical drive )
|
|
#define ARC_DATA_TRANSMIT_TIMEOUT 0x13 // Failed to write to media in a given time
|
|
#define ARC_DATA_RECEIVE_TIMEOUT 0x14 // Failed to read from media in a given time
|
|
#define ARC_UNKNOWN_ERROR 0x3F // Unknown error
|
|
|
|
// RAID controller returned status
|
|
#define GUI_OK 0x41 // Operation successed
|
|
#define GUI_RAIDSET_NOT_NORMAL 0x42
|
|
#define GUI_VOLUMESET_NOT_NORMAL 0x43
|
|
#define GUI_NO_RAIDSET 0x44
|
|
#define GUI_NO_VOLUMESET 0x45
|
|
#define GUI_NO_PHYSICAL_DRIVE 0x46
|
|
#define GUI_PARAMETER_ERROR 0x47
|
|
#define GUI_UNSUPPORTED_COMMAND 0x48
|
|
#define GUI_DISK_CONFIG_CHANGED 0x49
|
|
#define GUI_INVALID_PASSWORD 0x4a
|
|
#define GUI_NO_DISK_SPACE 0x4b
|
|
#define GUI_CHECKSUM_ERROR 0x4c
|
|
#define GUI_PASSWORD_REQUIRED 0x4d
|
|
#define GUI_NO_MORE_DATA 0x4e // Internal use only
|
|
#define GUI_INTERNAL_ERROR 0x4f
|
|
#define GUI_FIRMWARE_CRC_ERROR 0x50
|
|
#define GUI_FIRMWARE_INVALID 0x51
|
|
#define GUI_FIRMWARE_UPDATE_FAILED 0x52
|
|
#define GUI_FIRMWARE_NO_HDD 0x53
|
|
#define GUI_END_OF_DATA 0x54
|
|
|
|
|
|
// flags of getting event
|
|
#define FLAG_ALL 0
|
|
#define FLAG_NEW 1
|
|
|
|
// Beeper settings
|
|
#define BEEPER_ON 1
|
|
#define BEEPER_OFF 0
|
|
|
|
// Host Mode
|
|
#define RAID 0
|
|
#define JBOD 1
|
|
|
|
|
|
#define DISABLE 0
|
|
#define ENABLE 1
|
|
|
|
#define ON 0
|
|
#define OFF 1
|
|
|
|
|
|
#define TYPE_64BIT_LBA 0
|
|
#define TYPE_4K_FOR_WIN 1
|
|
|
|
|
|
// host type interface
|
|
// HostType
|
|
#define HOST_PCI 1
|
|
#define HOST_PCIExpress 2
|
|
#define HOST_PATA 3
|
|
#define HOST_SATA1 4
|
|
#define HOST_SATA2 5
|
|
#define HOST_SCSI160 6
|
|
#define HOST_SCSI320 7
|
|
#define HOST_Fibre2G 8
|
|
#define HOST_Fibre4G 9
|
|
#define HOST_SAS 10
|
|
|
|
// TargetType
|
|
#define TARGET_PATA 1
|
|
#define TARGET_SATA 2
|
|
#define TARGET_SAS 3
|
|
#define TARGET_Fibre 4
|
|
|
|
|
|
// COM port attributes
|
|
typedef struct sCOM_ATTR
|
|
{
|
|
BYTE comBaudRate; // BaudRate: 0/1/2/3/4/5/6/7 (1200/2400/4800/9600/19200/38400/57600/115200)
|
|
BYTE comDataBits; // DataBit: always 1 (8 bits)
|
|
BYTE comStopBits; // StopBit: (0:1, 1:2 stop bits)
|
|
BYTE comParity; // Parity: always 0 (no parity)
|
|
BYTE comFlowControl; // FlowControl: always 0 (no flow control)
|
|
} sCOM_ATTR, *pCOM_ATTR;
|
|
|
|
// Rebuild priority
|
|
enum _REBUILD_PRIORITY
|
|
{
|
|
REBUILD_PRIORITY_ULOW, // Ultra Low(5%)
|
|
REBUILD_PRIORITY_LOW, // Low(20%)
|
|
REBUILD_PRIORITY_MEDIUM, // Medium(50%)
|
|
REBUILD_PRIORITY_HIGH, // High(80%)
|
|
TOTAL_REBUILD_PRIORITY
|
|
};
|
|
|
|
typedef struct sSYSTEM_INFO
|
|
{
|
|
BYTE gsiVendorName[40]; // Vendor name
|
|
BYTE gsiSerialNumber[16]; // Serial number
|
|
BYTE gsiFirmVersion[16]; // Version of firmware
|
|
BYTE gsiBootVersion[16]; // Version of boot
|
|
BYTE gsiMbVersion[16]; // Version of MBR(Master Boot Record)
|
|
BYTE gsiModelName[8]; // Model name
|
|
BYTE gsiLocalIp[4]; // Static IP if DHCP disabled
|
|
BYTE gsiCurrentIp[4]; // Current IP Address, the value is either assigned by DHCP server if DHCP enabled or static IP if DHCP disabled.
|
|
DWORD gsiTimeTick; // Raid subsystem current time tick
|
|
DWORD gsiCpuSpeed; // CPU speed ( in MHz )
|
|
DWORD gsiICache; // CPU internal Instruction cache size ( in bytes )
|
|
DWORD gsiDCache; // CPU internal Data Cache size ( in bytes )
|
|
DWORD gsiSCache; // CPU secondary cache size ( in bytes )
|
|
DWORD gsiMemorySize; // Memory size ( in MBs )
|
|
DWORD gsiMemorySpeed; // Memory speed ( in MHz )
|
|
DWORD gsiEvents; // # of IDE events supported
|
|
BYTE gsiMacAddress[6]; // MAC address if ethernet support
|
|
BYTE gsiDhcp; // 0: DHCP function disabled, 1: DHCP function enabled
|
|
BYTE gsiBeeper; // 0: Beeper disabled, 1: Beeper enabled
|
|
BYTE gsiChannelUsage; // 0: RAID , 1: JBOD
|
|
BYTE gsiMaxAtaMode; // Max ATA mode
|
|
BYTE gsiSdramEcc; // 1: If ECC enabled
|
|
BYTE gsiRebuildPriority; // Initialize/rebuild/migration priority
|
|
sCOM_ATTR gsiComA; // Attribute of COM1
|
|
sCOM_ATTR gsiComB; // Attribute of COM2
|
|
BYTE gsiIdeChannels; // # of IDE channels supported
|
|
BYTE gsiScsiHostChannels; // # of SCSI host channels supported
|
|
BYTE gsiIdeHostChannels; // # of IDE host channels supported
|
|
BYTE gsiMaxVolumeSet; // # of VolumeSets supported
|
|
BYTE gsiMaxRaidSet; // # of RaidSet supported
|
|
BYTE gsiEtherPort; // 1: If ethernet port supported
|
|
BYTE gsiRaid6Engine; // 1: Raid6 engine supported
|
|
BYTE gsiRs232Snmp; // 1: SNMP through RS232
|
|
BYTE gsiMIB_1;
|
|
BYTE gsiMIB_2;
|
|
DWORD gsiEnterpriseNum; // Enterprise number of SNMP
|
|
BYTE gsiHostType; // Host type
|
|
BYTE gsiTargetType; // Target type
|
|
BYTE gsiInBandEnable; // 1: If Inband enabled
|
|
BYTE gsiInBandChannel; // The SCSI channel of inband device
|
|
BYTE gsiInBandId; // The SCSI ID of inband device
|
|
BYTE gsiNumberEnclosures; // # of Enclosures supported(SAS only)
|
|
BYTE gsiR5060Supported; // 1: Raid Level30/50/60 supported
|
|
BYTE gsiRes[61]; //
|
|
} sSYSTEM_INFO, *pSYSTEM_INFO;
|
|
|
|
|
|
|
|
|
|
//=======================================================
|
|
// Definitions of raidset status
|
|
//=======================================================
|
|
#define RAID_NORMAL 0x01 // Raid set in use
|
|
#define RAID_COMPLETE 0x04 // 0: If incomplete
|
|
#define RAID_PASSTHROUGH 0x80 // Pass through raid set
|
|
|
|
|
|
typedef struct sGUI_RAIDSET
|
|
{
|
|
BYTE grsRaidSetName[16]; // 16 bytes raidset name
|
|
DWORD grsCapacity; // Minimum capacity in blocks required for each disk (member disk's minimum capacity)
|
|
DWORD grsCapacityX; // Reserved for 64 bit extension
|
|
DWORD grsFailMask; // Bit mask to indicate the failed drive (bit0 -- drive 0, bit1 -- drive 1 ....)
|
|
BYTE grsDevArray[32]; // Array for member disk's channel#
|
|
BYTE grsMemberDevices; // Number of member disks in this raid set
|
|
BYTE grsNewMemberDevices; // New number of disks in this raid set (in case of raid EXPANDing)
|
|
BYTE grsRaidState; // Current state of RAID set
|
|
BYTE grsVolumes; // # of volumes created in this raid set
|
|
BYTE grsVolumeList[16]; // Array of VOLUME NUMBER of the created volumes in this raid set
|
|
BYTE grsRes1; // Reserved
|
|
BYTE grsRes2; // Reserved
|
|
BYTE grsRes3; // Reserved
|
|
BYTE grsFreeSegments; // # of free segment in this raid set
|
|
DWORD grsRawStripes[8]; // Free segment array, each segment is 0x200 blocks for each member disk
|
|
DWORD grsRes4; // Reserved
|
|
DWORD grsRes5; // Reserved
|
|
DWORD grsRes6; // Reserved
|
|
BYTE grsVolumeListX[112]; // Array of VOLUME NUMBER of the created volumes in this raid set
|
|
BYTE grsDevEncArray[32]; // Array for member enclosure#
|
|
} sGUI_RAIDSET, *pGUI_RAIDSET;
|
|
|
|
|
|
|
|
|
|
|
|
//=======================================================
|
|
// Definitions of volume status
|
|
// Array status == OR of all of its volumes
|
|
// gvsVolumeStatus
|
|
//=======================================================
|
|
#define VOLUME_NORMAL 0x00
|
|
#define VOLUME_INITIALIZING 0x01
|
|
#define VOLUME_FAILED 0x02
|
|
#define VOLUME_MIGRATING 0x04
|
|
#define VOLUME_REBUILDING 0x08
|
|
#define VOLUME_NEED_INIT 0x10
|
|
#define VOLUME_NEED_MIGRATE 0x20
|
|
#define VOLUME_INIT_FLAG 0x40
|
|
#define VOLUME_NEED_REGEN 0x80
|
|
#define VOLUME_CHECKING 0x100
|
|
#define VOLUME_NEED_CHECK 0x200
|
|
#define VOLUME_MIGLBA_INVALID 0x400
|
|
#define VOLUME_MIGLBA_FAILED 0x800
|
|
#define VOLUME_CHECK_NO_SCRUB 0x1000
|
|
#define VOLUME_CHECK_NO_REGEN 0x2000
|
|
|
|
//=======================================================
|
|
// Definitions of volume state
|
|
// gvsVolState
|
|
//=======================================================
|
|
#define VOLUME_R5060_VOLUME 0x000100 // The volume is a member of another volume which raidlevel 30/50/60
|
|
#define VOLUME_R5060_PARENT 0x100000 // The volume is a root volume of raidlevel 30/50/60
|
|
|
|
//=======================================================
|
|
// Definitions of volume type
|
|
//=======================================================
|
|
#define VOLUME_TYPE_STRIPING 0 // Striping
|
|
#define VOLUME_TYPE_MIRROR 1 // Mirror
|
|
#define VOLUME_TYPE_RAID3 2 // RAID 3 volume
|
|
#define VOLUME_TYPE_RAID5 3 // RAID 5
|
|
#define VOLUME_TYPE_RAID6 4 // RAID 6
|
|
#define VOLUME_TYPE_PASSTHROUGH 5 // Pass through volume
|
|
|
|
//=======================================================
|
|
// Definitions of volume stripe size
|
|
//=======================================================
|
|
#define STRIPE_SIZE_4K 0
|
|
#define STRIPE_SIZE_8K 1
|
|
#define STRIPE_SIZE_16K 2
|
|
#define STRIPE_SIZE_32K 3
|
|
#define STRIPE_SIZE_64K 4
|
|
#define STRIPE_SIZE_128K 5
|
|
|
|
enum _SCSI_SPEED_MODE
|
|
{
|
|
SCSI_SPEED_ASYNC = 0,
|
|
SCSI_SPEED_20,
|
|
SCSI_SPEED_40,
|
|
SCSI_SPEED_80,
|
|
SCSI_SPEED_160,
|
|
TOTAL_SCSI_SPEED
|
|
};
|
|
|
|
enum _IDE_SPEED_MODE
|
|
{
|
|
IDE_SPEED_33 = 0,
|
|
IDE_SPEED_66,
|
|
IDE_SPEED_100,
|
|
IDE_SPEED_133,
|
|
TOTAL_IDE_SPEED
|
|
};
|
|
|
|
|
|
enum _SATA_SPEED_MODE
|
|
{
|
|
SATA_SPEED_150 = 0,
|
|
SATA_SPEED_150NCQ,
|
|
SATA_SPEED_300,
|
|
SATA_SPEED_300NCQ,
|
|
TOTAL_SATA_SPEED
|
|
};
|
|
|
|
|
|
#define BACKGROUND_INIT 0
|
|
#define FOREGROUND_INIT 1
|
|
|
|
enum _UDMA_MODE
|
|
{
|
|
UDMA_MODE_0 = 0, // Ultra DMA Mode 0 235ns 16.7 MB/s ATA-4¡BUltra ATA/16
|
|
UDMA_MODE_1, // Ultra DMA Mode 1 160ns 25 MB/s ATA-4¡BUltra ATA/25
|
|
UDMA_MODE_2, // Ultra DMA Mode 2 120ns 33.3 MB/s ATA-4¡BUltra ATA/33
|
|
UDMA_MODE_3, // Ultra DMA Mode 3 90ns 44.4 MB/s ATA-5¡BUltra ATA/44
|
|
UDMA_MODE_4, // Ultra DMA Mode 4 60ns 66.6 MB/s ATA-5¡BUltra ATA/66
|
|
UDMA_MODE_5, // Ultra DMA Mode 5 40ns 100 MB/s ATA-6¡BUltra ATA/100
|
|
UDMA_MODE_6, // Ultra DMA Mode 6 30ns 133MB/s ATA-7¡BUltra ATA/133
|
|
TOTAL_UDMA_MODE
|
|
};
|
|
|
|
|
|
typedef struct sGUI_VOLUMESET
|
|
{
|
|
BYTE gvsVolumeName[16]; // 16 bytes volumeset name
|
|
DWORD gvsCapacity; // Volume Capacity (in blocks)
|
|
DWORD gvsCapacityX; // Reserved for 64 bits
|
|
DWORD gvsFailMask; // Failed mask for the volume (same as raidset)
|
|
DWORD gvsStripeSize; // (value in blocks) 8--4K, 16--8K, 32--16K, 64--32K, 128--64K, 256--128K
|
|
DWORD gvsNewFailMask; // For internal use only
|
|
DWORD gvsNewStripeSize; // New stripe size ( used for MIGRATION)
|
|
DWORD gvsVolumeStatus; // See above ( volume status )
|
|
DWORD gvsProgress; // Progress for the volume if in (initializing/rebuilding/migrating)
|
|
sSCSI_ATTR gvsScsi; // SCSI attribute
|
|
BYTE gvsMemberDisks; // # of member disks
|
|
BYTE gvsRaidLevel; // Raid Level of this volume
|
|
BYTE gvsNewMemberDisks; // Used for migration
|
|
BYTE gvsNewRaidLevel; // Used for migration
|
|
BYTE gvsRaidSetNumber; // Raid set number that the volumeset belongs to
|
|
BYTE gvsVolState0; // Reserved
|
|
DWORD gvsHostSpeed; // Reserved
|
|
DWORD gvsVolState; // See above( volume state )
|
|
BYTE gvsVolArray[16]; // Child-volume table
|
|
BYTE gvsNum5060Volumes; // Number of volumes in the field 'gvsVolArray'
|
|
BYTE gvsRes[43]; //
|
|
} sGUI_VOLUMESET, *pGUI_VOLUMESET;
|
|
|
|
|
|
|
|
|
|
//=======================================================
|
|
// Definitions of device(disk) status
|
|
//=======================================================
|
|
#define DEV_INITIALIZED 0x80 // Device initialized
|
|
#define DEV_AVAILABLE 0x40 // Device available for use
|
|
#define DEV_HOT_SPARE 0x20 // Device is reserved for HOT SPARE
|
|
#define DEV_FAILED 0x10 // Device failed
|
|
#define DEV_ATTACHED 0x08 // Device attached
|
|
#define DEV_PASSTHROUGH 0x02 // Pass through device
|
|
|
|
//=======================================================
|
|
// Definitions of device(disk) status for SAS controller
|
|
//=======================================================
|
|
#define DEV_SATA_DEVICE 0x100 // Device is a SATA type
|
|
#define DEV_POWER_DOWN 0x200 // Device power down
|
|
|
|
|
|
typedef struct sGUI_PHY_DRV
|
|
{
|
|
BYTE gpdModelName[40]; // Model name
|
|
BYTE gpdSerialNumber[20]; // Serial number
|
|
BYTE gpdFirmRev[8]; // Firmware version
|
|
DWORD gpdCapacity; // Capacity in blocks ( A block = 512 bytes )
|
|
DWORD gpdCapacityX; // Reserved for expansion
|
|
BYTE gpdDeviceState; // See above, for SAS controller: this field is treated as the low-byte of device state
|
|
BYTE gpdPioMode; // For SAS controller: this field is treated as the high-byte of device state
|
|
BYTE gpdCurrentUdmaMode; // Current UDMA mode
|
|
BYTE gpdUdmaMode; // Max supported UDMA mode
|
|
BYTE gpdDriveSelect; // Drive select : master / slave
|
|
BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
|
|
sSCSI_ATTR gpdScsi; // SCSI attributes
|
|
LONG gpdMediaErrorCount; // Media error count
|
|
LONG gpdTimeOutCount; // Timeout count
|
|
u_int64_t gpdSasAddress; // SAS only
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
sSMART_DATA gpdSmart[TOTAL_SMART_ITEMS]; // see sasbase.h 'enum _SMART_ITEMS'
|
|
} sata; // SMART data for SATA disk
|
|
struct
|
|
{
|
|
WORD gpdRotationRPM; // The rotation(RPM) of disk
|
|
WORD gpdTemperature; // The temperature of disk
|
|
WORD gpdSmartSenseCode; // The SMART sense code
|
|
WORD gpdReserved;
|
|
u_int64_t gpdAttribute[TOTAL_SAS_ATTR_ITEMS]; // The SAS disk attributes, see sasbase.h '_SAS_ATTRIBUTE_ITEMS'
|
|
} sas; // Attributes for SAS disk
|
|
} u;
|
|
} sGUI_PHY_DRV, *pGUI_PHY_DRV;
|
|
|
|
|
|
//=======================================================
|
|
// Definition for event buffer
|
|
//=======================================================
|
|
// Event category
|
|
enum
|
|
{
|
|
EVENT_NO_EVENT,
|
|
EVENT_RAIDSET,
|
|
EVENT_VOLUMESET,
|
|
EVENT_DEVICE,
|
|
EVENT_HOST,
|
|
EVENT_HW_MONITOR,
|
|
EVENT_NEW_83782D,
|
|
};
|
|
// Event type
|
|
// 1. RaidSet event
|
|
enum
|
|
{
|
|
RS_EVT_CREATE,
|
|
RS_EVT_DELETE,
|
|
RS_EVT_EXPAND,
|
|
RS_EVT_REBUILD,
|
|
RS_EVT_DEGRADED,
|
|
RS_EVT_NO_EVENT,
|
|
};
|
|
// 2. volumeset event
|
|
enum
|
|
{
|
|
VS_EVT_INITIALIZING,
|
|
VS_EVT_REBUILDING,
|
|
VS_EVT_MIGRATING,
|
|
VS_EVT_CHECKING,
|
|
VS_EVT_COMPLETE_INIT,
|
|
VS_EVT_COMPLETE_REBUILD,
|
|
VS_EVT_COMPLETE_MIGRATING,
|
|
VS_EVT_COMPLETE_CHECKING,
|
|
VS_EVT_CREATE,
|
|
VS_EVT_DELETE,
|
|
VS_EVT_MODIFY,
|
|
VS_EVT_DEGRADED,
|
|
VS_EVT_FAILED,
|
|
VS_EVT_REVIVED,
|
|
|
|
// init/rebuild/migration ABORT & STOP event
|
|
VS_EVT_ABORT_INIT,
|
|
VS_EVT_ABORT_REBUILD,
|
|
VS_EVT_ABORT_MIGRATING,
|
|
VS_EVT_ABORT_CHECKING,
|
|
VS_EVT_STOP_INIT,
|
|
VS_EVT_STOP_REBUILD,
|
|
VS_EVT_STOP_MIGRATING,
|
|
VS_EVT_STOP_CHECKING,
|
|
|
|
VS_EVT_TOTALS
|
|
};
|
|
|
|
#define REBUILD_TYPE_INIT VS_EVT_INITIALIZING
|
|
#define REBUILD_TYPE_REGEN VS_EVT_REBUILDING
|
|
#define REBUILD_TYPE_MIG VS_EVT_MIGRATING
|
|
#define REBUILD_TYPE_CHECK VS_EVT_COMPLETE_INIT
|
|
// IDE device event
|
|
enum
|
|
{
|
|
DEV_EVT_ADDED,
|
|
DEV_EVT_REMOVED,
|
|
DEV_EVT_READ_ERROR,
|
|
DEV_EVT_WRITE_ERROR,
|
|
DEV_EVT_ATA_ECC_ERROR,
|
|
DEV_EVT_ATA_CHANGE_MODE,
|
|
DEV_EVT_TIMEOUT,
|
|
DEV_EVT_MARK_FAILED,
|
|
DEV_EVT_PCI_ERROR,
|
|
DEV_EVT_SMART_FAILED,
|
|
DEV_EVT_CREATE_PASS,
|
|
DEV_EVT_MODIFY_PASS,
|
|
DEV_EVT_DELETE_PASS,
|
|
DEV_EVT_TOTALS
|
|
};
|
|
|
|
// SCSI bus event
|
|
enum
|
|
{
|
|
SCSI_EVT_RESET,
|
|
SCSI_EVT_PARITY,
|
|
SCSI_BUS_MODE_CHANGE,
|
|
SCSI_EVT_TOTALS
|
|
};
|
|
|
|
// Hw monitor event
|
|
enum
|
|
{
|
|
HW_EVT_SDRAM_1BIT_ECC,
|
|
HW_EVT_SDRAM_MULTI_BIT_ECC,
|
|
HW_EVT_TEMP_CONTROLLER,
|
|
HW_EVT_TEMP_BACKPLANE,
|
|
HW_EVT_VOLTAGE15,
|
|
HW_EVT_VOLTAGE3,
|
|
HW_EVT_VOLTAGE5,
|
|
HW_EVT_VOLTAGE12,
|
|
HW_EVT_VOLTAGE1_3,
|
|
HW_EVT_VOLTAGE2_5,
|
|
HW_EVT_VOLTAGE1_25,
|
|
HW_EVT_POWER1_FAILED,
|
|
HW_EVT_FAN1_FAILED,
|
|
HW_EVT_POWER2_FAILED,
|
|
HW_EVT_FAN2_FAILED,
|
|
HW_EVT_POWER3_FAILED,
|
|
HW_EVT_FAN3_FAILED,
|
|
HW_EVT_POWER4_FAILED,
|
|
HW_EVT_FAN4_FAILED,
|
|
HW_EVT_UPS_POWER_LOSS,
|
|
// Add to log H/W monitor recovered
|
|
HW_EVT_TEMP_CONTROLLER_R,
|
|
HW_EVT_TEMP_BACKPLANE_R,
|
|
HW_EVT_VOLTAGE15_R,
|
|
HW_EVT_VOLTAGE3_R,
|
|
HW_EVT_VOLTAGE5_R,
|
|
HW_EVT_VOLTAGE12_R,
|
|
HW_EVT_VOLTAGE1_3_R,
|
|
HW_EVT_VOLTAGE2_5_R,
|
|
HW_EVT_VOLTAGE1_25_R,
|
|
HW_EVT_POWER1_RECOVERED,
|
|
HW_EVT_FAN1_RECOVERED,
|
|
HW_EVT_POWER2_RECOVERED,
|
|
HW_EVT_FAN2_RECOVERED,
|
|
HW_EVT_POWER3_RECOVERED,
|
|
HW_EVT_FAN3_RECOVERED,
|
|
HW_EVT_POWER4_RECOVERED,
|
|
HW_EVT_FAN4_RECOVERED,
|
|
HW_EVT_UPS_POWER_RECOVERED,
|
|
|
|
HW_EVT_SYSTEM_RESTARTED,
|
|
HW_EVT_TEST,
|
|
// added for battery backup
|
|
HW_EVT_SYSTEM_RECOVERED, // return from BBM
|
|
HW_EVT_TOTALS
|
|
};
|
|
|
|
enum
|
|
{
|
|
GHM_RECOVER,
|
|
GHM_OVER_TEMP,
|
|
GHM_FAILED,
|
|
GHM_UNDER_VOLTAGE,
|
|
GHM_OVER_VOLTAGE,
|
|
GHM_DISCOVERED,
|
|
GHM_LOST_MIG, // record migration point maybe lost
|
|
GHM_OFFLINED,
|
|
GHM_HTTP_LOGIN,
|
|
GHM_TELNET_LOGIN,
|
|
GHM_VT100_LOGIN,
|
|
GHM_GUI_LOGIN,
|
|
GHM_FC_LINK_UP,
|
|
GHM_FC_LINK_DOWN,
|
|
GHM_16BYTES_CDB,
|
|
GHM_INIT_LBA, // restart init LBA
|
|
GHM_REBUILD_LBA, // restart rebuild LBA
|
|
GHM_MIGRATE_LBA, // restart migration LBA
|
|
GHM_ONE_BIT_ECC,
|
|
GHM_MULTI_BIT_ECC,
|
|
GHM_OFF,
|
|
GHM_UNKNOWN,
|
|
GHM_ADDED,
|
|
GHM_REMOVED,
|
|
GHM_TOTALS
|
|
};
|
|
|
|
#if defined(__BIG_ENDIAN__)
|
|
typedef union sSYS_TIME
|
|
{
|
|
struct
|
|
{
|
|
DWORD tmFlag:1;
|
|
DWORD tmMonth:4;
|
|
DWORD tmYear:5;
|
|
DWORD tmDate:5;
|
|
DWORD tmHour:5;
|
|
DWORD tmMinute:6;
|
|
DWORD tmSecond:6;
|
|
} u;
|
|
struct
|
|
{
|
|
int32_t tmFlag:1;
|
|
int32_t tmTick:31;
|
|
} x;
|
|
} sSYS_TIME, *pSYS_TIME;
|
|
|
|
#else
|
|
typedef union sSYS_TIME
|
|
{
|
|
struct
|
|
{
|
|
DWORD tmSecond:6;
|
|
DWORD tmMinute:6;
|
|
DWORD tmHour:5;
|
|
DWORD tmDate:5;
|
|
DWORD tmYear:5;
|
|
DWORD tmMonth:4;
|
|
DWORD tmFlag:1;
|
|
} u;
|
|
struct
|
|
{
|
|
int32_t tmTick:31;
|
|
int32_t tmFlag:1;
|
|
} x;
|
|
} sSYS_TIME, *pSYS_TIME;
|
|
// If (tmFlag == 1) ==> use YY/MM/DD/HH/MM/SS else use time tick
|
|
#endif
|
|
|
|
/* event object data structure */
|
|
typedef struct sEVET_DATA
|
|
{
|
|
BYTE evtCategory; // Event category
|
|
BYTE evtType; // Event type
|
|
BYTE evtChannel; // Event channel
|
|
BYTE evtFlag; // Addition data flag
|
|
int32_t evtTime; // Occurred time
|
|
DWORD evtData1; // Additional data1
|
|
DWORD evtData2; // Additional data2
|
|
BYTE evtStr[16]; // string for event
|
|
} sEVENT_DATA, *pEVENT_DATA; // total 32 bytes
|
|
|
|
|
|
/* strings for event category */
|
|
static const char *eventCat[] =
|
|
{
|
|
"NO_EVENT",
|
|
"RAIDSET",
|
|
"VOLUMESET",
|
|
"DEVICE",
|
|
"HOST",
|
|
"H/W MONITOR"
|
|
};
|
|
|
|
/* strings for device event */
|
|
static const char *htmDevEvent[] =
|
|
{
|
|
"Device Inserted",
|
|
"Device Removed",
|
|
"Reading Error",
|
|
"Writing Error",
|
|
"ATA Ecc Error",
|
|
"Change ATA Mode",
|
|
"Time Out Error",
|
|
"Device Failed",
|
|
"PCI Parity Error",
|
|
"Dev Fail (SMART)",
|
|
"PassThrough Disk Created",
|
|
"PassThrough Disk Modified",
|
|
"PassThrough Disk Deleted"
|
|
};
|
|
|
|
/* strings for volumeset event */
|
|
static const char *htmVolEvent[] =
|
|
{
|
|
"Start Initialize",
|
|
"Start Rebuilding",
|
|
"Start Migrating",
|
|
"Start Checking",
|
|
"Complete Init",
|
|
"Complete Rebuild",
|
|
"Complete Migrate",
|
|
"Complete Check",
|
|
"Create Volume",
|
|
"Delete Volume",
|
|
"Modify Volume",
|
|
"Volume Degraded",
|
|
"Volume Failed",
|
|
"Failed Volume Revived",
|
|
"Abort Initialization",
|
|
"Abort Rebuilding",
|
|
"Abort Migration",
|
|
"Abort Checking",
|
|
"Stop Initialization",
|
|
"Stop Rebuilding",
|
|
"Stop Migration",
|
|
"Stop Checking"
|
|
};
|
|
|
|
/* strings for raidSet event */
|
|
static const char *htmRaidEvent[] =
|
|
{
|
|
"Create RaidSet",
|
|
"Delete RaidSet",
|
|
"Expand RaidSet",
|
|
"Rebuild RaidSet",
|
|
"RaidSet Degraded"
|
|
};
|
|
|
|
/* strings for scsi host event */
|
|
static const char *htmScsiHostEvent[] =
|
|
{
|
|
"SCSI Bus Reset",
|
|
"SCSI Bus Parity",
|
|
"SCSI Bus SE<>LVD"
|
|
};
|
|
|
|
/* strings for ide host event */
|
|
static const char *htmIdeHostEvent[] =
|
|
{
|
|
"IDE Bus Reset",
|
|
"IDE Bus UDMA CRC",
|
|
"SCSI Bus SE<>LVD"
|
|
};
|
|
|
|
/* strings for hardware monitor event */
|
|
static const char *htmHwMonEvent[] =
|
|
{
|
|
"DRAM 1-Bit ECC",
|
|
"DRAM Fatal Error",
|
|
|
|
"Controller Over Temperature",
|
|
"Backplane Over Temperature",
|
|
"1.5V Abnormal",
|
|
"3.3V Abnormal",
|
|
"5V Abnormal",
|
|
"12V Abnormal",
|
|
"1.3V Abnormal",
|
|
"2.5V Abnormal",
|
|
"1.2V or 1.8V or 1.25V Abnormal",
|
|
"Power#1 Failed ",
|
|
"Fan#1 Failed ",
|
|
"Power#2 Failed ",
|
|
"Fan#2 Failed ",
|
|
"Power#3 Failed ",
|
|
"Fan#3 Failed ",
|
|
"Power#4 Failed ",
|
|
"Fan#4 Failed ",
|
|
"UPS ACPower Loss",
|
|
|
|
"Controller Over Temperature Recovered",
|
|
"Backplane Over Temperature Recovered",
|
|
"1.5V Abnormal Recovered",
|
|
"3.3V Abnormal Recovered",
|
|
"5V Abnormal Recovered",
|
|
"12V Abnormal Recovered",
|
|
"1.3V Abnormal Recovered",
|
|
"2.5V Abnormal Recovered",
|
|
"1.2V or 1.8V or 1.25V Abnormal Recovered",
|
|
"Power#1 Failed Recovered",
|
|
"Fan#1 Failed Recovered",
|
|
"Power#2 Failed Recovered",
|
|
"Fan#2 Failed Recovered",
|
|
"Power#3 Failed Recovered",
|
|
"Fan#3 Failed Recovered",
|
|
"Power#4 Failed Recovered",
|
|
"Fan#4 Failed Recovered",
|
|
"UPS ACPower Loss Recovered",
|
|
|
|
"Raid Powered On",
|
|
"Test Event",
|
|
"Power On With Battery Backup"
|
|
};
|
|
|
|
/* strings for new events */
|
|
static const char *htmNewEventStr[] =
|
|
{
|
|
"Recovered",
|
|
"Over Temp.",
|
|
"Failed",
|
|
"Under Voltage",
|
|
"Over Voltage",
|
|
"Discovered",
|
|
"Lost Rebuilding/Migration LBA",
|
|
"Offlined",
|
|
"HTTP Log In",
|
|
"Telnet Log In",
|
|
"VT100 Log In",
|
|
"API Log In",
|
|
"FC Link Up",
|
|
"FC Link Down",
|
|
"In U160 Mode",
|
|
"Restart Init LBA Point",
|
|
"Restart Rebuild LBA Point",
|
|
"Restart Migration LBA Point",
|
|
|
|
"One BIT ECC Error",
|
|
"Multi BIT ECC Error",
|
|
"Off",
|
|
"Unknown Error",
|
|
"Added",
|
|
"Removed"
|
|
};
|
|
|
|
|
|
|
|
|
|
/* event notification level*/
|
|
enum _EVT_LEVEL
|
|
{
|
|
EVT_DISABLE = 0,
|
|
EVT_SERIOUS, // 1 serious event
|
|
EVT_ERROR, // 2 error
|
|
EVT_WARNING, // 3 warning
|
|
EVT_INFO // 4 information
|
|
};
|
|
|
|
/* event notification level for raidset */
|
|
static BYTE raidEventLevel[] =
|
|
{
|
|
EVT_WARNING, //RS_EVT_CREATE,
|
|
EVT_WARNING, //RS_EVT_DELETE,
|
|
EVT_WARNING, //RS_EVT_EXPAND,
|
|
EVT_WARNING, //RS_EVT_REBUILD,
|
|
EVT_SERIOUS //RS_EVT_DEGRADED,
|
|
};
|
|
|
|
/* event notification level for volumeset */
|
|
static BYTE volEventLevel[] =
|
|
{
|
|
EVT_WARNING, //VS_EVT_INITIALIZING,
|
|
EVT_WARNING, //VS_EVT_REBUILDING,
|
|
EVT_WARNING, //VS_EVT_MIGRATING,
|
|
EVT_WARNING, //VS_EVT_CHECKING,
|
|
EVT_WARNING, //VS_EVT_COMPLETE_INIT,
|
|
EVT_WARNING, //VS_EVT_COMPLETE_REBUILD,
|
|
EVT_WARNING, //VS_EVT_COMPLETE_MIGRATING,
|
|
EVT_WARNING, //VS_EVT_COMPLETE_CHECKING,
|
|
EVT_WARNING, //VS_EVT_CREATE,
|
|
EVT_WARNING, //VS_EVT_DELETE,
|
|
EVT_WARNING, //VS_EVT_MODIFY,
|
|
EVT_SERIOUS, //VS_EVT_DEGRADED,
|
|
EVT_SERIOUS, //VS_EVT_FAILED,
|
|
EVT_SERIOUS, //VS_EVT_REVIVED,
|
|
|
|
// init/rebuild/migration ABORT & STOP event
|
|
EVT_WARNING, //VS_EVT_ABORT_INIT,
|
|
EVT_WARNING, //VS_EVT_ABORT_REBUILD,
|
|
EVT_WARNING, //VS_EVT_ABORT_MIGRATING,
|
|
EVT_WARNING, //VS_EVT_ABORT_CHECKING,
|
|
EVT_WARNING, //VS_EVT_STOP_INIT,
|
|
EVT_WARNING, //VS_EVT_STOP_REBUILD,
|
|
EVT_WARNING, //VS_EVT_STOP_MIGRATING,
|
|
EVT_WARNING //VS_EVT_STOP_CHECKING,
|
|
};
|
|
|
|
/* event notification level for disk */
|
|
static BYTE devEventLevel[] =
|
|
{
|
|
EVT_WARNING, //DEV_EVT_ADDED,
|
|
EVT_WARNING, //DEV_EVT_REMOVED,
|
|
EVT_WARNING, //DEV_EVT_READ_ERROR,
|
|
EVT_WARNING, //DEV_EVT_WRITE_ERROR,
|
|
EVT_WARNING, //DEV_EVT_ATA_ECC_ERROR,
|
|
EVT_WARNING, //DEV_EVT_ATA_CHANGE_MODE,
|
|
EVT_WARNING, //DEV_EVT_TIMEOUT,
|
|
EVT_SERIOUS, //DEV_EVT_MARK_FAILED,
|
|
EVT_ERROR, //DEV_EVT_PCI_ERROR,
|
|
EVT_SERIOUS, //DEV_EVT_SMART_FAILED,
|
|
EVT_INFO, //DEV_EVT_CREATE_PASS,
|
|
EVT_INFO, //DEV_EVT_MODIFY_PASS,
|
|
EVT_INFO, //DEV_EVT_DELETE_PASS,
|
|
};
|
|
|
|
/* event notification level for host */
|
|
static BYTE hostEventLevel[] =
|
|
{
|
|
EVT_INFO, //SCSI_EVT_RESET,
|
|
EVT_INFO, //SCSI_EVT_PARITY,
|
|
EVT_INFO //SCSI_BUS_MODE_CHANGE,
|
|
};
|
|
|
|
/* event notification level for hardware monitor */
|
|
static BYTE hwEventLevel[] =
|
|
{
|
|
EVT_SERIOUS, //HW_EVT_SDRAM_1BIT_ECC,
|
|
EVT_SERIOUS, //HW_EVT_SDRAM_MULTI_BIT_ECC,
|
|
EVT_SERIOUS, //HW_EVT_TEMP_CONTROLLER,
|
|
EVT_SERIOUS, //HW_EVT_TEMP_BACKPLANE,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE15,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE3,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE5,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE12,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE1_3,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE2_5,
|
|
EVT_SERIOUS, //HW_EVT_VOLTAGE1_25,
|
|
EVT_SERIOUS, //HW_EVT_POWER1_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_FAN1_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_POWER2_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_FAN2_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_POWER3_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_FAN3_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_POWER4_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_FAN4_FAILED,
|
|
EVT_SERIOUS, //HW_EVT_UPS_POWER_LOSS,
|
|
// Add to log H/W monitor recovered
|
|
EVT_ERROR, //HW_EVT_TEMP_CONTROLLER_R,
|
|
EVT_ERROR, //HW_EVT_TEMP_BACKPLANE_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE15_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE3_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE5_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE12_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE1_3_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE2_5_R,
|
|
EVT_ERROR, //HW_EVT_VOLTAGE1_25_R,
|
|
EVT_ERROR, //HW_EVT_POWER1_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_FAN1_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_POWER2_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_FAN2_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_POWER3_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_FAN3_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_POWER4_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_FAN4_RECOVERED,
|
|
EVT_ERROR, //HW_EVT_UPS_POWER_RECOVERED,
|
|
|
|
EVT_WARNING, //HW_EVT_SYSTEM_RESTARTED,
|
|
EVT_SERIOUS, //HW_EVT_TEST_EVENT,
|
|
// added for battery backup
|
|
EVT_ERROR //HW_EVT_SYSTEM_RECOVERED,
|
|
};
|
|
|
|
|
|
/* event notification level for new event */
|
|
static BYTE newEventLevel[] =
|
|
{
|
|
EVT_ERROR, // 0 GHM_RECOVER
|
|
EVT_SERIOUS, // 1 GHM_OVER_TEMP
|
|
EVT_SERIOUS, // 2 GHM_FAILED
|
|
EVT_SERIOUS, // 3 GHM_UNDER_VOLTAGE
|
|
EVT_SERIOUS, // 4 GHM_OVER_VOLTAGE
|
|
EVT_ERROR, // 5 GHM_DISCOVERED
|
|
EVT_SERIOUS, // 6 GHM_LOST_MIG
|
|
EVT_SERIOUS, // 7 GHM_RESTART_LBA // not used
|
|
EVT_ERROR, // 8 GHM_HTTP_LOGIN
|
|
EVT_ERROR, // 9 GHM_TELNET_LOGIN
|
|
EVT_ERROR, // 10 GHM_VT100_LOGIN
|
|
EVT_ERROR, // 11 GHM_GUI_LOGIN
|
|
EVT_INFO, // 12 GHM_FC_LINK_UP
|
|
EVT_INFO, // 13 GHM_FC_LINK_DOWN
|
|
|
|
EVT_ERROR, // 14 GHM_16BYTES_CDB,
|
|
EVT_SERIOUS, // 15 GHM_INIT_LBA, // restart init LBA
|
|
EVT_SERIOUS, // 16 GHM_REBUILD_LBA, // restart rebuild LBA
|
|
EVT_SERIOUS // 17 GHM_MIGRATE_LBA // restart migration LBA
|
|
|
|
};
|
|
|
|
|
|
/* event level string */
|
|
static const char *eventWLevel[] =
|
|
{
|
|
"DISABLE",
|
|
"URGENT", // EVT_SERIOUS
|
|
"SERIOUS", // EVT_ERROR
|
|
"WARNING", // EVT_WARNING
|
|
"INFORMATIONAL" // EVT_INFO
|
|
};
|
|
|
|
|
|
|
|
#define UPS_AC_POWER_LOSS 0x03
|
|
#define UPS_OK 0x07
|
|
|
|
|
|
// Battery status
|
|
// 0--100 : battery charging status (percentage)
|
|
// 255 : battery not installed
|
|
// 254 : battery failed
|
|
#define BBM_NOT_INSTALLED 255
|
|
#define BBM_FAILED 254
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// HWMON_ITEMS
|
|
// Indicating the ArcGetHWMon(...) how to retrieve hardware information.
|
|
//
|
|
enum
|
|
{
|
|
HWMON_FAN_INFO = 0x01,
|
|
HWMON_VOL_INFO,
|
|
HWMON_TMP_INFO,
|
|
HWMON_PWR_INFO,
|
|
HWMON_UPS_INFO,
|
|
HWMON_BATTERY_INFO, //BBM(Battery Backup Module)
|
|
HWMON_TOTAL
|
|
};
|
|
|
|
typedef struct _HWMON_INFO
|
|
{
|
|
WORD HwItemCount; // item count of hardware( including fans, voltages, temperatures, powers)
|
|
WORD ItemInfo[50]; // item information
|
|
}sHwMonInfo, *pHwMonInfo;
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Hardware monitor information for raid controller excepts ARC-5010 & ARC-6010.
|
|
// ARC-5010 & ARC-6010 should use the "sHwMon5010" data structure instead.
|
|
// Because the number of fans, voltages, temperatures and powers are differ from
|
|
// models of areca except the ARC-5010 & ARC-6010, so we use the flexible data
|
|
// structure instead for different models of areca.
|
|
//
|
|
// Pass the flag above & pointer of the struct _HWMON_INFO to the ArcGetHWMon(...) to
|
|
// retrieve the hardware information.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// For example: Retrieving hardware monitor of fans
|
|
//
|
|
// CArclib al;
|
|
// ARC_STATUS status;
|
|
// sHwMonInfo HwInfo;
|
|
//
|
|
// WinCommInterface *iface = new WinCommInterface();
|
|
// if(!iface->init(0)) // init "COM1"
|
|
// return;
|
|
// status = al.ArcInitSession(iface);
|
|
// if(status != ARC_SUCCESS)
|
|
// {
|
|
// .... handle error .....
|
|
// }
|
|
// status = al.ArcGetHWMon(HWMON_FAN_INFO, &HwInfo);
|
|
//
|
|
// if the status = ARC_SUCCESS, then the contents of HwInfo are:
|
|
// HwInfo.HwItemCount ==> # of fans
|
|
// HwInfo.ItemInfo[0] ==> RPM of 1st fan
|
|
// HwInfo.ItemInfo[1] ==> RPM of 2nd fan
|
|
// ...
|
|
// HwInfo.ItemInfo[HwInfo.HwItemCount - 1] ==> RPM of the last fan
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// For example: Retrieving hardware monitor of voltage
|
|
// status = al.ArcGetHWMon(HWMON_VOL_INFO, &HwInfo);
|
|
// if the status = ARC_SUCCESS, then the contents of HwInfo are:
|
|
// HwInfo.HwItemCount ==> # of voltage items
|
|
// HwInfo.ItemInfo[0] ==> base value of 1st voltage
|
|
// HwInfo.ItemInfo[1] ==> current value of 1st voltage
|
|
// HwInfo.ItemInfo[2] ==> base value of 2nd voltage
|
|
// HwInfo.ItemInfo[3] ==> current value of 2nd voltage
|
|
// ...
|
|
// HwInfo.ItemInfo[HwInfo.HwItemCount * 2 - 2] ==> base value of last voltage
|
|
// HwInfo.ItemInfo[HwInfo.HwItemCount * 2 - 1] ==> current value of last voltage
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// For example: Retrieving hardware monitor of temperature
|
|
// status = al.ArcGetHWMon(HWMON_TMP_INFO, &HwInfo);
|
|
// if the status = ARC_SUCCESS, then the contents of HwInfo are:
|
|
// HwInfo.HwItemCount ==> # of temperature items
|
|
// HwInfo.ItemInfo[0] ==> controller temperature
|
|
// HwInfo.ItemInfo[1] ==> 1st HDD temperature
|
|
// HwInfo.ItemInfo[2] ==> 2nd HDD temperature
|
|
// ...
|
|
// HwInfo.ItemInfo[HwInfo.HwItemCount - 1] ==> last temperature of HDD
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// For example: Retrieving hardware monitor of power
|
|
// status = al.ArcGetHWMon(HWMON_PWR_INFO, &HwInfo);
|
|
// if the status = ARC_SUCCESS, then the contents of HwInfo are:
|
|
// HwInfo.HwItemCount ==> # of power items
|
|
// HwInfo.ItemInfo[0] ==> 1st power state
|
|
// HwInfo.ItemInfo[1] ==> 2nd power state
|
|
// ...
|
|
// HwInfo.ItemInfo[HwInfo.HwItemCount - 1] ==> last power state
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Note: Areca specifications
|
|
// For fans: the fan speed != 0 means fan ok else failed, if the speed == 0xffff then there is
|
|
// no fan connected.
|
|
// For voltages: one voltage has pair values, one for base value(fixed), the other for current
|
|
// voltage value
|
|
// if ( current value > base value * 1.1) or (current value < base value * 0.9)
|
|
// then the voltage is abnormal.
|
|
// For temperature: Including Controller & HDD temperature, the 1st value is controller temperature
|
|
// and the others are HDD temperatures.
|
|
// If the value over 60 degrees of centigrade, then the temperature is abnormal.
|
|
// For power: The value is "1" means the power Ok , "0" means failed.
|
|
//
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Hardware monitor data structure for 5 bays machines only (ARC-5010 & ARC-6010).
|
|
// Since the number of fans, voltages, temperatures and powers of the ARC-5010 & ARC-6010
|
|
// are fixed, so we can use the "fixed" data structure to retrieve hardware information.
|
|
//
|
|
typedef struct _HWMON_5010
|
|
{
|
|
BYTE fans; // # of fans
|
|
BYTE voltages; // # of voltages
|
|
BYTE temps; // # of temperatures ( only Controller & BackPlane )
|
|
BYTE powers; // # of powers
|
|
WORD monFan; // fan speed(in RPM)
|
|
WORD fixed12V; // always 12000mV(12V)
|
|
WORD mon12V; // current voltage of 12000mV
|
|
WORD fixed5V; // always 5000mV(5V)
|
|
WORD mon5V; // current voltage of 5000mV
|
|
WORD fixed3_3V; // always 3300mV(3.3V)
|
|
WORD mon3_3V; // current voltage of 3300mV
|
|
WORD fixed1_5V; // always 1500mV(1.5V)
|
|
WORD mon1_5V; // current voltage of 1500mV
|
|
BYTE monCtrlTemp; // current temperature of contoller(in degrees centigrade)
|
|
BYTE monBkPlaneTemp; // current temperature of backplane(in degrees centigrade)
|
|
BYTE reserved[2]; // not use
|
|
} sHwMon5010, *pHwMon5010;
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Volumeset capabilities pass into ArcCreateVolSet(...)
|
|
//
|
|
typedef struct _VOLUMESET_CAP
|
|
{
|
|
DWORD structs_size; // size of _VOLUMESET_CAP structure
|
|
BYTE raid; // RAIDSet Number that volumeset belongs to.
|
|
char volname[16]; // volume Set Name
|
|
double capacity; // volume capacity size ( in GBs )
|
|
BYTE raidlevel; // raid level
|
|
BYTE stripsize; // stripe size (0/1/2/3/4/5->4/8/16/32/64/128K)
|
|
BYTE channel; // channel#
|
|
BYTE id; // ID#
|
|
BYTE lun; // LUN#
|
|
BOOL tag; // Enable tag queue(1 : enabled)
|
|
BOOL cache; // Enable cache(1 : enabled)
|
|
BYTE speed; // speed (0/1/2/3/4->async/20/40/80/160 for scsi)
|
|
// (0/1/2/3/4->33/66/100/133/150 for IDE)
|
|
BYTE quickinit; //0:background init, 1:foreground init
|
|
}sVolumeSetCap, *pVolumeSetCap;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// New volumeset capabilities pass into ArcModifyVolSet(...)
|
|
//
|
|
typedef struct _NEW_VOLUMESET_CAP
|
|
{
|
|
DWORD structs_size; // size of _NEW_VOLUMESET_CAP structure
|
|
BYTE vol; // VolumeSet Number
|
|
char newVolname[16]; // volume Set Name
|
|
double newCapacity; // volume capacity size in GBs (reserved)
|
|
BYTE newRaidlevel; // raid level
|
|
BYTE newStripsize; // stripe size (0/1/2/3/4/5->4/8/16/32/64/128K)
|
|
BYTE newChannel; // channel#
|
|
BYTE newId; // ID#
|
|
BYTE newLun; // LUN#
|
|
BYTE newTag; // Enable tag queue(1 : enabled)
|
|
BYTE newCache; // Enable cache(1 : enabled)
|
|
BYTE newSpeed; // speed (0/1/2/3/4->async/20/40/80/160 for scsi)
|
|
// (0/1/2/3/4->33/66/100/133/150 for IDE)
|
|
}sNewVolumeSetCap, *pNewVolumeSetCap;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Pass-through disk capabilities pass into ArcCreatePassthroughDisk(...)
|
|
//
|
|
|
|
#define ATA33 0
|
|
#define ATA66 1
|
|
#define ATA100 2
|
|
#define ATA133 3
|
|
#define ATA150 4
|
|
|
|
typedef struct _PASS_DISK_CAP
|
|
{
|
|
DWORD structs_size; // size of _PASS_DISK_CAP structure
|
|
BYTE nDevNum; // device #
|
|
BYTE nScsiCh; // scsi channel (0/1)
|
|
BYTE nScsiId; // scsi id (0-->15)
|
|
BYTE nScsiLun; // scsi lun (0-->7)
|
|
BYTE nTaggedQue; // tagged queue (1 : enabled)
|
|
BYTE nCache; // cache mode (1 : enabled)
|
|
BYTE nMaxSpeed; // (0/1/2/3/4, async/20/40/80/160 for scsi)
|
|
// (0/1/2/3, 33/66/100/133 for ide)
|
|
|
|
}sPassDiskCap, *pPassDiskCap;
|
|
|
|
|
|
typedef struct _VOL_MOD
|
|
{
|
|
BYTE num_vol; // volumeset# to modify
|
|
BYTE newlevel; // new raid level of volumeset
|
|
BYTE newstripesize; // new stripe size of volumeset
|
|
BYTE reserved; // reserved
|
|
}sVolMod, *pVolMod;
|
|
|
|
typedef struct _VOL_MOD_LIST
|
|
{
|
|
BYTE total_vol; // specifies how many volumesets to modify
|
|
sVolMod vol_list[128]; //
|
|
}sVolModList, *pVolModList;
|
|
|
|
|
|
#ifndef OID
|
|
#define OID long
|
|
#endif
|
|
|
|
|
|
typedef struct _NET_INFO
|
|
{
|
|
BYTE dhcp; // 1 for enabled, 0 for disabled
|
|
BYTE local_ip[4]; // for static IP
|
|
BYTE gateway_ip[4]; // for static gateway
|
|
BYTE subnet_mask[4]; // for static subnet mask
|
|
WORD http_port; // current http port#
|
|
WORD telnet_port; // current telnet port#
|
|
WORD smtp_port; // current smtp port#
|
|
BYTE current_ip[4]; // current IP address
|
|
BYTE mac_addr[6]; // MAC address
|
|
BYTE reserved[3];
|
|
}sNET_INFO, *pNET_INFO;
|
|
|
|
typedef struct _SYS_CONFIG_INFO
|
|
{
|
|
BYTE beeper; // beeper setting
|
|
BYTE bgtask_priority; // background task priority setting
|
|
BYTE jbod_raid; // JBOD/RAID setting
|
|
BYTE hdd_read_ahead; // HDD read ahead cache setting
|
|
BYTE stagger_power_on; // stagger power on setting
|
|
BYTE auto_spin_down; // auto spin down
|
|
BYTE empty_hdd_slot_led; // empty hdd slot led setting
|
|
BYTE cpu_fan_detect; // cpu fan detect
|
|
BYTE hdd_smart_status_polling; // hdd smart status polling
|
|
BYTE auto_activate_incomplete_raid; // auto activate incomplete raid
|
|
BYTE disk_write_cache; // disk write cache
|
|
BYTE disk_capacity_truncation; // disk capacity truncation
|
|
BYTE reserved[1];
|
|
}sSYS_CONFIG_INFO, *pSYS_CONFIG_INFO;
|
|
|
|
|
|
// SMTP SUPPORTED
|
|
typedef struct _MAIL_ADDR
|
|
{
|
|
BYTE mailName[20]; // name
|
|
BYTE mailAddress[50]; // mail address, format: abc@company.com
|
|
} sMAIL_ADDR, *pMAIL_ADDR;
|
|
|
|
typedef struct _MAIL_CONFIG
|
|
{
|
|
BYTE ip[4]; // smtp server ip
|
|
BYTE account[50]; // account
|
|
BYTE password[20]; // password
|
|
sMAIL_ADDR sender; // 1 sender address
|
|
sMAIL_ADDR mailto[4]; // 4 mailto address
|
|
DWORD eventlevel; // event notification level(MAIL)
|
|
DWORD notificationfornoevent; // notify user if no event occurs within 24 hours
|
|
}sMAIL_INFO, *pMAIL_INFO;
|
|
|
|
|
|
|
|
// SNMP SUPPORTED
|
|
typedef struct _SNMP_CONFIG
|
|
{
|
|
BYTE ip[3][4]; // snmp trap ip 1, 2, 3
|
|
WORD port[3]; // snmp trap port 1, 2, 3
|
|
BYTE community[16]; // snmp community
|
|
BYTE contact[32]; // snmp sys contact
|
|
BYTE location[32]; // snmp sys location
|
|
BYTE name[32]; // snmp sys name
|
|
DWORD eventlevel; // event notification level(SNMP)
|
|
BYTE reserved[2]; // reserved
|
|
}sSNMP_CONFIG, *pSNMP_CONFIG;
|
|
|
|
|
|
|
|
/*
|
|
typedef struct _DEVICE_PAIR
|
|
{
|
|
BYTE nEncIndex[256]; // the Enclosure index, for non-SAS controller this field is always set to '0'
|
|
BYTE nDrvIndex[256]; // the Drive index
|
|
}sDEVICE_PAIR, *pDEVICE_PAIR;;;
|
|
*/
|
|
|
|
typedef struct _DEVICE_LIST
|
|
{
|
|
int total;
|
|
struct
|
|
{
|
|
BYTE nEncIndex; // the Enclosure index, for non-SAS controller this field is always set to '0'
|
|
BYTE nDrvIndex; // the Drive index
|
|
}device_pair[128];
|
|
}sDEVICE_LIST, *pDEVICE_LIST;
|
|
|
|
|
|
typedef struct _DRV_MAP
|
|
{
|
|
int total;
|
|
struct
|
|
{
|
|
BYTE encindex;
|
|
BYTE drvindex;
|
|
sGUI_PHY_DRV drvInfo;
|
|
}drv[128];
|
|
}sDRV_MAP, *pDRV_MAP;
|
|
|
|
typedef struct _VOL_MAP
|
|
{
|
|
int total;
|
|
struct
|
|
{
|
|
DWORD volindex;
|
|
sGUI_VOLUMESET volInfo;
|
|
}vol[128];
|
|
}sVOL_MAP, *pVOL_MAP;
|
|
|
|
typedef struct _RAID_MAP
|
|
{
|
|
int total;
|
|
struct
|
|
{
|
|
DWORD raidindex;
|
|
sGUI_RAIDSET raidInfo;
|
|
}raid[128];
|
|
}sRAID_MAP, *pRAID_MAP;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CArclib definitions
|
|
// This class is exported from the Areca GUI library
|
|
//
|
|
#ifdef _WIN32
|
|
class ARCLIB_API CArclib
|
|
{
|
|
#else
|
|
class CArclib
|
|
{
|
|
#endif
|
|
// public constructors & destructors
|
|
public:
|
|
CArclib();
|
|
~CArclib();
|
|
|
|
// public member functions for raidsubsystem
|
|
public:
|
|
/************************************************************************************
|
|
Function Name: ArcGetLibVersion
|
|
Function: Get the areca library version
|
|
Input: None.
|
|
Output: None.
|
|
Return Values: 1. Library version
|
|
Note: None.
|
|
************************************************************************************/
|
|
static int ArcGetLibVersion
|
|
(
|
|
void
|
|
);
|
|
|
|
virtual ArcInterface *ArcGetInterface();
|
|
/************************************************************************************
|
|
Function Name: ArcInitSession
|
|
Function: Startup areca library by assigning an interface to it
|
|
Input: 1. ArcInterface
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: This function should be called before any member functions be called
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcInitSession
|
|
(
|
|
IN ArcInterface *Interface
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetSysInfo
|
|
Function: Get the RAID system information
|
|
Input: None.
|
|
Output: 1. Pointer to a sSYSTEM_INFO structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. The memory allocation of the sSYSTEM_INFO structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetSysInfo
|
|
(
|
|
OUT pSYSTEM_INFO pSysInfo
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetRaidSetInfo
|
|
Function: Get the RaidSet information
|
|
Input: 1. RaidSet number
|
|
Output: 1. Pointer to a sGUI_RAIDSET structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. RaidSet number is started from 0 to sSYSTEM_INFO.gsiMaxRaidSet
|
|
2. The memory allocation of the sGUI_RAIDSET structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetRaidSetInfo
|
|
(
|
|
IN BYTE iRaidNumber,
|
|
OUT pGUI_RAIDSET pRaidInfo
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetVolSetInfo
|
|
Function: Get the VolumeSet information
|
|
Input: 1. VolumeSet number
|
|
Output: 1. Pointer to a sGUI_VOLUMESET structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. VolumeSet number is started from 0 to sSYSTEM_INFO.gsiMaxVolumeSet
|
|
2. The memory allocation of the sGUI_VOLUMESET structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetVolSetInfo
|
|
(
|
|
IN BYTE iVolNumber,
|
|
OUT pGUI_VOLUMESET pVolSet
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetPhysicalDriveInfo
|
|
Function: Get the physical drive information
|
|
Input: 1. nDrvNum: Physical dirve number
|
|
Output: 1. Pointer to a sGUI_PHY_DRV structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Drive number is started from 0 to sSYSTEM_INFO.gsiIdeChannels
|
|
2. The memory allocation of the sGUI_PHY_DRV structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetPhysicalDriveInfo
|
|
(
|
|
IN BYTE nDrvNum,
|
|
OUT pGUI_PHY_DRV pPhyDrv
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetHWMon
|
|
Function: Get the H/W monitor status
|
|
Input: 1. Hardware monitor item
|
|
Output: 1. Pointer to a sHwMonInfo structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. HwItem is described by HWMON_ITEMS
|
|
2. The memory allocation of the sHwMonInfo structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetHWMon
|
|
(
|
|
IN DWORD HwItem,
|
|
OUT pHwMonInfo pHwInfo
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetHWMon5010
|
|
Function: Get the H/W monitor status for 5010 & 6010 controller only
|
|
Input: None.
|
|
Output: 1. Pointer to a sHwMon5010 structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. The memory allocation of the sHwMon5010 structure is the
|
|
responsibility of the calling function.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetHWMon5010
|
|
(
|
|
OUT pHwMon5010 pHwMon
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetSerial
|
|
Function: Set serial number of RAID subsystem
|
|
Input: 1. Serial number(null terminate), Max 16 characters
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetSerial
|
|
(
|
|
IN char *szSerialNumber
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetVendor
|
|
Function: Set vendor string of RAID subsystem
|
|
Input: 1. Vendor string(null-terminated), Max 40 characters
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetVendor
|
|
(
|
|
IN char *szVerdorName
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetModel
|
|
Function: Set model string of RAID subsystem
|
|
Input: 1. Model string(null-terminated), Max 8 characters
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetModel
|
|
(
|
|
IN char *szModelName
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetIdentifyString
|
|
Function: Get controller identify string
|
|
Input: None.
|
|
Output: 1. Pointer to a buffer that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. The memory allocation of the buffer is the responsibility of the
|
|
calling function and the buffer must be >= 44 bytes
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetIdentifyString
|
|
(
|
|
OUT char *strBuf
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ARC_STATUS ArcIdentify(void)
|
|
Function: Identify controller
|
|
Input: None
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. If ARC_STATUS == ARC_SUCCESS then the controller found else
|
|
no controller found.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcIdentify
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcMuteBeeper
|
|
Function: Mute the beeper
|
|
Input: None
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled, use ArcChkPassword(...)
|
|
to validate the password.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcMuteBeeper
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetBeeper
|
|
Function: Set the Beeper state
|
|
Input: 1. DISABLE or ENABLE
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled, use ArcChkPassword(...)
|
|
to validate the password.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetBeeper
|
|
(
|
|
IN BYTE bSetting
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetMacAddr
|
|
Function: Set MAC Address of RAID subsystem if ethernet supported
|
|
Input: 1. Standard MAC Address format, must be 6 byte characters.
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Example of MAC Address format,
|
|
char mac[6] = { 0x00, 0x04, 0xD9, 0x60, 0x00, 0x00 };
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetMacAddr
|
|
(
|
|
IN char *MacAddress
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetLogo
|
|
Function: Set the OEM logo
|
|
Input: 1. The buffer contains the context of the image( .jpg or .gif )
|
|
2. The actually size of image, not the buffer size.
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Image size must be <= 7998 bytes
|
|
2. The sequences of set logo:
|
|
2a. Read the image file from disk into the buffer that calling
|
|
function allocated.
|
|
2b. Pass the buffer and image size as the parameter into the
|
|
member function ArcSetLogo(...)
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetLogo
|
|
(
|
|
IN char *imageBuf,
|
|
IN int imageSize
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetTime
|
|
Function: The ArcSetTime method synchronizes the RAID subsystem data-time with
|
|
the host date-time.
|
|
Input: None
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetTime
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSNMP
|
|
Function: Query SNMP value with SNMP standard message ( BER encoding )
|
|
Input: 1. SNMP Message ( BER encoding )
|
|
2. Length of SNMP Message
|
|
Output: 1. SNMP Message returned from RAID subsystem ( BER encoding )
|
|
2. The length of returning SNMP message
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. This member function is available if sSYSTEM_INFO.gsiRs232Snmp were true.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSNMP
|
|
(
|
|
IN char *SNMPMsg,
|
|
IN int length,
|
|
OUT char *SNMPResponse,
|
|
OUT int *ResLength
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSNMPWithOid
|
|
Function: Query SNMP value with OID name
|
|
Input: 1. The OID from the NMS Request
|
|
2. Length of OID( both OID-IN and OID-OUT )
|
|
3. Community string
|
|
4. Exact ( if exact == 1 then SNMPGET else SNMPGETNEXT )
|
|
Output: 1. The OID returned from RAID-Subsystem
|
|
2. SNMP tag of the returning value
|
|
3. The answer of this OID
|
|
4. The length of this answer
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. This member function is available if sSYSTEM_INFO.gsiRs232Snmp were true.
|
|
2. That length serve as a dual purpose in both IN and OUT.
|
|
3. The calling thread has the responsibility of freeing memory of var
|
|
which allocates by ArcSNMPWithOid(...)
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSNMPWithOid
|
|
(
|
|
IN OID *oid,
|
|
IN OUT int *length,
|
|
IN unsigned char *szCommunity,
|
|
OUT OID *ret_oid,
|
|
OUT unsigned char *tag,
|
|
OUT unsigned char **var,
|
|
OUT int *var_len,
|
|
IN unsigned char exact = 0 // default SNMPGETNEXT
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetPassword
|
|
Function: Set the password of the RAID Subsystem
|
|
Input: 1. New password with null-terminated
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. New password string must be <= 15 characters
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetPassword
|
|
(
|
|
IN char *szNewPasswordString
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetHostMode
|
|
Function: Set host mode
|
|
Input: 0->Independent(RAID), 1->cluster(JBOD)
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetHostMode
|
|
(
|
|
IN BYTE bHostMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetRebuildPriority
|
|
Function: Rebuild priority setting
|
|
Input: 0/1/2/3 (low->high)
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetRebuildPriority
|
|
(
|
|
IN BYTE bPriority
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetMaxAtaMode
|
|
Function: Set max ATA or SATA mode
|
|
Input: IDE_SPEED_33 / IDE_SPEED_66 / IDE_SPEED_100 / IDE_SPEED_133 for IDE
|
|
SATA_SPEED_150 / SATA_SPEED_150NCQ / SATA_SPEED_300 / SATA_SPEED_300NCQ for SATA
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetMaxAtaMode
|
|
(
|
|
IN BYTE bMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetDhcpIp
|
|
Function: Set DHCP and IP
|
|
Input: 1. 0:dhcp disabled, 1:dhcp enabled
|
|
2. Null-terminated character string representing a number expressed in the Internet standard "."
|
|
(dotted) notation, format: "xxx.xxx.xxx.xxx" ex: 192.168.001.100
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetDhcpIp
|
|
(
|
|
IN BYTE bDhcp,
|
|
IN PBYTE szIp
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetRaidTermPort
|
|
Function: Set Raid Terminal Port
|
|
Input: 1. 0->COMA (term port), 1->COMB (debug port)
|
|
2. 0/1/2/3/4/5/6/7 (1200/2400/4800/9600/19200/38400/57600/115200)
|
|
3. stop bit (0:1, 1:2 stop bits)
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetTermPort
|
|
(
|
|
IN BYTE nPort,
|
|
IN BYTE nBaudRate,
|
|
IN BYTE nStopBit
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcChkPassword
|
|
Function: Pass the password that user input to RAID Subsystem
|
|
Input: 1. Password with null-terminated
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password string must be <= 15 characters
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcChkPassword
|
|
(
|
|
IN char *szPassword
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcLogOut
|
|
Function: Logout GUI (force password checking on next command)
|
|
Input: None.
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcLogOut
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcHttp
|
|
Function: Translates the HTTP data between BROWSER and RAID Subsystem
|
|
Input: 1. HTTP data from browser( HTML format )
|
|
2. The length of the HTTP data from browser
|
|
Output: 1. The HTTP data returned from RAID subsystem ( HTML format)
|
|
2. The Length of the returning HTTP data
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Sequence of translation.
|
|
1a. Setup the sockets for waiting connection from remote side.
|
|
1b. Receive the HTTP data from remote side.
|
|
1c. Pass the received data and length into ArcHttp.
|
|
1d. Send the HTTP data returned from RAID subsystem back to remote side.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcHttp
|
|
(
|
|
IN char *pClientHttpData,
|
|
IN int nClientHttpDataSize,
|
|
OUT char *pRaidReturnHttp,
|
|
OUT int *nRaidReturnSize
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcPollEvent
|
|
Function: Get the current index of event object in the RAID subsystem
|
|
Input: None.
|
|
Output: 1. Pointer to an INTEGER to save the index of current event object
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. There are 64 event objects inside the RAID subsystem
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcPollEvent
|
|
(
|
|
OUT int *nCurrentEvtIndex
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetReqEventPage
|
|
Function: Get the specific number of event pages from RAID subsystem
|
|
Input: 1. The flag to indicate how to retrieve the event object(s),
|
|
this parameter can be one of the following values:
|
|
1a. FLAG_ALL, retrieve all event objects inside the RAID subsystem
|
|
1b. FLAG_NEW, retrieve only new event objects
|
|
Output: 1. Number of event objects we retrieved
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetReqEventPage
|
|
(
|
|
IN char bFlag,
|
|
OUT int *iCount
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetEventObject
|
|
Function: Get the individual event object
|
|
Input: 1. Event object index
|
|
Output: 1. Pointer to an sEVENT_DATA to save the current event object
|
|
Return Values: 1. boolean value, > 0 means successed
|
|
Note: 1.
|
|
************************************************************************************/
|
|
virtual BOOL ArcGetEventObject
|
|
(
|
|
IN int nEvtNum,
|
|
OUT pEVENT_DATA pEventObject
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcClearEvent
|
|
Function: Clear all event buffer in the RAID subsystem
|
|
Input: None.
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcClearEvent
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateRaidSet
|
|
Function: Create RaidSet
|
|
Input: 1. Device mask, bit0 -- drive 0, bit1 -- drive 1 ....
|
|
ex: Device mask = 0x0000000F means that create raidset with device 0,1,2 and 3
|
|
2. RaidSet name ( <= 16 chars with null-terminated )
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateRaidSet
|
|
(
|
|
IN DWORD nDevMask,
|
|
IN char *szRaidName
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDelRaidSet
|
|
Function: Delete the particular RaidSet
|
|
Input: 1. RaidSet number to specify which one to be deleted
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDelRaidSet
|
|
(
|
|
IN char nRaidNum
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcExpandRaidSet
|
|
Function: Expand RaidSet with volumeset(s) modification
|
|
Input: 1. RaidSet number to specify which one to be expanded
|
|
2. Device mask(see ArcCreateRaidSet(...))
|
|
3. The volumeset(s) will be modified
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcExpandRaidSet
|
|
(
|
|
IN BYTE nRaidNum,
|
|
IN DWORD nDevMask,
|
|
IN pVolModList volmodlist = NULL
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcActiveRaidSet
|
|
Function: Activate incomplete raid set
|
|
Input: 1. RaidSet number to specify which one to be activated
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcActiveRaidSet
|
|
(
|
|
IN BYTE nRaidNum
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateHotSpare
|
|
Function: Create Hot Spare Disk
|
|
Input: 1. Device mask( see ArcCreateRaidSet(...))
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateHotSpare
|
|
(
|
|
IN DWORD nDevMask
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDeleteHotSpare
|
|
Function: Delete Hot Spare Disk
|
|
Input: 1. Device mask(see ArcCreateRaidSet(...))
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDeleteHotSpare
|
|
(
|
|
IN DWORD nDevMask
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateVolSet
|
|
Function: Create VolumeSet
|
|
Input: 1. Pointer to a sVolumeSetCap structure that uses to create VolumeSet
|
|
2. Specifies the type to create over 2TB volumeset.
|
|
TYPE_64BIT_LBA: 64bitLBA(default), TYPE_4K_FOR_WIN: 4KByte for Windows
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateVolSet
|
|
(
|
|
IN pVolumeSetCap pVol,
|
|
IN BYTE Over2TBType = TYPE_64BIT_LBA
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcModifyVolSet
|
|
Function: Modify VolumeSet
|
|
Input: 1. Pointer to a sNewVolumeSetCap structure that uses to modify VolumeSet
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcModifyVolSet
|
|
(
|
|
IN pNewVolumeSetCap pNewVol
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDelVolSet
|
|
Function: Delete VolumeSet
|
|
Input: 1. VolumeSet number to specify which one to be deleted
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDelVolSet
|
|
(
|
|
IN BYTE nVolNum
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcStartCheckVolume
|
|
Function: Start volume consistency check
|
|
Input: 1. Volume number to specify which one be checked
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcStartCheckVolume
|
|
(
|
|
IN BYTE nVolNum
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcStopCheckVolume
|
|
Function: Stop volume consistency check
|
|
Input: None.
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcStopCheckVolume
|
|
(
|
|
void
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreatePassthroughDisk
|
|
Function: Create pass-through disk
|
|
Input: 1. Pointer to a sPassDiskCap structure that uses to create pass-through Disk
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreatePassthroughDisk
|
|
(
|
|
IN pPassDiskCap pDisk
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcModifyPassthroughDisk
|
|
Function: Modify pass-through disk
|
|
Input: 1. Pointer to a sPassDiskCap structure that uses to create pass-through Disk
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcModifyPassthroughDisk
|
|
(
|
|
IN pPassDiskCap pNewDiskCap
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDelPassthroughDisk
|
|
Function: Delete the pass-through disk
|
|
Input: 1. Disk number specify which one to be deleted
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDelPassthroughDisk
|
|
(
|
|
IN BYTE nDrvNum
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcIdentifyDisk
|
|
Function: Identify the disk
|
|
Input: 1. Device mask(see ArcCreateRaidSet(...))
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Set the Device mask to zero to stop the disk identifying.
|
|
2. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcIdentifyDisk
|
|
(
|
|
IN DWORD nDriveMask
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcResetController
|
|
Function: Restart controller
|
|
Input: None.
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
2. After restart controller, it is essential to wait controller to
|
|
get ready, the time may be 10~60 seconds depends on the models
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcResetController( void );
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcUpdateFirmware
|
|
Function: Update firmware
|
|
Input: 1. The buffer contains the binary data of the firmware
|
|
2. The actually size of firmware, not the buffer size
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcUpdateFirmware
|
|
(
|
|
IN char *fileBuf,
|
|
IN int fileSize
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcUpdateFirmware
|
|
Function: Update firmware
|
|
Input: 1. The path that point to a firmware binary file
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcUpdateFirmware
|
|
(
|
|
IN char *szFilePath
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetOnBoardNetInfo
|
|
Function: Get On-Board network information
|
|
Input: 1. Pointer to a sNET_INFO structure that receives the information.
|
|
Output: None
|
|
Return Values: 1. ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetOnBoardNetInfo
|
|
(
|
|
OUT pNET_INFO pNetInfo
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetSystemConfigInfo
|
|
Function: Get the system configurations
|
|
Input: None.
|
|
Output: 1. Pointer to a sSYS_CONFIG_INFO structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetSystemConfigInfo
|
|
(
|
|
OUT pSYS_CONFIG_INFO pSysCfgInfo
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetStaggerPowerOn
|
|
Function: Set stagger poweron mode
|
|
Input: 1. Mode of the stagger poweron
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetStaggerPowerOn
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetDiskCache
|
|
Function: Set disk cache mode
|
|
Input: 1. Mode of disk cache
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetDiskCache
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetHddReadAhead
|
|
Function: Set HDD read-ahead mode
|
|
Input: 1. Mode of HDD read-ahead
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetHddReadAhead
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetTruncateMode
|
|
Function: Set truncate mode
|
|
Input: 1. Mode of truncate
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetTruncateMode
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetHTTPPort
|
|
Function: Set HTTP port
|
|
Input: 1. HTTP port number
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetHTTPPort
|
|
(
|
|
IN WORD nPort
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetTelnetPort
|
|
Function: Set telnet port
|
|
Input: 1. Telnet port number
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetTelnetPort
|
|
(
|
|
IN WORD nPort
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetSMTPPort
|
|
Function: Set SMTP port
|
|
Input: 1. SMTP port number
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetSMTPPort
|
|
(
|
|
IN WORD nPort
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetAutoActivate
|
|
Function: Set Auto-Activate
|
|
Input: 1. Mode of auto-activate
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetAutoActivate
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetSMARTHddPoll
|
|
Function: Set SMART HDD Poll Mode
|
|
Input: 1. Mode of SMART HDD poll
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetSMARTHddPoll
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetHddSpinDownMode
|
|
Function: Set HDD spin down Mode
|
|
Input: 1. Mode of HDD spin down
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetHddSpinDownMode
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetEmptyHddSlotLed
|
|
Function: Set empty HDD slot LED mode
|
|
Input: 1. Mode of empty HDD slot LED
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetEmptyHddSlotLed
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetCpuFanDetect
|
|
Function: Set CPU fan detection mode
|
|
Input: 1. Mode of CPU detection mode
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: None.
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetCpuFanDetection
|
|
(
|
|
IN BYTE nMode
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: IsEnclosure
|
|
Function:
|
|
Input: None
|
|
Output: None
|
|
Return Values: 'true' if the target subsystem is an Enclosure.
|
|
Note:
|
|
************************************************************************************/
|
|
BOOL IsEnclosure();
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetEnclosureProperty
|
|
Function: Get the Enclosure property
|
|
Input: 1. encnum: Enclosure#
|
|
Output: 1. Pointer to a sGUI_ENC_PROPERTY structure that receives the information.
|
|
Return Values: ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetEnclosureProperty
|
|
(
|
|
IN BYTE nEncnum,
|
|
OUT pGUI_ENC_PROPERTY pEncProperty
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetEnclosureDescriptor
|
|
Function: Get the Enclosure descriptor
|
|
Input: 1. nEncnum: Enclosure#
|
|
2. nItem: see 'enum _SAS_HW'
|
|
3. nBufsize: the size of output buffer
|
|
Output: 1. pDescbuf: Pointer to a buffer that receives the item descriptor.
|
|
Return Values: ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetEnclosureDescriptor
|
|
(
|
|
IN BYTE nEncnum,
|
|
IN BYTE nItem,
|
|
OUT BYTE *pDescbuf,
|
|
IN int nBufsize
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetEnclosureHwMonitor
|
|
Function: Get the Enclosure H/W monitor
|
|
Input: 1. nEncnum: Enclosure#
|
|
Output: 1. Pointer to a sSENSORS structure that receives the information.
|
|
Return Values: ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetEnclosureHwMonitor
|
|
(
|
|
IN BYTE nEncnum,
|
|
OUT pSENSORS pHwInfo
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetPhysicalDriveInfo
|
|
Function: Get the physical drive information
|
|
Input: 1. nEncnum: Enclosure#
|
|
2. nDrvnum: Drive# in Enclsoure#
|
|
Output: 1. Pointer to a sGUI_PHY_DRV structure that receives the information.
|
|
Return Values: 1. ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetPhysicalDriveInfo
|
|
(
|
|
IN BYTE nEncnum,
|
|
IN BYTE nDrvnum,
|
|
OUT pGUI_PHY_DRV pPhyDrv
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateRaidSet
|
|
Function: Create RaidSet
|
|
Input: 1. pDevPairList: Pointer to a sDEVICE_LIST structure containing a list
|
|
of devices
|
|
2. RaidSet name ( <= 16 chars with null-terminated )
|
|
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateRaidSet
|
|
(
|
|
IN pDEVICE_LIST pDevPairList,
|
|
IN char *szRaidName
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcExpandRaidSet
|
|
Function: Expand RaidSet With Volumeset(s) Modification
|
|
Input: 1. RaidSet number to specify which one to be expanded
|
|
2. pDevPairList: Pointer to a sDEVICE_LIST structure containing a list
|
|
of devices
|
|
3. The volumeset(s) that will be modified
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcExpandRaidSet
|
|
(
|
|
IN BYTE nRaidNum,
|
|
IN pDEVICE_LIST pDevPairList,
|
|
IN pVolModList volmodlist = NULL
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateHotSpare
|
|
Function: Create Hot Spare Disk
|
|
Input: 1. pDevPairList: Pointer to a sDEVICE_LIST structure containing a list
|
|
of devices
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateHotSpare
|
|
(
|
|
IN pDEVICE_LIST pDevPairList
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDeleteHotSpare
|
|
Function: Delete Hot Spare Disk
|
|
Input: 1. pDevPairList: Pointer to a sDEVICE_LIST structure containing a list
|
|
of devices
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDeleteHotSpare
|
|
(
|
|
IN pDEVICE_LIST pDevPairList
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreatePassthroughDisk
|
|
Function: Create Pass-Through Disk
|
|
Input: 1. nEncnum: Enclosure#
|
|
2. nDrvnum: Drive# in Enclsoure#
|
|
3. pDisk: Pointer to a sPassDiskCap structure that uses to create pass-through Disk
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. This function use the nDrvnum instead of pDisk->nDevNum
|
|
2. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreatePassthroughDisk
|
|
(
|
|
IN BYTE nEncnum,
|
|
IN BYTE nDrvnum,
|
|
IN pPassDiskCap pDisk
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcModifyPassthroughDisk
|
|
Function: Modify Pass-Through Disk
|
|
Input: 1. nEncnum: Enclosure#
|
|
2. nDrvnum: Drive# in Enclsoure#
|
|
3. pNewDiskCap: Pointer to a sPassDiskCap structure that uses to create pass-through Disk
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. This function use the nDrvnum instead of pNewDiskCap->nDevNum
|
|
2. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcModifyPassthroughDisk
|
|
(
|
|
IN BYTE nEncnum,
|
|
IN BYTE nDrvnum,
|
|
IN pPassDiskCap pNewDiskCap
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcDelPassthroughDisk
|
|
Function: Delete Pass-Through Disk
|
|
Input: 1. nEncnum: Enclosure#
|
|
2. nDrvnum: Drive# in Enclsoure#
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcDelPassthroughDisk
|
|
(
|
|
IN BYTE nEncnum,
|
|
IN BYTE nDrvnum
|
|
);
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSASIdentifyDisk
|
|
Function: Identify the disk
|
|
Input: 1. nTarget: The target to be identified.
|
|
2. nEncnum: Enclosure#
|
|
3. nDrvnum: Drive# in Enclsoure#
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Set the Device mask to zero to stop the disk identifying.
|
|
2. Password required if password enabled
|
|
************************************************************************************/
|
|
|
|
|
|
enum _IDENTIFY_TARGET
|
|
{
|
|
TARGET_DRIVE = 0, // the target is disk
|
|
TARGET_ENCLOSURE, // the target is enclosure
|
|
TARGET_OFF, // end identifying
|
|
TARGET_ALL
|
|
};
|
|
virtual ARC_STATUS ArcSASIdentifyDisk
|
|
(
|
|
IN BYTE nTarget,
|
|
IN BYTE nEncnum = 0xFF,
|
|
IN BYTE nDrvnum = 0xFF
|
|
);
|
|
|
|
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcCreateVolSetR5060
|
|
Function: Create Raid30/50/60 VolumeSet
|
|
Input: 1. nRaidNumber: Number of RaidSets use to create Raid30/50/60
|
|
VolumeSet
|
|
2. nRaidArray: Pointer to an array containing index of RaidSets
|
|
3. Pointer to a sVolumeSetCap structure that uses to create VolumeSet
|
|
4. Specifies the type to create over 2TB volumeset.
|
|
TYPE_64BIT_LBA: 64bitLBA(default), TYPE_4K_FOR_WIN: 4KByte for Windows
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcCreateVolSetR5060
|
|
(
|
|
IN BYTE nRaidNumber,
|
|
IN BYTE nRaidArray[],
|
|
IN pVolumeSetCap pVol,
|
|
IN BYTE Over2TBType = TYPE_64BIT_LBA
|
|
);
|
|
|
|
|
|
//////////////////////////////////////////
|
|
////// MAIL Functions ////////////
|
|
//////////////////////////////////////////
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetMailInfo
|
|
Function: Get the mail notification information
|
|
Input: None.
|
|
Output: 1. Pointer to a sMAIL_INFO structure that receives the information.
|
|
Return Values: ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetMailInfo
|
|
(
|
|
OUT pMAIL_INFO pMailInfo
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetMailSmtpIp
|
|
(
|
|
IN char *szSmtpIp // format: string with null-terminated "192.168.0.1"
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetMailSmtpLoginAccount
|
|
(
|
|
IN char *szName, // SMTP server login name
|
|
IN char *szPassword // SMTP server login password
|
|
);
|
|
|
|
enum _MAIL_ADDR_ITEM
|
|
{
|
|
MAIL_ITEM_SENDER,
|
|
MAIL_ITEM_MAILTO1,
|
|
MAIL_ITEM_MAILTO2,
|
|
MAIL_ITEM_MAILTO3,
|
|
MAIL_ITEM_MAILTO4,
|
|
TOTAL_MAIL_ITEM
|
|
};
|
|
|
|
virtual ARC_STATUS ArcSetMailAddr
|
|
(
|
|
IN DWORD nItem, // enum _MAIL_ADDR_ITEM
|
|
IN pMAIL_ADDR pMail
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetMailEvtLevel
|
|
(
|
|
DWORD nEvtLevel // enum _EVT_LEVEL
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetMailNoEvtFor24Hours
|
|
(
|
|
DWORD nNotificationForNoEvent // default enabled
|
|
);
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
////////// SNMP Functions ////////////
|
|
//////////////////////////////////////////////
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcGetSnmpInfo
|
|
Function: Get the SNMP notification information
|
|
Input: None.
|
|
Output: 1. Pointer to a sSNMP_CONFIG structure that receives the information.
|
|
Return Values: ARC_STATUS
|
|
Note:
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcGetSnmpInfo
|
|
(
|
|
OUT pSNMP_CONFIG pSnmpInfo
|
|
);
|
|
|
|
|
|
enum _SNMP_TRAP_IP_ITEM
|
|
{
|
|
SNMP_TRAP_IP1,
|
|
SNMP_TRAP_IP2,
|
|
SNMP_TRAP_IP3,
|
|
TOTAL_SNMP_TRAP_IP
|
|
};
|
|
|
|
virtual ARC_STATUS ArcSetSnmpTrapIp
|
|
(
|
|
IN DWORD nItem, // enum _SNMP_TRAP_IP_ITEM
|
|
char *szIp
|
|
);
|
|
|
|
|
|
|
|
enum _SNMP_TRAP_PORT_ITEM
|
|
{
|
|
SNMP_TRAP_PORT1,
|
|
SNMP_TRAP_PORT2,
|
|
SNMP_TRAP_PORT3,
|
|
TOTAL_SNMP_TRAP_PORT
|
|
};
|
|
|
|
virtual ARC_STATUS ArcSetSnmpTrapPort
|
|
(
|
|
IN DWORD nItem, // enum _SNMP_TRAP_PORT_ITEM
|
|
WORD port
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetSnmpCommunity
|
|
(
|
|
IN char *szCommunity // SNMP community string with null-terminated
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetSnmpContact
|
|
(
|
|
IN char *szContact // contact string with null-terminated
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetSnmpName
|
|
(
|
|
IN char *szName // name string with null-terminated
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetSnmpLocation
|
|
(
|
|
IN char *szLocation // location string with null-terminated
|
|
);
|
|
|
|
virtual ARC_STATUS ArcSetSnmpEvtLevel
|
|
(
|
|
DWORD nEvtLevel // enum _EVT_LEVEL
|
|
);
|
|
|
|
/************************************************************************************
|
|
Function Name: ArcSetGatewayIp
|
|
Function: Set Gateway IP
|
|
Input: 1. Null-terminated character string representing a number expressed in the Internet standard "."
|
|
(dotted) notation, format: "xxx.xxx.xxx.xxx" ex: 192.168.001.100
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcSetGatewayIp
|
|
(
|
|
IN char *szGatewayIp
|
|
);
|
|
|
|
/************************************************************************************
|
|
Routine Name: ArcOfflineRaidSet
|
|
Function: Offline the particular RaidSet
|
|
Input: 1. RaidSet number
|
|
Output: None.
|
|
Return Values: 1. ARC_STATUS
|
|
Note: 1. Password required if password enabled
|
|
************************************************************************************/
|
|
virtual ARC_STATUS ArcOfflineRaidSet
|
|
(
|
|
IN char nRaidNum
|
|
);
|
|
|
|
public:
|
|
ARC_STATUS ArcCmdReadWrite(BYTE cmd, void *w_buf, int w_buf_len, void *r_buf, int r_buf_len, int &actual_read_size, DWORD flag = 0);
|
|
|
|
//
|
|
// helper function
|
|
//
|
|
ARC_STATUS ArcHelpBuildDeviceMap(sDRV_MAP *drvMap); // enumerating disk
|
|
ARC_STATUS ArcHelpBuildRaidSetMap(sRAID_MAP *raidMap); // enumerating raidset
|
|
ARC_STATUS ArcHelpBuildVolumeSetMap(sVOL_MAP *volMap); // enumerating volumeset
|
|
|
|
protected:
|
|
ARC_STATUS ArcGetEvent(char nPage);
|
|
ARC_STATUS SetLogoPage(BYTE nPage, BYTE *Data, int len);
|
|
ARC_STATUS ArcGetSetupPage(BYTE *buf, int bufsize);
|
|
ARC_STATUS ArcWriteSetupData(int setupitem, char *data, int datalen);
|
|
ARC_STATUS ArcReadSetupData(int setupitem, char *buf, int buflen, int *retlen);
|
|
ARC_STATUS ArcGetModelNumber(DWORD *model);
|
|
//BOOL ArcCkFrameValid(PBYTE frame, DWORD dwLength);
|
|
//BYTE CalCheckSum( PBYTE src, int len);
|
|
BOOL IsValidHandle();
|
|
int DetermineTableNumber();
|
|
ArcInterface *m_Interface; // The communication path to the raid-subsystem
|
|
sSYSTEM_INFO m_SysInfo;
|
|
|
|
private:
|
|
// save the previous index of event
|
|
int m_iPreIndex;
|
|
// save the current index of event
|
|
int m_iCurrentIndex;
|
|
int m_iNewCount;
|
|
BYTE *m_pEventPage;
|
|
BYTE *m_pEventMapping;
|
|
int m_iMtu;
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // # _ARCLIB_H
|
|
|