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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cudal.h

?? ti-Chipcon CCxx11 USB + MCU +RF 應(yīng)用開(kāi)發(fā)源碼實(shí)例。包括2.0usb,rf,powermodes,clockmodes底層驅(qū)動(dòng)源碼。有了這些實(shí)例,包括誤碼率測(cè)試等。對(duì)你更
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/** \mainpage Chipcon USB Dongle Access Library
 *
 * \author j.langfeldt@ti.com
 * 
 * The following features are supported:
 * \li The GET_DESCRIPTOR, GET_STATUS, SET_CONFIGURATION, GET_CONFIGURATION, SET_INTERFACE and 
 *     GET_INTERFACE standard requests
 * \li All vendor requests
 * \li All class requests
 * \li BULK and INTERRUPT pipes, with asynchronous and synchronous read and write functions
 * 
 * The following features are not supported:
 * \li The SET_DESCRIPTOR, SET_FEATURE and CLEAR_FEATURE standard requests
 * \li Isochronous transfers
 */
#ifndef CUDAL_H
#define CUDAL_H
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <usbspec.h>
#include <usbio_i.h>


#ifdef CUDAL_DYNAMIC
    #ifdef CUDAL_EXPORTS
        #define CUDAL_API __declspec(dllexport)
    #else
        #define CUDAL_API __declspec(dllimport)
    #endif
#else
    #define CUDAL_API
#endif


class CudalPipe;
class CUsbIo;
class CUsbIoPipe;
class CUsbIoBuf;


/// USBIO error codes can be found "usbio_i.h"
typedef DWORD USBIOERR;


/// CUDAL error codes
typedef enum {
    CUDALERR_USB_COMM_FAILURE      = -1, ///< USB communication error (device malfunction or removal)
    CUDALERR_SUCCESS               = 0,  ///< Success
    CUDALERR_YES                   = 1,  ///< Success, the answer is yes
    CUDALERR_NO                    = 2,  ///< Success, the answer is no
} CUDALERR;


/// CUDAL dongle information
typedef struct {
    WORD vendorId;           ///< USB vendor ID
    WORD productId;          ///< USB product ID
    WORD productVersion;     ///< Product version number
    char pManufacturer[129]; ///< Manufacturer (USB string descriptor number 1, ANSI format)
    char pProduct[129];      ///< Product (USB string descriptor number 2, ANSI format)
    char pSerialNumber[129]; ///< Serial number (USB string descriptor number 3, ANSI format)
} CUDAL_DONGLE_INFO;




/** \brief The CudalDongle class that encapsulates a physical Chipcon USB dongle
 *
 * The class provides easy-to-use functions for enumerating and creating \ref CudalDongle objects, and 
 * for performing the most commonly used operations on endpoint 0. It can also create one or more 
 * \ref CudalPipe objects, which support BULK and INTERRUPT transfers at data rates up to 12 
 * Mbits/second.
 *
 * A built-in mutual exclusion mechanism (mutex) ensures that only one \ref CudalDongle object can exist 
 * for each physical USB dongle. In practice this means that:
 * - If multiple applications can access the USB dongles, each dongle is protected from being opened and 
 *   accessed by more than one application at any time. 
 * - If two USB dongles contain the same identification, only one will be recognized. The information 
 *   that uniquely identifies each dongle, consists of the "Manufacturer", "Product" and "Serial number" 
 *   string descriptors, indexed 1, 2 and 3, respectively. Cudal makes this information available through
 *   a structure called \ref CUDAL_DONGLE_INFO.
 *
 * For a USB dongle to be included in the device enumeration, it's VID/PID pair must be registered with a 
 * Globally Unique Identifier (GUID). This is done in the .inf file that is used when installing the
 * hardware (the USB dongle). The default GUID provided with the library is used with the application 
 * examples, and can also be used during prototype development. Use Guidgen.exe provided with Visual
 * Studio or a web-based generator to create your own GUID.
 * 
 * \section section_dongle_const_destr Construction and Destruction
 * A \ref CudalDongle object is constructed in two steps:
 * - First the application builds a table of connected USB dongles by calling the static class function
 *   \ref CudalDongle::EnumDongles(). The resulting table contains a number of valid 
 *   \ref CUDAL_DONGLE_INFO structures, which should uniquely identify all connected dongles. If two or 
 *   more dongles provide the same identification, there will be duplicates in the table, and only the
 *   first entry will be considered in the next step.
 *     \code
 *     // Note that the following example uses the default GUID provided with the library
 *     CUDAL_DONGLE_INFO pDongleInfo[MAX_DONGLE_COUNT];
 *     int dongleCount = CudalDongle::EnumDongles(pDongleInfo, MAX_DONGLE_COUNT);
 *     \endcode
 *
 * - Then the application decides which dongle it desires to connect to, and passes the corresponding 
 *   \ref CUDAL_DONGLE_INFO structure on to another static class function, 
 *   \ref CudalDongle::CreateDongle(). If the dongle object was created, a pointer to it will be 
 *   returned. If the application tries to make a duplicate object, \ref CudalDongle::CreateDongle() will 
 *   return a NULL-pointer instead.
 *     \code
 *     // Open the first available dongle
 *     CudalDongle *pDongle = NULL;
 *     for (int n = 0; n < dongleCount; n++) {
 *         pDongle = CudalDongle::CreateDongle(&pDongleInfo[n]);
 *         if (pDongle) break;
 *     }
 *     // No object was created if pDongle still is NULL :(
 *     \endcode
 *
 * Since the physical USB dongle is "locked" for as long as the \ref CudalDongle object exists, it must 
 * be destroyed properly. To do this, simply delete the object. Note that if this part is skipped, the 
 * dongle will be unavailable until the process creating the object has been terminated - even if it is 
 * physically unplugged from the computer and re-attached.
 *
 * \section section_dongle_usage Usage
 * The class supports the following operations on endpoint 0:
 * - Standard requests:
 *     - GET_STATUS (see \ref GetStatus())
 *     - GET_DESCRIPTOR (see \ref GetDeviceDescriptor(), \ref GetConfigurationDescriptor() and 
 *       \ref GetStringDescriptor())
 *     - GET_CONFIGURATION (see \ref GetConfiguration())
 *     - SET_CONFIGURATION (see \ref SetConfiguration() and \ref Unconfigure())
 *     - GET_INTERFACE (see \ref GetInterface())
 *     - SET_INTERFACE (see \ref SetInterface())
 * - Vendor requests (see \ref VendorRequestIn() and \ref VendorRequestOut())
 * - Class requests (see \ref ClassRequestIn() and \ref ClassRequestOut())
 *
 * To transfer BULK and INTERRUPT data on other endpoints, one or more \ref CudalPipe objects need to be
 * created. This is done using the \ref CreatePipe() function.
 *
 * \section section_dongle_example Example of Usage
 * The following enumerates available dongles, creates a \ref CudalDongle object, sends a vendor request, 
 * and then destroys the object.
 *
 * \code
 * ...
 * #define MAX_DONGLE_COUNT 16
 * CUDAL_DONGLE_INFO pDongleInfo[MAX_DONGLE_COUNT];
 * GUID guid = { 0xF363FDD8, 0xD316, 0x4B3A, { 0xAE, 0xF8, 0x73, 0x70, 0x81, 0x68, 0xAB, 0x1F } };
 *
 * // Enumerate all connected dongles
 * int dongleCount = CudalDongle::EnumDongles(pDongleInfo, MAX_DONGLE_COUNT, &guid);
 * 
 * // Find the correct device by looking for a specific product ID and serial number...
 * CudalDongle *pDongle = NULL;
 * for (int n = 0; n < dongleCount; n++) {
 *     if ((pDongleInfo[n].productId == 0x1234) &&
 *         (strcmp(pDongleInfo[n].pSerialNumber, "123456789") == 0)) {
 *         
 *         // ... and create the dongle object
 *         pDongle = CudalDongle::CreateDongle(&pDongleInfo[n]);
 *         break;
 *     }
 * }
 * 
 * // Perform the vendor request...
 * if (pDongle) {
 *     char pText[] = "Be quiet, Brain, or I'll stab you with a Q-tip";
 *     if (pDongle->VendorRequestOut(VR_SET_LCD_TEXT, 1, 2, sizeof(pText), NULL, pText) == USBIO_ERR_SUCCESS) {
 *         ...
 *     }
 * 
 *     // ... and delete the dongle object (we're done)
 *     delete pDongle;
 * }
 * ...
 * \endcode
 */
class CUDAL_API CudalDongle {
public:
    // Destroys the dongle object, and makes the dongle hardware availble for other applications
	virtual ~CudalDongle();

    // Enumerates available USB dongles
    static int EnumDongles(CUDAL_DONGLE_INFO *pDongleInfo, int maxCount, const GUID *pGuid = NULL);
    // Creates a dongle object
    static CudalDongle* CreateDongle(CUDAL_DONGLE_INFO *pDongleInfo, BYTE configurationIndex = 0, const GUID *pGuid = NULL);

    /// Returns a pointer to the dongle info structure
    CUDAL_DONGLE_INFO* GetDongleInfo() { return &m_dongleInfo; }
    
    // Creates a pipe object to be used for BULK/INTERRUPT IN/OUT data transfers
    CudalPipe* CreatePipe(BYTE endpointIndex, BOOL isDirectionIn);

    // Sends a vendor request with an IN data phase (from the device to the host) 
    USBIOERR VendorRequestIn(BYTE request, WORD index, WORD value, DWORD maxLength, DWORD *pActualLength, BYTE *pData, USBIO_REQUEST_RECIPIENT recepient = RecipientDevice);
    // Sends a vendor request with an OUT data phase (from the host to the device) 
    USBIOERR VendorRequestOut(BYTE request, WORD index, WORD value, DWORD length, DWORD *pActualLength, BYTE *pData, USBIO_REQUEST_RECIPIENT recepient = RecipientDevice);

    // Sends a class request with an IN data phase (from the device to the host) 
    USBIOERR ClassRequestIn(BYTE request, WORD index, WORD value, DWORD maxLength, DWORD *pActualLength, BYTE *pData, USBIO_REQUEST_RECIPIENT recepient = RecipientDevice);
    // Sends a class request with an OUT data phase (from the host to the device) 
    USBIOERR ClassRequestOut(BYTE request, WORD index, WORD value, DWORD length, DWORD *pActualLength, BYTE *pData, USBIO_REQUEST_RECIPIENT recepient = RecipientDevice);

    // Gets the device descriptor from the device
    USBIOERR GetDeviceDescriptor(USB_DEVICE_DESCRIPTOR *pDesc);
    // Gets a configuration descriptor from the device
    USBIOERR GetConfigurationDescriptor(USB_CONFIGURATION_DESCRIPTOR *pDesc, DWORD maxLength, DWORD *pActualLength, BYTE index);
    // Gets a string descriptor from the device
    USBIOERR GetStringDescriptor(char *pAnsiString, DWORD maxLength, DWORD *pActualLength, BYTE index);
    // Sends a get status request to the device
    USBIOERR GetStatus(WORD *pStatusValue, USBIO_REQUEST_RECIPIENT recipient, BYTE index);

    // Sets the device to the configured state
    USBIOERR SetConfiguration(BYTE configurationIndex, BYTE *pAlternateSettingIndexes = NULL);
    // Gets the current configuration value
    USBIOERR GetConfiguration(BYTE *pConfigurationValue);
    // Sets the device to the unconfigured state
    USBIOERR Unconfigure();

    // Changes the alternate setting of an interface 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区| 国产剧情一区二区| 91精品免费在线观看| 亚洲一本大道在线| 欧美日韩精品福利| 美女脱光内衣内裤视频久久网站 | 欧美精品自拍偷拍| 日本va欧美va瓶| 久久久天堂av| jvid福利写真一区二区三区| 一区二区久久久| 日韩三级电影网址| 丁香六月久久综合狠狠色| 亚洲欧美视频一区| 3751色影院一区二区三区| 国产麻豆精品一区二区| 国产精品日产欧美久久久久| 色就色 综合激情| 精品一区二区三区蜜桃| 国产精品电影院| 日韩区在线观看| 不卡的av电影在线观看| 亚洲成人综合网站| 国产婷婷色一区二区三区在线| 色综合欧美在线| 韩国视频一区二区| 亚洲精选一二三| 久久综合国产精品| 欧美日韩三级一区| 成人免费的视频| 日韩av不卡一区二区| 中文字幕一区二区三区在线不卡 | 精品区一区二区| 色综合视频在线观看| 久久国产精品色婷婷| 亚洲色图视频网| www欧美成人18+| 欧美日韩国产首页| 99视频精品在线| 久久99最新地址| 亚洲高清免费视频| 中文成人综合网| 久久一区二区视频| 91精品久久久久久久91蜜桃 | 午夜视黄欧洲亚洲| 国产精品久久久久久久久快鸭 | 色先锋aa成人| 高清久久久久久| 国产在线一区二区| 美女爽到高潮91| 天堂蜜桃91精品| 一区二区不卡在线视频 午夜欧美不卡在| 久久九九久精品国产免费直播| 欧美日韩在线亚洲一区蜜芽| 一本一本久久a久久精品综合麻豆| 国产一区欧美二区| 久久91精品国产91久久小草| 亚洲一区二区美女| 亚洲综合色区另类av| 17c精品麻豆一区二区免费| 久久精品人人爽人人爽| 欧美tickle裸体挠脚心vk| 欧美日本精品一区二区三区| 色成年激情久久综合| 91视频观看视频| 成人app在线观看| 不卡一区二区在线| 成人免费精品视频| 波多野结衣的一区二区三区| 成人精品一区二区三区四区| 成人午夜碰碰视频| 国产91在线观看| av不卡一区二区三区| 成人免费福利片| 99久久精品免费看国产免费软件| 成人午夜av在线| 91看片淫黄大片一级在线观看| aaa亚洲精品一二三区| av电影天堂一区二区在线| 91视频观看免费| 欧美日韩成人在线| 正在播放亚洲一区| 精品久久一区二区三区| 久久精品亚洲精品国产欧美| 国产清纯在线一区二区www| 亚洲国产激情av| 亚洲日本va午夜在线电影| 亚洲在线免费播放| 日韩av不卡一区二区| 加勒比av一区二区| 国产91高潮流白浆在线麻豆| 99国产精品视频免费观看| 色婷婷国产精品综合在线观看| 欧美人与z0zoxxxx视频| 日韩一区二区三区视频| 久久婷婷一区二区三区| 国产精品三级久久久久三级| 亚洲人xxxx| 久热成人在线视频| 成人av资源站| 欧美日韩国产精品自在自线| 精品国产免费久久| 国产精品国产三级国产| 一个色在线综合| 久草这里只有精品视频| 成人免费黄色在线| 3d成人动漫网站| 国产精品久久毛片av大全日韩| 亚洲午夜一二三区视频| 精品一区二区在线看| 99视频国产精品| 欧美一区二区三区在线| 中文字幕亚洲综合久久菠萝蜜| 亚洲一区视频在线观看视频| 狠狠色综合播放一区二区| 97精品超碰一区二区三区| 日韩视频免费直播| 亚洲精品国产无天堂网2021| 看电影不卡的网站| 欧美综合在线视频| 国产午夜精品理论片a级大结局| 亚洲午夜精品17c| 国产黄人亚洲片| 欧美高清视频www夜色资源网| 国产亚洲福利社区一区| 日韩精品成人一区二区三区| 粉嫩一区二区三区在线看| 欧美精品九九99久久| 亚洲欧美综合色| 国产精品一区久久久久| 欧美日韩精品综合在线| 国产精品国产三级国产| 国产在线一区二区| 欧美日韩视频不卡| 亚洲男同性恋视频| 国产福利一区在线| 日韩欧美一区二区在线视频| 亚洲男人天堂av| 成人高清免费观看| 国产亚洲欧美色| 久久99国产精品免费网站| 欧美日韩一区不卡| 亚洲欧美一区二区三区极速播放| 国产成人午夜片在线观看高清观看| 777奇米成人网| 亚洲国产精品自拍| 色一区在线观看| 日韩美女视频19| 91香蕉视频mp4| 中文字幕一区二区三区在线观看| 国产不卡免费视频| 久久久久国色av免费看影院| 久久精品国产久精国产爱| 91麻豆精品国产综合久久久久久| 亚洲午夜视频在线| 欧美视频三区在线播放| 亚洲精品成人在线| 在线欧美日韩精品| 亚洲午夜在线视频| 日本丰满少妇一区二区三区| 国产精品福利影院| 99精品国产一区二区三区不卡| 久久精品免费在线观看| 国产精品66部| 国产精品青草综合久久久久99| 国产精品亚洲第一区在线暖暖韩国| 2024国产精品| 国产一区二区三区高清播放| 久久免费午夜影院| 国产成人夜色高潮福利影视| 久久精品人人做| av亚洲精华国产精华精华| 国产精品超碰97尤物18| 99久久99久久精品国产片果冻| 亚洲欧美日韩国产综合| 色噜噜久久综合| 肉丝袜脚交视频一区二区| 9191精品国产综合久久久久久| 婷婷久久综合九色综合伊人色| 337p亚洲精品色噜噜狠狠| 美女在线一区二区| 久久精品一区八戒影视| 97久久精品人人做人人爽50路| 亚洲综合一区二区三区| 欧美一区日本一区韩国一区| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕欧美激情一区| 在线观看中文字幕不卡| 日本不卡的三区四区五区| 久久九九影视网| 欧美性受xxxx黑人xyx性爽| 日韩影院精彩在线| 26uuu另类欧美亚洲曰本| 9l国产精品久久久久麻豆| 午夜精品免费在线| 久久久久久久久久美女| 在线观看不卡一区| 久久精品国产精品亚洲综合| 中文字幕视频一区二区三区久| 欧美中文字幕久久|