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

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

?? sttuner.c

?? 這是DVB tuner驅動部分和其它相關的源碼和一些技術資料文檔.
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*****************************************************************************File Name   : sttuner.cDescription : STTUNER device driver.Copyright (C) 1999 STMicroelectronicsHistory     :    23/09/99    New threshold API calls added                Timeout parameter added to API calls                Added new 'tune to exact frequency' API call.    21/01/00    API modifications to scan, band and threshold lists.                Major changes to tuner initialization params.                New API call for direct control over tuner LNB.                Events now exported to the Event Handler.    23/06/00    Event handler close problem solved.Reference   :ST API Definition "TUNER Driver API" DVD-API-06*****************************************************************************//* Includes --------------------------------------------------------------- */#include <string.h>                     /* C libs */#include <stdio.h>#include "stlite.h"                     /* Standard includes */#include "sttuner.h"                    /* STAPI includes */#include "sti2c.h"#include "sttbx.h"#include "stevt.h"#include "demod.h"                      /* DEMOD Device API */#include "tnr.h"                        /* TNR Device API */#include "sat.h"                        /* SAT Device API */#include "tuner.h"                      /* Core Tuner API *//* Private types/constants ------------------------------------------------ */#define DEFAULT_FREQUENCY_SCAN_STEP     10000/* Private variables ------------------------------------------------------ *//* Driver revision */static const ST_Revision_t Revision = "STTUNER-REL_3.0.0";/* Queue management */typedef struct Node_s{    TUNER_ControlBlock_t ControlBlock;    void            *This_p;    struct Node_s   *Next_p;} Node_t;static Node_t *DeviceQueue_p = NULL;/* Private macros --------------------------------------------------------- */#define GetControlBlockFromHandle(h) \                                     (TUNER_ControlBlock_t *) \                                     (FindNode(DeviceQueue_p, \                                               IsHandle, \                                               &h, \                                               NULL))#define GetControlBlockFromName(n) \                                     (TUNER_ControlBlock_t *) \                                     (FindNode(DeviceQueue_p, \                                               IsDeviceName, \                                               n, \                                               NULL))#define IsInit(n)                    (GetControlBlockFromName(n) != NULL)/* Private function prototypes -------------------------------------------- */static void InsertNode(Node_t *Start_p, Node_t *New_p, void *Data_p);static void AppendNode(Node_t *Start_p, Node_t *New_p, void *Data_p);static void RemoveNode(Node_t *Before_p, Node_t *Old_p);static Node_t *FindNode(const Node_t *Start_p,                        BOOL (*CompareFunction)(const void *Arg1, const void *Arg2),                        const void *Compare_p,                        Node_t **Predecessor_p);static Node_t *NextNode(const Node_t *Start_p);static Node_t *LastNode(const Node_t *Start_p);static BOOL IsDeviceName(const void *Tuner_p, const void *DeviceName_p);static BOOL IsHandle(const void *Tuner_p, const void *Handle_p);/* STUART API routines (alphabetical order) ------------------------------- *//*****************************************************************************Name: STTUNER_Close()Description:    Closes the tuner device - no further activity can take place on    the handle, until re-opened.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 NULLSee Also:    STTUNER_Open()*****************************************************************************/ST_ErrorCode_t STTUNER_Close(STTUNER_Handle_t Handle){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if(Handle == 0)    {        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)    {        /* Nullify the device handle to ensure no further calls         * can be made.         */        Tuner_p->Handle = 0;        /* We must ensure that all activity on the tuner is idle         * before we return to the caller.  Note that this call will not         * return until the current scan step has completed.         */        TUNER_AbortScan(Tuner_p);       /* This call can not fail */        /* Close the event handler if being used */        if (Tuner_p->InitParams.EVTDeviceName[0] != 0)        {            /* No more events until driver is opened again */            STEVT_Close(Tuner_p->EVTHandle); /* Close handle to EVT */        }    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_Close() *//*****************************************************************************Name: STTUNER_GetBandList()Description:    Obtains the current frequency bands and associated local oscillator    frequencies.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 BandList_p NULLSee Also:    STTUNER_SetBandList()*****************************************************************************/ST_ErrorCode_t STTUNER_GetBandList(STTUNER_Handle_t Handle,                                   STTUNER_BandList_t *BandList_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((Handle == 0) || (BandList_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 band/lo frequency list to the caller supplied area */        BandList_p->NumElements = Tuner_p->BandList.NumElements;        memcpy(BandList_p->BandList, Tuner_p->BandList.BandList,               (Tuner_p->BandList.NumElements * sizeof(STTUNER_Band_t)));    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_GetBandList() *//*****************************************************************************Name: STTUNER_GetCapability()Description:    Obtain the capabilities of the tuner, including version and name.Parameters:    DeviceName,     the device name of the initialized tuner device.    Capability_p,   caller supplied area to copy device capabilties.Return Value:    ST_NO_ERROR,                the operation was carried out without error.    ST_ERROR_UNKNOWN_DEVICE,    the device is not known to the driver.    ST_ERROR_BAD_PARAMETER      Capability_p NULLSee Also:    Nothing.*****************************************************************************/ST_ErrorCode_t STTUNER_GetCapability(const ST_DeviceName_t DeviceName,                                     STTUNER_Capability_t *Capability_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if(Capability_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)    {        /* It is safe to simply copy across the capabilty parameters as         * we must be initialized at this point.         */        *Capability_p = Tuner_p->Capability;    }    else    {        /* The device name is invalid */        Error = ST_ERROR_UNKNOWN_DEVICE;    }    /* Common exit point */    return Error;} /* STTUNER_GetCapability() *//*****************************************************************************Name: STTUNER_GetRevision()Description:    Obtains the revision number of the tuner device driver.Parameters:    None.Return Value:    Global driver revision number.See Also:    Revision (top of module).*****************************************************************************/ST_Revision_t STTUNER_GetRevision(void){    return Revision;} /* STTUNER_GetRevision() *//*****************************************************************************Name: STTUNER_GetScanList()Description:    Obtains the ordered scan list that dictates the criteria during a    tuner scan at each frequency step.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 ScanList_p NULLSee Also:    STTUNER_SetScanList()*****************************************************************************/ST_ErrorCode_t STTUNER_GetScanList(STTUNER_Handle_t Handle,                                   STTUNER_ScanList_t *ScanList_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((Handle == 0) || (ScanList_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 scan list for the caller */        ScanList_p->NumElements = Tuner_p->ScanList.NumElements;        memcpy(ScanList_p->ScanList, Tuner_p->ScanList.ScanList,               (Tuner_p->ScanList.NumElements * sizeof(STTUNER_Scan_t)));    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_GetScanList() *//*****************************************************************************Name: STTUNER_GetStatus()Description:    Obtains the current status of driver i.e., whether the tuner is locked,    unlocked, scanning or failed.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 Status_p NULLSee Also:    Nothing.*****************************************************************************/ST_ErrorCode_t STTUNER_GetStatus(STTUNER_Handle_t Handle,                                 STTUNER_Status_t *Status_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((Handle == 0) || (Status_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)    {        /* Set the status for the caller */        *Status_p = Tuner_p->TunerInfo.Status;    }    else    {        /* The handle is invalid */        Error = ST_ERROR_INVALID_HANDLE;    }    /* Common exit point */    return Error;} /* STTUNER_GetStatus() *//*****************************************************************************Name: STTUNER_GetTunerInfo()Description:    Obtains the current scanning status, even during a scan.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 TunerInfo_p NULLSee Also:    Nothing.*****************************************************************************/ST_ErrorCode_t STTUNER_GetTunerInfo(STTUNER_Handle_t Handle,                                    STTUNER_TunerInfo_t *TunerInfo_p){    ST_ErrorCode_t Error = ST_NO_ERROR;    TUNER_ControlBlock_t *Tuner_p;    /* Check the parameters */    if((Handle == 0) || (TunerInfo_p == NULL) )    {        return ST_ERROR_BAD_PARAMETER;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区四区五区| 亚洲视频香蕉人妖| 欧美丰满少妇xxxxx高潮对白| 99精品视频一区二区三区| 国产精品一区二区在线观看不卡 | 精品国产百合女同互慰| 欧美精品三级日韩久久| 日韩一级视频免费观看在线| 91精品国产欧美一区二区成人| 欧美人xxxx| 91精品国产丝袜白色高跟鞋| 欧美久久一二区| 日韩一区二区影院| 精品久久久久久无| 久久日韩精品一区二区五区| 久久只精品国产| 国产日韩欧美激情| 国产精品久久久久精k8| 亚洲乱码国产乱码精品精可以看| 亚洲卡通动漫在线| 亚洲国产cao| 奇米综合一区二区三区精品视频| 久久福利资源站| 粉嫩高潮美女一区二区三区| av不卡免费电影| 欧美日韩一区精品| 日韩三级在线免费观看| 国产亚洲欧洲一区高清在线观看| 国产精品区一区二区三区| 亚洲激情第一区| 日韩电影在线观看电影| 国产精品综合网| 91视视频在线直接观看在线看网页在线看 | 亚洲成人动漫av| 久久丁香综合五月国产三级网站| 国产精品亚洲一区二区三区在线| av不卡一区二区三区| 91精品国产91久久久久久最新毛片| 26uuu亚洲| 亚洲精选视频免费看| 天堂影院一区二区| 福利一区二区在线观看| 欧洲激情一区二区| 精品99一区二区| 亚洲毛片av在线| 久久电影网站中文字幕 | 亚洲欧美在线视频| 五月天网站亚洲| 成人中文字幕在线| 欧美男男青年gay1069videost | 久久aⅴ国产欧美74aaa| 成人av中文字幕| 91精品国产一区二区三区蜜臀| 国产精品夫妻自拍| 老鸭窝一区二区久久精品| 99久久精品国产网站| 欧美大片在线观看| 亚洲综合激情另类小说区| 国产精品影视在线| 51精品久久久久久久蜜臀| 国产精品免费视频一区| 日韩电影在线免费看| 色哟哟亚洲精品| 久久久精品影视| 日韩精品免费专区| 色婷婷av一区二区三区大白胸| 久久综合久久综合久久| 亚洲v日本v欧美v久久精品| 成人禁用看黄a在线| 日韩欧美在线不卡| 亚洲妇女屁股眼交7| bt欧美亚洲午夜电影天堂| 精品国产凹凸成av人导航| 午夜伊人狠狠久久| 91视频免费播放| 中文字幕国产精品一区二区| 久久国产夜色精品鲁鲁99| 欧美日韩视频一区二区| 亚洲婷婷综合色高清在线| 国产91精品入口| 久久久亚洲精华液精华液精华液| 同产精品九九九| 色丁香久综合在线久综合在线观看| 国产欧美日韩在线| 狠狠色2019综合网| 日韩欧美一二三区| 日本一区中文字幕| 欧美日韩成人综合天天影院| 一区二区三区日韩精品视频| av资源站一区| 国产精品热久久久久夜色精品三区 | 一区二区三区日韩在线观看| 91啦中文在线观看| 国产精品国产三级国产| 成+人+亚洲+综合天堂| 国产偷国产偷精品高清尤物| 国产一区二区三区四| 26uuu精品一区二区三区四区在线| 免费观看在线综合| 欧美一区二区不卡视频| 免费成人美女在线观看.| 欧美一级久久久久久久大片| 日韩成人av影视| 日韩一级免费一区| 另类欧美日韩国产在线| 精品国产在天天线2019| 国产中文字幕精品| 久久精品视频在线免费观看| 国产激情一区二区三区| 国产欧美一区二区三区网站| 东方aⅴ免费观看久久av| 日本一区二区三区视频视频| 成人国产精品免费观看| 综合av第一页| 欧美在线不卡视频| 日韩综合小视频| 精品理论电影在线观看| 国产毛片精品国产一区二区三区| 国产亚洲精品精华液| 成人黄色在线视频| 亚洲精选免费视频| 91精品国产美女浴室洗澡无遮挡| 美女一区二区视频| 久久久精品黄色| 99精品视频一区二区三区| 亚洲网友自拍偷拍| 欧美一级精品大片| 国产成人综合自拍| 亚洲蜜臀av乱码久久精品蜜桃| 欧美性大战久久久久久久蜜臀| 日韩精品久久理论片| 精品国精品自拍自在线| 99国产精品国产精品久久| 亚洲一区二区黄色| 精品少妇一区二区三区在线播放| 国产成人精品亚洲午夜麻豆| 一区二区三区中文在线| 日韩一区二区在线免费观看| 国产精品1区2区3区| 亚洲精品欧美二区三区中文字幕| 欧美老女人第四色| 国产成人亚洲综合a∨婷婷图片 | 国产ts人妖一区二区| 亚洲久本草在线中文字幕| 日韩精品在线看片z| 成人黄色软件下载| 午夜精品一区二区三区电影天堂 | 欧美系列一区二区| 黄网站免费久久| 一区二区在线观看免费 | 久久97超碰国产精品超碰| 综合色天天鬼久久鬼色| 欧美一区二区三区性视频| 成人免费视频免费观看| 性欧美疯狂xxxxbbbb| 欧美激情中文字幕| 欧美精品在线视频| 成人午夜免费电影| 秋霞av亚洲一区二区三| 日韩一区在线播放| 精品国产青草久久久久福利| 色爱区综合激月婷婷| 国产美女娇喘av呻吟久久| 亚洲国产中文字幕| 中文字幕av不卡| 日韩午夜电影在线观看| 91蝌蚪porny| 国产成人日日夜夜| 日本中文字幕不卡| 亚洲一级二级在线| 国产精品美女久久福利网站| 日韩欧美激情一区| 欧美三级电影在线观看| 成人av动漫在线| 国内精品伊人久久久久av影院| 性久久久久久久| 一区二区三区四区av| 成人免费一区二区三区视频 | 日韩成人精品视频| 一区二区三区不卡在线观看| 国产三级精品三级在线专区| 日韩丝袜情趣美女图片| 欧美午夜免费电影| 91在线国产观看| 处破女av一区二区| 狠狠色狠狠色综合系列| 蜜臀精品一区二区三区在线观看 | 国产a级毛片一区| 狠狠色综合播放一区二区| 裸体健美xxxx欧美裸体表演| 亚洲国产精品一区二区尤物区| 综合网在线视频| 国产精品传媒入口麻豆| 国产日韩三级在线| 国产欧美日韩在线| 国产清纯美女被跳蛋高潮一区二区久久w | 91精品福利视频| 91一区一区三区| 99re在线精品| 91亚洲资源网|