[aprs] add support for different paths, in particular ariss

main-solar-only
Richard Meadows 2016-03-24 12:40:03 +00:00
rodzic 994dad3759
commit 8604bef59a
3 zmienionych plików z 39 dodań i 2 usunięć

Wyświetl plik

@ -69,12 +69,25 @@ static inline char* aprs_callsign(char* call) {
#endif
/**
* Path type
*/
enum aprs_path {
APRS_PATH_DEFAULT,
APRS_PATH_WIDE2_1,
APRS_PATH_ARISS,
};
void encode_backlog(char* str, tracker_datapoint* dp, char* prefix);
void aprs_set_datapoint(tracker_datapoint* dp);
void aprs_set_comment(char* comment);
void aprs_set_backlog_comment(tracker_datapoint* log_dp, char* prefix);
void aprs_set_callsign(char* call);
void aprs_set_path(enum aprs_path path);
uint8_t aprs_start(void);
uint8_t aprs_tick(void);

Wyświetl plik

@ -146,7 +146,13 @@ void encode_backlog(char* str, tracker_datapoint* dp, char* prefix)
struct tracker_datapoint* _dp = NULL;
char* _comment = NULL;
char* _callsign = NULL;
char* _path_str = NULL;
uint8_t _path_id = 0;
char backlog_comment[BACKLOG_COMMENT_LEN+100]; /* TEMP */
char aprs_path_wide2[] = "WIDE2";
char aprs_path_ariss[] = "ARISS";
void aprs_set_datapoint(tracker_datapoint* dp) {
_dp = dp;
}
@ -160,6 +166,19 @@ void aprs_set_backlog_comment(tracker_datapoint* log_dp, char* prefix) {
void aprs_set_callsign(char* call) {
_callsign = aprs_callsign(call);
}
void aprs_set_path(enum aprs_path path) {
switch (path) {
default: /* WIDE2-1, this is the default */
case APRS_PATH_WIDE2_1:
_path_str = aprs_path_wide2;
_path_id = 1;
break;
case APRS_PATH_ARISS: /* ARISS Path */
_path_str = aprs_path_ariss;
_path_id =0;
break;
}
}
/**
* START / TICK
@ -190,12 +209,16 @@ uint8_t aprs_start(void)
if (!_callsign) {
_callsign = aprs_callsign("xxxxxx");
}
/* Ensure path is set */
if (!_path_str) {
aprs_set_path(APRS_PATH_DEFAULT);
}
/* Encode the destination / source / path addresses */
uint32_t addresses_len = sprintf(addresses, "%-6s%c%-6s%c%-6s%c",
"APRS", 0,
_callsign, APRS_SSID,
"WIDE2", 1);
_path_str, _path_id);
/* Prepare the aprs position report */
encode_latitude(compressed_lat, lat);

Wyświetl plik

@ -179,8 +179,9 @@ void aprs_telemetry(struct tracker_datapoint* dp)
/* Set location */
aprs_set_datapoint(dp);
/* Set callsign */
/* Set callsign and path */
aprs_set_callsign(call);
aprs_set_path(APRS_PATH_WIDE2_1);
/* Set comment */
backlog_dp_ptr = get_backlog();