implement cse/spd

pull/20/head
Federico Nabarlats 2020-07-21 20:20:31 -03:00
rodzic b13bc14747
commit e51951e1d4
2 zmienionych plików z 28 dodań i 1 usunięć

Wyświetl plik

@ -34,6 +34,9 @@ char latitude[9];
char longtitude[10];
char symbolTable = '/';
char symbol = 'n';
char speed[4] = "000";
char course[4] = "000";
uint8_t power = 10;
uint8_t height = 10;
@ -175,6 +178,16 @@ void APRS_setDirectivity(int s) {
}
}
void APRS_setCourse(int s){
int temp = s;
sprintf(course, "%03d", s);
}
void APRS_setSpeed(int s){
int temp = s;
sprintf(speed, "%03d", s);
}
void APRS_printSettings() {
Serial.println(F("LibAPRS Settings:"));
Serial.print(F("Callsign: ")); Serial.print(CALL); Serial.print(F("-")); Serial.println(CALL_SSID);
@ -222,10 +235,15 @@ void APRS_sendPkt(void *_buffer, size_t length) {
void APRS_sendLoc(void *_buffer, size_t length) {
size_t payloadLength = 20+length;
bool usePHG = false;
bool useCS = false;
if (power < 10 && height < 10 && gain < 10 && directivity < 9) {
usePHG = true;
payloadLength += 7;
}
else if ( speed[2] != '0' ){
useCS = true;
payloadLength += 7;
}
uint8_t *packet = (uint8_t*)malloc(payloadLength);
uint8_t *ptr = packet;
packet[0] = '=';
@ -246,6 +264,13 @@ void APRS_sendLoc(void *_buffer, size_t length) {
packet[26] = directivity+48;
ptr+=7;
}
if (useCS){
memcpy(ptr, course, 3);
packet[23] = '/';
ptr += 4;
memcpy(ptr, speed, 3);
ptr += 3;
}
if (length > 0) {
uint8_t *buffer = (uint8_t *)_buffer;
memcpy(ptr, buffer, length);
@ -345,4 +370,4 @@ int freeMemory() {
free_memory += freeListSize();
}
return free_memory;
}
}

Wyświetl plik

@ -28,6 +28,8 @@ void APRS_setPower(int s);
void APRS_setHeight(int s);
void APRS_setGain(int s);
void APRS_setDirectivity(int s);
void APRS_setCourse(int s);
void APRS_setSpeed(int s);
void APRS_sendPkt(void *_buffer, size_t length);
void APRS_sendLoc(void *_buffer, size_t length);