+/**
+ * Debug helper.
+ *
+ * @param packet The packet to show debugging information for.
+ */
+static void datafeed_dump(struct sr_datafeed_packet *packet)
+{
+ struct sr_datafeed_logic *logic;
+
+ switch (packet->type) {
+ case SR_DF_HEADER:
+ sr_dbg("bus: received SR_DF_HEADER");
+ break;
+ case SR_DF_TRIGGER:
+ sr_dbg("bus: received SR_DF_TRIGGER");
+ break;
+ case SR_DF_LOGIC:
+ logic = packet->payload;
+ /* TODO: Check for logic != NULL. */
+ sr_dbg("bus: received SR_DF_LOGIC %" PRIu64 " bytes", logic->length);
+ break;
+ case SR_DF_END:
+ sr_dbg("bus: received SR_DF_END");
+ break;
+ default:
+ sr_dbg("bus: received unknown packet type %d", packet->type);
+ break;
+ }
+}
+
+/**
+ * Send a packet to whatever is listening on the datafeed bus.
+ *
+ * Hardware drivers use this to send a data packet to the frontend.
+ *
+ * @param dev TODO.
+ * @param packet The datafeed packet to send to the session bus.
+ *
+ * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments.
+ */
+SR_PRIV int sr_session_send(struct sr_dev *dev,
+ struct sr_datafeed_packet *packet)