5858#include "pybadc.h"
5959#include "pybi2c.h"
6060#include "pybsd.h"
61+ #include "pybwdt.h"
6162#include "utils.h"
6263#include "gccollect.h"
6364
@@ -251,7 +252,7 @@ STATIC mp_obj_t pyb_repl_uart(uint n_args, const mp_obj_t *args) {
251252 } else if (mp_obj_get_type (args [0 ]) == & pyb_uart_type ) {
252253 pyb_stdio_uart = args [0 ];
253254 } else {
254- nlr_raise (mp_obj_new_exception_msg (& mp_type_ValueError , mpexception_num_type_invalid_arguments ));
255+ nlr_raise (mp_obj_new_exception_msg (& mp_type_TypeError , mpexception_num_type_invalid_arguments ));
255256 }
256257 return mp_const_none ;
257258 }
@@ -269,6 +270,30 @@ STATIC mp_obj_t pyb_mkdisk(mp_obj_t path_o) {
269270}
270271STATIC MP_DEFINE_CONST_FUN_OBJ_1 (pyb_mkdisk_obj , pyb_mkdisk );
271272
273+ /// \function wdt_enable('msec')
274+ /// Enabled the watchdog timer with msec timeout value
275+ STATIC mp_obj_t pyb_enable_wdt (mp_obj_t msec_in ) {
276+ mp_int_t msec = mp_obj_get_int (msec_in );
277+ pybwdt_ret_code_t ret ;
278+ ret = pybwdt_enable (msec );
279+ if (ret == E_PYBWDT_IS_RUNNING ) {
280+ nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_request_not_possible ));
281+ }
282+ else if (ret == E_PYBWDT_INVALID_TIMEOUT ) {
283+ nlr_raise (mp_obj_new_exception_msg (& mp_type_ValueError , mpexception_value_invalid_arguments ));
284+ }
285+ return mp_const_none ;
286+ }
287+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (pyb_enable_wdt_obj , pyb_enable_wdt );
288+
289+ /// \function wdt_kick()
290+ /// Kicks the watchdog timer
291+ STATIC mp_obj_t pyb_kick_wdt (void ) {
292+ pybwdt_kick ();
293+ return mp_const_none ;
294+ }
295+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (pyb_kick_wdt_obj , pyb_kick_wdt );
296+
272297MP_DECLARE_CONST_FUN_OBJ (pyb_main_obj ); // defined in main.c
273298
274299STATIC const mp_map_elem_t pyb_module_globals_table [] = {
@@ -300,6 +325,8 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
300325 { MP_OBJ_NEW_QSTR (MP_QSTR_udelay ), (mp_obj_t )& pyb_udelay_obj },
301326 { MP_OBJ_NEW_QSTR (MP_QSTR_sync ), (mp_obj_t )& pyb_sync_obj },
302327 { MP_OBJ_NEW_QSTR (MP_QSTR_mkdisk ), (mp_obj_t )& pyb_mkdisk_obj },
328+ { MP_OBJ_NEW_QSTR (MP_QSTR_enable_wdt ), (mp_obj_t )& pyb_enable_wdt_obj },
329+ { MP_OBJ_NEW_QSTR (MP_QSTR_kick_wdt ), (mp_obj_t )& pyb_kick_wdt_obj },
303330
304331#if MICROPY_HW_ENABLE_RNG
305332 { MP_OBJ_NEW_QSTR (MP_QSTR_rng ), (mp_obj_t )& pyb_rng_get_obj },
@@ -316,7 +343,7 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
316343 { MP_OBJ_NEW_QSTR (MP_QSTR_UART ), (mp_obj_t )& pyb_uart_type },
317344
318345#if MICROPY_HW_HAS_SDCARD
319- { MP_OBJ_NEW_QSTR (MP_QSTR_SD ), (mp_obj_t )& pyb_sdcard_obj },
346+ { MP_OBJ_NEW_QSTR (MP_QSTR_SD ), (mp_obj_t )& pyb_sd_type },
320347#endif
321348};
322349
0 commit comments