kopia lustrzana https://github.com/Hamlib/Hamlib
Fix Yaesu DT command and add 2 or 4 digit timezone option
https://github.com/Hamlib/Hamlib/issues/1132Hamlib-4.5
rodzic
b63460f05f
commit
9c02b2ebc2
|
@ -1158,13 +1158,16 @@ Sets rig clock -- note that some rigs do not handle seconds or milliseconds.
|
|||
If you try to set sec/msec and rig does not support it you will get a debug warning message.
|
||||
Format is ISO8601,
|
||||
.EX
|
||||
Formats accepted
|
||||
YYYY-MM-DDTHH:MM:SS.SSS+ZZ (where +ZZ is either -/+ UTC offset)
|
||||
Formats accepted allow for 2-digit or 4-digit time zone
|
||||
YYYY-MM-DDTHH:MM:SS.SSS+ZZ (where +ZZ is either -/+ UTC offset HH)
|
||||
YYYY-MM-DDTHH:MM:SS.SSS+ZZZZ (where +ZZZZ is either -/+ UTC offset HHMM)
|
||||
YYYY-MM-DDTHH:MM:SS+ZZ
|
||||
YYYY-MM-DDTHH:MM:SS+ZZZZ
|
||||
YYYY-MM-DDTHH:MM+ZZ
|
||||
YYYY-MM-DDTHH:MM+ZZZZ
|
||||
YYYY-MM-DD (sets date only)
|
||||
Note: Icom rigs expect you to set local time and the hours off to UTC.
|
||||
So...4PM EST example would be 2021-12-01T16:00:00+05
|
||||
So...4PM EST example would be 2021-12-01T16:00:00+0500
|
||||
But...if you want to display GMT you must set the clock for GMT with zero UTC offset.
|
||||
Hopefully Icom will allow displaying either clock in the future
|
||||
|
||||
|
|
|
@ -263,9 +263,9 @@ static const yaesu_newcat_commands_t valid_commands[] =
|
|||
{"CT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"DA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"DN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"DT", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"DP", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||
{"DS", TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||
{"DT", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"ED", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||
{"EK", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE },
|
||||
{"EM", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE },
|
||||
|
@ -11557,6 +11557,8 @@ int newcat_set_clock(RIG *rig, int year, int month, int day, int hour, int min,
|
|||
RETURNFUNC2(err);
|
||||
}
|
||||
|
||||
if (hour < 0) RETURNFUNC2(RIG_OK);
|
||||
|
||||
SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "DT1%02d%02d%02d%c", hour, min,
|
||||
sec, cat_term);
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
typedef char ncboolean;
|
||||
|
||||
/* shared function version */
|
||||
#define NEWCAT_VER "20221021"
|
||||
#define NEWCAT_VER "20221025"
|
||||
|
||||
/* Hopefully large enough for future use, 128 chars plus '\0' */
|
||||
#define NEWCAT_DATA_LEN 129
|
||||
|
|
|
@ -23,6 +23,8 @@ int roofing_filter_main = 1;
|
|||
int roofing_filter_sub = 6;
|
||||
int width_main = 0;
|
||||
int width_sub = 0;
|
||||
int ex039 = 0;
|
||||
int lk = 0;
|
||||
|
||||
// ID 0310 == 310, Must drop leading zero
|
||||
typedef enum nc_rigid_e
|
||||
|
@ -401,6 +403,40 @@ int main(int argc, char *argv[])
|
|||
SNPRINTF(buf, sizeof(buf), "SH%c%02d;", buf[2],
|
||||
buf[2] == 0 ? width_main : width_sub);
|
||||
}
|
||||
else if (strcmp(buf, "EX039;") == 0)
|
||||
{
|
||||
SNPRINTF(buf, sizeof(buf), "EX039%d;", ex039);
|
||||
n = write(fd, buf, strlen(buf));
|
||||
}
|
||||
else if (strncmp(buf, "EX039", 3) == 0)
|
||||
{
|
||||
sscanf(buf, "EX039%d", &ex039);
|
||||
}
|
||||
else if (strcmp(buf, "LK;") == 0)
|
||||
{
|
||||
SNPRINTF(buf, sizeof(buf), "LK%d;", lk);
|
||||
n = write(fd, buf, strlen(buf));
|
||||
}
|
||||
else if (strncmp(buf, "LK", 3) == 0)
|
||||
{
|
||||
sscanf(buf, "LK%d", &lk);
|
||||
}
|
||||
else if (strncmp(buf, "DT0;", 4) == 0)
|
||||
{
|
||||
SNPRINTF(buf, sizeof(buf), "DT020221022;");
|
||||
n = write(fd, buf, strlen(buf));
|
||||
}
|
||||
else if (strncmp(buf, "DT1;", 4) == 0)
|
||||
{
|
||||
SNPRINTF(buf, sizeof(buf), "DT1222100;");
|
||||
n = write(fd, buf, strlen(buf));
|
||||
}
|
||||
else if (strncmp(buf, "DT2;", 4) == 0)
|
||||
{
|
||||
SNPRINTF(buf, sizeof(buf), "DT2+0500;");
|
||||
n = write(fd, buf, strlen(buf));
|
||||
}
|
||||
|
||||
|
||||
else if (strlen(buf) > 0)
|
||||
{
|
||||
|
|
|
@ -5172,9 +5172,9 @@ declare_proto_rig(get_cache)
|
|||
/* '0xf8' */
|
||||
declare_proto_rig(set_clock)
|
||||
{
|
||||
int year, mon, day, hour = -1, min = -1, sec = -1;
|
||||
double msec;
|
||||
int utc_offset = 0;
|
||||
int year, mon, day, hour = -1, min = -1, sec = 0;
|
||||
double msec=-1;
|
||||
int utc_offset = 0;
|
||||
int n;
|
||||
char timebuf[64];
|
||||
|
||||
|
@ -5196,22 +5196,35 @@ declare_proto_rig(set_clock)
|
|||
&hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
else if (arg1[16] == '+' || arg1[16] == '-')
|
||||
{ // YYYY-MM-DDTHH:MM+ZZ
|
||||
n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d%d", &year, &mon, &day, &hour,
|
||||
&min, &utc_offset);
|
||||
}
|
||||
else if (arg1[19] == '+' || arg1[19] == '-')
|
||||
{ // YYYY-MM-DDTHH:MM:SS+ZZ
|
||||
n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%d", &year, &mon, &day, &hour,
|
||||
&min, &sec, &utc_offset);
|
||||
}
|
||||
else if (arg1[23] == '+' || arg1[23] == '-')
|
||||
{ // YYYY-MM-DDTHH:MM:SS.SSS+ZZ
|
||||
n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day, &hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: '%s' not valid time format\n", __func__, arg1);
|
||||
RETURNFUNC2(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE,
|
||||
"%s: n=%d, %04d-%02d-%02dT%02d:%02d:%02d.%0.3f%s%02d\n",
|
||||
__func__, n, year, mon, day, hour, min, sec, msec, utc_offset >= 0 ? "+" : "-",
|
||||
(unsigned)abs(utc_offset));
|
||||
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: utc_offset=%d\n", __func__, utc_offset);
|
||||
|
||||
if (utc_offset < 24) { utc_offset *= 100; } // allow for minutes offset too
|
||||
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: utc_offset=%d\n", __func__, utc_offset);
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: utc_offset=%d\n", __func__, utc_offset);
|
||||
|
||||
RETURNFUNC(rig_set_clock(rig, year, mon, day, hour, min, sec, msec,
|
||||
utc_offset));
|
||||
|
|
Ładowanie…
Reference in New Issue