- if (o->device->plugin) {
- /* TODO: Handle num_probes == 0, too many probes, etc. */
- samplerate = *((uint64_t *) o->device->plugin->get_device_info(
- o->device->plugin_index, DI_CUR_SAMPLERATE));
- if ((samplerate_s = sigrok_samplerate_string(samplerate)) == NULL)
- return SIGROK_ERR;
- snprintf(comment, 127, vcd_header_comment, ctx->num_enabled_probes,
- num_probes, samplerate_s);
+ /* timestamp */
+ t = time(NULL);
+ timestamp = strdup(ctime(&t));
+ timestamp[strlen(timestamp)-1] = 0;
+ g_string_printf(ctx->header, "$date %s $end\n", timestamp);
+ free(timestamp);
+
+ /* generator */
+ g_string_append_printf(ctx->header, "$version %s %s $end\n",
+ PACKAGE, PACKAGE_VERSION);
+
+ if (o->device->plugin && sr_device_has_hwcap(o->device, SR_HWCAP_SAMPLERATE)) {
+ ctx->samplerate = *((uint64_t *) o->device->plugin->get_device_info(
+ o->device->plugin_index, SR_DI_CUR_SAMPLERATE));
+ if (!((samplerate_s = sr_samplerate_string(ctx->samplerate)))) {
+ g_string_free(ctx->header, TRUE);
+ free(ctx);
+ return SR_ERR;
+ }
+ g_string_append_printf(ctx->header, vcd_header_comment,
+ ctx->num_enabled_probes, num_probes, samplerate_s);