From 46ef3985567c2af7aaba8a0a0e546bc9e693fe83 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Tue, 20 Aug 2019 20:56:21 +0200 Subject: [PATCH] feat(pmic): Add API-call to read battery voltage Signed-off-by: Rahix <rahix@rahix.de> --- epicardium/epicardium.h | 11 +++++++++++ epicardium/modules/pmic.c | 8 ++++++++ pycardium/modules/os.c | 13 +++++++++++++ pycardium/modules/qstrdefs.h | 1 + 4 files changed, 33 insertions(+) diff --git a/epicardium/epicardium.h b/epicardium/epicardium.h index 87b24e89..69899aae 100644 --- a/epicardium/epicardium.h +++ b/epicardium/epicardium.h @@ -32,6 +32,7 @@ typedef _Bool bool; #define API_SYSTEM_EXIT 0x1 #define API_SYSTEM_EXEC 0x2 #define API_SYSTEM_RESET 0x3 +#define API_BATTERY_VOLTAGE 0x4 #define API_INTERRUPT_ENABLE 0xA #define API_INTERRUPT_DISABLE 0xB @@ -210,6 +211,16 @@ API(API_SYSTEM_EXEC, int __epic_exec(char *name)); */ API(API_SYSTEM_RESET, void epic_system_reset(void)); +/** + * Battery Voltage + * =============== + */ + +/** + * Read the current battery voltage. + */ +API(API_BATTERY_VOLTAGE, int epic_read_battery_voltage(float *result)); + /** * UART/Serial Interface * ===================== diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c index 6822f02d..ef97392c 100644 --- a/epicardium/modules/pmic.c +++ b/epicardium/modules/pmic.c @@ -180,6 +180,14 @@ static void pmic_check_battery() */ } +/* + * API-call for battery voltage + */ +int epic_read_battery_voltage(float *result) +{ + return pmic_read_amux(PMIC_AMUX_BATT_U, result); +} + static StaticTimer_t pmic_timer_data; static void vPmicTimerCb(TimerHandle_t xTimer) { diff --git a/pycardium/modules/os.c b/pycardium/modules/os.c index 385cc9de..c017e417 100644 --- a/pycardium/modules/os.c +++ b/pycardium/modules/os.c @@ -123,6 +123,18 @@ static mp_obj_t mp_os_rename(mp_obj_t py_oldp, mp_obj_t py_newp) } static MP_DEFINE_CONST_FUN_OBJ_2(rename_obj, mp_os_rename); +static mp_obj_t mp_os_read_battery() +{ + float result; + int res = epic_read_battery_voltage(&result); + if (res < 0) { + mp_raise_OSError(-res); + } + + return mp_obj_new_float(result); +} +static MP_DEFINE_CONST_FUN_OBJ_0(read_battery_obj, mp_os_read_battery); + static const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_os) }, { MP_ROM_QSTR(MP_QSTR_exit), MP_ROM_PTR(&exit_obj) }, @@ -132,6 +144,7 @@ static const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&unlink_obj) }, { MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mkdir_obj) }, { MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&rename_obj) }, + { MP_ROM_QSTR(MP_QSTR_read_battery), MP_ROM_PTR(&read_battery_obj) }, }; static MP_DEFINE_CONST_DICT(os_module_globals, os_module_globals_table); diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h index acf598f1..f78afd25 100644 --- a/pycardium/modules/qstrdefs.h +++ b/pycardium/modules/qstrdefs.h @@ -105,6 +105,7 @@ Q(listdir) Q(unlink) Q(mkdir) Q(rename) +Q(read_battery) /* gpio */ Q(gpio) -- GitLab