static void handle_set_remote_permission(DBusConnection *conn, DBusMessage *msg, void *userdata);
static void handle_discover_remote_device(DBusConnection *conn, DBusMessage *msg, void *userdata);
static void handle_publish_local_device(DBusConnection *conn, DBusMessage *msg, void *userdata);
+static void handle_set_rpi_playback_route(DBusConnection *conn, DBusMessage *msg, void *userdata);
static void send_volume_changed_signal(DBusConnection *conn, const char *direction, const char *volume_type, const uint32_t volume_level);
static pa_dbus_arg_info get_stream_info_args[] = { { "stream_type", "s", "in" },
{ "allowed", "b", "in" } };
static pa_dbus_arg_info discover_remote_device_args[] = { { "enable", "b", "in" } };
static pa_dbus_arg_info publish_local_device_args[] = { { "enable", "b", "in" } };
+static pa_dbus_arg_info set_rpi_playback_route_args[] = { { "type", "u", "in" } };
static const char* signature_args_for_in[] = {
"s", /* METHOD_HANDLER_GET_STREAM_INFO */
"u", /* METHOD_HANDLER_GET_DUCKING_STATE */
"sub", /* METHOD_HANDLER_SET_REMOTE_PERMISSION */
"b", /* METHOD_HANDLER_DISCOVER_REMOTE_DEVICE */
- "b" /* METHOD_HANDLER_PUBLISH_LOCAL_DEVICE */
+ "b", /* METHOD_HANDLER_PUBLISH_LOCAL_DEVICE */
+ "u", /* METHOD_HANDLER_SET_RPI_PLAYBACK_ROUTE */
};
static pa_dbus_method_handler method_handlers[METHOD_HANDLER_MAX] = {
.arguments = publish_local_device_args,
.n_arguments = sizeof(publish_local_device_args) / sizeof(pa_dbus_arg_info),
.receive_cb = handle_publish_local_device },
+ [METHOD_HANDLER_SET_RPI_PLAYBACK_ROUTE] = {
+ .method_name = STREAM_MANAGER_METHOD_NAME_SET_RPI_PLAYBACK_ROUTE,
+ .arguments = set_rpi_playback_route_args,
+ .n_arguments = sizeof(set_rpi_playback_route_args) / sizeof(pa_dbus_arg_info),
+ .receive_cb = handle_set_rpi_playback_route }
};
static int get_stream_type(const char *direction, stream_type_t *stream_type) {
"org.tizen.multimedia.audio.Internal");
}
+static void handle_set_rpi_playback_route(DBusConnection *conn, DBusMessage *msg, void *userdata) {
+ pa_stream_manager *m = (pa_stream_manager *)userdata;
+ dbus_uint32_t type;
+ hal_route_option route_option;
+
+ pa_assert(conn);
+ pa_assert(msg);
+ pa_assert(m);
+
+ pa_assert_se(dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_UINT32, &type,
+ DBUS_TYPE_INVALID));
+
+ pa_log_info("setting rpi playback route(%u)", type);
+
+ memset(&route_option, 0, sizeof(hal_route_option));
+ route_option.role = STREAM_ROLE_MEDIA;
+ route_option.name = "rpi playback route";
+ route_option.value = (int32_t)type;
+
+ if (pa_hal_interface_update_route_option(m->hal, &route_option) == 0)
+ pa_dbus_send_empty_reply(conn, msg);
+ else
+ pa_dbus_send_error(conn, msg, DBUS_ERROR_FAILED, "%s",
+ "org.tizen.multimedia.audio.Internal");
+}
+
static DBusHandlerResult handle_methods(DBusConnection *conn, DBusMessage *msg, void *userdata) {
int idx = 0;
pa_stream_manager *m = (pa_stream_manager *)userdata;