예제 #1
0
파일: measures.c 프로젝트: batt/StratoSpera
void measures_aprsFormat(char *buf, size_t len)
{
	const char *lat, *lon;
	if (gps_fixed())
	{
		lat = gps_aprsLat();
		lon = gps_aprsLon();
	}
	else
	{
		lat = "0000.00N";
		lon = "00000.00W";
	}

	char time[7];
	radio_time(time, sizeof(time));
	size_t cnt = snprintf(buf, len, "/%.6sh%s/%s>", time, lat, lon);
	if (cnt < len)
	{
		buf += cnt;
		len -= cnt;
		measures_printMeasures(buf, len);
	}
	else
		buf[len-1] = '\0';
}
예제 #2
0
void measures_aprsFormat(char *buf, size_t len)
{
	const char *lat, *lon;
	if (gps_fixed())
	{
		lat = gps_aprsLat();
		lon = gps_aprsLon();
	}
	else
	{
		lat = "0000.00N";
		lon = "00000.00W";
	}

	float x = measures_acceleration(MMA_X);
	float y = measures_acceleration(MMA_Y);
	float z = measures_acceleration(MMA_Z);

	float acc = sqrt(x * x + y * y + z * z);

	char time[7];
	radio_time(time, sizeof(time));

	snprintf(buf, len, "/%.6sh%s/%s>%ld;%.1f;%.0f;%.0f;%.1f;%.2f;%.2f;%d",
		time,
		lat, lon,
		gps_info()->altitude,
		sensor_read(ADC_T1),
		sensor_read(ADC_PRESS),
		sensor_read(ADC_HUMIDITY),
		measures_intTemp(),
		sensor_read(ADC_VIN),
		acc,
		hadarp_read()
	);

	buf[len - 1] = '\0';
}