kopia lustrzana https://github.com/mikaelnousiainen/RS41ng
Fix degrees to DMH conversion for APRS to support longitudes > 127 and < -128. Use 16-bit signed values for degrees.
rodzic
c23c1569d3
commit
da2743e4d1
|
@ -4,19 +4,19 @@
|
|||
|
||||
volatile uint16_t aprs_packet_counter = 0;
|
||||
|
||||
void convert_degrees_to_dmh(long x, int8_t *degrees, uint8_t *minutes, uint8_t *h_minutes)
|
||||
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 = (int8_t) (x / 1000000);
|
||||
*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 = -*degrees;
|
||||
*degrees = (int16_t ) -*degrees;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "gps.h"
|
||||
#include "telemetry.h"
|
||||
|
||||
void convert_degrees_to_dmh(long x, int8_t *degrees, uint8_t *minutes, uint8_t *h_minutes);
|
||||
void convert_degrees_to_dmh(long x, int16_t *degrees, uint8_t *minutes, uint8_t *h_minutes);
|
||||
void aprs_generate_timestamp(char *timestamp, size_t length, telemetry_data *data);
|
||||
|
||||
extern volatile uint16_t aprs_packet_counter;
|
||||
|
|
|
@ -10,7 +10,7 @@ size_t aprs_generate_position(uint8_t *payload, size_t length, telemetry_data *d
|
|||
{
|
||||
char timestamp[12];
|
||||
|
||||
int8_t la_degrees, lo_degrees;
|
||||
int16_t la_degrees, lo_degrees;
|
||||
uint8_t la_minutes, la_h_minutes, lo_minutes, lo_h_minutes;
|
||||
|
||||
convert_degrees_to_dmh(data->gps.latitude_degrees_1000000 / 10, &la_degrees, &la_minutes, &la_h_minutes);
|
||||
|
|
|
@ -10,7 +10,7 @@ size_t aprs_generate_weather_report(uint8_t *payload, size_t length, telemetry_d
|
|||
{
|
||||
char timestamp[12];
|
||||
|
||||
int8_t la_degrees, lo_degrees;
|
||||
int16_t la_degrees, lo_degrees;
|
||||
uint8_t la_minutes, la_h_minutes, lo_minutes, lo_h_minutes;
|
||||
|
||||
convert_degrees_to_dmh(data->gps.latitude_degrees_1000000 / 10, &la_degrees, &la_minutes, &la_h_minutes);
|
||||
|
|
Ładowanie…
Reference in New Issue