📄 s5h1410_ver1.2.c
字号:
{
return TRUE;
}
}
return FALSE;
}
/****************************************************************************************************
* S5H1410 Alter Mpeg Parallel/Serial Mode
* Conditions:
* Description: Parallel output TS.(Default)
* Addr: 0xa0
* Value: 0x1001 -> PARALLEL , 0x1101 -> SERIAL
****************************************************************************************************/
BOOLEAN Sec_1410xAlterMpegMode(SamsungMpegMode_t mode)
{
BOOLEAN result;
if(mode == MPEG_MODE_PARAL)
result = MDrv_IIC_Write2Bytes(IIC_1410x_RegId, 0xA0, 0x1001);
else
result = MDrv_IIC_Write2Bytes(IIC_1410x_RegId, 0xA0, 0x1101);
return result;
}
/**************************************************************************
* S5H1409 Alter Mpeg Normal/Invert Clock
* Conditions:
* Description : Inverting output clk.(Default)
* After this function is called TS timing could be changed.
* Addr : 0xa1
* Value: 0x0330
/**************************************************************************/
BOOLEAN Sec_1410xAlterMpegClk(SamsungMpegClk_t clock)
{
BOOLEAN result;
if(clock == MPEG_CLK_INVERT)
result = MDrv_IIC_Write2Bytes(IIC_1410x_RegId, 0xA1,0x0330);
else
result = MDrv_IIC_Write2Bytes(IIC_1410x_RegId, 0xA1,0x1330);
return result;
}
/**************************************************************************
* S5H1410 VSB SNR value(Signal Strength) Check Driver
* Conditions:
* Description :
* This function lets the user's application software read a value
* that is related to the SNR through the SNR Look Up Table in VSB mode.
* Addr : 0xf1
* Value: [9:0]
/**************************************************************************/
static I2C_STATUS_DBL VsbSnrLookUpTable(U16 SnrRead)
{
I2C_STATUS_DBL SnrLookUP;
if(SnrRead == 1023 ) SnrLookUP = 77 ; // Something Wrong
else if(SnrRead > 923 ) SnrLookUP = 30 ;
else if(SnrRead > 918 ) SnrLookUP = 29.5 ;
else if(SnrRead > 915 ) SnrLookUP = 29.0;
else if(SnrRead > 911 ) SnrLookUP = 28.5 ;
else if(SnrRead > 906 ) SnrLookUP = 28.0 ;
else if(SnrRead > 901 ) SnrLookUP = 27.5 ;
else if(SnrRead > 896 ) SnrLookUP = 27.0 ;
else if(SnrRead > 891 ) SnrLookUP = 26.5 ;
else if(SnrRead > 885 ) SnrLookUP = 26.0 ;
else if(SnrRead > 879 ) SnrLookUP = 25.5 ;
else if(SnrRead > 873 ) SnrLookUP = 25.0 ;
else if(SnrRead > 864 ) SnrLookUP = 24.5 ;
else if(SnrRead > 858 ) SnrLookUP = 24.0 ;
else if(SnrRead > 850 ) SnrLookUP = 23.5 ;
else if(SnrRead > 841 ) SnrLookUP = 23.0 ;
else if(SnrRead > 832 ) SnrLookUP = 22.5 ;
else if(SnrRead > 823 ) SnrLookUP = 22.0 ;
else if(SnrRead > 812 ) SnrLookUP = 21.5 ;
else if(SnrRead > 802 ) SnrLookUP = 21.0 ;
else if(SnrRead > 788 ) SnrLookUP = 20.5 ;
else if(SnrRead > 778 ) SnrLookUP = 20.0 ;
else if(SnrRead > 767 ) SnrLookUP = 19.5 ;
else if(SnrRead > 753 ) SnrLookUP = 19.0 ;
else if(SnrRead > 740 ) SnrLookUP = 18.5 ;
else if(SnrRead > 725 ) SnrLookUP = 18.0 ;
else if(SnrRead > 707 ) SnrLookUP = 17.5 ;
else if(SnrRead > 689 ) SnrLookUP = 17.0 ;
else if(SnrRead > 671 ) SnrLookUP = 16.5 ;
else if(SnrRead > 656 ) SnrLookUP = 16.0 ;
else if(SnrRead > 637 ) SnrLookUP = 15.5 ;
else if(SnrRead > 616 ) SnrLookUP = 15.0 ;
else if(SnrRead > 542 ) SnrLookUP = 14.5 ;
else if(SnrRead > 519 ) SnrLookUP = 14.0 ;
else if(SnrRead > 507 ) SnrLookUP = 13.5 ;
else if(SnrRead > 497 ) SnrLookUP = 13.0 ;
else if(SnrRead > 492 ) SnrLookUP = 12.5 ;
else if(SnrRead > 474 ) SnrLookUP = 12.0 ;
else if(SnrRead > 300 ) SnrLookUP = 1.11 ;
else SnrLookUP = 0;
return SnrLookUP;
}
I2C_STATUS_DBL Sec_1410xVsbSnrResultCheck(void)
{
U16 value;
I2C_STATUS_DBL SnrValue;
value = MDrv_IIC_Read2Bytes(IIC_1410x_RegId,0xf1);
value = (value & 0x3ff);
SnrValue = VsbSnrLookUpTable(value);
return SnrValue;
}
/*********************************************************************************************************
* S5H1410 VSB Packet Error Check Driver
* Conditions:
* Description:
* Error count value after RS decoder
* This function is used to count the packet error.
* Addr: 0xb5
* Value: [15:0]
**********************************************************************************************************/
U16 Sec1410_Unc_Error(void)
{
return MDrv_IIC_Read2Bytes(IIC_1410x_RegId, 0xab);
}
/*********************************************************************************************************
* S5H1410 QAM SNR value(Signal Strength) Check Driver
* Conditions:
* Description
* This function lets the user's application software read a value that is related to the SNR through
* the SNR Look Up Table in QAM mode.
* Addr : 0xf0
* Value: [7:0]
**********************************************************************************************************/
static I2C_STATUS_DBL Qam64SnrLookUpTable(int SnrRead)
{
I2C_STATUS_DBL SnrLookUP;
if(SnrRead< 12 ) SnrLookUP = 30 ;
else if(SnrRead < 15 ) SnrLookUP = 29 ;
else if(SnrRead < 18 ) SnrLookUP = 28 ;
else if(SnrRead < 22 ) SnrLookUP = 27 ;
else if(SnrRead < 23 ) SnrLookUP = 26.8 ;
else if(SnrRead < 24 ) SnrLookUP = 26.6 ;
else if(SnrRead < 25 ) SnrLookUP = 26.4 ;
else if(SnrRead < 27 ) SnrLookUP = 26.2 ;
else if(SnrRead < 28 ) SnrLookUP = 26 ;
else if(SnrRead < 29 ) SnrLookUP = 25.8 ;
else if(SnrRead < 30 ) SnrLookUP = 25.6 ;
else if(SnrRead < 32 ) SnrLookUP = 25.4 ;
else if(SnrRead < 33 ) SnrLookUP = 25.2 ;
else if(SnrRead < 34 ) SnrLookUP = 25 ;
else if(SnrRead < 35 ) SnrLookUP = 24.9 ;
else if(SnrRead < 36 ) SnrLookUP = 24.8 ;
else if(SnrRead < 37 ) SnrLookUP = 24.7 ;
else if(SnrRead < 38 ) SnrLookUP = 24.6 ;
else if(SnrRead < 39 ) SnrLookUP = 24.5 ;
else if(SnrRead < 40 ) SnrLookUP = 24.4 ;
else if(SnrRead < 41 ) SnrLookUP = 24.3 ;
else if(SnrRead < 41 ) SnrLookUP = 24.2 ;
else if(SnrRead < 42 ) SnrLookUP = 24.1 ;
else if(SnrRead < 43 ) SnrLookUP = 24 ;
else if(SnrRead < 44 ) SnrLookUP = 23.9 ;
else if(SnrRead < 45 ) SnrLookUP = 23.8 ;
else if(SnrRead < 46 ) SnrLookUP = 23.7 ;
else if(SnrRead < 47 ) SnrLookUP = 23.6 ;
else if(SnrRead < 48 ) SnrLookUP = 23.5 ;
else if(SnrRead < 49 ) SnrLookUP = 23.4 ;
else if(SnrRead < 50 ) SnrLookUP = 23.3 ;
else if(SnrRead < 51 ) SnrLookUP = 23.2 ;
else if(SnrRead < 52 ) SnrLookUP = 23.1 ;
else if(SnrRead < 53 ) SnrLookUP = 23 ;
else if(SnrRead < 55 ) SnrLookUP = 22.9 ;
else if(SnrRead < 56 ) SnrLookUP = 22.8 ;
else if(SnrRead < 57 ) SnrLookUP = 22.7 ;
else if(SnrRead < 58 ) SnrLookUP = 22.6 ;
else if(SnrRead < 59 ) SnrLookUP = 22.5 ;
else if(SnrRead < 60 ) SnrLookUP = 22.4 ;
else if(SnrRead < 62 ) SnrLookUP = 22.3 ;
else if(SnrRead < 63 ) SnrLookUP = 22.2 ;
else if(SnrRead < 65 ) SnrLookUP = 22.1 ;
else if(SnrRead < 66 ) SnrLookUP = 22 ;
else if(SnrRead < 68 ) SnrLookUP = 21.9 ;
else if(SnrRead < 69 ) SnrLookUP = 21.8 ;
else if(SnrRead < 70 ) SnrLookUP = 21.7 ;
else if(SnrRead < 72 ) SnrLookUP = 21.6 ;
else if(SnrRead < 73 ) SnrLookUP = 21.5 ;
else if(SnrRead < 75 ) SnrLookUP = 21.4 ;
else if(SnrRead < 76 ) SnrLookUP = 21.3 ;
else if(SnrRead < 78 ) SnrLookUP = 21.2 ;
else if(SnrRead < 80 ) SnrLookUP = 21.1 ;
else if(SnrRead < 81 ) SnrLookUP = 21 ;
else if(SnrRead < 83 ) SnrLookUP = 20.9 ;
else if(SnrRead < 84 ) SnrLookUP = 20.8 ;
else if(SnrRead < 85 ) SnrLookUP = 20.7 ;
else if(SnrRead < 87 ) SnrLookUP = 20.6 ;
else if(SnrRead < 89 ) SnrLookUP = 20.5 ;
else if(SnrRead < 91 ) SnrLookUP = 20.4 ;
else if(SnrRead < 93 ) SnrLookUP = 20.3 ;
else if(SnrRead < 95 ) SnrLookUP = 20.2 ;
else if(SnrRead < 96 ) SnrLookUP = 20.1 ;
else if(SnrRead < 104 ) SnrLookUP = 20 ;
else SnrLookUP = 0;
return SnrLookUP;
}
static I2C_STATUS_DBL Qam256SnrLookUpTable(int SnrRead)
{
I2C_STATUS_DBL SnrLookUP;
if(SnrRead< 12 ) SnrLookUP = 40 ;
else if(SnrRead < 13 ) SnrLookUP = 39 ;
else if(SnrRead < 15 ) SnrLookUP = 38 ;
else if(SnrRead < 17 ) SnrLookUP = 37 ;
else if(SnrRead < 19 ) SnrLookUP = 36 ;
else if(SnrRead < 22 ) SnrLookUP = 35 ;
else if(SnrRead < 22 ) SnrLookUP = 34.8 ;
else if(SnrRead < 23 ) SnrLookUP = 34.6 ;
else if(SnrRead < 24 ) SnrLookUP = 34.4 ;
else if(SnrRead < 25 ) SnrLookUP = 34.2 ;
else if(SnrRead < 26 ) SnrLookUP = 34 ;
else if(SnrRead < 27 ) SnrLookUP = 33.8 ;
else if(SnrRead < 27 ) SnrLookUP = 33.6 ;
else if(SnrRead < 28 ) SnrLookUP = 33.4 ;
else if(SnrRead < 29 ) SnrLookUP = 33.2 ;
else if(SnrRead < 30 ) SnrLookUP = 33 ;
else if(SnrRead < 31 ) SnrLookUP = 32.8 ;
else if(SnrRead < 32 ) SnrLookUP = 32.6 ;
else if(SnrRead < 33 ) SnrLookUP = 32.4 ;
else if(SnrRead < 34 ) SnrLookUP = 32.2 ;
else if(SnrRead < 35 ) SnrLookUP = 32 ;
else if(SnrRead < 37 ) SnrLookUP = 31.8 ;
else if(SnrRead < 39 ) SnrLookUP = 31.6 ;
else if(SnrRead < 40 ) SnrLookUP = 31.4 ;
else if(SnrRead < 41 ) SnrLookUP = 31.2 ;
else if(SnrRead < 42 ) SnrLookUP = 31 ;
else if(SnrRead < 43 ) SnrLookUP = 30.8 ;
else if(SnrRead < 46 ) SnrLookUP = 30.6 ;
else if(SnrRead < 47 ) SnrLookUP = 30.4 ;
else if(SnrRead < 49 ) SnrLookUP = 30.2 ;
else if(SnrRead < 51 ) SnrLookUP = 30 ;
else if(SnrRead < 53 ) SnrLookUP = 29.8 ;
else if(SnrRead < 54 ) SnrLookUP = 29.7 ;
else if(SnrRead < 55 ) SnrLookUP = 29.6 ;
else if(SnrRead < 56 ) SnrLookUP = 29.5 ;
else if(SnrRead < 57 ) SnrLookUP = 29.4 ;
else if(SnrRead < 59 ) SnrLookUP = 29.3 ;
else if(SnrRead < 60 ) SnrLookUP = 29.2 ;
else if(SnrRead < 61 ) SnrLookUP = 29.1 ;
else if(SnrRead < 63 ) SnrLookUP = 29 ;
else if(SnrRead < 64 ) SnrLookUP = 28.9 ;
else if(SnrRead < 65 ) SnrLookUP = 28.8 ;
else if(SnrRead < 66 ) SnrLookUP = 28.7 ;
else if(SnrRead < 68 ) SnrLookUP = 28.6 ;
else if(SnrRead < 69 ) SnrLookUP = 28.5 ;
else if(SnrRead < 71 ) SnrLookUP = 28.4 ;
else if(SnrRead < 72 ) SnrLookUP = 28.3 ;
else if(SnrRead < 74 ) SnrLookUP = 28.2 ;
else if(SnrRead < 75 ) SnrLookUP = 28.1 ;
else if(SnrRead < 76 ) SnrLookUP = 28 ;
else if(SnrRead < 77 ) SnrLookUP = 27.9 ;
else if(SnrRead < 78 ) SnrLookUP = 27.8 ;
else if(SnrRead < 81 ) SnrLookUP = 27.7 ;
else if(SnrRead < 83 ) SnrLookUP = 27.6 ;
else if(SnrRead < 84 ) SnrLookUP = 27.5 ;
else if(SnrRead < 86 ) SnrLookUP = 27.4 ;
else if(SnrRead < 87 ) SnrLookUP = 27.3 ;
else if(SnrRead < 89 ) SnrLookUP = 27.2 ;
else if(SnrRead < 90 ) SnrLookUP = 27.1 ;
else if(SnrRead < 92 ) SnrLookUP = 27 ;
else if(SnrRead < 93 ) SnrLookUP = 26.9 ;
else if(SnrRead < 95 ) SnrLookUP = 26.8 ;
else if(SnrRead < 96 ) SnrLookUP = 26.7 ;
else if(SnrRead < 98 ) SnrLookUP = 26.6 ;
else if(SnrRead < 100 ) SnrLookUP = 26.5 ;
else if(SnrRead < 102 ) SnrLookUP = 26.4 ;
else if(SnrRead < 104 ) SnrLookUP = 26.3 ;
else if(SnrRead < 105 ) SnrLookUP = 26.2 ;
else if(SnrRead < 106 ) SnrLookUP = 26.1 ;
else if(SnrRead < 110 ) SnrLookUP = 26 ;
else SnrLookUP = 0;
return SnrLookUP;
}
I2C_STATUS_DBL Sec_1410xQamSnrResultCheck(void)
{
U16 lvalue;
U16 value;
U16 value1;
U16 value2;
U16 result;
I2C_STATUS_DBL SnrValue=0;
value1 = MDrv_IIC_Read2Bytes(IIC_1410x_RegId,0x7f);
value2 = MDrv_IIC_Read2Bytes(IIC_1410x_RegId,0xf0);
result = ((unsigned int)value2>>8 & 0x01);
value = MDrv_IIC_Read2Bytes(IIC_1410x_RegId,0xf0);
lvalue = (value & 0xff);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -