⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refcmdproc.c

📁 IT projecotr reference design.
💻 C
📖 第 1 页 / 共 5 页
字号:
    return TRUE;
}

/****************************************************************************/

static BOOL cmdAlcStatus_rd( void )                               /* 0x0700 */
{
    ALC_StatusStruct stat;

    ALC_GetStatus( &stat );

    cmdPut1( stat.AlgorithmControl );
    cmdPut1( stat.Port1Command );
    cmdPut1( stat.Port2Command );
    cmdPut1( stat.Port3Command );
    cmdPut1( stat.ActivePort );

    cmdPut1( stat.PortVsyncPolarity );
    cmdPut1( stat.PortHsyncPolarity );
    cmdPut1( stat.PortIsInterlaced );
    cmdPut2( stat.PortLinesPerFrame );
    cmdPut2( stat.PortSystemClocksPerLine );
    cmdPut2( stat.PortVertFreq );
    cmdPut2( stat.PortHorzFreq );
    cmdPut2( stat.PortActiveLines );
    cmdPut2( stat.PortActivePixels );
    cmdPut2( stat.PortPixelsPerLine );
    cmdPut4( stat.PortPixelFreqInkHz );

    cmdPut1( stat.RawSyncType );
    cmdPut1( stat.RawVsyncPolarity );
    cmdPut1( stat.RawHsyncPolarity );
    cmdPut1( stat.RawIsInterlaced );
    cmdPut2( stat.RawLinesPerFrame );
    cmdPut2( stat.RawSystemClocksPerLine );
    cmdPut2( stat.RawVertFreq );
    cmdPut2( stat.RawHorzFreq );

    cmdPut1( stat.ASMSourcePort );
    cmdPut1( stat.ASMOperatingMode );
    cmdPut1( stat.ASMStatus );
    cmdPut1( stat.ASMIsPortSyncs );
    cmdPut2( stat.ASMVRes );
    cmdPut2( stat.ASMHRes );
    cmdPut2( stat.ASMActiveTopLine );
    cmdPut2( stat.ASMActiveBottomLine );
    cmdPut2( stat.ASMActiveLeftPixel );
    cmdPut2( stat.ASMActiveRightPixel );
    cmdPut1( stat.ASMPhaseSetting );
    cmdPut2( stat.ASMSampleClock );
    cmdPut4( stat.ASMSampleClockFreqInkHz );
    cmdPut1( stat.ASMIsComponentVideo );
    cmdPut1( stat.ASMIsHDTV );
    cmdPut1( stat.ASMIsYUV );
    cmdPut1( stat.ASMIsSubSampled );
    cmdPut1( stat.ASMIsTopfieldInverted );
    cmdPut1( stat.ASMIsSavedMode );
    cmdPut1( stat.ASMSavedModeGroup );
    cmdPut1( stat.ASMSavedModeIndex );
    cmdPut2( stat.ASMVsyncsUntilResolution );

    cmdPut1( stat.DSMSourcePort );
    cmdPut1( stat.DSMStatus );
    cmdPut2( stat.DSMVRes );
    cmdPut2( stat.DSMHRes );
    cmdPut2( stat.DSMPixelsPerLine );
    cmdPut4( stat.DSMPixelFreqInkHz );
    cmdPut2( stat.DSMVsyncsUntilResolution );

    cmdPut1( stat.PortPreviousEvent );
    cmdPut1( stat.ASMPreviousEvent );
    cmdPut1( stat.DSMPreviousEvent );
    cmdPut1( stat.MiscPreviousEvent );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdAlcVFrame_rd( void )                               /* 0x0708 */
{
    ALC_RegionStruct region;
    SRC_CHANNEL channel = cmdGet1( SRC_CHANNEL );

    ALC_GetVerticalFramingRegion( channel, &region );

    cmdPut2( region.Start );
    cmdPut2( region.Stop );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdAlcVFrame_wr( void )                               /* 0x0708 */
{
    SRC_CHANNEL channel  = cmdGet1( SRC_CHANNEL );
    uint16      lowerLim = cmdGet2( uint16 );
    uint16      upperLim = cmdGet2( uint16 );

    return PASS == ALC_SetVerticalFramingRegion( channel, lowerLim, upperLim );
}

/****************************************************************************/

static BOOL cmdAlcVFrameLim_rd( void )                            /* 0x0709 */
{
    ALC_LimitStruct limit;

    ALC_GetVerticalFramingRegionLimits( SRC_PRIMARY, &limit );

    cmdPut2( limit.LowerLimit );
    cmdPut2( limit.UpperLimit );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdANR_Init_wr( void )                                /* 0x0400 */
{
    return ANR_Init();
}

/****************************************************************************/

static BOOL cmdANR_State_rd( void )                               /* 0x0401 */
{
    BOOL isSpatial = cmdGet1( BOOL );
    BOOL isEnable;
    ANR_FILTER_STRENGTH strength;

    ANR_IsEnabled( isSpatial, &isEnable );
    ANR_GetFilterStrength( isSpatial, &strength );

    cmdPut1( isEnable );
    cmdPut1( strength );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdANR_State_wr( void )                               /* 0x0401 */
{
    BOOL isSpatial               = cmdGet1( BOOL );
    BOOL isEnable                = cmdGet1( BOOL );
    ANR_FILTER_STRENGTH strength = cmdGet1( ANR_FILTER_STRENGTH );

    ANR_SetFilterStrength( isSpatial, strength );
    ANR_Enable( isSpatial, isEnable );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_CIDebug_wr( void )                             /* 0x0213 */
{
    ddc_dumpDebug();
    
    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_Debug_rd( void )                               /* 0x0202 */
{
    uint08 alloc, used;        /* message string allocation and amount used */

    dbmsg_stringUsage( &alloc, &used );                 /* get string usage */

    cmdPutK4( dbmsg_getmask() );
    cmdPut1( alloc );
    cmdPut1( used );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_Debug_wr( void )                               /* 0x0202 */
{
    dbmsg_setmask( cmdGet4( uint32 ) | 0x80000000 );
    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_EDID_wr( void )                                /* 0x020b */
{
    uint16  eeAddr = cmdGet2( uint16 );
    uint08 *src;                                /* EDID data source address */

    if( eeAddr == EDID_DVI_I2C_DEVADDR )
        src = gpEdidStructure -> DVI;
    else if( eeAddr == EDID_ADC_I2C_DEVADDR )
        src = gpEdidStructure -> VGA;
    else
        return FALSE;

    if( PASS != edid_write( eeAddr, src ))
        return FALSE;

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_EDID_rd( void )                                /* 0x020c */
{
    uint16 eeAddr = cmdGet2( uint16 );

    if( PASS != edid_read( eeAddr, cmdGetPtrWrite()))               /* read */
        return FALSE;

    cmdIncWrite( 128 );        /* increment write pointer by size of EEPROM */

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_EDID_comp( void )                              /* 0x020d */
{
    uint16 eeAddr = cmdGet2( uint16 );
    uint08 *src;                                /* EDID data source address */

    if( eeAddr == EDID_DVI_I2C_DEVADDR )
        src = gpEdidStructure -> DVI;
    else if( eeAddr == EDID_ADC_I2C_DEVADDR )
        src = gpEdidStructure -> VGA;
    else
        return FALSE;

    if( PASS != edid_compare( eeAddr, cmdGetPtrWrite(),src ))
        return FALSE;

    cmdIncWrite( 128 );        /* increment write pointer by size of EEPROM */

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_ERestore_wr( void )                            /* 0x0211 */
{
    return eeprom_restoreDefault();

}

/****************************************************************************/

static BOOL cmdApp_GUINav_rd( void )                              /* 0x0204 */
{
    UIREP rep;

    rep.key     = cmdGet1( KCODE_ENUM );
    rep.mouse   = FALSE;
    rep.mouse_x = 0;
    rep.mouse_y = 0;

    guiKeycode( &rep, TRUE );

    return TRUE;
}

/****************************************************************************/

static BOOL cmdApp_I2CPass_rd( void )                               /* 020a */
{
    I2CPORT port       = cmdGet1( I2CPORT );
    BOOL    is7bit     = cmdGet1( BOOL );
    BOOL    hasSubaddr = cmdGet1( BOOL );
    uint32  sclRate    = cmdGet4( uint32 );
    uint16  devAddr    = cmdGet2( uint16 );
    uint08  subAddr    = cmdGet1( uint08 );
    uint16  byteCount  = cmdGet2( uint16 );
    int08   status;
    uint32  SemID;
    I2CINIT saveConfig;
    I2CINIT cmdConfig;

    uint32  bytes_written;
    uint32  bytes_read;

                                /********************************************/
                                /* Validate.                                */
                                /********************************************/

    if(( byteCount < 1 ) || ( byteCount > MAX_MSG ))
        return FALSE;

    if( port > 1 )
        return FALSE;
                                /********************************************/
                                /* Save current port configuration and set  */
                                /* up requested configuration.              */
                                /********************************************/

    I2C_GetSemaphoreID( port, &SemID );

    if( RTA_SUCCESS != RTA_SemReserve( SemID, 100 ))
        return FALSE;

    I2C_GetConfig( port, &saveConfig );
    I2C_GetConfig( port, &cmdConfig );

    cmdConfig.SCLClockRate      = sclRate;
    cmdConfig.MasterAddressMode = is7bit ? I2C_7BIT : I2C_10BIT;

    if( PASS != I2C_SetConfig( port, &cmdConfig ))
    {
        I2C_SetConfig( port, &saveConfig );
        RTA_SemRelease( SemID );
        return FALSE;
    }

                                /********************************************/
                                /* Read.                                    */
                                /********************************************/

    if( hasSubaddr )
    {
        status = I2C_MasterWriteRestartRead
                   ( port,
                     devAddr,
                     1,
                    &subAddr,
                     0,
                     byteCount,
                     cmdGetPtrWrite(),
                     1000,
                    &bytes_written,
                    &bytes_read
                   );
    }

    else
    {
        status = I2C_MasterRead
                   ( port,
                     devAddr,
                     byteCount,
                     cmdGetPtrWrite(),
                     0,
                     1000,
                    &bytes_read
                   );
    }

    cmdIncWrite( bytes_read );
    I2C_SetConfig( port, &saveConfig );
    RTA_SemRelease( SemID );

    return PASS == status;
}

/****************************************************************************/

static BOOL cmdApp_I2CPass_wr( void )                               /* 020a */
{
    I2CPORT port       = cmdGet1( I2CPORT );
    BOOL    is7bit     = cmdGet1( BOOL );
    BOOL    hasSubaddr = cmdGet1( BOOL );
    uint32  sclRate    = cmdGet4( uint32 );
    uint16  devAddr    = cmdGet2( uint16 );
    int08   status;
    uint32  SemID;
    I2CINIT saveConfig;
    I2CINIT cmdConfig;
    uint32  bytes_written;

                                /********************************************/
                                /* Validate.                                */
                                /********************************************/

    if( port > 1 )
        return FALSE;
                                /********************************************/
                                /* Save current port configuration and set  */
                                /* up requested configuration.              */
                                /********************************************/

    I2C_GetSemaphoreID( port, &SemID );

    if( RTA_SUCCESS != RTA_SemReserve( SemID, 100 ))
        return FALSE;

    I2C_GetConfig( port, &saveConfig );
    I2C_GetConfig( port, &cmdConfig );

    cmdConfig.SCLClockRate      = sclRate;
    cmdConfig.MasterAddressMode = is7bit ? I2C_7BIT : I2C_10BIT;

    if( PASS != I2C_SetConfig( port, &cmdConfig ))
    {
        I2C_SetConfig( port, &saveConfig );
        RTA_SemRelease( SemID );
        return FALSE;
    }
                                /********************************************/
                                /* Jump subaddress byte if request does not */
                                /* use the subaddress.                      */
                                /********************************************/

    if( !hasSubaddr )
        cmdIncRead( 1 );

                                /********************************************/
                                /* Write.                                   */
                                /********************************************/

    status = I2C_MasterWrite
              ( port,
                devAddr,
                cmdRemRead(),
                cmdGetPtrRead(),
                0,
                1000,
                &bytes_written
              );

    I2C_SetConfig( port, &saveConfig );
    RTA_SemRelease( SemID );

    return PASS == status;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -