Skip to content

Commit 627d308

Browse files
2.0.1
Support for new ScioSense C library core
2 parents 3a25055 + fc05d7c commit 627d308

11 files changed

+90
-295
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=ScioSense_ENS16x
2-
version=2.0.0
2+
version=2.0.1
33
author=ScioSense
44
maintainer=ScioSense
55
sentence=Arduino library for the ENS16x digital four channel MOX gas sensor family with I2C interface from ScioSense

src/lib/ens16x/ScioSense_Ens160.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,36 +27,36 @@ typedef struct ScioSense_Ens16x
2727
Ens16x_Configuration configuration;
2828
} ScioSense_Ens16x;
2929

30-
Result Ens16x_Init (ScioSense_Ens16x* ens16x); // Resets the device to IDLE and reads PartID and FirmwareVersion
31-
Result Ens16x_Reset (ScioSense_Ens16x* ens16x); // Device reset to the power-on configuration.
32-
Result Ens16x_Update (ScioSense_Ens16x* ens16x); // Checks the device Status for NEWDAT and NEWGPR; Reads Data if flags are set.
33-
Result Ens16x_StartStandardMeasure (ScioSense_Ens16x* ens16x); // Starts the STANDARD operating mode.
34-
Result Ens16x_WriteCompensation (ScioSense_Ens16x* ens16x, const uint16_t temperature, const uint16_t relativeHumidity); // Writes ambient temperature and relative humidity data for compensation.
35-
Result Ens16x_WriteConfiguration (ScioSense_Ens16x* ens16x, const Ens16x_Configuration configuration); // Writes configuration data.
36-
Result Ens16x_ReadPartId (ScioSense_Ens16x* ens16x); // Reads the PartID of the device
37-
Result Ens16x_ReadOpMode (ScioSense_Ens16x* ens16x); // Reads the currently running OpMode
38-
Result Ens16x_ReadFirmwareVersion (ScioSense_Ens16x* ens16x); // Reads the FirmwareVersion; only availeble in IDLE OpMode
39-
Result Ens16x_SetOperatingMode (ScioSense_Ens16x* ens16x, const Ens16x_OperatingMode mode);
40-
Result Ens16x_Wait (ScioSense_Ens16x* ens16x); // Waits for a measurement to finish; Only allowed in MeasurementMode
41-
Result Ens16x_ValidateDataIntegrity (ScioSense_Ens16x* ens16x); // Reads DATA_MISR. returns RESULT_CHECKSUM_ERROR on data checksum failure
42-
43-
bool Ens16x_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned a ENS16x family ID
44-
bool Ens160_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned 0x160
45-
AirQualityIndex_UBA Ens16x_GetAirQualityIndex_UBA (ScioSense_Ens16x* ens16x); // Calculate and return the air quality index (UBA)
46-
uint16_t Ens16x_GetEco2 (ScioSense_Ens16x* ens16x); // Calculate and return the Equivalent CO2 Concentration (ppm)
47-
uint16_t Ens16x_GetTvoc (ScioSense_Ens16x* ens16x); // Calculate and return the TVOC Concentration (ppb)
48-
uint32_t Ens16x_GetRs0 (ScioSense_Ens16x* ens16x); // Returns resistor 0 value;
49-
uint32_t Ens16x_GetRs1 (ScioSense_Ens16x* ens16x); // Returns resistor 1 value;
50-
uint32_t Ens16x_GetRs2 (ScioSense_Ens16x* ens16x); // Returns resistor 2 value;
51-
uint32_t Ens16x_GetRs3 (ScioSense_Ens16x* ens16x); // Returns resistor 3 value;
52-
Ens16x_DeviceStatus Ens16x_GetDeviceStatus (ScioSense_Ens16x* ens16x); // Returns last DeviceStatus read by update()
53-
uint8_t* Ens16x_GetFirmwareVersion (ScioSense_Ens16x* ens16x); // Returns the firmware version number as uint8_t[3] {major, minor, release}
54-
uint8_t* Ens16x_GetDataRaw (ScioSense_Ens16x* ens16x); // Returns the the internal uint8_t[7] read buffer
55-
56-
uint16_t Ens16x_CalcTempInFromKelvin (const float temperature); // Calculate raw Temp_In from Kelvin; Result is to be used as temperature value for Ens16x_WriteCompensation
57-
uint16_t Ens16x_CalcTempInFromCelsius (const float temperature); // Calculate raw Temp_In from Celsius; Result is to be used as temperature value for Ens16x_WriteCompensation
58-
uint16_t Ens16x_CalcTempInFromFahrenheit (const float temperature); // Calculate raw Temp_In from Fahrenheit; Result is to be used as temperature value for Ens16x_WriteCompensation
59-
uint16_t Ens16x_CalcRhIn (const float relativeHumidity); // Calculate raw RH_In from relative humidity %. Result is to be used as relativeHumidity value for Ens16x_WriteCompensation
30+
static inline Result Ens16x_Init (ScioSense_Ens16x* ens16x); // Resets the device to IDLE and reads PartID and FirmwareVersion
31+
static inline Result Ens16x_Reset (ScioSense_Ens16x* ens16x); // Device reset to the power-on configuration.
32+
static inline Result Ens16x_Update (ScioSense_Ens16x* ens16x); // Checks the device Status for NEWDAT and NEWGPR; Reads Data if flags are set.
33+
static inline Result Ens16x_StartStandardMeasure (ScioSense_Ens16x* ens16x); // Starts the STANDARD operating mode.
34+
static inline Result Ens16x_WriteCompensation (ScioSense_Ens16x* ens16x, const uint16_t temperature, const uint16_t relativeHumidity); // Writes ambient temperature and relative humidity data for compensation.
35+
static inline Result Ens16x_WriteConfiguration (ScioSense_Ens16x* ens16x, const Ens16x_Configuration configuration); // Writes configuration data.
36+
static inline Result Ens16x_ReadPartId (ScioSense_Ens16x* ens16x); // Reads the PartID of the device
37+
static inline Result Ens16x_ReadOpMode (ScioSense_Ens16x* ens16x); // Reads the currently running OpMode
38+
static inline Result Ens16x_ReadFirmwareVersion (ScioSense_Ens16x* ens16x); // Reads the FirmwareVersion; only availeble in IDLE OpMode
39+
static inline Result Ens16x_SetOperatingMode (ScioSense_Ens16x* ens16x, const Ens16x_OperatingMode mode);
40+
static inline Result Ens16x_Wait (ScioSense_Ens16x* ens16x); // Waits for a measurement to finish; Only allowed in MeasurementMode
41+
static inline Result Ens16x_ValidateDataIntegrity (ScioSense_Ens16x* ens16x); // Reads DATA_MISR. returns RESULT_CHECKSUM_ERROR on data checksum failure
42+
43+
static inline bool Ens16x_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned a ENS16x family ID
44+
static inline bool Ens160_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned 0x160
45+
static inline AirQualityIndex_UBA Ens16x_GetAirQualityIndex_UBA (ScioSense_Ens16x* ens16x); // Calculate and return the air quality index (UBA)
46+
static inline uint16_t Ens16x_GetEco2 (ScioSense_Ens16x* ens16x); // Calculate and return the Equivalent CO2 Concentration (ppm)
47+
static inline uint16_t Ens16x_GetTvoc (ScioSense_Ens16x* ens16x); // Calculate and return the TVOC Concentration (ppb)
48+
static inline uint32_t Ens16x_GetRs0 (ScioSense_Ens16x* ens16x); // Returns resistor 0 value;
49+
static inline uint32_t Ens16x_GetRs1 (ScioSense_Ens16x* ens16x); // Returns resistor 1 value;
50+
static inline uint32_t Ens16x_GetRs2 (ScioSense_Ens16x* ens16x); // Returns resistor 2 value;
51+
static inline uint32_t Ens16x_GetRs3 (ScioSense_Ens16x* ens16x); // Returns resistor 3 value;
52+
static inline Ens16x_DeviceStatus Ens16x_GetDeviceStatus (ScioSense_Ens16x* ens16x); // Returns last DeviceStatus read by update()
53+
static inline uint8_t* Ens16x_GetFirmwareVersion (ScioSense_Ens16x* ens16x); // Returns the firmware version number as uint8_t[3] {major, minor, release}
54+
static inline uint8_t* Ens16x_GetDataRaw (ScioSense_Ens16x* ens16x); // Returns the the internal uint8_t[7] read buffer
55+
56+
static inline uint16_t Ens16x_CalcTempInFromKelvin (const float temperature); // Calculate raw Temp_In from Kelvin; Result is to be used as temperature value for Ens16x_WriteCompensation
57+
static inline uint16_t Ens16x_CalcTempInFromCelsius (const float temperature); // Calculate raw Temp_In from Celsius; Result is to be used as temperature value for Ens16x_WriteCompensation
58+
static inline uint16_t Ens16x_CalcTempInFromFahrenheit (const float temperature); // Calculate raw Temp_In from Fahrenheit; Result is to be used as temperature value for Ens16x_WriteCompensation
59+
static inline uint16_t Ens16x_CalcRhIn (const float relativeHumidity); // Calculate raw RH_In from relative humidity %. Result is to be used as relativeHumidity value for Ens16x_WriteCompensation
6060

6161
#include "ScioSense_Ens160.inl.h"
6262
#endif // SCIOSENSE_ENS160_C_H

src/lib/ens16x/ScioSense_Ens160.inl.h

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
#define hasAnyFlag(a, b) (((a) & (b)) != 0)
1212
#define hasFlag(a, b) (((a) & (b)) == (b))
1313

14-
Result Ens16x_Invoke(ScioSense_Ens16x* ens16x, const Ens16x_Command command, uint32_t ms, uint8_t retry = 3);
14+
static inline Result Ens16x_Invoke(ScioSense_Ens16x* ens16x, const Ens16x_Command command, uint32_t ms);
1515

16-
inline Result Ens16x_Read(ScioSense_Ens16x* ens16x, const uint16_t address, uint8_t* data, const size_t size)
16+
static inline Result Ens16x_Read(ScioSense_Ens16x* ens16x, const uint16_t address, uint8_t* data, const size_t size)
1717
{
1818
Result result;
1919

@@ -43,7 +43,7 @@ inline Result Ens16x_Read(ScioSense_Ens16x* ens16x, const uint16_t address, uint
4343
return result;
4444
}
4545

46-
inline Result Ens16x_Init(ScioSense_Ens16x* ens16x)
46+
static inline Result Ens16x_Init(ScioSense_Ens16x* ens16x)
4747
{
4848
Result result;
4949

@@ -74,7 +74,7 @@ inline Result Ens16x_Init(ScioSense_Ens16x* ens16x)
7474
return result;
7575
}
7676

77-
inline Result Ens16x_Reset(ScioSense_Ens16x* ens16x)
77+
static inline Result Ens16x_Reset(ScioSense_Ens16x* ens16x)
7878
{
7979
Result result;
8080

@@ -97,7 +97,7 @@ inline Result Ens16x_Reset(ScioSense_Ens16x* ens16x)
9797
return result;
9898
}
9999

100-
inline Result Ens16x_Update(ScioSense_Ens16x* ens16x)
100+
static inline Result Ens16x_Update(ScioSense_Ens16x* ens16x)
101101
{
102102
Result result;
103103

@@ -128,12 +128,12 @@ inline Result Ens16x_Update(ScioSense_Ens16x* ens16x)
128128
return result;
129129
}
130130

131-
inline Result Ens16x_StartStandardMeasure(ScioSense_Ens16x* ens16x)
131+
static inline Result Ens16x_StartStandardMeasure(ScioSense_Ens16x* ens16x)
132132
{
133133
return Ens16x_SetOperatingMode(ens16x, ENS16X_OPERATING_MODE_STANDARD);
134134
}
135135

136-
inline Result Ens16x_WriteCompensation(ScioSense_Ens16x* ens16x, const uint16_t temperature, const uint16_t relativeHumidity)
136+
static inline Result Ens16x_WriteCompensation(ScioSense_Ens16x* ens16x, const uint16_t temperature, const uint16_t relativeHumidity)
137137
{
138138
uint8_t compensation[4];
139139
compensation[0] = temperature & 0xff;
@@ -145,7 +145,7 @@ inline Result Ens16x_WriteCompensation(ScioSense_Ens16x* ens16x, const uint16_t
145145
return write(ENS16X_REGISTER_ADDRESS_TEMP_IN, compensation, sizeof(compensation));
146146
}
147147

148-
inline Result Ens16x_WriteConfiguration(ScioSense_Ens16x* ens16x, const Ens16x_Configuration configuration)
148+
static inline Result Ens16x_WriteConfiguration(ScioSense_Ens16x* ens16x, const Ens16x_Configuration configuration)
149149
{
150150
Result result;
151151

@@ -158,7 +158,7 @@ inline Result Ens16x_WriteConfiguration(ScioSense_Ens16x* ens16x, const Ens16x_C
158158
return result;
159159
}
160160

161-
inline Result Ens16x_ReadFirmwareVersion(ScioSense_Ens16x* ens16x)
161+
static inline Result Ens16x_ReadFirmwareVersion(ScioSense_Ens16x* ens16x)
162162
{
163163
Result result;
164164

@@ -191,7 +191,7 @@ inline Result Ens16x_ReadFirmwareVersion(ScioSense_Ens16x* ens16x)
191191
return result;
192192
}
193193

194-
inline Result Ens16x_ReadPartId(ScioSense_Ens16x* ens16x)
194+
static inline Result Ens16x_ReadPartId(ScioSense_Ens16x* ens16x)
195195
{
196196
Result result;
197197
uint8_t partIdData[2];
@@ -205,12 +205,12 @@ inline Result Ens16x_ReadPartId(ScioSense_Ens16x* ens16x)
205205
return result;
206206
}
207207

208-
inline Result Ens16x_ReadOpMode(ScioSense_Ens16x* ens16x)
208+
static inline Result Ens16x_ReadOpMode(ScioSense_Ens16x* ens16x)
209209
{
210210
return Ens16x_Read(ens16x, ENS16X_REGISTER_ADDRESS_OPMODE, &ens16x->operatingMode, sizeof(ens16x->operatingMode));
211211
}
212212

213-
inline Result Ens16x_SetOperatingMode(ScioSense_Ens16x* ens16x, const Ens16x_OperatingMode mode)
213+
static inline Result Ens16x_SetOperatingMode(ScioSense_Ens16x* ens16x, const Ens16x_OperatingMode mode)
214214
{
215215
Result result;
216216

@@ -236,7 +236,7 @@ inline Result Ens16x_SetOperatingMode(ScioSense_Ens16x* ens16x, const Ens16x_Ope
236236
return result;
237237
}
238238

239-
inline Result Ens16x_Wait(ScioSense_Ens16x* ens16x)
239+
static inline Result Ens16x_Wait(ScioSense_Ens16x* ens16x)
240240
{
241241
switch (ens16x->operatingMode)
242242
{
@@ -247,7 +247,7 @@ inline Result Ens16x_Wait(ScioSense_Ens16x* ens16x)
247247
return RESULT_OK;
248248
}
249249

250-
inline Result Ens16x_ValidateDataIntegrity (ScioSense_Ens16x* ens16x)
250+
static inline Result Ens16x_ValidateDataIntegrity (ScioSense_Ens16x* ens16x)
251251
{
252252
Result result;
253253
uint8_t misr;
@@ -265,9 +265,10 @@ inline Result Ens16x_ValidateDataIntegrity (ScioSense_Ens16x* ens16x)
265265
return result;
266266
}
267267

268-
inline Result Ens16x_Invoke(ScioSense_Ens16x* ens16x, const Ens16x_Command command, uint32_t ms, uint8_t retry)
268+
static inline Result Ens16x_Invoke(ScioSense_Ens16x* ens16x, const Ens16x_Command command, uint32_t ms)
269269
{
270-
Result result= RESULT_OK;
270+
Result result = RESULT_OK;
271+
uint8_t retry = 3;
271272

272273
if (ens16x->operatingMode != ENS16X_OPERATING_MODE_IDLE)
273274
{
@@ -313,93 +314,94 @@ inline Result Ens16x_Invoke(ScioSense_Ens16x* ens16x, const Ens16x_Command comma
313314
return result;
314315
}
315316

316-
inline bool Ens16x_IsConnected(ScioSense_Ens16x* ens16x)
317+
static inline bool Ens16x_IsConnected(ScioSense_Ens16x* ens16x)
317318
{
318319
return (ens16x->partId >= 0x160) && (ens16x->partId < 0x170);
319320
}
320321

321-
inline bool Ens160_IsConnected(ScioSense_Ens16x* ens16x)
322+
static inline bool Ens160_IsConnected(ScioSense_Ens16x* ens16x)
322323
{
323324
return ens16x->partId == 0x160;
324325
}
325326

326-
inline AirQualityIndex_UBA Ens16x_GetAirQualityIndex_UBA(ScioSense_Ens16x* ens16x)
327+
static inline AirQualityIndex_UBA Ens16x_GetAirQualityIndex_UBA(ScioSense_Ens16x* ens16x)
327328
{
328-
return (AirQualityIndex_UBA)(ens16x->dataBuffer[ENS16X_BUFFER_INFO_AQI_INDEX] & (uint8_t)0b00000111);
329+
static const uint8_t mask = 7; // 0b00000111
330+
return (AirQualityIndex_UBA)(ens16x->dataBuffer[ENS16X_BUFFER_INFO_AQI_INDEX] & mask);
329331
}
330332

331-
inline uint16_t Ens16x_GetEco2(ScioSense_Ens16x* ens16x)
333+
static inline uint16_t Ens16x_GetEco2(ScioSense_Ens16x* ens16x)
332334
{
333335
return (ens16x->dataBuffer[ENS16X_BUFFER_INFO_ECO2_INDEX + 1] << 8) + ens16x->dataBuffer[ENS16X_BUFFER_INFO_ECO2_INDEX];
334336
}
335337

336-
inline uint16_t Ens16x_GetTvoc(ScioSense_Ens16x* ens16x)
338+
static inline uint16_t Ens16x_GetTvoc(ScioSense_Ens16x* ens16x)
337339
{
338340
return (ens16x->dataBuffer[ENS16X_BUFFER_INFO_TVOC_INDEX + 1] << 8) + ens16x->dataBuffer[ENS16X_BUFFER_INFO_TVOC_INDEX];
339341
}
340342

341-
inline uint32_t calculateResistance(const uint16_t r)
343+
static inline uint32_t calculateResistance(const uint16_t r)
342344
{
343345
return (uint32_t)pow(2, (float)(r) / 2048);
344346
}
345347

346-
inline uint32_t Ens16x_GetRs0(ScioSense_Ens16x* ens16x)
348+
static inline uint32_t Ens16x_GetRs0(ScioSense_Ens16x* ens16x)
347349
{
348350
uint16_t r = (ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS0_INDEX + 1] << 8) + ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS0_INDEX];
349351
return calculateResistance(r);
350352
}
351353

352-
inline uint32_t Ens16x_GetRs1(ScioSense_Ens16x* ens16x)
354+
static inline uint32_t Ens16x_GetRs1(ScioSense_Ens16x* ens16x)
353355
{
354356
uint16_t r = (ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS1_INDEX + 1] << 8) + ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS1_INDEX];
355357
return calculateResistance(r);
356358
}
357359

358-
inline uint32_t Ens16x_GetRs2(ScioSense_Ens16x* ens16x)
360+
static inline uint32_t Ens16x_GetRs2(ScioSense_Ens16x* ens16x)
359361
{
360362
uint16_t r = (ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS2_INDEX + 1] << 8) + ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS2_INDEX];
361363
return calculateResistance(r);
362364
}
363365

364-
inline uint32_t Ens16x_GetRs3(ScioSense_Ens16x* ens16x)
366+
static inline uint32_t Ens16x_GetRs3(ScioSense_Ens16x* ens16x)
365367
{
366368
uint16_t r = (ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS3_INDEX + 1] << 8) + ens16x->resistanceBuffer[ENS16X_BUFFER_INFO_RS3_INDEX];
367369
return calculateResistance(r);
368370
}
369371

370-
inline Ens16x_DeviceStatus Ens16x_GetDeviceStatus(ScioSense_Ens16x* ens16x)
372+
static inline Ens16x_DeviceStatus Ens16x_GetDeviceStatus(ScioSense_Ens16x* ens16x)
371373
{
372374
return ens16x->deviceStatus;
373375
}
374376

375-
inline uint8_t* Ens16x_GetFirmwareVersion(ScioSense_Ens16x* ens16x)
377+
static inline uint8_t* Ens16x_GetFirmwareVersion(ScioSense_Ens16x* ens16x)
376378
{
377379
return ens16x->firmwareVersion;
378380
}
379381

380-
inline uint8_t* Ens16x_GetDataRaw(ScioSense_Ens16x* ens16x)
382+
static inline uint8_t* Ens16x_GetDataRaw(ScioSense_Ens16x* ens16x)
381383
{
382384
return ens16x->dataBuffer;
383385
}
384386

385-
inline uint16_t Ens16x_CalcTempInFromKelvin(const float temperature)
387+
static inline uint16_t Ens16x_CalcTempInFromKelvin(const float temperature)
386388
{
387389
return (uint16_t) (temperature * 64.f);
388390
}
389391

390-
inline uint16_t Ens16x_CalcTempInFromCelsius(const float temperature)
392+
static inline uint16_t Ens16x_CalcTempInFromCelsius(const float temperature)
391393
{
392394
return Ens16x_CalcTempInFromKelvin(temperature + 273.15f);
393395
}
394396

395-
inline uint16_t Ens16x_CalcTempInFromFahrenheit(const float temperature)
397+
static inline uint16_t Ens16x_CalcTempInFromFahrenheit(const float temperature)
396398
{
397399
return Ens16x_CalcTempInFromKelvin((5.f / 9.f) * (temperature + 459.67f));
398400
}
399401

400-
inline uint16_t Ens16x_CalcRhIn(float relativeHumidity)
402+
static inline uint16_t Ens16x_CalcRhIn(float relativeHumidity)
401403
{
402-
return uint16_t (relativeHumidity * 512.f);
404+
return (uint16_t)(relativeHumidity * 512.f);
403405
}
404406

405407
#undef write

src/lib/ens16x/ScioSense_Ens161.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
#define ENS161_BUFFER_INFO_AQIS_INDEX (ENS161_REGISTER_ADDRESS_DATA_AQIS - ENS16X_REGISTER_ADDRESS_DATA_AQI)
1919

2020

21-
Result Ens161_StartLowPowerMeasure (ScioSense_Ens16x* ens16x); // Starts the LOW POWER operating mode.
22-
Result Ens161_StartUltraLowPowerMeasure (ScioSense_Ens16x* ens16x); // Starts the ULTRA LOW POWER operating mode.
21+
static inline Result Ens161_StartLowPowerMeasure (ScioSense_Ens16x* ens16x); // Starts the LOW POWER operating mode.
22+
static inline Result Ens161_StartUltraLowPowerMeasure (ScioSense_Ens16x* ens16x); // Starts the ULTRA LOW POWER operating mode.
2323

24-
bool Ens161_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned 0x161
25-
uint16_t Ens161_GetAirQualityIndex_ScioSense (ScioSense_Ens16x* ens16x); // Calculate and return the Relative Air Quality Index according to ScioSense
24+
static inline bool Ens161_IsConnected (ScioSense_Ens16x* ens16x); // Tests whether a device is connected; returns true if ReadPartId() returned 0x161
25+
static inline uint16_t Ens161_GetAirQualityIndex_ScioSense (ScioSense_Ens16x* ens16x); // Calculate and return the Relative Air Quality Index according to ScioSense
2626

2727
#include "ScioSense_Ens161.inl.h"
2828
#endif // SCIOSENSE_ENS161_C_H

0 commit comments

Comments
 (0)