Merge "Handle the pin code request in case of peripheral" into tizen
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / device / bt-service-core-device.c
index dc7337d..20d848e 100644 (file)
 #define MAX_BOND_RETRY_COUNT 3
 #define BT_PASSKEY_MAX_LENGTH 4
 
+#define BT_LE_CONN_PARAM_DEFAULT_SUPERVISION_TIMEOUT    6000    /* msec */
+
+#define BT_LE_CONN_PARAM_BALANCED_MIN_INTERVAL  30      /* msec */
+#define BT_LE_CONN_PARAM_BALANCED_MAX_INTERVAL  50      /* msec */
+#define BT_LE_CONN_PARAM_BALANCED_SLAVE_LATENCY 0       /* event */
+
+#define BT_LE_CONN_PARAM_LOW_LATENCY_MIN_INTERVAL       10      /* msec */
+#define BT_LE_CONN_PARAM_LOW_LATENCY_MAX_INTERVAL       30      /* msec */
+#define BT_LE_CONN_PARAM_LOW_LATENCY_SLAVE_LATENCY      0       /* event */
+
+#define BT_LE_CONN_PARAM_LOW_POWER_MIN_INTERVAL         80      /* msec */
+#define BT_LE_CONN_PARAM_LOW_POWER_MAX_INTERVAL         100     /* msec */
+#define BT_LE_CONN_PARAM_LOW_POWER_SLAVE_LATENCY        2       /* event */
+
 /* Bonding Info structure */
 typedef struct {
        int result;
@@ -1425,7 +1439,7 @@ static void __bt_device_acl_state_changed_callback(event_dev_conn_status_t *acl_
                                BLUETOOTH_EVENT_DEVICE_CONNECTED,
                                param);
        } else {
-               param = g_variant_new("(isy)", result, address, type);
+               param = g_variant_new("(isyi)", result, address, type, acl_event->rssi);
                _bt_send_event(BT_DEVICE_EVENT,
                                BLUETOOTH_EVENT_DEVICE_DISCONNECTED,
                                param);
@@ -2400,6 +2414,43 @@ int _bt_remove_le_conn_param_info(const char *address, const char *sender)
        return BLUETOOTH_ERROR_NONE;
 }
 
+int _bt_get_le_connection_parameter(bluetooth_le_connection_mode_t mode,
+               bluetooth_le_connection_param_t *param)
+{
+       if (param == NULL)
+               return BLUETOOTH_ERROR_INVALID_PARAM;
+
+       memset(param, 0x00, sizeof(bluetooth_le_connection_param_t));
+
+       switch (mode) {
+       case BLUETOOTH_LE_CONNECTION_MODE_BALANCED:
+               param->interval_min = BT_LE_CONN_PARAM_BALANCED_MIN_INTERVAL;
+               param->interval_max = BT_LE_CONN_PARAM_BALANCED_MAX_INTERVAL;
+               param->latency = BT_LE_CONN_PARAM_BALANCED_SLAVE_LATENCY;
+               param->timeout = BT_LE_CONN_PARAM_DEFAULT_SUPERVISION_TIMEOUT;
+               break;
+
+       case BLUETOOTH_LE_CONNECTION_MODE_LOW_LATENCY:
+               param->interval_min = BT_LE_CONN_PARAM_LOW_LATENCY_MIN_INTERVAL;
+               param->interval_max = BT_LE_CONN_PARAM_LOW_LATENCY_MAX_INTERVAL;
+               param->latency = BT_LE_CONN_PARAM_LOW_LATENCY_SLAVE_LATENCY;
+               param->timeout = BT_LE_CONN_PARAM_DEFAULT_SUPERVISION_TIMEOUT;
+               break;
+
+       case BLUETOOTH_LE_CONNECTION_MODE_LOW_POWER:
+               param->interval_min = BT_LE_CONN_PARAM_LOW_POWER_MIN_INTERVAL;
+               param->interval_max = BT_LE_CONN_PARAM_LOW_POWER_MAX_INTERVAL;
+               param->latency = BT_LE_CONN_PARAM_LOW_POWER_SLAVE_LATENCY;
+               param->timeout = BT_LE_CONN_PARAM_DEFAULT_SUPERVISION_TIMEOUT;
+               break;
+
+       default:
+               BT_ERR("Unhandled mode : %d", mode);
+               break;
+       }
+
+       return BLUETOOTH_ERROR_NONE;
+}
 
 int _bt_le_connection_update(const char *sender,
                unsigned char *device_address,