2
2
3
3
extern " C"
4
4
{
5
+ #include < py/obj.h>
5
6
#include " mpy_m5power.h"
6
7
8
+
7
9
namespace m5
8
10
{
9
11
static inline Power_Class *getPower (const mp_obj_t & self) {
10
12
return (Power_Class *)(((pwr_obj_t *)MP_OBJ_TO_PTR (self))->btn );
11
13
}
12
14
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};
16
17
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* */
19
22
};
20
- /* *FORMAT-ON* */
21
23
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
22
24
// The first parameter is the Power object, parse from second parameter.
23
25
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
24
26
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 );
26
28
return mp_const_none;
27
29
}
28
30
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
+
29
54
mp_obj_t power_setLed (size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
30
55
enum {ARG_br};
31
- /* *FORMAT-OFF* */
32
56
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* */
34
60
};
35
- /* *FORMAT-ON* */
36
61
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
37
62
// The first parameter is the Power object, parse from second parameter.
38
63
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
46
71
return mp_const_none;
47
72
}
48
73
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;
51
92
}
52
93
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 };
56
96
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* */
58
101
};
59
- /* *FORMAT-ON* */
60
102
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
61
103
// The first parameter is the Power object, parse from second parameter.
62
104
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
63
105
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 );
65
107
return mp_const_none;
66
108
}
67
109
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 };
71
112
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* */
73
117
};
74
- /* *FORMAT-ON* */
75
118
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
76
119
// The first parameter is the Power object, parse from second parameter.
77
120
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
78
121
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 );
80
123
return mp_const_none;
81
124
}
82
125
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
+ }
86
129
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};
90
132
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* */
93
136
};
94
- /* *FORMAT-ON* */
95
137
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
96
138
// The first parameter is the Power object, parse from second parameter.
97
139
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
98
140
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 );
100
142
return mp_const_none;
101
143
}
102
144
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};
110
147
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* */
112
151
};
113
- /* *FORMAT-ON* */
114
152
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
115
153
// The first parameter is the Power object, parse from second parameter.
116
154
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
117
155
118
- getPower (pos_args[0 ])->setUsbOutput (args[ARG_enable]. u_bool );
156
+ getPower (pos_args[0 ])->setChargeCurrent (args[ARG_ma]. u_int );
119
157
return mp_const_none;
120
158
}
121
159
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;
124
163
}
125
164
126
165
mp_obj_t power_isCharging (mp_obj_t self) {
127
166
return mp_obj_new_bool (getPower (self)->isCharging ());
128
167
}
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
+ }
129
189
}
130
190
}
0 commit comments