===================
ARECA FIRMWARE SPEC
===================

Usage of IOP331 adapter
=======================

(All In/Out is in IOP331's view)

1. Message 0
------------

- InitThread message and return code

2. Doorbell is used for RS-232 emulation
----------------------------------------

inDoorBell
    bit0
	data in ready
	zDRIVER DATA WRITE OK)
    bit1
	data out has been read
	(DRIVER DATA READ OK)

outDooeBell:
    bit0
	data out ready
	(IOP331 DATA WRITE OK)
    bit1
	data in has been read
	(IOP331 DATA READ OK)

3. Index Memory Usage
---------------------

============   ==========================================
offset 0xf00   for RS232 out (request buffer)
offset 0xe00   for RS232 in  (scratch buffer)
offset 0xa00   for inbound message code message_rwbuffer
	       (driver send to IOP331)
offset 0xa00   for outbound message code message_rwbuffer
	       (IOP331 send to driver)
============   ==========================================

4. RS-232 emulation
-------------------

Currently 128 byte buffer is used:

============   =====================
1st uint32_t   Data length (1--124)
Byte 4--127    Max 124 bytes of data
============   =====================

5. PostQ
--------

All SCSI Command must be sent through postQ:

    (inbound queue port)
	Request frame must be 32 bytes aligned:

	    #bit27--bit31
		flag for post ccb
	    #bit0--bit26
		real address (bit27--bit31) of post arcmsr_cdb

		=====   ===================
		bit31   ==  ===============
			0   256 bytes frame
			1   512 bytes frame
			==  ===============
		bit30   ==  ==============
			0   normal request
			1   BIOS request
			==  ==============
		bit29   reserved
		bit28   reserved
		bit27   reserved
		=====   ===================

    (outbount queue port)
	Request reply:

	    #bit27--bit31
		    flag for reply
	    #bit0--bit26
		    real address (bit27--bit31) of reply arcmsr_cdb

		    =====   =======================================================
		    bit31   must be 0 (for this type of reply)
		    bit30   reserved for BIOS handshake
		    bit29   reserved
		    bit28   ==  ===================================================
			    0   no error, ignore AdapStatus/DevStatus/SenseData
			    1   Error, error code in AdapStatus/DevStatus/SenseData
			    ==  ===================================================
		    bit27   reserved
		    =====   =======================================================

6. BIOS request
---------------

All BIOS request is the same with request from PostQ

Except:

Request frame is sent from configuration space:

	============   ==========================
	offset: 0x78   Request Frame (bit30 == 1)
	offset: 0x18   writeonly to generate
		       IRQ to IOP331
	============   ==========================

Completion of request::

	(bit30 == 0, bit28==err flag)

7. Definition of SGL entry (structure)
--------------------------------------

8. Message1 Out - Diag Status Code (????)
-----------------------------------------

9. Message0 message code
------------------------

======  =================================================================
0x00    NOP
0x01    Get Config
	->offset 0xa00 :for outbound message code message_rwbuffer
	(IOP331 send to driver)

	===================== ==========================================
	Signature             0x87974060(4)
	Request len           0x00000200(4)
	numbers of queue      0x00000100(4)
	SDRAM Size            0x00000100(4)-->256 MB
	IDE Channels          0x00000008(4)
	vendor                40 bytes char
	model                 8 bytes char
	FirmVer               16 bytes char
	Device Map            16 bytes char
	FirmwareVersion       DWORD

			      - Added for checking of
				new firmware capability
	===================== ==========================================
0x02    Set Config
	->offset 0xa00 :for inbound message code message_rwbuffer
	(driver send to IOP331)

	========================= ==================
	Signature                 0x87974063(4)
	UPPER32 of Request Frame  (4)-->Driver Only
	========================= ==================
0x03    Reset (Abort all queued Command)
0x04    Stop Background Activity
0x05    Flush Cache
0x06    Start Background Activity
	(re-start if background is halted)
0x07    Check If Host Command Pending
	(Novell May Need This Function)
0x08    Set controller time
	->offset 0xa00   for inbound message code message_rwbuffer
	(driver to IOP331)

	======   ==================
	byte 0   0xaa <-- signature
	byte 1   0x55 <-- signature
	byte 2   year (04)
	byte 3   month (1..12)
	byte 4   date (1..31)
	byte 5   hour (0..23)
	byte 6   minute (0..59)
	byte 7   second (0..59)
	======   ==================
======  =================================================================


RS-232 Interface for Areca Raid Controller
==========================================

      The low level command interface is exclusive with VT100 terminal

1. Sequence of command execution
--------------------------------

	(A) Header
		3 bytes sequence (0x5E, 0x01, 0x61)

	(B) Command block
		variable length of data including length,
		command code, data and checksum byte

	(C) Return data
		variable length of data

2. Command block
----------------

	(A) 1st byte
		command block length (low byte)

	(B) 2nd byte
		command block length (high byte)

		.. Note:: command block length shouldn't > 2040 bytes,
			  length excludes these two bytes

	(C) 3rd byte
		command code

	(D) 4th and following bytes
		variable length data bytes

	    depends on command code

	(E) last byte
	    checksum byte (sum of 1st byte until last data byte)

3. Command code and associated data
-----------------------------------

The following are command code defined in raid controller Command
code 0x10--0x1? are used for system level management,
no password checking is needed and should be implemented in separate
well controlled utility and not for end user access.
Command code 0x20--0x?? always check the password,
password must be entered to enable these command::

	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_QUICK_CREATE=0x20, (function removed)
		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
	};

Command description
^^^^^^^^^^^^^^^^^^^

GUI_SET_SERIAL
	Set the controller serial#

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x10
	byte 3            password length (should be 0x0f)
	byte 4-0x13       should be "ArEcATecHnoLogY"
	byte 0x14--0x23   Serial number string (must be 16 bytes)
	================  =============================================

GUI_SET_VENDOR
	Set vendor string for the controller

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x11
	byte 3            password length (should be 0x08)
	byte 4-0x13       should be "ArEcAvAr"
	byte 0x14--0x3B   vendor string (must be 40 bytes)
	================  =============================================

GUI_SET_MODEL
	Set the model name of the controller

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x12
	byte 3            password length (should be 0x08)
	byte 4-0x13       should be "ArEcAvAr"
	byte 0x14--0x1B   model string (must be 8 bytes)
	================  =============================================

GUI_IDENTIFY
	Identify device

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x13
			    return "Areca RAID Subsystem "
	================  =============================================

GUI_CHECK_PASSWORD
	Verify password

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x14
	byte 3            password length
	byte 4-0x??       user password to be checked
	================  =============================================

GUI_LOGOUT
	Logout GUI (force password checking on next command)

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x15
	================  =============================================

GUI_HTTP
	HTTP interface (reserved for Http proxy service)(0x16)

GUI_SET_ETHERNET_ADDR
	Set the ethernet MAC address

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x17
	byte 3            password length (should be 0x08)
	byte 4-0x13       should be "ArEcAvAr"
	byte 0x14--0x19   Ethernet MAC address (must be 6 bytes)
	================  =============================================

GUI_SET_LOGO
	Set logo in HTTP

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x18
	byte 3            Page# (0/1/2/3) (0xff --> clear OEM logo)
	byte 4/5/6/7      0x55/0xaa/0xa5/0x5a
	byte 8            TITLE.JPG data (each page must be 2000 bytes)

			  .. Note:: page0 1st 2 byte must be
				    actual length of the JPG file
	================  =============================================

GUI_POLL_EVENT
	Poll If Event Log Changed

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x19
	================  =============================================

GUI_GET_EVENT
	Read Event

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x1a
	byte 3            Event Page (0:1st page/1/2/3:last page)
	================  =============================================

GUI_GET_HW_MONITOR
	Get HW monitor data

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x1b
	byte 3 		  # of FANs(example 2)
	byte 4 		  # of Voltage sensor(example 3)
	byte 5 		  # of temperature sensor(example 2)
	byte 6 		  # of power
	byte 7/8          Fan#0 (RPM)
	byte 9/10         Fan#1
	byte 11/12 	  Voltage#0 original value in ``*1000``
	byte 13/14 	  Voltage#0 value
	byte 15/16 	  Voltage#1 org
	byte 17/18 	  Voltage#1
	byte 19/20 	  Voltage#2 org
	byte 21/22 	  Voltage#2
	byte 23 	  Temp#0
	byte 24 	  Temp#1
	byte 25 	  Power indicator (bit0   power#0,
			  bit1   power#1)
	byte 26 	  UPS indicator
	================  =============================================

GUI_QUICK_CREATE
	Quick create raid/volume set

	================  ==============================================
	byte 0,1       	  length
	byte 2         	  command code 0x20
	byte 3/4/5/6   	  raw capacity
	byte 7 		  raid level
	byte 8 		  stripe size
	byte 9 		  spare
	byte 10/11/12/13  device mask (the devices to create raid/volume)
	================  ==============================================

    This function is removed, application like
    to implement quick create function

    need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.

GUI_GET_INFO_R
	Get Raid Set Information

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x20
	byte 3            raidset#
	================  =============================================

	::

	    typedef struct sGUI_RAIDSET
	    {
		    BYTE grsRaidSetName[16];
		    DWORD grsCapacity;
		    DWORD grsCapacityX;
		    DWORD grsFailMask;
		    BYTE grsDevArray[32];
		    BYTE grsMemberDevices;
		    BYTE grsNewMemberDevices;
		    BYTE grsRaidState;
		    BYTE grsVolumes;
		    BYTE grsVolumeList[16];
		    BYTE grsRes1;
		    BYTE grsRes2;
		    BYTE grsRes3;
		    BYTE grsFreeSegments;
		    DWORD grsRawStripes[8];
		    DWORD grsRes4;
		    DWORD grsRes5; //     Total to 128 bytes
		    DWORD grsRes6; //     Total to 128 bytes
	    } sGUI_RAIDSET, *pGUI_RAIDSET;

GUI_GET_INFO_V
	Get Volume Set Information

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x21
	byte 3            volumeset#
	================  =============================================

	::

	    typedef struct sGUI_VOLUMESET
	    {
		    BYTE gvsVolumeName[16]; //     16
		    DWORD gvsCapacity;
		    DWORD gvsCapacityX;
		    DWORD gvsFailMask;
		    DWORD gvsStripeSize;
		    DWORD gvsNewFailMask;
		    DWORD gvsNewStripeSize;
		    DWORD gvsVolumeStatus;
		    DWORD gvsProgress; //     32
		    sSCSI_ATTR gvsScsi;
		    BYTE gvsMemberDisks;
		    BYTE gvsRaidLevel; //     8
		    BYTE gvsNewMemberDisks;
		    BYTE gvsNewRaidLevel;
		    BYTE gvsRaidSetNumber;
		    BYTE gvsRes0; //     4
		    BYTE gvsRes1[4]; //     64 bytes
	    } sGUI_VOLUMESET, *pGUI_VOLUMESET;

GUI_GET_INFO_P
	Get Physical Drive Information

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x22
	byte 3            drive # (from 0 to max-channels - 1)
	================  =============================================

	::

	    typedef struct sGUI_PHY_DRV
	    {
		    BYTE gpdModelName[40];
		    BYTE gpdSerialNumber[20];
		    BYTE gpdFirmRev[8];
		    DWORD gpdCapacity;
		    DWORD gpdCapacityX; //     Reserved for expansion
		    BYTE gpdDeviceState;
		    BYTE gpdPioMode;
		    BYTE gpdCurrentUdmaMode;
		    BYTE gpdUdmaMode;
		    BYTE gpdDriveSelect;
		    BYTE gpdRaidNumber; //     0xff if not belongs to a raid set
		    sSCSI_ATTR gpdScsi;
		    BYTE gpdReserved[40]; //     Total to 128 bytes
	    } sGUI_PHY_DRV, *pGUI_PHY_DRV;

GUI_GET_INFO_S
	Get System Information

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x23
	================  =============================================

	::

	    typedef struct sCOM_ATTR
	    {
		    BYTE comBaudRate;
		    BYTE comDataBits;
		    BYTE comStopBits;
		    BYTE comParity;
		    BYTE comFlowControl;
	    } sCOM_ATTR, *pCOM_ATTR;
	    typedef struct sSYSTEM_INFO
	    {
		    BYTE gsiVendorName[40];
		    BYTE gsiSerialNumber[16];
		    BYTE gsiFirmVersion[16];
		    BYTE gsiBootVersion[16];
		    BYTE gsiMbVersion[16];
		    BYTE gsiModelName[8];
		    BYTE gsiLocalIp[4];
		    BYTE gsiCurrentIp[4];
		    DWORD gsiTimeTick;
		    DWORD gsiCpuSpeed;
		    DWORD gsiICache;
		    DWORD gsiDCache;
		    DWORD gsiScache;
		    DWORD gsiMemorySize;
		    DWORD gsiMemorySpeed;
		    DWORD gsiEvents;
		    BYTE gsiMacAddress[6];
		    BYTE gsiDhcp;
		    BYTE gsiBeeper;
		    BYTE gsiChannelUsage;
		    BYTE gsiMaxAtaMode;
		    BYTE gsiSdramEcc; //     1:if ECC enabled
		    BYTE gsiRebuildPriority;
		    sCOM_ATTR gsiComA; //     5 bytes
		    sCOM_ATTR gsiComB; //     5 bytes
		    BYTE gsiIdeChannels;
		    BYTE gsiScsiHostChannels;
		    BYTE gsiIdeHostChannels;
		    BYTE gsiMaxVolumeSet;
		    BYTE gsiMaxRaidSet;
		    BYTE gsiEtherPort; //     1:if ether net port supported
		    BYTE gsiRaid6Engine; //     1:Raid6 engine supported
		    BYTE gsiRes[75];
	    } sSYSTEM_INFO, *pSYSTEM_INFO;

GUI_CLEAR_EVENT
	Clear System Event

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x24
	================  =============================================

GUI_MUTE_BEEPER
	Mute current beeper

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x30
	================  =============================================
GUI_BEEPER_SETTING
	Disable beeper

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x31
	byte 3            0->disable, 1->enable
	================  =============================================

GUI_SET_PASSWORD
	Change password

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x32
	byte 3 		  pass word length ( must <= 15 )
	byte 4 		  password (must be alpha-numerical)
	================  =============================================

GUI_HOST_INTERFACE_MODE
	Set host interface mode

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x33
	byte 3 		  0->Independent, 1->cluster
	================  =============================================

GUI_REBUILD_PRIORITY
	Set rebuild priority

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x34
	byte 3 		  0/1/2/3 (low->high)
	================  =============================================

GUI_MAX_ATA_MODE
	Set maximum ATA mode to be used

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x35
	byte 3 		  0/1/2/3 (133/100/66/33)
	================  =============================================

GUI_RESET_CONTROLLER
	Reset Controller

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x36
			  * Response with VT100 screen (discard it)
	================  =============================================

GUI_COM_PORT_SETTING
	COM port setting

	================  =================================================
	byte 0,1	  length
	byte 2 		  command code 0x37
	byte 3 		  0->COMA (term port),
			  1->COMB (debug port)
	byte 4 		  0/1/2/3/4/5/6/7
			  (1200/2400/4800/9600/19200/38400/57600/115200)
	byte 5 		  data bit
			  (0:7 bit, 1:8 bit   must be 8 bit)
	byte 6 		  stop bit (0:1, 1:2 stop bits)
	byte 7 		  parity (0:none, 1:off, 2:even)
	byte 8 		  flow control
			  (0:none, 1:xon/xoff, 2:hardware => must use none)
	================  =================================================

GUI_NO_OPERATION
	No operation

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x38
	================  =============================================

GUI_DHCP_IP
	Set DHCP option and local IP address

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x39
	byte 3            0:dhcp disabled, 1:dhcp enabled
	byte 4/5/6/7      IP address
	================  =============================================

GUI_CREATE_PASS_THROUGH
	Create pass through disk

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x40
	byte 3 		  device #
	byte 4 		  scsi channel (0/1)
	byte 5 		  scsi id (0-->15)
	byte 6 		  scsi lun (0-->7)
	byte 7 		  tagged queue (1   enabled)
	byte 8 		  cache mode (1   enabled)
	byte 9 		  max 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  )
	================  =============================================

GUI_MODIFY_PASS_THROUGH
	Modify pass through disk

	================  =============================================
	byte 0,1          length
	byte 2 		  command code 0x41
	byte 3 		  device #
	byte 4 		  scsi channel (0/1)
	byte 5 		  scsi id (0-->15)
	byte 6 		  scsi lun (0-->7)
	byte 7 		  tagged queue (1   enabled)
	byte 8 		  cache mode (1   enabled)
	byte 9 		  max 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  )
	================  =============================================

GUI_DELETE_PASS_THROUGH
	Delete pass through disk

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x42
	byte 3            device# to be deleted
	================  =============================================
GUI_IDENTIFY_DEVICE
	Identify Device

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x43
	byte 3            Flash Method
			  (0:flash selected, 1:flash not selected)
	byte 4/5/6/7      IDE device mask to be flashed
			  .. Note:: no response data available
	================  =============================================

GUI_CREATE_RAIDSET
	Create Raid Set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x50
	byte 3/4/5/6      device mask
	byte 7-22         raidset name (if byte 7 == 0:use default)
	================  =============================================

GUI_DELETE_RAIDSET
	Delete Raid Set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x51
	byte 3            raidset#
	================  =============================================

GUI_EXPAND_RAIDSET
	Expand Raid Set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x52
	byte 3            raidset#
	byte 4/5/6/7      device mask for expansion
	byte 8/9/10       (8:0 no change, 1 change, 0xff:terminate,
			  9:new raid level,
			  10:new stripe size
			  0/1/2/3/4/5->4/8/16/32/64/128K )
	byte 11/12/13     repeat for each volume in the raidset
	================  =============================================

GUI_ACTIVATE_RAIDSET
	Activate incomplete raid set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x53
	byte 3            raidset#
	================  =============================================

GUI_CREATE_HOT_SPARE
	Create hot spare disk

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x54
	byte 3/4/5/6      device mask for hot spare creation
	================  =============================================

GUI_DELETE_HOT_SPARE
	Delete hot spare disk

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x55
	byte 3/4/5/6      device mask for hot spare deletion
	================  =============================================

GUI_CREATE_VOLUME
	Create volume set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x60
	byte 3            raidset#
	byte 4-19         volume set name
			  (if byte4 == 0, use default)
	byte 20-27        volume capacity (blocks)
	byte 28 	  raid level
	byte 29 	  stripe size
			  (0/1/2/3/4/5->4/8/16/32/64/128K)
	byte 30 	  channel
	byte 31 	  ID
	byte 32 	  LUN
	byte 33 	  1 enable tag
	byte 34 	  1 enable cache
	byte 35 	  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 36 	  1 to select quick init
	================  =============================================

GUI_MODIFY_VOLUME
	Modify volume Set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x61
	byte 3            volumeset#
	byte 4-19         new volume set name
			  (if byte4 == 0, not change)
	byte 20-27        new volume capacity (reserved)
	byte 28 	  new raid level
	byte 29 	  new stripe size
			  (0/1/2/3/4/5->4/8/16/32/64/128K)
	byte 30 	  new channel
	byte 31 	  new ID
	byte 32 	  new LUN
	byte 33 	  1 enable tag
	byte 34 	  1 enable cache
	byte 35 	  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  )
	================  =============================================

GUI_DELETE_VOLUME
	Delete volume set

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x62
	byte 3            volumeset#
	================  =============================================

GUI_START_CHECK_VOLUME
	Start volume consistency check

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x63
	byte 3            volumeset#
	================  =============================================

GUI_STOP_CHECK_VOLUME
	Stop volume consistency check

	================  =============================================
	byte 0,1          length
	byte 2            command code 0x64
	================  =============================================

4. Returned data
----------------

(A) Header
    3 bytes sequence (0x5E, 0x01, 0x61)
(B) Length
    2 bytes
    (low byte 1st, excludes length and checksum byte)
(C)
    status or data:

	1) If length == 1 ==> 1 byte status code::

		#define GUI_OK                    0x41
		#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

	2) If length > 1:

		data block returned from controller
		and the contents depends on the command code

(E) Checksum
    checksum of length and status or data byte

