📄 drvuart.c
字号:
default:
printf("Unsupport Test Command: 0x%x\n", (U16)g_UartCommand.Buffer[_UART_CMD_INDEX1_] );
break;
}
}
/******************************************************************************/
/// Decode the Command gets from UART port for extra device(like tunner/demodulator).
/// Command Buffer [0]:
/// -bit7~bit5 :111b
/// -bit4~bit0 :extra UART command
/// Command Buffer [1~8]:
/// -Extra Control data buffer.
/******************************************************************************/
void MDrv_UART_DecodeExtCommand(void)
{
U8 u8addressCount, u8dataCount;
U8 u8Result, i;
switch( UART_EXT_DEV )
{
#if (ENABLE_DLC_TEST_BY_MSTVTOOL)
case uartExtDev_MstDlcTest:
{
switch(UART_EXT_CMD)
{
case URCMD_MST_DLC_TEST_FORCE_PAUSE:
g_bDebugProgStopFlag = 1; // pause the program
UARTMSG(printf("<Pause>"));
break;
case URCMD_MST_DLC_TEST_FORCE_RUN:
g_bDebugProgStopFlag = 0;
UARTMSG(printf("<Run>"));
break;
case URCMD_MST_DLC_TEST_READ:
{
U8 i;
for (i=0; i<16; i+=2)
{
putchar(0xF3);
putchar(g_ucLumaCurve[i]);
putchar(g_ucLumaCurve[i+1]);
MDrv_Timer_Delayms(50);
UARTMSG(printf(" %d %d", (U16)g_ucLumaCurve[i], (U16)g_ucLumaCurve[i+1]));
}
}
break;
case URCMD_MST_DLC_TEST_WRITE_1:
{
U8 i;
i = (UART_CMD_EXT_LENGTH-4);
for (i=0; i<(UART_CMD_EXT_LENGTH-4); i++)
g_ucLumaCurve[i] = g_UartCommand.Buffer[_UART_CMD_INDEX4_ + i];
}
break;
case URCMD_MST_DLC_TEST_WRITE_2:
{
U8 i;
i = (UART_CMD_EXT_LENGTH-4);
for (i=0; i<(UART_CMD_EXT_LENGTH-4); i++)
g_ucLumaCurve[8 + i] = g_UartCommand.Buffer[_UART_CMD_INDEX4_ + i];
}
break;
case URCMD_MST_DLC_TEST_REINIT:
MDrv_DLC_Init( devPanel_WIDTH(), devPanel_HEIGHT(), &g_ucLumaCurve[0] );
MDrv_DLC_SetOnOff(ENABLE);
break;
case URCMD_MST_DLC_TEST_BOUNDARY_READ:
putchar( 0xF2 );
if( UART_EXT_CMD_MS_DAT1 == 0x04 )
{
putchar( (g_u8_L_L_U << 4) | (g_u8_L_L_D &0x0F) );
}
else if( UART_EXT_CMD_MS_DAT1 == 0x06 )
{
putchar( (g_u8_L_H_U << 4) | (g_u8_L_H_D &0x0F) );
}
else if( UART_EXT_CMD_MS_DAT1 == 0x08 )
{
putchar( g_u8_S_L_U );
}
else if( UART_EXT_CMD_MS_DAT1 == 0x09 )
{
putchar( g_u8_S_L_D );
}
else if( UART_EXT_CMD_MS_DAT1 == 0x0C )
{
putchar( g_u8_S_H_U );
}
else if( UART_EXT_CMD_MS_DAT1 == 0x0D )
{
putchar( g_u8_S_H_D );
}
break;
case URCMD_MST_DLC_TEST_BOUNDARY_WRITE:
if( UART_EXT_CMD_MS_DAT1 == 0x04 )
{
g_u8_L_L_U = UART_EXT_CMD_MS_DAT2 >> 4;
g_u8_L_L_D = UART_EXT_CMD_MS_DAT2 & 0x0F;
}
else if( UART_EXT_CMD_MS_DAT1 == 0x06 )
{
g_u8_L_H_U = UART_EXT_CMD_MS_DAT2 >> 4;
g_u8_L_H_D = UART_EXT_CMD_MS_DAT2 & 0x0F;
}
else if( UART_EXT_CMD_MS_DAT1 == 0x08 )
{
g_u8_S_L_U = UART_EXT_CMD_MS_DAT2;
}
else if( UART_EXT_CMD_MS_DAT1 == 0x09 )
{
g_u8_S_L_D = UART_EXT_CMD_MS_DAT2;
}
else if( UART_EXT_CMD_MS_DAT1 == 0x0C )
{
g_u8_S_H_U = UART_EXT_CMD_MS_DAT2;
}
else if( UART_EXT_CMD_MS_DAT1 == 0x0D )
{
g_u8_S_H_D = UART_EXT_CMD_MS_DAT2;
}
break;
} // End of switch(dev_cmd)
break;
}
#endif //ENABLE_DLC_TEST_BY_MSTVTOOL
case uartExtDev_I2C_DEVICE:
u8addressCount = (UART_EXT_CMD_MS_DAT1 & 0xF0) >> 4;
u8dataCount = (UART_EXT_CMD_MS_DAT1 & 0x0F);
if( u8addressCount + u8dataCount > 12 ) //UART_EXT_CMD_MS_DAT2...UART_EXT_CMD_MS_DAT13
UARTMSG(printf("I2C error!"));
if( UART_EXT_CMD & 0x01 ) // I2C read
u8Result = MDrv_IIC_ReadBytes( UART_EXT_CMD,
u8addressCount,
&UART_EXT_CMD_MS_DAT2,
u8dataCount,
(&UART_EXT_CMD_MS_DAT2)+u8addressCount);
else // I2C write
u8Result = MDrv_IIC_WriteBytes( UART_EXT_CMD,
u8addressCount,
&UART_EXT_CMD_MS_DAT2,
u8dataCount,
(&UART_EXT_CMD_MS_DAT2)+u8addressCount);
if( u8Result )
{
i = _UART_CMD_INDEX5_;
UARTMSG(printf("0x%02X ", (U16)UART_EXT_CMD ));
while( u8addressCount > 0 )
{
UARTMSG(printf("W0x%02X ", (U16)g_UartCommand.Buffer[i]));
--u8addressCount;
++i;
}
while( u8dataCount > 0 )
{
if( UART_EXT_CMD & 0x01 )
UARTMSG(printf("R0x%02X ", (U16)g_UartCommand.Buffer[i]));
else
UARTMSG(printf("W0x%02X ", (U16)g_UartCommand.Buffer[i]));
--u8dataCount;
++i;
}
UARTMSG(printf("\r\n"));
}
else
UARTMSG(printf("0x%02X doesn't exist!\r\n", (U16)UART_EXT_CMD));
break;
case uartExtDev_SAMSUNG_S5H1409_DEMODE:
i = 0;
while( 1 )
{
if( MDrv_IIC_ReadBytes( UART_EXT_CMD|0x01 , 1, &i, 2, &UART_EXT_CMD_MS_DAT12) )
UARTMSG(printf("Reg 0x%02X = 0x%02X 0x%02X\n", (U16)i, (U16)UART_EXT_CMD_MS_DAT12, (U16)UART_EXT_CMD_MS_DAT13));
else
{
UARTMSG(printf("0x%02X doesn't exist!\r\n", (U16)UART_EXT_CMD));
break;
}
if( i == 0xFF )
break;
++i;
}
break;
#if 0//((CHANNEL_SCAN_AUTO_TEST == 1) || (SFU_AUTO_TEST == 1))
case uartExtDev_I2C_DEVICE_NEW:
MDrv_UART_I2C_Device();
break;
case uartExtDev_SCAN_TUNER:
MDrv_UART_Scan_Tuner();
break;
#endif
#if 0//(CHANNEL_SCAN_AUTO_TEST == 1)
case uartExtDev_AUDIO_DEBUG:
switch(UART_EXT_CMD)
{
case UART_AUDIODBG_CMD_SET_BK9:
g_ScanAutoTestAU.u8RegStartAddr = UART_AUDIO_DATA1;
g_ScanAutoTestAU.u8WriteData = UART_AUDIO_DATA2;
g_ScanAutoTestAU.u8ReadBytes = UART_AUDIO_DATA3;
g_u8ScanAutoTestCmd |= AUDIO_DEBUG_CMD_RWREG;
break;
}
break;
#endif
default:
UARTMSG(printf("Unsupport ExtDev %d\n", (U16)UART_EXT_DEV));
break;
}
}
#else
static U8 code u8Dummy;
#endif /* ENABLE_MSTV_UART_DEBUG */
#undef _DRVUART_C_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -