summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal')
-rw-r--r--stmhal/accel.c22
-rw-r--r--stmhal/adc.c25
-rw-r--r--stmhal/dac.c15
-rw-r--r--stmhal/exti.c16
-rw-r--r--stmhal/file.c14
-rw-r--r--stmhal/help.c6
-rw-r--r--stmhal/i2c.c14
-rw-r--r--stmhal/led.c16
-rw-r--r--stmhal/sdcard.c14
-rw-r--r--stmhal/servo.c10
-rw-r--r--stmhal/usart.c16
11 files changed, 91 insertions, 77 deletions
diff --git a/stmhal/accel.c b/stmhal/accel.c
index 15782419b7..f4fd5469bd 100644
--- a/stmhal/accel.c
+++ b/stmhal/accel.c
@@ -8,6 +8,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "runtime.h"
#include "i2c.h"
#include "accel.h"
@@ -158,20 +159,21 @@ STATIC mp_obj_t pyb_accel_write(mp_obj_t self_in, mp_obj_t reg, mp_obj_t val) {
MP_DEFINE_CONST_FUN_OBJ_3(pyb_accel_write_obj, pyb_accel_write);
-STATIC const mp_method_t pyb_accel_methods[] = {
- { MP_QSTR_x, &pyb_accel_x_obj },
- { MP_QSTR_y, &pyb_accel_y_obj },
- { MP_QSTR_z, &pyb_accel_z_obj },
- { MP_QSTR_tilt, &pyb_accel_tilt_obj },
- { MP_QSTR_filtered_xyz, &pyb_accel_filtered_xyz_obj },
- { MP_QSTR_read, &pyb_accel_read_obj },
- { MP_QSTR_write, &pyb_accel_write_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t pyb_accel_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_x), (mp_obj_t)&pyb_accel_x_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_y), (mp_obj_t)&pyb_accel_y_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_z), (mp_obj_t)&pyb_accel_z_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_tilt), (mp_obj_t)&pyb_accel_tilt_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_filtered_xyz), (mp_obj_t)&pyb_accel_filtered_xyz_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&pyb_accel_read_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&pyb_accel_write_obj },
};
+STATIC MP_DEFINE_CONST_DICT(pyb_accel_locals_dict, pyb_accel_locals_dict_table);
+
const mp_obj_type_t pyb_accel_type = {
{ &mp_type_type },
.name = MP_QSTR_Accel,
.make_new = pyb_accel_make_new,
- .methods = pyb_accel_methods,
+ .locals_dict = (mp_obj_t)&pyb_accel_locals_dict,
};
diff --git a/stmhal/adc.c b/stmhal/adc.c
index 7d0d3da99b..f05e7823dd 100644
--- a/stmhal/adc.c
+++ b/stmhal/adc.c
@@ -7,6 +7,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "adc.h"
#include "pin.h"
#include "build/pins.h"
@@ -163,17 +164,18 @@ STATIC mp_obj_t adc_read(mp_obj_t self_in) {
STATIC MP_DEFINE_CONST_FUN_OBJ_1(adc_read_obj, adc_read);
-STATIC const mp_method_t adc_methods[] = {
- { MP_QSTR_read, &adc_read_obj},
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t adc_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&adc_read_obj},
};
+STATIC MP_DEFINE_CONST_DICT(adc_locals_dict, adc_locals_dict_table);
+
const mp_obj_type_t pyb_adc_type = {
{ &mp_type_type },
.name = MP_QSTR_ADC,
.print = adc_print,
.make_new = adc_make_new,
- .methods = adc_methods,
+ .locals_dict = (mp_obj_t)&adc_locals_dict,
};
/******************************************************************************/
@@ -320,19 +322,20 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(adc_all_read_core_temp_obj, adc_all_read_core_t
STATIC MP_DEFINE_CONST_FUN_OBJ_1(adc_all_read_core_vbat_obj, adc_all_read_core_vbat);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(adc_all_read_core_vref_obj, adc_all_read_core_vref);
-STATIC const mp_method_t adc_all_methods[] = {
- { MP_QSTR_read_channel, &adc_all_read_channel_obj},
- { MP_QSTR_read_core_temp, &adc_all_read_core_temp_obj},
- { MP_QSTR_read_core_vbat, &adc_all_read_core_vbat_obj},
- { MP_QSTR_read_core_vref, &adc_all_read_core_vref_obj},
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t adc_all_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read_channel), (mp_obj_t) &adc_all_read_channel_obj},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read_core_temp), (mp_obj_t)&adc_all_read_core_temp_obj},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read_core_vbat), (mp_obj_t)&adc_all_read_core_vbat_obj},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read_core_vref), (mp_obj_t)&adc_all_read_core_vref_obj},
};
+STATIC MP_DEFINE_CONST_DICT(adc_all_locals_dict, adc_all_locals_dict_table);
+
STATIC const mp_obj_type_t adc_all_type = {
{ &mp_type_type },
.name = MP_QSTR_ADC,
.print = adc_all_print,
- .methods = adc_all_methods,
+ .locals_dict = (mp_obj_t)&adc_all_locals_dict,
};
STATIC mp_obj_t pyb_ADC_all(mp_obj_t resolution) {
diff --git a/stmhal/dac.c b/stmhal/dac.c
index bc86e07bdf..caf8beeecb 100644
--- a/stmhal/dac.c
+++ b/stmhal/dac.c
@@ -260,20 +260,21 @@ mp_obj_t pyb_dac_dma(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(pyb_dac_dma_obj, 3, pyb_dac_dma);
-STATIC const mp_method_t pyb_dac_methods[] = {
- { MP_QSTR_noise, &pyb_dac_noise_obj },
- { MP_QSTR_triangle, &pyb_dac_triangle_obj },
- { MP_QSTR_write, &pyb_dac_write_obj },
- { MP_QSTR_dma, &pyb_dac_dma_obj },
+STATIC const mp_map_elem_t pyb_dac_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_noise), (mp_obj_t)&pyb_dac_noise_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_triangle), (mp_obj_t)&pyb_dac_triangle_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&pyb_dac_write_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_dma), (mp_obj_t)&pyb_dac_dma_obj },
// TODO add function that does double buffering:
// dma2(freq, buf1, buf2, callback)
// where callback is called when the buffer has been drained
- { MP_QSTR_NULL, NULL },
};
+STATIC MP_DEFINE_CONST_DICT(pyb_dac_locals_dict, pyb_dac_locals_dict_table);
+
const mp_obj_type_t pyb_dac_type = {
{ &mp_type_type },
.name = MP_QSTR_DAC,
.make_new = pyb_dac_make_new,
- .methods = pyb_dac_methods,
+ .locals_dict = (mp_obj_t)&pyb_dac_locals_dict,
};
diff --git a/stmhal/exti.c b/stmhal/exti.c
index 41f8e378a8..fddeeba84a 100644
--- a/stmhal/exti.c
+++ b/stmhal/exti.c
@@ -8,6 +8,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "runtime.h"
#include "nlr.h"
@@ -228,14 +229,15 @@ static MP_DEFINE_CONST_FUN_OBJ_1(exti_obj_enable_obj, exti_obj_enable);
static MP_DEFINE_CONST_FUN_OBJ_1(exti_obj_disable_obj, exti_obj_disable);
static MP_DEFINE_CONST_FUN_OBJ_1(exti_obj_swint_obj, exti_obj_swint);
-static const mp_method_t exti_methods[] = {
- { MP_QSTR_line, &exti_obj_line_obj },
- { MP_QSTR_enable, &exti_obj_enable_obj },
- { MP_QSTR_disable, &exti_obj_disable_obj },
- { MP_QSTR_swint, &exti_obj_swint_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t exti_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_line), (mp_obj_t) &exti_obj_line_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_enable), (mp_obj_t) &exti_obj_enable_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_disable), (mp_obj_t) &exti_obj_disable_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_swint), (mp_obj_t) &exti_obj_swint_obj },
};
+STATIC MP_DEFINE_CONST_DICT(exti_locals_dict, exti_locals_dict_table);
+
static mp_obj_t exti_regs(void) {
printf("EXTI_IMR %08lx\n", EXTI->IMR);
printf("EXTI_EMR %08lx\n", EXTI->EMR);
@@ -320,7 +322,7 @@ const mp_obj_type_t exti_obj_type = {
{ &exti_meta_obj_type },
.name = MP_QSTR_Exti,
.print = exti_obj_print,
- .methods = exti_methods,
+ .locals_dict = (mp_obj_t)&exti_locals_dict,
};
void exti_init(void) {
diff --git a/stmhal/file.c b/stmhal/file.c
index 210d26803d..219d58ddb3 100644
--- a/stmhal/file.c
+++ b/stmhal/file.c
@@ -4,6 +4,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "file.h"
#include "ff.h"
@@ -51,18 +52,19 @@ static MP_DEFINE_CONST_FUN_OBJ_1(file_obj_close_obj, file_obj_close);
// TODO gc hook to close the file if not already closed
-static const mp_method_t file_methods[] = {
- { MP_QSTR_read, &file_obj_read_obj },
- { MP_QSTR_write, &file_obj_write_obj },
- { MP_QSTR_close, &file_obj_close_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t file_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&file_obj_read_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&file_obj_write_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_close), (mp_obj_t)&file_obj_close_obj },
};
+STATIC MP_DEFINE_CONST_DICT(file_locals_dict, file_locals_dict_table);
+
static const mp_obj_type_t file_obj_type = {
{ &mp_type_type },
.name = MP_QSTR_File,
.print = file_obj_print,
- .methods = file_methods,
+ .locals_dict = (mp_obj_t)&file_locals_dict,
};
STATIC mp_obj_t pyb_io_open(mp_obj_t o_filename, mp_obj_t o_mode) {
diff --git a/stmhal/help.c b/stmhal/help.c
index a1c81c824f..7dc7226b2c 100644
--- a/stmhal/help.c
+++ b/stmhal/help.c
@@ -72,12 +72,6 @@ STATIC mp_obj_t pyb_help(uint n_args, const mp_obj_t *args) {
}
}
}
-
- if (type->methods != NULL) {
- for (const mp_method_t *meth = type->methods; meth->name != MP_QSTR_NULL; meth++) {
- pyb_help_print_info_about_object(MP_OBJ_NEW_QSTR(meth->name), (mp_obj_t)meth->fun);
- }
- }
}
return mp_const_none;
diff --git a/stmhal/i2c.c b/stmhal/i2c.c
index 91cb17b33e..9bf7799f40 100644
--- a/stmhal/i2c.c
+++ b/stmhal/i2c.c
@@ -8,6 +8,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "runtime.h"
#include "i2c.h"
@@ -169,16 +170,17 @@ STATIC mp_obj_t pyb_i2c_mem_write(uint n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_i2c_mem_write_obj, 4, 4, pyb_i2c_mem_write);
-STATIC const mp_method_t pyb_i2c_methods[] = {
- { MP_QSTR_is_ready, &pyb_i2c_is_ready_obj },
- { MP_QSTR_mem_read, &pyb_i2c_mem_read_obj },
- { MP_QSTR_mem_write, &pyb_i2c_mem_write_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t pyb_i2c_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_is_ready), (mp_obj_t)&pyb_i2c_is_ready_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_read), (mp_obj_t)&pyb_i2c_mem_read_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_write), (mp_obj_t)&pyb_i2c_mem_write_obj },
};
+STATIC MP_DEFINE_CONST_DICT(pyb_i2c_locals_dict, pyb_i2c_locals_dict_table);
+
const mp_obj_type_t pyb_i2c_type = {
{ &mp_type_type },
.name = MP_QSTR_I2C,
.make_new = pyb_i2c_make_new,
- .methods = pyb_i2c_methods,
+ .locals_dict = (mp_obj_t)&pyb_i2c_locals_dict,
};
diff --git a/stmhal/led.c b/stmhal/led.c
index 989ce3897f..13dc81d18e 100644
--- a/stmhal/led.c
+++ b/stmhal/led.c
@@ -8,6 +8,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "runtime.h"
#include "led.h"
#include "pin.h"
@@ -256,18 +257,19 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(led_obj_off_obj, led_obj_off);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(led_obj_toggle_obj, led_obj_toggle);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(led_obj_intensity_obj, 1, 2, led_obj_intensity);
-STATIC const mp_method_t led_methods[] = {
- { MP_QSTR_on, &led_obj_on_obj },
- { MP_QSTR_off, &led_obj_off_obj },
- { MP_QSTR_toggle, &led_obj_toggle_obj },
- { MP_QSTR_intensity, &led_obj_intensity_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t led_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_on), (mp_obj_t)&led_obj_on_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_off), (mp_obj_t)&led_obj_off_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_toggle), (mp_obj_t)&led_obj_toggle_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_intensity), (mp_obj_t)&led_obj_intensity_obj },
};
+STATIC MP_DEFINE_CONST_DICT(led_locals_dict, led_locals_dict_table);
+
const mp_obj_type_t pyb_led_type = {
{ &mp_type_type },
.name = MP_QSTR_Led,
.print = led_obj_print,
.make_new = led_obj_make_new,
- .methods = led_methods,
+ .locals_dict = (mp_obj_t)&led_locals_dict,
};
diff --git a/stmhal/sdcard.c b/stmhal/sdcard.c
index 5392b02731..5620aef5b4 100644
--- a/stmhal/sdcard.c
+++ b/stmhal/sdcard.c
@@ -6,6 +6,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "runtime.h"
#include "sdcard.h"
@@ -232,17 +233,18 @@ static mp_obj_t sd_read(mp_obj_t self, mp_obj_t block_num) {
static MP_DEFINE_CONST_FUN_OBJ_2(sd_read_obj, sd_read);
-static const mp_method_t sdcard_methods[] = {
- { MP_QSTR_present, &sd_present_obj },
- { MP_QSTR_power, &sd_power_obj },
- { MP_QSTR_read, &sd_read_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t sdcard_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_present), (mp_obj_t)&sd_present_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_power), (mp_obj_t)&sd_power_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&sd_read_obj },
};
+STATIC MP_DEFINE_CONST_DICT(sdcard_locals_dict, sdcard_locals_dict_table);
+
static const mp_obj_type_t sdcard_type = {
{ &mp_type_type },
.name = MP_QSTR_SDcard,
- .methods = sdcard_methods,
+ .locals_dict = (mp_obj_t)&sdcard_locals_dict,
};
const mp_obj_base_t pyb_sdcard_obj = {&sdcard_type};
diff --git a/stmhal/servo.c b/stmhal/servo.c
index 17722dc6cd..ad33db75c2 100644
--- a/stmhal/servo.c
+++ b/stmhal/servo.c
@@ -7,6 +7,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "servo.h"
// this servo driver uses hardware PWM to drive servos on PA0, PA1, PA2, PA3 = X1, X2, X3, X4
@@ -205,15 +206,16 @@ STATIC mp_obj_t pyb_servo_angle(uint n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_servo_angle_obj, 1, 3, pyb_servo_angle);
-STATIC const mp_method_t pyb_servo_methods[] = {
- { MP_QSTR_angle, &pyb_servo_angle_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t pyb_servo_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_angle), (mp_obj_t)&pyb_servo_angle_obj },
};
+STATIC MP_DEFINE_CONST_DICT(pyb_servo_locals_dict, pyb_servo_locals_dict_table);
+
const mp_obj_type_t pyb_servo_type = {
{ &mp_type_type },
.name = MP_QSTR_Servo,
.print = pyb_servo_print,
.make_new = pyb_servo_make_new,
- .methods = pyb_servo_methods,
+ .locals_dict = (mp_obj_t)&pyb_servo_locals_dict,
};
diff --git a/stmhal/usart.c b/stmhal/usart.c
index d3a54f9d84..daf8a9e1fc 100644
--- a/stmhal/usart.c
+++ b/stmhal/usart.c
@@ -8,6 +8,7 @@
#include "mpconfig.h"
#include "qstr.h"
#include "obj.h"
+#include "map.h"
#include "usart.h"
struct _pyb_usart_obj_t {
@@ -209,18 +210,19 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(usart_obj_rx_char_obj, usart_obj_rx_char);
STATIC MP_DEFINE_CONST_FUN_OBJ_2(usart_obj_tx_char_obj, usart_obj_tx_char);
STATIC MP_DEFINE_CONST_FUN_OBJ_2(usart_obj_tx_str_obj, usart_obj_tx_str);
-STATIC const mp_method_t usart_methods[] = {
- { MP_QSTR_status, &usart_obj_status_obj },
- { MP_QSTR_recv_chr, &usart_obj_rx_char_obj },
- { MP_QSTR_send_chr, &usart_obj_tx_char_obj },
- { MP_QSTR_send, &usart_obj_tx_str_obj },
- { MP_QSTR_NULL, NULL },
+STATIC const mp_map_elem_t usart_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR_status), (mp_obj_t)&usart_obj_status_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_recv_chr), (mp_obj_t)&usart_obj_rx_char_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_send_chr), (mp_obj_t)&usart_obj_tx_char_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_send), (mp_obj_t)&usart_obj_tx_str_obj },
};
+STATIC MP_DEFINE_CONST_DICT(usart_locals_dict, usart_locals_dict_table);
+
const mp_obj_type_t pyb_usart_type = {
{ &mp_type_type },
.name = MP_QSTR_Usart,
.print = usart_obj_print,
.make_new = usart_obj_make_new,
- .methods = usart_methods,
+ .locals_dict = (mp_obj_t)&usart_locals_dict,
};