Example #1
0
/**
 * 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;
}
Example #2
0
/**
 * 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;
}
Example #3
0
/**
 * 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;
}