Add some more LOCKs and astyle rig.c

pull/1297/head
Mike Black W9MDB 2023-05-19 23:45:36 -05:00
rodzic 9528132f81
commit e2a1a00f3a
1 zmienionych plików z 41 dodań i 7 usunięć

Wyświetl plik

@ -2119,6 +2119,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
LOCK(1); LOCK(1);
rig_debug(RIG_DEBUG_CACHE, "%s: depth=%d\n", __func__, rig->state.depth); rig_debug(RIG_DEBUG_CACHE, "%s: depth=%d\n", __func__, rig->state.depth);
if (rig->state.depth == 1) if (rig->state.depth == 1)
{ {
rig_debug(RIG_DEBUG_CACHE, "%s: %s\n", 1 ? "lock" : "unlock", __func__); rig_debug(RIG_DEBUG_CACHE, "%s: %s\n", 1 ? "lock" : "unlock", __func__);
@ -2936,6 +2937,8 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo)
HAMLIB_TRACE; HAMLIB_TRACE;
vfo_t vfo_save = rig->state.current_vfo; vfo_t vfo_save = rig->state.current_vfo;
LOCK(1);
if (vfo != RIG_VFO_CURR) { rig->state.current_vfo = vfo; } if (vfo != RIG_VFO_CURR) { rig->state.current_vfo = vfo; }
retcode = caps->set_vfo(rig, vfo); retcode = caps->set_vfo(rig, vfo);
@ -2984,6 +2987,7 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo)
retcode, retcode,
rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo));
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3052,6 +3056,7 @@ int HAMLIB_API rig_get_vfo(RIG *rig, vfo_t *vfo)
} }
HAMLIB_TRACE; HAMLIB_TRACE;
LOCK(1);
retcode = caps->get_vfo(rig, vfo); retcode = caps->get_vfo(rig, vfo);
if (retcode == RIG_OK) if (retcode == RIG_OK)
@ -3072,6 +3077,7 @@ int HAMLIB_API rig_get_vfo(RIG *rig, vfo_t *vfo)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3107,6 +3113,8 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
caps = rig->caps; caps = rig->caps;
LOCK(1);
switch (rig->state.pttport.type.ptt) switch (rig->state.pttport.type.ptt)
{ {
case RIG_PTT_RIG: case RIG_PTT_RIG:
@ -3120,6 +3128,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
if (caps->set_ptt == NULL) if (caps->set_ptt == NULL)
{ {
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(-RIG_ENIMPL); RETURNFUNC(-RIG_ENIMPL);
} }
@ -3138,6 +3147,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
if (retcode != RIG_OK) if (retcode != RIG_OK)
{ {
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3174,6 +3184,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
if (!caps->set_vfo) if (!caps->set_vfo)
{ {
LOCK(0);
ELAPSED2; ELAPSED2;
RETURNFUNC(-RIG_ENAVAIL); RETURNFUNC(-RIG_ENAVAIL);
} }
@ -3211,6 +3222,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
if (retcode != RIG_OK) if (retcode != RIG_OK)
{ {
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3443,6 +3455,8 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
caps = rig->caps; caps = rig->caps;
LOCK(1);
switch (rig->state.pttport.type.ptt) switch (rig->state.pttport.type.ptt)
{ {
case RIG_PTT_RIG: case RIG_PTT_RIG:
@ -3451,6 +3465,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
{ {
*ptt = rs->transmit ? RIG_PTT_ON : RIG_PTT_OFF; *ptt = rs->transmit ? RIG_PTT_ON : RIG_PTT_OFF;
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(RIG_OK); RETURNFUNC(RIG_OK);
} }
@ -3468,12 +3483,14 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
if (!caps->set_vfo) if (!caps->set_vfo)
{ {
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(-RIG_ENAVAIL); RETURNFUNC(-RIG_ENAVAIL);
} }
@ -3499,6 +3516,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
if (retcode != RIG_OK) if (retcode != RIG_OK)
{ {
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3520,6 +3538,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_SERIAL_RTS: case RIG_PTT_SERIAL_RTS:
@ -3535,6 +3554,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
rig->state.cache.ptt = *ptt; rig->state.cache.ptt = *ptt;
} }
LOCK(0);
ELAPSED2; ELAPSED2;
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3556,6 +3576,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
rig->state.cache.ptt = *ptt; rig->state.cache.ptt = *ptt;
elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET); elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET);
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_SERIAL_DTR: case RIG_PTT_SERIAL_DTR:
@ -3572,6 +3593,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3592,6 +3614,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
rig->state.cache.ptt = *ptt; rig->state.cache.ptt = *ptt;
elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET); elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET);
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_PARALLEL: case RIG_PTT_PARALLEL:
@ -3607,6 +3630,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3619,6 +3643,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_CM108: case RIG_PTT_CM108:
@ -3634,6 +3659,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
@ -3646,6 +3672,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_GPIO: case RIG_PTT_GPIO:
@ -3662,25 +3689,30 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
} }
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
} }
elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET); elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET);
retcode = gpio_ptt_get(&rig->state.pttport, ptt); retcode = gpio_ptt_get(&rig->state.pttport, ptt);
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(retcode); RETURNFUNC(retcode);
case RIG_PTT_NONE: case RIG_PTT_NONE:
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(-RIG_ENAVAIL); /* not available */ RETURNFUNC(-RIG_ENAVAIL); /* not available */
default: default:
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(-RIG_EINVAL); RETURNFUNC(-RIG_EINVAL);
} }
elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET); elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_SET);
ELAPSED2; ELAPSED2;
LOCK(0);
RETURNFUNC(RIG_OK); RETURNFUNC(RIG_OK);
} }
@ -7834,7 +7866,8 @@ HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char *send,
if (retval < 0) if (retval < 0)
{ {
// TODO: error handling? can writing to a pipe really fail in ways we can recover from? // TODO: error handling? can writing to a pipe really fail in ways we can recover from?
rig_debug(RIG_DEBUG_ERR, "%s: write_block_sync() failed, result=%d\n", __func__, retval); rig_debug(RIG_DEBUG_ERR, "%s: write_block_sync() failed, result=%d\n", __func__,
retval);
} }
} }
@ -7860,7 +7893,8 @@ HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char *send,
} }
else // we'll assume the provided terminator works else // we'll assume the provided terminator works
{ {
rig_debug(RIG_DEBUG_VERBOSE, "%s: reading frame terminated by 0x%x\n", __func__, *term); rig_debug(RIG_DEBUG_VERBOSE, "%s: reading frame terminated by 0x%x\n", __func__,
*term);
retval = read_string(&rs->rigport, buf, sizeof(buf), (const char *)term, retval = read_string(&rs->rigport, buf, sizeof(buf), (const char *)term,
1, 0, 1); 1, 0, 1);
} }