mirror of https://github.com/wb2osz/direwolf.git
Add support for full CTCSS and DCS beacon options
This commit is contained in:
parent
e41a7f2278
commit
2b236d794e
|
@ -892,7 +892,7 @@ static void beacon_send (int j, dwgps_info_t *gpsinfo)
|
||||||
bp->symtab, bp->symbol,
|
bp->symtab, bp->symbol,
|
||||||
bp->power, bp->height, bp->gain, bp->dir,
|
bp->power, bp->height, bp->gain, bp->dir,
|
||||||
G_UNKNOWN, G_UNKNOWN, /* course, speed */
|
G_UNKNOWN, G_UNKNOWN, /* course, speed */
|
||||||
bp->freq, bp->tone, bp->offset,
|
bp->freq, bp->tone_type, bp->tone, bp->offset,
|
||||||
super_comment,
|
super_comment,
|
||||||
info, sizeof(info));
|
info, sizeof(info));
|
||||||
strlcat (beacon_text, info, sizeof(beacon_text));
|
strlcat (beacon_text, info, sizeof(beacon_text));
|
||||||
|
@ -904,7 +904,7 @@ static void beacon_send (int j, dwgps_info_t *gpsinfo)
|
||||||
bp->symtab, bp->symbol,
|
bp->symtab, bp->symbol,
|
||||||
bp->power, bp->height, bp->gain, bp->dir,
|
bp->power, bp->height, bp->gain, bp->dir,
|
||||||
G_UNKNOWN, G_UNKNOWN, /* course, speed */
|
G_UNKNOWN, G_UNKNOWN, /* course, speed */
|
||||||
bp->freq, bp->tone, bp->offset, super_comment,
|
bp->freq, bp-> tone_type, bp->tone, bp->offset, super_comment,
|
||||||
info, sizeof(info));
|
info, sizeof(info));
|
||||||
strlcat (beacon_text, info, sizeof(beacon_text));
|
strlcat (beacon_text, info, sizeof(beacon_text));
|
||||||
break;
|
break;
|
||||||
|
@ -935,7 +935,7 @@ static void beacon_send (int j, dwgps_info_t *gpsinfo)
|
||||||
bp->symtab, bp->symbol,
|
bp->symtab, bp->symbol,
|
||||||
bp->power, bp->height, bp->gain, bp->dir,
|
bp->power, bp->height, bp->gain, bp->dir,
|
||||||
coarse, (int)roundf(gpsinfo->speed_knots),
|
coarse, (int)roundf(gpsinfo->speed_knots),
|
||||||
bp->freq, bp->tone, bp->offset,
|
bp->freq, bp->tone_type, bp->tone, bp->offset,
|
||||||
super_comment,
|
super_comment,
|
||||||
info, sizeof(info));
|
info, sizeof(info));
|
||||||
strlcat (beacon_text, info, sizeof(beacon_text));
|
strlcat (beacon_text, info, sizeof(beacon_text));
|
||||||
|
|
14
src/config.c
14
src/config.c
|
@ -5663,6 +5663,7 @@ static int beacon_options(char *cmd, struct beacon_s *b, int line, struct audio_
|
||||||
b->symtab = '/';
|
b->symtab = '/';
|
||||||
b->symbol = '-'; /* house */
|
b->symbol = '-'; /* house */
|
||||||
b->freq = G_UNKNOWN;
|
b->freq = G_UNKNOWN;
|
||||||
|
b->tone_type = 'T';
|
||||||
b->tone = G_UNKNOWN;
|
b->tone = G_UNKNOWN;
|
||||||
b->offset = G_UNKNOWN;
|
b->offset = G_UNKNOWN;
|
||||||
b->source = NULL;
|
b->source = NULL;
|
||||||
|
@ -5913,7 +5914,18 @@ static int beacon_options(char *cmd, struct beacon_s *b, int line, struct audio_
|
||||||
b->freq = atof(value);
|
b->freq = atof(value);
|
||||||
}
|
}
|
||||||
else if (strcasecmp(keyword, "TONE") == 0) {
|
else if (strcasecmp(keyword, "TONE") == 0) {
|
||||||
b->tone = atof(value);
|
b->tone_type = 'T';
|
||||||
|
/* Try the legacy tone config, just a number */
|
||||||
|
if((b->tone = atof(value)) == 0) {
|
||||||
|
/* Legacy parsing failed, try with leading type char */
|
||||||
|
if(sscanf(value, "%c%f", &b->tone_type, &b->tone) != 2) {
|
||||||
|
/* That failed. Bad tone format, set to no tone */
|
||||||
|
b->tone_type = 'T';
|
||||||
|
b->tone = 0;
|
||||||
|
text_color_set(DW_COLOR_ERROR);
|
||||||
|
dw_printf ("Config file, line %d: Bad tone format, %s.\n", line, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (strcasecmp(keyword, "OFFSET") == 0 || strcasecmp(keyword, "OFF") == 0) {
|
else if (strcasecmp(keyword, "OFFSET") == 0 || strcasecmp(keyword, "OFF") == 0) {
|
||||||
b->offset = atof(value);
|
b->offset = atof(value);
|
||||||
|
|
|
@ -221,6 +221,7 @@ struct misc_config_s {
|
||||||
char dir[3]; /* 1 or 2 of N,E,W,S, or empty for omni. */
|
char dir[3]; /* 1 or 2 of N,E,W,S, or empty for omni. */
|
||||||
|
|
||||||
float freq; /* MHz. */
|
float freq; /* MHz. */
|
||||||
|
char tone_type; /* Tone(T), Tone Squelch(C) or DCS(D) */
|
||||||
float tone; /* Hz. */
|
float tone; /* Hz. */
|
||||||
float offset; /* MHz. */
|
float offset; /* MHz. */
|
||||||
|
|
||||||
|
|
|
@ -1495,7 +1495,7 @@ void app_process_rec_packet (int chan, int subchan, int slice, packet_t pp, alev
|
||||||
// Unknown not handled properly.
|
// Unknown not handled properly.
|
||||||
// Should encode_object take floating point here?
|
// Should encode_object take floating point here?
|
||||||
(int)(A.g_course+0.5), (int)(DW_MPH_TO_KNOTS(A.g_speed_mph)+0.5),
|
(int)(A.g_course+0.5), (int)(DW_MPH_TO_KNOTS(A.g_speed_mph)+0.5),
|
||||||
0, 0, 0, A.g_comment, // freq, tone, offset
|
0, 'T', 0, 0, A.g_comment, // freq, tone_type, tone, offset
|
||||||
ais_obj_info, sizeof(ais_obj_info));
|
ais_obj_info, sizeof(ais_obj_info));
|
||||||
|
|
||||||
snprintf (ais_obj_packet, sizeof(ais_obj_packet), "%s>%s%1d%1d:%s", A.g_src, APP_TOCALL, MAJOR_VERSION, MINOR_VERSION, ais_obj_info);
|
snprintf (ais_obj_packet, sizeof(ais_obj_packet), "%s>%s%1d%1d:%s", A.g_src, APP_TOCALL, MAJOR_VERSION, MINOR_VERSION, ais_obj_info);
|
||||||
|
|
|
@ -405,6 +405,7 @@ static int cse_spd_data_extension (int course, int speed, char *presult)
|
||||||
* Purpose: Put frequency specification in beginning of comment field.
|
* Purpose: Put frequency specification in beginning of comment field.
|
||||||
*
|
*
|
||||||
* Inputs: freq - MHz.
|
* Inputs: freq - MHz.
|
||||||
|
* tone_type - T/Tone, C/Tone Squelch, D/DCS
|
||||||
* tone - Hz.
|
* tone - Hz.
|
||||||
* offset - MHz.
|
* offset - MHz.
|
||||||
*
|
*
|
||||||
|
@ -430,7 +431,7 @@ static int cse_spd_data_extension (int course, int speed, char *presult)
|
||||||
*----------------------------------------------------------------*/
|
*----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
static int frequency_spec (float freq, float tone, float offset, char *presult)
|
static int frequency_spec (float freq, char tone_type, float tone, float offset, char *presult)
|
||||||
{
|
{
|
||||||
int result_size = 24; // TODO: add as parameter.
|
int result_size = 24; // TODO: add as parameter.
|
||||||
|
|
||||||
|
@ -456,7 +457,15 @@ static int frequency_spec (float freq, float tone, float offset, char *presult)
|
||||||
strlcpy (stemp, "Toff ", sizeof (stemp));
|
strlcpy (stemp, "Toff ", sizeof (stemp));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf (stemp, sizeof(stemp), "T%03d ", (int)tone);
|
/* Tone enabled */
|
||||||
|
if (tone_type == 'T' || tone_type == 'C' || tone_type == 'D') {
|
||||||
|
/* CTCSS Tone or DCS Code*/
|
||||||
|
snprintf(stemp, sizeof(stemp), "%c%03d ", tone_type, (int)tone);
|
||||||
|
} else {
|
||||||
|
/* Error */
|
||||||
|
text_color_set(DW_COLOR_ERROR);
|
||||||
|
dw_printf("Invalid tone type\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strlcat (presult, stemp, result_size);
|
strlcat (presult, stemp, result_size);
|
||||||
|
@ -499,6 +508,7 @@ static int frequency_spec (float freq, float tone, float offset, char *presult)
|
||||||
* speed - knots. // TODO: should distinguish unknown(not revevant) vs. known zero.
|
* speed - knots. // TODO: should distinguish unknown(not revevant) vs. known zero.
|
||||||
*
|
*
|
||||||
* freq - MHz.
|
* freq - MHz.
|
||||||
|
* tone_type - T/C/D
|
||||||
* tone - Hz.
|
* tone - Hz.
|
||||||
* offset - MHz.
|
* offset - MHz.
|
||||||
*
|
*
|
||||||
|
@ -544,7 +554,7 @@ int encode_position (int messaging, int compressed, double lat, double lon, int
|
||||||
char symtab, char symbol,
|
char symtab, char symbol,
|
||||||
int power, int height, int gain, char *dir,
|
int power, int height, int gain, char *dir,
|
||||||
int course, int speed,
|
int course, int speed,
|
||||||
float freq, float tone, float offset,
|
float freq, char tone_type, float tone, float offset,
|
||||||
char *comment,
|
char *comment,
|
||||||
char *presult, size_t result_size)
|
char *presult, size_t result_size)
|
||||||
{
|
{
|
||||||
|
@ -590,7 +600,7 @@ int encode_position (int messaging, int compressed, double lat, double lon, int
|
||||||
/* Optional frequency spec. */
|
/* Optional frequency spec. */
|
||||||
|
|
||||||
if (freq != 0 || tone != 0 || offset != 0) {
|
if (freq != 0 || tone != 0 || offset != 0) {
|
||||||
result_len += frequency_spec (freq, tone, offset, presult + result_len);
|
result_len += frequency_spec (freq, tone_type, tone, offset, presult + result_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
presult[result_len] = '\0';
|
presult[result_len] = '\0';
|
||||||
|
@ -650,6 +660,7 @@ int encode_position (int messaging, int compressed, double lat, double lon, int
|
||||||
* speed - knots.
|
* speed - knots.
|
||||||
*
|
*
|
||||||
* freq - MHz.
|
* freq - MHz.
|
||||||
|
* tone_type - T/C/D
|
||||||
* tone - Hz.
|
* tone - Hz.
|
||||||
* offset - MHz.
|
* offset - MHz.
|
||||||
*
|
*
|
||||||
|
@ -687,7 +698,7 @@ int encode_object (char *name, int compressed, time_t thyme, double lat, double
|
||||||
char symtab, char symbol,
|
char symtab, char symbol,
|
||||||
int power, int height, int gain, char *dir,
|
int power, int height, int gain, char *dir,
|
||||||
int course, int speed,
|
int course, int speed,
|
||||||
float freq, float tone, float offset, char *comment,
|
float freq, char tone_type, float tone, float offset, char *comment,
|
||||||
char *presult, size_t result_size)
|
char *presult, size_t result_size)
|
||||||
{
|
{
|
||||||
aprs_object_t *p = (aprs_object_t *) presult;
|
aprs_object_t *p = (aprs_object_t *) presult;
|
||||||
|
@ -753,7 +764,7 @@ int encode_object (char *name, int compressed, time_t thyme, double lat, double
|
||||||
/* Optional frequency spec. */
|
/* Optional frequency spec. */
|
||||||
|
|
||||||
if (freq != 0 || tone != 0 || offset != 0) {
|
if (freq != 0 || tone != 0 || offset != 0) {
|
||||||
result_len += frequency_spec (freq, tone, offset, presult + result_len);
|
result_len += frequency_spec (freq, tone_type, tone, offset, presult + result_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
presult[result_len] = '\0';
|
presult[result_len] = '\0';
|
||||||
|
@ -857,7 +868,7 @@ int main (int argc, char *argv[])
|
||||||
/*********** Position ***********/
|
/*********** Position ***********/
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 0, 0, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 'T', 0, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
|
@ -865,50 +876,50 @@ int main (int argc, char *argv[])
|
||||||
// TODO: Need to test specifying some but not all.
|
// TODO: Need to test specifying some but not all.
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
50, 100, 6, "N", G_UNKNOWN, 0, 0, 0, 0, NULL, result, sizeof(result));
|
50, 100, 6, "N", G_UNKNOWN, 0, 0, 'T', 0, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&PHG7368") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&PHG7368") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
/* with freq & tone. minus offset, no offset, explicit simplex. */
|
/* with freq & tone. minus offset, no offset, explicit simplex. */
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 74.4, -0.6, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 'T', 74.4, -0.6, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 -060 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 -060 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 74.4, G_UNKNOWN, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 'T', 74.4, G_UNKNOWN, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 74.4, 0, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 146.955, 'T', 74.4, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 +000 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&146.955MHz T074 +000 ") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
/* with course/speed, freq, and comment! */
|
/* with course/speed, freq, and comment! */
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, 180, 55, 146.955, 74.4, -0.6, "River flooding", result, sizeof(result));
|
0, 0, 0, NULL, 180, 55, 146.955, 'T', 74.4, -0.6, "River flooding", result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz T074 -060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz T074 -060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
/* Course speed, no tone, + offset */
|
/* Course speed, no tone, + offset */
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, 180, 55, 146.955, G_UNKNOWN, 0.6, "River flooding", result, sizeof(result));
|
0, 0, 0, NULL, 180, 55, 146.955, 'T', G_UNKNOWN, 0.6, "River flooding", result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz +060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz +060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
/* Course speed, no tone, + offset + altitude */
|
/* Course speed, no tone, + offset + altitude */
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, 12345, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, 12345, 'D', '&',
|
||||||
0, 0, 0, NULL, 180, 55, 146.955, G_UNKNOWN, 0.6, "River flooding", result, sizeof(result));
|
0, 0, 0, NULL, 180, 55, 146.955, 'T', G_UNKNOWN, 0.6, "River flooding", result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz +060 /A=012345River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz +060 /A=012345River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, 12345, 'D', '&',
|
encode_position (0, 0, 42+34.61/60, -(71+26.47/60), 0, 12345, 'D', '&',
|
||||||
0, 0, 0, NULL, 180, 55, 146.955, 0, 0.6, "River flooding", result, sizeof(result));
|
0, 0, 0, NULL, 180, 55, 146.955, 'T', 0, 0.6, "River flooding", result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz Toff +060 /A=012345River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!4234.61ND07126.47W&180/055146.955MHz Toff +060 /A=012345River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
|
@ -917,7 +928,7 @@ int main (int argc, char *argv[])
|
||||||
/*********** Compressed position. ***********/
|
/*********** Compressed position. ***********/
|
||||||
|
|
||||||
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 0, 0, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 'T', 0, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!D8yKC<Hn[& !") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!D8yKC<Hn[& !") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
|
@ -925,14 +936,14 @@ int main (int argc, char *argv[])
|
||||||
/* with PHG. In this case it is converted to precomputed radio range. TODO: check on this. Is 27.4 correct? */
|
/* with PHG. In this case it is converted to precomputed radio range. TODO: check on this. Is 27.4 correct? */
|
||||||
|
|
||||||
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
50, 100, 6, "N", G_UNKNOWN, 0, 0, 0, 0, NULL, result, sizeof(result));
|
50, 100, 6, "N", G_UNKNOWN, 0, 0, 'T', 0, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!D8yKC<Hn[&{CG") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!D8yKC<Hn[&{CG") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
/* with course/speed, freq, and comment! Roundoff. 55 knots should be 63 MPH. we get 62. */
|
/* with course/speed, freq, and comment! Roundoff. 55 knots should be 63 MPH. we get 62. */
|
||||||
|
|
||||||
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
encode_position (0, 1, 42+34.61/60, -(71+26.47/60), 0, G_UNKNOWN, 'D', '&',
|
||||||
0, 0, 0, NULL, 180, 55, 146.955, 74.4, -0.6, "River flooding", result, sizeof(result));
|
0, 0, 0, NULL, 180, 55, 146.955, 'T', 74.4, -0.6, "River flooding", result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, "!D8yKC<Hn[&NUG146.955MHz T074 -060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, "!D8yKC<Hn[&NUG146.955MHz T074 -060 River flooding") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
|
@ -942,7 +953,7 @@ int main (int argc, char *argv[])
|
||||||
/*********** Object. ***********/
|
/*********** Object. ***********/
|
||||||
|
|
||||||
encode_object ("WB1GOF-C", 0, 0, 42+34.61/60, -(71+26.47/60), 0, 'D', '&',
|
encode_object ("WB1GOF-C", 0, 0, 42+34.61/60, -(71+26.47/60), 0, 'D', '&',
|
||||||
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 0, 0, NULL, result, sizeof(result));
|
0, 0, 0, NULL, G_UNKNOWN, 0, 0, 'T', 0, 0, NULL, result, sizeof(result));
|
||||||
dw_printf ("%s\n", result);
|
dw_printf ("%s\n", result);
|
||||||
if (strcmp(result, ";WB1GOF-C *111111z4234.61ND07126.47W&") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
if (strcmp(result, ";WB1GOF-C *111111z4234.61ND07126.47W&") != 0) { dw_printf ("ERROR! line %d\n", __LINE__); errors++; }
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ int encode_position (int messaging, int compressed, double lat, double lon, int
|
||||||
char symtab, char symbol,
|
char symtab, char symbol,
|
||||||
int power, int height, int gain, char *dir,
|
int power, int height, int gain, char *dir,
|
||||||
int course, int speed_knots,
|
int course, int speed_knots,
|
||||||
float freq, float tone, float offset,
|
float freq, char tone_type, float tone, float offset,
|
||||||
char *comment,
|
char *comment,
|
||||||
char *presult, size_t result_size);
|
char *presult, size_t result_size);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ int encode_object (char *name, int compressed, time_t thyme, double lat, double
|
||||||
char symtab, char symbol,
|
char symtab, char symbol,
|
||||||
int power, int height, int gain, char *dir,
|
int power, int height, int gain, char *dir,
|
||||||
int course, int speed_knots,
|
int course, int speed_knots,
|
||||||
float freq, float tone, float offset, char *comment,
|
float freq, char tone_type, float tone, float offset, char *comment,
|
||||||
char *presult, size_t result_size);
|
char *presult, size_t result_size);
|
||||||
|
|
||||||
int encode_message (char *addressee, char *text, char *id, char *presult, size_t result_size);
|
int encode_message (char *addressee, char *text, char *id, char *presult, size_t result_size);
|
||||||
|
|
|
@ -847,7 +847,7 @@ static void xmit_object_report (int i, int first_time)
|
||||||
0,0,0,NULL, G_UNKNOWN, G_UNKNOWN, /* PHGD, Course/Speed */
|
0,0,0,NULL, G_UNKNOWN, G_UNKNOWN, /* PHGD, Course/Speed */
|
||||||
strlen(tt_user[i].freq) > 0 ? atof(tt_user[i].freq) : G_UNKNOWN,
|
strlen(tt_user[i].freq) > 0 ? atof(tt_user[i].freq) : G_UNKNOWN,
|
||||||
strlen(tt_user[i].ctcss) > 0 ? atof(tt_user[i].ctcss) : G_UNKNOWN,
|
strlen(tt_user[i].ctcss) > 0 ? atof(tt_user[i].ctcss) : G_UNKNOWN,
|
||||||
G_UNKNOWN, /* CTCSS */
|
'T', G_UNKNOWN, /* CTCSS */
|
||||||
info_comment, object_info, sizeof(object_info));
|
info_comment, object_info, sizeof(object_info));
|
||||||
|
|
||||||
strlcat (stemp, object_info, sizeof(stemp));
|
strlcat (stemp, object_info, sizeof(stemp));
|
||||||
|
|
|
@ -156,7 +156,7 @@ static void walk96 (int fix, double lat, double lon, float knots, float course,
|
||||||
'/', '=',
|
'/', '=',
|
||||||
G_UNKNOWN, G_UNKNOWN, G_UNKNOWN, "", // PHGd
|
G_UNKNOWN, G_UNKNOWN, G_UNKNOWN, "", // PHGd
|
||||||
(int)roundf(course), (int)roundf(knots),
|
(int)roundf(course), (int)roundf(knots),
|
||||||
445.925, 0, 0,
|
445.925, 'T', 0, 0,
|
||||||
comment,
|
comment,
|
||||||
info, sizeof(info));
|
info, sizeof(info));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue