diff --git a/epicardium/epicardium.h b/epicardium/epicardium.h index 87b24e8975dff763119aa4ffe6ce336e1cb75212..69899aaeb9b7e52a848b61b3e9451dd75f14708e 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 6822f02d21928b4a897a085b4fff65a01bd935cc..ef97392cb887b1ce43cbe948b79ec07286eccf5a 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 385cc9de659270c1d21764f3c956a2f3da9ec16a..c017e417e75a0dea115af340bb1b5a2b85c672e9 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 acf598f1b82c81e31722934c881d7d1a3217d9b3..f78afd25ed5aba9b38ef3b29d845ef5d573e47a6 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)