RS41ng/src/codecs/aprs/aprs.c

27 wiersze
730 B
C

#include <stdio.h>
#include <string.h>
#include "aprs.h"
volatile uint16_t aprs_packet_counter = 0;
void convert_degrees_to_dmh(long x, int16_t *degrees, uint8_t *minutes, uint8_t *h_minutes)
{
uint8_t sign = (uint8_t) (x > 0 ? 1 : 0);
if (!sign) {
x = -(x);
}
*degrees = (int16_t) (x / 1000000);
x = x - (*degrees * 1000000);
x = (x) * 60 / 10000;
*minutes = (uint8_t) (x / 100);
*h_minutes = (uint8_t) (x - (*minutes * 100));
if (!sign) {
*degrees = (int16_t ) -*degrees;
}
}
void aprs_generate_timestamp(char *timestamp, size_t length, telemetry_data *data)
{
snprintf(timestamp, length, "/%02d%02d%02dz", data->gps.hours, data->gps.minutes, data->gps.seconds);
}