22
33extern " C"
44{
5+ #include < py/obj.h>
56#include " mpy_m5power.h"
67
8+
79namespace m5
810{
911 static inline Power_Class *getPower (const mp_obj_t & self) {
1012 return (Power_Class *)(((pwr_obj_t *)MP_OBJ_TO_PTR (self))->btn );
1113 }
1214
13- mp_obj_t power_setExtPower (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
14- enum {ARG_en, ARG_mask};
15- /* *FORMAT-OFF* */
15+ mp_obj_t power_setExtOutput (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
16+ enum {ARG_enable, ARG_port_mask};
1617 const mp_arg_t allowed_args[] = {
17- { MP_QSTR_en, MP_ARG_BOOL | MP_ARG_REQUIRED, {.u_bool = true } },
18- { MP_QSTR_mask, MP_ARG_INT , {.u_int = 0xFF } },
18+ /* *FORMAT-OFF* */
19+ { MP_QSTR_enable, MP_ARG_BOOL | MP_ARG_REQUIRED, {.u_bool = true } },
20+ { MP_QSTR_port_mask, MP_ARG_INT, {.u_int = 0xFF } },
21+ /* *FORMAT-ON* */
1922 };
20- /* *FORMAT-ON* */
2123 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
2224 // The first parameter is the Power object, parse from second parameter.
2325 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
2426
25- getPower (pos_args[0 ])->setExtPower (args[ARG_en ].u_bool , (ext_port_mask_t )args[ARG_en ].u_int );
27+ getPower (pos_args[0 ])->setExtOutput (args[ARG_enable ].u_bool , (ext_port_mask_t )args[ARG_port_mask ].u_int );
2628 return mp_const_none;
2729 }
2830
31+ mp_obj_t power_getExtOutput (mp_obj_t self) {
32+ return mp_obj_new_bool (getPower (self)->getExtOutput ());
33+ }
34+
35+ mp_obj_t power_setUsbOutput (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
36+ enum {ARG_enable};
37+ const mp_arg_t allowed_args[] = {
38+ /* *FORMAT-OFF* */
39+ { MP_QSTR_enable, MP_ARG_INT | MP_ARG_REQUIRED, {.u_bool = true } }
40+ /* *FORMAT-ON* */
41+ };
42+ mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
43+ // The first parameter is the Power object, parse from second parameter.
44+ mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
45+
46+ getPower (pos_args[0 ])->setUsbOutput (args[ARG_enable].u_bool );
47+ return mp_const_none;
48+ }
49+
50+ mp_obj_t power_getUsbOutput (mp_obj_t self) {
51+ return mp_obj_new_bool (getPower (self)->getUsbOutput ());
52+ }
53+
2954 mp_obj_t power_setLed (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
3055 enum {ARG_br};
31- /* *FORMAT-OFF* */
3256 const mp_arg_t allowed_args[] = {
33- { MP_QSTR_br, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0 } }
57+ /* *FORMAT-OFF* */
58+ { MP_QSTR_br, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0 } },
59+ /* *FORMAT-ON* */
3460 };
35- /* *FORMAT-ON* */
3661 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
3762 // The first parameter is the Power object, parse from second parameter.
3863 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
@@ -46,85 +71,120 @@ namespace m5
4671 return mp_const_none;
4772 }
4873
49- mp_obj_t power_getBatteryLevel (mp_obj_t self) {
50- return mp_obj_new_int (getPower (self)->getBatteryLevel ());
74+ mp_obj_t power_timerSleep (size_t n_args, const mp_obj_t *args) {
75+ if (n_args == 2 ) {
76+ getPower (args[0 ])->timerSleep (mp_obj_get_int (args[1 ]));
77+ } else if (n_args == 3 ) {
78+ rtc_time_t time;
79+ time.minutes = mp_obj_get_int (args[1 ]);
80+ time.hours = mp_obj_get_int (args[2 ]);
81+ getPower (args[0 ])->timerSleep (time);
82+ } else if (n_args == 5 ) {
83+ rtc_time_t time;
84+ rtc_date_t date;
85+ time.minutes = mp_obj_get_int (args[1 ]);
86+ time.hours = mp_obj_get_int (args[2 ]);
87+ date.date = mp_obj_get_int (args[3 ]);
88+ date.weekDay = mp_obj_get_int (args[4 ]);
89+ getPower (args[0 ])->timerSleep (date, time);
90+ }
91+ return mp_const_none;
5192 }
5293
53- mp_obj_t power_setBatteryCharge (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
54- enum {ARG_enable};
55- /* *FORMAT-OFF* */
94+ mp_obj_t power_deepSleep (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
95+ enum { ARG_micro_seconds, ARG_touch_wakeup };
5696 const mp_arg_t allowed_args[] = {
57- { MP_QSTR_enable, MP_ARG_INT | MP_ARG_REQUIRED, {.u_bool = true } }
97+ /* *FORMAT-OFF* */
98+ { MP_QSTR_micro_seconds, MP_ARG_INT, {.u_int = 0 } },
99+ { MP_QSTR_touch_wakeup, MP_ARG_BOOL, {.u_bool = true } },
100+ /* *FORMAT-ON* */
58101 };
59- /* *FORMAT-ON* */
60102 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
61103 // The first parameter is the Power object, parse from second parameter.
62104 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
63105
64- getPower (pos_args[0 ])->setBatteryCharge (args[ARG_enable ].u_bool );
106+ getPower (pos_args[0 ])->deepSleep (args[ARG_micro_seconds]. u_int , args[ARG_touch_wakeup ].u_bool );
65107 return mp_const_none;
66108 }
67109
68- mp_obj_t power_setChargeCurrent (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
69- enum {ARG_ma};
70- /* *FORMAT-OFF* */
110+ mp_obj_t power_lightSleep (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
111+ enum { ARG_micro_seconds, ARG_touch_wakeup };
71112 const mp_arg_t allowed_args[] = {
72- { MP_QSTR_ma, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = true } }
113+ /* *FORMAT-OFF* */
114+ { MP_QSTR_micro_seconds, MP_ARG_INT, {.u_int = 0 } },
115+ { MP_QSTR_touch_wakeup, MP_ARG_BOOL, {.u_bool = true } },
116+ /* *FORMAT-ON* */
73117 };
74- /* *FORMAT-ON* */
75118 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
76119 // The first parameter is the Power object, parse from second parameter.
77120 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
78121
79- getPower (pos_args[0 ])->setChargeCurrent (args[ARG_ma ].u_int );
122+ getPower (pos_args[0 ])->lightSleep (args[ARG_micro_seconds ].u_int , args[ARG_touch_wakeup]. u_bool );
80123 return mp_const_none;
81124 }
82125
83- // mp_obj_t power_getBatteryChargeCurrent (mp_obj_t self) {
84- // return mp_obj_new_int(getPower(self)->getBatteryChargeCurrent ());
85- // }
126+ mp_obj_t power_getBatteryLevel (mp_obj_t self) {
127+ return mp_obj_new_int (getPower (self)->getBatteryLevel ());
128+ }
86129
87- mp_obj_t power_setExtOutput (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
88- enum {ARG_enable, ARG_port_mask};
89- /* *FORMAT-OFF* */
130+ mp_obj_t power_setBatteryCharge (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
131+ enum {ARG_enable};
90132 const mp_arg_t allowed_args[] = {
91- { MP_QSTR_enable, MP_ARG_BOOL | MP_ARG_REQUIRED, {.u_bool = true } },
92- { MP_QSTR_port_mask, MP_ARG_INT, {.u_int = 0xFF } },
133+ /* *FORMAT-OFF* */
134+ { MP_QSTR_enable, MP_ARG_INT | MP_ARG_REQUIRED, {.u_bool = true } }
135+ /* *FORMAT-ON* */
93136 };
94- /* *FORMAT-ON* */
95137 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
96138 // The first parameter is the Power object, parse from second parameter.
97139 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
98140
99- getPower (pos_args[0 ])->setExtOutput (args[ARG_enable].u_bool , ( ext_port_mask_t )args[ARG_port_mask]. u_int );
141+ getPower (pos_args[0 ])->setBatteryCharge (args[ARG_enable].u_bool );
100142 return mp_const_none;
101143 }
102144
103- mp_obj_t power_getExtOutput (mp_obj_t self) {
104- return mp_obj_new_bool (getPower (self)->getExtOutput ());
105- }
106-
107- mp_obj_t power_setUsbOutput (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
108- enum {ARG_enable};
109- /* *FORMAT-OFF* */
145+ mp_obj_t power_setChargeCurrent (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
146+ enum {ARG_ma};
110147 const mp_arg_t allowed_args[] = {
111- { MP_QSTR_enable, MP_ARG_INT | MP_ARG_REQUIRED, {.u_bool = true } }
148+ /* *FORMAT-OFF* */
149+ { MP_QSTR_ma, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = true } }
150+ /* *FORMAT-ON* */
112151 };
113- /* *FORMAT-ON* */
114152 mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
115153 // The first parameter is the Power object, parse from second parameter.
116154 mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
117155
118- getPower (pos_args[0 ])->setUsbOutput (args[ARG_enable]. u_bool );
156+ getPower (pos_args[0 ])->setChargeCurrent (args[ARG_ma]. u_int );
119157 return mp_const_none;
120158 }
121159
122- mp_obj_t power_getUsbOutput (mp_obj_t self) {
123- return mp_obj_new_bool (getPower (self)->getUsbOutput ());
160+ mp_obj_t power_setChargeVoltage (mp_obj_t self, mp_obj_t max_mv) {
161+ getPower (self)->setChargeVoltage (mp_obj_get_int (max_mv));
162+ return mp_const_none;
124163 }
125164
126165 mp_obj_t power_isCharging (mp_obj_t self) {
127166 return mp_obj_new_bool (getPower (self)->isCharging ());
128167 }
168+
169+ mp_obj_t power_getBatteryVoltage (mp_obj_t self) {
170+ return mp_obj_new_int (getPower (self)->getBatteryVoltage ());
171+ }
172+
173+ mp_obj_t power_getBatteryCurrent (mp_obj_t self) {
174+ return mp_obj_new_int (getPower (self)->getBatteryCurrent ());
175+ }
176+
177+ mp_obj_t power_getKeyState (mp_obj_t self) {
178+ return mp_obj_new_int (getPower (self)->getKeyState ());
179+ }
180+
181+ mp_obj_t power_setVibration (mp_obj_t self, mp_obj_t level) {
182+ getPower (self)->setVibration (mp_obj_get_int (level));
183+ return mp_const_none;
184+ }
185+
186+ mp_obj_t power_getType (mp_obj_t self) {
187+ return mp_obj_new_bool (getPower (self)->getType ());
188+ }
129189}
130190}
0 commit comments