Skip to main content

battery_ffi/
technology.rs

1use battery::Technology as RawTech;
2
3/// Possible battery technologies.
4///
5/// New members might be added to this enum in the next versions,
6/// so users are required to properly handle that case.
7///
8/// Enum members are prefixed here in order to not have "redeclaration of enumerator" error in C.
9#[repr(u8)]
10pub enum Technology {
11    // DO NOT RE-ORDER VALUES IN THIS ENUM, IT WILL AFFECT FFI USERS
12    TechnologyUnknown = 0,
13    TechnologyLithiumIon = 1,
14    TechnologyLeadAcid = 2,
15    TechnologyLithiumPolymer = 3,
16    TechnologyNickelMetalHydride = 4,
17    TechnologyNickelCadmium = 5,
18    TechnologyNickelZinc = 6,
19    TechnologyLithiumIronPhosphate = 7,
20    TechnologyRechargeableAlkalineManganese = 8,
21}
22
23impl From<RawTech> for Technology {
24    fn from(s: RawTech) -> Self {
25        match s {
26            RawTech::Unknown => Technology::TechnologyUnknown,
27            RawTech::LithiumIon => Technology::TechnologyLithiumIon,
28            RawTech::LeadAcid => Technology::TechnologyLeadAcid,
29            RawTech::LithiumPolymer => Technology::TechnologyLithiumPolymer,
30            RawTech::NickelMetalHydride => Technology::TechnologyNickelMetalHydride,
31            RawTech::NickelCadmium => Technology::TechnologyNickelCadmium,
32            RawTech::NickelZinc => Technology::TechnologyNickelZinc,
33            RawTech::LithiumIronPhosphate => Technology::TechnologyLithiumIronPhosphate,
34            RawTech::RechargeableAlkalineManganese => Technology::TechnologyRechargeableAlkalineManganese,
35            _ => Technology::TechnologyUnknown,
36        }
37    }
38}