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

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

?? ag_pair.c

?? bluetooth audio gateway
?? C
字號(hào):
#include "ag_private.h"
#include "ag.h"

#include <message.h>
#include <ps.h>
#include <print.h>
#include <string.h>



/*
    pairReqAction

    Request to enter pairing mode (can pair as either master or slave).
*/
void pairReqAction(bd_addr_t addr, bool_t auth, uint16 timeout)
{
    if (agIdleQuery())
    {
        MAKE_MSG(CM_PAIR_REQ);
        msg->role = CmMaster;
        msg->timeout = D_SEC(timeout);
        msg->authentication = auth;
        msg->bd_addr.nap = addr.nap;
        msg->bd_addr.uap = addr.uap;
        msg->bd_addr.lap = addr.lap;
        agPutCmMsg(msg);

        agSetCurrentState(AgPairing);

        /* 
            TODO: using this code the AG will re-pair OK with the same
            remote device i.e. a new link key will be generated.
            However, if ag is paired with dev A and then using this
            pairs with dev B then dev A will still be in the SM
            database and will be allowed to access the AG ... this is
            probably not what we want (depending on the number of
            connections the AG supports.)
        */
    }
    else
    {
        agSendErrorToClient(AgErrorPairRequestWhenNotIdle, 0);
    }
}


/*
    agPinCodeReq

    Pin code request received so pass it on
*/
void agPinCodeReq(const CM_PIN_CODE_REQ_T *req)
{
	/* 
		Only allow pairing if in pairing mode. This complies with the recommendations made 
		in the Security white paper compiled by the Bluetooth SIG. Pairing should only
		be allowed when in "pairing mode".
	*/
	if (AGState.currentState == AgPairing)
		handlePinReq(req->addr);
	else
		agSendErrorToClient(AgErrorUnexpectedPrimitive, 0);
}


/*
    pinResAction

    Reply with PIN code received from the client Send PIN to
    Connection Manager to contunue pairing.
*/
void pinResAction(bd_addr_t addr, uint8 pin_len, const uint8 *pin)
{
    if (AGState.currentState == AgPairing)
    {   
        MAKE_MSG(CM_PIN_CODE_RES);
        msg->addr.nap = addr.nap;
        msg->addr.uap = addr.uap;
        msg->addr.lap = addr.lap;
        msg->pin_length = pin_len;        
        memcpy(msg->pin, pin, pin_len);            
        agPutCmMsg(msg);
    }
    else
    {
        agSendErrorToClient(AgErrorUnexpectedPrimitive, 0);
    }
}


/*
    AGpairCfm

    Pairing has completed, status flag indicates the outcome.
*/

void agPairCfm(const CM_PAIR_CFM_T *cfm)
{
    if (cfm->status == CmPairingNotFinished)
    {
        /* Pairing not finished so just store the link key */
        (void) PsStore(AG_PS_LINK_KEY, cfm->link_key, SIZE_LINK_KEY);        
    }
    else
    {               
        ag_pair_status_t pair_status = AgPairingError;
        uint8 link_key[AG_SIZE_LINK_KEY];
        memset(link_key, 0, AG_SIZE_LINK_KEY);

        /* AG is now idle */                           
        agSetCurrentState(AgIdle);
        
        /* determine the pairing outcome */
        switch(cfm->status)
        {
        case CmPairingComplete:
            pair_status = AgPairingComplete;        
            break;            

        case CmPairingTimeout:
            pair_status = AgPairingTimedOut;
            break;

        case CmPairingCancelled:
            pair_status = AgPairingCancelled;
            break;            

        case CmPairingFail:
            pair_status = AgPairingFailed;
            break;

            /* handled separately above but have here for consistency */
        case CmPairingNotFinished:            
        default:
            PRINT(("ag_pair: Unknown pairing complete return type 0x%x \n", cfm->status));
            pair_status = AgPairingError;
            break;
        }
        
        /* Tell the interface pairing has completed */        
        if(!PsRetrieve(AG_PS_LINK_KEY, link_key, AG_SIZE_LINK_KEY))
            handlePairCfm(cfm->bd_addr, pair_status, 0);
        else
            handlePairCfm(cfm->bd_addr, pair_status, link_key);
    }
}


/*
    agLinkKeyReq

    Link key request from the Connection Manager, pas it on to the
    client.
*/
void agLinkKeyReq(const CM_LINK_KEY_REQ_T *req)
{
    /* Tell the interface about the link key request */
    handleLinkKeyReq(agGetConnectionHandle(&req->addr));
}


/*
    linkKeyResAction

    Link key response received from the client, pass it on to the
    Connection Manager.
*/
void linkKeyResAction(bool_t accept, uint16 handle, const uint8 *key)
{
	handle = handle;

    if (AGState.currentState == AgConnecting)
    {
        MAKE_MSG(CM_LINK_KEY_RES);
        msg->accept = accept;
        msg->addr = AGState.remote_addr;

        /* Only copy link key if acceting otherwise just send zeros */
        if (accept)
            memcpy(msg->key_val, key, SIZE_LINK_KEY);        
        else
            memset(msg->key_val, 0, AG_SIZE_LINK_KEY);
        agPutCmMsg(msg);
    }
    else
    {
        agSendErrorToClient(AgErrorUnexpectedPrimitive, 0);
    }
}


/*
    agSmAddDeviceReqAction

    Add a device the AG is already paired with to the Bluestack
    security manager's trusted device database. This speeds up
    connection times since the link key is automatically sent out when
    authentication is requested.
*/
void agSmAddDeviceReqAction(bd_addr_t addr, bool_t trust, const uint8 *key)
{
    MAKE_MSG(CM_ADD_SM_DEVICE_REQ);    
    msg->addr.nap = addr.nap;
    msg->addr.uap = addr.uap;
    msg->addr.lap = addr.lap;    
    memcpy(msg->link_key, key, SIZE_LINK_KEY);
    msg->trust = trust;   
    agPutCmMsg(msg);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产偷v国产偷v亚洲高清| 欧美美女激情18p| 亚洲国产精品麻豆| 日韩欧美不卡在线观看视频| 国产69精品久久99不卡| 亚洲一区成人在线| 国产日本欧美一区二区| 欧美日本免费一区二区三区| 菠萝蜜视频在线观看一区| 日韩精品三区四区| 亚洲欧洲精品成人久久奇米网| 欧美一区二区三区免费观看视频| 91蜜桃在线免费视频| 免费成人在线观看视频| 一区二区不卡在线播放| 欧美激情在线一区二区| 日韩欧美不卡在线观看视频| 欧美午夜精品一区二区蜜桃 | 一区视频在线播放| 精品理论电影在线| 欧美日韩国产片| 波多野结衣中文一区| 国产一区二区三区久久悠悠色av| 三级在线观看一区二区| 悠悠色在线精品| 国产精品乱人伦中文| 亚洲精品一线二线三线无人区| 欧美日韩国产精选| 日本精品视频一区二区| bt欧美亚洲午夜电影天堂| 国产自产高清不卡| 日本亚洲最大的色成网站www| 亚洲成a人在线观看| 亚洲精品v日韩精品| 亚洲欧美一区二区久久| 综合久久给合久久狠狠狠97色 | 亚洲欧洲日韩av| 国产欧美日韩在线| 中文字幕乱码一区二区免费| 久久精品男人的天堂| 精品欧美乱码久久久久久| 欧美刺激午夜性久久久久久久| 91精品国产色综合久久不卡电影| 欧美日韩高清一区二区| 在线播放亚洲一区| 日韩欧美国产午夜精品| 欧美大黄免费观看| 久久久久一区二区三区四区| 欧美一区二区三区免费在线看 | 精品午夜久久福利影院| 视频一区二区国产| 中文字幕日韩一区| 中文无字幕一区二区三区| 精品免费日韩av| 91精品久久久久久久99蜜桃| 欧美日韩中文字幕一区二区| 色哟哟日韩精品| 一本色道久久加勒比精品 | 国产成人午夜高潮毛片| 久久精品免费观看| 久久国产精品区| 六月丁香婷婷久久| 国内欧美视频一区二区| 国产在线精品免费av| 麻豆成人在线观看| 九九精品视频在线看| 日韩影院精彩在线| 男女男精品视频| 国产呦精品一区二区三区网站| 免费xxxx性欧美18vr| 蜜臀av一区二区在线免费观看| 久久精品国产网站| 美女视频一区在线观看| 久久精品国产精品亚洲综合| 麻豆一区二区三| 韩国av一区二区| 粉嫩欧美一区二区三区高清影视| 丁香六月综合激情| 91女人视频在线观看| 在线观看日韩av先锋影音电影院| 欧美性三三影院| 欧美一区二区三级| 精品国产1区2区3区| 中文字幕欧美三区| 亚洲精选视频在线| 日韩电影在线免费| 国产一区二区不卡老阿姨| 高清成人免费视频| 91国产成人在线| 欧美一区二区三区在线电影| 久久先锋影音av| 久久精品水蜜桃av综合天堂| 亚洲综合丝袜美腿| 久久精品国产亚洲a| 懂色中文一区二区在线播放| 色综合 综合色| 在线观看91av| 日本一区二区免费在线观看视频| 亚洲视频在线观看一区| 天天色综合成人网| 国产精品一区免费视频| 色嗨嗨av一区二区三区| 久久久久久久久97黄色工厂| 18欧美乱大交hd1984| 天堂精品中文字幕在线| 国产成人精品网址| 91福利视频久久久久| 欧美岛国在线观看| 亚洲精品欧美综合四区| 久久精品国产精品亚洲红杏 | 97se亚洲国产综合自在线不卡 | 久久精工是国产品牌吗| www.在线欧美| 日韩午夜激情电影| 亚洲免费看黄网站| 久久成人免费日本黄色| 色欧美日韩亚洲| 欧美tickling挠脚心丨vk| 亚洲日本欧美天堂| 麻豆91在线看| 91美女在线观看| 久久噜噜亚洲综合| 调教+趴+乳夹+国产+精品| 成人免费黄色大片| 91麻豆精品91久久久久久清纯| 国产精品亲子乱子伦xxxx裸| 日韩国产高清在线| 97国产一区二区| 国产午夜三级一区二区三| 日韩在线一区二区三区| 国产精品一区二区三区网站| 欧美高清性hdvideosex| 亚洲视频在线一区| 国产福利一区在线| 在线国产电影不卡| 亚洲美女区一区| 成人一区二区三区在线观看| 日韩一区二区三区四区| 国产精品护士白丝一区av| 紧缚奴在线一区二区三区| 555www色欧美视频| 亚洲乱码国产乱码精品精98午夜| 懂色av一区二区三区蜜臀| 欧美mv和日韩mv国产网站| 亚洲福利视频三区| 91久久奴性调教| 国产亚洲一区二区三区四区| 韩国在线一区二区| 日韩精品一区二区三区视频播放| 亚洲在线视频一区| 91老司机福利 在线| 国产精品福利电影一区二区三区四区| 激情丁香综合五月| 精品欧美乱码久久久久久| 奇米777欧美一区二区| 精品女同一区二区| 国产精品自产自拍| 国产欧美日产一区| 国内精品久久久久影院薰衣草| 久久日一线二线三线suv| 国产乱色国产精品免费视频| 久久婷婷久久一区二区三区| 国产伦理精品不卡| 久久欧美中文字幕| 成人综合日日夜夜| 中文字幕国产一区二区| 国产精品系列在线观看| 国产片一区二区三区| av高清久久久| 亚洲美女一区二区三区| 99久久婷婷国产综合精品电影| 国产精品不卡在线观看| 99麻豆久久久国产精品免费 | 91国产福利在线| 亚洲一线二线三线久久久| 欧美午夜一区二区三区| 性做久久久久久| 日韩一区二区电影网| 国内久久精品视频| 亚洲欧洲精品一区二区三区| 欧美在线色视频| 一区二区三区不卡视频在线观看 | 成人av影院在线| 一卡二卡欧美日韩| 91精品国产综合久久福利| 国产一区二区在线电影| 亚洲欧洲三级电影| 欧美无砖专区一中文字| 精品中文字幕一区二区| 中文字幕乱码一区二区免费| 色素色在线综合| 久久99精品国产麻豆婷婷洗澡| 国产欧美精品一区二区三区四区| 99re在线精品| 国内精品视频一区二区三区八戒| 自拍偷拍亚洲激情| 欧美一区二区三区成人| 成人涩涩免费视频| 性做久久久久久久免费看| 国产日韩欧美a|