- g_io_channel_set_buffered(channels[0], FALSE);
- g_io_channel_set_buffered(channels[1], FALSE);
-
- source_add(mydata->pipe_fds[0], G_IO_IN | G_IO_ERR, 40, receive_data,
- session_device_id);
-
- /* Run the demo thread. */
- g_thread_init(NULL);
- thread_running = 1;
- my_thread =
- g_thread_create((GThreadFunc)thread_func, mydata, TRUE, NULL);
- if (!my_thread)
- return SIGROK_ERR;
-
- packet = malloc(sizeof(struct datafeed_packet));
- header = malloc(sizeof(struct datafeed_header));
- if (!packet || !header)
- return SIGROK_ERR_MALLOC;
-
- packet->type = DF_HEADER;
- packet->length = sizeof(struct datafeed_header);
- packet->payload = (unsigned char *)header;
- header->feed_version = 1;
- gettimeofday(&header->starttime, NULL);
- header->samplerate = cur_samplerate;
- header->protocol_id = PROTO_RAW;
- header->num_logic_probes = NUM_PROBES;
- header->num_analog_probes = 0;
- session_bus(session_device_id, packet);
- free(header);
- free(packet);
-
- return SIGROK_OK;
+ g_io_channel_set_buffered(devc->channels[0], FALSE);
+ g_io_channel_set_buffered(devc->channels[1], FALSE);
+
+ sr_session_source_add_channel(devc->channels[0], G_IO_IN | G_IO_ERR,
+ 40, receive_data, devc);
+
+ /* Send header packet to the session bus. */
+ std_session_send_df_header(cb_data, DRIVER_LOG_DOMAIN);
+
+ /* We use this timestamp to decide how many more samples to send. */
+ devc->starttime = g_get_monotonic_time();
+
+ return SR_OK;