1use num_enum::IntoPrimitive;
2use zerocopy_derive::{Immutable, IntoBytes, KnownLayout, TryFromBytes};
3
4cfg_if::cfg_if! {
5 if #[cfg(cpfd)] {
6 use esp_idf_svc::sys as esp_idf_sys;
7 } else {
8 use super::cpfd_constants as esp_idf_sys;
9 }
10}
11
12#[derive(
13 Copy,
14 Clone,
15 PartialEq,
16 Eq,
17 Debug,
18 IntoPrimitive,
19 TryFromBytes,
20 KnownLayout,
21 IntoBytes,
22 Immutable,
23)]
24#[repr(u8)]
25pub enum ChrFormat {
26 Boolean = esp_idf_sys::BLE_GATT_CHR_FORMAT_BOOLEAN as _,
27 Uint2 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT2 as _,
28 Uint4 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT4 as _,
29 Uint8 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT8 as _,
30 Uint12 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT12 as _,
31 Uint16 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT16 as _,
32 Uint24 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT24 as _,
33 Uint32 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT32 as _,
34 Uint48 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT48 as _,
35 Uint64 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT64 as _,
36 Uint128 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT128 as _,
37 Sint8 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT8 as _,
38 Sint12 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT12 as _,
39 Sint16 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT16 as _,
40 Sint24 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT24 as _,
41 Sint32 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT32 as _,
42 Sint48 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT48 as _,
43 Sint64 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT64 as _,
44 Sint128 = esp_idf_sys::BLE_GATT_CHR_FORMAT_SINT128 as _,
45 Float32 = esp_idf_sys::BLE_GATT_CHR_FORMAT_FLOAT32 as _,
46 Float64 = esp_idf_sys::BLE_GATT_CHR_FORMAT_FLOAT64 as _,
47 Medfloat16 = esp_idf_sys::BLE_GATT_CHR_FORMAT_MEDFLOAT16 as _,
48 Medfloat32 = esp_idf_sys::BLE_GATT_CHR_FORMAT_MEDFLOAT32 as _,
49 Uint162 = esp_idf_sys::BLE_GATT_CHR_FORMAT_UINT16_2 as _,
50 Utf8s = esp_idf_sys::BLE_GATT_CHR_FORMAT_UTF8S as _,
51 Utf16s = esp_idf_sys::BLE_GATT_CHR_FORMAT_UTF16S as _,
52 Struct = esp_idf_sys::BLE_GATT_CHR_FORMAT_STRUCT as _,
53 Medasn1 = esp_idf_sys::BLE_GATT_CHR_FORMAT_MEDASN1 as _,
54}
55
56#[derive(
57 Copy,
58 Clone,
59 PartialEq,
60 Eq,
61 Debug,
62 IntoPrimitive,
63 TryFromBytes,
64 KnownLayout,
65 IntoBytes,
66 Immutable,
67)]
68#[repr(u16)]
69pub enum ChrUnit {
70 Unitless = esp_idf_sys::BLE_GATT_CHR_UNIT_UNITLESS as _,
72 Metre = esp_idf_sys::BLE_GATT_CHR_UNIT_METRE as _,
74 Kilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM as _,
76 Second = esp_idf_sys::BLE_GATT_CHR_UNIT_SECOND as _,
78 Ampere = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE as _,
80 Kelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_KELVIN as _,
82 Mole = esp_idf_sys::BLE_GATT_CHR_UNIT_MOLE as _,
84 Candela = esp_idf_sys::BLE_GATT_CHR_UNIT_CANDELA as _,
86 SquareMetres = esp_idf_sys::BLE_GATT_CHR_UNIT_SQUARE_METRES as _,
88 CubicMetres = esp_idf_sys::BLE_GATT_CHR_UNIT_CUBIC_METRES as _,
90 MetresPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_METRES_PER_SECOND as _,
92 MetresPerSecondSquared = esp_idf_sys::BLE_GATT_CHR_UNIT_METRES_PER_SECOND_SQUARED as _,
94 ReciprocalMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_RECIPROCAL_METRE as _,
96 KilogramPerCubicMetreDensity =
98 esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_CUBIC_METRE_DENSITY as _,
99 KilogramPerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_SQUARE_METRE as _,
101 CubicMetrePerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_CUBIC_METRE_PER_KILOGRAM as _,
103 AmperePerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_PER_SQUARE_METRE as _,
105 AmperePerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_PER_METRE as _,
107 MolePerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_MOLE_PER_CUBIC_METRE as _,
109 KilogramPerCubicMetreMassConc =
111 esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_CUBIC_METRE_MASS_CONC as _,
112 CandelaPerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_CANDELA_PER_SQUARE_METRE as _,
114 RefractiveIndex = esp_idf_sys::BLE_GATT_CHR_UNIT_REFRACTIVE_INDEX as _,
116 RelativePermeability = esp_idf_sys::BLE_GATT_CHR_UNIT_RELATIVE_PERMEABILITY as _,
118 Radian = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN as _,
120 Steradian = esp_idf_sys::BLE_GATT_CHR_UNIT_STERADIAN as _,
122 Hertz = esp_idf_sys::BLE_GATT_CHR_UNIT_HERTZ as _,
124 Newton = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON as _,
126 Pascal = esp_idf_sys::BLE_GATT_CHR_UNIT_PASCAL as _,
128 Joule = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE as _,
130 Watt = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT as _,
132 Coulomb = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB as _,
134 Volt = esp_idf_sys::BLE_GATT_CHR_UNIT_VOLT as _,
136 Farad = esp_idf_sys::BLE_GATT_CHR_UNIT_FARAD as _,
138 Ohm = esp_idf_sys::BLE_GATT_CHR_UNIT_OHM as _,
140 Siemens = esp_idf_sys::BLE_GATT_CHR_UNIT_SIEMENS as _,
142 Weber = esp_idf_sys::BLE_GATT_CHR_UNIT_WEBER as _,
144 Tesla = esp_idf_sys::BLE_GATT_CHR_UNIT_TESLA as _,
146 Henry = esp_idf_sys::BLE_GATT_CHR_UNIT_HENRY as _,
148 DegreeCelsius = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE_CELSIUS as _,
150 Lumen = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN as _,
152 Lux = esp_idf_sys::BLE_GATT_CHR_UNIT_LUX as _,
154 Becquerel = esp_idf_sys::BLE_GATT_CHR_UNIT_BECQUEREL as _,
156 Gray = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAY as _,
158 Sievert = esp_idf_sys::BLE_GATT_CHR_UNIT_SIEVERT as _,
160 Katal = esp_idf_sys::BLE_GATT_CHR_UNIT_KATAL as _,
162 PascalSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_PASCAL_SECOND as _,
164 NewtonMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON_METRE as _,
166 NewtonPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON_PER_METRE as _,
168 RadianPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN_PER_SECOND as _,
170 RadianPerSecondSquared = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN_PER_SECOND_SQUARED as _,
172 WattPerSquareMetreHeat = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_HEAT as _,
174 JoulePerKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KELVIN as _,
176 JoulePerKilogramKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KILOGRAM_KELVIN as _,
178 JoulePerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KILOGRAM as _,
180 WattPerMetreKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_METRE_KELVIN as _,
182 JoulePerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_CUBIC_METRE as _,
184 VoltPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_VOLT_PER_METRE as _,
186 CoulombPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_CUBIC_METRE as _,
188 CoulombPerSquareMetreCharge =
190 esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_SQUARE_METRE_CHARGE as _,
191 CoulombPerSquareMetreFlux = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_SQUARE_METRE_FLUX as _,
193 FaradPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_FARAD_PER_METRE as _,
195 HenryPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_HENRY_PER_METRE as _,
197 JoulePerMole = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_MOLE as _,
199 JoulePerMoleKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_MOLE_KELVIN as _,
201 CoulombPerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_KILOGRAM as _,
203 GrayPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAY_PER_SECOND as _,
205 WattPerSteradian = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_STERADIAN as _,
207 WattPerSquareMetreSteradian =
209 esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_STERADIAN as _,
210 KatalPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_KATAL_PER_CUBIC_METRE as _,
212 Minute = esp_idf_sys::BLE_GATT_CHR_UNIT_MINUTE as _,
214 Hour = esp_idf_sys::BLE_GATT_CHR_UNIT_HOUR as _,
216 Day = esp_idf_sys::BLE_GATT_CHR_UNIT_DAY as _,
218 Degree = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE as _,
220 MinuteAngle = esp_idf_sys::BLE_GATT_CHR_UNIT_MINUTE_ANGLE as _,
222 SecondAngle = esp_idf_sys::BLE_GATT_CHR_UNIT_SECOND_ANGLE as _,
224 Hectare = esp_idf_sys::BLE_GATT_CHR_UNIT_HECTARE as _,
226 Litre = esp_idf_sys::BLE_GATT_CHR_UNIT_LITRE as _,
228 Tonne = esp_idf_sys::BLE_GATT_CHR_UNIT_TONNE as _,
230 Bar = esp_idf_sys::BLE_GATT_CHR_UNIT_BAR as _,
232 MillimetreOfMercury = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIMETRE_OF_MERCURY as _,
234 Angstrom = esp_idf_sys::BLE_GATT_CHR_UNIT_ANGSTROM as _,
236 NauticalMile = esp_idf_sys::BLE_GATT_CHR_UNIT_NAUTICAL_MILE as _,
238 Barn = esp_idf_sys::BLE_GATT_CHR_UNIT_BARN as _,
240 Knot = esp_idf_sys::BLE_GATT_CHR_UNIT_KNOT as _,
242 Neper = esp_idf_sys::BLE_GATT_CHR_UNIT_NEPER as _,
244 Bel = esp_idf_sys::BLE_GATT_CHR_UNIT_BEL as _,
246 Yard = esp_idf_sys::BLE_GATT_CHR_UNIT_YARD as _,
248 Parsec = esp_idf_sys::BLE_GATT_CHR_UNIT_PARSEC as _,
250 Inch = esp_idf_sys::BLE_GATT_CHR_UNIT_INCH as _,
252 Foot = esp_idf_sys::BLE_GATT_CHR_UNIT_FOOT as _,
254 Mile = esp_idf_sys::BLE_GATT_CHR_UNIT_MILE as _,
256 PoundForcePerSquareInch = esp_idf_sys::BLE_GATT_CHR_UNIT_POUND_FORCE_PER_SQUARE_INCH as _,
258 KilometrePerHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOMETRE_PER_HOUR as _,
260 MilePerHour = esp_idf_sys::BLE_GATT_CHR_UNIT_MILE_PER_HOUR as _,
262 RevolutionPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_REVOLUTION_PER_MINUTE as _,
264 GramCalorie = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAM_CALORIE as _,
266 KilogramCalorie = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_CALORIE as _,
268 KilowattHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOWATT_HOUR as _,
270 DegreeFahrenheit = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE_FAHRENHEIT as _,
272 Percentage = esp_idf_sys::BLE_GATT_CHR_UNIT_PERCENTAGE as _,
274 PerMille = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MILLE as _,
276 BeatsPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_BEATS_PER_MINUTE as _,
278 AmpereHours = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_HOURS as _,
280 MilligramPerDecilitre = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIGRAM_PER_DECILITRE as _,
282 MillimolePerLitre = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIMOLE_PER_LITRE as _,
284 Year = esp_idf_sys::BLE_GATT_CHR_UNIT_YEAR as _,
286 Month = esp_idf_sys::BLE_GATT_CHR_UNIT_MONTH as _,
288 CountPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_COUNT_PER_CUBIC_METRE as _,
290 WattPerSquareMetreIrradiance =
292 esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_IRRADIANCE as _,
293 PerKilogramPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_KILOGRAM_PER_MINUTE as _,
295 Pound = esp_idf_sys::BLE_GATT_CHR_UNIT_POUND as _,
297 MetabolicEquivalent = esp_idf_sys::BLE_GATT_CHR_UNIT_METABOLIC_EQUIVALENT as _,
299 PerMinuteStep = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MINUTE_STEP as _,
301 PerMinuteStroke = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MINUTE_STROKE as _,
303 KilometrePerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOMETRE_PER_MINUTE as _,
305 LumenPerWatt = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN_PER_WATT as _,
307 LumenHour = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN_HOUR as _,
309 LuxHour = esp_idf_sys::BLE_GATT_CHR_UNIT_LUX_HOUR as _,
311 GramPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAM_PER_SECOND as _,
313 LitrePerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_LITRE_PER_SECOND as _,
315 Decibel = esp_idf_sys::BLE_GATT_CHR_UNIT_DECIBEL as _,
317 PartsPerMillion = esp_idf_sys::BLE_GATT_CHR_UNIT_PARTS_PER_MILLION as _,
319 PartsPerBillion = esp_idf_sys::BLE_GATT_CHR_UNIT_PARTS_PER_BILLION as _,
321 MilligramPerDecilitrePerMinute =
323 esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIGRAM_PER_DECILITRE_PER_MINUTE as _,
324 KilovoltAmpereHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOVOLT_AMPERE_HOUR as _,
326 VoltAmpere = esp_idf_sys::BLE_GATT_CHR_UNIT_VOLT_AMPERE as _,
328}
329
330#[derive(TryFromBytes, KnownLayout, IntoBytes, Immutable)]
331#[repr(C, packed)]
332pub struct Cpfd {
333 pub format: ChrFormat,
335 pub exponent: i8,
337 pub unit: ChrUnit,
339 pub name_space: u8,
341 pub description: u16,
343}