diff options
Diffstat (limited to 'utils/xbox/vxconsole/vxconsole.h')
| -rw-r--r-- | utils/xbox/vxconsole/vxconsole.h | 479 |
1 files changed, 479 insertions, 0 deletions
diff --git a/utils/xbox/vxconsole/vxconsole.h b/utils/xbox/vxconsole/vxconsole.h new file mode 100644 index 0000000..6ff1afc --- /dev/null +++ b/utils/xbox/vxconsole/vxconsole.h @@ -0,0 +1,479 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// VXCONSOLE.H +// +// Master Header. +//=====================================================================================// +#pragma once + +#include "tier0/platform.h" + +#include <winsock2.h> +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> +#include <stdio.h> +#include <stdarg.h> +#include <io.h> +#include <fcntl.h> +#include <string.h> +#include <share.h> +#include <richedit.h> +#include <assert.h> +#include <xbdm.h> +#include <time.h> +#include <sys/stat.h> + +#include "resource.h" +#include "assert_resource.h" +#include "sys_utils.h" +#include "sys_scriptlib.h" +#include "bugreporter/bugreporter.h" +#include "jpeglib/jpeglib.h" +#include "UtlBuffer.h" +#include "strtools.h" +#include "xbox/xbox_vxconsole.h" +#include "UtlRBTree.h" +#include "UtlSymbol.h" +#include "UtlVector.h" +#include "UtlString.h" + +#define VXCONSOLE_VERSION "1.2" +#define VXCONSOLE_CLASSNAME "VXConsole" +#define VXCONSOLE_TITLE "VXConsole" +#define VXCONSOLE_FONT "Courier" +#define VXCONSOLE_FONTSIZE 10 +#define VXCONSOLE_MAGIC "3\\" +#define VXCONSOLE_REGISTRY "HKEY_CURRENT_USER\\Software\\VXConsole\\" VXCONSOLE_MAGIC +#ifdef _DEBUG +#define VXCONSOLE_BUILDTYPE "Debug" +#else +#define VXCONSOLE_BUILDTYPE "Release" +#endif + +#define VXCONSOLE_WINDOWBYTES ( DLGWINDOWEXTRA + 4 ) +#define VXCONSOLE_CONFIGID ( VXCONSOLE_WINDOWBYTES - 4 ) + +#define MAX_QUEUEDSTRINGS 4096 +#define MAX_QUEUEDSTRINGLEN 512 +#define MAX_RCMDNAMELEN 32 +#define MAX_RCMDS 4096 +#define MAX_TOKENCHARS 256 +#define MAX_XBOXNAMELEN 64 +#define MAX_ARGVELEMS 20 +#define MAX_COMMANDHISTORY 25 + +#define TIMERID_AUTOCONNECT 0x1000 +#define TIMERID_MEMPROFILE 0x1001 + +#define IDC_COMMANDHINT 666 + +#define XBX_CLR_RED ( RGB( 255,0,0 ) ) +#define XBX_CLR_GREEN ( RGB( 0,255,0 ) ) +#define XBX_CLR_WHITE ( RGB( 255,255,255 ) ) +#define XBX_CLR_BLACK ( RGB( 0,0,0 ) ) +#define XBX_CLR_BLUE ( RGB( 0,0,255 ) ) +#define XBX_CLR_YELLOW ( RGB( 255,255,0 ) ) +#define XBX_CLR_LTGREY ( RGB( 180,180,180 ) ) +#define XBX_CLR_DEFAULT XBX_CLR_BLACK + +// The command prefix that is prepended to all communication between the Xbox +// app and the debug console app +#define VXCONSOLE_PRINT_PREFIX "XPRT" +#define VXCONSOLE_COMMAND_PREFIX "XCMD" +#define VXCONSOLE_COMMAND_ACK "XACK" +#define VXCONSOLE_COLOR_PREFIX "XCLR" + +#define ICON_APPLICATION 0 +#define ICON_DISCONNECTED 1 +#define ICON_CONNECTED_XBOX 2 +#define ICON_CONNECTED_APP0 3 +#define ICON_CONNECTED_APP1 4 +#define MAX_ICONS 5 + +typedef BOOL ( *cmdHandler_t )( int argc, char* argv[] ); + +#define IDM_BINDINGS 50000 +#define IDM_BINDINGS_EDIT ( IDM_BINDINGS+1 ) +#define IDM_BINDINGS_BIND1 ( IDM_BINDINGS+2 ) +#define IDM_BINDINGS_BIND2 ( IDM_BINDINGS+3 ) +#define IDM_BINDINGS_BIND3 ( IDM_BINDINGS+4 ) +#define IDM_BINDINGS_BIND4 ( IDM_BINDINGS+5 ) +#define IDM_BINDINGS_BIND5 ( IDM_BINDINGS+6 ) +#define IDM_BINDINGS_BIND6 ( IDM_BINDINGS+7 ) +#define IDM_BINDINGS_BIND7 ( IDM_BINDINGS+8 ) +#define IDM_BINDINGS_BIND8 ( IDM_BINDINGS+9 ) +#define IDM_BINDINGS_BIND9 ( IDM_BINDINGS+10 ) +#define IDM_BINDINGS_BIND10 ( IDM_BINDINGS+11 ) +#define IDM_BINDINGS_BIND11 ( IDM_BINDINGS+12 ) +#define IDM_BINDINGS_BIND12 ( IDM_BINDINGS+13 ) +#define MAX_BINDINGS ( VK_F12-VK_F1+1 ) + +// file serving +#define FSERVE_LOCALONLY 0 +#define FSERVE_REMOTEONLY 1 +#define FSERVE_LOCALFIRST 2 + +// file sync +#define FSYNC_OFF 0x00000000 +#define FSYNC_ALWAYS 0x00000001 +#define FSYNC_IFNEWER 0x00000002 +#define FSYNC_TYPEMASK 0x0000000F +#define FSYNC_ANDEXISTSONTARGET 0x80000000 + +// track function invocations +typedef enum +{ + FL_INVALID, + FL_STAT, + FL_FOPEN, + FL_FSEEK, + FL_FTELL, + FL_FREAD, + FL_FWRITE, + FL_FCLOSE, + FL_FEOF, + FL_FERROR, + FL_FFLUSH, + FL_FGETS, + FL_MAXFUNCTIONCOUNTS, +} fileLogFunctions_e; + +typedef enum +{ + VPROF_OFF = 0, + VPROF_CPU, + VPROF_TEXTURE, + VPROF_TEXTUREFRAME, +} vprofState_e; + +// funtion command types +#define FN_CONSOLE 0x00 // command runs at console +#define FN_XBOX 0x01 // command requires xbox +#define FN_APP 0x02 // command requires application + +// shorthand +#define FA_NORMAL FILE_ATTRIBUTE_NORMAL +#define FA_DIRECTORY FILE_ATTRIBUTE_DIRECTORY +#define FA_READONLY FILE_ATTRIBUTE_READONLY + +typedef struct +{ + const CHAR* strCommand; + int flags; + cmdHandler_t pfnHandler; + const CHAR* strHelp; +} localCommand_t; + +typedef struct +{ + char* strCommand; + char* strHelp; +} remoteCommand_t; + +typedef struct +{ + CRITICAL_SECTION CriticalSection; + int numMessages; + bool bInit; + COLORREF aColors[MAX_QUEUEDSTRINGS]; + CHAR *pMessages[MAX_QUEUEDSTRINGS]; +} printQueue_t; + +class CProgress +{ +public: + CProgress(); + ~CProgress(); + void Open( const char* title, bool canCancel, bool bHasMeter ); + void SetStatus( const char *line1, const char *line2, const char *line3 ); + void SetMeter( int currentPos, int range ); + bool IsCancel(); + HWND m_hWnd; + HWND m_hWndStatus1; + HWND m_hWndStatus2; + HWND m_hWndStatus3; + HWND m_hWndPercent; + HWND m_hWndMeter; + HWND m_hWndCancel; + bool m_bCancelPressed; + int m_range; + +private: + void Update(); +}; + +typedef struct fileNode_s +{ + char *filename; + FILETIME creationTime; + FILETIME changeTime; + DWORD sizeHigh; + DWORD sizeLow; + DWORD attributes; + int level; + struct fileNode_s *nextPtr; + bool needsUpdate; +} +fileNode_t; + +//----------------------------------------------------------------------------- +// FILEIO.CPP +//----------------------------------------------------------------------------- +extern void RemoteToLocalFilename( const char* inFilename, char* outFilename, int outSize ); +extern void RemoteToTargetFilename( const char* inFilename, char* outFilename, int outSize ); +extern void FreeTargetFileList( fileNode_t* pFileList ); +extern bool GetTargetFileList_r( char* targetPath, bool recurse, int attributes, int level, fileNode_t** pFileList ); +extern char *SystemTimeToString( SYSTEMTIME *systemTime, char *buffer, int bufferSize ); +extern bool CreateTargetPath( const char *pTargetFilename ); + +//----------------------------------------------------------------------------- +// BINDINGS.CPP +//----------------------------------------------------------------------------- +extern bool Bindings_TranslateKey( int vkKeyCode ); +extern bool Bindings_MenuSelection( int wID ); +extern void Bindings_LoadConfig(); +extern void Bindings_SaveConfig(); +extern void Bindings_Open(); +extern bool Bindings_Init(); + +//----------------------------------------------------------------------------- +// COMMON.CPP +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// VXCONSOLE.CPP +//----------------------------------------------------------------------------- +extern void SetConnectionIcon( int icon ); +extern void PrintToQueue( COLORREF color, const CHAR* strFormat, ... ); +extern void ProcessPrintQueue(); +extern void DmAPI_DisplayError( const char* strApiName, HRESULT hr ); +extern int ConsoleWindowPrintf( COLORREF rgb, LPCTSTR lpFmt, ... ); +extern int CmdToArgv( char* str, char* argv[], int maxargs ); +extern char* GetToken( char** tokenStreamPtr ); +extern void DebugCommand( const char* strFormat, ... ); +extern bool ProcessCommand( const char* strCmd ); +extern HRESULT DmAPI_SendCommand( const char* strCommand, bool wait ); +extern void NotImplementedYet(); +extern void SetMainWindowTitle(); +extern HWND g_hDlgMain; +extern HWND g_hwndOutputWindow; +extern UINT_PTR g_autoConnectTimer; +extern BOOL g_autoConnect; +extern CHAR g_xboxName[]; +extern DWORD g_xboxAddress; +extern CHAR g_remotePath[]; +extern CHAR g_localPath[]; +extern CHAR g_targetPath[]; +extern CHAR g_installPath[]; +extern CHAR g_xboxTargetName[]; +extern BOOL g_connectedToApp; +extern BOOL g_connectedToXBox; +extern PDMN_SESSION g_pdmnSession; +extern PDM_CONNECTION g_pdmConnection; +extern BOOL g_debugCommands; +extern BOOL g_captureDebugSpew; +extern HINSTANCE g_hInstance; +extern HICON g_hIcons[]; +extern BOOL g_reboot; +extern int g_rebootArgc; +extern char* g_rebootArgv[]; +extern int g_connectCount; +extern int g_currentIcon; +extern BOOL g_clsOnConnect; +extern DWORD g_connectedTime; +extern HBRUSH g_hBackgroundBrush; +extern COLORREF g_backgroundColor; +extern HFONT g_hFixedFont; +extern HFONT g_hProportionalFont; +extern HANDLE g_hCommandReadyEvent; +extern BOOL g_loadSymbolsOnConnect; +extern HACCEL g_hAccel; +extern BOOL g_alwaysAutoConnect; +extern BOOL g_startMinimized; +extern int g_connectFailure; +extern BOOL g_captureDebugSpew_StartupState; +extern bool g_bSuppressBlink; +extern BOOL g_bPlayTestMode; + +//----------------------------------------------------------------------------- +// LOCAL_CMDS.CPP +//----------------------------------------------------------------------------- +extern BOOL lc_bug( int argc, char* argv[] ); +extern BOOL lc_dir( int argc, char* argv[] ); +extern BOOL lc_del( int argc, char* argv[] ); +extern BOOL lc_memory( int argc, char* argv[] ); +extern BOOL lc_screenshot( int argc, char* argv[] ); +extern BOOL lc_help( int argc, char* argv[] ); +extern BOOL lc_cls( int argc, char* argv[] ); +extern BOOL lc_connect( int argc, char* argv[] ); +extern BOOL lc_autoConnect( int argc, char* argv[] ); +extern BOOL lc_disconnect( int argc, char* argv[] ); +extern BOOL lc_quit( int argc, char* argv[] ); +extern BOOL lc_crashdump( int argc, char* argv[] ); +extern BOOL lc_listen( int argc, char* argv[] ); +extern BOOL lc_run( int argc, char* argv[] ); +extern BOOL lc_reset( int argc, char* argv[] ); +extern BOOL lc_modules( int argc, char* argv[] ); +extern BOOL lc_sections( int argc, char* argv[] ); +extern BOOL lc_threads( int argc, char* argv[] ); +extern BOOL lc_ClearConfigs( int argc, char* argv[] ); +extern void AutoConnectTimerProc( HWND hwnd, UINT_PTR idEvent ); +extern int MatchLocalCommands( char* cmdStr, const char* cmdList[], int maxCmds ); +extern void DoDisconnect( BOOL bKeepConnection, int waitTime = 15 ); +extern localCommand_t g_localCommands[]; +extern const int g_numLocalCommands; + +//----------------------------------------------------------------------------- +// REMOTE_CMDS.CPP +//----------------------------------------------------------------------------- +extern int rc_AddCommands( char* commandPtr ); +extern void Remote_DeleteCommands(); +extern DWORD __stdcall Remote_NotifyDebugString( ULONG dwNotification, DWORD dwParam ); +extern DWORD __stdcall Remote_NotifyPrintFunc( const CHAR* strNotification ); +extern DWORD __stdcall Remote_NotifyCommandFunc( const CHAR* strNotification ); +extern int MatchRemoteCommands( char* cmdStr, const char* cmdList[], int maxCmds ); +extern remoteCommand_t* g_remoteCommands[]; +extern int g_numRemoteCommands; + +//----------------------------------------------------------------------------- +// BUG.CPP +//----------------------------------------------------------------------------- +extern bool BugDlg_Init( void ); +extern void BugDlg_Open( void ); +extern void BugReporter_FreeInterfaces(); +extern int rc_MapInfo( char* commandPtr ); + +//----------------------------------------------------------------------------- +// CONFIG.CPP +//----------------------------------------------------------------------------- +extern void ConfigDlg_Open( void ); +extern void ConfigDlg_LoadConfig(); + +//----------------------------------------------------------------------------- +// FILELOG.CPP +//----------------------------------------------------------------------------- +extern void FileLog_Open(); +extern bool FileLog_Init(); +extern void FileLog_Clear(); +extern unsigned int FileLog_AddItem( const char* filename, unsigned int fp ); +extern void FileLog_UpdateItem( unsigned int log, unsigned int fp, fileLogFunctions_e functionId, int value ); +extern void FileLog_SaveConfig(); +extern void FileLog_LoadConfig(); +extern bool g_fileLogEnable; + +//----------------------------------------------------------------------------- +// CPU_PROFILE.CPP +//----------------------------------------------------------------------------- +extern void CpuProfileSamples_Open(); +extern void CpuProfileHistory_Open(); +extern void CpuProfile_SetTitle(); +extern bool CpuProfile_Init(); +extern void CpuProfile_Clear(); +extern int rc_SetCpuProfile( char* commandPtr ); +extern int rc_SetCpuProfileData( char* commandPtr ); + +//----------------------------------------------------------------------------- +// TEX_PROFILE.CPP +//----------------------------------------------------------------------------- +extern void TexProfile_SetTitle(); +extern void TexProfileSamples_Open(); +extern void TexProfileHistory_Open(); +extern bool TexProfile_Init(); +extern int rc_SetTexProfile( char* commandPtr ); +extern int rc_SetTexProfileData( char* commandPtr ); + +//----------------------------------------------------------------------------- +// MEM_PROFILE.CPP +//----------------------------------------------------------------------------- +extern void MemProfile_Open(); +extern void MemProfile_SetTitle(); +extern bool MemProfile_Init(); +extern void MemProfile_Clear(); +extern int rc_FreeMemory( char* commandPtr ); + +//----------------------------------------------------------------------------- +// MEMLOG.CPP +//----------------------------------------------------------------------------- +extern void MemoryLog_Open(); +extern bool MemoryLog_Init(); +extern void MemoryLog_Clear(); +extern void MemoryLog_SaveConfig(); +extern void MemoryLog_LoadConfig(); +extern void MemoryLog_TreeView( bool enable ); +extern void MemoryLog_RefreshItems(); +extern int rc_MemoryLog( char* commandPtr ); +extern bool g_memoryLog_enable; + +//----------------------------------------------------------------------------- +// SYNC_FILES.CPP +//----------------------------------------------------------------------------- +extern int FileSyncEx( const char* localFilename, const char* remoteFilename, int fileSyncMode, bool bVerbose, bool bNoWrite ); +extern bool SyncFilesDlg_Init( void ); +extern void SyncFilesDlg_Open( void ); +extern void InstallDlg_Open( void ); + +//----------------------------------------------------------------------------- +// FILEIO.CPP +//----------------------------------------------------------------------------- +extern int CompareFileTimes_NTFStoFATX( FILETIME* ntfsFileTime, char *ntfsTimeString, int ntfsStringSize, FILETIME* fatxFileTime, char *fatxTimeString, int fatxStringSize ); +extern bool LoadTargetFile( const char *pTargetPath, int *pFileSize, void **pData ); + +//----------------------------------------------------------------------------- +// PROGRESS.CPP +//----------------------------------------------------------------------------- +extern bool Progress_Init(); + +//----------------------------------------------------------------------------- +// SHOW_TEXTURES.CPP +//----------------------------------------------------------------------------- +extern void ShowTextures_Open(); +extern bool ShowTextures_Init(); +extern int rc_TextureList( char* commandPtr ); + +//----------------------------------------------------------------------------- +// TIMESTAMP_LOG.CPP +//----------------------------------------------------------------------------- +extern void TimeStampLog_Open(); +extern bool TimeStampLog_Init(); +extern void TimeStampLog_Clear(); +extern int rc_TimeStampLog( char* commandPtr ); + +//----------------------------------------------------------------------------- +// COMMON.CPP +//----------------------------------------------------------------------------- +extern vprofState_e VProf_GetState(); +extern void VProf_Enable( vprofState_e state ); + +//----------------------------------------------------------------------------- +// SHOW_MATERIALS.CPP +//----------------------------------------------------------------------------- +extern void ShowMaterials_Open(); +extern bool ShowMaterials_Init(); +extern int rc_MaterialList( char* commandPtr ); + +//----------------------------------------------------------------------------- +// SHOW_SOUNDS.CPP +//----------------------------------------------------------------------------- +extern void ShowSounds_Open(); +extern bool ShowSounds_Init(); +extern int rc_SoundList( char* commandPtr ); + +//----------------------------------------------------------------------------- +// SHOW_MEMDUMP.CPP +//----------------------------------------------------------------------------- +extern void ShowMemDump_Open(); +extern bool ShowMemDump_Init(); +extern int rc_MemDump( char* commandPtr ); + +//----------------------------------------------------------------------------- +// EXCLUDE_PATHS.CPP +//----------------------------------------------------------------------------- +extern bool ExcludePathsDlg_Init( void ); +extern void ExcludePathsDlg_Open( void ); + +//----------------------------------------------------------------------------- +// ASSERT_DIALOG.CPP +//----------------------------------------------------------------------------- +extern bool g_AssertDialogActive; +int rc_Assert( char *commandPtr ); |