Exemple #1
0
void mavlink_logbuffer_write(struct mavlink_logbuffer *lb, const struct mavlink_logmessage *elem)
{
	int end = (lb->start + lb->count) % lb->size;
	memcpy(&(lb->elems[end]), elem, sizeof(struct mavlink_logmessage));

	if (mavlink_logbuffer_is_full(lb)) {
		lb->start = (lb->start + 1) % lb->size; /* full, overwrite */

	} else {
		++lb->count;
	}
}
Exemple #2
0
__EXPORT void mavlink_logbuffer_vasprintf(struct mavlink_logbuffer *lb, int severity, const char *fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    int end = (lb->start + lb->count) % lb->size;
    lb->elems[end].severity = severity;
    vsnprintf(lb->elems[end].text, sizeof(lb->elems[0].text), fmt, ap);
    va_end(ap);

    /* increase count */
    if (mavlink_logbuffer_is_full(lb)) {
        lb->start = (lb->start + 1) % lb->size; /* full, overwrite */

    } else {
        ++lb->count;
    }
}