-#define UEVENT_QUANTITY_FIELDS(f) \
- f(design_capacity, BATTERY, CHARGE_FULL_DESIGN ) /* uAh */ \
- f(last_full_capacity, BATTERY, CHARGE_FULL ) /* uAh */ \
- f(present_rate, BATTERY, CURRENT_NOW ) /* uA */ \
- f(remaining_capacity, BATTERY, CHARGE_NOW ) /* uAh */ \
- f(present, BATTERY, PRESENT ) /* boolean */ \
- f(online, MAINS, ONLINE ) /* boolean */
+#define BAT_QTYS(_, _ec, EC_, PC_) \
+ _(design_capacity##_ec, BATTERY, EC_##FULL_DESIGN ) \
+ _(last_full_capacity##_ec, BATTERY, EC_##FULL ) \
+ _(remaining_capacity##_ec, BATTERY, EC_##NOW ) \
+ _(present_rate##_ec, BATTERY, PC_##NOW )
+ /* ENERGY [mWh]; POWER [mW]; CHARGE [uAh]; CURRENT [uA] */
+
+#define UEVENT_ESSENTIAL_QUANTITY_FIELDS(_) \
+ _(present, BATTERY, PRESENT /* bool */ ) \
+ _(online, MAINS, ONLINE /* bool */ )
+
+#define UEVENT_FUNKY_QUANTITY_FIELDS(_) \
+ BAT_QTYS(_,_energy,ENERGY_,POWER_) \
+ BAT_QTYS(_,_charge,CHARGE_,CURRENT_)
+
+#define UEVENT_OPTIONAL_QUANTITY_FIELDS(_) \
+ _(voltage, BATTERY, VOLTAGE_NOW /* uV */ )