/** * Send a chunk of logic sample data to a running decoder session. * * @param start_samplenum The sample number of the first sample in this chunk. * @param inbuf Pointer to sample data. * @param inbuf Length in bytes of the buffer. * * @return SRD_OK upon success, a (negative) error code otherwise. */ SRD_API int srd_session_send(uint64_t start_samplenum, const uint8_t *inbuf, uint64_t inbuflen) { GSList *d; int ret; srd_dbg("Calling decode() on all instances with starting sample " "number %" PRIu64 ", %" PRIu64 " bytes at 0x%p", start_samplenum, inbuflen, inbuf); for (d = di_list; d; d = d->next) { if ((ret = srd_inst_decode(start_samplenum, d->data, inbuf, inbuflen)) != SRD_OK) return ret; } return SRD_OK; }
/** * Send a chunk of logic sample data to a running decoder session. * * If no channel map has been set up, the logic samples must be arranged * 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 '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.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, uint64_t unitsize) { GSList *d; int ret; if (session_is_valid(sess) != SRD_OK) { srd_err("Invalid session."); return SRD_ERR_ARG; } for (d = sess->di_list; d; d = d->next) { if ((ret = srd_inst_decode(d->data, start_samplenum, end_samplenum, inbuf, inbuflen, unitsize)) != SRD_OK) return ret; } return SRD_OK; }
/** * Send a chunk of logic sample data to a running decoder session. * * If no channel map has been set up, the logic samples must be arranged * 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. * * @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. * * @return SRD_OK upon success, a (negative) error code otherwise. * * @since 0.3.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) { GSList *d; int ret; if (session_is_valid(sess) != SRD_OK) { srd_err("Invalid session."); return SRD_ERR_ARG; } srd_dbg("Calling decode() on all instances with starting sample " "number %" PRIu64 ", %" PRIu64 " bytes at 0x%p", start_samplenum, inbuflen, inbuf); for (d = sess->di_list; d; d = d->next) { if ((ret = srd_inst_decode(d->data, start_samplenum, end_samplenum, inbuf, inbuflen)) != SRD_OK) return ret; } return SRD_OK; }