@@ -43,6 +43,16 @@ STATIC void mp_machine_idle(void);
43
43
NORETURN void mp_machine_bootloader (size_t n_args , const mp_obj_t * args );
44
44
#endif
45
45
46
+ #if MICROPY_PY_MACHINE_BARE_METAL_FUNCS
47
+ STATIC mp_obj_t mp_machine_unique_id (void );
48
+ NORETURN STATIC void mp_machine_reset (void );
49
+ STATIC mp_int_t mp_machine_reset_cause (void );
50
+ STATIC mp_obj_t mp_machine_get_freq (void );
51
+ STATIC void mp_machine_set_freq (size_t n_args , const mp_obj_t * args );
52
+ STATIC void mp_machine_lightsleep (size_t n_args , const mp_obj_t * args );
53
+ NORETURN STATIC void mp_machine_deepsleep (size_t n_args , const mp_obj_t * args );
54
+ #endif
55
+
46
56
// The port can provide additional machine-module implementation in this file.
47
57
#ifdef MICROPY_PY_MACHINE_INCLUDEFILE
48
58
#include MICROPY_PY_MACHINE_INCLUDEFILE
@@ -67,6 +77,46 @@ STATIC mp_obj_t machine_idle(void) {
67
77
}
68
78
STATIC MP_DEFINE_CONST_FUN_OBJ_0 (machine_idle_obj , machine_idle );
69
79
80
+ #if MICROPY_PY_MACHINE_BARE_METAL_FUNCS
81
+
82
+ STATIC mp_obj_t machine_unique_id (void ) {
83
+ return mp_machine_unique_id ();
84
+ }
85
+ MP_DEFINE_CONST_FUN_OBJ_0 (machine_unique_id_obj , machine_unique_id );
86
+
87
+ NORETURN STATIC mp_obj_t machine_reset (void ) {
88
+ mp_machine_reset ();
89
+ }
90
+ MP_DEFINE_CONST_FUN_OBJ_0 (machine_reset_obj , machine_reset );
91
+
92
+ STATIC mp_obj_t machine_reset_cause (void ) {
93
+ return MP_OBJ_NEW_SMALL_INT (mp_machine_reset_cause ());
94
+ }
95
+ MP_DEFINE_CONST_FUN_OBJ_0 (machine_reset_cause_obj , machine_reset_cause );
96
+
97
+ STATIC mp_obj_t machine_freq (size_t n_args , const mp_obj_t * args ) {
98
+ if (n_args == 0 ) {
99
+ return mp_machine_get_freq ();
100
+ } else {
101
+ mp_machine_set_freq (n_args , args );
102
+ return mp_const_none ;
103
+ }
104
+ }
105
+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (machine_freq_obj , 0 , 1 , machine_freq );
106
+
107
+ STATIC mp_obj_t machine_lightsleep (size_t n_args , const mp_obj_t * args ) {
108
+ mp_machine_lightsleep (n_args , args );
109
+ return mp_const_none ;
110
+ }
111
+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (machine_lightsleep_obj , 0 , 1 , machine_lightsleep );
112
+
113
+ NORETURN STATIC mp_obj_t machine_deepsleep (size_t n_args , const mp_obj_t * args ) {
114
+ mp_machine_deepsleep (n_args , args );
115
+ }
116
+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (machine_deepsleep_obj , 0 , 1 , machine_deepsleep );
117
+
118
+ #endif
119
+
70
120
STATIC const mp_rom_map_elem_t machine_module_globals_table [] = {
71
121
{ MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_machine ) },
72
122
@@ -75,14 +125,28 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = {
75
125
{ MP_ROM_QSTR (MP_QSTR_mem16 ), MP_ROM_PTR (& machine_mem16_obj ) },
76
126
{ MP_ROM_QSTR (MP_QSTR_mem32 ), MP_ROM_PTR (& machine_mem32_obj ) },
77
127
128
+ // Miscellaneous functions.
129
+ #if MICROPY_PY_MACHINE_BARE_METAL_FUNCS
130
+ { MP_ROM_QSTR (MP_QSTR_unique_id ), MP_ROM_PTR (& machine_unique_id_obj ) },
131
+ #endif
132
+
78
133
// Reset related functions.
79
134
{ MP_ROM_QSTR (MP_QSTR_soft_reset ), MP_ROM_PTR (& machine_soft_reset_obj ) },
80
135
#if MICROPY_PY_MACHINE_BOOTLOADER
81
136
{ MP_ROM_QSTR (MP_QSTR_bootloader ), MP_ROM_PTR (& machine_bootloader_obj ) },
82
137
#endif
138
+ #if MICROPY_PY_MACHINE_BARE_METAL_FUNCS
139
+ { MP_ROM_QSTR (MP_QSTR_reset ), MP_ROM_PTR (& machine_reset_obj ) },
140
+ { MP_ROM_QSTR (MP_QSTR_reset_cause ), MP_ROM_PTR (& machine_reset_cause_obj ) },
141
+ #endif
83
142
84
143
// Power related functions.
85
144
{ MP_ROM_QSTR (MP_QSTR_idle ), MP_ROM_PTR (& machine_idle_obj ) },
145
+ #if MICROPY_PY_MACHINE_BARE_METAL_FUNCS
146
+ { MP_ROM_QSTR (MP_QSTR_freq ), MP_ROM_PTR (& machine_freq_obj ) },
147
+ { MP_ROM_QSTR (MP_QSTR_lightsleep ), MP_ROM_PTR (& machine_lightsleep_obj ) },
148
+ { MP_ROM_QSTR (MP_QSTR_deepsleep ), MP_ROM_PTR (& machine_deepsleep_obj ) },
149
+ #endif
86
150
87
151
// Functions for bit protocols.
88
152
#if MICROPY_PY_MACHINE_BITSTREAM
0 commit comments