首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BLUEZ中使用SCO?

如何在BLUEZ中使用SCO?
EN

Stack Overflow用户
提问于 2021-04-14 21:08:45
回答 1查看 49关注 0票数 0

我试着使用Bluez中的SCO。我遵循了下面的示例:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/tools/scotest.c

我的代码看起来是这样的:

代码语言:javascript
复制
sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET | SOCK_NONBLOCK, BTPROTO_SCO);
if (sk < 0) {
    syslog(LOG_ERR, "Can't create socket: %s (%d)",
                        strerror(errno), errno);
    return -1;
}


/* Connect to remote device */
memset(&addr, 0, sizeof(addr));
addr.sco_family = AF_BLUETOOTH;
str2ba(svr, &addr.sco_bdaddr);

if (connect(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
    syslog(LOG_ERR, "Can't connect: %s (%d)",
                        strerror(errno), errno);
}

/* Get connection information */
memset(&conn, 0, sizeof(conn));
optlen = sizeof(conn);

if (getsockopt(sk, SOL_SCO, SCO_CONNINFO, &conn, &optlen) < 0) {
    syslog(LOG_ERR, "Can't get SCO connection information: %s (%d)",
                        strerror(errno), errno);
}


if( recv(sk,buffer, bufferSize,0) < 0) {
    syslog(LOG_ERR, "Can't read: %s (%d)",
                        strerror(errno), errno);
}

每当我尝试读取数据时,我得到一个错误:"Can't read: Function not implemented (38)“当我尝试使用getsockopt时,我得到一个错误,告诉我传输端点没有连接。

不知道怎么修好它。我用的是Ubuntu20.04和bluetoothd -v == 5.53

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 01:39:57

在连接SCO之前,应建立HFP SLC。服务级连接由oFono建立,数据写入由pulseaudio _ and实现。

首先,确保HFP配置文件已连接,然后您可以尝试上面的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67092428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档