kopia lustrzana https://github.com/bristol-seds/pico-tracker
[aprs] add support for different paths, in particular ariss
rodzic
994dad3759
commit
8604bef59a
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
Ładowanie…
Reference in New Issue