Skip to content

Commit f3363b6

Browse files
committed
Fix get_sensor_variant command
The sensor variant computation was wrong.
1 parent 1836312 commit f3363b6

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

sensirion_i2c_scd4x/commands.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,11 @@ def pack(self):
502502

503503

504504
class SensorVariant(Enum):
505-
UNKNOWN = 0
506-
SCD40 = 1
507-
SCD41 = 2
505+
MASK = 61440
506+
SCD40 = 0
507+
SCD41 = 4096
508+
SCD42 = 8192
509+
SCD43 = 20480
508510

509511
def __int__(self):
510512
return self.value

sensirion_i2c_scd4x/device.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@ def get_sensor_variant_raw(self):
388388
:return sensor_variant:
389389
Bits[15…12] = 0000 → SCD40
390390
Bits[15…12] = 0001 → SCD41
391+
Bits[15…12] = 0101 → SCD43
391392
392393
.. note::
393394
This command is only available in idle mode.
@@ -628,13 +629,19 @@ def get_sensor_variant(self):
628629
.. note::
629630
This command is only available in idle mode.
630631
"""
632+
ret_val = SensorVariant.MASK
633+
mask = int(ret_val)
631634
raw_sensor_variant = self.scd4x.get_sensor_variant_raw()
632-
variant = raw_sensor_variant & 4
633-
if variant == 0:
634-
return SensorVariant.SCD40
635-
elif variant == 1:
636-
return SensorVariant.SCD41
637-
return SensorVariant.UNKNOWN
635+
my_sensor_variant = int(raw_sensor_variant & mask)
636+
if my_sensor_variant == int(SensorVariant.SCD40):
637+
ret_val = SensorVariant.SCD40
638+
elif my_sensor_variant == int(SensorVariant.SCD41):
639+
ret_val = SensorVariant.SCD41
640+
elif my_sensor_variant == int(SensorVariant.SCD42):
641+
ret_val = SensorVariant.SCD42
642+
elif my_sensor_variant == int(SensorVariant.SCD43):
643+
ret_val = SensorVariant.SCD43
644+
return ret_val
638645

639646
def measure_and_read_single_shot(self):
640647
"""

0 commit comments

Comments
 (0)