kopia lustrzana https://github.com/Hamlib/Hamlib
Implement ISO8601 time standard in more places.
Debug time now shows localtime + utc offset Rigs that can set the clock now can set either local or utc time on the rig Icom rigs can only display clock#1 right now so users may want either local or utc So here are IC7300 examples rigctl -m 3073 -r com3 -s 115200 set_clock local rigctl -m 3073 -r com3 -s 115200 set_clock utcpull/891/head
rodzic
b11f2e4bbf
commit
674a9868d9
|
@ -226,7 +226,7 @@ void HAMLIB_API rig_debug(enum rig_debug_level_e debug_level,
|
|||
if (rig_debug_time_stamp)
|
||||
{
|
||||
char buf[256];
|
||||
fprintf(rig_debug_stream, "%s: ", date_strget(buf, sizeof(buf)));
|
||||
fprintf(rig_debug_stream, "%s: ", date_strget(buf, sizeof(buf), 1));
|
||||
}
|
||||
|
||||
vfprintf(rig_debug_stream, fmt, ap);
|
||||
|
|
23
src/misc.c
23
src/misc.c
|
@ -2423,19 +2423,30 @@ static struct tm *gmtime_r(const time_t *t, struct tm *r)
|
|||
#endif // _WIN32
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
char *date_strget(char *buf, int buflen)
|
||||
char *date_strget(char *buf, int buflen, int localtime)
|
||||
{
|
||||
char tmp[16];
|
||||
char tmpbuf[64];
|
||||
struct tm *mytm;
|
||||
time_t t;
|
||||
struct timeval tv;
|
||||
struct tm result;
|
||||
t = time(NULL);
|
||||
mytm = gmtime_r(&t, &result);
|
||||
strftime(buf, buflen, "%Y-%m-%d:%H:%M:%S.", mytm);
|
||||
|
||||
if (localtime)
|
||||
{
|
||||
mytm = localtime_r(&t, &result);
|
||||
}
|
||||
else
|
||||
{
|
||||
mytm = gmtime_r(&t, &result);
|
||||
}
|
||||
|
||||
strftime(buf, buflen, "%FT%T.", mytm);
|
||||
gettimeofday(&tv, NULL);
|
||||
sprintf(tmp, "%06ld", (long)tv.tv_usec);
|
||||
strcat(buf, tmp);
|
||||
sprintf(tmpbuf, "%06ld", (long)tv.tv_usec);
|
||||
strcat(buf, tmpbuf);
|
||||
strftime(tmpbuf, sizeof(tmpbuf), "%z", mytm);
|
||||
strcat(buf, tmpbuf);
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ extern HAMLIB_EXPORT(int) parse_hoststr(char *hoststr, char host[256], char port
|
|||
|
||||
extern HAMLIB_EXPORT(uint32_t) CRC32_function(uint8_t *buf, uint32_t len);
|
||||
|
||||
extern char *date_strget(char *buf, int buflen);
|
||||
extern char *date_strget(char *buf, int buflen, int localtime);
|
||||
|
||||
#ifdef PRId64
|
||||
/** \brief printf(3) format to be used for long long (64bits) type */
|
||||
|
|
|
@ -2174,7 +2174,8 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
|
||||
cache_show(rig, __func__, __LINE__);
|
||||
|
||||
if (*freq != 0 && (cache_ms_freq < rig->state.cache.timeout_ms || rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS))
|
||||
if (*freq != 0 && (cache_ms_freq < rig->state.cache.timeout_ms
|
||||
|| rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS))
|
||||
{
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: %s cache hit age=%dms, freq=%.0f\n", __func__,
|
||||
rig_strvfo(vfo), cache_ms_freq, *freq);
|
||||
|
@ -2497,6 +2498,7 @@ int HAMLIB_API rig_get_mode(RIG *rig,
|
|||
ELAPSED2;
|
||||
RETURNFUNC(RIG_OK);
|
||||
}
|
||||
|
||||
if ((*mode != RIG_MODE_NONE && cache_ms_mode < rig->state.cache.timeout_ms)
|
||||
&& cache_ms_width < rig->state.cache.timeout_ms)
|
||||
{
|
||||
|
@ -7199,7 +7201,7 @@ int HAMLIB_API rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie,
|
|||
__FILE__, __LINE__, cookie_save, time_curr - time_last_used);
|
||||
}
|
||||
|
||||
date_strget(cookie, cookie_len);
|
||||
date_strget(cookie, cookie_len, 0);
|
||||
size_t len = strlen(cookie);
|
||||
// add on our random number to ensure uniqueness
|
||||
// The cookie should never be longer then HAMLIB_COOKIE_SIZE
|
||||
|
|
|
@ -5221,11 +5221,32 @@ declare_proto_rig(set_clock)
|
|||
double msec;
|
||||
int utc_offset = 0;
|
||||
int n;
|
||||
char timebuf[64];
|
||||
|
||||
ENTERFUNC;
|
||||
|
||||
n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day, &hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
if (arg1 && strcasecmp(arg1, "local") == 0)
|
||||
{
|
||||
date_strget(timebuf, sizeof(timebuf), 1);
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: local time set = %s\n", __func__, timebuf);
|
||||
n = sscanf(timebuf, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day,
|
||||
&hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
}
|
||||
else if (arg1 && strcasecmp(arg1, "utc") == 0)
|
||||
{
|
||||
date_strget(timebuf, sizeof(timebuf), 0);
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: utc time set = %s\n", __func__, timebuf);
|
||||
n = sscanf(timebuf, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day,
|
||||
&hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day, &hour,
|
||||
&min, &sec, &msec, &utc_offset);
|
||||
}
|
||||
|
||||
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 ? "+" : "-",
|
||||
|
|
Ładowanie…
Reference in New Issue