我正在尝试在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*)'
有人可以告诉我,如果我这样做是对的,如果没有,如何做我想做的事情呢?
答案 0 :(得分:0)
将以下行添加到Android.mk
LOCAL_SHARED_LIBRARIES := libbt-stack libosi
然而,可能会出现更多链接错误。调查/ system / bt中的makefile将会很有帮助。