X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=25ac45b6235d166eeb735b50e7b49ac399969e45;hb=5e1fb33469841b194e606752b865fa0d08b99067;hp=61fb0f7d5e46948c5cbb4574cff9176881884350;hpb=000f504f246f713a86d653e0d6ee6c98a07e74fd;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index 61fb0f7d..25ac45b6 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -881,8 +881,7 @@ shared_ptr SessionDevice::get_shared_from_this() Session::Session(shared_ptr context) : UserOwned(_structure), - _context(context), - _saving(false) + _context(context) { check(sr_session_new(context->_structure, &_structure)); _context->_session = this; @@ -891,8 +890,7 @@ Session::Session(shared_ptr context) : Session::Session(shared_ptr context, string filename) : UserOwned(_structure), _context(context), - _filename(filename), - _saving(false) + _filename(filename) { check(sr_session_load(context->_structure, filename.c_str(), &_structure)); GSList *dev_list; @@ -970,93 +968,6 @@ void Session::stop() check(sr_session_stop(_structure)); } -void Session::begin_save(string filename) -{ - _saving = true; - _save_initialized = false; - _save_filename = filename; - _save_samplerate = 0; -} - -void Session::append(shared_ptr packet) -{ - if (!_saving) - throw Error(SR_ERR); - - switch (packet->_structure->type) - { - case SR_DF_META: - { - auto meta = (const struct sr_datafeed_meta *) - packet->_structure->payload; - - for (auto l = meta->config; l; l = l->next) - { - auto config = (struct sr_config *) l->data; - if (config->key == SR_CONF_SAMPLERATE) - _save_samplerate = g_variant_get_uint64(config->data); - } - - break; - } - case SR_DF_LOGIC: - { - if (_save_samplerate == 0) - { - GVariant *samplerate; - - check(sr_config_get(sr_dev_inst_driver_get(packet->_device->_structure), - packet->_device->_structure, NULL, SR_CONF_SAMPLERATE, - &samplerate)); - - _save_samplerate = g_variant_get_uint64(samplerate); - - g_variant_unref(samplerate); - } - - if (!_save_initialized) - { - vector> save_channels; - - for (auto channel : packet->_device->channels()) - if (channel->_structure->enabled && - channel->_structure->type == SR_CHANNEL_LOGIC) - save_channels.push_back(channel); - - auto channels = g_new(char *, save_channels.size()); - - int i = 0; - for (auto channel : save_channels) - channels[i++] = channel->_structure->name; - channels[i] = NULL; - - int ret = sr_session_save_init(_structure, _save_filename.c_str(), - _save_samplerate, channels); - - g_free(channels); - - if (ret != SR_OK) - throw Error(ret); - - _save_initialized = true; - } - - auto logic = (const struct sr_datafeed_logic *) - packet->_structure->payload; - - check(sr_session_append(_structure, _save_filename.c_str(), - (uint8_t *) logic->data, logic->unitsize, - logic->length / logic->unitsize)); - } - } -} - -void Session::append(void *data, size_t length, unsigned int unit_size) -{ - check(sr_session_append(_structure, _save_filename.c_str(), - (uint8_t *) data, unit_size, length)); -} - static void datafeed_callback(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *pkt, void *cb_data) {