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
|
#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 encode_backlog(char* str, tracker_datapoint* dp, char* prefix);
|
||||||
|
|
||||||
void aprs_set_datapoint(tracker_datapoint* dp);
|
void aprs_set_datapoint(tracker_datapoint* dp);
|
||||||
void aprs_set_comment(char* comment);
|
void aprs_set_comment(char* comment);
|
||||||
void aprs_set_backlog_comment(tracker_datapoint* log_dp, char* prefix);
|
void aprs_set_backlog_comment(tracker_datapoint* log_dp, char* prefix);
|
||||||
void aprs_set_callsign(char* call);
|
void aprs_set_callsign(char* call);
|
||||||
|
void aprs_set_path(enum aprs_path path);
|
||||||
|
|
||||||
uint8_t aprs_start(void);
|
uint8_t aprs_start(void);
|
||||||
uint8_t aprs_tick(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;
|
struct tracker_datapoint* _dp = NULL;
|
||||||
char* _comment = NULL;
|
char* _comment = NULL;
|
||||||
char* _callsign = NULL;
|
char* _callsign = NULL;
|
||||||
|
char* _path_str = NULL;
|
||||||
|
uint8_t _path_id = 0;
|
||||||
char backlog_comment[BACKLOG_COMMENT_LEN+100]; /* TEMP */
|
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) {
|
void aprs_set_datapoint(tracker_datapoint* dp) {
|
||||||
_dp = dp;
|
_dp = dp;
|
||||||
}
|
}
|
||||||
|
@ -160,6 +166,19 @@ void aprs_set_backlog_comment(tracker_datapoint* log_dp, char* prefix) {
|
||||||
void aprs_set_callsign(char* call) {
|
void aprs_set_callsign(char* call) {
|
||||||
_callsign = aprs_callsign(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
|
* START / TICK
|
||||||
|
@ -190,12 +209,16 @@ uint8_t aprs_start(void)
|
||||||
if (!_callsign) {
|
if (!_callsign) {
|
||||||
_callsign = aprs_callsign("xxxxxx");
|
_callsign = aprs_callsign("xxxxxx");
|
||||||
}
|
}
|
||||||
|
/* Ensure path is set */
|
||||||
|
if (!_path_str) {
|
||||||
|
aprs_set_path(APRS_PATH_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
/* Encode the destination / source / path addresses */
|
/* Encode the destination / source / path addresses */
|
||||||
uint32_t addresses_len = sprintf(addresses, "%-6s%c%-6s%c%-6s%c",
|
uint32_t addresses_len = sprintf(addresses, "%-6s%c%-6s%c%-6s%c",
|
||||||
"APRS", 0,
|
"APRS", 0,
|
||||||
_callsign, APRS_SSID,
|
_callsign, APRS_SSID,
|
||||||
"WIDE2", 1);
|
_path_str, _path_id);
|
||||||
|
|
||||||
/* Prepare the aprs position report */
|
/* Prepare the aprs position report */
|
||||||
encode_latitude(compressed_lat, lat);
|
encode_latitude(compressed_lat, lat);
|
||||||
|
|
|
@ -179,8 +179,9 @@ void aprs_telemetry(struct tracker_datapoint* dp)
|
||||||
/* Set location */
|
/* Set location */
|
||||||
aprs_set_datapoint(dp);
|
aprs_set_datapoint(dp);
|
||||||
|
|
||||||
/* Set callsign */
|
/* Set callsign and path */
|
||||||
aprs_set_callsign(call);
|
aprs_set_callsign(call);
|
||||||
|
aprs_set_path(APRS_PATH_WIDE2_1);
|
||||||
|
|
||||||
/* Set comment */
|
/* Set comment */
|
||||||
backlog_dp_ptr = get_backlog();
|
backlog_dp_ptr = get_backlog();
|
||||||
|
|
Ładowanie…
Reference in New Issue