esp32_nimble/server/
cpfd.rs

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
71    Unitless = esp_idf_sys::BLE_GATT_CHR_UNIT_UNITLESS as _,
72    // Length
73    Metre = esp_idf_sys::BLE_GATT_CHR_UNIT_METRE as _,
74    // Mass
75    Kilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM as _,
76    // Time
77    Second = esp_idf_sys::BLE_GATT_CHR_UNIT_SECOND as _,
78    // Electric Current
79    Ampere = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE as _,
80    // Thermodynamic Temperature
81    Kelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_KELVIN as _,
82    // Amount Of Substance
83    Mole = esp_idf_sys::BLE_GATT_CHR_UNIT_MOLE as _,
84    // Luminous Intensity
85    Candela = esp_idf_sys::BLE_GATT_CHR_UNIT_CANDELA as _,
86    // Area
87    SquareMetres = esp_idf_sys::BLE_GATT_CHR_UNIT_SQUARE_METRES as _,
88    // Volume
89    CubicMetres = esp_idf_sys::BLE_GATT_CHR_UNIT_CUBIC_METRES as _,
90    // Velocity
91    MetresPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_METRES_PER_SECOND as _,
92    // Acceleration
93    MetresPerSecondSquared = esp_idf_sys::BLE_GATT_CHR_UNIT_METRES_PER_SECOND_SQUARED as _,
94    // Wavenumber
95    ReciprocalMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_RECIPROCAL_METRE as _,
96    // Density
97    KilogramPerCubicMetreDensity =
98        esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_CUBIC_METRE_DENSITY as _,
99    // Surface Density
100    KilogramPerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_SQUARE_METRE as _,
101    // Specific Volume
102    CubicMetrePerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_CUBIC_METRE_PER_KILOGRAM as _,
103    // Current Density
104    AmperePerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_PER_SQUARE_METRE as _,
105    // Magnetic Field Strength
106    AmperePerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_PER_METRE as _,
107    // Amount Concentration
108    MolePerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_MOLE_PER_CUBIC_METRE as _,
109    // Mass Concentration
110    KilogramPerCubicMetreMassConc =
111        esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_PER_CUBIC_METRE_MASS_CONC as _,
112    // Luminance
113    CandelaPerSquareMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_CANDELA_PER_SQUARE_METRE as _,
114    // Refractive Index
115    RefractiveIndex = esp_idf_sys::BLE_GATT_CHR_UNIT_REFRACTIVE_INDEX as _,
116    // Relative Permeability
117    RelativePermeability = esp_idf_sys::BLE_GATT_CHR_UNIT_RELATIVE_PERMEABILITY as _,
118    // Plane Angle
119    Radian = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN as _,
120    // Solid Angle
121    Steradian = esp_idf_sys::BLE_GATT_CHR_UNIT_STERADIAN as _,
122    // Frequency
123    Hertz = esp_idf_sys::BLE_GATT_CHR_UNIT_HERTZ as _,
124    // Force
125    Newton = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON as _,
126    // Pressure
127    Pascal = esp_idf_sys::BLE_GATT_CHR_UNIT_PASCAL as _,
128    // Energy
129    Joule = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE as _,
130    // Power
131    Watt = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT as _,
132    // Electric Charge
133    Coulomb = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB as _,
134    // Electric Potential Difference
135    Volt = esp_idf_sys::BLE_GATT_CHR_UNIT_VOLT as _,
136    // Capacitance
137    Farad = esp_idf_sys::BLE_GATT_CHR_UNIT_FARAD as _,
138    // Electric Resistance
139    Ohm = esp_idf_sys::BLE_GATT_CHR_UNIT_OHM as _,
140    // Electric Conductance
141    Siemens = esp_idf_sys::BLE_GATT_CHR_UNIT_SIEMENS as _,
142    // Magnetic Flux
143    Weber = esp_idf_sys::BLE_GATT_CHR_UNIT_WEBER as _,
144    // Magnetic Flux Density
145    Tesla = esp_idf_sys::BLE_GATT_CHR_UNIT_TESLA as _,
146    // Inductance
147    Henry = esp_idf_sys::BLE_GATT_CHR_UNIT_HENRY as _,
148    // celsius Temperature
149    DegreeCelsius = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE_CELSIUS as _,
150    // Luminous Flux
151    Lumen = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN as _,
152    // Illuminance
153    Lux = esp_idf_sys::BLE_GATT_CHR_UNIT_LUX as _,
154    // Activity Referred To A Radionuclide
155    Becquerel = esp_idf_sys::BLE_GATT_CHR_UNIT_BECQUEREL as _,
156    // Absorbed Dose
157    Gray = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAY as _,
158    // Dose Equivalent
159    Sievert = esp_idf_sys::BLE_GATT_CHR_UNIT_SIEVERT as _,
160    // Catalytic Activity
161    Katal = esp_idf_sys::BLE_GATT_CHR_UNIT_KATAL as _,
162    // Dynamic Viscosity
163    PascalSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_PASCAL_SECOND as _,
164    // Moment Of Force
165    NewtonMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON_METRE as _,
166    // Surface Tension
167    NewtonPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_NEWTON_PER_METRE as _,
168    // Angular Velocity
169    RadianPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN_PER_SECOND as _,
170    // Angular Acceleration
171    RadianPerSecondSquared = esp_idf_sys::BLE_GATT_CHR_UNIT_RADIAN_PER_SECOND_SQUARED as _,
172    // Heat Flux Density
173    WattPerSquareMetreHeat = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_HEAT as _,
174    // Heat Capacity
175    JoulePerKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KELVIN as _,
176    // Specific Heat Capacity
177    JoulePerKilogramKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KILOGRAM_KELVIN as _,
178    // Specific Energy
179    JoulePerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_KILOGRAM as _,
180    // Thermal Conductivity
181    WattPerMetreKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_METRE_KELVIN as _,
182    // Energy Density
183    JoulePerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_CUBIC_METRE as _,
184    // Electric Field Strength
185    VoltPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_VOLT_PER_METRE as _,
186    // Electric Charge Density
187    CoulombPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_CUBIC_METRE as _,
188    // Surface Charge Density
189    CoulombPerSquareMetreCharge =
190        esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_SQUARE_METRE_CHARGE as _,
191    // Electric Flux Density
192    CoulombPerSquareMetreFlux = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_SQUARE_METRE_FLUX as _,
193    // Permittivity
194    FaradPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_FARAD_PER_METRE as _,
195    // Permeability
196    HenryPerMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_HENRY_PER_METRE as _,
197    // Molar Energy
198    JoulePerMole = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_MOLE as _,
199    // Molar Entropy
200    JoulePerMoleKelvin = esp_idf_sys::BLE_GATT_CHR_UNIT_JOULE_PER_MOLE_KELVIN as _,
201    // Exposure
202    CoulombPerKilogram = esp_idf_sys::BLE_GATT_CHR_UNIT_COULOMB_PER_KILOGRAM as _,
203    // Absorbed Dose Rate
204    GrayPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAY_PER_SECOND as _,
205    // Radiant Intensity
206    WattPerSteradian = esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_STERADIAN as _,
207    // Radiance
208    WattPerSquareMetreSteradian =
209        esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_STERADIAN as _,
210    // Catalytic Activity Concentration
211    KatalPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_KATAL_PER_CUBIC_METRE as _,
212    // Time
213    Minute = esp_idf_sys::BLE_GATT_CHR_UNIT_MINUTE as _,
214    // Time
215    Hour = esp_idf_sys::BLE_GATT_CHR_UNIT_HOUR as _,
216    // Time
217    Day = esp_idf_sys::BLE_GATT_CHR_UNIT_DAY as _,
218    // Plane Angle
219    Degree = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE as _,
220    // Plane Angle
221    MinuteAngle = esp_idf_sys::BLE_GATT_CHR_UNIT_MINUTE_ANGLE as _,
222    // Plane Angle
223    SecondAngle = esp_idf_sys::BLE_GATT_CHR_UNIT_SECOND_ANGLE as _,
224    // Area
225    Hectare = esp_idf_sys::BLE_GATT_CHR_UNIT_HECTARE as _,
226    // Volume
227    Litre = esp_idf_sys::BLE_GATT_CHR_UNIT_LITRE as _,
228    // Mass
229    Tonne = esp_idf_sys::BLE_GATT_CHR_UNIT_TONNE as _,
230    // Pressure
231    Bar = esp_idf_sys::BLE_GATT_CHR_UNIT_BAR as _,
232    // Pressure
233    MillimetreOfMercury = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIMETRE_OF_MERCURY as _,
234    // Length
235    Angstrom = esp_idf_sys::BLE_GATT_CHR_UNIT_ANGSTROM as _,
236    // Length
237    NauticalMile = esp_idf_sys::BLE_GATT_CHR_UNIT_NAUTICAL_MILE as _,
238    // Area
239    Barn = esp_idf_sys::BLE_GATT_CHR_UNIT_BARN as _,
240    // Velocity
241    Knot = esp_idf_sys::BLE_GATT_CHR_UNIT_KNOT as _,
242    // Logarithmic Radio Quantity
243    Neper = esp_idf_sys::BLE_GATT_CHR_UNIT_NEPER as _,
244    // Logarithmic Radio Quantity
245    Bel = esp_idf_sys::BLE_GATT_CHR_UNIT_BEL as _,
246    // Length
247    Yard = esp_idf_sys::BLE_GATT_CHR_UNIT_YARD as _,
248    // Length
249    Parsec = esp_idf_sys::BLE_GATT_CHR_UNIT_PARSEC as _,
250    // Length
251    Inch = esp_idf_sys::BLE_GATT_CHR_UNIT_INCH as _,
252    // Length
253    Foot = esp_idf_sys::BLE_GATT_CHR_UNIT_FOOT as _,
254    // Length
255    Mile = esp_idf_sys::BLE_GATT_CHR_UNIT_MILE as _,
256    // Pressure
257    PoundForcePerSquareInch = esp_idf_sys::BLE_GATT_CHR_UNIT_POUND_FORCE_PER_SQUARE_INCH as _,
258    // Velocity
259    KilometrePerHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOMETRE_PER_HOUR as _,
260    // Velocity
261    MilePerHour = esp_idf_sys::BLE_GATT_CHR_UNIT_MILE_PER_HOUR as _,
262    // Angular Velocity
263    RevolutionPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_REVOLUTION_PER_MINUTE as _,
264    // Energy
265    GramCalorie = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAM_CALORIE as _,
266    // Energy
267    KilogramCalorie = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOGRAM_CALORIE as _,
268    // Energy
269    KilowattHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOWATT_HOUR as _,
270    // Thermodynamic Temperature
271    DegreeFahrenheit = esp_idf_sys::BLE_GATT_CHR_UNIT_DEGREE_FAHRENHEIT as _,
272    // Percentage
273    Percentage = esp_idf_sys::BLE_GATT_CHR_UNIT_PERCENTAGE as _,
274    // Per Mille
275    PerMille = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MILLE as _,
276    // Period
277    BeatsPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_BEATS_PER_MINUTE as _,
278    // Electric Charge
279    AmpereHours = esp_idf_sys::BLE_GATT_CHR_UNIT_AMPERE_HOURS as _,
280    // Mass Density
281    MilligramPerDecilitre = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIGRAM_PER_DECILITRE as _,
282    // Mass Density
283    MillimolePerLitre = esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIMOLE_PER_LITRE as _,
284    // Time
285    Year = esp_idf_sys::BLE_GATT_CHR_UNIT_YEAR as _,
286    // Time
287    Month = esp_idf_sys::BLE_GATT_CHR_UNIT_MONTH as _,
288    // Concentration
289    CountPerCubicMetre = esp_idf_sys::BLE_GATT_CHR_UNIT_COUNT_PER_CUBIC_METRE as _,
290    // Irradiance
291    WattPerSquareMetreIrradiance =
292        esp_idf_sys::BLE_GATT_CHR_UNIT_WATT_PER_SQUARE_METRE_IRRADIANCE as _,
293    // Milliliter
294    PerKilogramPerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_KILOGRAM_PER_MINUTE as _,
295    // Mass
296    Pound = esp_idf_sys::BLE_GATT_CHR_UNIT_POUND as _,
297    // Metabolic Equivalent
298    MetabolicEquivalent = esp_idf_sys::BLE_GATT_CHR_UNIT_METABOLIC_EQUIVALENT as _,
299    // Step
300    PerMinuteStep = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MINUTE_STEP as _,
301    // Stroke
302    PerMinuteStroke = esp_idf_sys::BLE_GATT_CHR_UNIT_PER_MINUTE_STROKE as _,
303    // Pace
304    KilometrePerMinute = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOMETRE_PER_MINUTE as _,
305    // Luminous Efficacy
306    LumenPerWatt = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN_PER_WATT as _,
307    // Luminous Energy
308    LumenHour = esp_idf_sys::BLE_GATT_CHR_UNIT_LUMEN_HOUR as _,
309    // Luminous Exposure
310    LuxHour = esp_idf_sys::BLE_GATT_CHR_UNIT_LUX_HOUR as _,
311    // Mass Flow
312    GramPerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_GRAM_PER_SECOND as _,
313    // Volume Flow
314    LitrePerSecond = esp_idf_sys::BLE_GATT_CHR_UNIT_LITRE_PER_SECOND as _,
315    // Sound Pressure
316    Decibel = esp_idf_sys::BLE_GATT_CHR_UNIT_DECIBEL as _,
317    // Concentration
318    PartsPerMillion = esp_idf_sys::BLE_GATT_CHR_UNIT_PARTS_PER_MILLION as _,
319    // Concentration
320    PartsPerBillion = esp_idf_sys::BLE_GATT_CHR_UNIT_PARTS_PER_BILLION as _,
321    // Mass Density Rate
322    MilligramPerDecilitrePerMinute =
323        esp_idf_sys::BLE_GATT_CHR_UNIT_MILLIGRAM_PER_DECILITRE_PER_MINUTE as _,
324    // Electrical Apparent Energy
325    KilovoltAmpereHour = esp_idf_sys::BLE_GATT_CHR_UNIT_KILOVOLT_AMPERE_HOUR as _,
326    // Electrical Apparent Power
327    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    /// Format of the value of this characteristic.
334    pub format: ChrFormat,
335    /// Exponent field. Multiplies the value to 10^exponent.
336    pub exponent: i8,
337    /// The unit of this characteristic.
338    pub unit: ChrUnit,
339    /// The name space of the description.
340    pub name_space: u8,
341    /// The description of this characteristic. Depends on name space.
342    pub description: u16,
343}