亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sttuner.c

?? 這是DVB tuner驅動部分和其它相關的源碼和一些技術資料文檔.
?? C
?? 第 1 頁 / 共 4 頁
字號:
    }    /* Obtain the control block from the handle */    Tuner_p = GetControlBlockFromHandle(Handle);    /* Ensure the handle is valid */    if (Tuner_p != NULL)    {        /* Copy the current tuner information to the user */        *TunerInfo_p = Tuner_p->TunerInfo;    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_GetTunerInfo() *//*****************************************************************************Name: STTUNER_GetThresholdList()Description:    Obtains the ordered threshold list that contain the high/low signal    quality thresholds for notifying signal quality change events.Parameters:    Handle, the handle of the tuner device.Return Value:    ST_NO_ERROR,                the operation was carried out without error.    ST_ERROR_INVALID_HANDLE,    the handle was invalid.    ST_ERROR_BAD_PARAMETER      Handle or ThresholdList_p or QualityFormat_p NULLSee Also:    STTUNER_SetScanList()*****************************************************************************/ST_ErrorCode_t STTUNER_GetThresholdList(STTUNER_Handle_t Handle,                                        STTUNER_ThresholdList_t *ThresholdList_p,                                        STTUNER_QualityFormat_t *QualityFormat_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((Handle == 0) || (ThresholdList_p == NULL) || (QualityFormat_p == NULL))    {        return ST_ERROR_BAD_PARAMETER;    }    /* Obtain the control block from the handle */    Tuner_p = GetControlBlockFromHandle(Handle);    /* Ensure the handle is valid */    if (Tuner_p != NULL)    {        /* Copy the information for the caller */        ThresholdList_p->NumElements = Tuner_p->ThresholdList.NumElements;        memcpy(ThresholdList_p->ThresholdList, Tuner_p->ThresholdList.ThresholdList,               (Tuner_p->ThresholdList.NumElements *                sizeof(STTUNER_SignalThreshold_t)));        *QualityFormat_p = Tuner_p->QualityFormat;    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_GetThresholdList() *//*****************************************************************************Name: STTUNER_Init()Description:    Initializes the tuner device.Parameters:    DeviceName,     the tuner device name as set during initialization.    InitParams_p,   the initialization parameters.Return Value:    ST_NO_ERROR,                    the operation was carried out without                                    error.    ST_ERROR_ALREADY_INITIALIZED,   the device has already been initialized.    ST_ERROR_BAD_PARAMETER,         one or more parameters was invalid.    STTUNER_ERROR_LNB_HW            a hardware error in the LNB circuit.    ST_ERROR_NO_MEMORY,             not used -- no memory allocation.    STI2C_ERROR_LINE_STATE,         I2C initialization failed.See Also:    STTUNER_Term()*****************************************************************************/ST_ErrorCode_t STTUNER_Init( ST_DeviceName_t DeviceName,                             STTUNER_InitParams_t *InitParams_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ErrorCode_t TunerError;    TUNER_ControlBlock_t *Tuner_p;    BOOL InitMemory = FALSE;    BOOL InitI2c = FALSE;    /* Check the parameters */    if(InitParams_p == NULL)    {        return ST_ERROR_BAD_PARAMETER;    }    /* Ensure the tuner device is not already initialized */    if (!IsInit(DeviceName))    {        /* Check the device name does not violate the maximum length */        if (strlen(DeviceName) <= ST_MAX_DEVICE_NAME)        {            /* Ensure device types are all supported */            if (InitParams_p->Device >= STTUNER_DEVICE_SATELLITE &&                InitParams_p->Device < STTUNER_DEVICE_UNKNOWN &&                InitParams_p->DemodType >= STTUNER_DEMOD_STV0199 &&                InitParams_p->DemodType < STTUNER_DEMOD_UNKNOWN &&                InitParams_p->TunerType >= STTUNER_TUNER_S68G21 &&                InitParams_p->TunerType < STTUNER_TUNER_UNKNOWN)            {                Node_t *New_p;                /* Allocate required memory for new control block */                New_p = memory_allocate((partition_t *)InitParams_p->DriverPartition,                                        sizeof(Node_t));                /* Ensure allocation was successful */                if (New_p != NULL)                {                    STI2C_OpenParams_t I2cOpenParams;                    /* Flag memory as successfully allocated */                    InitMemory = TRUE;                    /* Setup node information */                    Tuner_p = (TUNER_ControlBlock_t *)New_p;                    /* Copy init params and device name */                    Tuner_p->InitParams = *InitParams_p;                    strcpy(Tuner_p->DeviceName, DeviceName);                    /* Initialize the I2C interface */                    I2cOpenParams.AddressType = STI2C_ADDRESS_7_BITS;                    I2cOpenParams.BusAccessTimeOut     = 20;                    I2cOpenParams.I2cAddress           = InitParams_p->I2CTunerAddress;#ifdef STTUNER_DEBUG_I2C                    STTBX_Print(("Device=%s Address=0x%02x\n",                                 InitParams_p->I2CTunerDevice,                                 I2cOpenParams.I2cAddress));#endif                    Error = STI2C_Open(InitParams_p->I2CTunerDevice,                                       &I2cOpenParams,                                       &Tuner_p->I2CTunerHandle);#ifdef STTUNER_DEBUG_I2C                    STTBX_Print(("Handle=%d\n", Tuner_p->I2CTunerHandle));#endif                    if (Error == ST_NO_ERROR)                    {                        /* Re-use old open parameters structure, but modify the address                         * to be used.                         */                        I2cOpenParams.I2cAddress = InitParams_p->I2CDemodAddress;#ifdef STTUNER_DEBUG_I2C                        STTBX_Print(("Device=%s Address=0x%02x\n",                                     InitParams_p->I2CDemodDevice,                                     I2cOpenParams.I2cAddress));#endif                        Error = STI2C_Open(InitParams_p->I2CDemodDevice,                                           &I2cOpenParams,                                           &Tuner_p->I2CDemodHandle);#ifdef STTUNER_DEBUG_I2C                        STTBX_Print(("Handle=%d\n", Tuner_p->I2CDemodHandle));#endif                    }                    else                    {                        /* Clean-up previously allocated resources */                        STI2C_Close(Tuner_p->I2CTunerHandle);                    }                    if (Error == ST_NO_ERROR)                    {                        /* Flag I2C as successfully setup */                        InitI2c = TRUE;                        /* Initialize the hardware */                        TunerError = TUNER_Init(Tuner_p,                                                (STTUNER_InitParams_t *)InitParams_p);                        if (TunerError != TUNER_NO_ERROR)                        {                            /* Map tuner error to STAPI error */                            Error = TunerError;                        }                        else                        {                            /* Finally, add the device to the device queue */                            interrupt_lock(); /* Ensure queue changes are atomic */                            /* Append new node */                            AppendNode(DeviceQueue_p, New_p, Tuner_p);                            /* Check for first init. */                            if (DeviceQueue_p == NULL)                                DeviceQueue_p = New_p;                            interrupt_unlock();                        }                    }                }                else                {                    /* Memory allocate error */                    Error = ST_ERROR_NO_MEMORY;                }            }            else            {                /* The required tuner device is not supported */                Error = ST_ERROR_FEATURE_NOT_SUPPORTED;            }        }        else        {            /* The device name exceeds the maximum length limit */            Error = ST_ERROR_BAD_PARAMETER;        }    }    else    {        /* The device is already initialized */        Error = ST_ERROR_ALREADY_INITIALIZED;    }    /* Tidy-up previously allocated resources if anything failed */    if (Error != ST_NO_ERROR)    {        if (InitI2c)                    /* Free I2C? */        {            (void)STI2C_Close(Tuner_p->I2CTunerHandle);            (void)STI2C_Close(Tuner_p->I2CDemodHandle);        }        if (InitMemory)                 /* Free memory? */        {            memory_deallocate(InitParams_p->DriverPartition,                              Tuner_p);        }    }    /* Common exit point */    return Error;} /* STTUNER_Init() *//*****************************************************************************Name: STTUNER_Open()Description:Parameters:    DeviceName, the tuner device name as set during initialization.Return Value:    ST_NO_ERROR,                the operation was carried out without error.    ST_ERROR_UNKNOWN_DEVICE,    the device is not initialized.    ST_ERROR_NO_FREE_HANDLES,   the device is already open.    ST_ERROR_BAD_PARAMETER      OpenParams_p or Handle_p NULLSee Also:    STTUNER_Close()*****************************************************************************/ST_ErrorCode_t STTUNER_Open(const ST_DeviceName_t DeviceName,                            const STTUNER_OpenParams_t *OpenParams_p,                            STTUNER_Handle_t *Handle_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((OpenParams_p == NULL) || (Handle_p == NULL))    {        return ST_ERROR_BAD_PARAMETER;    }    /* Obtain the control block from the handle */    Tuner_p = GetControlBlockFromName(DeviceName);    /* Ensure the handle is valid */    if (Tuner_p != NULL)    {        /* Ensure the device is not already open */        if (Tuner_p->Handle == 0)        {            /* Select some sensible defaults for the scan list and             * band/lo list -- note that we do not need to worry about             * mutual exclusion yet as the scan task must be idle.             */            /* Copy the open params to the tuner control block */            Tuner_p->OpenParams = *OpenParams_p;            /* Allocate the handle for the tuner -- we use the tuner             * control block, as this will always give us a non-zero             * value at this point.             */            *Handle_p = Tuner_p->Handle = (STTUNER_Handle_t)Tuner_p;            /* Try to open the event handler driver */            if (Tuner_p->InitParams.EVTDeviceName[0] != 0)            {                STEVT_OpenParams_t EVTOpenParams;                Error = STEVT_Open(Tuner_p->InitParams.EVTDeviceName,                                   &EVTOpenParams,                                   &Tuner_p->EVTHandle);                if (Error == ST_NO_ERROR)                {                    if (STEVT_Register(Tuner_p->EVTHandle,                                       STTUNER_EV_LOCKED,                                       &Tuner_p->EvtId[EventToId(STTUNER_EV_LOCKED)]                                      ) != ST_NO_ERROR ||                        STEVT_Register(Tuner_p->EVTHandle,                                       STTUNER_EV_UNLOCKED,                                       &Tuner_p->EvtId[EventToId(STTUNER_EV_UNLOCKED)]                                      ) != ST_NO_ERROR ||                        STEVT_Register(Tuner_p->EVTHandle,                                       STTUNER_EV_SCAN_FAILED,                                       &Tuner_p->EvtId[EventToId(STTUNER_EV_SCAN_FAILED)]                                      ) != ST_NO_ERROR ||                        STEVT_Register(Tuner_p->EVTHandle,                                       STTUNER_EV_TIMEOUT,                                       &Tuner_p->EvtId[EventToId(STTUNER_EV_TIMEOUT)]                                      ) != ST_NO_ERROR ||                        STEVT_Register(Tuner_p->EVTHandle,                                       STTUNER_EV_SIGNAL_CHANGE,                                       &Tuner_p->EvtId[EventToId(STTUNER_EV_SIGNAL_CHANGE)]                                      ) != ST_NO_ERROR                       )                    {                        /* Event registration failed */                        STEVT_Close(Tuner_p->EVTHandle); /* Close handle to EVT */                        Error = STTUNER_ERROR_EVT_REGISTER;                    }                }                else                {                    /* Event registration failed */                    Error = STTUNER_ERROR_EVT_REGISTER;                }            }        }        else        {            /* The device is already open */            Error = ST_ERROR_NO_FREE_HANDLES;        }    }    else    {        /* The device name is not recognised */        Error = ST_ERROR_UNKNOWN_DEVICE;    }    /* Common exit point */    return Error;} /* STTUNER_Open() *//*****************************************************************************Name: STTUNER_SetFrequency()Description:    Scan for an exact frequency.Parameters:    Handle,        handle to sttuner device    Frequency,     required frequency to scan to    ScanParams_p,  scan settings to use during scan    Timeout,       timeout (in ms) to allow for lockReturn Value:    ST_NO_ERROR,                the operation was carried out without error.    ST_ERROR_BAD_PARAMETER      one or more params was invalid.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级视频| 亚洲va韩国va欧美va精品| 国内精品第一页| 欧美日韩一区在线观看| 久久免费美女视频| 国产精品一区二区在线观看不卡 | 天堂av在线一区| k8久久久一区二区三区| 成人欧美一区二区三区小说 | 国产精品热久久久久夜色精品三区| 国产乱码精品一区二区三区忘忧草| 欧美一区二区三区色| 日韩精品一二三四| 日韩三级av在线播放| 国产suv精品一区二区6| 国产精品情趣视频| 99re视频精品| 午夜不卡在线视频| 日韩一区二区电影| 麻豆久久久久久| 国产精品国产精品国产专区不蜜| 北条麻妃一区二区三区| 亚洲图片有声小说| 欧美精品视频www在线观看 | 久久在线免费观看| 国产成人av电影免费在线观看| 亚洲同性同志一二三专区| 91年精品国产| 一区二区三区精品视频| 在线成人高清不卡| 精品无人区卡一卡二卡三乱码免费卡 | 日韩午夜精品视频| 国产美女娇喘av呻吟久久| 国产精品国产成人国产三级| 一本到一区二区三区| 日本不卡视频在线| 久久色视频免费观看| av不卡一区二区三区| 亚洲成a人v欧美综合天堂| 日韩视频免费观看高清完整版在线观看 | 国产精品一二一区| 夜夜嗨av一区二区三区中文字幕| 91麻豆精品国产综合久久久久久| 国产精品538一区二区在线| 亚洲免费在线视频一区 二区| 精品视频一区 二区 三区| 国产91露脸合集magnet| 亚洲线精品一区二区三区| 欧美国产丝袜视频| 777xxx欧美| 极品美女销魂一区二区三区| 自拍偷在线精品自拍偷无码专区| 欧美色老头old∨ideo| 99精品视频一区二区| 同产精品九九九| 一区二区三区在线播| 欧美r级电影在线观看| 成人美女在线视频| 日韩av中文字幕一区二区| 国产精品激情偷乱一区二区∴| 日韩欧美国产一区二区在线播放| 不卡电影免费在线播放一区| 久久99精品久久久久| 一区二区欧美视频| 91久久精品国产91性色tv| 成人理论电影网| 久久精品噜噜噜成人av农村| 无吗不卡中文字幕| 秋霞影院一区二区| 玉米视频成人免费看| 久久久久久久久久电影| 日韩欧美成人一区二区| 欧美日韩精品三区| 国产东北露脸精品视频| 久久精品国产亚洲高清剧情介绍 | 亚洲欧美日韩系列| 中文字幕国产一区二区| 欧美mv日韩mv亚洲| 日韩一二在线观看| 欧美日韩国产一级二级| 色成年激情久久综合| 成人伦理片在线| 国内精品国产成人国产三级粉色 | 亚洲女同ⅹxx女同tv| 国产精品初高中害羞小美女文| 欧美成人精品高清在线播放| 欧美色爱综合网| 欧美日韩小视频| 欧洲一区二区三区免费视频| 欧美三级三级三级| 色悠悠亚洲一区二区| 欧美自拍偷拍一区| 欧美自拍偷拍午夜视频| av成人免费在线观看| 91在线一区二区三区| 91视频com| 欧美日韩成人一区| 欧美高清激情brazzers| 欧美一区二区私人影院日本| 7878成人国产在线观看| 欧美成人女星排行榜| 欧美成人video| 91精品国产91综合久久蜜臀| 欧美精品一区二区久久久| 日韩视频一区在线观看| 中文字幕av一区二区三区高| 日本一区二区久久| 一级日本不卡的影视| 午夜精品一区二区三区三上悠亚| 蜜桃av噜噜一区| 国产一区二区调教| a级高清视频欧美日韩| 一本大道久久a久久精品综合| 91免费版在线| 7777精品伊人久久久大香线蕉的| 91精品婷婷国产综合久久 | 国产一区二区三区国产| 国产精品一区二区在线观看不卡 | 欧美性大战久久久久久久蜜臀| 欧美视频日韩视频| 久久免费偷拍视频| 中文字幕亚洲在| 一区二区欧美国产| 一片黄亚洲嫩模| 久久99热99| 97久久超碰精品国产| 欧美一二三区在线| 日本一区二区免费在线| 五月婷婷激情综合网| 韩国精品主播一区二区在线观看 | 99久久99久久久精品齐齐| 欧美一级高清大全免费观看| 国产清纯在线一区二区www| 天堂资源在线中文精品| 激情伊人五月天久久综合| 久久精品99国产精品| 在线精品视频免费播放| 欧美无砖砖区免费| 国产精品色婷婷| 亚洲国产毛片aaaaa无费看| 成人午夜视频免费看| 欧美绝品在线观看成人午夜影视| 国产精品亲子伦对白| 韩国一区二区三区| 91精品在线麻豆| 亚洲少妇中出一区| 国产成人小视频| 777午夜精品免费视频| 亚洲麻豆国产自偷在线| 久久精品国产精品亚洲红杏| 91同城在线观看| 日韩免费在线观看| 亚洲精品乱码久久久久| 国产精品1区二区.| 717成人午夜免费福利电影| 亚洲成av人片www| 91麻豆6部合集magnet| 国产精品萝li| 国模套图日韩精品一区二区| 欧美电影在线免费观看| 亚洲丝袜自拍清纯另类| 成人a级免费电影| 91精品国产欧美日韩| 丝袜美腿亚洲色图| 99久久综合色| 国产精品人人做人人爽人人添| 韩国v欧美v日本v亚洲v| 日韩一区二区三区四区五区六区 | 一区二区三区在线视频观看58| 国产激情91久久精品导航 | 欧美午夜影院一区| 国产精品久久久久影视| 99久久伊人久久99| 国产亚洲成av人在线观看导航| 国产精品99久| 26uuu久久天堂性欧美| 国产成人av在线影院| 精品国产乱码久久| 国产成人精品网址| 欧美精品一区二区三区一线天视频 | 国产精品久久毛片av大全日韩| 日本伊人色综合网| 日韩三区在线观看| 久久99国产精品麻豆| 久久久精品国产免大香伊| 精品一二三四区| 国产精品高清亚洲| 99久久精品免费精品国产| 中文字幕在线不卡视频| www.av亚洲| 椎名由奈av一区二区三区| 99视频精品在线| 亚洲色图一区二区| 国产**成人网毛片九色| 亚洲国产精品精华液2区45| 国产一区二区三区在线观看免费 | 成人h动漫精品一区二| 成人欧美一区二区三区黑人麻豆 | 亚洲自拍与偷拍| 欧美日韩精品一二三区|