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

📄 bthidpar.h

📁 CE下串口复用程序
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// This source code is licensed under Microsoft Shared Source License
// Version 1.0 for Windows CE.
// For a copy of the license visit http://go.microsoft.com/fwlink/?LinkId=3223.
//
#if ! defined (__bthhidparser_H__)
#define __bthhidparser_H__		1

enum E_BTHID_TRANSACTION_TYPES 
{
    BTHID_HANDSHAKE, 
    BTHID_HID_CONTROL, 
    BTHID_GET_REPORT = 4, 
    BTHID_SET_REPORT, 
    BTHID_GET_PROTOCOL, 
    BTHID_SET_PROTOCOL, 
    BTHID_GET_IDLE, 
    BTHID_SET_IDLE, 
    BTHID_DATA, 
    BTHID_DATC
};

enum E_BTHID_HANDSHAKE_RESULT
{
    BTHID_HANDSHAKE_SUCCESSFUL = 0,
    BTHID_HANDSHAKE_NOT_READY,
    BTHID_HANDSHAKE_ERR_INVALID_REPORT_ID,
    BTHID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST,
    BTHID_HANDSHAKE_ERR_INVALID_PARAMETER,
    BTHID_HANDSHAKE_ERR_UNKNOWN = 14,
    BTHID_HANDSHAKE_ERR_FATAL
};

enum E_BTHID_CONTROL_OPERATION
{
    BTHID_CONTROL_NOP = 0,
    BTHID_CONTROL_HARD_RESET,
    BTHID_CONTROL_SOFT_RESET,
    BTHID_CONTROL_SUSPEND,
    BTHID_CONTROL_EXIT_SUSPEND,
    BTHID_CONTROL_VIRTUAL_CABLE_UNPLUG
};

enum E_BTHID_REPORT_TYPES
{
    BTHID_REPORT_OTHER = 0,
    BTHID_REPORT_INPUT,
    BTHID_REPORT_OUTPUT,
    BTHID_REPORT_FEATURE
};

enum E_BTHID_PROTOCOLS
{
    BTHID_BOOT_PROTOCOL = 0,
    BTHID_REPORT_PROTOCOL
};

union BTHID_Header_Parameter
{
    struct S_BTHID_Handshake_Packet
    {
        unsigned char bResultCode       : 4;
    } handshake_p;

    struct S_BTHID_Control_Packet
    {
        unsigned char bControlOp        : 4;
    } control_p;

    struct S_BTHID_DATA_Header
    {
        unsigned char bReportType       : 2;
        unsigned char                   : 2;
    } data_p;

    struct S_BTHID_DATC_Header
    {
        unsigned char bReportType       : 2;
        unsigned char                   : 2;
    } datc_p;

    struct S_BTHIDSetProtocol_Request
    {
        unsigned char bProtocol         : 1;
        unsigned char                   : 3;
    } setprotocol_p;

    struct S_BTHIDGetReport_Request
    {
        unsigned char bReportType       : 2;
        unsigned char                   : 1; 
        unsigned char bSize             : 1;
    } getreport_p;

    struct S_BTHIDSetReport_Request
    {
        unsigned char bReportType       : 2;
        unsigned char                   : 2; 
    } setreport_p;

    struct S_BTHIDSetIdle_Request
    {
        unsigned char                   : 4;
    } setidle_p;

    unsigned char bRawHeader;
};

class IBTHHIDReportHandler
{
public:
    virtual int  SetIdle(unsigned char bIdle) = 0;
    virtual int  SetProtocol(E_BTHID_PROTOCOLS protocol) = 0;
    virtual int  GetReport(int iReportID, E_BTHID_REPORT_TYPES type, PCHAR pBuffer, int cbBuffer, PDWORD pcbTransfered, int iTimeout) = 0;
    virtual int  SetReport(E_BTHID_REPORT_TYPES type, PCHAR pBuffer, int cbBuffer, int iTimeout) = 0;
};

class IBTHHIDParser : public IUnknown
{
public:
    virtual BOOL IsInitialized() = 0;
    virtual int SetReportDescriptor(unsigned char* pReportDescriptor, int cDescriptor) = 0;
    virtual int ProcessInterruptReport(BYTE* pReport, int cReport) = 0;
    virtual IBTHHIDReportHandler* GetHandler() = 0;
};

IBTHHIDParser* HIDParserAlloc(IBTHHIDReportHandler* pReportHandler);

#endif

⌨️ 快捷键说明

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