X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fanalog.c;h=9bc88b310efd8aeb42333575562ce557d79c1fae;hb=77463bd397127b8a4e7266e601b4cdf87825beeb;hp=a8ca3bce650424165227546b534924081dfbef3c;hpb=cdc311957b6c1fbe68a88ed3a44fefa4a9037605;p=libsigrok.git diff --git a/src/analog.c b/src/analog.c index a8ca3bce..9bc88b31 100644 --- a/src/analog.c +++ b/src/analog.c @@ -329,6 +329,48 @@ SR_API const char *sr_analog_si_prefix(float *value, int *digits) return prefixes[prefix + NEG_PREFIX_COUNT]; } +/** + * Check if a unit "accepts" an SI prefix. + * + * E.g. SR_UNIT_VOLT is SI prefix friendly while SR_UNIT_DECIBEL_MW or + * SR_UNIT_PERCENTAGE are not. + * + * @param[in] unit The unit to check for SI prefix "friendliness". + * + * @return TRUE if the unit "accept" an SI prefix. + * + * @since 0.5.0 + */ +SR_API gboolean sr_analog_si_prefix_friendly(enum sr_unit unit) +{ + static const enum sr_unit prefix_friendly_units[] = { + SR_UNIT_VOLT, + SR_UNIT_AMPERE, + SR_UNIT_OHM, + SR_UNIT_FARAD, + SR_UNIT_KELVIN, + SR_UNIT_HERTZ, + SR_UNIT_SECOND, + SR_UNIT_SIEMENS, + SR_UNIT_VOLT_AMPERE, + SR_UNIT_WATT, + SR_UNIT_WATT_HOUR, + SR_UNIT_METER_SECOND, + SR_UNIT_HENRY, + SR_UNIT_GRAM + }; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(prefix_friendly_units); i++) + if (unit == prefix_friendly_units[i]) + break; + + if (unit != prefix_friendly_units[i]) + return FALSE; + + return TRUE; +} + /** * Convert the unit/MQ/MQ flags in the analog struct to a string. *