summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Tomaszewski <kamil.tomaszewski@sony.com>2019-10-18 12:38:39 +0200
committerKamil Tomaszewski <kamil.tomaszewski@sony.com>2019-10-18 12:38:39 +0200
commit1decd111d5fc901ca641fb5abc0cec1505b8c485 (patch)
treef82713e12da291072c4cd629eec9158816172fb3
parentbd6c7c5546a16bed74c19ef615728b5e9032a4ad (diff)
Do not open the same ADC device again
-rw-r--r--ports/cxd56/common-hal/analogio/AnalogIn.c8
-rw-r--r--ports/cxd56/common-hal/analogio/AnalogIn.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.c b/ports/cxd56/common-hal/analogio/AnalogIn.c
index ebe291582..e2ca5e4a4 100644
--- a/ports/cxd56/common-hal/analogio/AnalogIn.c
+++ b/ports/cxd56/common-hal/analogio/AnalogIn.c
@@ -68,9 +68,11 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, const
mp_raise_ValueError(translate("Pin does not have ADC capabilities"));
}
- analogin_dev[self->number].fd = open(analogin_dev[pin->number].devpath, O_RDONLY);
if (analogin_dev[self->number].fd < 0) {
- mp_raise_ValueError(translate("Pin does not have ADC capabilities"));
+ analogin_dev[self->number].fd = open(analogin_dev[self->number].devpath, O_RDONLY);
+ if (analogin_dev[self->number].fd < 0) {
+ mp_raise_ValueError(translate("Pin does not have ADC capabilities"));
+ }
}
// SCU FIFO overwrite
@@ -99,7 +101,7 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
}
bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) {
- return self->pin == mp_const_none;
+ return analogin_dev[self->number].fd < 0;
}
uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.h b/ports/cxd56/common-hal/analogio/AnalogIn.h
index 4e8b41e52..9cf73003f 100644
--- a/ports/cxd56/common-hal/analogio/AnalogIn.h
+++ b/ports/cxd56/common-hal/analogio/AnalogIn.h
@@ -34,7 +34,7 @@
typedef struct {
mp_obj_base_t base;
const mcu_pin_obj_t *pin;
- uint8_t number;
+ int8_t number;
} analogio_analogin_obj_t;
void analogin_reset(void);