/* * Copyright 2001-2012 Texas Instruments, Inc. - http://www.ti.com/ * * Bluetooth Vendor Library for TI's WiLink Chipsets * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "bt_vendor" #include <stdio.h> #include <dlfcn.h> #include <utils/Log.h> #include <pthread.h> #include <fcntl.h> #include <errno.h> #include <bt_vendor_lib.h> #include <bt_hci_bdroid.h> #include <hardware/bluetooth.h> bt_vendor_callbacks_t *bt_vendor_cbacks = NULL; unsigned int hci_tty_fd = -1; void hw_config_cback(HC_BT_HDR *p_evt_buf); /******************************************************************************* * * Function hw_config_cback * * Description Callback function for controller configuration * * Returns None * * *******************************************************************************/ void hw_config_cback(HC_BT_HDR *p_evt_buf) { ALOGV("hw_config_cback"); } int ti_init(const bt_vendor_callbacks_t* p_cb, unsigned char *local_bdaddr) { ALOGV("vendor Init"); if (p_cb == NULL) { ALOGE("init failed with no user callbacks!"); return BT_STATUS_FAIL; } bt_vendor_cbacks = (bt_vendor_callbacks_t *) p_cb; return 0; } void ti_cleanup(void) { ALOGV("vendor cleanup"); bt_vendor_cbacks = NULL; } int ti_op(bt_vendor_opcode_t opcode, void **param) { int fd; int *fd_array = (int (*)[]) param; ALOGV("vendor op - %d", opcode); switch(opcode) { case BT_VND_OP_USERIAL_OPEN: fd = open("/dev/hci_tty", O_RDWR); if (fd < 0) { ALOGE(" Can't open hci_tty"); return -1; } fd_array[CH_CMD] = fd; hci_tty_fd = fd; /* for userial_close op */ return 1; /* CMD/EVT/ACL on same fd */ case BT_VND_OP_USERIAL_CLOSE: close(hci_tty_fd); return 0; /* Since new stack expects fwcfg_cb we are returning SUCCESS here * in actual, firmware download is already happened when /dev/hci_tty * opened. */ case BT_VND_OP_FW_CFG: bt_vendor_cbacks->fwcfg_cb(BT_VND_OP_RESULT_SUCCESS); return 0; case BT_VND_OP_EPILOG: bt_vendor_cbacks->epilog_cb(BT_VND_OP_RESULT_SUCCESS); break; default: break; } return 0; } const bt_vendor_interface_t BLUETOOTH_VENDOR_LIB_INTERFACE = { .init = ti_init, .op = ti_op, .cleanup = ti_cleanup, }; int main() { return 0; }