diff options
author | Uwe Hermann <uwe@hermann-uwe.de> | 2015-08-20 19:36:12 +0200 |
---|---|---|
committer | Uwe Hermann <uwe@hermann-uwe.de> | 2015-08-20 20:20:34 +0200 |
commit | cda2d36cfeed3f921252ffa95377529d6bdc074b (patch) | |
tree | 6a57288ffac64e0166858a944913148be7e58861 /session.c | |
parent | bbe1b715a71536e38a2b7e2362dbd8827a18ec1f (diff) | |
download | libsigrokdecode-cda2d36cfeed3f921252ffa95377529d6bdc074b.tar.gz libsigrokdecode-cda2d36cfeed3f921252ffa95377529d6bdc074b.zip |
Pass unitsize per sample chunk.
Don't pass unitsize to srd_inst_channel_set_all(), have that only
set the channel map. Instead, srd_session_send() now has a parameter
for the unitsize which is passed with every new chunk to be decoded.
This is in preparation to fix issues with devices or files which
have a unitsize != 1 and where the "guessed" unitsize based on the
number of channels is not correct.
This also allows for (potential) future changes where every chunk can
indeed have a different unitsize.
This fixes (parts of) bug #352.
Diffstat (limited to 'session.c')
-rw-r--r-- | session.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -212,23 +212,24 @@ SRD_API int srd_session_metadata_set(struct srd_session *sess, int key, * in channel order, in the least amount of space possible. The default * channel set consists of all required channels + all optional channels. * - * The size of a sample in inbuf is the unit size passed to - * srd_inst_channel_set_all(). If no channel map has been configured, it is - * the minimum number of bytes needed to store the default channels. + * The size of a sample in inbuf is 'unitsize' bytes. If no channel map + * has been configured, it is the minimum number of bytes needed to store + * the default channels. * * @param sess The session to use. * @param start_samplenum The sample number of the first sample in this chunk. * @param end_samplenum The sample number of the last sample in this chunk. * @param inbuf Pointer to sample data. * @param inbuflen Length in bytes of the buffer. + * @param unitsize The number of bytes per sample. * * @return SRD_OK upon success, a (negative) error code otherwise. * - * @since 0.3.0 + * @since 0.4.0 */ SRD_API int srd_session_send(struct srd_session *sess, uint64_t start_samplenum, uint64_t end_samplenum, - const uint8_t *inbuf, uint64_t inbuflen) + const uint8_t *inbuf, uint64_t inbuflen, uint64_t unitsize) { GSList *d; int ret; @@ -240,7 +241,7 @@ SRD_API int srd_session_send(struct srd_session *sess, for (d = sess->di_list; d; d = d->next) { if ((ret = srd_inst_decode(d->data, start_samplenum, - end_samplenum, inbuf, inbuflen)) != SRD_OK) + end_samplenum, inbuf, inbuflen, unitsize)) != SRD_OK) return ret; } |