📄 cmdproc_debug.cpp
字号:
strcat(CurString, "Multiply ");
break;
case SET_DIV:
strcat(CurString, "Divide ");
break;
case SET_MOD:
strcat(CurString, "Modulo ");
break;
case SET_RND:
strcat(CurString, "Random Number ");
break;
case SET_AND:
strcat(CurString, "Bitwise And ");
break;
case SET_OR:
strcat(CurString, "Bitwise OR ");
break;
case SET_XOR:
strcat(CurString, "Bitwise XOR ");
break;
case SET_BITSET:
strcat(CurString, "Bitwise Set ");
break;
case SET_BITCLR:
strcat(CurString, "Bitwise Clear ");
break;
case SET_SHL:
strcat(CurString, "Shift Left ");
break;
case SET_SHR:
strcat(CurString, "Shift Right ");
break;
default:
strcat(CurString, "Invalid Set Command Option ");
DbgPrint(("invalid set command option %d\n", SetOption));
break;
}
}
else if (CmdSubGroup == SET_SYSTEM)
{
switch (SetOption)
{
case SET_STREAM:
strcat(CurString, "Stream ");
if (OpCount != 2)
{
DbgPrint(("invalid number of operands for Set Stream\n"));
}
/* operand one */
/* audio flag */
if (CurCmd[1] & 0x80000000)
{
strcat(CurString, "Audio_flag, ");
}
else
{
strcat(CurString, "no Audio_flag ");
}
/* PG Text st flag */
if (CurCmd[1] & 0x00008000)
{
strcat(CurString, "PG_textST, ");
}
else
{
strcat(CurString, "no PG_textST, ");
}
/* disp_s flag */
if (CurCmd[1] & 0x00004000)
{
strcat(CurString, "disp_s_flag, ");
}
else
{
strcat(CurString, "no disp_s_flag, ");
}
if (FlagOpOne == 1)
{
sprintf(tempstring, "Primary Audio Stm %d, ", (CurCmd[1] & 0x00FF0000) >> 16);
strcat(CurString, tempstring);
sprintf(tempstring, "PG TextST Stream Num %d, ", CurCmd[1] & 0x00000FFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR Num Pri Aud Stm %d (Curval=%d), ", (CurCmd[1] & 0x0FFF0000) >> 16,
DebugNavCmdGetRegisterValue((CurCmd[1] & 0x0FFF0000) >> 16, 0) );
strcat(CurString, tempstring);
sprintf(tempstring, "GPR Num PGTextST Stm %d (Curval=%d), ", CurCmd[1] & 0x00000FFF,
DebugNavCmdGetRegisterValue(CurCmd[1] & 0x00000FFF, 0) );
strcat(CurString, tempstring);
}
/* operand two */
/* ig flag */
if (CurCmd[1] & 0x80000000)
{
strcat(CurString, "IG_flag, ");
}
else
{
strcat(CurString, "no IG_flag ");
}
/* angle flag */
if (CurCmd[1] & 0x00004000)
{
strcat(CurString, "angle_flag, ");
}
else
{
strcat(CurString, "no angle_flag ");
}
if (FlagOpTwo == 1)
{
sprintf(tempstring, "Angle Number %d ", CurCmd[1] & 0x000000FF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR Number %d ", CurCmd[1] & 0x00000FFF);
strcat(CurString, tempstring);
}
break;
case SET_NVTIMER:
strcat(CurString, "NV Timer ");
if (OpCount != 2)
{
DbgPrint(("set NV Timer error, needs two operands\n"));
}
if (FlagOpOne == 1)
{
sprintf(tempstring, "MObj ID %d, ", CurCmd[1] & 0x0000FFFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR Num %d, ", CurCmd[1] & 0x00000FFF);
strcat(CurString, tempstring);
}
if (FlagOpTwo == 1)
{
sprintf(tempstring, "Timer Value %d ", CurCmd[1] & 0x0000FFFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR Num Timer Value %d ", CurCmd[1] & 0x00000FFF);
strcat(CurString, tempstring);
}
break;
case SET_BTNPG:
strcat(CurString, "ButtonPage ");
/* btn flag */
if (CurCmd[1] & 0x80000000)
{
strcat(CurString, "Btn_flag, ");
}
else
{
strcat(CurString, "no Btn_flag, ");
}
if (FlagOpOne == 1)
{
sprintf(tempstring, "Selected Button ID: %d ", CurCmd[1] & 0x0000FFFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR # Selected BTN ID %d, ", CurCmd[1] & 0x00000FFF);
strcat(CurString, tempstring);
}
/* the page flag */
if (CurCmd[2] & 0x80000000)
{
strcat(CurString, "Page_flag, ");
}
else
{
strcat(CurString, "no Page_flag, ");
}
/* the effect off flag */
if (CurCmd[2] & 0x40000000)
{
strcat(CurString, "Eff_off, ");
}
else
{
strcat(CurString, "no Eff_off, ");
}
if (FlagOpTwo == 1)
{
sprintf(tempstring, "PageID: %d ", CurCmd[2] & 0x00000FF);
strcat(CurString, tempstring);
}
else if (FlagOpTwo == 0)
{
sprintf(tempstring, "GPR for Page ID: %d (%d) ", CurCmd[2] & 0x00000FFF,
DebugNavCmdGetRegisterValue(CurCmd[2] & 0x00000FFF, 0));
strcat(CurString, tempstring);
}
break;
case SET_ENBTN:
strcat(CurString, "Enable Button ");
if (FlagOpOne == 1)
{
sprintf(tempstring, "ButtonID %d ", CurCmd[1] & 0xFFFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR #:%d GPR # BTN ID %d, ", ((CurCmd[1] & 0x00000F00) >> 8), CurCmd[1] & 0x000000FF);
strcat(CurString, tempstring);
}
break;
case SET_DISBTN:
strcat(CurString, "Disable Button ");
if (FlagOpOne == 1)
{
sprintf(tempstring, "ButtonID %d ", CurCmd[1] & 0xFFFF);
strcat(CurString, tempstring);
}
else
{
sprintf(tempstring, "GPR # BTN ID %d (%d), ", CurCmd[1] & 0x00000FFF,
DebugNavCmdGetRegisterValue(CurCmd[1] & 0x00000FFF, 0));
strcat(CurString, tempstring);
}
break;
case SET_SECSTM:
strcat(CurString, "Set Secondary Stream ");
break;
case SET_POPOFF:
strcat(CurString, "Popup Menu Off ");
break;
case SET_STLON:
strcat(CurString, "Still On ");
break;
case SET_STLOFF:
strcat(CurString, "Still Off ");
break;
case SET_RESV10:
strcat(CurString, "Reserved Cmd 10 ");
break;
case SET_RESV11:
strcat(CurString, "Reserved Cmd 11 ");
break;
default:
strcat(CurString, "Invalid Set System Group ");
DbgPrint(("Invalid set system group\n"));
break;
}
}
else
{
DbgPrint(("invalid Set Subgroup "));
}
}
else
{
DbgPrint(("invalid command group given "));
}
/* only print register values if we are doing COMPARE or SET with a SET_GRP */
if ((CmdGroup == 2) && (CmdSubGroup == SET_GRP))
{
if (OpCount == 1)
{
if (FlagOpOne == 0)
{
RegFlag = (CurCmd[1] & 0x80000000) >> 31;
RegNum = (CurCmd[1] & 0xFFF);
if (RegFlag == 0)
{
sprintf(tempstring, "Dest GPR Reg: %d (%d)", RegNum, DebugNavCmdGetRegisterValue(RegNum, 0));
strcat(CurString, tempstring);
}
else if (RegFlag == 1)
{
sprintf(tempstring, "Dest PSR Reg: %d (%d) ", RegNum, DebugNavCmdGetRegisterValue(RegNum, 1));
strcat(CurString, tempstring);
}
else
{
DbgPrint(("Invalid register flag value\n"));
strcat(CurString, "(Invalid register flag value) ");
}
}
else
{
sprintf(tempstring, "Immediate Value 0x%x ", CurCmd[2]);
strcat(CurString, tempstring);
}
}
else if (OpCount == 2)
{
if (FlagOpOne == 0)
{
RegFlag = (CurCmd[1] & 0x80000000) >> 31;
RegNum = (CurCmd[1] & 0xFFF);
if (RegFlag == 0)
{
sprintf(tempstring, "Dest GPR Reg: %d (%d) ", RegNum, DebugNavCmdGetRegisterValue(RegNum, 0));
strcat(CurString, tempstring);
}
else if (RegFlag == 1)
{
sprintf(tempstring, "Dest PSR Reg: %d (%d)", RegNum, DebugNavCmdGetRegisterValue(RegNum, 1));
strcat(CurString, tempstring);
}
else
{
DbgPrint(("Invalid register flag value\n"));
strcat(CurString, "(Invalid register flag value) ");
}
}
else
{
sprintf(tempstring, "Immediate Value 0x%x ", CurCmd[1]);
strcat(CurString, tempstring);
}
/* now source register */
if (FlagOpTwo == 0)
{
RegFlag = (CurCmd[2] & 0x80000000) >> 31;
RegNum = (CurCmd[2] & 0xFFF);
if (RegFlag == 0)
{
sprintf(tempstring, "Src GPR Reg: %d (%d)", RegNum, DebugNavCmdGetRegisterValue(RegNum, 0));
strcat(CurString, tempstring);
}
else if (RegFlag == 1)
{
sprintf(tempstring, "Src PSR Reg: %d (%d)", RegNum, DebugNavCmdGetRegisterValue(RegNum, 1));
strcat(CurString, tempstring);
}
else
{
DbgPrint(("Invalid register flag value\n"));
strcat(CurString, "(Invalid register flag value) ");
}
}
else
{
sprintf(tempstring, "Immediate Value 0x%x", CurCmd[2]);
strcat(CurString, tempstring);
}
}
}
/* end the line, using windows EOL, Linux can deal, Windows can't deal with \n */
strcat(CurString, "\r\n");
DbgPrint(("%s\n", CurString));
return 0;
}
/**
* NavCmdGetRegisterValue -- Get a register value from PSR or GPR.
*
* @param
* ulOperand -- Operand that contains register flag and register number
*
* @retval
* value from specified register
*/
static ULONG DebugNavCmdGetRegisterValue(ULONG Register, int PSR)
{
uint32 uiValue;
/*
* Check the register flag to determine if register number is a PSR or GPR.
*/
if (PSR)
{
/* Get PSR value from playback control engine */
if (PlayCtrlGetPSR(Register, &uiValue) != PLAYCTRL_SUCCESS)
{
DbgPrint(("NavCmdGetRegisterValue: failed to get PSR value!\n"));
}
}
else
{
/* Get GPR value from playback control engine */
if (PlayCtrlGetGPR(Register, &uiValue) != PLAYCTRL_SUCCESS)
{
DbgPrint(("NavCmdGetRegisterValue: failed to get GPR value!\n"));
}
}
return (uiValue);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -