summaryrefslogtreecommitdiff
path: root/ports/esp8266
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2023-10-11 13:48:49 +1100
committerDamien George <damien@micropython.org>2023-10-23 17:16:45 +1100
commit95d8b5fd555ba26ebd79b29fade45d2bf0abc6c4 (patch)
treecff4cb6867f00c45c9f1df4489ea036ea964e9ca /ports/esp8266
parent48e0986666c9f2059c92253f3c0f9b4184d68816 (diff)
extmod/machine_adc: Factor ports' ADC Python bindings to common code.
No functional change, just code factoring to have the Python bindings in one location, and all the ports use those same bindings. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'ports/esp8266')
-rw-r--r--ports/esp8266/Makefile1
-rw-r--r--ports/esp8266/machine_adc.c43
-rw-r--r--ports/esp8266/modmachine.c2
-rw-r--r--ports/esp8266/modmachine.h1
-rw-r--r--ports/esp8266/mpconfigport.h3
5 files changed, 17 insertions, 33 deletions
diff --git a/ports/esp8266/Makefile b/ports/esp8266/Makefile
index 5982987d7..0485f9bc0 100644
--- a/ports/esp8266/Makefile
+++ b/ports/esp8266/Makefile
@@ -114,7 +114,6 @@ SRC_C = \
machine_bitstream.c \
machine_pin.c \
machine_rtc.c \
- machine_adc.c \
machine_uart.c \
machine_hspi.c \
modesp.c \
diff --git a/ports/esp8266/machine_adc.c b/ports/esp8266/machine_adc.c
index f4fd32db9..83384eea9 100644
--- a/ports/esp8266/machine_adc.c
+++ b/ports/esp8266/machine_adc.c
@@ -24,20 +24,19 @@
* THE SOFTWARE.
*/
-#include <stdio.h>
-#include <string.h>
+// This file is never compiled standalone, it's included directly from
+// extmod/machine_adc.c via MICROPY_PY_MACHINE_ADC_INCLUDEFILE.
-#include "py/runtime.h"
-#include "py/mphal.h"
#include "user_interface.h"
+// The ADC class doesn't have any constants for this port.
+#define MICROPY_PY_MACHINE_ADC_CLASS_CONSTANTS
+
typedef struct _machine_adc_obj_t {
mp_obj_base_t base;
bool isvdd;
} machine_adc_obj_t;
-extern const mp_obj_type_t machine_adc_type;
-
STATIC machine_adc_obj_t machine_adc_vdd3 = {{&machine_adc_type}, true};
STATIC machine_adc_obj_t machine_adc_adc = {{&machine_adc_type}, false};
@@ -48,12 +47,13 @@ STATIC uint16_t adc_read(machine_adc_obj_t *self) {
return system_adc_read();
}
}
-void machine_adc_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+
+STATIC void mp_machine_adc_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
mp_printf(print, "ADC(%u)", self->isvdd);
}
-mp_obj_t machine_adc_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+STATIC mp_obj_t mp_machine_adc_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 1, 1, false);
mp_int_t chn = mp_obj_get_int(args[0]);
@@ -69,31 +69,12 @@ mp_obj_t machine_adc_make_new(const mp_obj_type_t *type_in, size_t n_args, size_
}
// read_u16()
-STATIC mp_obj_t machine_adc_read_u16(mp_obj_t self_in) {
- machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+STATIC mp_int_t mp_machine_adc_read_u16(machine_adc_obj_t *self) {
uint32_t value = adc_read(self);
- return MP_OBJ_NEW_SMALL_INT(value * 65535 / 1024);
+ return value * 65535 / 1024;
}
-STATIC MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_read_u16_obj, machine_adc_read_u16);
// Legacy method
-STATIC mp_obj_t machine_adc_read(mp_obj_t self_in) {
- machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
- return mp_obj_new_int(adc_read(self));
+STATIC mp_int_t mp_machine_adc_read(machine_adc_obj_t *self) {
+ return adc_read(self);
}
-STATIC MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_read_obj, machine_adc_read);
-
-STATIC const mp_rom_map_elem_t machine_adc_locals_dict_table[] = {
- { MP_ROM_QSTR(MP_QSTR_read_u16), MP_ROM_PTR(&machine_adc_read_u16_obj) },
- { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&machine_adc_read_obj) }
-};
-STATIC MP_DEFINE_CONST_DICT(machine_adc_locals_dict, machine_adc_locals_dict_table);
-
-MP_DEFINE_CONST_OBJ_TYPE(
- machine_adc_type,
- MP_QSTR_ADC,
- MP_TYPE_FLAG_NONE,
- make_new, machine_adc_make_new,
- print, machine_adc_print,
- locals_dict, &machine_adc_locals_dict
- );
diff --git a/ports/esp8266/modmachine.c b/ports/esp8266/modmachine.c
index 95048952c..43e94e0c8 100644
--- a/ports/esp8266/modmachine.c
+++ b/ports/esp8266/modmachine.c
@@ -427,7 +427,9 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&pyb_pin_type) },
{ MP_ROM_QSTR(MP_QSTR_Signal), MP_ROM_PTR(&machine_signal_type) },
{ MP_ROM_QSTR(MP_QSTR_PWM), MP_ROM_PTR(&machine_pwm_type) },
+ #if MICROPY_PY_MACHINE_ADC
{ MP_ROM_QSTR(MP_QSTR_ADC), MP_ROM_PTR(&machine_adc_type) },
+ #endif
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&pyb_uart_type) },
#if MICROPY_PY_MACHINE_I2C
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&mp_machine_soft_i2c_type) },
diff --git a/ports/esp8266/modmachine.h b/ports/esp8266/modmachine.h
index 9b7a5e3cb..469d25e81 100644
--- a/ports/esp8266/modmachine.h
+++ b/ports/esp8266/modmachine.h
@@ -4,7 +4,6 @@
#include "py/obj.h"
extern const mp_obj_type_t pyb_pin_type;
-extern const mp_obj_type_t machine_adc_type;
extern const mp_obj_type_t pyb_rtc_type;
extern const mp_obj_type_t pyb_uart_type;
extern const mp_obj_type_t pyb_i2c_type;
diff --git a/ports/esp8266/mpconfigport.h b/ports/esp8266/mpconfigport.h
index 2a51f8bcb..4e3248513 100644
--- a/ports/esp8266/mpconfigport.h
+++ b/ports/esp8266/mpconfigport.h
@@ -61,6 +61,9 @@
#define MICROPY_PY_LWIP (1)
#define MICROPY_PY_LWIP_SOCK_RAW (1)
#define MICROPY_PY_MACHINE (1)
+#define MICROPY_PY_MACHINE_ADC (1)
+#define MICROPY_PY_MACHINE_ADC_INCLUDEFILE "ports/esp8266/machine_adc.c"
+#define MICROPY_PY_MACHINE_ADC_READ (1)
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
#define MICROPY_PY_MACHINE_BITSTREAM (1)
#define MICROPY_PY_MACHINE_PULSE (1)