/* Forward declarations */
static void __bt_adapter_props_to_hal(bt_property_t *send_props, struct hal_property *prop, uint8_t num_props, uint16_t len);
static void __bt_device_props_to_hal(bt_property_t *send_props,
- struct hal_property *prop, uint8_t num_props,
- uint16_t len);
+ struct hal_property *prop, uint8_t num_props,
+ uint16_t len);
static void __bt_hal_handle_adapter_state_changed(void *buf, uint16_t len);
static void __bt_hal_handle_adapter_property_changed(void *buf, uint16_t len);
static void __bt_hal_handle_stack_messages(int message, void *buf, uint16_t len);
}
static int authorize_response(const bt_bdaddr_t *bd_addr, bt_service_id_t service_id,
- uint8_t authorize, uint8_t save_settings)
+ uint8_t authorize, uint8_t save_settings)
{
DBG("+");
return _bt_hal_device_authorize_response(bd_addr, service_id, authorize, save_settings);
}
static int enable_rssi_monitoring(bt_bdaddr_t *bd_addr, uint32_t conn_link_type,
- int low_threshold, int in_range_threshold, int high_threshold)
+ int low_threshold, int in_range_threshold, int high_threshold)
{
DBG("");
return _bt_hal_device_enable_rssi_monitoring(bd_addr, conn_link_type,
_bt_hal_enable_gap_auth_notifications(type, ((enable == 0) ? FALSE : TRUE));
return BT_STATUS_SUCCESS;
}
+
+static int set_hal_adapter_request_state(int enable)
+{
+ DBG("");
+ _bt_hal_set_adapter_request_state(enable);
+ return BT_STATUS_SUCCESS;
+}
+
+static int set_hal_le_request_state(int enable)
+{
+ DBG("");
+ _bt_hal_set_le_request_state(enable);
+ return BT_STATUS_SUCCESS;
+}
+
+static int dev_disconnect(const bt_bdaddr_t *bd_addr)
+{
+ DBG("+");
+ return _bt_hal_device_disconnect(bd_addr);
+}
#endif
static const bt_interface_t bluetooth_if = {
.le_disable = _bt_hal_le_disable,
.le_init = _bt_hal_le_init,
.le_deinit = _bt_hal_le_deinit,
+ .is_advertising = _bt_hal_is_advertising,
#endif
.cleanup = cleanup,
#ifdef TIZEN_BT_HAL
.enable_rssi_monitoring = enable_rssi_monitoring,
.get_connected_link_rssi_strength = get_connected_link_rssi_strength,
.enable_gap_auth_notifications = enable_gap_auth_notifications,
+ .set_le_static_random_address = _bt_hal_set_le_static_random_address,
+ .set_hal_adapter_request_state = set_hal_adapter_request_state,
+ .set_hal_le_request_state = set_hal_le_request_state,
+ .adapter_le_set_white_list = _bt_hal_adapter_le_set_white_list,
+ .adapter_le_set_privacy = _bt_hal_adapter_le_set_privacy,
+ .device_disconnect = dev_disconnect,
#endif
};
static int open_bluetooth(const struct hw_module_t *module, char const *name,
struct hw_device_t **device)
{
- bluetooth_device_t *dev = malloc(sizeof(bluetooth_device_t));
+ bluetooth_device_t *dev = g_malloc0(sizeof(bluetooth_device_t));
DBG("");
switch (prop->type) {
/* TODO: Add Adapter Properties */
- default:
- send_props[i].len = prop->len;
- send_props[i].val = prop->val;
- break;
+ default:
+ send_props[i].len = prop->len;
+ send_props[i].val = prop->val;
+ break;
}
DBG("prop[%d]: %s", i, btproperty2str(&send_props[i]));
}
static void __bt_device_props_to_hal(bt_property_t *send_props,
- struct hal_property *prop, uint8_t num_props,
- uint16_t len)
+ struct hal_property *prop, uint8_t num_props,
+ uint16_t len)
{
void *buf = prop;
uint8_t i;
static void __bt_hal_handle_device_acl_state_changed_event(void *buf, uint16_t len)
{
- struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
- bt_bdaddr_t bd_addr;
- DBG("+");
+ struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
+ bt_bdaddr_t bd_addr;
+ DBG("+");
- memcpy(bd_addr.address, ev->bdaddr, 6);
- /* BD address*/
- DBG("[0x%x]", bd_addr.address[0]);
- DBG("[0x%x]", bd_addr.address[1]);
- DBG("[0x%x]", bd_addr.address[2]);
- DBG("[0x%x]", bd_addr.address[3]);
- DBG("[0x%x]", bd_addr.address[4]);
- DBG("[0x%x]", bd_addr.address[5]);
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ /* BD address*/
+ DBG("[0x%x]", bd_addr.address[0]);
+ DBG("[0x%x]", bd_addr.address[1]);
+ DBG("[0x%x]", bd_addr.address[2]);
+ DBG("[0x%x]", bd_addr.address[3]);
+ DBG("[0x%x]", bd_addr.address[4]);
+ DBG("[0x%x]", bd_addr.address[5]);
- DBG("ACL Status [0x%x]", ev->status);
- DBG("ACL State [0x%x]", ev->state);
+ DBG("ACL Status [0x%x]", ev->status);
+ DBG("ACL State [0x%x]", ev->state);
- if (!bt_hal_cbacks->acl_state_changed_cb) {
- ERR("HAL User acl_state_changed_cb is not set!!");
- return;
- }
+ if (!bt_hal_cbacks->acl_state_changed_cb) {
+ ERR("HAL User acl_state_changed_cb is not set!!");
+ return;
+ }
- bt_hal_cbacks->acl_state_changed_cb(ev->status, &bd_addr, ev->state);
- DBG("-");
+ bt_hal_cbacks->acl_state_changed_cb(ev->status, &bd_addr, ev->state);
+ DBG("-");
}
static void __bt_hal_handle_device_le_conn_state_changed_event(void *buf, uint16_t len)
{
- struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
- bt_bdaddr_t bd_addr;
- DBG("+");
+ struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
+ bt_bdaddr_t bd_addr;
+ DBG("+");
- memcpy(bd_addr.address, ev->bdaddr, 6);
- /* BD address */
- DBG("Address: [%02X:%02X:%02X:%02X:%02X:%02X]", bd_addr.address[0],
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ /* BD address */
+ DBG("Address: [%02X:%02X:%02X:%02X:%02X:%02X]", bd_addr.address[0],
bd_addr.address[1], bd_addr.address[2], bd_addr.address[3],
bd_addr.address[4], bd_addr.address[5]);
- DBG("LE conn Status [0x%x]", ev->status);
- DBG("LE conn State [0x%x]", ev->state);
+ DBG("LE conn Status [0x%x]", ev->status);
+ DBG("LE conn State [0x%x]", ev->state);
#ifdef TIZEN_BT_HAL
- if (!bt_hal_cbacks->le_conn_state_changed_cb) {
- ERR("HAL User le_conn_state_changed_cb is not set!!");
- return;
- }
+ if (!bt_hal_cbacks->le_conn_state_changed_cb) {
+ ERR("HAL User le_conn_state_changed_cb is not set!!");
+ return;
+ }
- bt_hal_cbacks->le_conn_state_changed_cb(ev->status, &bd_addr, ev->state);
+ bt_hal_cbacks->le_conn_state_changed_cb(ev->status, &bd_addr, ev->state);
#endif
- DBG("-");
+ DBG("-");
}
static void __bt_hal_handle_authorize_request_event(void *buf, uint16_t len)
static void __bt_hal_handle_device_trust_state_changed_event(void *buf, uint16_t len)
{
- struct hal_ev_device_trust_state_changed *ev = (struct hal_ev_device_trust_state_changed*)buf;
- bt_bdaddr_t bd_addr;
- DBG("+");
+ struct hal_ev_device_trust_state_changed *ev = (struct hal_ev_device_trust_state_changed*)buf;
+ bt_bdaddr_t bd_addr;
+ DBG("+");
- memcpy(bd_addr.address, ev->bdaddr, 6);
- /* BD address*/
- DBG("[0x%x]", bd_addr.address[0]);
- DBG("[0x%x]", bd_addr.address[1]);
- DBG("[0x%x]", bd_addr.address[2]);
- DBG("[0x%x]", bd_addr.address[3]);
- DBG("[0x%x]", bd_addr.address[4]);
- DBG("[0x%x]", bd_addr.address[5]);
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ /* BD address*/
+ DBG("[0x%x]", bd_addr.address[0]);
+ DBG("[0x%x]", bd_addr.address[1]);
+ DBG("[0x%x]", bd_addr.address[2]);
+ DBG("[0x%x]", bd_addr.address[3]);
+ DBG("[0x%x]", bd_addr.address[4]);
+ DBG("[0x%x]", bd_addr.address[5]);
- DBG("Device Trusted? [0x%x]", ev->trust);
+ DBG("Device Trusted? [0x%x]", ev->trust);
- if (!bt_hal_cbacks->device_trust_state_changed_cb) {
- ERR("HAL User device_trust_state_changed_cb is not set!!");
- return;
- }
+ if (!bt_hal_cbacks->device_trust_state_changed_cb) {
+ ERR("HAL User device_trust_state_changed_cb is not set!!");
+ return;
+ }
- bt_hal_cbacks->device_trust_state_changed_cb(&bd_addr, ev->trust);
- DBG("-");
+ bt_hal_cbacks->device_trust_state_changed_cb(&bd_addr, ev->trust);
+ DBG("-");
}
static void __bt_hal_handle_device_trusted_profiles_changed_event(void *buf, uint16_t len)
DBG("+");
#ifdef TIZEN_BT_HAL
- memcpy(bd_addr.address, ev->bdaddr, 6);
- DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
bd_addr.address[0], bd_addr.address[1],
bd_addr.address[2], bd_addr.address[3],
bd_addr.address[4], bd_addr.address[5]);
DBG("+");
#ifdef TIZEN_BT_HAL
- memcpy(bd_addr.address, ev->bdaddr, 6);
- DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
bd_addr.address[0], bd_addr.address[1],
bd_addr.address[2], bd_addr.address[3],
bd_addr.address[4], bd_addr.address[5]);
DBG("+");
#ifdef TIZEN_BT_HAL
- memcpy(bd_addr.address, ev->bdaddr, 6);
- DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+ memcpy(bd_addr.address, ev->bdaddr, 6);
+ DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
bd_addr.address[0], bd_addr.address[1],
bd_addr.address[2], bd_addr.address[3],
bd_addr.address[4], bd_addr.address[5]);
static void __bt_hal_handle_stack_messages(int message, void *buf, uint16_t len)
{
DBG("+");
- switch(message) {
- case HAL_EV_ADAPTER_STATE_CHANGED:
- DBG("Event: HAL_EV_ADAPTER_STATE_CHANGED");
- __bt_hal_handle_adapter_state_changed(buf, len);
- break;
- case HAL_EV_ADAPTER_PROPS_CHANGED:
- DBG("Event: HAL_EV_ADAPTER_PROPS_CHANGED");
- __bt_hal_handle_adapter_property_changed(buf, len);
- break;
- case HAL_EV_DISCOVERY_STATE_CHANGED:
- DBG("Event: HAL_EV_DISCOVERY_STATE_CHANGED");
- __bt_hal_handle_adapter_discovery_state_changed(buf, len);
- break;
- case HAL_EV_DEVICE_FOUND:
- DBG("Event: HAL_EV_DEVICE_FOUND");
- __bt_hal_handle_device_found_event(buf, len);
- break;
- case HAL_EV_REMOTE_DEVICE_PROPS:
- DBG("Event: HAL_EV_REMOTE_DEVICE_PROPS");
- __bt_hal_handle_remote_device_properties_event(buf, len);
- break;
- case HAL_EV_BOND_STATE_CHANGED:
- DBG("Event: HAL_EV_BOND_STATE_CHANGED:");
- __bt_hal_handle_bond_state_changed_event(buf, len);
- break;
- case HAL_EV_ACL_STATE_CHANGED:
- DBG("Event: HAL_ACL_STATE_CONNECTED or Disconnected");
- __bt_hal_handle_device_acl_state_changed_event(buf, len);
- break;
- case HAL_EV_LE_CONN_STATE_CHANGED:
- DBG("Event: HAL_LE_CONN_STATE_CONNECTED or Disconnected");
- __bt_hal_handle_device_le_conn_state_changed_event(buf, len);
- break;
- case HAL_EV_SSP_REQUEST:
- DBG("Event: HAL_EV_SSP_REQUEST");
- __bt_hal_handle_ssp_request_event(buf, len);
- break;
- case HAL_EV_PIN_REQUEST:
- DBG("Event: HAL_EV_PIN_REQUEST");
- __bt_hal_handle_pin_request_event(buf, len);
- break;
- case HAL_EV_AUTHORIZE_REQUEST:
- DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
- __bt_hal_handle_authorize_request_event(buf, len);
- break;
- case HAL_EV_DEVICE_TRUST_CHANGED:
- DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
- __bt_hal_handle_device_trust_state_changed_event(buf, len);
- break;
+ switch (message) {
+ case HAL_EV_ADAPTER_STATE_CHANGED:
+ DBG("Event: HAL_EV_ADAPTER_STATE_CHANGED");
+ __bt_hal_handle_adapter_state_changed(buf, len);
+ break;
+ case HAL_EV_ADAPTER_PROPS_CHANGED:
+ DBG("Event: HAL_EV_ADAPTER_PROPS_CHANGED");
+ __bt_hal_handle_adapter_property_changed(buf, len);
+ break;
+ case HAL_EV_DISCOVERY_STATE_CHANGED:
+ DBG("Event: HAL_EV_DISCOVERY_STATE_CHANGED");
+ __bt_hal_handle_adapter_discovery_state_changed(buf, len);
+ break;
+ case HAL_EV_DEVICE_FOUND:
+ DBG("Event: HAL_EV_DEVICE_FOUND");
+ __bt_hal_handle_device_found_event(buf, len);
+ break;
+ case HAL_EV_REMOTE_DEVICE_PROPS:
+ DBG("Event: HAL_EV_REMOTE_DEVICE_PROPS");
+ __bt_hal_handle_remote_device_properties_event(buf, len);
+ break;
+ case HAL_EV_BOND_STATE_CHANGED:
+ DBG("Event: HAL_EV_BOND_STATE_CHANGED:");
+ __bt_hal_handle_bond_state_changed_event(buf, len);
+ break;
+ case HAL_EV_ACL_STATE_CHANGED:
+ DBG("Event: HAL_ACL_STATE_CONNECTED or Disconnected");
+ __bt_hal_handle_device_acl_state_changed_event(buf, len);
+ break;
+ case HAL_EV_LE_CONN_STATE_CHANGED:
+ DBG("Event: HAL_LE_CONN_STATE_CONNECTED or Disconnected");
+ __bt_hal_handle_device_le_conn_state_changed_event(buf, len);
+ break;
+ case HAL_EV_SSP_REQUEST:
+ DBG("Event: HAL_EV_SSP_REQUEST");
+ __bt_hal_handle_ssp_request_event(buf, len);
+ break;
+ case HAL_EV_PIN_REQUEST:
+ DBG("Event: HAL_EV_PIN_REQUEST");
+ __bt_hal_handle_pin_request_event(buf, len);
+ break;
+ case HAL_EV_AUTHORIZE_REQUEST:
+ DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
+ __bt_hal_handle_authorize_request_event(buf, len);
+ break;
+ case HAL_EV_DEVICE_TRUST_CHANGED:
+ DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
+ __bt_hal_handle_device_trust_state_changed_event(buf, len);
+ break;
#ifdef TIZEN_BT_HAL
- case HAL_EV_SOCK_AUTHORIZE_REQUEST:
- DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
- __bt_hal_handle_socket_authorize_request_event(buf, len);
- break;
- case HAL_EV_LE_STATE_CHANGED:
- DBG("Event: HAL_EV_LE_STATE_CHANGED");
- __bt_hal_handle_le_state_changed(buf, len);
- break;
+ case HAL_EV_SOCK_AUTHORIZE_REQUEST:
+ DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
+ __bt_hal_handle_socket_authorize_request_event(buf, len);
+ break;
+ case HAL_EV_LE_STATE_CHANGED:
+ DBG("Event: HAL_EV_LE_STATE_CHANGED");
+ __bt_hal_handle_le_state_changed(buf, len);
+ break;
#endif
- case HAL_EV_DEVICE_TRUSTED_PROFILES_CHANGED:
- DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
- __bt_hal_handle_device_trusted_profiles_changed_event(buf, len);
- break;
- case HAL_EV_RSSI_MONITOR_STATE_CHANGED:
- DBG("Event: HAL_EV_RSSI_MONITOR_STATE_CHANGED");
- __bt_handle_rssi_monitor_state_changed(buf, len);
- break;
- case HAL_EV_RSSI_ALERT_RECIEVED:
- DBG("Event: HAL_EV_RSSI_ALERT_RECIEVED");
- __bt_handle_rssi_alert_recieved(buf, len);
- break;
- case HAL_EV_RAW_RSSI_RECIEVED:
- DBG("Event: HAL_EV_RAW_RSSI_RECIEVED");
- __bt_handle_raw_rssi_recieved(buf, len);
- break;
- default:
- DBG("Event Currently not handled!!");
- break;
+ case HAL_EV_DEVICE_TRUSTED_PROFILES_CHANGED:
+ DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
+ __bt_hal_handle_device_trusted_profiles_changed_event(buf, len);
+ break;
+ case HAL_EV_RSSI_MONITOR_STATE_CHANGED:
+ DBG("Event: HAL_EV_RSSI_MONITOR_STATE_CHANGED");
+ __bt_handle_rssi_monitor_state_changed(buf, len);
+ break;
+ case HAL_EV_RSSI_ALERT_RECIEVED:
+ DBG("Event: HAL_EV_RSSI_ALERT_RECIEVED");
+ __bt_handle_rssi_alert_recieved(buf, len);
+ break;
+ case HAL_EV_RAW_RSSI_RECIEVED:
+ DBG("Event: HAL_EV_RAW_RSSI_RECIEVED");
+ __bt_handle_raw_rssi_recieved(buf, len);
+ break;
+ default:
+ DBG("Event Currently not handled!!");
+ break;
}
DBG("-");
}