struct bt_connection;
enum bt_graph_status {
+ BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION = 111,
/** Canceled. */
BT_GRAPH_STATUS_CANCELED = 125,
/** No sink can consume at the moment. */
/** Downstream component does not support multiple inputs. */
BT_GRAPH_STATUS_END = 1,
BT_GRAPH_STATUS_OK = 0,
- /** Component is already part of another graph. */
- BT_GRAPH_STATUS_ALREADY_IN_A_GRAPH = -2,
/** Invalid arguments. */
BT_GRAPH_STATUS_INVALID = -22,
/** No sink in graph. */
BT_GRAPH_STATUS_NO_SINK = -6,
/** General error. */
BT_GRAPH_STATUS_ERROR = -1,
+ BT_GRAPH_STATUS_NOMEM = -12,
};
typedef void (*bt_graph_port_added_listener)(struct bt_port *port,
extern struct bt_graph *bt_graph_create(void);
+extern enum bt_graph_status bt_graph_add_component(
+ struct bt_graph *graph,
+ struct bt_component_class *component_class,
+ const char *name, struct bt_value *params,
+ struct bt_component **component);
+
+extern enum bt_graph_status bt_graph_add_component_with_init_method_data(
+ struct bt_graph *graph,
+ struct bt_component_class *component_class,
+ const char *name, struct bt_value *params,
+ void *init_method_data,
+ struct bt_component **component);
+
/**
* Creates a connection between two components using the two ports specified
* and adds the connection and components (if not already added) to the graph.
*/
-extern struct bt_connection *bt_graph_connect_ports(struct bt_graph *graph,
- struct bt_port *upstream,
- struct bt_port *downstream);
+extern enum bt_graph_status bt_graph_connect_ports(struct bt_graph *graph,
+ struct bt_port *upstream, struct bt_port *downstream,
+ struct bt_connection **connection);
/**
* Run graph to completion or until a single sink is left and "AGAIN" is received.
*/
extern enum bt_graph_status bt_graph_consume(struct bt_graph *graph);
-extern enum bt_graph_status bt_graph_add_port_added_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_port_added_listener(struct bt_graph *graph,
bt_graph_port_added_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_port_removed_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_port_removed_listener(struct bt_graph *graph,
bt_graph_port_removed_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_ports_connected_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_ports_connected_listener(struct bt_graph *graph,
bt_graph_ports_connected_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_ports_disconnected_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_ports_disconnected_listener(struct bt_graph *graph,
bt_graph_ports_disconnected_listener listener, void *data);
extern enum bt_graph_status bt_graph_cancel(struct bt_graph *graph);