mirror of
https://github.com/Halofreak1990/XFXFramework
synced 2024-12-26 13:49:34 +01:00
297 lines
8.4 KiB
C
297 lines
8.4 KiB
C
|
/*
|
||
|
**********************************
|
||
|
**********************************
|
||
|
** BROUGHT TO YOU BY: **
|
||
|
**********************************
|
||
|
**********************************
|
||
|
** **
|
||
|
** [TEAM ASSEMBLY] **
|
||
|
** **
|
||
|
** www.team-assembly.com **
|
||
|
** **
|
||
|
******************************************************************************************************
|
||
|
* This is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License as published by
|
||
|
* the Free Software Foundation; either version 2 of the License, or
|
||
|
* (at your option) any later version.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
******************************************************************************************************
|
||
|
|
||
|
|
||
|
********************************************************************************************************
|
||
|
** XKUTILS.H - XBOX Utility Class' Header
|
||
|
********************************************************************************************************
|
||
|
**
|
||
|
** This is the Class Header, see the .CPP file for more comments and implementation details.
|
||
|
**
|
||
|
********************************************************************************************************
|
||
|
|
||
|
********************************************************************************************************
|
||
|
** CREDITS:
|
||
|
********************************************************************************************************
|
||
|
** XBOX-LINUX TEAM:
|
||
|
** ---------------
|
||
|
** Wow, you guys are awsome !! I bow down to your greatness !!
|
||
|
** REFERENCE URL: http://xbox-linux.sourceforge.net
|
||
|
**
|
||
|
********************************************************************************************************
|
||
|
|
||
|
UPDATE LOG:
|
||
|
--------------------------------------------------------------------------------------------------------
|
||
|
Date: 07/05/2006
|
||
|
By: friedgold
|
||
|
Reason: OpenXDK Version
|
||
|
--------------------------------------------------------------------------------------------------------
|
||
|
Date: 02/18/2003
|
||
|
By: UNDEAD [team-assembly]
|
||
|
Reason: Prepared 0.2 for Public Release
|
||
|
--------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
*/
|
||
|
#ifndef __XKUTILS_H__
|
||
|
#define __XKUTILS_H__
|
||
|
#if defined (ENABLE_XBOX)
|
||
|
//This complete file is only supported for XBOX..
|
||
|
extern "C" {
|
||
|
#include <xboxkrnl/types.h>
|
||
|
#include <hal/fileio.h>
|
||
|
}
|
||
|
|
||
|
class XKUtils
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
//Enum for Devices on SMBus
|
||
|
enum SMBUS_DEVICES
|
||
|
{
|
||
|
SMBDEV_PIC16L = 0x20,
|
||
|
SMBDEV_VIDEO_ENCODER_CONEXANT = 0x8a,
|
||
|
SMBDEV_VIDEO_ENCODER_FOCUS = 0xd4,
|
||
|
SMBDEV_VIDEO_ENCODER_XCALIBUR = 0xe0,
|
||
|
SMBDEV_TEMP_MONITOR = 0x98,
|
||
|
SMBDEV_EEPROM = 0xA8
|
||
|
};
|
||
|
|
||
|
// AV Pack Type definitions
|
||
|
enum AV_PACK
|
||
|
{
|
||
|
AV_PACK_SCART = 0x00,
|
||
|
AV_PACK_HDTV = 0x01,
|
||
|
AV_PACK_VGA = 0x02,
|
||
|
AV_PACK_RFU = 0x03,
|
||
|
AV_PACK_SVideo = 0x04,
|
||
|
AV_PACK_Undefined = 0x05,
|
||
|
AV_PACK_Standard = 0x06,
|
||
|
AV_PACK_Missing = 0x07
|
||
|
};
|
||
|
|
||
|
//Commands that can be sent to the PIC
|
||
|
enum PIC16L_CMD
|
||
|
{
|
||
|
PIC16L_CMD_PIC_VERSION = 0x01,
|
||
|
PIC16L_CMD_POWER = 0x02,
|
||
|
PIC16L_CMD_TRAY = 0x03,
|
||
|
PIC16L_CMD_AV_PACK = 0x04,
|
||
|
PIC16L_CMD_FAN_MODE = 0x05,
|
||
|
PIC16L_CMD_FAN_SPEED = 0x06,
|
||
|
PIC16L_CMD_LED_MODE = 0x07,
|
||
|
PIC16L_CMD_LED_REGISTER = 0x08,
|
||
|
PIC16L_CMD_CPU_TEMPERATURE = 0x09,
|
||
|
PIC16L_CMD_BOARD_TEMPERATURE = 0x0A,
|
||
|
PIC16L_CMD_EJECT = 0x0C,
|
||
|
PIC16L_CMD_READ_FAN_SPEED = 0x10,
|
||
|
PIC16L_CMD_INTERRUPT_REASON = 0x11,
|
||
|
PIC16L_CMD_RESET_ON_EJECT = 0x19,
|
||
|
PIC16L_CMD_SCRATCH_REGISTER = 0x1B
|
||
|
};
|
||
|
|
||
|
//Commands that can be sent to PIC fan mode command
|
||
|
enum
|
||
|
{
|
||
|
FAN_MODE_SUBCMD_AUTO = 0x00,
|
||
|
FAN_MODE_SUBCMD_MANUAL = 0x01
|
||
|
};
|
||
|
|
||
|
//Sub commands for the PIC Power command
|
||
|
enum POWER_SUBCMD
|
||
|
{
|
||
|
POWER_SUBCMD_RESET = 0x01,
|
||
|
POWER_SUBCMD_CYCLE = 0x40,
|
||
|
POWER_SUBCMD_POWER_OFF = 0x80
|
||
|
|
||
|
};
|
||
|
//Commands that can be sent to the Video Encoder
|
||
|
enum VIDEO_ENCODER_CMD
|
||
|
{
|
||
|
VIDEO_ENCODER_CMD_DETECT = 0x00
|
||
|
};
|
||
|
|
||
|
//Values For Video Encoder
|
||
|
enum VIDEO_ENCODER_TYPE
|
||
|
{
|
||
|
VIDEO_ENCODER_UNKNOWN = 0,
|
||
|
VIDEO_ENCODER_CONEXANT = 1,
|
||
|
VIDEO_ENCODER_FOCUS = 2,
|
||
|
VIDEO_ENCODER_XCALIBUR = 3
|
||
|
};
|
||
|
|
||
|
//Sub Command for the PIC LED command
|
||
|
enum LED_MODE_SUBCMD
|
||
|
{
|
||
|
LED_MODE_SUBCMD_DEFAULT_MODE = 0x00,
|
||
|
LED_MODE_SUBCMD_CUSTOM_MODE = 0x01
|
||
|
};
|
||
|
|
||
|
//Sub Command for the PIC LED command
|
||
|
enum LED_REGISTER_CYCLE
|
||
|
{
|
||
|
LED_REGISTER_CYCLE3_GREEN = 0x01,
|
||
|
LED_REGISTER_CYCLE2_GREEN = 0x02,
|
||
|
LED_REGISTER_CYCLE1_GREEN = 0x04,
|
||
|
LED_REGISTER_CYCLE0_GREEN = 0x08,
|
||
|
|
||
|
LED_REGISTER_CYCLE3_RED = 0x10,
|
||
|
LED_REGISTER_CYCLE2_RED = 0x20,
|
||
|
LED_REGISTER_CYCLE1_RED = 0x40,
|
||
|
LED_REGISTER_CYCLE0_RED = 0x80,
|
||
|
|
||
|
LED_REGISTER_CYCLE3_ORANGE = 0x11,
|
||
|
LED_REGISTER_CYCLE2_ORANGE = 0x22,
|
||
|
LED_REGISTER_CYCLE1_ORANGE = 0x44,
|
||
|
LED_REGISTER_CYCLE0_ORANGE = 0x88
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
//Sub commands for the PIC EJECT command
|
||
|
enum EJECT_SUBCMD
|
||
|
{
|
||
|
EJECT_SUBCMD_EJECT = 0x00,
|
||
|
EJECT_SUBCMD_LOAD = 0x01
|
||
|
};
|
||
|
|
||
|
//Reason for interrupt
|
||
|
enum INTERRUPT_REASON_BITVALUE
|
||
|
{
|
||
|
INTERRUPT_REASON_BITVALUE_POWER_BUTTON = 0x01,
|
||
|
INTERRUPT_REASON_BITVALUE_AV_REMOVED = 0x10,
|
||
|
INTERRUPT_REASON_BITVALUE_EJECT_BUTTON = 0x20
|
||
|
};
|
||
|
|
||
|
//subcommands for Reset on Eject PIC command
|
||
|
enum RESET_ON_EJECT_SUBCMD
|
||
|
{
|
||
|
RESET_ON_EJECT_SUBCMD_ENABLE = 0x00,
|
||
|
RESET_ON_EJECT_SUBCMD_DISABLE = 0x01
|
||
|
|
||
|
};
|
||
|
|
||
|
//Scratch register values..
|
||
|
enum SCRATCH_REGISTER_BITVALUE
|
||
|
{
|
||
|
SCRATCH_REGISTER_BITVALUE_EJECT_AFTER_BOOT = 0x01,
|
||
|
SCRATCH_REGISTER_BITVALUE_DISPLAY_ERROR = 0x02,
|
||
|
SCRATCH_REGISTER_BITVALUE_NO_ANIMATION = 0x04,
|
||
|
SCRATCH_REGISTER_BITVALUE_RUN_DASHBOARD = 0x08
|
||
|
};
|
||
|
|
||
|
// Sub commands for the AMD 1032 temperature sensor
|
||
|
enum TEMP_MONITOR
|
||
|
{
|
||
|
TEMP_MONITOR_HIGH_BYTE = 0x01,
|
||
|
TEMP_MONITOR_LOW_BYTE = 0x10,
|
||
|
};
|
||
|
|
||
|
//Tray state values
|
||
|
enum TRAY_STATE
|
||
|
{
|
||
|
TRAY_STATE_NOT_READY = 0x00,
|
||
|
TRAY_STATE_OPEN = 0x10,
|
||
|
TRAY_STATE_OPENING = 0x20,
|
||
|
TRAY_STATE_CLOSED_NO_MEDIA = 0x40,
|
||
|
TRAY_STATE_CLOSED_MEDIA_PRESENT = 0x60
|
||
|
};
|
||
|
|
||
|
//Xbox versions
|
||
|
enum XBOX_VERSION
|
||
|
{
|
||
|
XBOX_VERSION_1_0 = 0,
|
||
|
XBOX_VERSION_1_1 = 1,
|
||
|
XBOX_VERSION_1_2_OR_1_3 = 2,
|
||
|
XBOX_VERSION_1_4 = 3,
|
||
|
XBOX_VERSION_1_6 = 4,
|
||
|
XBOX_VERSION_DEVKIT = 5,
|
||
|
XBOX_VERSION_DEVKIT_GREEN = 6,
|
||
|
XBOX_VERSION_UNKNOWN = 7
|
||
|
};
|
||
|
|
||
|
XKUtils();
|
||
|
virtual ~XKUtils();
|
||
|
|
||
|
static void DVDEjectLoadTray();
|
||
|
static void DVDEjectTray();
|
||
|
static void DVDLoadTray();
|
||
|
static void DVDDisableEjectReset();
|
||
|
static void DVDEnableEjectReset();
|
||
|
static LONG MountDiskC();
|
||
|
static LONG MountDiskD();
|
||
|
static LONG MountDiskE();
|
||
|
static LONG MountDiskF();
|
||
|
static void MountAllDisks();
|
||
|
static LONG UnMountDiskC();
|
||
|
static LONG UnMountDiskD();
|
||
|
static LONG UnMountDiskE();
|
||
|
static LONG UnMountDiskF();
|
||
|
static void UnMountAllDisks();
|
||
|
|
||
|
static LONG MountDevice(LPSTR sSymbolicLinkName, LPSTR sDeviceName);
|
||
|
static LONG UnMountDevice(LPSTR sSymbolicLinkName);
|
||
|
|
||
|
static void WriteEEPROMToXBOX(BYTE *EEPROMDATA, UCHAR STARTPOS, UCHAR ENDPOS);
|
||
|
static bool ReadEEPROMFromXBOX(BYTE *EEPROMDATA, UCHAR STARTPOS, UCHAR ENDPOS);
|
||
|
|
||
|
static void XBOXRebootToDash();
|
||
|
static void XBOXReset();
|
||
|
static void XBOXPowerOff();
|
||
|
static void XBOXPowerCycle();
|
||
|
/* Set the LED Status from a bitwise OR of the LED_REGISTER_CYCLE
|
||
|
values above */
|
||
|
static void SetXBOXLEDStatus(UCHAR LEDStatus);
|
||
|
/* Set the LED Status from a string in the form "ABCD" where ABCD are
|
||
|
the states in the four phases the LED passes through. The possible
|
||
|
states are: 'r' (red), 'g' (green), 'o' (orange) or 'x' (off).*/
|
||
|
static void SetXBOXLEDStatus(char *s);
|
||
|
|
||
|
static int GetFanSpeed();
|
||
|
static void SetFanSpeed(int speed);
|
||
|
static void SetAutomaticFanSpeed();
|
||
|
|
||
|
static int GetBoardTemp();
|
||
|
/* Read the CPU temperature from the PIC */
|
||
|
static int PICGetCPUTemp();
|
||
|
/* Read the CPU temperature. */
|
||
|
static double GetCPUTemp(int version);
|
||
|
/* Read the CPU temperature, autodetecting the Xbox version */
|
||
|
static double GetCPUTemp();
|
||
|
|
||
|
static AV_PACK GetAVPack();
|
||
|
static TRAY_STATE GetTrayState();
|
||
|
static VIDEO_ENCODER_TYPE GetVideoEncoderType();
|
||
|
/* Reads the PIC Version string to version. At least 4 bytes must be allocated for the version string. */
|
||
|
static bool GetPICVersion(char *version);
|
||
|
static XBOX_VERSION GetXBOXVersion();
|
||
|
|
||
|
//static void GetMODCHIPVersion();
|
||
|
|
||
|
};
|
||
|
#endif
|
||
|
#endif
|