diff options
| author | Scott Shawcroft <scott.shawcroft@gmail.com> | 2017-03-28 18:54:16 +0100 |
|---|---|---|
| committer | Scott Shawcroft <scott.shawcroft@gmail.com> | 2017-03-28 18:54:16 +0100 |
| commit | 4810722064e9ce68b7ab9d3fb02afe6dffdf95e8 (patch) | |
| tree | ba7b0814fb3b1b5543cb01ea2d9e83e10fc1edf2 | |
| parent | 3afa09b2fe8a51ca67494869c9af839537ef6a07 (diff) | |
esp8266: Change nativeio.I2C to use bitbangio under the hood rather than throwing an error.
| -rw-r--r-- | esp8266/Makefile | 2 | ||||
| -rw-r--r-- | esp8266/common-hal/nativeio/types.h | 9 | ||||
| -rw-r--r-- | shared-module/nativeio/I2C.c (renamed from esp8266/common-hal/nativeio/I2C.c) | 19 | ||||
| -rw-r--r-- | shared-module/nativeio/I2C.h | 42 |
4 files changed, 56 insertions, 16 deletions
diff --git a/esp8266/Makefile b/esp8266/Makefile index d7c8cef18..eac6eddc5 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -113,7 +113,6 @@ SRC_COMMON_HAL = \ nativeio/AnalogIn.c \ nativeio/AnalogOut.c \ nativeio/DigitalInOut.c \ - nativeio/I2C.c \ nativeio/PulseIn.c \ nativeio/PulseOut.c \ nativeio/PWMOut.c \ @@ -132,6 +131,7 @@ SRC_SHARED_MODULE = \ bitbangio/I2C.c \ bitbangio/OneWire.c \ bitbangio/SPI.c \ + nativeio/I2C.c \ nativeio/OneWire.c \ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \ diff --git a/esp8266/common-hal/nativeio/types.h b/esp8266/common-hal/nativeio/types.h index 0a45712e4..05b7d28c2 100644 --- a/esp8266/common-hal/nativeio/types.h +++ b/esp8266/common-hal/nativeio/types.h @@ -34,8 +34,8 @@ #include "py/obj.h" -// Use the bitbang wrapper for OneWire -// TODO(tannewt): Wrap bitbangio for I2C too. +// Use the bitbang wrapper for I2C and OneWire +#include "shared-module/nativeio/I2C.h" #include "shared-module/nativeio/OneWire.h" typedef struct { @@ -48,11 +48,6 @@ typedef struct { mp_obj_base_t base; } nativeio_analogout_obj_t; -// Not supported, throws error on construction. -typedef struct { - mp_obj_base_t base; -} nativeio_i2c_obj_t; - typedef struct { mp_obj_base_t base; bool locked; diff --git a/esp8266/common-hal/nativeio/I2C.c b/shared-module/nativeio/I2C.c index 8addb92cd..345a3825a 100644 --- a/esp8266/common-hal/nativeio/I2C.c +++ b/shared-module/nativeio/I2C.c @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (c) 2016 Scott Shawcroft + * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -25,39 +25,42 @@ */ #include "shared-bindings/nativeio/I2C.h" +#include "shared-bindings/bitbangio/I2C.h" #include "py/mperrno.h" #include "py/nlr.h" void common_hal_nativeio_i2c_construct(nativeio_i2c_obj_t *self, const mcu_pin_obj_t* scl, const mcu_pin_obj_t* sda, uint32_t freq) { - nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, - "No hardware support for I2C. Use bitbangio instead.")); + shared_module_bitbangio_i2c_construct(&self->bitbang, scl, sda, freq); } void common_hal_nativeio_i2c_deinit(nativeio_i2c_obj_t *self) { + shared_module_bitbangio_i2c_deinit(&self->bitbang); } bool common_hal_nativeio_i2c_probe(nativeio_i2c_obj_t *self, uint8_t addr) { - return false; + return shared_module_bitbangio_i2c_probe(&self->bitbang, addr); } bool common_hal_nativeio_i2c_try_lock(nativeio_i2c_obj_t *self) { - return false; + return shared_module_bitbangio_i2c_try_lock(&self->bitbang); } bool common_hal_nativeio_i2c_has_lock(nativeio_i2c_obj_t *self) { - return false; + return shared_module_bitbangio_i2c_has_lock(&self->bitbang); } void common_hal_nativeio_i2c_unlock(nativeio_i2c_obj_t *self) { + shared_module_bitbangio_i2c_unlock(&self->bitbang); } uint8_t common_hal_nativeio_i2c_write(nativeio_i2c_obj_t *self, uint16_t addr, const uint8_t * data, size_t len, bool transmit_stop_bit) { - return MP_EIO; + return shared_module_bitbangio_i2c_write(&self->bitbang, addr, data, len, + transmit_stop_bit); } uint8_t common_hal_nativeio_i2c_read(nativeio_i2c_obj_t *self, uint16_t addr, uint8_t * data, size_t len) { - return MP_EIO; + return shared_module_bitbangio_i2c_read(&self->bitbang, addr, data, len); } diff --git a/shared-module/nativeio/I2C.h b/shared-module/nativeio/I2C.h new file mode 100644 index 000000000..b26ba4642 --- /dev/null +++ b/shared-module/nativeio/I2C.h @@ -0,0 +1,42 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// This defines the types used to underly the standard nativeio Python objects. +// The shared API is defined in terms of these types. + +#ifndef __MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_NATIVEIO_I2C_H__ +#define __MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_NATIVEIO_I2C_H__ + +#include "shared-module/bitbangio/types.h" + +#include "py/obj.h" + +typedef struct { + mp_obj_base_t base; + bitbangio_i2c_obj_t bitbang; +} nativeio_i2c_obj_t; + +#endif // __MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_NATIVEIO_I2C_H__ |
