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

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

?? main.c

?? 實現藍牙鼠標功能
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2005-2006
Part of BlueLab 3.6.2-release

FILE NAME
    main.c        
DESCRIPTION
    This file contains the main HID mouse application.
NOTES

*/

/****************************************************************************
    Header files
*/
#include "hid_mouse.h"
#include "hid_mouse_sm.h"
#include "hid_mouse_events.h"
#include "hid_mouse_service_record.h"

static const uint32 app_hid_diac[] =
{
    0x9E8B00, 0x9e8b33
};

/* Application SDP record configuration */
static const hid_config app_mouse_config = 
{
    sizeof(hid_mouse_service_record),
    hid_mouse_service_record
};

/* Application power table  */
#define APP_POWER_TABLE_ENTRIES (sizeof(app_mouse_power_table) / sizeof(lp_power_table))
static const lp_power_table app_mouse_power_table[]=
{
	/* mode,    	min_interval, max_interval, attempt, timeout, duration */
	{lp_sniff,		18,           20,			1,		 1,	      5},
	{lp_sniff,		22,           40,			1,		 16,	  30},
	{lp_sniff,		42,           112,			1,		 16,	  600},
	{lp_sniff,		114,          800,			1,		 16,	  0},
};

/* Connection library messages application would like */
static const msg_filter app_msg_filter = {msg_group_mode_change};

/* Application HID connection configuration */
static const hid_connection_config app_keyboard_connection_config = 
{
    APP_POWER_TABLE_ENTRIES, app_mouse_power_table, /* Power table */
    11250,  /* Latency (11.25ms) */
    FALSE,  /* Don't use Guaranteed QOS for interrupt channel */
};

#ifdef HW_DEV_1409

/* Agilent 2030/2051 sensor configuration */
HID_AGILENT_AN2051_CONFIG app_hidio_config =
{
	sizeof(HID_AGILENT_AN2051_CONFIG),
	TRUE,					/* 800dpi */
	FALSE,					/* Don't swap X & Y */
	FALSE,					/* Don't reverse X */
	FALSE,					/* Don't reverse Y */
};

#endif

#ifdef HW_CASIRA_ADNS3030

/* Agilent 3030/3040 sensor configuration */
HID_AGILENT_ADNS3030_CONFIG app_hidio_config =
{
	sizeof(HID_AGILENT_ADNS3030_CONFIG),
	TRUE,					/* 800dpi */
	FALSE,					/* Don't swap X & Y */
	FALSE,					/* Don't reverse X */
	FALSE,					/* Don't reverse Y */
};
#endif

/*************************************************************************
NAME    
    appHandleUnexpected
DESCRIPTION
    Called when an unexpected message is received.
RETURNS
    void     
*/
static void appHandleUnexpected(appTaskData *theApp, MessageId id)
{
	MAIN_PRINT(("appHandleUnexpected, id = %x\n", id));
}

/*************************************************************************
NAME    
    appHandleInternalIdleTimeoutInd
DESCRIPTION
    Called when the idle timer has expired, enters the local disconnecting
    state.  This will automatically release the HID connection.
RETURNS
    void     
*/
static void appHandleInternalIdleTimeoutInd(appTaskData *theApp)
{
    appSetState(theApp, appCabledDisconnecting);
}

/*************************************************************************
NAME    
    appHandleInternalDiscoverableTimeoutInd   
DESCRIPTION
    This function is called when discovery mode has timed out.
RETURNS
    void     
*/
static void appHandleInternalDiscoverableTimeoutInd(appTaskData *theApp)
{
    /* Move to idle state */
    appSetState(theApp, appIdle);
}

/*************************************************************************
NAME    
    appHandleInternalUnplugIndDefer
DESCRIPTION
    Called to handle the unplug button when the application is not in a
    state to handle it immediately.  Just sets a flag.
RETURNS
    void     
*/
static void appHandleInternalUnplugIndDefer(appTaskData *theApp)
{
    /* Set unplug flag, we'll handle it later */
    theApp->unplug_pending = TRUE;
}

/*************************************************************************
NAME    
    appHandleInternalUnplugIndConnected
DESCRIPTION
    Called when the unplug button is pressed and we are in the connected
    state.  Sends a virtual unplug request to the host.
RETURNS
    void     
*/
static void appHandleInternalUnplugIndConnected(appTaskData *theApp)
{
    /* Defer unplug */
    appHandleInternalUnplugIndDefer(theApp);

    /* Start an unplug timer */
    MessageSendLater(&theApp->task, APP_INTERNAL_UNPLUG_TIMEOUT_IND, 0, D_SEC(APP_UNPLUG_TIMEOUT));

    /* Send virtual unplug to host */
    HidControl(theApp->hid, hid_control_op_unplug);    
}

/*************************************************************************
NAME    
    appHandleInternalUnplugIndDisconnected
DESCRIPTION
    Called when the connect button is pressed and we are in the connected
    state.
RETURNS
    void     
*/
static void appHandleInternalUnplugIndDisconnected(appTaskData *theApp)
{
	MAIN_PRINT(("appHandleInternalUnplugIndDisconnected\n"));

    /* Move to discoverable state */
    appSetState(theApp, appDiscoverable);
}


/*************************************************************************
NAME    
    appHandleInternalUnplugIndDiscoverable
DESCRIPTION
    Called when the connect button is pressed and we are in the idle or
    discoverable state.
RETURNS
    void     
*/
static void appHandleInternalUnplugIndDiscoverable(appTaskData *theApp)
{
	MAIN_PRINT(("appHandleInternalUnplugIndDiscoverable\n"));

    /* Move to discoverable state */
    appSetState(theApp, appDiscoverable);
}

/*************************************************************************
NAME    
    appHandleInternalUnplugTimeoutInd
DESCRIPTION
    Called when the virtual unplug operation has timeout, moves to 
    disconnecting state.
RETURNS
    void     
*/
static void appHandleInternalUnplugTimeoutInd(appTaskData *theApp)
{
	MAIN_PRINT(("appHandleInternalUnplugTimeoutInd\n"));

    /* Move to disconnecting state */
    appSetState(theApp, appCabledDisconnecting);
}

/*************************************************************************
NAME    
    appHandleInternalShutdownInd
DESCRIPTION
    Called when the user has pressed the connect/power button, moves to
    idle state to turn off device.
RETURNS
    void     
*/
static void appHandleInternalShutdownInd(appTaskData *theApp)
{
	MAIN_PRINT(("appHandleInternalShutdownInd\n"));

    /* Move idle state */
    appSetState(theApp, appIdle);
}

/*************************************************************************
NAME    
    appHandleInternalShutdownIndDefer
DESCRIPTION
    Called when the user has pressed the connect/power button and the
    shutdown has to be defered to later.
RETURNS
    void     
*/
static void appHandleInternalShutdownIndDefer(appTaskData *theApp)
{
    /* Set shutdown flag, we'll handle it later */
    theApp->shutdown_pending = TRUE;
}

/*************************************************************************
NAME    
    appHandleInternalShutdownIndConnected
DESCRIPTION
    Called when the user has pressed the connect/power button and the
    device is connected, shutdown has to be defered to later.
RETURNS
    void     
*/
static void appHandleInternalShutdownIndConnected(appTaskData *theApp)
{
    /* Set shutdown flag, we'll handle it later */
    theApp->shutdown_pending = TRUE;

    /* Start disconnection */
    appSetState(theApp, appCabledDisconnecting);
}

/*************************************************************************
NAME    
    appHandleInternalShutdownIndIdle
DESCRIPTION
    Called when the user has pressed the connect/power button, moves to
    cabled connecting state to turn on device.
RETURNS
    void     
*/
static void appHandleInternalShutdownIndIdle(appTaskData *theApp)
{
	MAIN_PRINT(("appHandleInternalShutdownIndIdle\n"));

    /* Move CabledConnecting state */
    appSetState(theApp, appCabledConnecting);
}

/*************************************************************************
NAME    
    appHandleClInitConfirm   
DESCRIPTION
    Called once the connection library has been initialised.  Starts off
    HID library initialisation.
RETURNS
    void     
*/
static void appHandleClInitConfirm(appTaskData *theApp, CL_INIT_CFM_T *cfm)
{
	MAIN_PRINT(("appHandleClInitConfirm\n"));
	
	/* Connection Library initialisation was a success, initialise the HID library */
    if (cfm->status == success)
    	HidInit(&theApp->task, &app_mouse_config);
    else
    	Panic();
}

/*************************************************************************
NAME    
    appHandleClSmGetMruAttributeConfirm   
DESCRIPTION
    Called when the connection library passes the application information
    on a trusted device, kicks off a HID connection.
RETURNS
    void     
*/
static void appHandleClSmGetIndexedAttributeConfirm(appTaskData *theApp, CL_SM_GET_INDEXED_ATTRIBUTE_CFM_T *cfm)
{
	MAIN_PRINT(("appHandleClSmGetIndexedAttributeConfirm\n"));
    if (cfm->status == success)
    {
        MAIN_PRINT(("Attempt to connect to %d,%d,%ld\n", cfm->bd_addr.nap, cfm->bd_addr.uap, cfm->bd_addr.lap));
        
        /* Store Bluetooth address of host */
        theApp->host_bd_addr = cfm->bd_addr;
        
        /* Attempt to connect to host */
        HidConnect(theApp->hid_lib, &theApp->task, &theApp->host_bd_addr, &app_keyboard_connection_config);           
    }
    else
    {
        /* Check if we have paired with any devices */        
        if (theApp->trusted_device_index)
        {
            MAIN_PRINT(("Failed to connect\n"));

            /* Reset device index */
            theApp->trusted_device_index = 0;

            /* Move to disconnected state */
            appSetState(theApp, appCabledDisconnected);
        }
        else
        {
            MAIN_PRINT(("No devices, making discoverable\n"));

            /* Make device discoverable */
            appSetState(theApp, appDiscoverable);
        }
    }
}

/*************************************************************************
NAME    
    appEnterDiscoverable   
DESCRIPTION
    Called when the connection library requires a pin code from the user.
RETURNS
    void     
*/
static void appHandleClSmPinCodeIndication(appTaskData *theApp, CL_SM_PIN_CODE_IND_T *ind)
{
	MAIN_PRINT(("appHandleClSmPinCodeIndication\n"));
   
    /* Store host bluetooth address */
    theApp->auth_bd_addr = ind->bd_addr;

    /* Send pin code response */
    ConnectionSmPinCodeResponse(&theApp->auth_bd_addr, 4, (uint8 *)"0000"); 
}

/*************************************************************************
NAME    
    appHandleClSmAuthenticateConfirm   
DESCRIPTION
    Handles authentication confirmation, if successful authentication
    state is set as trusted, the host is actually mark as trusted only
    once the initial connection has been setup successfully.
RETURNS
    void     
*/
static void appHandleClSmAuthenticateConfirm(appTaskData *theApp, CL_SM_AUTHENTICATE_CFM_T *cfm)
{
	MAIN_PRINT(("appHandleClSmAuthenticateConfirm\n"));
}

/*************************************************************************
NAME    
    appHandleClSmAuthoriseInd   
DESCRIPTION
    Handles incoming connection authorisation, if connection is from
    host we have just authenticated with the connection is accepted,
    otherwise it is rejected.
RETURNS
    void     
*/
static void appHandleClSmAuthoriseInd(appTaskData *theApp, CL_SM_AUTHORISE_IND_T *ind)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看高清| 韩国女主播成人在线| 国产精品初高中害羞小美女文| 日韩久久久精品| 日韩美女一区二区三区四区| 欧美日韩成人综合天天影院 | 成人小视频在线观看| 国产精品88888| www.亚洲免费av| 一本一本大道香蕉久在线精品| 91免费版在线看| 欧美日韩亚州综合| 26uuu欧美日本| 国产精品久久久久久久岛一牛影视 | 国产精品一区二区久久精品爱涩| 久久www免费人成看片高清| 老司机精品视频导航| 国产精品自产自拍| 在线视频国内自拍亚洲视频| 制服丝袜中文字幕亚洲| 久久丝袜美腿综合| 亚洲欧美视频在线观看视频| 一区二区三区产品免费精品久久75| 亚洲激情男女视频| 久久99国产精品久久99| 成人国产电影网| 欧美日韩国产影片| 久久先锋影音av鲁色资源| 亚洲精品美国一| 久久精品国产色蜜蜜麻豆| 成人免费高清视频| 欧美疯狂做受xxxx富婆| 国产人久久人人人人爽| 亚洲国产精品久久不卡毛片| 国产一区二区三区国产| 色菇凉天天综合网| 久久久影视传媒| 亚洲综合色在线| 成人av电影在线观看| 欧美一区二区三区四区五区| 国产精品免费网站在线观看| 日韩电影免费在线看| 国产成人精品免费网站| 欧美一个色资源| 亚洲人成人一区二区在线观看| 日本午夜精品视频在线观看| 99re这里只有精品首页| 26uuu另类欧美亚洲曰本| 亚洲成a人片在线不卡一二三区| 国产成人精品免费一区二区| 日韩欧美高清一区| 亚欧色一区w666天堂| 99久久精品免费看国产| 国产亚洲一本大道中文在线| 日韩成人精品在线观看| 欧美视频一区二区三区在线观看 | 国产精品久久久久精k8| 麻豆91精品91久久久的内涵| 在线免费观看不卡av| 18成人在线视频| 国产91在线|亚洲| 精品国产乱码久久久久久1区2区| 亚洲午夜精品在线| 欧美视频一区二| 亚洲制服丝袜av| 欧美视频一二三区| 亚洲成人动漫在线观看| 在线观看免费成人| 亚洲黄色小视频| 一本一本久久a久久精品综合麻豆| 国产精品无遮挡| 成人网页在线观看| 国产精品久久久久久久第一福利 | 美女视频黄a大片欧美| 91.麻豆视频| 欧美aa在线视频| 欧美videos大乳护士334| 老司机精品视频在线| 久久久亚洲精品一区二区三区| 美女视频黄免费的久久| 久久亚洲精品小早川怜子| 国产精品亚洲第一区在线暖暖韩国| 26uuu亚洲综合色| 国产精品香蕉一区二区三区| 中文字幕不卡在线观看| gogo大胆日本视频一区| 亚洲三级久久久| 欧美日韩三级在线| 久久精品国产免费看久久精品| 欧美变态tickle挠乳网站| 国产精品亚洲专一区二区三区 | 亚洲一区在线观看视频| 欧美日韩不卡在线| 精品亚洲porn| 国产精品第13页| 欧美在线免费观看亚洲| 日韩激情在线观看| 国产色91在线| 欧美日韩一区中文字幕| 国模冰冰炮一区二区| 综合久久久久久| 欧美一级一区二区| 波多野结衣的一区二区三区| 亚洲综合一区二区三区| 日韩欧美国产一区在线观看| 成人av中文字幕| 日韩精品午夜视频| 国产日韩欧美综合一区| 欧美日免费三级在线| 国产乱码精品1区2区3区| 亚洲精品中文在线影院| 欧美xfplay| 色综合中文字幕国产 | 91在线精品一区二区| 青青草一区二区三区| 亚洲视频一区二区在线| 欧美成人精品高清在线播放 | 日韩精品一区在线| 色综合久久综合网97色综合| 日本大胆欧美人术艺术动态| 自拍偷在线精品自拍偷无码专区| 91精品国产欧美一区二区18| av激情综合网| 国产揄拍国内精品对白| 首页欧美精品中文字幕| 亚洲私人影院在线观看| 久久蜜桃av一区二区天堂| 欧美日韩免费视频| 91社区在线播放| 国产91精品欧美| 国产一区激情在线| 蜜臀a∨国产成人精品| 一区二区三区在线播放| 国产精品传媒入口麻豆| 欧美激情在线看| 国产欧美一区二区三区在线老狼| 欧美一级夜夜爽| 91精品国产综合久久香蕉的特点| 一本色道久久综合亚洲aⅴ蜜桃 | 五月天激情小说综合| 国产精品二区一区二区aⅴ污介绍| 精品欧美久久久| 欧美一区二区精品久久911| 欧美日韩综合在线| 欧美综合欧美视频| 在线视频中文字幕一区二区| 岛国一区二区三区| 国产99久久久国产精品| 成人av电影免费在线播放| 国产99精品在线观看| 岛国精品一区二区| 国产69精品久久99不卡| 国产电影一区在线| 成人性生交大片免费看中文| 丁香网亚洲国际| 成人免费视频一区| 91色在线porny| 一本久久综合亚洲鲁鲁五月天| 91蜜桃免费观看视频| 91论坛在线播放| 91福利视频久久久久| 欧美日本一区二区在线观看| 欧美日韩国产123区| 日韩欧美激情在线| 国产喷白浆一区二区三区| 欧美极品美女视频| 一区二区三区四区在线| 天天综合天天综合色| 久久99国产精品免费网站| 国产成人精品一区二区三区四区 | 精品理论电影在线观看 | 奇米888四色在线精品| 精品一区二区三区视频| 国产成人高清在线| 色香蕉久久蜜桃| 欧美日本不卡视频| 久久伊99综合婷婷久久伊| 欧美国产日本视频| 婷婷夜色潮精品综合在线| 久久99精品久久久久久动态图 | 亚洲国产精品传媒在线观看| 亚洲日本在线天堂| 奇米一区二区三区av| av色综合久久天堂av综合| 欧美精品1区2区| 中文字幕av一区二区三区高| 亚洲成av人影院| 国产成人在线视频免费播放| 欧美日韩免费一区二区三区视频| 26uuu亚洲| 午夜国产不卡在线观看视频| 国产精品 欧美精品| 欧美色综合久久| 国产精品区一区二区三| 免费高清在线视频一区·| 91成人国产精品| 国产欧美精品一区二区色综合| 日本特黄久久久高潮| 91亚洲男人天堂| 久久九九99视频|