MCPcopy Create free account
hub / github.com/Hamlib/Hamlib / rig_raw2val

Function rig_raw2val

src/cal.c:61–122  ·  view source on GitHub ↗

* \brief Convert raw data to a calibrated integer value, according to a * calibration table. * * \param rawval Input value. * \param cal Calibration table, * * cal_table_t is a data type suited to hold linear calibration. * * cal_table_t.size is the number of plots cal_table_t.table contains. * * If a value is below or equal to cal_table_t.table[0].raw, * rig_raw2val() will return cal_t

Source from the content-addressed store, hash-verified

59 * \return Calibrated integer value.
60 */
61float HAMLIB_API rig_raw2val(int rawval, const cal_table_t *cal)
62{
63#ifdef WANT_CHEAP_WNO_FP
64 int interpolation;
65#else
66 float interpolation;
67#endif
68 int i;
69
70 /* ASSERT(cal != NULL) */
71 /* ASSERT(cal->size <= HAMLIB_MAX_CAL_LENGTH) */
72
73 rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
74
75 if (cal->size == 0)
76 {
77 return rawval;
78 }
79
80 for (i = 0; i < cal->size; i++)
81 {
82 if (rawval < cal->table[i].raw)
83 {
84 break;
85 }
86 }
87
88 if (rawval == cal->table[i - 1].raw)
89 {
90 return cal->table[i - 1].val;
91 }
92
93 if (i == 0)
94 {
95 return cal->table[0].val;
96 }
97
98 if (i >= cal->size)
99 {
100 return cal->table[i - 1].val;
101 }
102
103 /* catch divide by 0 error */
104 if (cal->table[i].raw == cal->table[i - 1].raw)
105 {
106 return cal->table[i].val;
107 }
108
109#ifdef WANT_CHEAP_WNO_FP
110 /* cheap, less accurate, but no fp needed */
111 interpolation = ((cal->table[i].raw - rawval)
112 * (cal->table[i].val - cal->table[i - 1].val))
113 / (cal->table[i].raw - cal->table[i - 1].raw);
114
115 return cal->table[i].val - interpolation;
116#else
117 interpolation = ((cal->table[i].raw - rawval)
118 * (float)(cal->table[i].val - cal->table[i - 1].val))

Callers 15

gqrx_get_levelFunction · 0.85
dttsp_get_levelFunction · 0.85
pcr_get_levelFunction · 0.85
icom_get_levelFunction · 0.85
newcat_get_levelFunction · 0.85
ft900_get_levelFunction · 0.85
ftx1_get_levelFunction · 0.85
elad_get_levelFunction · 0.85
k3_get_levelFunction · 0.85
ts850_get_levelFunction · 0.85
kenwood_ts890_get_levelFunction · 0.85
ts590_get_levelFunction · 0.85

Calls 1

rig_debugFunction · 0.85

Tested by

no test coverage detected