Android上的蓝牙芯片编程

时间:2018-03-20 10:16:24

标签: android bluetooth

我正在尝试在AOSP中创建一个应用程序(c / cpp),它允许我将自定义命令发送到Android开发板上的CSR8510蓝牙芯片。我能够从bluedroid源中找到用于执行此类操作的函数是 btu_hcif_send_cmd ,并且此功能在 bluetooth.default.so 库中可用。我尝试将bluetooth.default.so库链接到我的应用程序,该应用程序正在使用 btu_hcif_send_cmd osi_malloc 函数。我使用的代码片段如下。

uint8_t controllerID = LOCAL_BR_EDR_CONTROLLER_ID;
size_t cmdSize = HCI_CMD_BUF_SIZE;

cmdPacket = (BT_HDR*)osi_malloc(cmdSize);

cmdPacket->event = 0;
cmdPacket->offset = 0;
cmdPacket->layer_specific = 0;
cmdPacket->len = HCIC_PREAMBLE_SIZE; /*! RESET Command doesn't have any parameters */
cmdStream = cmdPacket->data;

 UINT16_TO_STREAM(cmdStream, HCI_RESET);
 UINT8_TO_STREAM(cmdStream, 0);  /*! RESET Command doesn't have any parameters */     
      btu_hcif_send_cmd(controllerID, cmdPacket);

但是,在尝试在AOSP构建中编译应用程序时,我不断收到以下未定义的引用错误。

error: undefined reference to 'osi_malloc(unsigned int)'
error: undefined reference to 'btu_hcif_send_cmd(unsigned char, BT_HDR*)'

有人可以告诉我,如果我这样做是对的,如果没有,如何做我想做的事情呢?

1 个答案:

答案 0 :(得分:0)

将以下行添加到Android.mk

LOCAL_SHARED_LIBRARIES := libbt-stack libosi

然而,可能会出现更多链接错误。调查/ system / bt中的makefile将会很有帮助。