Skip to content
Snippets Groups Projects
frontend_tracker.c 834 B
Newer Older
#include <err.h>
#include <string.h>
#include <stdio.h>

#include "frontend_tracker.h"

#define MAGIC "TRACKERDATA"

int frontend_track(
		struct backend_conn * conn,
		struct frontend_tracker_data * data)
{
	ucart_backendWrite(conn, MAGIC "\n");

	char * line;
	for (;;) {
		line = ucart_backendGetline(conn);
		if (line == NULL) {
			warnx("Line not returned from backend");
			return 1;
		}

		if (strncmp(line, MAGIC, strlen(MAGIC)) == 0) {
			break;
		}
	}

	if (strncmp(line, MAGIC " ERROR", strlen(MAGIC " ERROR")) == 0) {
GroundStation's avatar
GroundStation committed
		warnx("Backend returned an error: %s", strstr(line, "ERROR"));
		return 1;
	}

	/* Line format: Height Lat Long Pitch Roll Yaw */
	sscanf(line, MAGIC " %lf %lf %lf %lf %lf %lf ",
			&data->height,
			&data->lateral,
			&data->longitudinal,
			&data->pitch,
			&data->roll,
			&data->yaw);
	return 0;
}