summaryrefslogtreecommitdiff
path: root/ports/nrf/common-hal
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2018-01-03 16:50:57 -0500
committerDan Halbert <halbert@halwitz.org>2018-01-03 16:50:57 -0500
commit19d353ccd98d2abf1e31d9b4fdb0ddc2fcc47795 (patch)
treedd3ddb05dd30a84392317e15f446bb02fe6b9941 /ports/nrf/common-hal
parentd8686cc002e96cbe3f4c03b39515784b99710204 (diff)
nrf: fixups for changes from 2.2
1. bidirectional SPI support (@microbuilder please check) 2. slight changes in DigitalIO types 3. placeholders (not implemented yet) for single/double-click bootloader support
Diffstat (limited to 'ports/nrf/common-hal')
-rw-r--r--ports/nrf/common-hal/busio/SPI.c24
-rw-r--r--ports/nrf/common-hal/digitalio/DigitalInOut.c14
-rw-r--r--ports/nrf/common-hal/microcontroller/__init__.c14
3 files changed, 43 insertions, 9 deletions
diff --git a/ports/nrf/common-hal/busio/SPI.c b/ports/nrf/common-hal/busio/SPI.c
index 3d8fa7ad3..4bb448a0c 100644
--- a/ports/nrf/common-hal/busio/SPI.c
+++ b/ports/nrf/common-hal/busio/SPI.c
@@ -160,3 +160,27 @@ bool common_hal_busio_spi_read(busio_spi_obj_t *self, uint8_t *data, size_t len,
return true;
}
+
+bool common_hal_busio_spi_transfer(busio_spi_obj_t *self, uint8_t *data_out, uint8_t *data_in, size_t len) {
+ if (len == 0) {
+ return true;
+ }
+
+ while (len)
+ {
+ self->spi->TXD = *data_out;
+
+ while(!self->spi->EVENTS_READY);
+
+ *data_in = self->spi->RXD;
+
+ data_out++;
+ data_in++;
+ len--;
+
+ self->spi->EVENTS_READY = 0x0UL;
+ }
+
+ return true;
+}
+
diff --git a/ports/nrf/common-hal/digitalio/DigitalInOut.c b/ports/nrf/common-hal/digitalio/DigitalInOut.c
index a183faaa7..66fd0eb03 100644
--- a/ports/nrf/common-hal/digitalio/DigitalInOut.c
+++ b/ports/nrf/common-hal/digitalio/DigitalInOut.c
@@ -55,7 +55,7 @@ void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self
}
void common_hal_digitalio_digitalinout_switch_to_input(
- digitalio_digitalinout_obj_t* self, enum digitalio_pull_t pull) {
+ digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
self->output = false;
hal_gpio_cfg_pin(self->pin->port, self->pin->pin, HAL_GPIO_MODE_INPUT, HAL_GPIO_PULL_DISABLED);
@@ -64,7 +64,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
void common_hal_digitalio_digitalinout_switch_to_output(
digitalio_digitalinout_obj_t* self, bool value,
- enum digitalio_drive_mode_t drive_mode) {
+ digitalio_drive_mode_t drive_mode) {
const uint8_t pin = self->pin->pin;
self->output = true;
@@ -74,7 +74,7 @@ void common_hal_digitalio_digitalinout_switch_to_output(
common_hal_digitalio_digitalinout_set_value(self, value);
}
-enum digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
+digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
digitalio_digitalinout_obj_t* self) {
return self->output? DIRECTION_OUTPUT : DIRECTION_INPUT;
}
@@ -110,7 +110,7 @@ bool common_hal_digitalio_digitalinout_get_value(
void common_hal_digitalio_digitalinout_set_drive_mode(
digitalio_digitalinout_obj_t* self,
- enum digitalio_drive_mode_t drive_mode) {
+ digitalio_drive_mode_t drive_mode) {
bool value = common_hal_digitalio_digitalinout_get_value(self);
self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN;
// True is implemented differently between modes so reset the value to make
@@ -120,7 +120,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
}
}
-enum digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
+digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
digitalio_digitalinout_obj_t* self) {
if (self->open_drain) {
return DRIVE_MODE_OPEN_DRAIN;
@@ -130,7 +130,7 @@ enum digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
}
void common_hal_digitalio_digitalinout_set_pull(
- digitalio_digitalinout_obj_t* self, enum digitalio_pull_t pull) {
+ digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
hal_gpio_pull_t asf_pull = HAL_GPIO_PULL_DISABLED;
switch (pull) {
case PULL_UP:
@@ -146,7 +146,7 @@ void common_hal_digitalio_digitalinout_set_pull(
hal_gpio_pull_set(self->pin->port, self->pin->pin, asf_pull);
}
-enum digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
+digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
digitalio_digitalinout_obj_t* self) {
uint32_t pin = self->pin->pin;
if (self->output) {
diff --git a/ports/nrf/common-hal/microcontroller/__init__.c b/ports/nrf/common-hal/microcontroller/__init__.c
index ddf0d252c..e26acff1b 100644
--- a/ports/nrf/common-hal/microcontroller/__init__.c
+++ b/ports/nrf/common-hal/microcontroller/__init__.c
@@ -27,6 +27,8 @@
#include "common-hal/microcontroller/Pin.h"
#include "common-hal/microcontroller/Processor.h"
+
+#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "shared-bindings/microcontroller/Processor.h"
@@ -41,9 +43,17 @@ void common_hal_mcu_disable_interrupts() {
void common_hal_mcu_enable_interrupts() {
}
-// The singleton microcontroller.Processor object, returned by microcontroller.cpu
+void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) {
+ // TODO: see atmel-samd for functionality
+}
+
+void common_hal_mcu_reset(void) {
+ // TODO: see atmel-samd for functionality
+}
+
+// The singleton microcontroller.Processor object, bound to microcontroller.cpu
// It currently only has properties, and no state.
-mcu_processor_obj_t common_hal_mcu_processor_obj = {
+const mcu_processor_obj_t common_hal_mcu_processor_obj = {
.base = {
.type = &mcu_processor_type,
},