| 158 | } |
| 159 | |
| 160 | int rig_set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) |
| 161 | { |
| 162 | int flag = HAMLIB_ELAPSED_SET; |
| 163 | struct rig_cache *cachep = CACHE(rig); |
| 164 | struct rig_state *rs = STATE(rig); |
| 165 | |
| 166 | if (rig_need_debug(RIG_DEBUG_CACHE)) |
| 167 | { |
| 168 | rig_cache_show(rig, __func__, __LINE__); |
| 169 | } |
| 170 | |
| 171 | rig_debug(RIG_DEBUG_CACHE, "%s(%d): vfo=%s, current_vfo=%s\n", __func__, |
| 172 | __LINE__, |
| 173 | rig_strvfo(vfo), rig_strvfo(rs->current_vfo)); |
| 174 | |
| 175 | if (vfo == RIG_VFO_CURR) |
| 176 | { |
| 177 | // if CURR then update this before we figure out the real VFO |
| 178 | vfo = rs->current_vfo; |
| 179 | } |
| 180 | |
| 181 | // if freq == 0 then we are asking to invalidate the cache |
| 182 | if (freq == 0) { flag = HAMLIB_ELAPSED_INVALIDATE; } |
| 183 | |
| 184 | // pick a sane default |
| 185 | if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } |
| 186 | |
| 187 | if (vfo == RIG_VFO_SUB && cachep->satmode) { vfo = RIG_VFO_SUB_A; }; |
| 188 | |
| 189 | if (rig_need_debug(RIG_DEBUG_CACHE)) |
| 190 | { |
| 191 | rig_debug(RIG_DEBUG_CACHE, "%s(%d): set vfo=%s to freq=%.0f\n", __func__, |
| 192 | __LINE__, |
| 193 | rig_strvfo(vfo), freq); |
| 194 | } |
| 195 | |
| 196 | if (vfo == rs->current_vfo) |
| 197 | { |
| 198 | cachep->freqCurr = freq; |
| 199 | elapsed_ms(&cachep->time_freqCurr, flag); |
| 200 | } |
| 201 | |
| 202 | switch (vfo) |
| 203 | { |
| 204 | case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches |
| 205 | elapsed_ms(&cachep->time_freqMainA, HAMLIB_ELAPSED_INVALIDATE); |
| 206 | elapsed_ms(&cachep->time_freqMainB, HAMLIB_ELAPSED_INVALIDATE); |
| 207 | elapsed_ms(&cachep->time_freqMainC, HAMLIB_ELAPSED_INVALIDATE); |
| 208 | elapsed_ms(&cachep->time_freqSubA, HAMLIB_ELAPSED_INVALIDATE); |
| 209 | elapsed_ms(&cachep->time_freqSubB, HAMLIB_ELAPSED_INVALIDATE); |
| 210 | elapsed_ms(&cachep->time_freqSubC, HAMLIB_ELAPSED_INVALIDATE); |
| 211 | elapsed_ms(&cachep->time_freqMem, HAMLIB_ELAPSED_INVALIDATE); |
| 212 | elapsed_ms(&cachep->time_vfo, HAMLIB_ELAPSED_INVALIDATE); |
| 213 | elapsed_ms(&cachep->time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); |
| 214 | elapsed_ms(&cachep->time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); |
| 215 | elapsed_ms(&cachep->time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); |
| 216 | elapsed_ms(&cachep->time_modeSubA, HAMLIB_ELAPSED_INVALIDATE); |
| 217 | elapsed_ms(&cachep->time_modeSubB, HAMLIB_ELAPSED_INVALIDATE); |
no test coverage detected