From e714412990cfe234f89131c1b98a8dac966881a8 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Sat, 31 Aug 2019 10:26:51 +0200 Subject: [PATCH] refactor(bme680): Create a Python wrapper module Signed-off-by: Rahix <rahix@rahix.de> --- pycardium/modules/py/bme680.py | 38 ++++++++++++++++++++++++++++++++ pycardium/modules/py/meson.build | 1 + pycardium/modules/qstrdefs.h | 2 +- pycardium/modules/sys_bme680.c | 4 ++-- 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 pycardium/modules/py/bme680.py diff --git a/pycardium/modules/py/bme680.py b/pycardium/modules/py/bme680.py new file mode 100644 index 00000000..d6f32f49 --- /dev/null +++ b/pycardium/modules/py/bme680.py @@ -0,0 +1,38 @@ +import sys_bme680 +import ucollections + +# Import old module for compatibility +from sys_bme680 import * # noqa + +Bme680Data = ucollections.namedtuple( + "Bme680Data", ["temperature", "humidity", "pressure", "gas_resistance"] +) + + +class Bme680: + def __init__(self): + sys_bme680.init() + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def get_data(self): + return Bme680Data(*sys_bme680.get_data()) + + def close(self): + sys_bme680.deinit() + + def temperature(self): + return self.get_data().temperature + + def humidity(self): + return self.get_data().humidity + + def pressure(self): + return self.get_data().pressure + + def gas_resistance(self): + return self.get_data().gas_resistance diff --git a/pycardium/modules/py/meson.build b/pycardium/modules/py/meson.build index 75bf937c..ade56b14 100644 --- a/pycardium/modules/py/meson.build +++ b/pycardium/modules/py/meson.build @@ -1,5 +1,6 @@ python_modules = files( 'bhi160.py', + 'bme680.py', 'color.py', 'htmlcolor.py', 'display.py', diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h index 1c480370..0ff0a8ca 100644 --- a/pycardium/modules/qstrdefs.h +++ b/pycardium/modules/qstrdefs.h @@ -104,7 +104,7 @@ Q(stop) Q(read) /* bme680 */ -Q(bme680) +Q(sys_bme680) Q(init) Q(deinit) Q(get_data) diff --git a/pycardium/modules/sys_bme680.c b/pycardium/modules/sys_bme680.c index ca4aca6d..f6899c77 100644 --- a/pycardium/modules/sys_bme680.c +++ b/pycardium/modules/sys_bme680.c @@ -46,7 +46,7 @@ static mp_obj_t mp_bme680_get_data() static MP_DEFINE_CONST_FUN_OBJ_0(bme680_get_data_obj, mp_bme680_get_data); static const mp_rom_map_elem_t bme680_module_globals_table[] = { - { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bme680) }, + { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sys_bme680) }, { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&bme680_init_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bme680_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_get_data), MP_ROM_PTR(&bme680_get_data_obj) }, @@ -59,4 +59,4 @@ const mp_obj_module_t bme680_module = { }; /* Register the module to make it available in Python */ -MP_REGISTER_MODULE(MP_QSTR_bme680, bme680_module, MODULE_BME680_ENABLED); +MP_REGISTER_MODULE(MP_QSTR_sys_bme680, bme680_module, MODULE_BME680_ENABLED); -- GitLab