Revision: 7930
http://svn.sourceforge.net/xbmc/?rev=7930&view=rev
Author: geminiserver
Date: 2007-02-26 01:20:48 -0800 (Mon, 26 Feb 2007)
Log Message:
-----------
changed: system info, more move to Info manager
Modified Paths:
--------------
trunk/XBMC/xbmc/GUIWindowSystemInfo.cpp
trunk/XBMC/xbmc/GUIWindowSystemInfo.h
trunk/XBMC/xbmc/lib/smartXX/smartxxlcd.cpp
trunk/XBMC/xbmc/utils/GUIInfoManager.cpp
trunk/XBMC/xbmc/utils/GUIInfoManager.h
trunk/XBMC/xbmc/utils/LED.cpp
trunk/XBMC/xbmc/utils/SystemInfo.cpp
trunk/XBMC/xbmc/utils/SystemInfo.h
Modified: trunk/XBMC/xbmc/GUIWindowSystemInfo.cpp
===================================================================
--- trunk/XBMC/xbmc/GUIWindowSystemInfo.cpp 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/GUIWindowSystemInfo.cpp 2007-02-26 09:20:48 UTC (rev 7930)
@@ -33,19 +33,10 @@
CGUIWindowSystemInfo::CGUIWindowSystemInfo(void)
:CGUIWindow(WINDOW_SYSTEM_INFORMATION, "SettingsSystemInfo.xml")
{
- mplayerVersion="";
-#ifdef HAS_SYSINFO
- m_pXKEEPROM = new XKEEPROM;
- m_pXKEEPROM->ReadFromXBOX();
- m_XBOX_Version = m_pXKEEPROM->GetXBOXVersion();
-#endif
}
CGUIWindowSystemInfo::~CGUIWindowSystemInfo(void)
{
-#ifdef HAS_SYSINFO
- delete m_pXKEEPROM;
-#endif
}
bool CGUIWindowSystemInfo::OnAction(const CAction &action)
@@ -64,12 +55,7 @@
{
case GUI_MSG_WINDOW_INIT:
{
-#ifdef HAS_SYSINFO
- //Get SystemInformations on Init
CGUIWindow::OnMessage(message);
- //CreateEEPROMBackup("System\\SystemInfo");
- //CSysInfo::BackupBios();
-#endif
SetLabelDummy();
b_IsHome = TRUE;
return true;
@@ -85,7 +71,7 @@
b_IsHome = FALSE;
SetLabelDummy();
SET_CONTROL_LABEL(40,g_localizeStrings.Get(20156));
-#ifdef HAS_SYSINFO
+ #ifdef HAS_SYSINFO
//Label 2-6; HDD Values
SET_CONTROL_LABEL(2, g_infoManager.GetLabel(SYSTEM_HDD_MODEL));
SET_CONTROL_LABEL(3, g_infoManager.GetLabel(SYSTEM_HDD_SERIAL));
@@ -94,17 +80,17 @@
SET_CONTROL_LABEL(6, g_infoManager.GetLabel(SYSTEM_HDD_LOCKSTATE));
//Label 7: HDD Lock/UnLock key
- CStdString strhddlockey;
- GetHDDKey(strhddlockey);
- SET_CONTROL_LABEL(7, strhddlockey);
+ SET_CONTROL_LABEL(7, g_sysinfo.GetHDDKey());
//Label 8 + 9: Refurb Info
- GetRefurbInfo(8, 9);
+ CStdString rfi_FirstBootTime, rfi_PowerCycleCount;
+ g_sysinfo.GetRefurbInfo(rfi_FirstBootTime, rfi_PowerCycleCount);
+ SET_CONTROL_LABEL(8, rfi_FirstBootTime);
+ SET_CONTROL_LABEL(9, rfi_PowerCycleCount);
//Label 10: HDD Temperature
SET_CONTROL_LABEL(10, g_infoManager.GetLabel(SYSTEM_HDD_TEMPERATURE));
-
-#endif
+ #endif
}
else if(iControl == CONTROL_BT_DVD)
{
@@ -143,9 +129,7 @@
GetNetwork(2,5,3,6,7,8,9); // Label 2-7
// Label 8: Mac Address
- CStdString strMacAddress;
- GetMACAddress(strMacAddress);
- SET_CONTROL_LABEL(4, strMacAddress);
+ SET_CONTROL_LABEL(4, g_sysinfo.GetMACAddress());
// Label 9: Online State
CStdString strInetCon;
@@ -167,14 +151,10 @@
SET_CONTROL_LABEL(4,g_infoManager.GetLabel(SYSTEM_AV_CABLE_PACK_INFO));
// Label 5: XBE Video Region
- CStdString strVideoXBERegion;
- GetVideoXBERegion(strVideoXBERegion);
- SET_CONTROL_LABEL(5,strVideoXBERegion);
+ SET_CONTROL_LABEL(5,g_sysinfo.GetVideoXBERegion());
// Label 6: DVD Zone
- CStdString strdvdzone;
- GetDVDZone(strdvdzone);
- SET_CONTROL_LABEL(6, strdvdzone);
+ SET_CONTROL_LABEL(6, g_sysinfo.GetDVDZone());
#endif
}
else if(iControl == CONTROL_BT_HARDWARE)
@@ -198,10 +178,8 @@
SET_CONTROL_LABEL(2,g_infoManager.GetLabel(SYSTEM_XBOX_VERSION));
// Label 3: XBOX Serial
- CStdString strXBSerial, strXBOXSerial;
- CStdString strlblXBSerial = g_localizeStrings.Get(13289);
- GetXBOXSerial(strXBSerial);
- strXBOXSerial.Format("%s %s",strlblXBSerial,strXBSerial);
+ CStdString strXBOXSerial;
+ strXBOXSerial.Format("%s %s",g_localizeStrings.Get(13289) ,g_sysinfo.GetXBOXSerial());
SET_CONTROL_LABEL(3,strXBOXSerial);
// Label 4: CPU Speed!
@@ -225,22 +203,19 @@
if (GetBIOSInfo(strBiosName))
SET_CONTROL_LABEL(6,strBiosName);
- // Label 7: XBOX Live Key
- //CStdString strXBLiveKey;
- //GetXBLiveKey(strXBLiveKey);
- //SET_CONTROL_LABEL(7, strXBLiveKey);
-
// Label 8: XBOX ProducutionDate Info
- CStdString strXBProDate;
- GetXBProduceInfo(strXBProDate);
- SET_CONTROL_LABEL(7, strXBProDate);
+ SET_CONTROL_LABEL(7, g_sysinfo.GetXBProduceInfo());
// Label 8,9,10,11: Attached Units!
- SET_CONTROL_LABEL(8, CSysInfo::GetUnits(1));
- SET_CONTROL_LABEL(9, CSysInfo::GetUnits(2));
- SET_CONTROL_LABEL(10, CSysInfo::GetUnits(3));
- SET_CONTROL_LABEL(11, CSysInfo::GetUnits(4));
- //GetUnits(9, 10, 11);
+ SET_CONTROL_LABEL(8, g_sysinfo.GetUnits(1));
+ SET_CONTROL_LABEL(9, g_sysinfo.GetUnits(2));
+ SET_CONTROL_LABEL(10, g_sysinfo.GetUnits(3));
+ SET_CONTROL_LABEL(11, g_sysinfo.GetUnits(4));
+ // Creating BackUP
+ g_sysinfo.CreateEEPROMBackup();
+ g_sysinfo.CreateBiosBackup();
+ g_sysinfo.WriteTXTInfoFile("Q:\\System\\SystemInfo\\SYSTEM_INFO.TXT");
+ //
pDlgProgress.SetPercentage(100);
pDlgProgress.Progress();
pDlgProgress.Close();
@@ -307,33 +282,18 @@
CStdString version, buildDate;
version.Format("%s %s", g_localizeStrings.Get(144), g_infoManager.GetVersion());
buildDate.Format("XBMC %s (Compiled :%s)", version, g_infoManager.GetBuild());
-#ifdef HAS_SYSINFO
- if (mplayerVersion.IsEmpty())
- mplayerVersion = g_infoManager.GetLabel(SYSTEM_MPLAYER_VERSION);
-#endif
SET_CONTROL_LABEL(label1, version);
SET_CONTROL_LABEL(label2, buildDate);
- SET_CONTROL_LABEL(label3, mplayerVersion);
+ SET_CONTROL_LABEL(label3, g_infoManager.GetLabel(SYSTEM_MPLAYER_VERSION));
return true;
}
#ifdef HAS_SYSINFO
-void CGUIWindowSystemInfo::GetMACAddress(CStdString& strMacAddress)
-{
- char macaddress[20] = "";
-
- m_pXKEEPROM->GetMACAddressString((LPSTR)&macaddress, ':');
-
- CStdString lbl1 = g_localizeStrings.Get(149);
-
- strMacAddress.Format("%s: %s", lbl1, macaddress);
-}
-
bool CGUIWindowSystemInfo::GetBIOSInfo(CStdString& strBiosName)
{
CStdString cBIOSName;
CStdString strlblBios = g_localizeStrings.Get(13285);
- if(CSysInfo::CheckBios(cBIOSName))
+ if(g_sysinfo.CheckBios(cBIOSName))
{
strBiosName.Format("%s %s", strlblBios,cBIOSName);
return true;
@@ -344,54 +304,13 @@
return true;
}
}
-
-void CGUIWindowSystemInfo::GetXBOXSerial(CStdString& strXBOXSerial)
-{
- CHAR serial[SERIALNUMBER_SIZE + 1] = "";
-
- m_pXKEEPROM->GetSerialNumberString(serial);
-
- strXBOXSerial.Format("%s", serial);
-}
-
-void CGUIWindowSystemInfo::GetXBProduceInfo(CStdString& strXBProDate)
-{
- // Print XBOX Production Place and Date
- CStdString lbl = g_localizeStrings.Get(13290);
- CStdString lblYear = g_localizeStrings.Get(201);
- CStdString serialnumber;
- GetXBOXSerial(serialnumber);
- char *info = (char *) serialnumber.c_str();
- char *country;
- switch (atoi(&info[11]))
- {
- case 2:
- country = "Mexico";
- break;
- case 3:
- country = "Hungary";
- break;
- case 5:
- country = "China";
- break;
- case 6:
- country = "Taiwan";
- break;
- default:
- country = "Unknown";
- break;
- }
- CLog::Log(LOGDEBUG, "- XBOX production info: Country: %s, LineNumber: %c, Week %c%c, Year 200%c", country, info[0x00], info[0x08], info[0x09],info[0x07]);
- strXBProDate.Format("%s %s, %s 200%c, "+g_localizeStrings.Get(20169)+": %c%c "+g_localizeStrings.Get(20170)+": %c",lbl, country, lblYear,info[0x07], info[0x08],info[0x09], info[0x00]);
-}
-
bool CGUIWindowSystemInfo::GetModChipInfo(CStdString& strModChip)
{
// XBOX Modchip Type Detection
- CStdString ModChip = CSysInfo::GetModCHIPDetected();
+ CStdString ModChip = g_sysinfo.GetModCHIPDetected();
CStdString lblModChip = g_localizeStrings.Get(13291);
// Check if it is a SmartXX
- CStdString strIsSmartXX = CSysInfo::SmartXXModCHIP();
+ CStdString strIsSmartXX = g_sysinfo.SmartXXModCHIP();
if (!strIsSmartXX.Equals("None"))
{
strModChip.Format("%s %s", lblModChip.c_str(),strIsSmartXX);
@@ -412,59 +331,6 @@
}
return false;
}
-
-void CGUIWindowSystemInfo::GetVideoXBERegion(CStdString& strVideoXBERegion)
-{
- //Print Video Standard & XBE Region...
- CStdString lblVXBE = g_localizeStrings.Get(13293);
- CStdString XBEString, VideoStdString;
-
- switch (m_pXKEEPROM->GetVideoStandardVal())
- {
- case XKEEPROM::NTSC_J:
- VideoStdString = "NTSC J";
- break;
- case XKEEPROM::NTSC_M:
- VideoStdString = "NTSC M";
- break;
- case XKEEPROM::PAL_I:
- VideoStdString = "PAL I";
- break;
- case XKEEPROM::PAL_M:
- VideoStdString = "PAL M";
- break;
- default:
- VideoStdString = g_localizeStrings.Get(13205); // "Unknown"
- }
-
- switch(m_pXKEEPROM->GetXBERegionVal())
- {
- case XKEEPROM::NORTH_AMERICA:
- XBEString = "North America";
- break;
- case XKEEPROM::JAPAN:
- XBEString = "Japan";
- break;
- case XKEEPROM::EURO_AUSTRALIA:
- XBEString = "Europe / Australia";
- break;
- default:
- XBEString = g_localizeStrings.Get(13205); // "Unknown"
- }
-
- strVideoXBERegion.Format("%s %s, %s", lblVXBE, VideoStdString, XBEString);
-}
-
-void CGUIWindowSystemInfo::GetDVDZone(CStdString& strdvdzone)
-{
- //Print DVD [Region] Zone ..
- CStdString lblDVDZone = g_localizeStrings.Get(13294);
- DVD_ZONE dvdVal;
-
- dvdVal = m_pXKEEPROM->GetDVDRegionVal();
- strdvdzone.Format("%s %d",lblDVDZone, dvdVal);
-}
-
bool CGUIWindowSystemInfo::GetINetState(CStdString& strInetCon)
{
CHTTP http;
@@ -487,55 +353,7 @@
return true;
}
-void CGUIWindowSystemInfo::GetXBLiveKey(CStdString& strXBLiveKey)
-{
- //Print XBLIVE Online Key..
- CStdString lbl3 = g_localizeStrings.Get(13298);
- char livekey[ONLINEKEY_SIZE * 2 + 1] = "";
- m_pXKEEPROM->GetOnlineKeyString(livekey);
-
- strXBLiveKey.Format("%s %s",lbl3, livekey);
-}
-
-void CGUIWindowSystemInfo::GetHDDKey(CStdString& strhddlockey)
-{
- //Print HDD Key...
- CStdString lbl5 = g_localizeStrings.Get(13150);
- char hdkey[HDDKEY_SIZE * 2 + 1];
-
- m_pXKEEPROM->GetHDDKeyString((LPSTR)&hdkey);
-
- strhddlockey.Format("%s %s",lbl5, hdkey);
-}
-
-bool CGUIWindowSystemInfo::GetRefurbInfo(int label1, int label2)
-{
- XBOX_REFURB_INFO xri;
- CStdString refurb_info;
- SYSTEMTIME sys_time;
-
- if (ExReadWriteRefurbInfo(&xri, sizeof(XBOX_REFURB_INFO), FALSE) < 0)
- return false;
-
- FileTimeToSystemTime((FILETIME*)&xri.FirstBootTime, &sys_time);
-
- refurb_info.Format("%s %d-%d-%d %d:%02d", g_localizeStrings.Get(13173),
- sys_time.wMonth,
- sys_time.wDay,
- sys_time.wYear,
- sys_time.wHour,
- sys_time.wMinute);
-
- SET_CONTROL_LABEL(label1, refurb_info);
-
- refurb_info.Format("%s %d", g_localizeStrings.Get(13174), xri.PowerCycleCount);
-
- SET_CONTROL_LABEL(label2, refurb_info);
-
- return true;
-}
-
bool CGUIWindowSystemInfo::GetNetwork(int i_lblp1, int i_lblp2, int i_lblp3, int i_lblp4, int i_lblp5, int i_lblp6, int i_lblp7)
{
// Set Network Informations
@@ -773,140 +591,4 @@
}
return ret == TRUE;
}
-void CGUIWindowSystemInfo::CreateEEPROMBackup(LPCSTR BackupFilePrefix)
-{
- char backup_path[MAX_PATH];
-
- wsprintf(backup_path, "Q:\\%s\\EEPROMBackup.bin", BackupFilePrefix);
- m_pXKEEPROM->WriteToBINFile(backup_path);
-
- wsprintf(backup_path, "Q:\\%s\\EEPROMBackup.cfg", BackupFilePrefix);
- m_pXKEEPROM->WriteToCFGFile(backup_path);
-}
-
-void CGUIWindowSystemInfo::WriteTXTInfoFile(LPCSTR strFilename)
-{
- BOOL retVal = FALSE;
- DWORD dwBytesWrote = 0;
- CHAR tmpData[SYSINFO_TMP_SIZE];
- CStdString tmpstring;
- LPSTR tmpFileStr = new CHAR[2048];
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- ZeroMemory(tmpFileStr, 2048);
-
- HANDLE hf = CreateFile(strFilename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hf != INVALID_HANDLE_VALUE)
- {
- //Write File Header..
- strcat(tmpFileStr, "******* XBOXMEDIACENTER [XBMC] INFORMATION FILE *******\r\n");
- if (m_XBOX_Version== m_pXKEEPROM->V1_0)
- strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.0");
- else if (m_XBOX_Version == m_pXKEEPROM->V1_1)
- strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.1");
- else if (m_XBOX_Version == m_pXKEEPROM->V1_6)
- strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.6");
- //Get Kernel Version
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- sprintf(tmpData, "\r\nKernel Version: \t%d.%d.%d.%d", XboxKrnlVersion->VersionMajor,XboxKrnlVersion->VersionMinor,XboxKrnlVersion->Build,XboxKrnlVersion->Qfe);
- strcat(tmpFileStr, tmpData);
-
- //Get Memory Status
- strcat(tmpFileStr, "\r\nXBOX RAM = \t\t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- MEMORYSTATUS stat;
- GlobalMemoryStatus( &stat );
- ltoa(stat.dwTotalPhys/1024/1024, tmpData, 10);
- strcat(tmpFileStr, tmpData);
- strcat(tmpFileStr, " MBytes");
-
- //Write Serial Number..
- strcat(tmpFileStr, "\r\n\r\nXBOX Serial Number = \t");
- GetXBOXSerial(tmpstring);
- strcat(tmpFileStr, tmpstring.c_str());
-
- //Write MAC Address..
- strcat(tmpFileStr, "\r\nXBOX MAC Address = \t");
- GetMACAddress(tmpstring);
- strcat(tmpFileStr, tmpstring.c_str());
-
- //Write Online Key ..
- strcat(tmpFileStr, "\r\nXBOX Online Key = \t");
- GetXBLiveKey(tmpstring);
- strcat(tmpFileStr, tmpstring.c_str());
-
- //Write VideoMode ..
- strcat(tmpFileStr, "\r\nXBOX Video Mode = \t");
- VIDEO_STANDARD vdo = m_pXKEEPROM->GetVideoStandardVal();
- if (vdo == XKEEPROM::VIDEO_STANDARD::PAL_I)
- strcat(tmpFileStr, "PAL");
- else
- strcat(tmpFileStr, "NTSC");
-
- //Write XBE Region..
- strcat(tmpFileStr, "\r\nXBOX XBE Region = \t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- m_pXKEEPROM->GetXBERegionString(tmpData);
- strcat(tmpFileStr, tmpData);
-
- //Write HDDKey..
- strcat(tmpFileStr, "\r\nXBOX HDD Key = \t\t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- m_pXKEEPROM->GetHDDKeyString(tmpData);
- strcat(tmpFileStr, tmpData);
-
- //Write Confounder..
- strcat(tmpFileStr, "\r\nXBOX Confounder = \t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- m_pXKEEPROM->GetConfounderString(tmpData);
- strcat(tmpFileStr, tmpData);
-
- //GET HDD Info...
- //Query ATA IDENTIFY
- XKHDD::ATA_COMMAND_OBJ cmdObj;
- ZeroMemory(&cmdObj, sizeof(XKHDD::ATA_COMMAND_OBJ));
- cmdObj.IPReg.bCommandReg = IDE_ATA_IDENTIFY;
- cmdObj.IPReg.bDriveHeadReg = IDE_DEVICE_MASTER;
- XKHDD::SendATACommand(IDE_PRIMARY_PORT, &cmdObj, IDE_COMMAND_READ);
-
- //Write HDD Model
- strcat(tmpFileStr, "\r\n\r\nXBOX HDD Model = \t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- XKHDD::GetIDEModel(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
- strcat(tmpFileStr, tmpData);
-
- //Write HDD Serial..
- strcat(tmpFileStr, "\r\nXBOX HDD Serial = \t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- XKHDD::GetIDESerial(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
- strcat(tmpFileStr, tmpData);
-
- //Write HDD Password..
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- strcat(tmpFileStr, "\r\n\r\nXBOX HDD Password = \t");
-
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- BYTE HDDpwd[20];
- ZeroMemory(HDDpwd, 20);
- XKHDD::GenerateHDDPwd((UCHAR *)XboxHDKey, cmdObj.DATA_BUFFER, (UCHAR*)&HDDpwd);
- XKGeneral::BytesToHexStr(HDDpwd, 20, tmpData);
- strcat(tmpFileStr, tmpData);
-
- //Query ATAPI IDENTIFY
- ZeroMemory(&cmdObj, sizeof(XKHDD::ATA_COMMAND_OBJ));
- cmdObj.IPReg.bCommandReg = IDE_ATAPI_IDENTIFY;
- cmdObj.IPReg.bDriveHeadReg = IDE_DEVICE_SLAVE;
- XKHDD::SendATACommand(IDE_PRIMARY_PORT, &cmdObj, IDE_COMMAND_READ);
-
- //Write DVD Model
- strcat(tmpFileStr, "\r\n\r\nXBOX DVD Model = \t");
- ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
- XKHDD::GetIDEModel(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
- strcat(tmpFileStr, tmpData);
- strupr(tmpFileStr);
-
- WriteFile(hf, tmpFileStr, (DWORD)strlen(tmpFileStr), &dwBytesWrote, NULL);
- }
- delete[] tmpFileStr;
- CloseHandle(hf);
-}
#endif
\ No newline at end of file
Modified: trunk/XBMC/xbmc/GUIWindowSystemInfo.h
===================================================================
--- trunk/XBMC/xbmc/GUIWindowSystemInfo.h 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/GUIWindowSystemInfo.h 2007-02-26 09:20:48 UTC (rev 7930)
@@ -1,6 +1,5 @@
#pragma once
#include "guiwindow.h"
-#include "xbox/xkeeprom.h"
#define CONTROL_BT_HDD 92
#define CONTROL_BT_DVD 93
@@ -9,61 +8,35 @@
#define CONTROL_BT_NETWORK 96
#define CONTROL_BT_VIDEO 97
#define CONTROL_BT_HARDWARE 98
+
#define AddStr(a,b) (pstrOut += wsprintf( pstrOut, a, b ))
-#define SYSINFO_TMP_SIZE 256
-
class CGUIWindowSystemInfo :
public CGUIWindow
{
public:
CGUIWindowSystemInfo(void);
virtual ~CGUIWindowSystemInfo(void);
- virtual bool OnMessage(CGUIMessage& message);
- virtual bool OnAction(const CAction &action);
- virtual void Render();
+ virtual bool OnMessage(CGUIMessage& message);
+ virtual bool OnAction(const CAction &action);
+ virtual void Render();
void SetLabelDummy();
bool GetBuildTime(int i_lblp1, int i_lblp2, int i_lblp3);
- static bool GetResolution(CStdString& strResol);
- static void GetFreeMemory(CStdString& strFreeMem);
#ifdef HAS_SYSINFO
- void UpdateButtons();
- void CreateEEPROMBackup(LPCSTR BackupFilePrefix);
- void WriteTXTInfoFile(LPCSTR strFilename);
-
- bool GetUnits(int i_lblp1, int i_lblp2, int i_lblp3);
- bool GetRefurbInfo(int label1, int label2);
bool GetNetwork(int i_lblp1, int i_lblp2, int i_lblp3, int i_lblp4, int i_lblp5, int i_lblp6, int i_lblp7);
bool GetStorage(int i_lblp1, int i_lblp2, int i_lblp3, int i_lblp4, int i_lblp5, int i_lblp6, int i_lblp7, int i_lblp8, int i_lblp9, int i_lblp10);
- void GetMACAddress(CStdString& strMacAddress);
- static bool GetBIOSInfo(CStdString& strBiosName);
- static bool GetXBVerInfo(CStdString& strXBoxVer);
- void GetXBOXSerial(CStdString& strXBOXSerial);
- void GetXBProduceInfo(CStdString& strXBProDate);
+ static bool GetBIOSInfo(CStdString& strBiosName);
static bool GetModChipInfo(CStdString& strModChip);
- void GetVideoXBERegion(CStdString& strVideoXBERegion);
- void GetDVDZone(CStdString& strdvdzone);
static bool GetINetState(CStdString& strInetCon);
- void GetXBLiveKey(CStdString& strXBLiveKey);
- void GetHDDKey(CStdString& strhddlockey);
+
#endif
private:
bool b_IsHome;
- DWORD m_dwFPSTime;
- DWORD m_dwFrames;
- float cputemp;
- float mbtemp;
- CStdString mplayerVersion;
-
#ifdef HAS_SYSINFO
bool GetDiskSpace(const CStdString &drive, ULARGE_INTEGER &total, ULARGE_INTEGER& totalFree, CStdString &string);
-#ifdef HAS_XBOX_HARDWARE
- XKEEPROM* m_pXKEEPROM;
- XBOX_VERSION m_XBOX_Version;
#endif
-#endif
};
Modified: trunk/XBMC/xbmc/lib/smartXX/smartxxlcd.cpp
===================================================================
--- trunk/XBMC/xbmc/lib/smartXX/smartxxlcd.cpp 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/lib/smartXX/smartxxlcd.cpp 2007-02-26 09:20:48 UTC (rev 7930)
@@ -381,7 +381,7 @@
}
else //if (g_guiSettings.GetInt("lcd.type")==LCD_TYPE_LCD_HD44780)
{
- if (CSysInfo::SmartXXModCHIP().Equals("SmartXX V3"))
+ if (g_sysinfo.SmartXXModCHIP().Equals("SmartXX V3"))
{
float fBackLight=((float)level)/100.0f;
fBackLight*=127.0f;
@@ -389,7 +389,7 @@
if (iNewLevel==63) iNewLevel=64;
_outp(DISP_O_LIGHT, iNewLevel&127);
}
- else if (CSysInfo::SmartXXModCHIP().Equals("SmartXX OPX"))
+ else if (g_sysinfo.SmartXXModCHIP().Equals("SmartXX OPX"))
{
float fBackLight=((float)level)/100.0f;
fBackLight*=127.0f;
@@ -418,7 +418,7 @@
float fBackLight=((float)level)/100.0f;
- if (CSysInfo::SmartXXModCHIP().Equals("SmartXX V3")) // Smartxx V3
+ if (g_sysinfo.SmartXXModCHIP().Equals("SmartXX V3")) // Smartxx V3
{
if (level<0 || level>99) level=99;
level = (99-level);
@@ -429,7 +429,7 @@
_outp(0xF701, iNewLevel&127|128);
}
- else if ( CSysInfo::SmartXXModCHIP().Equals("SmartXX OPX"))
+ else if ( g_sysinfo.SmartXXModCHIP().Equals("SmartXX OPX"))
{
if (level<0 || level>99) level=99;
level = (99-level);
Modified: trunk/XBMC/xbmc/utils/GUIInfoManager.cpp
===================================================================
--- trunk/XBMC/xbmc/utils/GUIInfoManager.cpp 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/utils/GUIInfoManager.cpp 2007-02-26 09:20:48 UTC (rev 7930)
@@ -576,56 +576,54 @@
break;
case SYSTEM_HDD_TEMPERATURE:
- return GetATAInfo("hddtemperature");
+ return GetATAInfo(SYSTEM_HDD_TEMPERATURE);
break;
case SYSTEM_HDD_MODEL:
- return GetATAInfo("hddinfomodel");
+ return GetATAInfo(SYSTEM_HDD_MODEL);
break;
case SYSTEM_HDD_SERIAL:
- return GetATAInfo("hddinfoserial");
+ return GetATAInfo(SYSTEM_HDD_SERIAL);
break;
case SYSTEM_HDD_FIRMWARE:
- return GetATAInfo("hddinfofirmware");
+ return GetATAInfo(SYSTEM_HDD_FIRMWARE);
break;
case SYSTEM_HDD_PASSWORD:
- return GetATAInfo("hddinfopw");
+ return GetATAInfo(SYSTEM_HDD_PASSWORD);
break;
case SYSTEM_HDD_LOCKSTATE:
- return GetATAInfo("hddinfolockstate");
+ return GetATAInfo(SYSTEM_HDD_LOCKSTATE);
break;
case SYSTEM_DVD_MODEL:
- return GetATAInfo("dvdinfomodel");
+ return GetATAInfo(SYSTEM_DVD_MODEL);
break;
case SYSTEM_DVD_FIRMWARE:
- return GetATAInfo("dvdinfofirmware");
+ return GetATAInfo(SYSTEM_DVD_FIRMWARE);
break;
case SYSTEM_MPLAYER_VERSION:
- return CSysInfo::GetMPlayerVersion();
+ return SystemInfoValues(SYSTEM_MPLAYER_VERSION);
break;
case SYSTEM_KERNEL_VERSION:
- return CSysInfo::GetKernelVersion();
+ return SystemInfoValues(SYSTEM_KERNEL_VERSION);
break;
-
case SYSTEM_UPTIME:
- return CSysInfo::GetSystemUpTime();
+ return SystemInfoValues(SYSTEM_UPTIME);
break;
case SYSTEM_TOTALUPTIME:
- return CSysInfo::GetSystemTotalUpTime();
+ return SystemInfoValues(SYSTEM_TOTALUPTIME);
break;
case SYSTEM_CPUFREQUENCY:
- return CSysInfo::GetCPUFreqInfo();
+ return SystemInfoValues(SYSTEM_CPUFREQUENCY);
break;
case SYSTEM_XBOX_VERSION:
- return CSysInfo::GetXBVerInfo();
+ return SystemInfoValues(SYSTEM_XBOX_VERSION);
break;
case SYSTEM_AV_CABLE_PACK_INFO:
- strLabel.Format("%s %s",g_localizeStrings.Get(13292), CSysInfo::GetAVPackInfo());
- return strLabel;
+ return SystemInfoValues(SYSTEM_AV_CABLE_PACK_INFO);
break;
case SYSTEM_SCREEN_RESOLUTION:
@@ -637,9 +635,9 @@
break;
case SYSTEM_VIDEO_ENCODER_INFO:
- strLabel.Format("%s %s", g_localizeStrings.Get(13286),CSysInfo::GetVideoEncoder());
- return strLabel;
+ return SystemInfoValues(SYSTEM_VIDEO_ENCODER_INFO);
break;
+
case CONTAINER_FOLDERPATH:
{
@@ -1842,63 +1840,149 @@
return space;
}
-string CGUIInfoManager::GetATAInfo(const CStdString &strInfo)
+CStdString CGUIInfoManager::GetATAInfo(int info)
{
#ifdef HAS_XBOX_HARDWARE
if (timeGetTime() - m_lastHddInfoTime >= 5000)
- { // update our variables
+ {
+ // update our variables
+ if (!b_ata_request)
+ {
+ // We should only request 1 time the HDD Informations
+ // If we request frequence is more then 1 time, we will have a <1sec. Freeze
+ // of HDD releated functions like FTP, movie play ect.
+ b_ata_request = true;
+ m_hddRequest = g_sysinfo.GetHDDInfo(strHDDModel, strHDDSerial,strHDDFirmware,strHDDpw,strHDDLockState);
+ m_dvdRequest = g_sysinfo.GetDVDInfo(strDVDModel, strDVDFirmware);
+ }
+ b_HddTemp = XKHDD::GetHddSmartTemp();
m_lastHddInfoTime = timeGetTime();
- b_HddTemp = XKHDD::GetHddSmartTemp();
- m_hddRequest = CSysInfo::GetHDDInfo(strHDDModel, strHDDSerial,strHDDFirmware,strHDDpw,strHDDLockState);
- m_dvdRequest = CSysInfo::GetDVDInfo(strDVDModel, strDVDFirmware);
}
#endif
CStdString text;
- if (strInfo.Equals("hddtemperature"))
+ switch(info)
{
- CTemperature temp = CTemperature::CreateFromCelsius((double)b_HddTemp);
- if (b_HddTemp == 0 )
- {
- temp.SetState(CTemperature::invalid);
- text.Format("%s %s", g_localizeStrings.Get(13151).c_str(), temp.ToString() );
- }
- else
- {
- text.Format("%s %s", g_localizeStrings.Get(13151).c_str(), temp.ToString() );
- }
- }
- else if (strInfo.Left(7).Equals("hddinfo"))
- {
- if (m_hddRequest)
- {
- if(strInfo.Equals("hddinfomodel"))
- text.Format("%s %s", g_localizeStrings.Get(13154).c_str(), strHDDModel.c_str() );
- else if(strInfo.Equals("hddinfoserial"))
- text.Format("%s %s", g_localizeStrings.Get(13155).c_str(), strHDDSerial.c_str() );
- else if(strInfo.Equals("hddinfofirmware"))
- text.Format("%s %s", g_localizeStrings.Get(13156).c_str(), strHDDFirmware.c_str() );
- else if(strInfo.Equals("hddinfopw"))
- text.Format("%s %s", g_localizeStrings.Get(13157).c_str(), strHDDpw.c_str() );
- else if(strInfo.Equals("hddinfolockstate"))
- text.Format("%s %s", g_localizeStrings.Get(13158).c_str(), strHDDLockState.c_str() );
- }
- else
+ case SYSTEM_HDD_TEMPERATURE:
+ {
+ CTemperature temp = CTemperature::CreateFromCelsius((double)b_HddTemp);
+ if (b_HddTemp == 0 )
+ {
+ temp.SetState(CTemperature::invalid);
+ text.Format("%s %s", g_localizeStrings.Get(13151).c_str(), temp.ToString() );
+ }
+ else
+ {
+ text.Format("%s %s", g_localizeStrings.Get(13151).c_str(), temp.ToString() );
+ }
+ return text;
+ break;
+ }
+ case SYSTEM_HDD_MODEL:
+ {
+ if(m_hddRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13154).c_str(), strHDDModel.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_HDD_SERIAL:
+ {
+ if(m_hddRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13155).c_str(), strHDDSerial.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_HDD_FIRMWARE:
+ {
+ if(m_hddRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13156).c_str(), strHDDFirmware.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_HDD_PASSWORD:
+ {
+ if(m_hddRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13157).c_str(), strHDDpw.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_HDD_LOCKSTATE:
+ {
+ if(m_hddRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13158).c_str(), strHDDLockState.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_DVD_MODEL:
+ {
+ if (m_dvdRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13152).c_str(), strDVDModel.c_str() );
+ return text;
+ break;
+ }
+ case SYSTEM_DVD_FIRMWARE:
+ {
+ if (m_dvdRequest)
+ text.Format("%s %s", g_localizeStrings.Get(13153).c_str(), strDVDFirmware.c_str() );
+ return text;
+ break;
+ }
+ default:
text.Format("%s",g_localizeStrings.Get(13205) ); // "Unknown"
+ break;
}
- else if (strInfo.Left(7).Equals("dvdinfo"))
+ return text;
+}
+
+CStdString CGUIInfoManager::SystemInfoValues(int info)
+{
+ if (timeGetTime() - m_lastSysInfoTime >= 5000)
+ { // update our variables, update interval 1 minute
+ m_lastSysInfoTime = timeGetTime();
+ m_systemuptime = g_sysinfo.GetSystemUpTime();
+ m_systemtotaluptime = g_sysinfo.GetSystemTotalUpTime();
+#ifdef HAS_XBOX_HARDWARE
+ // values are only need one time request
+ b_sys_request = true;
+ m_mplayerversion = g_sysinfo.GetMPlayerVersion();
+ m_kernelversion = g_sysinfo.GetKernelVersion();
+ m_cpufrequency = g_sysinfo.GetCPUFreqInfo();
+ m_xboxversion = g_sysinfo.GetXBVerInfo();
+ m_avcablepackinfo = g_sysinfo.GetAVPackInfo();
+ m_videoencoder = g_sysinfo.GetVideoEncoder();
+#endif
+ }
+ switch (info)
{
- if (m_dvdRequest)
- {
- if(strInfo.Equals("dvdinfomodel"))
- text.Format("%s %s", g_localizeStrings.Get(13152).c_str(), strDVDModel.c_str() );
- else if(strInfo.Equals("dvdinfofirmware"))
- text.Format("%s %s", g_localizeStrings.Get(13153).c_str(), strDVDFirmware.c_str() );
- }
- else
- text.Format("%s",g_localizeStrings.Get(13205) ); // "Unknown"
+ case SYSTEM_MPLAYER_VERSION:
+ return m_mplayerversion;
+ break;
+ case SYSTEM_KERNEL_VERSION:
+ return m_kernelversion;
+ break;
+ case SYSTEM_UPTIME:
+ return m_systemuptime;
+ break;
+ case SYSTEM_TOTALUPTIME:
+ return m_systemtotaluptime;
+ break;
+ case SYSTEM_CPUFREQUENCY:
+ return m_cpufrequency;
+ break;
+ case SYSTEM_XBOX_VERSION:
+ return m_xboxversion;
+ break;
+ case SYSTEM_AV_CABLE_PACK_INFO:
+ return m_avcablepackinfo;
+ break;
+ case SYSTEM_VIDEO_ENCODER_INFO:
+ return m_videoencoder;
+ break;
+
+ default:
+ return "";
+ break;
}
- return text;
}
CStdString CGUIInfoManager::GetVersion()
Modified: trunk/XBMC/xbmc/utils/GUIInfoManager.h
===================================================================
--- trunk/XBMC/xbmc/utils/GUIInfoManager.h 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/utils/GUIInfoManager.h 2007-02-26 09:20:48 UTC (rev 7930)
@@ -352,7 +352,9 @@
bool m_performingSeek;
string GetSystemHeatInfo(const CStdString &strInfo);
- string GetATAInfo(const CStdString &strInfo);
+ CStdString GetATAInfo(int info);
+ CStdString SystemInfoValues(int info);
+
void UpdateFPS();
inline float GetFPS() const { return m_fps; };
@@ -414,9 +416,23 @@
bool m_hddRequest;
CStdString strDVDModel, strDVDFirmware;
bool m_dvdRequest;
+ bool b_ata_request;
+ DWORD m_lastSysInfoTime;
+ CStdString m_mplayerversion;
+ CStdString m_kernelversion;
+ CStdString m_systemuptime;
+ CStdString m_systemtotaluptime;
+ CStdString m_cpufrequency;
+ CStdString m_xboxversion;
+ CStdString m_avcablepackinfo;
+ CStdString m_videoencoder;
+ bool b_sys_request;
+
+
+
//Fullscreen OSD Stuff
DWORD m_AfterSeekTimeout;
bool m_playerSeeking;
Modified: trunk/XBMC/xbmc/utils/LED.cpp
===================================================================
--- trunk/XBMC/xbmc/utils/LED.cpp 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/utils/LED.cpp 2007-02-26 09:20:48 UTC (rev 7930)
@@ -63,7 +63,7 @@
}
void ILEDSmartxxRGB::OnStartup()
{
- if (CSysInfo::SmartXXModCHIP().Equals("SmartXX V3") || CSysInfo::SmartXXModCHIP().Equals("SmartXX OPX"))
+ if (g_sysinfo.SmartXXModCHIP().Equals("SmartXX V3") || g_sysinfo.SmartXXModCHIP().Equals("SmartXX OPX"))
{
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST);
CLog::Log(LOGDEBUG,"Starting SmartXX RGB LED thread");
@@ -273,7 +273,7 @@
bool ILEDSmartxxRGB::Start()
{
- if (CSysInfo::SmartXXModCHIP().Equals("SmartXX V3") || CSysInfo::SmartXXModCHIP().Equals("SmartXX OPX"))
+ if (g_sysinfo.SmartXXModCHIP().Equals("SmartXX V3") || g_sysinfo.SmartXXModCHIP().Equals("SmartXX OPX"))
{
Create();
return true;
Modified: trunk/XBMC/xbmc/utils/SystemInfo.cpp
===================================================================
--- trunk/XBMC/xbmc/utils/SystemInfo.cpp 2007-02-26 09:17:36 UTC (rev 7929)
+++ trunk/XBMC/xbmc/utils/SystemInfo.cpp 2007-02-26 09:20:48 UTC (rev 7930)
@@ -20,7 +20,7 @@
*/
#include "../stdafx.h"
#include "SystemInfo.h"
-
+#include <conio.h>
#include "../xbox/XKUtils.h"
#include "../xbox/xkhdd.h"
#include "../xbox/XKflash.h"
@@ -28,19 +28,56 @@
#include "../settings.h"
#include "../utils/log.h"
#include "../xbox/Undocumented.h"
-#include "../xbox/xkeeprom.h"
#include "../cores/dllloader/dllloader.h"
-#include <conio.h>
-
-const char * CSysInfo::cTempBIOSFile = "Q:\\System\\SystemInfo\\BiosBackup.bin";
-const char * CSysInfo::cBIOSmd5IDs = "Q:\\System\\SystemInfo\\BiosIDs.ini";
-char CSysInfo::MD5_Sign[32 + 1];
extern "C" XPP_DEVICE_TYPE XDEVICE_TYPE_IR_REMOTE_TABLE;
-#define XDEVICE_TYPE_IR_REMOTE (&XDEVICE_TYPE_IR_REMOTE_TABLE)
-#define DEBUG_KEYBOARD
-#define DEBUG_MOUSE
+CSysInfo g_sysinfo;
+
+CSysInfo::CSysInfo()
+{
+ m_XKEEPROM = new XKEEPROM;
+ m_XKEEPROM->ReadFromXBOX();
+ m_XBOXVersion = m_XKEEPROM->GetXBOXVersion();
+}
+CSysInfo::~CSysInfo()
+{
+ delete m_XKEEPROM;
+}
+struct Bios * CSysInfo::LoadBiosSigns()
+{
+ FILE *infile;
+
+ if ((infile = fopen(XBOX_BIOS_ID_INI_FILE,"r")) == NULL)
+ {
+ CLog::Log(LOGDEBUG, "ERROR LOADING BIOSES.INI!!");
+ return NULL;
+ }
+ else
+ {
+ struct Bios * Listone = (struct Bios *)calloc(1000, sizeof(struct Bios));
+ int cntBioses=0;
+ char buffer[255];
+ char stringone[255];
+ do
+ {
+ fgets(stringone,255,infile);
+ if (stringone[0] != '#')
+ {
+ if (strstr(stringone,"=")!= NULL)
+ {
+ strcpy(Listone[cntBioses].Name,ReturnBiosName(buffer, stringone));
+ strcpy(Listone[cntBioses].Signature,ReturnBiosSign(buffer, stringone));
+ cntBioses++;
+ }
+ }
+ } while( !feof( infile ) && cntBioses < 999 );
+ fclose(infile);
+ strcpy(Listone[cntBioses++].Name,"\0");
+ strcpy(Listone[cntBioses++].Signature,"\0");
+ return Listone;
+ }
+}
char* CSysInfo::MD5Buffer(char *buffer, long PosizioneInizio,int KBytes)
{
MD5_CTX mdContext;
@@ -54,261 +91,186 @@
return MD5_Sign;
}
-CStdString CSysInfo::MD5BufferNew(char *buffer,long PosizioneInizio,int KBytes)
+char* CSysInfo::ReturnBiosName(char *buffer, char *str)
{
- CStdString strReturn;
- MD5_CTX mdContext;
- unsigned char md5sum[16];
- char md5sumstring[33] = "";
- MD5Init (&mdContext);
- MD5Update(&mdContext, (unsigned char *)(buffer + PosizioneInizio), KBytes * 1024);
- MD5Final (md5sum, &mdContext);
- XKGeneral::BytesToHexStr(md5sum, 16, md5sumstring);
- strReturn.Format("%s", md5sumstring);
- return strReturn;
-}
-CStdString CSysInfo::GetAVPackInfo()
-{ //AV-Pack Detection PICReg(0x04)
- int cAVPack;
- HalReadSMBusValue(0x20,XKUtils::PIC16L_CMD_AV_PACK,0,(LPBYTE)&cAVPack);
+ int cnt1,cnt2,i;
+ cnt1=cnt2=0;
- if (cAVPack == XKUtils::AV_PACK_SCART) return "SCART";
- else if (cAVPack == XKUtils::AV_PACK_HDTV) return "HDTV";
- else if (cAVPack == XKUtils::AV_PACK_VGA) return "VGA";
- else if (cAVPack == XKUtils::AV_PACK_RFU) return "RFU";
- else if (cAVPack == XKUtils::AV_PACK_SVideo) return "S-Video";
- else if (cAVPack == XKUtils::AV_PACK_Undefined) return "Undefined";
- else if (cAVPack == XKUtils::AV_PACK_Standard) return "Standard RGB";
- else if (cAVPack == XKUtils::AV_PACK_Missing) return "Missing or Unknown";
- else return "Unknown";
+ for (i=0;i<255;i++) buffer[i]='\0';
+ if ( (strstr(str,"(1MB)")==0) || (strstr(str,"(512)")==0) || (strstr(str,"(256)")==0) )
+ cnt2=5;
+
+ while (str[cnt2] != '=')
+ {
+ buffer[cnt1]=str[cnt2];
+ cnt1++;
+ cnt2++;
+ }
+ buffer[cnt1++]='\0';
+ return buffer;
}
-CStdString CSysInfo::GetVideoEncoder()
+char* CSysInfo::ReturnBiosSign(char *buffer, char *str)
{
- int iTemp;
- if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_CONNEXANT,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
- { CLog::Log(LOGDEBUG, "Video Encoder: CONNEXANT"); return "CONNEXANT"; }
- if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_FOCUS,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
- { CLog::Log(LOGDEBUG, "Video Encoder: FOCUS"); return "FOCUS"; }
- if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_XCALIBUR,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
- { CLog::Log(LOGDEBUG, "Video Encoder: XCALIBUR"); return "XCALIBUR"; }
- else { CLog::Log(LOGDEBUG, "Video Encoder: UNKNOWN"); return "UNKNOWN"; }
+ int cnt1,cnt2,i;
+ cnt1=cnt2=0;
+ for (i=0;i<255;i++) buffer[i]='\0';
+ while (str[cnt2] != '=') cnt2++;
+ cnt2++;
+ while (str[cnt2] != NULL)
+ {
+ if ( str[cnt2] != ' ' )
+ {
+ buffer[cnt1]=toupper(str[cnt2]);
+ cnt1++;
+ cnt2++;
+ }
+ else cnt2++;
+ }
+ buffer[cnt1++]='\0';
+ return buffer;
}
+char* CSysInfo::CheckMD5 (struct Bios *Listone, char *Sign)
+{
+ int cntBioses;
+ cntBioses=0;
+ do
+ {
+ if (strstr(Listone[cntBioses].Signature, Sign) != NULL)
+ { return (Listone[cntBioses].Name); }
+ cntBioses++;
+ }
+ while( strcmp(Listone[cntBioses].Name,"\0") != 0);
+ return ("Unknown");
+}
-CStdString CSysInfo::GetModCHIPDetected()
+void CSysInfo::WriteTXTInfoFile(LPCSTR strFilename)
{
- CXBoxFlash *mbFlash=new CXBoxFlash(); //Max description Leng= 40
+ BOOL retVal = FALSE;
+ DWORD dwBytesWrote = 0;
+ CHAR tmpData[SYSINFO_TMP_SIZE];
+ CStdString tmpstring;
+ LPSTR tmpFileStr = new CHAR[2048];
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ ZeroMemory(tmpFileStr, 2048);
+
+ HANDLE hf = CreateFile(strFilename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (hf != INVALID_HANDLE_VALUE)
{
- // Unknown or TSOP
- mbFlash->AddFCI(0x09,0x00,"Unknown/Onboard TSOP (protected)",0x00000);
+ //Write File Header..
+ strcat(tmpFileStr, "******* XBOXMEDIACENTER [XBMC] INFORMATION FILE *******\r\n");
+ if (m_XBOXVersion== m_XKEEPROM->V1_0)
+ strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.0");
+ else if (m_XBOXVersion == m_XKEEPROM->V1_1)
+ strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.1");
+ else if (m_XBOXVersion == m_XKEEPROM->V1_6)
+ strcat(tmpFileStr, "\r\nXBOX Version = \t\tV1.6");
+ //Get Kernel Version
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ sprintf(tmpData, "\r\nKernel Version: \t%d.%d.%d.%d", XboxKrnlVersion->VersionMajor,XboxKrnlVersion->VersionMinor,XboxKrnlVersion->Build,XboxKrnlVersion->Qfe);
+ strcat(tmpFileStr, tmpData);
- // Known XBOX ModCHIP IDs&Names
- mbFlash->AddFCI(0x01,0xAD,"XECUTER 3",0x100000); // if Write Protection is ON!: this chip can not detected! X3 Bug or Feature! it will return Unknown/Onboard TSOP (protected)!
- mbFlash->AddFCI(0x01,0xD5,"XECUTER 2",0x100000);
- mbFlash->AddFCI(0x01,0xC4,"XENIUM",0x100000);
- mbFlash->AddFCI(0x01,0xC4,"XENIUM",0x000000);
- mbFlash->AddFCI(0x04,0xBA,"ALX2+ R3 FLASH",0x40000);
- // XBOX Possible Flash CHIPs
- mbFlash->AddFCI(0x01,0xb0,"AMD Am29F002BT/NBT",0x40000);
- mbFlash->AddFCI(0x01,0x34,"AMD Am29F002BB/NBB",0x40000);
- mbFlash->AddFCI(0x01,0x51,"AMD Am29F200BT",0x40000);
- mbFlash->AddFCI(0x01,0x57,"AMD Am29F200BB",0x40000);
- mbFlash->AddFCI(0x01,0x40,"AMD Am29LV002BT",0x40000);
- mbFlash->AddFCI(0x01,0xc2,"AMD Am29LV002BB",0x40000);
- mbFlash->AddFCI(0x01,0x3b,"AMD Am29LV200BT",0x40000);
- mbFlash->AddFCI(0x01,0xbf,"AMD Am29LV200BB",0x40000);
- mbFlash->AddFCI(0x01,0x0c,"AMD Am29DL400BT",0x80000);
- mbFlash->AddFCI(0x01,0x0f,"AMD Am29DL400BB",0x80000);
- mbFlash->AddFCI(0x01,0x77,"AMD Am29F004BT",0x80000);
- mbFlash->AddFCI(0x01,0x7b,"AMD Am29F004BB",0x80000);
- mbFlash->AddFCI(0x01,0xa4,"AMD Am29F040B",0x80000);
- mbFlash->AddFCI(0x01,0x23,"AMD Am29F400BT",0x80000);
- mbFlash->AddFCI(0x01,0xab,"AMD Am29F400BB",0x80000);
- mbFlash->AddFCI(0x01,0xb5,"AMD Am29LV004BT",0x80000);
- mbFlash->AddFCI(0x01,0xb6,"AMD Am29LV004BB",0x80000);
- mbFlash->AddFCI(0x01,0x4f,"AMD Am29LV040B",0x80000);
- mbFlash->AddFCI(0x01,0xb9,"AMD Am29LV400BT",0x80000);
- mbFlash->AddFCI(0x01,0xba,"AMD Am29LV400BB",0x80000);
- mbFlash->AddFCI(0x01,0x4a,"AMD Am29DL800BT",0x100000);
- mbFlash->AddFCI(0x01,0xcb,"AMD Am29DL800BB",0x100000);
- mbFlash->AddFCI(0x01,0xd5,"AMD Am29F080B",0x100000);
- mbFlash->AddFCI(0x01,0xd6,"AMD Am29F800BT",0x100000);
- mbFlash->AddFCI(0x01,0x58,"AMD Am29F800BB",0x100000);
- mbFlash->AddFCI(0x01,0x3e,"AMD Am29LV008BT",0x100000);
- mbFlash->AddFCI(0x01,0x37,"AMD Am29LV008BB",0x100000);
- mbFlash->AddFCI(0x01,0x38,"AMD Am29LV080B",0x100000);
- mbFlash->AddFCI(0x01,0xda,"AMD Am29LV800BT/DT",0x100000);
- mbFlash->AddFCI(0x01,0x5b,"AMD Am29LV800BB/DB",0x100000);
+ //Get Memory Status
+ strcat(tmpFileStr, "\r\nXBOX RAM = \t\t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ MEMORYSTATUS stat;
+ GlobalMemoryStatus( &stat );
+ ltoa(stat.dwTotalPhys/1024/1024, tmpData, 10);
+ strcat(tmpFileStr, tmpData);
+ strcat(tmpFileStr, " MBytes");
- mbFlash->AddFCI(0x37,0x8c,"AMIC A29002T/290021T",0x40000);
- mbFlash->AddFCI(0x37,0x0d,"AMIC A29002U/290021U",0x40000);
- mbFlash->AddFCI(0x37,0x86,"AMIC A29040A",0x80000);
- mbFlash->AddFCI(0x37,0xb0,"AMIC A29400T/294001T",0x80000);
- mbFlash->AddFCI(0x37,0x31,"AMIC A29400U/294001U",0x80000);
- mbFlash->AddFCI(0x37,0x34,"AMIC A29L004T/A29L400T",0x80000);
- mbFlash->AddFCI(0x37,0xb5,"AMIC A29L004U/A29L400U",0x80000);
- mbFlash->AddFCI(0x37,0x92,"AMIC A29L040",0x80000);
- mbFlash->AddFCI(0x37,0x0e,"AMIC A29800T",0x100000);
- mbFlash->AddFCI(0x37,0x8f,"AMIC A29800U",0x100000);
- mbFlash->AddFCI(0x37,0x1a,"AMIC A29L008T/A29L800T",0x100000);
- mbFlash->AddFCI(0x37,0x9b,"AMIC A29L008U/A29L800U",0x100000);
+ //Write Serial Number..
+ strcat(tmpFileStr, "\r\n\r\nXBOX Serial Number = \t");
+ CHAR serial[SERIALNUMBER_SIZE + 1] = "";
+ m_XKEEPROM->GetSerialNumberString(serial);
+ strcat(tmpFileStr, serial);
- mbFlash->AddFCI(0x04,0xb0,"Fujitsu MBM29F002TC",0x40000);
- mbFlash->AddFCI(0x04,0x34,"Fujitsu MBM29F002BC",0x40000);
- mbFlash->AddFCI(0x04,0x51,"Fujitsu MBM29F200TC",0x40000);
- mbFlash->AddFCI(0x04,0x57,"Fujitsu MBM29F200BC",0x40000);
- mbFlash->AddFCI(0x04,0x40,"Fujitsu MBM29LV002TC",0x40000);
- mbFlash->AddFCI(0x04,0xc2,"Fujitsu MBM29LV002BC",0x40000);
- mbFlash->AddFCI(0x04,0x3b,"Fujitsu MBM29LV200TC",0x40000);
- mbFlash->AddFCI(0x04,0xbf,"Fujitsu MBM29LV200BC",0x40000);
- mbFlash->AddFCI(0x04,0x0c,"Fujitsu MBM29DL400TC",0x80000);
- mbFlash->AddFCI(0x04,0x0f,"Fujitsu MBM29DL400BC",0x80000);
- mbFlash->AddFCI(0x04,0x77,"Fujitsu MBM29F004TC",0x80000);
- mbFlash->AddFCI(0x04,0x7b,"Fujitsu MBM29F004BC",0x80000);
- mbFlash->AddFCI(0x04,0xa4,"Fujitsu MBM29F040C",0x80000);
- mbFlash->AddFCI(0x04,0x23,"Fujitsu MBM29F400TC",0x80000);
- mbFlash->AddFCI(0x04,0xab,"Fujitsu MBM29F400BC",0x80000);
- mbFlash->AddFCI(0x04,0xb5,"Fujitsu MBM29LV004TC",0x80000);
- mbFlash->AddFCI(0x04,0xb6,"Fujitsu MBM29LV004BC",0x80000);
- mbFlash->AddFCI(0x04,0xb9,"Fujitsu MBM29LV400TC",0x80000);
- mbFlash->AddFCI(0x04,0xba,"Fujitsu MBM29LV400BC",0x80000);
- mbFlash->AddFCI(0x04,0x4a,"Fujitsu MBM29DL800TA",0x100000);
- mbFlash->AddFCI(0x04,0xcb,"Fujitsu MBM29DL800BA",0x100000);
- mbFlash->AddFCI(0x04,0xd5,"Fujitsu MBM29F080A",0x100000);
- mbFlash->AddFCI(0x04,0xd6,"Fujitsu MBM29F800TA",0x100000);
- mbFlash->AddFCI(0x04,0x58,"Fujitsu MBM29F800BA",0x100000);
- mbFlash->AddFCI(0x04,0x3e,"Fujitsu MBM29LV008TA",0x100000);
- mbFlash->AddFCI(0x04,0x37,"Fujitsu MBM29LV008BA",0x100000);
- mbFlash->AddFCI(0x04,0x38,"Fujitsu MBM29LV080A",0x100000);
- mbFlash->AddFCI(0x04,0xda,"Fujitsu MBM29LV800TA/TE",0x100000);
- mbFlash->AddFCI(0x04,0x5b,"Fujitsu MBM29LV800BA/BE",0x100000);
+ //Write MAC Address..
+ strcat(tmpFileStr, "\r\nXBOX MAC Address = \t");
+ m_XKEEPROM->GetMACAddressString((LPSTR)&tmpstring, ':');
+ strcat(tmpFileStr, tmpstring.c_str());
- mbFlash->AddFCI(0xad,0xb0,"Hynix HY29F002",0x40000);
- mbFlash->AddFCI(0xad,0xa4,"Hynix HY29F040A",0x80000);
- mbFlash->AddFCI(0xad,0x23,"Hynix HY29F400T/AT",0x80000);
- mbFlash->AddFCI(0xad,0xab,"Hynix HY29F400B/AB",0x80000);
- mbFlash->AddFCI(0xad,0xb9,"Hynix HY29LV400T",0x80000);
- mbFlash->AddFCI(0xad,0xba,"Hynix HY29LV400B",0x80000);
- mbFlash->AddFCI(0xad,0xd5,"Hynix HY29F080",0x100000);
- mbFlash->AddFCI(0xad,0xd6,"Hynix HY29F800T/AT",0x100000);
- mbFlash->AddFCI(0xad,0x58,"Hynix HY29F800B/AB",0x100000);
- mbFlash->AddFCI(0xad,0xda,"Hynix HY29LV800T",0x100000);
- mbFlash->AddFCI(0xad,0x5b,"Hynix HY29LV800B",0x100000);
+ //Write Online Key ..
+ strcat(tmpFileStr, "\r\nXBOX Online Key = \t");
+ char livekey[ONLINEKEY_SIZE * 2 + 1] = "";
+ m_XKEEPROM->GetOnlineKeyString(livekey);
+ strcat(tmpFileStr, livekey);
- mbFlash->AddFCI(0xc2,0xb0,"Macronix MX29F002T/NT",0x40000);
- mbFlash->AddFCI(0xc2,0x34,"Macronix MX29F002B/NB",0x40000);
- mbFlash->AddFCI(0xc2,0x36,"Macronix MX29F022T/NT",0x40000);
- mbFlash->AddFCI(0xc2,0x37,"Macronix MX29F022B/NB",0x40000);
- mbFlash->AddFCI(0xc2,0x51,"Macronix MX29F200T",0x40000);
- mbFlash->AddFCI(0xc2,0x57,"Macronix MX29F200B",0x40000);
- mbFlash->AddFCI(0xc2,0x45,"Macronix MX29F004T",0x80000);
- mbFlash->AddFCI(0xc2,0x46,"Macronix MX29F004B",0x80000);
- mbFlash->AddFCI(0xc2,0xa4,"Macronix MX29F040",0x80000);
- mbFlash->AddFCI(0xc2,0x23,"Macronix MX29F400T",0x80000);
- mbFlash->AddFCI(0xc2,0xab,"Macronix MX29F400B",0x80000);
- mbFlash->AddFCI(0xc2,0xb5,"Macronix MX29LV004T",0x80000);
- mbFlash->AddFCI(0xc2,0xb6,"Macronix MX29LV004B",0x80000);
- mbFlash->AddFCI(0xc2,0x4f,"Macronix MX29LV040",0x80000);
- mbFlash->AddFCI(0xc2,0xb9,"Macronix MX29LV400T",0x80000);
- mbFlash->AddFCI(0xc2,0xba,"Macronix MX29LV400B",0x80000);
- mbFlash->AddFCI(0xc2,0xd5,"Macronix MX29F080",0x100000);
- mbFlash->AddFCI(0xc2,0xd6,"Macronix MX29F800T",0x100000);
- mbFlash->AddFCI(0xc2,0x58,"Macronix MX29F800B",0x100000);
- mbFlash->AddFCI(0xc2,0x3e,"Macronix MX29LV008T",0x100000);
- mbFlash->AddFCI(0xc2,0x37,"Macronix MX29LV008B",0x100000);
- mbFlash->AddFCI(0xc2,0x38,"Macronix MX29LV081",0x100000);
- mbFlash->AddFCI(0xc2,0xda,"Macronix MX29LV800T",0x100000);
- mbFlash->AddFCI(0xc2,0x5b,"Macronix MX29LV800B",0x100000);
+ //Write VideoMode ..
+ strcat(tmpFileStr, "\r\nXBOX Video Mode = \t");
+ VIDEO_STANDARD vdo = m_XKEEPROM->GetVideoStandardVal();
+ if (vdo == XKEEPROM::VIDEO_STANDARD::PAL_I)
+ strcat(tmpFileStr, "PAL");
+ else
+ strcat(tmpFileStr, "NTSC");
- mbFlash->AddFCI(0xb0,0xc9,"Sharp LHF00L02/L06/L07",0x100000);
- mbFlash->AddFCI(0xb0,0xcf,"Sharp LHF00L03/L04/L05",0x100000);
- mbFlash->AddFCI(0x89,0xa2,"Sharp LH28F008SA series",0x100000);
- mbFlash->AddFCI(0x89,0xa6,"Sharp LH28F008SC series",0x100000);
- mbFlash->AddFCI(0xb0,0xec,"Sharp LH28F008BJxx-PT series",0x100000);
- mbFlash->AddFCI(0xb0,0xed,"Sharp LH28F008BJxx-PB series",0x100000);
- mbFlash->AddFCI(0xb0,0x4b,"Sharp LH28F800BVxx-BTL series",0x100000);
- mbFlash->AddFCI(0xb0,0x4c,"Sharp LH28F800BVxx-TV series",0x100000);
- mbFlash->AddFCI(0xb0,0x4d,"Sharp LH28F800BVxx-BV series",0x100000);
+ //Write XBE Region..
+ strcat(tmpFileStr, "\r\nXBOX XBE Region = \t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ m_XKEEPROM->GetXBERegionString(tmpData);
+ strcat(tmpFileStr, tmpData);
- mbFlash->AddFCI(0xbf,0x10,"SST 29EE020",0x40000);
- mbFlash->AddFCI(0xbf,0x12,"SST 29LE020/29VE020",0x40000);
- mbFlash->AddFCI(0xbf,0xd6,"SST 39LF020/39VF020",0x40000);
- mbFlash->AddFCI(0xbf,0xb6,"SST 39SF020A",0x40000);
- mbFlash->AddFCI(0xbf,0x57,"SST 49LF002A",0x40000);
- mbFlash->AddFCI(0xbf,0x57,"SST 49LF002A",0x100000);
- mbFlash->AddFCI(0xbf,0x52,"SST 49LF020A",0x40000);
- mbFlash->AddFCI(0xbf,0x1b,"SST 49LF003A",0x60000);
- mbFlash->AddFCI(0xbf,0x1c,"SST 49LF030A",0x60000);
- mbFlash->AddFCI(0xbf,0x61,"SST 49LF020",0x40000);
- mbFlash->AddFCI(0xbf,0x13,"SST 29SF040",0x80000);
- mbFlash->AddFCI(0xbf,0x14,"SST 29VF040",0x80000);
- mbFlash->AddFCI(0xbf,0xd7,"SST 39LF040/39VF040",0x80000);
- mbFlash->AddFCI(0xbf,0xb7,"SST 39SF040",0x80000);
- mbFlash->AddFCI(0xbf,0x60,"SST 49LF004A/B",0x80000);
- mbFlash->AddFCI(0xbf,0x51,"SST 49LF040",0x80000);
- mbFlash->AddFCI(0xbf,0xd8,"SST 39LF080/39VF080/39VF088",0x100000);
- mbFlash->AddFCI(0xbf,0x5a,"SST 49LF008A",0x100000);
- mbFlash->AddFCI(0xbf,0x5b,"SST 49LF080A",0x100000);
- mbFlash->AddFCI(0x20,0xb0,"ST M29F002T/NT/BT/BNT",0x40000);
- mbFlash->AddFCI(0x20,0x34,"ST M29F002B/BB",0x40000);
- mbFlash->AddFCI(0x20,0xd3,"ST M29F200BT",0x40000);
- mbFlash->AddFCI(0x20,0xd4,"ST M29F200BB",0x40000);
- mbFlash->AddFCI(0x20,0xe2,"ST M29F040 series",0x80000);
- mbFlash->AddFCI(0x20,0xd5,"ST M29F400T/BT",0x80000);
- mbFlash->AddFCI(0x20,0xd6,"ST M29F400B/BB",0x80000);
- mbFlash->AddFCI(0x20,0xf1,"ST M29F080 series",0x100000);
- mbFlash->AddFCI(0x20,0xec,"ST M29F800DT",0x100000);
- mbFlash->AddFCI(0x20,0x58,"ST M29F800DB",0x100000);
- mbFlash->AddFCI(0xda,0x45,"Winbond W29C020",0x40000);
- mbFlash->AddFCI(0x09,0x00,"Winbond W49F020T",0x40000);
- mbFlash->AddFCI(0xda,0xb5,"Winbond W39L020",0x40000);
- mbFlash->AddFCI(0xda,0x0b,"Winbond W49F002U",0x40000);
- mbFlash->AddFCI(0xda,0x8c,"Winbond W49F020",0x40000);
- mbFlash->AddFCI(0xda,0xb0,"Winbond W49V002A",0x40000);
- mbFlash->AddFCI(0xda,0x46,"Winbond W29C040",0x40000);
- mbFlash->AddFCI(0xda,0xb6,"Winbond W39L040",0x80000);
- mbFlash->AddFCI(0xda,0x3d,"Winbond W39V040A",0x80000);
- }
- CStdString strTemp = "", strTemp1 = "", strTemp2 = "";
- if (mbFlash->CheckID()!=0 || mbFlash->CheckID2()!=0)
- {
- CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: %s",mbFlash->CheckID()->text);
- CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: %s",mbFlash->CheckID2()->text);
- strTemp1 = mbFlash->CheckID()->text;
- strTemp2 = mbFlash->CheckID2()->text;
- }
- else { CLog::Log(LOGDEBUG, "- Detected TSOP/MOdCHIP: Unknown"); strTemp2 = "Unknown"; }
+ //Write HDDKey..
+ strcat(tmpFileStr, "\r\nXBOX HDD Key = \t\t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ m_XKEEPROM->GetHDDKeyString(tmpData);
+ strcat(tmpFileStr, tmpData);
- if (strTemp1 != strTemp2)
- {
- CLog::Log(LOGDEBUG, "- Detected TSOP/MOdCHIP: Detection does not match! (%s != %s)",strTemp1.c_str(),strTemp2.c_str());
- CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: Using -> %s",strTemp1.c_str());
- strTemp.Format("%s",strTemp1.c_str());
- }
- else strTemp = strTemp2;
+ //Write Confounder..
+ strcat(tmpFileStr, "\r\nXBOX Confounder = \t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ m_XKEEPROM->GetConfounderString(tmpData);
+ strcat(tmpFileStr, tmpData);
- delete mbFlash;
+ //GET HDD Info...
+ //Query ATA IDENTIFY
+ XKHDD::ATA_COMMAND_OBJ cmdObj;
+ ZeroMemory(&cmdObj, sizeof(XKHDD::ATA_COMMAND_OBJ));
+ cmdObj.IPReg.bCommandReg = IDE_ATA_IDENTIFY;
+ cmdObj.IPReg.bDriveHeadReg = IDE_DEVICE_MASTER;
+ XKHDD::SendATACommand(IDE_PRIMARY_PORT, &cmdObj, IDE_COMMAND_READ);
- return strTemp;
-}
+ //Write HDD Model
+ strcat(tmpFileStr, "\r\n\r\nXBOX HDD Model = \t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ XKHDD::GetIDEModel(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
+ strcat(tmpFileStr, tmpData);
-CStdString CSysInfo::SmartXXModCHIP()
-{
- // SmartXX ModChip Detection
- unsigned char uSmartXX_ID = ((_inp(0xf701)) & 0xf);
+ //Write HDD Serial..
+ strcat(tmpFileStr, "\r\nXBOX HDD Serial = \t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ XKHDD::GetIDESerial(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
+ strcat(tmpFileStr, tmpData);
- if ( uSmartXX_ID == 1 ) // SmartXX V1+V2
- return "SmartXX V1/V2";
- else if ( uSmartXX_ID == 2 ) // SmartXX V1+V2
- return "SmartXX V1/V2";
- else if ( uSmartXX_ID == 5 ) // SmartXX OPX
- return "SmartXX OPX";
- else if ( uSmartXX_ID == 8 ) // SmartXX V3
- return "SmartXX V3";
- else
- return "None";
+ //Write HDD Password..
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ strcat(tmpFileStr, "\r\n\r\nXBOX HDD Password = \t");
+
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ BYTE HDDpwd[20];
+ ZeroMemory(HDDpwd, 20);
+ XKHDD::GenerateHDDPwd((UCHAR *)XboxHDKey, cmdObj.DATA_BUFFER, (UCHAR*)&HDDpwd);
+ XKGeneral::BytesToHexStr(HDDpwd, 20, tmpData);
+ strcat(tmpFileStr, tmpData);
+
+ //Query ATAPI IDENTIFY
+ ZeroMemory(&cmdObj, sizeof(XKHDD::ATA_COMMAND_OBJ));
+ cmdObj.IPReg.bCommandReg = IDE_ATAPI_IDENTIFY;
+ cmdObj.IPReg.bDriveHeadReg = IDE_DEVICE_SLAVE;
+ XKHDD::SendATACommand(IDE_PRIMARY_PORT, &cmdObj, IDE_COMMAND_READ);
+
+ //Write DVD Model
+ strcat(tmpFileStr, "\r\n\r\nXBOX DVD Model = \t");
+ ZeroMemory(tmpData, SYSINFO_TMP_SIZE);
+ XKHDD::GetIDEModel(cmdObj.DATA_BUFFER, (LPSTR)tmpData);
+ strcat(tmpFileStr, tmpData);
+ strupr(tmpFileStr);
+
+ WriteFile(hf, tmpFileStr, (DWORD)strlen(tmpFileStr), &dwBytesWrote, NULL);
+ }
+ delete[] tmpFileStr;
+ CloseHandle(hf);
}
-
-bool CSysInfo::BackupBios()
+bool CSysInfo::CreateBiosBackup()
{
FILE *fp;
DWORD addr = FLASH_BASE_ADDRESS;
@@ -318,7 +280,7 @@
flash_copy = (char *) malloc(0x100000);
- if((fp = fopen(cTempBIOSFile, "wb")) != NULL)
+ if((fp = fopen(XBOX_BIOS_BACKUP_FILE, "wb")) != NULL)
{
for(int loop=0;loop<0x100000;loop++)
{
@@ -496,40 +458,7 @@
else { strXboxVer.Format("UNKNOWN: Please report this --> %s",Ver); return true;
}
}
-struct Bios * CSysInfo::LoadBiosSigns()
-{
- FILE *infile;
- if ((infile = fopen(cBIOSmd5IDs,"r")) == NULL)
- {
- CLog::Log(LOGDEBUG, "ERROR LOADING BIOSES.INI!!");
- return NULL;
- }
- else
- {
- struct Bios * Listone = (struct Bios *)calloc(1000, sizeof(struct Bios));
- int cntBioses=0;
- char buffer[255];
- char stringone[255];
- do
- {
- fgets(stringone,255,infile);
- if (stringone[0] != '#')
- {
- if (strstr(stringone,"=")!= NULL)
- {
- strcpy(Listone[cntBioses].Name,ReturnBiosName(buffer, stringone));
- strcpy(Listone[cntBioses].Signature,ReturnBiosSign(buffer, stringone));
- cntBioses++;
- }
- }
- } while( !feof( infile ) && cntBioses < 999 );
- fclose(infile);
- strcpy(Listone[cntBioses++].Name,"\0");
- strcpy(Listone[cntBioses++].Signature,"\0");
- return Listone;
- }
-}
bool CSysInfo::GetDVDInfo(CStdString& strDVDModel, CStdString& strDVDFirmware)
{
XKHDD::ATA_COMMAND_OBJ hddcommand;
@@ -628,6 +557,48 @@
}
else return false;
}
+bool CSysInfo::SystemUpTime(int iInputMinutes, int &iMinutes, int &iHours, int &iDays)
+{
+ iMinutes=0;iHours=0;iDays=0;
+ iMinutes = iInputMinutes;
+ if (iMinutes >= 60) // Hour's
+ {
+ iHours = iMinutes / 60;
+ iMinutes = iMinutes - (iHours *60);
+ }
+ if (iHours >= 24) // Days
+ {
+ iDays = iHours / 24;
+ iHours = iHours - (iDays * 24);
+ }
+ return true;
+}
+
+bool CSysInfo::CreateEEPROMBackup()
+{
+ m_XKEEPROM->WriteToBINFile(XBOX_EEPROM_BIN_BACKUP_FILE);
+ m_XKEEPROM->WriteToCFGFile(XBOX_EEPROM_CFG_BACKUP_FILE);
+ return true;
+}
+bool CSysInfo::GetRefurbInfo(CStdString& rfi_FirstBootTime, CStdString& rfi_PowerCycleCount)
+{
+ XBOX_REFURB_INFO xri;
+ SYSTEMTIME sys_time;
+ if (ExReadWriteRefurbInfo(&xri, sizeof(XBOX_REFURB_INFO), FALSE) < 0)
+ return false;
+
+ FileTimeToSystemTime((FILETIME*)&xri.FirstBootTime, &sys_time);
+ rfi_FirstBootTime.Format("%s %d-%d-%d %d:%02d", g_localizeStrings.Get(13173),
+ sys_time.wMonth,
+ sys_time.wDay,
+ sys_time.wYear,
+ sys_time.wHour,
+ sys_time.wMinute);
+
+ rfi_PowerCycleCount.Format("%s %d", g_localizeStrings.Get(13174), xri.PowerCycleCount);
+ return true;
+}
+
double CSysInfo::GetCPUFrequency()
{
unsigned __int64 Fwin;
@@ -672,75 +643,273 @@
x+=a;
return x;
}
-
-char* CSysInfo::ReturnBiosName(char *buffer, char *str)
+CStdString CSysInfo::MD5BufferNew(char *buffer,long PosizioneInizio,int KBytes)
{
- int cnt1,cnt2,i;
- cnt1=cnt2=0;
+ CStdString strReturn;
+ MD5_CTX mdContext;
+ unsigned char md5sum[16];
+ char md5sumstring[33] = "";
+ MD5Init (&mdContext);
+ MD5Update(&mdContext, (unsigned char *)(buffer + PosizioneInizio), KBytes * 1024);
+ MD5Final (md5sum, &mdContext);
+ XKGeneral::BytesToHexStr(md5sum, 16, md5sumstring);
+ strReturn.Format("%s", md5sumstring);
+ return strReturn;
+}
+CStdString CSysInfo::GetAVPackInfo()
+{ //AV-Pack Detection PICReg(0x04)
+ int cAVPack;
+ HalReadSMBusValue(0x20,XKUtils::PIC16L_CMD_AV_PACK,0,(LPBYTE)&cAVPack);
- for (i=0;i<255;i++) buffer[i]='\0';
- if ( (strstr(str,"(1MB)")==0) || (strstr(str,"(512)")==0) || (strstr(str,"(256)")==0) )
- cnt2=5;
-
- while (str[cnt2] != '=')
- {
- buffer[cnt1]=str[cnt2];
- cnt1++;
- cnt2++;
- }
- buffer[cnt1++]='\0';
- return buffer;
+ if (cAVPack == XKUtils::AV_PACK_SCART) return g_localizeStrings.Get(13292)+" "+"SCART";
+ else if (cAVPack == XKUtils::AV_PACK_HDTV) return g_localizeStrings.Get(13292)+" "+"HDTV";
+ else if (cAVPack == XKUtils::AV_PACK_VGA) return g_localizeStrings.Get(13292)+" "+"VGA";
+ else if (cAVPack == XKUtils::AV_PACK_RFU) return g_localizeStrings.Get(13292)+" "+"RFU";
+ else if (cAVPack == XKUtils::AV_PACK_SVideo) return g_localizeStrings.Get(13292)+" "+"S-Video";
+ else if (cAVPack == XKUtils::AV_PACK_Undefined) return g_localizeStrings.Get(13292)+" "+"Undefined";
+ else if (cAVPack == XKUtils::AV_PACK_Standard) return g_localizeStrings.Get(13292)+" "+"Standard RGB";
+ else if (cAVPack == XKUtils::AV_PACK_Missing) return g_localizeStrings.Get(13292)+" "+"Missing or Unknown";
+ else return g_localizeStrings.Get(13292)+" "+"Unknown";
}
-char* CSysInfo::ReturnBiosSign(char *buffer, char *str)
+CStdString CSysInfo::GetVideoEncoder()
{
- int cnt1,cnt2,i;
- cnt1=cnt2=0;
- for (i=0;i<255;i++) buffer[i]='\0';
- while (str[cnt2] != '=') cnt2++;
- cnt2++;
- while (str[cnt2] != NULL)
- {
- if ( str[cnt2] != ' ' )
- {
- buffer[cnt1]=toupper(str[cnt2]);
- cnt1++;
- cnt2++;
- }
- else cnt2++;
+ int iTemp;
+ if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_CONNEXANT,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
+ {
+ CLog::Log(LOGDEBUG, "Video Encoder: CONNEXANT");
+ return g_localizeStrings.Get(13286)+" "+"CONNEXANT";
}
- buffer[cnt1++]='\0';
- return buffer;
+ if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_FOCUS,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
+ {
+ CLog::Log(LOGDEBUG, "Video Encoder: FOCUS");
+ return g_localizeStrings.Get(13286)+" "+"FOCUS";
+ }
+ if (HalReadSMBusValue(XKUtils::SMBDEV_VIDEO_ENCODER_XCALIBUR,XKUtils::VIDEO_ENCODER_CMD_DETECT,0,(LPBYTE)&iTemp)==0)
+ {
+ CLog::Log(LOGDEBUG, "Video Encoder: XCALIBUR");
+ return g_localizeStrings.Get(13286)+" "+ "XCALIBUR";
+ }
+ else
+ {
+ CLog::Log(LOGDEBUG, "Video Encoder: UNKNOWN");
+ return g_localizeStrings.Get(13286)+" "+"UNKNOWN";
+ }
}
-char* CSysInfo::CheckMD5 (struct Bios *Listone, char *Sign)
+
+CStdString CSysInfo::GetModCHIPDetected()
{
- int cntBioses;
- cntBioses=0;
- do
+ CXBoxFlash *mbFlash=new CXBoxFlash(); //Max description Leng= 40
{
- if (strstr(Listone[cntBioses].Signature, Sign) != NULL)
- { return (Listone[cntBioses].Name); }
- cntBioses++;
+ // Unknown or TSOP
+ mbFlash->AddFCI(0x09,0x00,"Unknown/Onboard TSOP (protected)",0x00000);
+
+ // Known XBOX ModCHIP IDs&Names
+ mbFlash->AddFCI(0x01,0xAD,"XECUTER 3",0x100000); // if Write Protection is ON!: this chip can not detected! X3 Bug or Feature! it will return Unknown/Onboard TSOP (protected)!
+ mbFlash->AddFCI(0x01,0xD5,"XECUTER 2",0x100000);
+ mbFlash->AddFCI(0x01,0xC4,"XENIUM",0x100000);
+ mbFlash->AddFCI(0x01,0xC4,"XENIUM",0x000000);
+ mbFlash->AddFCI(0x04,0xBA,"ALX2+ R3 FLASH",0x40000);
+ // XBOX Possible Flash CHIPs
+ mbFlash->AddFCI(0x01,0xb0,"AMD Am29F002BT/NBT",0x40000);
+ mbFlash->AddFCI(0x01,0x34,"AMD Am29F002BB/NBB",0x40000);
+ mbFlash->AddFCI(0x01,0x51,"AMD Am29F200BT",0x40000);
+ mbFlash->AddFCI(0x01,0x57,"AMD Am29F200BB",0x40000);
+ mbFlash->AddFCI(0x01,0x40,"AMD Am29LV002BT",0x40000);
+ mbFlash->AddFCI(0x01,0xc2,"AMD Am29LV002BB",0x40000);
+ mbFlash->AddFCI(0x01,0x3b,"AMD Am29LV200BT",0x40000);
+ mbFlash->AddFCI(0x01,0xbf,"AMD Am29LV200BB",0x40000);
+ mbFlash->AddFCI(0x01,0x0c,"AMD Am29DL400BT",0x80000);
+ mbFlash->AddFCI(0x01,0x0f,"AMD Am29DL400BB",0x80000);
+ mbFlash->AddFCI(0x01,0x77,"AMD Am29F004BT",0x80000);
+ mbFlash->AddFCI(0x01,0x7b,"AMD Am29F004BB",0x80000);
+ mbFlash->AddFCI(0x01,0xa4,"AMD Am29F040B",0x80000);
+ mbFlash->AddFCI(0x01,0x23,"AMD Am29F400BT",0x80000);
+ mbFlash->AddFCI(0x01,0xab,"AMD Am29F400BB",0x80000);
+ mbFlash->AddFCI(0x01,0xb5,"AMD Am29LV004BT",0x80000);
+ mbFlash->AddFCI(0x01,0xb6,"AMD Am29LV004BB",0x80000);
+ mbFlash->AddFCI(0x01,0x4f,"AMD Am29LV040B",0x80000);
+ mbFlash->AddFCI(0x01,0xb9,"AMD Am29LV400BT",0x80000);
+ mbFlash->AddFCI(0x01,0xba,"AMD Am29LV400BB",0x80000);
+ mbFlash->AddFCI(0x01,0x4a,"AMD Am29DL800BT",0x100000);
+ mbFlash->AddFCI(0x01,0xcb,"AMD Am29DL800BB",0x100000);
+ mbFlash->AddFCI(0x01,0xd5,"AMD Am29F080B",0x100000);
+ mbFlash->AddFCI(0x01,0xd6,"AMD Am29F800BT",0x100000);
+ mbFlash->AddFCI(0x01,0x58,"AMD Am29F800BB",0x100000);
+ mbFlash->AddFCI(0x01,0x3e,"AMD Am29LV008BT",0x100000);
+ mbFlash->AddFCI(0x01,0x37,"AMD Am29LV008BB",0x100000);
+ mbFlash->AddFCI(0x01,0x38,"AMD Am29LV080B",0x100000);
+ mbFlash->AddFCI(0x01,0xda,"AMD Am29LV800BT/DT",0x100000);
+ mbFlash->AddFCI(0x01,0x5b,"AMD Am29LV800BB/DB",0x100000);
+
+ mbFlash->AddFCI(0x37,0x8c,"AMIC A29002T/290021T",0x40000);
+ mbFlash->AddFCI(0x37,0x0d,"AMIC A29002U/290021U",0x40000);
+ mbFlash->AddFCI(0x37,0x86,"AMIC A29040A",0x80000);
+ mbFlash->AddFCI(0x37,0xb0,"AMIC A29400T/294001T",0x80000);
+ mbFlash->AddFCI(0x37,0x31,"AMIC A29400U/294001U",0x80000);
+ mbFlash->AddFCI(0x37,0x34,"AMIC A29L004T/A29L400T",0x80000);
+ mbFlash->AddFCI(0x37,0xb5,"AMIC A29L004U/A29L400U",0x80000);
+ mbFlash->AddFCI(0x37,0x92,"AMIC A29L040",0x80000);
+ mbFlash->AddFCI(0x37,0x0e,"AMIC A29800T",0x100000);
+ mbFlash->AddFCI(0x37,0x8f,"AMIC A29800U",0x100000);
+ mbFlash->AddFCI(0x37,0x1a,"AMIC A29L008T/A29L800T",0x100000);
+ mbFlash->AddFCI(0x37,0x9b,"AMIC A29L008U/A29L800U",0x100000);
+
+ mbFlash->AddFCI(0x04,0xb0,"Fujitsu MBM29F002TC",0x40000);
+ mbFlash->AddFCI(0x04,0x34,"Fujitsu MBM29F002BC",0x40000);
+ mbFlash->AddFCI(0x04,0x51,"Fujitsu MBM29F200TC",0x40000);
+ mbFlash->AddFCI(0x04,0x57,"Fujitsu MBM29F200BC",0x40000);
+ mbFlash->AddFCI(0x04,0x40,"Fujitsu MBM29LV002TC",0x40000);
+ mbFlash->AddFCI(0x04,0xc2,"Fujitsu MBM29LV002BC",0x40000);
+ mbFlash->AddFCI(0x04,0x3b,"Fujitsu MBM29LV200TC",0x40000);
+ mbFlash->AddFCI(0x04,0xbf,"Fujitsu MBM29LV200BC",0x40000);
+ mbFlash->AddFCI(0x04,0x0c,"Fujitsu MBM29DL400TC",0x80000);
+ mbFlash->AddFCI(0x04,0x0f,"Fujitsu MBM29DL400BC",0x80000);
+ mbFlash->AddFCI(0x04,0x77,"Fujitsu MBM29F004TC",0x80000);
+ mbFlash->AddFCI(0x04,0x7b,"Fujitsu MBM29F004BC",0x80000);
+ mbFlash->AddFCI(0x04,0xa4,"Fujitsu MBM29F040C",0x80000);
+ mbFlash->AddFCI(0x04,0x23,"Fujitsu MBM29F400TC",0x80000);
+ mbFlash->AddFCI(0x04,0xab,"Fujitsu MBM29F400BC",0x80000);
+ mbFlash->AddFCI(0x04,0xb5,"Fujitsu MBM29LV004TC",0x80000);
+ mbFlash->AddFCI(0x04,0xb6,"Fujitsu MBM29LV004BC",0x80000);
+ mbFlash->AddFCI(0x04,0xb9,"Fujitsu MBM29LV400TC",0x80000);
+ mbFlash->AddFCI(0x04,0xba,"Fujitsu MBM29LV400BC",0x80000);
+ mbFlash->AddFCI(0x04,0x4a,"Fujitsu MBM29DL800TA",0x100000);
+ mbFlash->AddFCI(0x04,0xcb,"Fujitsu MBM29DL800BA",0x100000);
+ mbFlash->AddFCI(0x04,0xd5,"Fujitsu MBM29F080A",0x100000);
+ mbFlash->AddFCI(0x04,0xd6,"Fujitsu MBM29F800TA",0x100000);
+ mbFlash->AddFCI(0x04,0x58,"Fujitsu MBM29F800BA",0x100000);
+ mbFlash->AddFCI(0x04,0x3e,"Fujitsu MBM29LV008TA",0x100000);
+ mbFlash->AddFCI(0x04,0x37,"Fujitsu MBM29LV008BA",0x100000);
+ mbFlash->AddFCI(0x04,0x38,"Fujitsu MBM29LV080A",0x100000);
+ mbFlash->AddFCI(0x04,0xda,"Fujitsu MBM29LV800TA/TE",0x100000);
+ mbFlash->AddFCI(0x04,0x5b,"Fujitsu MBM29LV800BA/BE",0x100000);
+
+ mbFlash->AddFCI(0xad,0xb0,"Hynix HY29F002",0x40000);
+ mbFlash->AddFCI(0xad,0xa4,"Hynix HY29F040A",0x80000);
+ mbFlash->AddFCI(0xad,0x23,"Hynix HY29F400T/AT",0x80000);
+ mbFlash->AddFCI(0xad,0xab,"Hynix HY29F400B/AB",0x80000);
+ mbFlash->AddFCI(0xad,0xb9,"Hynix HY29LV400T",0x80000);
+ mbFlash->AddFCI(0xad,0xba,"Hynix HY29LV400B",0x80000);
+ mbFlash->AddFCI(0xad,0xd5,"Hynix HY29F080",0x100000);
+ mbFlash->AddFCI(0xad,0xd6,"Hynix HY29F800T/AT",0x100000);
+ mbFlash->AddFCI(0xad,0x58,"Hynix HY29F800B/AB",0x100000);
+ mbFlash->AddFCI(0xad,0xda,"Hynix HY29LV800T",0x100000);
+ mbFlash->AddFCI(0xad,0x5b,"Hynix HY29LV800B",0x100000);
+
+ mbFlash->AddFCI(0xc2,0xb0,"Macronix MX29F002T/NT",0x40000);
+ mbFlash->AddFCI(0xc2,0x34,"Macronix MX29F002B/NB",0x40000);
+ mbFlash->AddFCI(0xc2,0x36,"Macronix MX29F022T/NT",0x40000);
+ mbFlash->AddFCI(0xc2,0x37,"Macronix MX29F022B/NB",0x40000);
+ mbFlash->AddFCI(0xc2,0x51,"Macronix MX29F200T",0x40000);
+ mbFlash->AddFCI(0xc2,0x57,"Macronix MX29F200B",0x40000);
+ mbFlash->AddFCI(0xc2,0x45,"Macronix MX29F004T",0x80000);
+ mbFlash->AddFCI(0xc2,0x46,"Macronix MX29F004B",0x80000);
+ mbFlash->AddFCI(0xc2,0xa4,"Macronix MX29F040",0x80000);
+ mbFlash->AddFCI(0xc2,0x23,"Macronix MX29F400T",0x80000);
+ mbFlash->AddFCI(0xc2,0xab,"Macronix MX29F400B",0x80000);
+ mbFlash->AddFCI(0xc2,0xb5,"Macronix MX29LV004T",0x80000);
+ mbFlash->AddFCI(0xc2,0xb6,"Macronix MX29LV004B",0x80000);
+ mbFlash->AddFCI(0xc2,0x4f,"Macronix MX29LV040",0x80000);
+ mbFlash->AddFCI(0xc2,0xb9,"Macronix MX29LV400T",0x80000);
+ mbFlash->AddFCI(0xc2,0xba,"Macronix MX29LV400B",0x80000);
+ mbFlash->AddFCI(0xc2,0xd5,"Macronix MX29F080",0x100000);
+ mbFlash->AddFCI(0xc2,0xd6,"Macronix MX29F800T",0x100000);
+ mbFlash->AddFCI(0xc2,0x58,"Macronix MX29F800B",0x100000);
+ mbFlash->AddFCI(0xc2,0x3e,"Macronix MX29LV008T",0x100000);
+ mbFlash->AddFCI(0xc2,0x37,"Macronix MX29LV008B",0x100000);
+ mbFlash->AddFCI(0xc2,0x38,"Macronix MX29LV081",0x100000);
+ mbFlash->AddFCI(0xc2,0xda,"Macronix MX29LV800T",0x100000);
+ mbFlash->AddFCI(0xc2,0x5b,"Macronix MX29LV800B",0x100000);
+
+ mbFlash->AddFCI(0xb0,0xc9,"Sharp LHF00L02/L06/L07",0x100000);
+ mbFlash->AddFCI(0xb0,0xcf,"Sharp LHF00L03/L04/L05",0x100000);
+ mbFlash->AddFCI(0x89,0xa2,"Sharp LH28F008SA series",0x100000);
+ mbFlash->AddFCI(0x89,0xa6,"Sharp LH28F008SC series",0x100000);
+ mbFlash->AddFCI(0xb0,0xec,"Sharp LH28F008BJxx-PT series",0x100000);
+ mbFlash->AddFCI(0xb0,0xed,"Sharp LH28F008BJxx-PB series",0x100000);
+ mbFlash->AddFCI(0xb0,0x4b,"Sharp LH28F800BVxx-BTL series",0x100000);
+ mbFlash->AddFCI(0xb0,0x4c,"Sharp LH28F800BVxx-TV series",0x100000);
+ mbFlash->AddFCI(0xb0,0x4d,"Sharp LH28F800BVxx-BV series",0x100000);
+
+ mbFlash->AddFCI(0xbf,0x10,"SST 29EE020",0x40000);
+ mbFlash->AddFCI(0xbf,0x12,"SST 29LE020/29VE020",0x40000);
+ mbFlash->AddFCI(0xbf,0xd6,"SST 39LF020/39VF020",0x40000);
+ mbFlash->AddFCI(0xbf,0xb6,"SST 39SF020A",0x40000);
+ mbFlash->AddFCI(0xbf,0x57,"SST 49LF002A",0x40000);
+ mbFlash->AddFCI(0xbf,0x57,"SST 49LF002A",0x100000);
+ mbFlash->AddFCI(0xbf,0x52,"SST 49LF020A",0x40000);
+ mbFlash->AddFCI(0xbf,0x1b,"SST 49LF003A",0x60000);
+ mbFlash->AddFCI(0xbf,0x1c,"SST 49LF030A",0x60000);
+ mbFlash->AddFCI(0xbf,0x61,"SST 49LF020",0x40000);
+ mbFlash->AddFCI(0xbf,0x13,"SST 29SF040",0x80000);
+ mbFlash->AddFCI(0xbf,0x14,"SST 29VF040",0x80000);
+ mbFlash->AddFCI(0xbf,0xd7,"SST 39LF040/39VF040",0x80000);
+ mbFlash->AddFCI(0xbf,0xb7,"SST 39SF040",0x80000);
+ mbFlash->AddFCI(0xbf,0x60,"SST 49LF004A/B",0x80000);
+ mbFlash->AddFCI(0xbf,0x51,"SST 49LF040",0x80000);
+ mbFlash->AddFCI(0xbf,0xd8,"SST 39LF080/39VF080/39VF088",0x100000);
+ mbFlash->AddFCI(0xbf,0x5a,"SST 49LF008A",0x100000);
+ mbFlash->AddFCI(0xbf,0x5b,"SST 49LF080A",0x100000);
+ mbFlash->AddFCI(0x20,0xb0,"ST M29F002T/NT/BT/BNT",0x40000);
+ mbFlash->AddFCI(0x20,0x34,"ST M29F002B/BB",0x40000);
+ mbFlash->AddFCI(0x20,0xd3,"ST M29F200BT",0x40000);
+ mbFlash->AddFCI(0x20,0xd4,"ST M29F200BB",0x40000);
+ mbFlash->AddFCI(0x20,0xe2,"ST M29F040 series",0x80000);
+ mbFlash->AddFCI(0x20,0xd5,"ST M29F400T/BT",0x80000);
+ mbFlash->AddFCI(0x20,0xd6,"ST M29F400B/BB",0x80000);
+ mbFlash->AddFCI(0x20,0xf1,"ST M29F080 series",0x100000);
+ mbFlash->AddFCI(0x20,0xec,"ST M29F800DT",0x100000);
+ mbFlash->AddFCI(0x20,0x58,"ST M29F800DB",0x100000);
+ mbFlash->AddFCI(0xda,0x45,"Winbond W29C020",0x40000);
+ mbFlash->AddFCI(0x09,0x00,"Winbond W49F020T",0x40000);
+ mbFlash->AddFCI(0xda,0xb5,"Winbond W39L020",0x40000);
+ mbFlash->AddFCI(0xda,0x0b,"Winbond W49F002U",0x40000);
+ mbFlash->AddFCI(0xda,0x8c,"Winbond W49F020",0x40000);
+ mbFlash->AddFCI(0xda,0xb0,"Winbond W49V002A",0x40000);
+ mbFlash->AddFCI(0xda,0x46,"Winbond W29C040",0x40000);
+ mbFlash->AddFCI(0xda,0xb6,"Winbond W39L040",0x80000);
+ mbFlash->AddFCI(0xda,0x3d,"Winbond W39V040A",0x80000);
}
- while( strcmp(Listone[cntBioses].Name,"\0") != 0);
- return ("Unknown");
-}
-bool CSysInfo::SystemUpTime(int iInputMinutes, int &iMinutes, int &iHours, int &iDays)
-{
- iMinutes=0;iHours=0;iDays=0;
- iMinutes = iInputMinutes;
- if (iMinutes >= 60) // Hour's
+ CStdString strTemp = "", strTemp1 = "", strTemp2 = "";
+ if (mbFlash->CheckID()!=0 || mbFlash->CheckID2()!=0)
{
- iHours = iMinutes / 60;
- iMinutes = iMinutes - (iHours *60);
+ CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: %s",mbFlash->CheckID()->text);
+ CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: %s",mbFlash->CheckID2()->text);
+ strTemp1 = mbFlash->CheckID()->text;
+ strTemp2 = mbFlash->CheckID2()->text;
}
- if (iHours >= 24) // Days
+ else { CLog::Log(LOGDEBUG, "- Detected TSOP/MOdCHIP: Unknown"); strTemp2 = "Unknown"; }
+
+ if (strTemp1 != strTemp2)
{
- iDays = iHours / 24;
- iHours = iHours - (iDays * 24);
+ CLog::Log(LOGDEBUG, "- Detected TSOP/MOdCHIP: Detection does not match! (%s != %s)",strTemp1.c_str(),strTemp2.c_str());
+ CLog::Log(LOGDEBUG, "- Detected TSOP/ModChip: Using -> %s",strTemp1.c_str());
+ strTemp.Format("%s",strTemp1.c_str());
}
- return true;
+ else strTemp = strTemp2;
+
+ delete mbFlash;
+
+ return strTemp;
}
+CStdString CSysInfo::SmartXXModCHIP()
+{
+ // SmartXX ModChip Detection
+ unsigned char uSmartXX_ID = ((_inp(0xf701)) & 0xf);
+
+ if ( uSmartXX_ID == 1 ) // SmartXX V1+V2
+ return "SmartXX V1/V2";
+ else if ( uSmartXX_ID == 2 ) // SmartXX V1+V2
+ return "SmartXX V1/V2";
+ else if ( uSmartXX_ID == 5 ) // SmartXX OPX
+ return "SmartXX OPX";
+ else if ( uSmartXX_ID == 8 ) // SmartXX V3
+ return "SmartXX V3";
+ else
+ return "None";
+}
+
CStdString CSysInfo::GetMPlayerVersion()
{
CStdString strVersion="";
@@ -1036,3 +1205,133 @@
return strReturn;
}
+
+
+CStdString CSysInfo::GetMACAddress()
+{
+ char macaddress[20] = "";
+
+ m_XKEEPROM->GetMACAddressString((LPSTR)&macaddress, ':');
+
+ CStdString |