#include <stdbool.h>
#include <unistd.h>
#include <glib.h>
+#include <stdint.h>
+
#ifdef __cplusplus
extern "C" {
#define BLUETOOTH_OOB_DATA_LENGTH 16
+#define BLUETOOTH_LE_OOB_DATA_LENGTH 100
+
#define BLUETOOTH_PIN_CODE_MAX_LENGTH 16
#ifdef TIZEN_GATT_CLIENT
#define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION ((int)BLUETOOTH_ERROR_BASE - 0x28)
/**< Device Policy Restricted */
+
+#define BLUETOOTH_ERROR_NO_DATA ((int)BLUETOOTH_ERROR_BASE - 0x29)
+ /**< No data */
+
+#define BLUETOOTH_ERROR_AUTHORIZATION_REJECTED ((int)BLUETOOTH_ERROR_BASE - 0x2a)
+ /**< Authorization rejected */
+
/**
* Error codes for ATT Error response *
*/
#define BLUETOOTH_ERROR_AUTH_FAILURE 0x05
#define BLUETOOTH_ERROR_PIN_OR_KEY_MISSING 0x06
#define BLUETOOTH_ERROR_CONNECTION_TIMEOUT 0x08
+#define BLUETOOTH_ERROR_CONNECTION_REJECTED_DUE_TO_SECURITY_REASONS 0x0e
#define BLUETOOTH_ERROR_REMOTE_USER_TERM 0x13
#define BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES 0x14
#define BLUETOOTH_ERROR_REMOTE_POWER_OFF 0x15
} bluetooth_device_pin_code_t;
/**
+ * This is data for battery usage monitoring
+ */
+
+typedef struct {
+ time_t session_start_time;
+ time_t session_end_time;
+ uint32_t tx_time;
+ uint32_t rx_time;
+ uint32_t idle_time;
+ uint16_t session_connected_time;
+ uint16_t session_scan_time;
+ GSList *atm_list;
+} bt_battery_data;
+
+typedef struct {
+ uid_t uid;
+ pid_t pid;
+ uint16_t rx_bytes;
+ uint16_t tx_bytes;
+ uint time;
+} bt_battery_app_data;
+
+/**
* Adapter state
*/
typedef enum {
float interval_max;
guint8 filter_policy;
guint8 type;
+ int tx_power_level;
} bluetooth_advertising_params_t;
/**
float window; /**< LE scan window */
} bluetooth_le_scan_params_t;
+/**
+* LE Scan type
+*/
+typedef enum {
+ BLUETOOTH_LE_PASSIVE_SCAN = 0x00,
+ BLUETOOTH_LE_ACTIVE_SCAN
+} bluetooth_le_scan_type_t;
+
/*
LE Connection Update
*/
BLUETOOTH_EVENT_ENABLED, /**< Bluetooth event adpater enabled */
BLUETOOTH_EVENT_DISABLED, /**< Bluetooth event adpater disabled */
+ BLUETOOTH_EVENT_DISABLED_BATTERY_DATA, /**< Bluetooth event adapter disabled battery data*/
BLUETOOTH_EVENT_LE_ENABLED, /**< Bluetooth event adpater enabled */
BLUETOOTH_EVENT_LE_DISABLED, /**< Bluetooth event adpater disabled */
BLUETOOTH_EVENT_LOCAL_NAME_CHANGED, /**< Bluetooth event local name changed*/
BLUETOOTH_EVENT_GATT_DISCONNECTED, /**<Gatt Disconnected event */
#endif
BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED, /**<Attribute protocol MTU changed event */
+ BLUETOOTH_EVENT_GATT_SERVER_ATT_MTU_CHANGED, /**<Attribute protocol Server MTU changed event */
BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED, /**<Gatt Char write callback event */
BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED, /** <GATT Characteristic/Descriptor Read Request event */
BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED, /** <GATT Characteristic/Descriptor Value change event */
BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED, /** <GATT Characteristic Notification change event */
BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED, /** <GATT Characteristic Notification or Indication completed event */
BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED, /** <GATT Client service change event */
-
+ BLUETOOTH_EVENT_GATT_SERVER_ACQUIRE_WRITE, /** <GATT Characteristic/Descriptor Value change event */
+ BLUETOOTH_EVENT_GATT_SERVER_ACQUIRE_NOTIFY,
BLUETOOTH_EVENT_AG_CONNECTED = BLUETOOTH_EVENT_AUDIO_BASE, /**<AG service connected event*/
BLUETOOTH_EVENT_AG_DISCONNECTED, /**<AG service disconnected event*/
BLUETOOTH_EVENT_AG_SPEAKER_GAIN, /**<Speaker gain request event*/
BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS, /**<AVRCP service player repeat status event*/
BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS, /**<AVRCP service player scan status event*/
BLUETOOTH_EVENT_AVRCP_DELAY_CHANGED, /**<AVRCP service transport delay changed event*/
+ BLUETOOTH_EVENT_AVRCP_VOLUME_CHANGED, /**<AVRCP service transport volume changed event*/
+ BLUETOOTH_EVENT_AUDIO_AVC_STATUS, /**<Absolute Volume Control status changed event*/
BLUETOOTH_EVENT_HF_CONNECTED,
BLUETOOTH_EVENT_HF_DISCONNECTED,
BLUETOOTH_EVENT_HF_AUDIO_CONNECTED,
BLUETOOTH_EVENT_HF_CALLSETUP_DIALING,
BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING,
BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED,
+ BLUETOOTH_EVENT_AUDIO_AVC_MODE_CHANGED,
BLUETOOTH_HID_CONNECTED = BLUETOOTH_EVENT_HID_BASE, /**< Input connectd event*/
BLUETOOTH_HID_DISCONNECTED, /**< Input disconnectd event*/
bluetooth_device_address_t device_address; /**< remote device address */
bluetooth_device_name_t device_name; /**< device name */
char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX]; /**< pass-key string */
+ bool incoming; /**< stores if bonding request is incoming */
} bluetooth_authentication_request_info_t;
/**
bluetooth_device_address_t device_addr;
unsigned char addr_type;
int disc_reason;
+ int rssi;
} bt_connection_info_t;
/**
unsigned char randomizer256[BLUETOOTH_OOB_DATA_LENGTH];
unsigned int hash256_len;
unsigned int randomizer256_len;
+
+ unsigned char eir[BLUETOOTH_LE_OOB_DATA_LENGTH];
+ unsigned int eir_len;
} bt_oob_data_t;
/**
guint32 val_len;
} bt_gatt_char_value_t;
+typedef struct {
+ unsigned char UUID[16];
+ char address[18];
+ char *val;
+ int len;
+} bt_gatt_notify_req_t ;
+
/**
* Structure to GATT Read Request
*/
bluetooth_device_address_t device_addr;
char *svc_path;
bluetooth_gatt_service_change_type_t change_type;
+#ifdef TIZEN_GATT_CLIENT
+ int inst_id;
+ char *uuid;
+#endif
} bt_gatt_service_change_t;
/**
@endcode
*/
int bluetooth_disable_adapter(void);
+int bluetooth_read_battery_data(bt_battery_data *latest);
+int bluetooth_set_battery_monitor_state(bool state);
+int bluetooth_get_battery_monitor_state(void);
int bluetooth_recover_adapter(void);
int bluetooth_check_adapter_le(void);
int bluetooth_enable_adapter_le(void);
*/
gboolean bluetooth_is_le_scanning(void);
-gboolean bluetooth_is_scan_filter_supported(void);
+int bluetooth_is_scan_filter_supported(gboolean *is_supported);
/**
* @fn int bluetooth_force_hcidump(int timeout)
int bluetooth_force_hcidump(int timeout);
/**
- * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id)
+ * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter)
* @brief Register scan filter.
*
* This function registers the scan filter.
* @return BLUETOOTH_ERROR_NONE - Success \n
*
* @param[in] filter scan filter to register
- * @param[out] slot_id the slot ID of scan filter
*
* @remark None
*/
-int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id);
-
-/**
- * @fn int bluetooth_unregister_scan_filter(int slot_id)
- * @brief Register scan filter.
- *
- * This function unregisters the scan filter.
- *
- * This function is a synchronous call.
- *
- * @return BLUETOOTH_ERROR_NONE - Success \n
- *
- * @param[in] slot_id the slot ID of scan filter
- *
- * @remark None
- */
-int bluetooth_unregister_scan_filter(int slot_id);
-
-/**
- * @fn int bluetooth_unregister_all_scan_filters(void)
- * @brief Register scan filter.
- *
- * This function usregisters all scan filters.
- *
- * This function is a synchronous call.
- *
- * @return BLUETOOTH_ERROR_NONE - Success \n
- *
- * @remark None
- */
-int bluetooth_unregister_all_scan_filters(void);
+int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter);
/**
* @fn int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
int bluetooth_is_connectable(gboolean *is_connectable);
+int bluetooth_disconnect_device(const bluetooth_device_address_t *device_address);
+
/**
* @fn int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
* @brief Initiate a bonding process
int bluetooth_oob_remove_remote_data(
const bluetooth_device_address_t *remote_device_address);
+
+/**
+ * @fn int bluetooth_le_oob_read_local_data(bt_oob_data_t *local_oob_data)
+ * @brief Read the local Hash and Randmizer.
+ *
+ * This function is a synchronous call.
+ *
+ * @return BLUETOOTH_ERROR_NONE - Success \n
+ * BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception None
+ * @param[in] None.
+ * @param[out] local_oob_data - Pointer to the local OOB data
+ *
+ * @remark None
+ * @see None
+ */
+int bluetooth_le_oob_read_local_data(bt_oob_data_t *local_oob_data);
+
+/**
+ * @fn int bluetooth_le_oob_add_remote_data(
+ * const bluetooth_device_address_t *remote_device_address,
+ * bluetooth_bdaddr_type_e address_type,
+ * bt_oob_data_t *oob_data)
+ * @brief Add/updated the remote device Hash and Randmizer.
+ *
+ * This function is a synchronous call.
+ * No event for this api..
+ *
+ * @return BLUETOOTH_ERROR_NONE - Success \n
+ * BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception None
+ * @param[in] remote_device_address - Remote device address
+ * address_type - bdaddr type
+ * remote_oob_data - Ponter to Hash and Randomizer oob data structure
+ *
+ * @remark None
+ * @see None
+ */
+int bluetooth_le_oob_add_remote_data(
+ const bluetooth_device_address_t *remote_device_address,
+ bluetooth_bdaddr_type_e address_type,
+ bt_oob_data_t *remote_oob_data);
+
/**
* @fn int bluetooth_gatt_get_primary_services(const bluetooth_device_address_t *address,
* bt_gatt_handle_info_t *prim_svc);
int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
#endif
+int bluetooth_get_gatt_data_batching_available_packets(
+ int *available_packets);
+
+int bluetooth_enable_gatt_data_batching(
+ const bluetooth_device_address_t *device_address, int packet_threshold, int timeout);
+
+int bluetooth_disable_gatt_data_batching(
+ const bluetooth_device_address_t *device_address);
+
/**
* @fn int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
*
int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
/**
+ * @fn intbluetooth_set_scan_type(bluetooth_le_scan_type_t scan_type);
+ *ss
+ * @brief Set scan type
+ *
+ * This function is used to set LE scan type
+ *
+ * This function is a synchronous call.
+ *
+ * @return BLUETOOTH_ERROR_NONE - Success \n
+ * BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ * BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
+ *
+ * @exception None
+ * @param[in] scan_type - LE scan type
+ *
+ * @remark None
+ */
+int bluetooth_set_scan_type(bluetooth_le_scan_type_t scan_type);
+
+/**
* @fn int bluetooth_is_advertising(void)
* @brief Check for the advertising is in-progress or not.
*
int bluetooth_otp_disconnect_otc(const bluetooth_device_address_t *device_address);
/**
+ * @fn int bluetooth_is_le_2m_phy_supported(gboolean *is_supported)
+ * @brief Check if Adapter supports LE 2M PHY feature or not.
+ *
+ * This API is used to check the whether LE Adapter supports LE 2M PHY feature, which is introduced
+ * in BT 5.0 specification.
+ *
+ * This function is a synchronous call.
+ *
+ * @return BLUETOOTH_ERROR_NONE - Succeess \n
+ * BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer) \n
+ * BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ * BLUETOOTH_ERROR_INTERNAL - Internal error \n
+ * @param[out] is_supported. This boolean variable indicates whether LE 2M PHY is supported or not
+ *
+ * @remark None
+ */
+int bluetooth_is_le_2m_phy_supported(gboolean *is_supported);
+
+/**
+ * @fn int bluetooth_is_le_coded_phy_supported(gboolean *is_supported)
+ * @brief Check if Adapter supports LE 2M CODED feature or not.
+ *
+ * This API is used to check the whether LE Adapter supports LE CODED PHY feature, which is introduced
+ * in BT 5.0 specification.
+ *
+ * This function is a synchronous call.
+ *
+ * @return BLUETOOTH_ERROR_NONE - Succeess \n
+ * BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer) \n
+ * BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ * BLUETOOTH_ERROR_INTERNAL - Internal error \n
+ * @param[out] is_supported. This boolean variable indicates whether LE CODED PHY is supported or not
+ *
+ * @remark None
+ */
+int bluetooth_is_le_coded_phy_supported(gboolean *is_supported);
+
+/**
* @}
*/