X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fdmm%2Fdtm0660.c;h=42012399e22195a2b3ee10e1f5dcfe4f7cfc642f;hb=24a953382c4c07f4071a36897bf17c93db9ce1e7;hp=e9c20bfbaf59c959f79ecc00de8d2736bc864083;hpb=d9251a2c9f1ca4380c27240ccca90c9f9ed46d3f;p=libsigrok.git diff --git a/src/dmm/dtm0660.c b/src/dmm/dtm0660.c index e9c20bfb..42012399 100644 --- a/src/dmm/dtm0660.c +++ b/src/dmm/dtm0660.c @@ -16,8 +16,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ /* @@ -255,6 +254,8 @@ static void parse_flags(const uint8_t *buf, struct dtm0660_info *info) static void handle_flags(struct sr_datafeed_analog *analog, float *floatval, int *exponent, const struct dtm0660_info *info) { + int initial_exponent = *exponent; + /* Factors */ if (info->is_nano) *exponent -= 9; @@ -266,7 +267,7 @@ static void handle_flags(struct sr_datafeed_analog *analog, float *floatval, *exponent += 3; if (info->is_mega) *exponent += 6; - *floatval *= powf(10, *exponent); + *floatval *= powf(10, (*exponent - initial_exponent)); /* Measurement modes */ if (info->is_volt) { @@ -319,7 +320,7 @@ static void handle_flags(struct sr_datafeed_analog *analog, float *floatval, if (info->is_auto) analog->meaning->mqflags |= SR_MQFLAG_AUTORANGE; if (info->is_diode) - analog->meaning->mqflags |= SR_MQFLAG_DIODE; + analog->meaning->mqflags |= SR_MQFLAG_DIODE | SR_MQFLAG_DC; if (info->is_hold) analog->meaning->mqflags |= SR_MQFLAG_HOLD; if (info->is_rel) @@ -374,7 +375,7 @@ SR_PRIV int sr_dtm0660_parse(const uint8_t *buf, float *floatval, int ret, exponent = 0; struct dtm0660_info *info_local; - info_local = (struct dtm0660_info *)info; + info_local = info; if ((ret = parse_value(buf, floatval, &exponent)) != SR_OK) { sr_dbg("Error parsing value: %d.", ret);