summaryrefslogtreecommitdiffstatshomepage
path: root/extmod/machine_spi.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-12-08 13:47:01 +1100
committerDamien George <damien.p.george@gmail.com>2016-12-08 13:47:01 +1100
commit1eb3c66e9136b5934fc306408f00f11a07dea584 (patch)
tree045502e77bc1d1761be0df8ef82da2fe5c8c1e60 /extmod/machine_spi.h
parentd9c839742f27b6b07abbebbe81bc76fcde11b306 (diff)
downloadmicropython-1eb3c66e9136b5934fc306408f00f11a07dea584.tar.gz
micropython-1eb3c66e9136b5934fc306408f00f11a07dea584.zip
extmod/machine_spi: Provide reusable software SPI class.
So long as a port defines relevant mp_hal_pin_xxx functions (and delay) it can make use of this software SPI class without the need for additional code.
Diffstat (limited to 'extmod/machine_spi.h')
-rw-r--r--extmod/machine_spi.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/extmod/machine_spi.h b/extmod/machine_spi.h
index 62f42a8851..88a3e19f41 100644
--- a/extmod/machine_spi.h
+++ b/extmod/machine_spi.h
@@ -32,6 +32,8 @@
// SPI protocol
typedef struct _mp_machine_spi_p_t {
+ void (*init)(mp_obj_base_t *obj, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args);
+ void (*deinit)(mp_obj_base_t *obj); // can be NULL
void (*transfer)(mp_obj_base_t *obj, size_t len, const uint8_t *src, uint8_t *dest);
} mp_machine_spi_p_t;
@@ -45,8 +47,13 @@ typedef struct _mp_machine_soft_spi_obj_t {
mp_hal_pin_obj_t miso;
} mp_machine_soft_spi_obj_t;
+extern const mp_obj_type_t mp_machine_soft_spi_type;
+extern const mp_obj_dict_t mp_machine_spi_locals_dict;
+
void mp_machine_soft_spi_transfer(mp_obj_base_t *self, size_t len, const uint8_t *src, uint8_t *dest);
+mp_obj_t mp_machine_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args);
+
MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mp_machine_spi_read_obj);
MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mp_machine_spi_readinto_obj);
MP_DECLARE_CONST_FUN_OBJ_2(mp_machine_spi_write_obj);