return false;
}
+
+void pa_bluetooth_transport_set_delay(pa_bluetooth_transport *t, int64_t delay) {
+ pa_assert(t);
+
+ if (t->delay == delay)
+ return;
+
+ pa_log_debug("Transport %s delay: %" PRId64 " -> %" PRId64 "us", t->path, t->delay, delay);
+
+ t->delay = delay;
+
+ pa_hook_fire(&t->device->discovery->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_DELAY_CHANGED], t);
+}
#endif
static int transport_state_from_string(const char* value, pa_bluetooth_transport_state_t *state) {
dbus_uint16_t value;
dbus_message_iter_get_basic(&variant_i, &value);
- if (pa_streq(key, "Delay")) {
- pa_log_debug("Delay: %d", value);
- // TODO: need to implement additional logic of delay reporting
- }
+ if (pa_streq(key, "Delay"))
+ pa_bluetooth_transport_set_delay(t, value * 100); /* 1/10 ms to 1 us */
break;
}
PA_BLUETOOTH_HOOK_DEVICE_UNLINK, /* Call data: pa_bluetooth_device */
PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED, /* Call data: pa_bluetooth_transport */
#ifdef __TIZEN_BT__
- PA_BLUETOOTH_HOOK_SCO_STATE_CHANGED, /* Call data: pa_bluetooth_transport */
+ PA_BLUETOOTH_HOOK_TRANSPORT_DELAY_CHANGED, /* Call data: pa_bluetooth_transport */
+ PA_BLUETOOTH_HOOK_SCO_STATE_CHANGED, /* Call data: pa_bluetooth_transport */
#endif
PA_BLUETOOTH_HOOK_TRANSPORT_MICROPHONE_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */
PA_BLUETOOTH_HOOK_TRANSPORT_SPEAKER_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */
uint16_t microphone_gain;
uint16_t speaker_gain;
+#ifdef __TIZEN_BT__
+ int64_t delay;
+#endif
pa_bluetooth_transport_state_t state;
#ifdef __TIZEN_BT__
bool pa_bluetooth_device_sink_transport_connected(const pa_bluetooth_device *d);
bool pa_bluetooth_device_source_transport_connected(const pa_bluetooth_device *d);
+void pa_bluetooth_transport_set_delay(pa_bluetooth_transport *t, int64_t delay);
#endif
pa_bluetooth_device* pa_bluetooth_discovery_get_device_by_path(pa_bluetooth_discovery *y, const char *path);