1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
Halofreak1990 8f089dc2ab Added the current XFX directory tree.
WARNING!!! This revision cannot compile correctly. It is updated to reflect the many changes within the XFX project.
2010-12-04 16:14:34 +00:00

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