标签: l2cap

Android BLE连接时间间隔

我正在使用Android BLE API在Nexus 4上开发BLE应用程序.我有几个疑问/疑惑:

1)有没有办法设置/覆盖BLE中央设备的连接或通知间隔.我发现对于Android,默认连接间隔固定为7.5毫秒.有没有办法更改此连接/通知延迟间隔设置.

资料来源:http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag?DCMP = lprf-stdroid&HQS = lprf-stdroid-pr-wiki1 #Supported_Android_devices

2)在连接到远程设备时,我面临着在随机时间间隔之后断开连接的问题.有许多人面临连接丢弃问题,说明当Android使用Android 4.3 API进行BLE连接时,android是不稳定的.这有什么解决方案吗?

编辑

我在这里观察到的另一个问题是,当需要时间重新连接时,它会随着一些L2CAP日志而来......跟随日志

Trying to create a new connection laststate_ BOND_NONE
D/BluetoothGatt( 9620): connect() - device: 1C:BA:81:11:CA:36, auto: true
D/BluetoothGatt( 9620): registerApp()
D/BluetoothGatt( 9620): registerApp() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510
D/BtGatt.GattService( 3208): registerClient() - UUID=1adsds0911-4sdsc-41dc-8ac0-0sdsdf550510
D/BtGatt.btif( 3208): btif_gattc_register_app
D/BtGatt.btif( 3208): btgattc_handle_event: Event 1000
D/BtGatt.btif( 3208): btif_gattc_upstreams_evt: Event 0
D/BtGatt.GattService( 3208): onClientRegistered() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510, clientIf=5
D/BluetoothGatt( 9620): onClientRegistered() - status=0 clientIf=5
D/BtGatt.GattService( 3208): clientConnect() - address=1C:BA:8C:1E:CA:36, isDirect=true
D/BtGatt.btif( …
Run Code Online (Sandbox Code Playgroud)

android connection-pooling l2cap bluetooth-lowenergy

27
推荐指数
4
解决办法
4万
查看次数

蓝牙协议(RFCOMM,L2CAP和ACL)

从我从Bluetooth Essentials for Programmers中读到的内容,这本书提到了一些我不太了解的观点.

RFCOMM是一种可靠的基于流的协议.L2CAP是一种基于数据包的协议,可配置不同级别的可靠性.

L2CAP实际上充当RFCOMM的传输协议,因此每个RFCOMM连接实际上封装在L2CAP连接中.

这真的让我困惑,因为这两个协议是不同类型的协议(一个是基于流的,而另一个是基于分组的).所以基于它的解释,我在下面有一些问题.

  1. 由于RFCOMM连接是封装的,那么串口配置文件(SPP)如何使用RFCOMM连接?它也应该使用L2CAP.

  2. A2DP使用L2CAP连接.这对我来说意味着相同,因为L2CAP和RFCOMM封装在ACL连接中,这是否意味着A2DP使用ACL连接?我知道这是不正确的但是如何解释这里.

谢谢你的解释.

bluetooth l2cap rfcomm android-bluetooth

15
推荐指数
1
解决办法
2万
查看次数

OS X的虚拟HID键盘

我正在尝试为Mac OS 创建一个虚拟蓝牙键盘客户端.这意味着我的Mac将作为BT KB.我在OS X中看到了蓝牙API(在ObjC中),我还发现了一个用于Mac的HID API(在C中)

为了完成这项工作,我理解我需要声明一个应该在SDP查询上广播的hid-keyboard-service.

  1. 如果我使用HID API声明HID服务,我的服务是否也在蓝牙上可见/广播?(这些文件似乎仅涉及关于USB的HID). - 在蓝牙和USB接口上都可以看到HID服务,而且底层连接对我来说是透明的吗?
  2. 是否有任何代码可以帮助我解决这个问题?我更喜欢ObjC,但似乎HID API只是C ...... :(

谢谢...!

macos bluetooth hid l2cap

7
推荐指数
1
解决办法
3056
查看次数

尝试将蓝牙套接字绑定到PSM 17和19,返回MeeGo上的EACCESS

我正在尝试使用诺基亚N9(meego)作为虚拟蓝牙鼠标/键盘.我试图使用这个小程序作为起点,但我遇到问题:当我运行这个程序时,我得到一个错误,告诉我"绑定错误(PSM 19):权限被拒绝".这是一个蓝牙套接字绑定到PSM 19.

当我以普通用户身份运行程序时,以及以root身份运行时,我被拒绝访问.

在互联网上搜索我发现低于0x1000的PSM(端口)是保留的,而在其他蓝牙实现中无法绑定到这些PSM是一个特征(例如jsr-82).

我尝试使用PSM高于0x1000的相同程序并且它工作,但是,其他设备无法看到附近有一个HID设备:(

有没有办法绑定到这些PSM而不诉诸蓝牙堆栈本身?

c bluetooth hid l2cap meego

7
推荐指数
1
解决办法
1066
查看次数

如何建立L2Capp中断通道连接?

我试图打开L2Cap HID通道和中断通道,以便我可以将HID命令发送到蓝牙设备.

我已完成所有服务广告和设备配对并建立了基带连接.

Hid控制通道打开正常.当我尝试创建我的kBluetoothL2CAPPSMHIDInterrupt连接时

l2capChannelQueueSpaceAvailable

委托方法调用(不确定这意味着什么)后跟

l2capChannelOpenComplete

但连接立即关闭

l2capChannelClosed

我该如何正确打开这些连接?

我花了很长时间挖掘IOBlueTooth框架和bluetooth.org HID规范,但几乎没有任何有用的信息(我至少可以找到).

当我追踪我的L2Cap频道时,我看到了一些空值

mIncomingDataListener

mEventDataListener

.我不知道如何设置它们或者它们是否与我的问题有关....只是推测.

下面的代码片段是我到目前为止在建立与设备的连接后建立连接的尝试.

-(void)establishL2CappConnections:(IOBluetoothDevice*)device
{
    IOReturn r;
    IOBluetoothL2CAPChannel *ch1;
    r = [device openL2CAPChannelSync:&ch1
                             withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDControl
                            delegate:self];
    self.mL2CappChannel=ch1;
    NSLog(@"r == %i",r);

    IOBluetoothL2CAPChannel *ch2;
    r = [device openL2CAPChannelSync:&ch2
                             withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDInterrupt
                            delegate:self];
    self.mL2CappInterruptChannel=ch2;
    NSLog(@"r == %i",r);


}
Run Code Online (Sandbox Code Playgroud)

编辑:1

我已经附上了我的包日志.这很奇怪,是一个请求

kBluetoothL2CAPPSMSDP 0x0001

没有我请求它,然后一切开始断开连接.

BT数据包日志

macos bluetooth l2cap iobluetooth

7
推荐指数
1
解决办法
455
查看次数

如何在 Android 中实例化 L2Cap 套接字?

我看到蓝牙套接字可以是 TYPE_L2CAP 类型,但 BluetoothSocket 的构造函数似乎是私有的,我只能找到一种方法来实例化 RFCOMM 类型的套接字。如何获取和使用 L2CAP 插槽?安卓真的支持吗?

android bluetooth l2cap bluetooth-lowenergy

7
推荐指数
1
解决办法
4800
查看次数

Windows的蓝牙AVRCP控件

我正在尝试在我的Android手机和我的车载PC之间实现AVRCP/A2DP连接.A2DP位基本上开箱即用,所以没有问题.我希望PC成为AVRCP CT(控制器)和A2DP接收器.手机是AVRCP TG(目标)和A2DP源.

我遇到麻烦的地方是获得我可以使用的任何类型的AVRCP连接.Windows 7附带一个工具栏应用程序,至少提供基本的播放/暂停/跳过/停止类型功能.所以它肯定适用于我没有任何额外驱动程序或其他方面的软件.然而,我的搜索在任何方式上都没有产生任何结果或创建L2CAP连接的文档,我相信我需要.

除非您使用Broadcom/Widcomm堆栈,否则32feet.NET库不支持L2CAP连接.购买新的BT USB设备可能是一个可行的解决方案,但目前我正在尝试用软件完成这一切:).即像这样,虽然有一些问题没有解决(或报告已解决)链接:如何在Widcomm SDK上使用L2CAP建立从Windows 7(控制器)到手机(目标)的AVRCP连接?

如果可能的话,我更喜欢C#,但是如果我有某种类型的库来与我的代码进行交互,那就没问题了(就像32feet.NET库一样,它可以很好地处理它所做的事情.)

这是我最接近的,但对我来说有点希腊,并不足以让我开始(我是一个嵌入式的人):http: //msdn.microsoft.com/en-us/library/窗户/硬件/ ff536674(v = vs.85)的.aspx

蓝牙在Windows上真的是一团糟吗?它似乎来自我的搜索?有多种不同的堆栈在API等方面似乎都有很大的不同.

谁能指出我正确的方向?我在这里和其他地方做了很多搜索/阅读其他帖子并没有取得任何进展.

谢谢

基督教

windows bluetooth l2cap avrcp a2dp

6
推荐指数
0
解决办法
2813
查看次数

蓝牙LE L2CAP CID与PSM

我一直在教自己如何使用BlueZ API在C语言中为BLE设备编写程序.但是,我似乎对sockaddr_l2结构的一个特定方面感到困惑.我使用的定义如下:

struct sockaddr_l2 {
    sa_family_t l2_family;
    unsigned short  l2_psm;
    bdaddr_t    l2_bdaddr;
    unsigned short  l2_cid;
    uint8_t     l2_bdaddr_type;
};
Run Code Online (Sandbox Code Playgroud)

现在对于我不明白的部分:l2_psm和l2_cid有什么区别?这是我到目前为止收集的内容:

PSM代表"协议服务多路复用器",是L2CAP连接的"端口".资料来源:程序员蓝牙,作者Albert Huang

CID代表"通道标识符",是表示设备上逻辑通道端点的本地名称.来源:http://ecee.colorado.edu/~ecen4242/marko/Bluetooth/Bluetooth/SPECIFICATION/L2CAP.html

现在我确定答案就在那些定义中,但我似乎无法理解CID的定义.谁能以更全面的方式向我解释PSM和CID之间的差异?

谢谢 :)

c bluetooth l2cap bluetooth-lowenergy bluez

6
推荐指数
1
解决办法
2916
查看次数

Windows 10 (c#) 上的蓝牙 L2CAP 服务器

在 iOS 11 中,Apple 增加了对 MFI-free L2CAP 协议的支持。我需要在 C#(Windows 10)上实现 L2CAP 服务器以允许 ios 客户端 L2CAP 连接。有没有人知道 C# 中 L2CAP 服务器实现的一个好的(甚至任何)参考(示例代码/示例)?提前致谢。

bluetooth l2cap c#-4.0 windows-10

5
推荐指数
0
解决办法
357
查看次数

蓝牙LE - 在Android上的L2CAP CO频道

我正在尝试通过带蓝牙LE的L2CAP CO(面向连接)将Android设备连接到嵌入式控制单元.Apple在iOS中创建了一项新功能,可以为外围设备创建自定义L2CAP频道https://developer.apple.com/documentation/corebluetooth/cbl2capchannel,并避免使用GATT服务器通信.

我的问题是:

Android中是否有任何未来或当前实现具有与iOS相同的功能?

更新:替换错误的链接

android l2cap bluetooth-lowenergy

5
推荐指数
1
解决办法
654
查看次数