Commit Graph

1662 Commits

Author SHA1 Message Date
Ayke van Laethem
e755bd4932
nrf/uart: Fix UART.writechar() to write just 1 byte. 2018-08-02 22:21:24 +02:00
Ayke van Laethem
60a05485cb
nrf/uart: Remove unused UART.char_width field.
Also, clean up some code.
Code size change:
nrf51: -24
nrf52: -28
2018-08-02 22:18:16 +02:00
Stig Bjørlykke
2cf2ad943e nrf: Use separate config for each PWM instance.
The hard_configs table has entries for each PWM instance. Use them.
2018-08-02 20:36:18 +02:00
Stig Bjørlykke
0c161691b4 nrf: Correct index checking of ADC/PWM/RTCounter instances.
Avoid trying to use ADC, PWM and RTCounter instances which is
one past last available, because this will give a HardFault.
2018-08-01 14:56:07 +02:00
Stig Bjørlykke
7f0c5f2ef9 nrf: Enable all PWM, RTC and Timer instances for nrf52840.
The NRF52 define only covers nrf52832, so update the define checks
to use NRF52_SERIES to cover both nrf52832 and nrf52840.

Fixed machine_hard_pwm_instances table in modules/machine/pwm.c

This enables PWM(0) to PWM(3), RTCounter(2), Timer(3) and Timer(4),
in addition to NFC reset cause, on nrf52840.
2018-08-01 14:36:07 +02:00
Stig Bjørlykke
b6e49da407
nrf/uos: Add mbfs __enter__ and __exit__ handlers.
This will make 'with open('file', 'r') as f:' work by properly close
the file after the suite is finished.
2018-08-01 14:12:34 +02:00
hathach
0bc3432106 Merge branch 'master' into nrf52_sys_module 2018-08-01 11:53:12 +07:00
hathach
592c190069 PR review clean up 2018-08-01 11:31:32 +07:00
hathach
8640d37149 try to address sys module, compile ok 2018-08-01 10:19:20 +07:00
hathach
200669216e more clean up 2018-08-01 08:52:07 +07:00
hathach
bac233e99b clean up 2018-08-01 08:47:41 +07:00
hathach
6ddd8583da clean up 2018-08-01 08:20:20 +07:00
Scott Shawcroft
a88cdaca6a
Remove rogue execute bit. Must a common incorrect shortcut for me. :-) 2018-07-31 12:42:21 -07:00
hathach
1e524f1b98 Merge branch 'master' into nrf52840_usb_hid 2018-08-01 00:58:23 +07:00
hathach
85bd46a4e1 enable MICROPY_PY_ARRAY_SLICE_ASSIGN, MICROPY_PY_BUILTINS_SLICE_ATTRS 2018-07-31 23:09:39 +07:00
hathach
4bece22c92 add hid keyboard LED indicator stub 2018-07-31 23:02:15 +07:00
hathach
05139e2aee all hid devices seems to be ok 2018-07-31 22:54:26 +07:00
hathach
2c85f42330 add usb hid syscontrol 2018-07-31 21:57:00 +07:00
hathach
ef58adacd3 usb hid consumer control works 2018-07-31 21:19:02 +07:00
hathach
fd661c1d57 improve usb hid 2018-07-31 21:06:24 +07:00
Scott Shawcroft
12cf5e51c2
Allow for resizing the stack area. 2018-07-31 05:18:23 -07:00
hathach
27b2a9fe59 add usb_desc, disable tinyusb stack CFG_TUD_DESC_AUTO 2018-07-31 17:50:32 +07:00
hathach
d15caf0dbd hid keyboard and mouse work well 2018-07-31 16:42:04 +07:00
hathach
221d54a595 workaround to use lib/utils/interrupt_char.c 2018-07-31 14:28:34 +07:00
hathach
ae783b0b1a update tinyusb, set scsi sense key for unsupported commands 2018-07-31 13:54:58 +07:00
Dan Halbert
2e260a0eab Merge remote-tracking branch 'adafruit/master' into micropython-25ae98f-merge 2018-07-28 14:13:54 -04:00
Dan Halbert
f48b70050e merge finished 2018-07-28 13:29:47 -04:00
hathach
368d59796f adding usb_hid
compiled with undefined ref
2018-07-27 17:36:41 +07:00
hathach
21339c4155 house keeping 2018-07-27 17:22:21 +07:00
hathach
e86f7d0b88 add usb msc callback description 2018-07-27 00:17:14 +07:00
hathach
5bdf40901f update tusb lib 2018-07-26 17:16:41 +07:00
Dan Halbert
bc760dd341 WIP: complete manual inspection of all significant changes 2018-07-23 21:34:25 -04:00
Ayke van Laethem
7067ac3573 nrf/drivers/flash: Fix incorrect page alignment check. 2018-07-23 16:12:33 +10:00
roland
6a31dcd638 nrf: Update nrfjprog links to allow to download any version.
Instead of downloading "a" version, these links point to history from where
you can download the verson you like.
2018-07-23 16:11:40 +10:00
Damien George
6ac4304284 nrf/boards/microbit: Use MICROPY_PY_BUILTINS_FLOAT to detect FP support.
This works for both single and double precision float.
2018-07-20 14:11:28 +10:00
Damien George
9addc38af4 nrf: Properly use (void) instead of () for function definitions. 2018-07-20 14:11:28 +10:00
Damien George
55632af70a nrf/Makefile: Make sure dependencies for pins_gen.c are correct. 2018-07-20 14:11:28 +10:00
Ayke van Laethem
8df342d330 nrf: Include $(SRC_MOD) in the build.
Also, remove the unused $(SRC_LIB).
2018-07-19 00:35:24 +10:00
Ayke van Laethem
2f0f4fdcd3
nrf: Use mp_raise_ValueError instead of nlr_raise(...)
Saves 60 bytes on the nRF52 with SD disabled. There will be a bigger
saving with SD enabled and/or on the micro:bit board.
2018-07-18 15:25:17 +02:00
Glenn Ruben Bakke
264d80c84e nrf/drivers: Add license text to ticker.h and softpwm.h.
As per the LICENSE and AUTHORS files from the original source of these
header files.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
ea00717a57 nrf: Compile nlr objects with -fno-lto flag
To prevent over-optimizations of nlr and nlrthumb when -flto is used
the flag -fno-lto is set on these modules during compilation.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
14d257c66b nrf: Add explicit make flag for oofatfs
Adding MICROPY_FATFS as makefile flag in order to explicitly
include oofatfs files to be compiled into the build.

The flag is set to 0 by default. Must be set in addition to
MICROPY_VFS and MICROPY_VFS_FAT in mpconfigport.h.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
50ee908896 nrf/bluetooth: Replace BLE REPL (WebBluetooth) URL
Updating URL of the WebBluetooth/PhysicalWeb from
https://glennrub.github.io/webbluetooth/micropython/repl to
https://aykevl.nl/apps/nus/.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
cf58ef27af nrf: Quick-fix on const objects with open array dimension in objtuples.
Temporarly solving the issue of
"differ from the size of original declaration [-Werror=lto-type-mismatch]
until linker is fixed in upcomming release of gcc.

Bug is reported by others, and will be fixed in next version of arm-gcc.
However, this patch makes it possible to use modmusic and modimage
with current compilers.

Alternativly, the code can be compiled with LTO=0, but uses valuable 9K
more on this already squeezed target (microbit).
2018-07-18 17:12:26 +10:00
Ayke van Laethem
0e5f8425ea nrf/boards: Check for stack/heap size using an assert.
The main effect of this is that the .bss is now accurate and doesn't
include the stack and minimum heap size.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
7144e87ced nrf/bluetooth: Add support for s132/s140 v6, remove s132 v2/3/5
Support added for s132/s140 v6 in linker scripts and boards.
Support removed for s132 v2/3/5.

Download script updated to fetch new stacks and removed the
non-supported ones.

ble_drv.c updated to only handle s110 v8, and s132/s140 v6.

ubluepy updated to continue scanning after each individual scan
report reported to the module to keep old behaviour of the
Scanner class.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
db67a5000f nrf: Generalize feather52 target
This patch generalize the feather52 target to be a board without
an in-built Bluetooth stack or bootloader giving all flash memory to
micropython code.

This way the feather52 target can run any supported Bluetooth LE
stack the port supports for other nrf52832 targets. Hence, this
make Makefiles/linker scripts and BLE driver support easier
to maintain in the future.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
b7ce2f1460 nrf: Add support for reading output pin state
Current adoption on top of nrfx only reads the GPIO->IN register.
In order to read back an output state, nrf_gpio_pin_out_read has
to be called.

This patch concatinate the two read functions such that, if
either IN or OUT register has a value 1 it will return this,
else 0.

Updating lib/nrfx submodule to latest version of master to get
the new GPIO API to read pin direction.
(nrfx: d37b16f2b894b0928395f6f56ca741287a31a244)
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
6011441342 nrf: Move pyb module to boards module
Cleaning up use of "pyb" module.
Moving the file to a new folder and updating the
makefile accordingly. New module created called
"board" to take over the functionality of the legacy
"pyb" module.

Updating outdated documentation referring to pyb.Pin,
to now point to machine.Pin.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
4a323f8b80 nrf/nrfx_config: Move back nrf52832 to use non-EasyDMA SPI
As EasyDMA variant of SPI(M) might clock out an additional byte
in single byte transactions this patch moves the nrf52832 to
use SPI and not SPIM to get more stable data transactions.

Ref: nrf52832 rev2 errata v1.1, suggested workaround is:
"Use the SPI module (deprecated but still available) or
use the following workaround with SPIM ..."

Current nrfx SPIM driver does not contain this workaround,
and in the meanwhile moving back to SPI fixes the issue.

Also, tabbing the nrfx_config.h a bit to make it more readable.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
5925004da3 nrf/modules/machine/spi: Move enable-guard to prevent wrong includes
This patch moves the check of SPI configuration before
including any SPI header files. As targets might disable SPI
support, current code ends up in including SPIM if not SPI
is configured. Hence, this is why the check whether the module is
enabled should be done before including headers.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
774638e2a9 nrf/boards/feather52: Move phony targets to main Makefile
dfu-gen .PHONY target is run unconditionally as first build
target when included, and might fail if the hex file is not
yet generated.

To prevent this, the dfu-gen and dfu-flash targets are moved
to the main Makefile and only exposed if feather52 is the
defined BOARD.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
d3311681a9 nrf: Enable micro:bit FS by default
Update configuration define from
MICROPY_HW_HAS_BUILTIN_FLASH to MICROPY_MBFS.

MICROPY_MBFS will enable the builtin flash as
part of enabling the micro:bit FS.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
a4615672d4 nrf/modules/uos/microbitfs: Remove unused uos_mbfs_mount.
It throws an error in GCC 6.3.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
635064c432 nrf/modules/uos/microbitfs: Fix errno defines.
Probably broken after the recent Clang fixes to errno.h.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
1aa9ff9141 nrf/mphalport: Remove divided assembly syntax. 2018-07-18 17:12:26 +10:00
Ayke van Laethem
fb17105183 nrf: Remove useless #include <errno.h>. 2018-07-18 17:12:26 +10:00
Ayke van Laethem
17769452d4 nrf/modules/machine/adc: Don't compare -1 to an unsigned number.
Clang warns about this.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
4111206bd5 nrf/Makefile: Refine dead-code elimination parameters.
Clang warns about useless -Wl,--gc-sections passed in CFLAGS.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
ab72b5b69c nrf/Makefile: Use C11 instead of Gnu99.
Some constructs require C11 which GCC silently allows.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
a6ae950b75 nrf/Makefile: Remove -fstack-usage.
-fstack-usage is not supported by Clang and old GCC versions.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
5fdebe62d3 nrf/Makefile: use "standard" GCC -fshort-enums instead of --short-enums.
Clang understands only -fshort-enums, not --short-enums. As
--short-enums isn't even mentioned in the gcc man page, I think this
alias exists more for backwards compatibility.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
03da4e33fb nrf/bluetooth: Fixes for s132 v5 BLE stack
Removing unused nrf52832_512k_64k_s132_5.0.0.ld.

Adding new linker script s132_5.0.0 following new
linker script scheme.

Updating ble_drv.c to handle de-increment of
outstanding tx packets on hvx for s132 v5.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
58ec23fdf7 nrf/modules/machine/adc: Fix to make adc.c compile for nrf51 targets 2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
24258cf0b9 nrf: Return immediatly from mp_hal_delay_us if 0us is given
After nrfx 1.0.0 a new macro was introduced to do a common
hardware timeout. The macro function triggers a counter of
retries or a timeout in us. However, in many cases, like in
nrfx_adc.c the timeout value is set to 0, leading to a infinite
loop in mp_hal_delay_us. This patch prevents this from happening.

Path of error:
nrfx_adc.c -> NRFX_WAIT_FOR -> NRFX_DELAY_US -> mp_hal_delay_us.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
63c748bfcc nrf/spi: Allow for external use of new and transfer function.
This patch also opens up for all arguments to be set as positional
arguments such that an external user of the make_new function can set
provide all parameters as positional arguments.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
434bd568fe nrf/adc: Allow for external use of new and value read function. 2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
3209a13bf5 nrf/modules: Align method to resolve pin object
machine/i2c already uses mp_hal_get_pin_obj which
points to pin_find function in order to locate correct
pin object to use.

The pin_find function was recently updated to also
being able to locate pins based on an integer value,
such that pin number can be used as argument to object
constructors.

This patch modfies and uniforms pin object lookup for
SPI, music and pwm.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
0f7da42c75 nrf/modules/random: Rename port config for RNG
Renaming config for enabling random module with hw
random number generator from MICROPY_PY_HW_RNG to
MICROPY_PY_RANDOM_HW_RNG to indicate which module it
is configuring.

Also, disabling the config by default in mpconfigport.h.

Adding the enable of RNG in all board configs.

Moving ifdef in modrandom, which test for the config being
set, earlier in the code. This is to prevent un-necessary
includes if not needed.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
f4382a2885 nrf/boards/wt51822_s4at: Fixes after nrfx and Pin IRQ introduction 2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
72aacef02e nrf/boards: Remove unused defines from board config headers 2018-07-18 17:12:26 +10:00
Ayke van Laethem
65f8d9a643 nrf/gccollect: Use the SP register instead of MSP.
Using the current stack pointer directly saves 8 bytes of code.
We need the *current* register anyway for GC (which is always MSP).
2018-07-18 17:12:26 +10:00
Ayke van Laethem
013c23712c nrf/drivers/bluetooth/ble_drv: Increase max transfers in progress.
Increase the maximum number of queued notifications from 1 to 6. This
massively speeds up the NUS console - especially when printing large
amounts of text. The reason is that multiple transfers can be done in a
single connection event, in ideal cases 6 at a time.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
67fd67f549 nrf/modules/machine/spi: SPIM (EasyDMA) backend for nrf52x
This patch moves all nrf52 targets to use SPIM backend
for SPI which features EasyDMA. The main benefit of doing
this is to utilize the SPIM3 on nrf52840 which is
EasyDMA only peripheral.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
6e8a605500 nrf/modules/machine/pin: Add support for IRQ on Pin's
This patch ads irq method to the pin object. Handlers
registered in the irq method will be kept as part of the
ROOT_POINTERS.

In order to resolve which pin object is the root of the
IRQ, the pin_find has been extended to also be able to
search up Pin objects based on mp_int_t pin number.
This also implies that the Pin.new API is now also supporting
creation of Pin objects based on the integer value of the
pin instead of old style mandating string name of the Pin.

All boards have been updated to use real pin number from
0-48 instead of pin_Pxx for UART/SPI and music module pins.

UART/SPI/modmusic has also been updated to use pin number
provided directly or look up the Pin object based on the
integer value of the pin (modmusic).

Pin generation has been updated to create a list of pins, where
the board/cpu dicts are now refering to an index in this list
instead of having one const declaration for each pin. This new
const table makes it possible to iterate through all pins generated
in order to locate the correct Pin object.
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
864f671744 nrf: Remove port member from Pin object
In order to be able to support GPIO1 port on nrf52840
the port has been removed from the Pin object.

All pins on port1 will now be incrementally on top of
the pin numbers for gpio0. Hence, Pin 1.00 will become
P32, and Pin 1.15 will become P47.

The modification is done to address the new gpio HAL
interface in nrfx, which resolves the port to be
configured base on a multiple of 32.

The patch also affects the existing devices which does
not have a second GPIO port in the way that the
port indication A and B is removed from Pin generation.
This means that the port which was earlier addressed
as PA0 is now P0, and PA31 is P31.

Also, this patch removes the gpio member which earlier
pointed to the perihperal GPIO base address. This is not
needed anymore, hence removed.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
2de65dda22 nrf: Make linker scripts more modular.
With all the variation in chips and boards it's tedious to copy and
redefine linker scripts for every option. Making linker scripts more
modular also opens up more possibilities, like enabling/disabling the
flash file system from the Makefile - or even defining it's size from a
Makefile argument (FS_SIZE=12 for a 12kB filesystem if tight on space).
2018-07-18 17:12:26 +10:00
Ayke van Laethem
375bc31f4b nrf: Enable -g flag by default.
This does not affect binary output, but makes debugging a whole lot
easier.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
1949719e1d nrf/Makefile: Fix .PHONY target.
It must be in uppercase.
2018-07-18 17:12:26 +10:00
Ayke van Laethem
57ca1ecf01 nrf: Fix NUS console when using boot.py or main.py. 2018-07-18 17:12:26 +10:00
glennrub
002f7d1ad7 nrf: Replace custom-HAL with nrfx-HAL
Summarized this squashed PR replaces the hal/ folder in the port. This has been replaced the official
HAL layer from Nordic Semiconductor; https://github.com/NordicSemiconductor/nrfx.

A Git submodule has been added under lib/nrfx, for the nrfx dependency.

The drivers / modules has been updated to use this new HAL layer; nrfx at v1.0.0.

Also, header files and system files for nrf51/nrf52x chip variants has been deleted from the device/ folder, only keeping back the startup files written in C. All other files are now fetched from nrfx.

3 new header files in the ports/nrf/ folder has been added to configure nrfx (nrfx_config.h), logging (nrfx_log.h) and glue nrfx together with the drivers and modules from micropython (nrfx_glue.h).

The PR has been a joint effort from @aykevl (Ayke van Laethem) and @glennrub.

For reference, the commit log will be kept to get an overview of the changes done:

* ports/nrf: Initial commit for moving hal to Nordic Semiconductor BSD-3 licensed nrfx-hal.

* ports/nrf: Adding nrfx, Nordic Semiconductor BSD-3 hal layer, as git submodule checked out at lib/nrfx.

* ports/nrf/modules/machine/uart: Fixing bug which set hwfc to parity excluded, always resulting in no flow control, hence corrupted output. Also adding an extra loop on uart_tx_char to prevent any tx when any ongoing tx is in progress.

* ports/nrf/i2c: Moving I2C over to nrfx driver.

* ports/nrf/modules/machine/i2c: Alignment. Renaming print function param 'o' to 'self_in'

* ports/nrf/spi: Updating SPI machine module to use nrfx drivers.

* ports/nrf: Renaming modules/machine/rtc.c/.h to rtcounter.c/.h to not confuse the peripheral with Real-Time Clock:

* ports/nrf: Updating various files after renaming machine module RTC to RTCounter.

* ports/nrf: Renaming RTC to RTCounter in modmachine globals dict table. Also updating object type name to reflect new module name.

* ports/nrf: Fixing leftovers after renaming rtc to rtcounter.

* ports/nrf: Early untested adoption of nrfx_rtc in RTCounter. Untested.

* nrf/modules/machine/i2c: Improve keyword argument handling

* ports/nrf/modules/temp: Updating Temp machine module to use nrfx defined hal nrf_temp.h. Moving logic of BLE stack awareness to machine module.

* ports/nrf/boards/pca10040: Enable machine Temp module.

* nrf/modules/machine/rtcounter: Remove magic constants.

* ports/nrf: Adding base support for nrfx module logging. Adding option to disable logging of UART as it might log its own setup over UART while the peripheral is not yet set up. Logging of UART could make sense if other transport of log is used.

* ports/nrf: updating nrfx_log.h with more correct parenthisis on macro grouping.

* ports/nrf: Updating nrfx logging with configuration to disable logging of UART module. The pattern can be used to turn off other modules as well. However, for now UART is the only module locking itself by logging before the peripheral is configured. Logging is turned off by default, can be enabled in nrfx_config.h by setting NRFX_LOG_ENABLED=1.

* ports/nrf/modules/random: Updating modrandom to use nrfx hal for rng. Not using nrfx-driver for this peripheral as its blocking mode would do the trick on RNG. Moving softdevice aware code from legacy hal to modrandom.c.

* nrf: Enable Peripheral Resource Sharing.

This enables TWI and SPI to be enabled at the same time.

* nrf/Makefile: Define MCU sub variant (e.g. NRF51822/NRF51422)

* nrf: Port TIMER peripheral to nrfx HAL.

* nrf/modules/machine/uart: Optimize UART module

For a nRF51, this results in a size reduction of:
.text: -68 bytes
.data: -56 bytes

* nrf/modules/machine/uart: Don't use magic index numbers.

* nrf/modules/machine/uart: Fix off-by-one error.

For nrf51:
.text: -40 bytes

* nrf/modules/machine/rtcounter: Update for nrfx HAL.

* nrf/modules/machine/i2c: Reduce RAM consumption.

Reductions for the nrf51:
flash: -108 bytes
RAM:   -72 bytes

* nrf/mpconfigport: Avoid unnecessary root pointers.

This saves 92 bytes of RAM.

* nrf: Support SoftDevice with nrfx HAL.

* nrf: Add NVMC peripheral (microbitfs) support.

There is no support yet for a SoftDevice.

It also fixes a potentially serious bug in start_index generation.

* nrf/modules/machine/spi: Optimize SPI peripheral.

nrf51:
text: -340 bytes
data: -72  bytes

nrf52:
text: -352 bytes
data: -108 bytes

* nrf/modules/random: Forgot to commit header file.

* nrf: Make nrfx_config.h universal for all boards.

* nrf: Use SoftDevice API for flash access when built for SD

* nrf/drivers/bluetooth: Remove legacy HAL driver includes.

These were not used anymore so can be removed.

* ports/nrf/microbit: Port microbit targets to nrfx HAL

Initial port of microbit modules to use nrfx HAL layer.
Tested display/image and modmusic on micro:bit to verify that
softpwm and ticker for nrf51 is working as expected.

Changing IRQ priority on timer to priority 2, as 1 might collide if
used side by side of SD110 BLE stack.

The patch reserves Timer1 peripheral compile time. This is not ideal
and should be resolved in seperate task.

* nrf/boards/microbit: Remove custom nrfx_config.h from microbit target, adding disablement of timer1 if softpwm is enabled.

* nrf/adc: Update ADC module to use nrfx

* nrf/modules/machine/pwm: Updating machine PWM module to use nrfx HAL driver.

examples/nrf52_pwm.py and examples/nrf52_servo.py tested on pca10040.

* nrf: Removing hal folder and boards nrf5x_hal_conf.h headers.

* nrf/nrfx_glue: Adding direct NVIC access for S110 BLE stack

If SoftDevice s110 has not yet been initialized, the IRQ will not be forwarded to
the application using the sd_nvic* function calls. Hence, direct access to cmsi
nvic functions are used instead if SoftDevice is not enabled.

* nrf/drivers/ticker: Setting IRQ priority 3 on Timer1

SoftDevice fails to initilize if Timer1 has been configured to priority
level 2 before enabling the SD. The timer is set to priority 1, higher than BLE
stack in order to provide better quality of music rendering when used with the
music module. This might be too high, time will show.

* nrf/examples: Updating ubluepy_temp after moving RTCounter to nrfx.

* nrf: delete duplicate files from device folder which can be located in nrfx/mdk.

* nrf/Makefile: Fetch system files from nrfx.

Testing on each device sub-variant to figure out which system file to
use. Reason for this is that nrf52.c is actually defining nrf52832.

Removing NRF_DEFINES parameter setting the device in use into the
same sub-variant test, as NRF52 is unique to nrf52832 when using nrfx.
Without this exclusion of -DNRF52 in compilation for nrf52840, the
device will be interpreted as a nrf52, hence nrf52832.

Also, changing name on variable SRC_NRF_HAL to SRC_NRFX_HAL to
explicitly tell the origin of the file.

* nrf: Updating device #ifdefs to be more open to non-nrf51 targets.

* nrf/modules/machine/uart: Removing second instance of UART for nrf52840 as it only has one non-DMA variant.

* nrf/device: Removing system files as these are now used from nrfx/mdk

* nrf: Moving startup files in device one level up as there is no need for deep hierarchy.

* nrf: Use NRF52_SERIES defined in nrfx/mdk/nrf.h as define value when testing for both nrf52(832) and nrf52840 variants.

* nrf/modules/machine/uart: Enable UART RX by default

Enable rx by default after intiialization of the peripheral.
Else, the nrfx driver will re-enable rx for each byte read
on uart REPL, clearing the EVENT_RXDRDY before second byte,
which again will make second byte get lost and read will get stuck.

This happens if the bytes are transmitted nrf(51) while still
processing the previous byte. Not seen on nrf52, but should
also become an issue at higher speeds.

This patch sets rx to always be enabled. Hence, not clearing the event
between read bytes, and it will be able to detect next byte recieved
upon finishing the first.

* nrf/modules/machine/timer: Fixing defines excluding Timer1 if ticker/softpwm is used.

* nrf: Switching import form mpconfigboard.h to mpconfigport.h in nrfx_config.h as mpconfigboard.h might define default values for defines not set by board specific header.

* nrf/modules/machine/i2c: nrfx integration fixes

Increasing speed to 400K.

Returning Address NACK's as MP error code; MP_ENODEV.

Returning MP_ETIMEOUT on all other error codes from TWI nrfx driver
except the ANACK.

Enabling and disabling the TWI peripheral before and after each transaction.

* nrf/examples: Updating ssd1306_mod.py to split framebuffer transfer into multiple chunks

* nrf/modules/machine/i2c: Return MP_EIO error if Data NACK occurs.

* nrf: Addressing review comments.

* nrf: Updating git submodule and users to nrfx v1.0.0.

* nrf/modules/machine/adc: Update adc module to follow v1.0.0 nrfx API.

* nrf/modules/machine/spi: Implement init and deinit functions

Extending SPI objects with a config member such that
configuration can be kept between new() and init().

Moving initialization done in new() to common init
function shared between the module functions.

If SPI is already configured, the SPI peripheral will
be uninitialized before initalized again.

Adding logic to handle initialization of polarity and
phase. As well, updating default speed to 1M from 500K.

* nrf/modules/machine: Removing unused nrfx includes in machine module header files
2018-07-18 17:12:26 +10:00
Glenn Ruben Bakke
62931398d7 nrf/boards/microbit/modules: Initialize variable in microbit_sleep.
When compiling for microbit with LTO=0, a compiler error occurs due to
'ms' variable in the microbit_sleep function has not been initialized.

This patch initialize the variable to 0.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
3cdecf90e6 nrf: Make LTO configurable via Makefile flag.
LTO messes up debuggability and may cause some other issues.
Additionally, it does not always result in reduced code size.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
c486127378 nrf: Improve include of boardmodules.mk
Removing shell commands for checking if boardmodules.mk exists
under boards/<BOARD>/modules folder before including it.

This patch does the equivalent to previous test without using
shell commands. Hence, including the .mk if it exists.

Reference:
https://stackoverflow.com/questions/8346118/check-if-a-makefile-exists-before-including-it
2018-07-18 17:12:25 +10:00
Ayke van Laethem
4231d4311f nrf: Fix stack size in ld script and enable MICROPY_STACK_CHECK.
The nrf51x22_256k_16k_s110_8.0.0.ld had a stack size of only 1kB, which
is way too low. Additionally, the indicated _minimum_stack_size (set at
2kB for that chip) isn't respected.

This commit sets the heap end based on the stack size (heap end = RAM
end - stack size) making it much easier to configure.

Additionally, the stack/heap size of nrf52 chips has been set to a more
sane value of 8kB.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
987381dfa0 nrf: Make machine.UART optional.
Leave it enabled by default on all targets.

This is only possible when using UART-over-BLE (NUS) instead of the
default hardware peripheral. The flash area saved is quite substantial
(about 2.2KB) so this is useful for custom builds that do not need UART.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
f679ee2092 nrf/drivers/ble_drv: Fixing sd_ble_enable bug for SD s132 v.2.0.1
Feather52 target which is using SD s132 v.2.0.1 cannot compile
due to variable containing RAM start address is not used.

This patch enables the correct sd_ble_enable variant for this SD.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
f907139fab nrf/boards/common.ld: Avoid overflowing the .text region.
Similar commit to this one:
6e56e6269f

When .text + .data oveflow available flash, the linker may not show an
error. This change makes sure .data is included in the size calculation.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
4c011e66b4 nrf/modules/machine/pin: Disable pin debug by default.
Saves for the nrf51:
flash: 336 bytes
RAM:     4 bytes
2018-07-18 17:12:25 +10:00
Ayke van Laethem
1b988f1e7d nrf/mpconfigport: Reduce GC stack size for nrf51.
This frees 128 bytes of .bss RAM on the nRF51, at the cost of possibly
more expensive GC cycles. Leave it as-is on the nRF52 as that chip has a
lot more RAM.

This is also done in the micro:bit:
a7544718a7/inc/microbit/mpconfigport.h (L6)
2018-07-18 17:12:25 +10:00
kaasasolut
c1cd7e5155 nrf: Only search for frozen files if FROZEN_MPY_DIR is set 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
725267df09 nrf: Change PYB prefix to MPY 2018-07-18 17:12:25 +10:00
glennrub
f8f14bf0c7 nrf: Add support for s132 v5.0.0 bluetooth stack (#139)
* ports/nrf/boards: Adding linker script for nrf52832 using BLE stack s132 v.5.0.0.

* ports/nrf/drivers/bluetooth: Updating makefile to add BLE_API_VERSION=4 if s132 v5.0.0 is used.

* ports/nrf/drivers/bluetooth: Updating BLE stack download script to also download S132 v5.0.0.

* ports/nrf/drivers/bluetooth: Updating ble_drv.c to handle BLE_API_VERSION=4 (s132 v5.0.0).

* ports/nrf/boards: Updating linker script for nrf52832 with s132 v.5.0.0 bluetooth stack.

* ports/nrf/drivers/bluetooth: Removing commented out code in ble_drv.c

* ports/nrf/drivers/bluetooth: Updating define of GATT_MTU_SIZE_DEFAULT for SD132v5 to be defined using the new name defined in the SD headers in a more generic way.

* ports/nrf/drivers/bluetooth: Cleaning up use of BLE_API_VERSION in the ble_drv.c. Also considering s140v6 API, so not all has been changed to >= if API version 3 and 4 in combo is used. New s140v6 will differ on these, and add a new API not compatible with the API for 3 and 4.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
95bd20522a nrf/drivers/bluetooth: Reset evt_len to size of static buffer each iter.
For each iteration of polling BLE events from the Bluetooth LE stack.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
c8fd71612b nrf/boards/microbit: Enable music, display, image, microbit module.
Enabled by default on microbit targets, with or without BLE stack.  Also
enable softpwm to make display and music module compile.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
f5ed40116f nrf: Add if-def around inclusion of nrf_sdm.h in main.
Not all targets are using bluetooth le.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
6062d46170 nrf: Change board module header from board_modules.h to boardmodules.h.
Applicable for targets with board specific modules.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
0d7976deb2 nrf/boards/microbit: Update docs on top level tick low pri callback. 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
1128aacb69 nrf/boards/microbit: Add temperature back to microbit module.
Increases size by 68 bytes.  Should be considered to be removed as temp
module is already providing this functionality.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
b6d01a7dd1 nrf/boards/microbit/modules: Fix tabbing in modmicrobit.c. 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
5601fc9397 nrf/boards/microbit: Move microbit target to custom linker script.
To use if BLE stack is enabled.  The custom linker script also set off
space enough to compile in microbitfs+hal_nvmc.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
67b57bebec nrf: Update main.c to init relevant board drivers, if enabled.
If the board has these drivers then they will be initialized:
- softpwm (implicit ticker)
- music module
- board specific module
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
f8ae6b7bfc nrf/modules/music: Remove init of softpwm/ticker upon music module load.
Also update microbit_music_init0 to register low priority ticker callback
for the music module.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
789f8f1c4b nrf/boards/microbit: Update to work with new ticker code.
- Rename microbit_module_init to board_module_init0 which is the generic
  board module init function.
- Add low priority callback registration of display tick handler in the
  module init function.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
91fcde73d2 nrf/drivers/ticker: Rework ticker functions for microbit display/music.
- Rename init function to ticker_init0.
- Implement ticker_register_low_pri_callback (recycle of unused
  set_low_priority_callback function which was unimplemented).
- Add support for registering 2 low pri callbacks.  For now, one intended
  for microbit display, and one for modmusic.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
7c74b7da48 nrf/drivers/softpwm: Rename init function to softpwm_init0. 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
d76982e382 nrf/boards/microbit: Include modmicrobit.h in board_modules.h.
So that users of the board module can find the init function of the module
implicitly.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
0b504575e2 nrf/boards/microbit: Add modmicrobit.h to expose module init function. 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
1b241be310 nrf/boards/microbit: Attempt to get working display/images without FP.
And update the API to align with new unary/binary function callback
structures.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
9e090a8783 nrf/boards/microbit: Add framework updates to build micro:bit modules.
Makefile and mpconfigport.h update is generic, and could be used by other
boards to give extra modules which are only for a selected board.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
fbc45bd3f3 nrf/boards/microbit: Update board modules from C++ to C-code.
This aligns implementation with new style structures.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
f3386cfc50 nrf/boards/microbit: Rename display/image files from .cpp to .c ext.
Also rename modmicrobit.h to microbitconstimage.h.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
98ad4107ef nrf/boards/microbit: Add copy of microbit font type from microbit-dal.
Source: https://github.com/lancaster-university/microbit-dal.git
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
7a2e136049 nrf/boards/microbit: Add copy of microbit display and image files.
From micro:bit port repository, https://github.com/bbcmicrobit/micropython
2018-07-18 17:12:25 +10:00
Ayke van Laethem
a248db6916 nrf: Option to enable Ctrl-C in NUS console.
Costs 136 bytes on a nRF51822.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
03b8429c0c nrf: Remove default FROZEN_MPY_DIR.
Saves 448 bytes of flash. Can still be enabled using:

    make FROZEN_MPY_DIR=freeze BOARD=foo
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
b493de75f3 nrf: Update usage of mp_obj_new_str by removing last parameter. 2018-07-18 17:12:25 +10:00
Ayke van Laethem
fc5d89e29d nrf/drivers/bluetooth: Start advertising after disconnect.
Disconnecting after a connect would not restart advertising, so
reconnecting may get harder.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
2561bcf0c0 nrf/main: Add ampy support.
The ampy tool expects a "soft reboot" line when it does a soft reset.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
2b32333f90 nrf: Use micropython libm to save flash
Using libm from micropython free up about 5.5kb flash on nrf52
targets which have floating point enabled.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
d9fb8c2585 nrf/main: Run boot.py and main.py on startup. 2018-07-18 17:12:25 +10:00
Ayke van Laethem
66e39d6a4e nrf/modules/uos/microbitfs: Make OSError numeric.
This saves about 80 bytes of code size.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
8482daced2 nrf/drivers/bluetooth/ble_drv: Don't handle non-events.
When there is a non-BLE event (sd_evt_get), the ble_evt_handler is
invoked anyway even if it returns NRF_ERROR_NOT_FOUND.
2018-07-18 17:12:25 +10:00
Ayke
f7facf73f1 nrf: Add micro:bit filesystem.
* ports/nrf: Add micro:bit filesystem.

This filesystem has been copied from BBC micro:bit sources [1] and
modified to work with the nRF5x port.

[1]: https://github.com/bbcmicrobit/micropython/blob/master/source/microbit/filesystem.c

* ports/nrf/modules/uos: Make listdir() and ilistdir() consistent.

This removes the optional direcotry paramter from ilistdir(). This is
not consistent with VFS, but makes more sense when using only the
microbit filesystem.

Saves about 100 bytes.

* ports/nrf/modules/uos: Add code size comment.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
fcc1568546 nrf/boards: Update linker scripts.
* Remove FLASH_ISR and merge .isr_vector into FLASH_TEXT. This saves
    some code space, especially on nRF52 devices.
  * Reserve space for nonvolatile storage of data. This is the place for
    a filesystem (to be added).
2018-07-18 17:12:25 +10:00
Ayke van Laethem
83f38a99a9 nrf/hal/hal_nvmc: Fix non-SD code.
The code wasn't tested yet without a SoftDevice.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
a2b4c93e85 nrf/hal/nvmc: Remove pre-compiler error thrown in nvmc.h, if on nrf52.
This has been tested and works.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
7418795fdf nrf: Disable FAT/VFS by default.
Most boards don't have an SD card so it makes no sense to have it
enabled. It can be enabled per board (mpconfigboard.h).
2018-07-18 17:12:25 +10:00
Ayke van Laethem
cc158f98fe nrf: Implement NVMC HAL.
This is only a library for flash access. Actual file system support will
be added later.
2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
0487e23842 nrf/boards/arduino_primo: Add missing hal_rng config used by random mod. 2018-07-18 17:12:25 +10:00
Ayke van Laethem
4838b398af nrf: Enable Link-time optimizations 2018-07-18 17:12:25 +10:00
Ayke van Laethem
4e083819f3 nrf: Add compile switch to disable VFS.
This saves about 17kB.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
38afc6553c nrf: Use --gc-sections to reduce code size
This saves about 6-7kB.
2018-07-18 17:12:25 +10:00
Ayke van Laethem
a1116771b0 nrf: Add WT51822-S4AT board. 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
51a679752a nrf: Update Makefile and README.md after moving port to new directory 2018-07-18 17:12:25 +10:00
Glenn Ruben Bakke
9e7cda8890 nrf: Align help.c builtin help text to use correct type. 2018-07-18 17:12:25 +10:00
Daniel Tralamazza
e22b943508 nrf: Add new port to Nordic nRF5x MCUs.
This commit is a combination of about 802 commits from the initial stages
of development of this port, up to and including the point where the code
was moved to the ports/nrf directory.  The following is a digest of the
original commits in their original order (most recent listed first),
grouped where possible by author.  The list is here to give credit for the
work and provide some level of traceability and accountability.  For the
full history of development please consult the following repository:

    https://github.com/tralamazza/micropython

Unless otherwise explicitly state in a sub-directory or file, all code is
MIT licensed and the relevant copyright holders are listed in the
comment-header of each file.

Glenn Ruben Bakke <glennbakke@gmail.com>
    ports/nrf: Moving nrf51/52 port to new ports directory
    nrf: Aligning with upstream the use of nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, ...)

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf/modules/random: Backport of microbit random number generator module

    Backport of micro:bit random module.
    Plugged into the port as a general random module for all nrf51/nrf52 targets. Works both with and without Bluetooth LE stack enabled.

    Behavioral change: seed() method has been removed, as the use of RNG peripheral generates true random sequences and not pseudo-random sequences.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf/hal/rng: Adding HAL driver for accessing RNG peripheral

    The driver also takes care of calling the Bluetooth LE stack for random values if the stack is enabled. The reason for this is that the Bluetooth LE stack take ownership of the NRF_RNG when enabled. Tolerate to enable/disable on the fly, and will choose to use direct access to the peripheral if Bluetooth LE stack is disabled or not compiled in at all.

    Driver has been included in the top Makefile, and will not be compiled in unless nrf51_hal_conf.h/nrf52_hal_conf.h defines HAL_RNG_MODULE_ENABLED (1).

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf/boards: Adding Arduino Primo board support (#88)

    * nrf: Adding Arduino Primo board support
    * nrf: Adding arduino_primo to target boards table in readme.md
    * nrf/boards: Activating pyb.LED module for arduino_primo board.
    * nrf/boards: Removing define not needed for arduino_primo

    Updating arduino_primo board mpconfigboard.h. Removing a define
    that was wrongly named. Instead of renaming it, it was removed as
    it was never used.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf: Add support for floating point on nrf52 targets.

    Duplicating pattern for detecting location of libm, libc and libgcc
    from teensy port. Activating MICROPY_FLOAT_IMPL (FLOAT) for nrf52 targets
    and adding libs into the compile. For nrf51 targets it is still set to
    NONE as code grows to much (about 30k).

    Some numbers on flash use if MICROPY_FLOAT_IMPL is set to
    MICROPY_FLOAT_IMPL_FLOAT and math libraries are enabled (lgcc, lc, lm).

    nrf51:
    ======

    without float support:
       text    data     bss     dec     hex filename
     144088     260   30020  174368   2a920 build-pca10028/firmware.elf

    with float support:
       text    data     bss     dec     hex filename
     176228    1336   30020  207584   32ae0 build-pca10028/firmware.elf

    nrf52:
    ======

    without float support:
       text    data     bss     dec     hex filename
     142040     356   36236  178632   2b9c8 build-pca10040/firmware.elf

    with float support:
       text    data     bss     dec     hex filename
     165068    1436   36236  202740   317f4 build-pca10040/firmware.elf

Daniel Tralamazza <daniel@tralamazza.com>
    nrf: add a note for running the nrfjprog tool on Linux, and touch up the make sd comment
    nrf: clean compiler warnings

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf/drivers/bluetooth: Speedup Bluetooth LE REPL.

    Updating mp_hal_stdout_tx_strn_cooked to pass on the whole string
    to mp_hal_stdout_tx_strn instead of passing byte by byte.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf: Use the name MicroPython consistently in comments
    nrf5: Updating readme with BLE REPL

Ben Whitten <ben.whitten@lairdtech.com>
    nrf/boards: Add DVK BL652 from Laird

    To build run 'make BOARD=dvk_bl652 SD=s132'
    To flash with jlink run 'make sd BOARD=dvk_bl652 SD=s132'
    This will remove the existing licences in the bl652

Ben Whitten <ben.whitten@lairdtech.com>
    nrf/drivers/bluetooth: Allow s132 to use LFCLK
    nrf: Add nordic sd folders to the .gitignore

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf/boards: Updating microbit pin mapping for SPI and I2C.
    nrf/boards: Correcting feather52 I2C SDA pin assigned to the board.
    nrf/examples: Update ssd1306 modification example to import correct class.
    nrf/boards: Activate RTC and Timer module and HAL on pca10056. Also swapping out UART with UART DMA variant on this target board.
    nrf/boards: Activate RTC, Timer, I2C, ADC and HW_SPI module and HAL on pca10031.
    nrf/boards: Activate RTC, Timer, I2C and ADC module and HAL on pca10001.
    nrf/boards: Adding RTC and Timer module and HAL to pca10000.
    nrf: Updating README.
    nrf: Removing unused font header.

Daniel Tralamazza <daniel@tralamazza.com>
    rename temperature example

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/examples: Adding ubluepy peripheral example that works across nrf51 and nrf52. The example uses Environmenting Sensing Service to provide the temperature characteristic. The temperature is fetched from the machine.Temp module. One note is that the example uses 1 LED which is not present on all boards.
    nrf5/modules/ubluepy: Adding new event constant for gatts write (80) events from bluetooth stacks.
    nrf5/hal/timer: Add support for fetching temperature if bluetooth stack is enabled.
    nrf5/drivers/bluetooth: Make printf in 'ble_drv_service_add' function part of debug log.

Daniel Tralamazza <daniel@tralamazza.com>
    implement #50

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/examples: Updating mountsd example with comment from deleted sdcard.py on how to wire SD directly to SPI.
    nrf5/examples: Removing copy of sdcard.py also found in drivers/sdcard.
    nrf5/examples: Removing copy of ssd1306 driver, creating a new class that overrides the needed function for i2c. Also adding some example usage in the comment in top of the file for both SPI and I2C variant.
    nrf5/hal/gpio: Updating toggle inline function to work correctly, currently only used by LED module.
    nrf5/examples: Renaming servo.py to nrf52_servo.py as it is only implemented machine.PWM for nrf52.
    nrf5/freeze: Adding generic example to freeze. Hello world with board name as parameter.
    nrf5/examples: Moving nrf52 specific HW example from freeze to examples to replace test.py with a more generic example.
    nrf5: Update pyb module, and led module to only be compiled in if MICROPY_HW_HAS_LED is set to 1.
    nrf5/boards: Updating boards with correct LED count. Also adding new flag, MICROPY_HW_HAS_LED, to select whether the board has LED's at all. If not, this will unselect LED module from being compiled in.
    nrf5/boards: Updating pca10040 board header to set the LED count.
    nrf5: Generalize script setting LED(1) on to be applied only when there are leds present on the board.
    nrf5: Updating mpconfigport.h to set default values for MICROPY_HW_LED_COUNT (0) and MICROPY_HW_LED_PULLUP (0).
    nrf5/boards/feather52: Update s132 target makefile with dfu-gen and dfu-flash. This enables feather52 with Bluetooth LE. Features to be configured in bluetooth_conf.h.
    nrf5/boards/feather52: Add SERIAL makeflag if dfu-flash target is used.
    nrf5: Updating readme.md file based on review comments.
    nrf5: Update help.c with documentation of CTRL-A and CTRL-B to enter and exit raw REPL mode.
    nrf5: Updating main.c to support RAW REPL.
    Update README.md
    nrf5/modules/music: Updating pitch method to also use configured pin from mpconfigboard.h if set, in the case of lacking kwarg for pin. Also removing some commented out arguments to remove some confusion in the argument list. Done for both play() and pitch().
    nrf5/modules/music: Correct parameter checking of pin argument to deside whether to use MUSIC_PIN define or throw an error. If MUSIC_PIN define is configured the pin argument to music module play() can be elided.
    nrf5/modules/machine: Update timer init to set default IRQ priority before initializing Timer instance.
    nrf5/hal/timer: Update timer hal to use value provided in init to configure the irq_priority.
    nrf5/modules/machine: Reserving timer0 instance for bluetooth if compiled in. Leaving timer1 and timer2 for application. Note that music module soft-pwm will also occupy timer1 if enabled.
    nrf5/modules/machine: Updating timer module to use new hal. Adding new parameters to the init to set period, mode and callback.
    nrf5/hal/timer: Implementing hal_timer to 1us prescaler. Multiplier inside to get to millisecond resolution. Callback must be registered before starting a timer.
    nrf5: Makefile cleanup. Removing duplicate include and unused netutils.c used by BLE 6lowpan network which has been removed for now.
    nrf5/modules/machine: Indention fix in uart module.
    nrf5/modules/machine: Removing unused code from uart module.
    nrf5/hal/rtc: Updating hal driver to calculate prescaler a bit more verbose. Using 1 second interval ticks.
    nrf5/modules/machine: Fixing type in RTC.
    nrf5/modules/machine: Update rtc init to set default IRQ priority before initializing RTC instance.
    nrf5/hal/rtc: Aligning RTC (real-time counter) HAL driver with Timer HAL driver. To make api's symetric. Also updating modules/rtc to get aligned with new HAL api.
    nrf5/drivers/bluetooth: Moving stop condition initialization before call to bluetooth stack write function is done, to make sure that its not overwritten after reception of the write event in case of with_response writes.
    nrf5/drivers/bluetooth: Removing duplicate static variable declaration.
    nrf5/modules/ubluepy: Updating characteristic write method to take in an additional keyword, 'with_response'. Default value is False. Only activated in central role.
    nrf5/drivers/bluetooth: Updating ble_drv_attr_c_write with possibility to do client write with response. Blocking call.
    nrf5/examples: Adding some notes on which pin layout that has been used in the seeed_tft.py ILI9341 driver for driving the display.
    nrf5/examples: Shorten name on seeedstudio_tft_shield_v2.py to seeed_tft.py.
    nrf5/examples: Updating ili9341 example to use new Frambuffer object instead of legacy Framebuffer1.
    nrf5/examples: Removing seeed.py which used a lcd mono framebuffer has been removed.

Matt Trentini <matt.trentini@gmail.com>
    Adding a README for the nRF5 port

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/examples: Updating documentation in SDCard module example. Correcting typo and adding SD card wireing documentation for direct SPI connection.
    nrf5/modules/pin: Adding on() and off() methods to Pin object to be forward compatible with upstream master. Legacy high() and low() methods are kept.
    nrf5/modules/spi: Remove pyb abstraction from SPI module, as there was a bug in transfer of bytes due to casting errors. The update removes the pyb_spi_obj_t wrapper going directly on the machine_hard_spi_obj_t as base for machine SPI objects. SDCard mounting is also tested.
    nrf5/drivers/bluetooth: Enable ubluepy central by default if running nrf52/s132 bluetooth stack. Maturity of the module is pretty OK now.
    nrf5/boards/feather52: Updating pins.csv for the feather52 board.
    nrf5/boards/feather52: Updating LED pull to low.
    nrf5/boards/feather52: Update SPI pinout.
    nrf5/main: Move initializaton of modmusic to the module itself. Upon init of the module, the hardware, pwm and ticker will be started. Could be moved back to main if pwm or ticker should be shared among more modules and have to be initialized more global.
    nrf5/modules/machine/timer: If timer is used in combination with SOFT_PWM (implicitly use of ticker.c) guard the Timer1 instance from being instantiated trough python timer module. Also disable implementation of the HAL IRQ handler which is for now explicitly implemented in ticker.c for Timer1.
    nrf5/modules/music: Update ticker and modmusic to share global ticks counter as a volatile variable. Use Timer1 hardware peripheral instead of instance 0. Timer0 is not free if used in combination with a bluetooth stack. Update IRQ priority to levels that are compatible in use with a bluetooth stack for both nrf51 and nrf52. Apply nrf51 PAN fixes for Timer1 instead of original Timer0.
    nrf5/drivers/bluetooth: Updating bluetooth driver to initialize nrf_nvic_state_t struct during declaration of the global variable instead of explicit memset.
    nrf5/hal/irq: Adding wrappers for handling nvic calls when Bluetooth LE stack is enabled.
    nrf5/modules/machine: Updating IRQ levels in SPI with IRQ priorities compatible with Bluetooth stacks.
    nrf5/device: Remove old startup files in asm, which has now been replaced with c-implementation.
    nrf5: Update Makefile to add c-implementation of startup scripts instead of the .s files.
    nrf5/device: Adding startup files in .c to replace current asm versions.
    nrf5/examples: Tuning Bluetooth LE example controller python script after testing out the example live. Motor speed of 100 was not enought to lift the airplane. Also turning was hard without setting higher angle values. The new values are just guessed values. However, the flying experience was good.
    nrf5/hal/irq: Adding include of nrf_nvic.h if s132 bluetooth stack is used to resolve IRQ function wrappers on newer bluetooth stacks.
    nrf5/drivers/ticker: Removing unused code.
    nrf5/examples: Adding music example. Only working if bluetooth stack is not enabled.
    nrf5/boards/microbit: Disable music and softPWM as there are some issues with the ticker.
    nrf5: Adding -fstack-usage flag to gcc CFLAGS to be able to trace stack usage on modules.
    nrf5/drivers/ticker: Removing LowPriority callback from nrf51 as there is only one SoftwareIRQ free if bluetooth stack is enabled. Also setting new IRQ priority on SlowTicker to 3 instead of 2, to interleave with bluetooth stack if needed. Updating all NVIC calls to use hal_irq.h defined static inlines instead of direct access.
    nrf5/hal/irq: Adding IRQ wrappers if Bluetooth Stack is present.
    nrf5: Facilitate option to configure away the modble if needed. Enabled if MICROPY_PY_BLE config is enabled in bluetooth_conf.h.
    nrf5/boards/microbit: Enable music module by default. However, timer and rtc module has to be disabled. Bluetooth support broken. Optimization needed.
    nrf5/modules/machine: Quickfix. Update timer object to not allow instanciation of Timer(0) if SOFT_PWM is enabled by board.
    nrf5/hal/timer: Quickfix. Disable IRQ handler if SOFT_PWM is configured to be enabled. Ticker driver has in current driver a seperate IRQ handler for this timer instance.
    nrf5/drivers/ticker: Add compile config guard in ticker.c to only include the driver if SOFT_PWM is configured in by board.
    nrf5/drivers/softpwm: Renaming pwm_init to softpwm_init to not collide on symbol name with pwm_init in nrf52 machine PWM object.
    nrf5: Add modmusic QSTR definition of notes to qstrdefsport.h.
    nrf5: Update Makefile to include ticker.c and renamed softpwm. Updating also include paths to include modules/music and drivers/.
    nrf5: Adding include of modmusic.h in main.c.
    nrf5: Call microbit_music_init0() if enabled in main.c.
    nrf5/modules/music: Expose public init function for music module.
    nrf5/modules/music: Update modmusic to use updated includes. Add extern ticks. Add function which implements initialization of pwm and ticker, register ticker callback, and start the pwm and ticker. This corresponds to microbit port main.cpp init.
    nrf5/drivers/softpwm: Enable use of ticker in softpwm driver.
    nrf5/drivers/ticker: Adding ticker.c/.h from microbit port.
    nrf5/drivers/pwm: Renaming pwm.c/.h to softpwm.c/.h
    nrf5/drivers/pwm: Expose pwm_init() as public function.
    nrf5/modules/ubluepy: Making peripheral conn_handle volatile. Upon connection event, the variable is accessed in thread mode. However, the main-loop is blocking on conn_handle != 0xFFFF. If this is not volatile, optimized code will not exit the loop.
    nrf5/drivers/bluetooth: As callback functions are in most usecases are set to NULL upon last event to get public API function out of blocking mode, these function pointers has to be set as volatile, as they are updated to NULL in interrupt context, but read in blocking main-thread.
    nrf5/examples: Fixing overlapping function names and variable names inside the object. Also removing some print statements. Tuning max angle from -7/7 to -25/25.

Glenn Ruben Bakke <glennbakke@gmail.com>
    Powerup (#26)

    * nrf5/examples: Adding python example template for PowerUp 3.0 Bluetooth LE controlled Paper Airplane.
    * nrf5: Enable bluetooth le central while developing powerup 3.0 example.
    * nrf5/examples: Backing up powerup 3.0 progress.
    * nrf5/examples: Adding working example on how to control PowerUp 3.0 paper airplane using bluetooth le.
    * nrf5/bluetooth: Disable central role.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/modules/ubluepy: Correcting alignment of enum values in modubluepy.h.
    nrf5/drivers/bluetooth: Add implementation of client attribute write without response.
    nrf5/modules/ubluepy: Pass on buffer to write in characteristic write central mode.
    nrf5/modules/ubluepy: Updating characteristic object write function to be role aware. Either peripheral or central (gatts or gattc). Adding dummy call to attr_c_write if central is compiled in. Still in progress to be implemented.
    nrf5/drivers/bluetooth: Adding template function for attr_c_write.
    nrf5/drivers/bluetooth: Renaming attr_write and attr_notify to attr_s_write and attr_s_notify to prepare for introduction of attribute write for gatt client.
    nrf5/modules/ubluepy: Fixing type in ubluepy_peripheral.c.
    nrf5/modules/ubluepy: Setting peripheral role upon advertise() or connect().
    nrf5/drivers/bluetooth: Adding role member to peripheral object to indicate whether Peripheral object is Peripheral or Central role.
    nrf5/modules/ubluepy: Continue characteristic discovery until nothing more is found during connect proceedure.
    nrf5/drivers/bluetooth: Refactoring code to group statics for s130 and s132 into the same ifdef. Also adding two empty lines in discovery functions to make it more easy to read.
    nrf5/drivers/bluetooth: Updating characteristic discovery to signal whether anything was found or not.
    nrf5/modules/ubluepy: Continue primary service discovery until nothing more is found in connect proceedure.
    nrf5/drivers/bluetooth: Updating primary service discovery api to take in start handle from where to start the service discovery. Also adjusting return parameter to signal whether anything was found or not.
    nrf5/modules/ubluepy: Remove duplication GAP event handler registration in peripheral.connect().

Glenn Ruben Bakke <glennbakke@gmail.com>
    Support address types (#18)

    * nrf5/modules/ubluepy: Adding new enumeration of address types.
    * nrf5/modules/ubluepy: Adding constants that can be used from micropython for public and random static address types.
    * nrf5/modules/ubluepy: Adding support for optionally setting address type in Peripheral.connect(). Public address is used as default. Address types can be retrieved from 'constants'. Either constants.ADDR_TYPE_PUBLIC or constants.ADDR_TYPE_RANDOM_STATIC.
    * nrf5/modules/ubluepy: Register central GAP event handler before issuing connect to a peripheral. Has to be done before connect() function as a connected event will be propergated upon successfull connection. The handler will set the connection handle which gets connect function out of the busy loop waiting for connection to succeed.
    * nrf5/modules/ubluepy: Removing duplicate setting of GAP event handler in connect().

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/modules/ubluepy: Register central GAP event handler before issuing connect to a peripheral. Has to be done before connect() function as a connected event will be propergated upon successfull connection. The handler will set the connection handle which gets connect function out of the busy loop waiting for connection to succeed.
    nrf5/modules/ubluepy: Fixing compilation bug of wrong variable name when registering gattc event handler in ublupy peripheral connect function (central mode).
    nrf5/bluetooth: Updating makefiles with updated paths to bluetooth le components after moving files.
    nrf5/bluetooth: Moving stack download script to drivers/bluetooth folder.
    nrf5/bluetooth: Move bluetooth driver files to drivers/bluetooth. Move bluetooth stack download script to root folder.
    nrf5/bluetooth: Guarding implementation against being linked in by surrounding it with BLUETOOTH_SD flag. Flag is only set if SD=<sdname> parameter is provided during make.
    nrf5/bluetooth: Moving makefile include folder and source files of bluetooth driver, ble uart and ble module to main Makefile.
    nrf5/bluetooth: Moving help_sd.h and modble.c to modules/ble.
    nrf5/modules/machine: bugfix after changing to MP_ROM_PTR in machine module local dict.
    nrf5: Syncing code with upstream master and converting all module and method tables to use MP_ROM macros. Also adding explicit casting of local dicts to (mp_obj_dict_t*).
    nrf5/modules/timer: Fixing bug in timer_find(). Function allowed to locate index out of range and started to look up in config pointer (index == size of array).
    nrf5/modules/timer: Remove test which is covered by timer_find() function in the line below.
    nrf5/modules/timer: Adding locals dict table and adding start/stop template functions. Also adding constants for oneshot and periodic to locals dict.
    nrf5/modules/timer: Adding timer module to modmachine.
    nrf5/boards: Adding micro:bit default music pin definition. Also adding config flag for enabling pwm machine module.
    nrf5/hal/timer: Adding start/stop template functions to hal_timer.h/.c
    nrf5/Makefile: Adding drivers/pwm.c and modules/music files to the source file list.
    nrf5/modules/music: Adding config guard in musictunes.c and adding import of mphal.h.
    nrf5/modules/music: Including mphal.h before config guard in modmusic.c. Also changed name on config guard to MICROPY_PY_MUSIC. Missing PWM functions during linkage will show up if PWM module has not not configured.
    nrf5/drivers/pwm: Including mphal.h before config guard in pwm.c.
    nrf5: Updating mpconfigport.h to include music module as builtin. Adding new configuration for enabling music module. Activating MODULE_BUILTIN_INIT in order to run music module init function on import.
    nrf5/modules/music: Backing up progress in music module.
    nrf5/drivers/pwm: Updating soft PWM driver to only be included if SOFT_PWM config is set.
    nrf5/hal/gpio: Add function to clear output register using a pin mask.
    nrf5: Adding new configuration called MICROPY_PY_MACHINE_SOFT_PWM to mpconfigport.h. This config will enable software defined PWM using timer instead of using dedicated PWM hardware. Aimed to be used in nrf51 targets.
    nrf5/boards: Removing PWM config set to 0 from pca10001 board. Config will later be re-introduced as SOFT_PWM variant.
    nrf5/pwm: Updating config name of PWM to hardware PWM to prepare for introduction of soft variant.
    nrf5/modules/music: Backing up progress in modmusic.
    nrf5/modules/music: backing up porting progress in modmusic.c.
    nrf5/modules/music: Commenting out backend function calls in modmusic.c to make module compile for now.
    nrf5/modules/music: Updating music module to use pin_obj_t instad of microbit_pin_obj_t. Update include to drivers/pwm.h to resolve some undefined functions.
    nrf5/modules/music: Removing c++ extern definition. Updating include list in modmusic.c. Removing module name from module struct.
    nrf5/modules/music: Removing include of modmicrobit.h in musictunes.c.
    nrf5/modules/music: Adding header to expose extern structs defined in musictunes.c
    nrf5/drivers: Adding copy of microbit soft pwm.
    nrf5/modules/music: Renaming microbitmusic files to modmusic/music.
    nrf5/modules/music: Renaming microbit module to music.
    nrf5/modules/microbit: Copying microbit music module to the port.
    nrf5/modules/timer: Adding timer3 and timer4 to timer object in case of nrf52 target.
    nrf5/modules/timer: Optimizing timer object structure and updating the module to use new hal_timer_init structures and parameters.
    nrf5/hal/timer: Adding empty IRQ handlers for all timers.
    nrf5/hal/timer: Changing hardcoded hal timer instance base to a lookup, so that IRQ num can be detected automatically without the need of using struct param on it. Size of binary does not increase when using Os.
    nrf5: Updating example in main.c on how to execute string before REPL is set up, to allow for boards with two leds. Todo for later is to update this code such that it will skip this LED toggle when there are no leds defined. Or use an example not depending on LEDs.
    nrf5/bluetooth: Updating Bluetooth LE stack download script to allow to be invoked from any parent folder. No need to change directory to bluetooth/ in order to get the correct download target folder position. Using the script location to determine the target folder.
    nrf5/boards: Adding board target for feather52 using s132 v.2.0.1 application offset even if the device is not using softdevice. To be worked on later.
    nrf5/boards: decrease size of ISR region from 4k to 1k in custom feather52 linker script to get some more flash space.
    nrf5/boards: Updating feather52 mpconfigboard.h to use correct uart pins, flow control disabled. Also adjusting leds down to two leds.
    nrf5/boards: Updating path to custom linker script for feather52 board.
    nrf5/boards: Renaming bluefruit_nrf52_feather to feather52 to shorten down the name quite drastically.
    nrf5/boards: Updating path to custom bluefruit feather linker script after renaming board folder.
    nrf5/boards: Renaming bluefruit_feather to bluefruit_nrf52_feather as it also exist a m0 variant of the board name.
    nrf5/boards: Updating mpconfigboard.h for bluefruit nrf52 feather with correct board, mcu and platform name.
    nrf5/boards: Updating adafruit bluefruit nrf52 feather linker script to use 0x1c000 application offset.
    nrf5/boards: Renaming custom linker script for bluefruit feather to reflect that the purpose of the custom linker script is DFU. The script is diverging from the generic s132 v2 linker script in the offset of the application.
    nrf5/boards: Adding custom linker script for adafruit nrf52 bluefruit feather to be able to detect application upper boundry in flash. Pointing s132 mk file to use this new custom linker script instead of the generic s132 v2 linker script.
    nrf5/boards: Adding linker script for nrf52832 s132 v.2.0.1.
    nrf5/boards: Adding template board makefiles and configs for bluefruit nrf52 feather. Copied from pca10040 target board. Linker script reference updated to use s132 v2.0.1. Non-BLE enable build disabled for now. Board configuration for leds, uart etc has not been updated yet from pca10040 layout.
    nrf5/bluetooth: Correcting typo in test where s132 API version is settled.
    nrf5/bluetooth: Updating bluetooth le driver to compile with s132 v.2.0.1 stack.
    nrf5/bluetooth: Add new compiler flag to signal API variants of the s132 bluetooth le stack. The version is derived from the major number of the stack name.
    nrf5/bluetooth: Remove hardcoded softdevice version as this now comes as parameter from board makefile.
    nrf5/boards: Updating makefiles using bluetooth stack to use updated linker script file names.
    nrf5/boards: Renaming bluetooth stack linker scripts to reflect version of the stack.
    nrf5/boards: adding some spaces in s132 makefile for pca10040.
    nrf5/boards: Renaming linker script for nrf52832 using bluetooth stack such that it also holds the version number of the stack. Updating linkerscript using the target linker script.
    nrf5/bluetooth: Add support for downloading s132_2.0.1 bluetooth stack.
    nrf5/bluetooth: Switch over to downloaded bluetooth stacks from nordicsemi.com instead of getting them through the SDK's. This will facilitate download of s132 v2.0.0 later.
    nrf5/bluetooth: Fixing bug found when testing microbit. Newly introduced advertisment data pointer was not cleared on nrf51 targets. Explicit set to NULL as no additional advertisment data is set. Raises a question on why the nrf51 static variable was not zero initialized. To be checked up.
    nrf5: Removing SDK_ROOT parameter to Makefile. Bluetooth stacks should be downloaded using the download_ble_stack.sh. The script should be run inside the bluetooth folder to work properly.
    nrf5/bluetooth: Adding back SOFTDEV_HEX as flash tools in main Makefile uses this to locate hex file.
    nrf5/bluetooth: Including bluetooth stack version in folder name after download to be able to detect if stack has been updated.
    nrf5/bluetooth: Updating Bluetooth LE stack download script.
    nrf5/bluetooth: Adding bash script to automate download of bluetooth le stacks
    nrf5/examples: Adding example to show how to use current PWM module to control servo motors.
    nrf5/modules/machine: Updating PWM module with two new kwargs parameters. One for setting pulse with more fine grained. This value should not exceed the period value. Also, adding support for setting PWM mode, whether it is LOW duty cycle or HIGH duty cycle. By default, high to low is set (this could be changed).
    nrf5/hal/pwm: Updating PWM implementation to support manually set duty cycle period. Pulse width has precidence over duty cycle percentage. Also adding support for the two configurable modes, high to low, and low to high, duty cycles.
    nrf5/hal/pwm: Adding more configuration options to the PWM peripheral wrapper. Possibility to set pulse with manually, and also mode. The mode indicates whether duty cycle is low and then goes high, or if it is high and then go low. Added new type to describe the two modes.
    nrf5: Adding hal_gpio.c to Makefile's source list.
    nrf5/modules/machine: Updating Pin module to register a IRQ callback upon GPIO polarity change events.
    nrf5/hal/gpio: Adding initial gpiote implementation to handle IRQ on polarity change on a gpio.
    nrf5: Moving initialization of pin til after uart has been initialized for debugging purposes. This will make it possible to use uart to print out debug data when adding gpio irq handlers.
    nrf5/hal/gpio: Adding some new structures and functions to register irq channels to gpio's using GPIOTE peripheral
    nrf5/hal/gpio: Adding missing include.
    nrf5/modules/machine: Style fix in pin object, indention.
    nrf5/modules/machine: Adding placeholder for irq method to pin object class.
    nrf5/modules/machine: Adding pin irq type and basic functions and structures.
    nrf5/hal/gpio: Reintroducing gpio polarity toggle event to be able to reference the short form of adding high_to_low and low_to_high together.
    nrf5/hal/gpio: Updating hal_gpio.h with some tab-fixes in order to make the file a bit consistent in style.
    nrf5/hal/gpio: Removing toggle event from the enumeration as that will be a combination of the rising and falling together.
    nrf5/modules/machine: Removing toggle event trigger as that will be a combination of the rising and falling together.
    nrf5/modules/machine: Adding new constants to pin object for polarity change triggers using the enumerated values in hal_gpio.h.
    nrf5/hal/gpio: Adding new enumeration for input polarity change events.
    nrf5/hal: Moving hal_gpio functions, types and defines from mphalport.h to a new hal_gpio.h.
    Revert "lib/netutils: Adding some basic parsing and formating of ipv6 address strings. Only working with full length ipv6 strings. Short forms not supported at the moment (for example FE80::1, needs to be expressed as FE80:0000:0000:0000:0000:0000:0000:0001)."
    nrf5: Removing leftover reference to deleted display module.
    nrf5/usocket: Removing network modules related to Bluetooth 6lowpan implementation as it depends on SDK libraries for now. Will be moved to seperate working branch.
    nrf5: Removing custom display, framebuffer and graphics module to make branch contain core components instead of playground modules.
    nrf5/modules/usocket: Updating import of netutils.h after upmerge with upstream master.
    nrf5/bluetooth: Add some comment on the destination of the eddystone short-url.
    nrf5/bluetooth: Updating Eddystone URL to point to https://goo.gl/x46FES which hosts the MicroPython WebBluetooth application which will be able to connect to the Bluetooth LE UART service of the device and create the REPL.
    nrf5/bluetooth: Adding webbluetooth REPL template. Alternating advertisment of eddystone URL and UART BLE service every 500 ms. Adding new config parameter to bluetooth_conf.h to enable webbluetooth repl. Has to be configured in combination with BLE_NUS. Eddystone URL not pointing to a valid WebBluetooth application at the moment, but rather to micropython.org as a placeholder for now.
    nrf5/modules/ubluepy: Adding method Peripheral object to stop any ongoing advertisment. Adding compile guard to only include advertise and advertise_stop if peripheral role is compiled in.
    nrf5/bluetooth: Adding function to stop advertisment if onging
    nrf5/modules/ubluepy: Adding support for starting advertisment from BLE UART REPL, by delaying registration of gatt/gatts and gattc handlers until needed in advertise or connect. If non connectable advertisment is selected, handlers in peripheral new is not anymore overriding the other peripheral instances which has set the callbacks.
    nrf5/bluetooth: Adding possibility to configure whether advertisment should be connectable or not.
    nrf5/bluetooth: Removing legacy advertise function in the bluetooth driver, which only did a hardcoded eddystone beacone advertisment.
    nrf5/help: Updating ble module help description to also include the address method.
    nrf5/bluetooth: Renaming the ble module method address_print() to address(), as it will now return a string of the resolved local address. Updating the function to create a string out the local address and return this.
    nrf5/bluetooth: Update ble_drv_address_get to new api which pass in a address struct to fill by reference. Updating implementation to copy the address data. Also ensuring that the bluetooth stack has been enabled before fetching the address from the bluetooth stack.
    nrf5/bluetooth: Adding new structure which can hold local address. Updating api prototype for ble_drv_address_get with a address structure by reference.
    nrf5/bluetooth: Updating help text for ble module to also list up enabled() function which queries the bluetooth stack on whether it is enabled or not.
    nrf5/bluetooth: Removing advertise from ble module. Removing help text as well.
    nrf5/examples: Adding python eddystone example using ubluepy api.
    nrf5/modules/ubluepy: Open up Peripheral advertise method to pass custom data to the bluetooth driver. Allowing method to allow kwargs only if no args is set. To support setting data kwarg only.
    nrf5/modules/ubluepy: Adding new members to the ublupy advertisment parameters, to hold custom data payload if set.
    nrf5/bluetooth: Cleaning up stack enable function, to not set device name twice. Also, adding support for setting custom advertisment data.
    nrf5/modules/ubluepy: Adding compile guard for UBLUEPY_CENTRAL around the char_read() call to ble_drv_attr_c_read().
    nrf5/bluetooth: Moving central code inside central bluetooth stack defines to make peripheral only code compile again.
    nrf5/examples: Updating ubluepy scan example to use constant value from ubluepy instead of hardcoded value.
    nrf5/examples: Adding example on how to use the ubluepy Scanner object in order to scan for a device name and find the address of the device. This can subsequently be used to perform a Central role connect() using the Peripheral object.
    nrf5/modules/ubluepy: Turn all attributes (addr, addr_type and rssi) to method calls instead of using common .attr callback. Adding getScanData implementation, which parses the advertisment data and returns a list of tuples containing (ad_type, desc, value). Description is generated by peeking into the ad_types local dicts map table, and do a reverse lookup on the value to find the QSTR.
    nrf5/modules/ubluepy: Adding ad_types constants in new object. Linking in ad_types object into the ubluepy.constants local dict.
    nrf5/modules/ubluepy: Expose ubluepy constant objects as externs in modubluepy.h to be able to get access to the local dict tables in order to do a reverse lookup on value to resolve QSTR from external modules in c.
    nrf5/modules/ubluepy: Upon advertisment event, also store the advertisment data.
    nrf5/modules/ubluepy: Adding callback function to handle read response if gatt client has issued a read request. Also adding method for returning the uuid instance from the object.
    nrf5/modules/ubluepy: Adding value data member to the characteristic object. This can hold the value data when gatt client perform a read and value has to be transferred between interrupt and main thread.
    nrf5/bluetooth: Updating bluetooth driver to support GATT client read of a characteristic value. Data passed to caller in interrupt context, and copy has to be performed. The function call is itself blocking.
    nrf5/modules/ubluepy: Adding uuid() function to service object to return UUID instance of the service.
    nrf5/modules/ubluepy: Adding binVal() function to the ubluepy UUID object. For now returning the uint16_t value of the UUID as a small integer.
    nrf5/modules/ubluepy: Adding dummy function call to ble_drv_attr_c_read.
    nrf5/bluetooth: Adding new api for reading attribute as gatt client. Renaming old ble_drv_attr_read function to ble_drv_attr_s_read to indicate the server role.
    nrf5/bluetooth: Adding event handling cases for gatt client read, write and hvx events.
    nrf5/modules/ubluepy: Tab-fix
    nrf5/modules/ubluepy: Updating peripheral object to handle characteristic discovery (central mode).
    nrf5/modules/ubluepy: Adding start and end handle to service object.
    nrf5/bluetooth: Adding support for central characteristic service discovery. Updating primary service discovery to block until all services has been created in the peripheral object before returning from the bluetooth driver. This pattern is also applied to the characteristic discovery.
    nrf5/modules/ubluepy: Updating ubluepy peripheral object to new bluetooth driver API. Starting to populate service objects and uuid objects. Also adding the service to the peripheral object throught the regular static function for adding services. Handle value for the primary service is assuming that it is the first element in the handle range; start_handle reported by the service discovery.
    nrf5/bluetooth: Updating bluetooth driver to do service discovery, doing callbacks to ubluepy upon each individual primary service discovered. Using intermediate structure defined by the driver, to abstract bluetooth stack specific data in ubluepy.
    nrf5/modules/ubluepy: Adding some work in progress on service discovery.
    nrf5/bluetooth: Adding implementation to the discover service function. Adding handler for gatt client primary service discovery response events, and passing this to the ubluepy upon reception.
    nrf5/bluetooth: Adding function parameters and return type to service and characteristic discovery template functions.
    nrf5/bluetooth: Adding template functions for service discovery in bluetooth driver.
    nrf5/bluetooth: Adding function to register gattc event handler (central).
    nrf5/bluetooth: Adding intermediate gattc callback function type in bluetooth driver.
    nrf5/bluetooth: Turning off debug logging in bluetooth driver, which does not work well with bluetooth REPL mode.
    nrf5/bluetooth: Fixing some smaller tab errors in the bluetooth driver.
    nrf5/bluetooth: Updating bluetooth le driver to handle GAP conn param update request. Also updating minor syntax in previous switch case.
    nrf5/boards: Inrease heap size in the nrf52832 w/s132 bluetooth stack linker script.
    nrf5/modules/ubluepy: Update connect method to parse dev_addr parameter and pass it to the bluetooth driver, going through a allocated heap buffer. Adding call to the bluetooth driver to issue a connect. Hardcoding address type for now.
    nrf5/bluetooth: Updating connect function in the bluetooth driver to do a successful connect to a peripheral device.
    nrf5/modules/ubluepy: Adding template function for central connect() in peripheral object.
    nrf5/modules/ubluepy: Adding locals dict to Scan Entry introducing function to retreive Scan Data. Not working as expected together with .attr. It looks like locals dict functions are treated to be attributes and cannot be resolved.
    nrf5/bluetooth: Adding function for connecting to a device (in central role). Not yet tested.
    nrf5/modules/ubluepy: Return BLE peer address as string instead of bytearray. Updated struct in modubluepy.h to use a mp_obj_t to hold a string instead of a fixed 6-byte array. Stripped down ScanEntry print out to only contain class name, peer address available through addr attribute.
    nrf5/bluetooth: capture address type in addition to advertisment type in bluetooth advertisment reports.
    nrf5/modules/ubluepy: Correcting rssi member in scan_entry object to be int instead of uint.
    nrf5/modules/ubluepy: Adding attribute to ScanEntry object for getting address (returning bytearray), type (returning int) and rssi (returning int).
    nrf5/modules/ubluepy: Copy address type and rssi to the ScanEntry object upon reception of an advertisment report callback.
    nrf5/bluetooth: Adding address type to bluetooth stack driver advertisment structure, and fill the member when advertisment report is received.
    nrf5/modules/ubluepy: Swapping address bytes when copying bluetooth address over to ScanEntry object during advertisment scan report event.
    nrf5/modules/ubluepy: Extending print of ScanEntry object to also include the bluetooth le address.
    nrf5/modules/ubluepy: Create new adv report list for each individual scan. Create a new ScanEntry object instance on each advertisment event recieved and append this to the current adv_report list.
    nrf5/modules/ubluepy: Adding print function to scan_entry object.
    nrf5/modules/ubluepy: Populating ubluepy_scan_entry_obj_t with members that are interesting to keep for the ScanEntry object.
    nrf5/bluetooth: Moving callback definitions to bluetooth driver header. Refactoring bluetooth driver, setting new names on callback functions and updating api to use new callback function name prefix.
    nrf5/modules/ubluepy: Extracting advertisment reports and adding some data to list before returning it in scan() method.
    nrf5/bluetooth: Adding handling of advertisment reports in bluetooth driver and issue callback to ubluepy. A bit ugly implmentation and has to be re-worked.
    nrf5/bluetooth: adding adv report data structure to pass to ubluepy upon adv report event. Adding new api for setting callack where to handle advertisment events in ubluepy.
    nrf5/modules/ubluepy: Adding adv_reports member to scanner object, to hold the result of scan.
    nrf5/modules/machine: Cleaning up uart a bit more. Removing unused any() method, and aligning print and local dict names to use machine_uart prefix.
    nrf5/bluetooth: Turn off bluetooth printf logging.
    nrf5: Add back ublupy scanner and scan entry source files in Makefile.
    nrf5/bluetooth: Enable implementation in scan start function in the bluetooth stack driver.
    nrf5/boards: Adjust heap end after increased .data usage in nrf52832 s132 linker script.
    nrf5/bluetooth: Adding more implementation in scan start function. However, commented out for time beeing, as there is some memory issues when activating central.
    nrf5: Removing ubluepy scanner and scan entry from Makefile source list until nrf52 central issues has been resolved.
    nrf5/bluetooth: Correcting indention.
    nrf5/bluetooth: Adding some implementation to scan_start function.
    nrf5/modules/ubluepy: Adding scan method to the Scanner object. Adding locals dict table.
    nrf5/bluetooth: Adding empty scan_start and scan_stop function to the bluetooth driver.
    nrf5/modules/ubluepy: Adding constructor function to scanner object.
    nrf5/modules/ubluepy: Adding print function to Scanner object.
    nrf5/modules/ubluepy: Disable all functions central related functions in the Peripheral object for now, even if MICROPY_PY_UBLUEPY_CENTRAL is enabled.
    nrf5/modules/ubluepy: Activate Scanner and ScanEntry objects if MICROPY_PY_UBLUPY_CENTRAL is set.
    nrf5/bluetooth: Adding new configuration flag for s132 bluetooth stack, to enable/disable ubluepy central. Disabled by default.
    nrf5: Adding ubluepy_scanner.c and ubluepy_scan_entry.c to Makefile source list.
    nrf5/modules/ubluepy: Adding template object typedefs for scanner and scan entry, and extern definition for scanner and scan_entry object type in modubluepy.h
    nrf5/modules/ubluepy: Adding templates for central role Scanner and ScanEntry objects.
    nrf5/uart: Moving UART from pyb to machine module.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/uart: Refactoring UART module and HAL driver

    Facilitating for adding second HW uart. Moving pyb_uart into
    machine_uart. Adding return error codes from hal_uart functions,
    if the hardware detects an error.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/modules: Updating uart object to allow baudrate configuration.
    nrf5/bluetooth: Moving bluetooth_conf.h to port root folder to make it more exposed.
    nrf5/boards: Remove define of machine PWM module configuration in nrf51 targets, as the device does not have a HW PWM peripheral.
    nrf5: Disable machine PWM module by default if board does not define it.
    nrf5/boards: Disable all display modules in pca10028 board config.
    nrf5: Updated after merge with master. Updating nlr_jump_fail to call __fatal_error in order to provide a non-returning function call.
    nrf5/boards: Adding more heap memory to the nrf51 256k/32k s110 linker script. Leaving 2k for stack.
    nrf5/modules/machine: Adding __WFI() on machine.deepsleep()
    nrf5/modules/machine: Adding __WFE() on machine.sleep()
    nrf5/modules/machine: Adding enable_irq() and disable_irq() method to the machine module. No implementation yet for the case where bluetooth stack is used.
    nrf5/modules/rtc: Adding support for stopping and restarting rtc (if periodic) for all the instances of RTC.
    nrf5/modules: Updating RTC kwarg from type to mode to set ONESHOT or PERIODIC mode.
    nrf5/modules: Adding support for periodic RTC callback.
    nrf5/hal: hal_rtc update. Adding current counter value to period value before setting it in the compare register.
    nrf5/modules: Updating rtc module with non-const machine object list in order to allow setting callback function in constructor.
    nrf5/hal: Adding initialization of LFCLK if not already enabled in hal_rtc.
    nrf5/modules: Moving irq priority settings in RTC object to rtc_init0 when initializing the hardware instances. Also modifying comments a bit. Adding simple example in comment above make_new function on how the object is intended to work.
    nrf5: Updating main.c to initialize the rtc module if enabled.
    nrf5/modules: Added RTC into the machine module globals dict.
    nrf5/modules: Updating rtc module. Not working yet.  Updated to align with new hal_rtc interface. Added start and stop methods. Allowing callback function set from init. This should be moved to start function, not set in main.
    nrf5/hal: Updating hal RTC implementation.
    nrf5/hal: Adding hal_irq.h which defines a set of static inline functions to do nvic irq operations.
    nrf5/modules: Updating machine uart module to use new hal uart interface name.
    nrf5/hal: Renaming uart hal function to use hal_uart prefix.
    nrf5/modules: Updating readfrom function in machine i2c module to use the new hal function which has been implemented.
    nrf5/hal: Adding untested implementation of twi read. Lacking sensors to test with :)
    nrf5/boards: Renaming linker script for all nrf51 and nrf52 into more logical names. Updating all boards with new names.
    nrf5/bluetooth: Updating header guard in bluetooth_conf.h to reflect new filename.
    nrf5/bluetooth: Updating old references to 'sdk' to use the new folder name 'bluetooth' in makefiles.
    nrf5: Renaming sdk folder to bluetooth.
    nrf5: Merging sdk makefiles into bluetooth_common.mk. s1xx_iot is still left out of this refactoring.
    nrf5: Renaming nrf5_sdk_conf.h to bluetooth_conf.h
    nrf5: Starting process of renaming files in sdk folder to facilitate renaming of the folder and make it more logical. Transition will be from sdk to bluetooth.
    nrf5/boards: Adding support for SPI, I2C, ADC, and Temp in machine modules in micro:bit target. Also activating hal drivers for the peripherals.
    nrf5/sdk: Updating low frequency clock calibration from 4 seconds to 250 ms for stack enable when BLUETOOTH_LFCLK_RC is enabled.
    nrf5/boards: Updating nrf51822_aa_s110.ld to be more generic, leaving all RAM not used for stack, .bss and .data to the heap.
    nrf51: Removing stack section from startup file as it got added to the final hex file. Thanks dhylands for helping out.
    nrf5/boards: Adding BLUETOOTH_LFCLK_RC to CFLAGS in microbit s110 makefile.
    nrf5/sdk: Adding support for initializing the bluetooth stack using RC oscillator instead of crystal. If BLUETOOTH_LFCLK_RC is set in CFLAGS, this variant of softdevice enable will be activated.
    nrf5: Initialize repl_display_debugging_info in pyexec.c for cortex-m0 targets.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Updating ringbuffer.h to use volatile variables for start and end.
    nrf5/sdk: Rename cccd_enable variable to m_cccd_enable in bluetooth le UART driver. Also made the variable volatile.
    nrf5/modules: Updating example in ubluepy header to use handle instead of data length upon reception of an event.
    nrf5/modules: Updating ubluepy peripheral to pass handle value to python event handler instead of data length. Data length can be derived from the bytearray structure.
    nrf5/sdk: Updating bluetooth le driver to handle SEC PARAM REQUEST by replying that pairing is not supported. Moving initialization of adv and tx in progress state variables to stack enable function.
    nrf5/modules: Enable ubluepy constants for CONNECT and DISCONNECT for other bluetooth stacks than s132.
    nrf5/sdk: Fixing unaligned access issues for nrf51 (cortex-m0) in bluetooth le driver

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Removing SDK dependant BLE UART Service implementation

    The sdk_12.1.0 nrf52_ble.c implementation was dependent on SDK components.
    This has been replaced with the ble_uart.c implementation using a standalone
    bluetooth driver implementation without need of SDK components.

    Also, sdk.mk has been updated to not use a special linker script.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf52: Removing folder to not confuse which folder is in development

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Removing ble_repl_linux.py

    Script does not really work very well with blocking char read and
    async ble notifications printing data when terminal stdout is blocked
    by readchar. Bluetooth UART profile implemented in ble_uart.c is
    now working with tralamazza's nus_console nodejs script.

    Ref: https://github.com/tralamazza/nus_console

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5: Add default config for MICROPY_PY_BLE_NUS (0)

    Disable Bluetooth UART to be used for REPL by default. Can be overridden
    in nrf5_sdk_conf.h. It is defined in  mpconfigport.h as it is connected to
    mphalport.c, where the config is used to determine whether default print
    functions should be using HW UART or Bluetooth UART.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Add ble_uart.c to source list

    ble_uart.c implements UART Bluetooth service on top of the
    bluetooth stack driver api calls. Can be enabled to be compiled
    in by defining MICROPY_PY_BLE_NUS = 1 in nrf5_sdk_conf.h.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Removing include of sdk_12.1.0's build.mk

    As no sources are needed from the SDK this build makefile
    can be deleted.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5: Force implementation of tx_str_cooked function if BLE NUS enabled.

    If BLE UART service has been enabled, the mp_hal_stdout_tx_strn_cooked
    is not defined by default anymore, and has to be implemented by the
    UART driver (in this case BLE).

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Adding compiler guard around exchange MTU request event.

    As s110 is not having this event or function call to answer on a MTU
    exchange request, this is excluded for all other version than s132
    for now.

Bander Ajba <banderajba@macwan.local>
    minor documentation and extra tabs removal fixes

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Updating BLE UART implementation by swapping TX and RX uuid and characterisitic handling. Removed dummy write delay of 10 ms.
    nrf5/sdk: Backing up progress in bluetooth le driver. Adding new gap and gatts handlers. Added handling of tx complete events when using notification, responding to MTU request, and setting of default connection parameters.

Bander Ajba <banderajba@macwan.local>
    fixed temp module to allow for instance support
    did required modification to merge the temperature sensore module

Dave Hylands <dhylands@gmail.com>
    Fix up Makefile dependencies

    I also didn't see any real reason for mkrules.mk to exist,
    so I merged the contents into Makefile.

    Now you can do:
    ```
    make BOARD=pca10028 clean
    make BOARD=pca10028 flash
    ```
    and it will work properly.

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5: Updating Makefile to use correct variable for setting directory of file to freeze as mpy.
    nrf5: Setting stack top in main.c. Thanks dhylands for pointing this out.
    nrf5/sdk: Backing up progress in BLE UART driver. Adding ringbuffer in order to poll bytes from recieved data in REPL main loop.
    nrf5/modules: Updating ubluepy example to print out gatts write events with data.
    nrf5/boards: Updating pca10028 bluetooth stack targets to have a MCU_SUB_VARIANT.

Bander Ajba <banderajba@macwan.local>
    added support for hardware temperature sensor

Glenn Ruben Bakke <glennbakke@gmail.com>
    nrf5/sdk: Adding macro based ringbuffer written by Philip Thrasher. source: https://github.com/pthrasher/c-generic-ring-buffer/blob/master/ringbuffer.h. Copyright noticed copied into the file, and file reviewed by Philip.
    nrf5/sdk: Updating bluetooth le driver to extract data length and pointer from the event structure upon gatts write operation.
    nrf5/modules: Expose ubluepy characteristic and peripheral types as external declaration in ublupy header.
    nrf5: Updating main to initialize bluetooth le uart module right before bluetooth REPL is started.
    nrf5/sdk: Updating bluetooth le uart implemenatation to block until cccd is written.
    nrf5/sdk: Backing up ubluepy version of ble uart service for Bluetooth LE REPL.
    nrf5/modules: Updating ubluepy example in header to align with bluetooth uart service characteristic's.
    nrf5/modules: Implementing characteristic write method. Possible to use write for both write and notifications.
    nrf5/sdk: Remaning bluetooth driver function ble_drv_attr_notif to *_notify.
    nrf5/modules: Adding props and attrs parameter to ubluepy characteristic constructor to override default values. Adding method for reading characteristic properties. Adding values to the local dict table that gives possibility to OR together a configuration of properties and attributes in the keyword argument during construction.
    nrf5/sdk: Adding parsing of characteristic properties and attributes (extra descriptions for the characteristic, for now cccd).
    nrf5/modules: Adding new members to ubluepy characteristic object, props and attrs. Adding enum typedefs for various properties and attributes.
    nrf5/modules: Syncing uart module code after upmerge with upstream master.
    nrf5/boards: Releasing more RAM for heap use in the nrf51 s110 linker script.
    nrf5/modules: Adding new gatts handler and registration of it during creation of a peripheral object. Also, added forwarding to python callback function (for now the same as for GAP).
    nrf5/modules: Adding new callback type in modubluepy for gatts events.
    nrf5/sdk: Adding support for setting gatts handler in the bluetooth le driver.
    nrf5/modules: Adding constant for CCCD uuid in ubluepy constants dict.
    nrf5: Adding ubluepy_descriptor.c into source list to compile.
    nrf5/modules: Adding template for ubluepy descriptor class implementation.
    nrf5/modules: Adding object structure for ubluepy descriptor.
    nrf5/sdk: Adding template functions for attribute read/write/notify in bluetooth le driver.
    nrf5/modules: Adding getCharacteristic method in ublupy service class. This function returns the characteristic with the given UUID if found, else None. The UUID parameter has to be of UUID class type, any other value, like strings will throw an exception.
    nrf5/modules: Updating method documentation in ubluepy peripheral and service.
    nrf5/modules: Adding new method, getCharacteristics(), in the ubluepy service class. The method returns the list of characteristics which has been added to the service instance.
    nrf5/modules: Updating method documentation in ubluepy peripheral class.
    nrf5/modules: Updating ubluepy service. Creating empty characteristic list in constructor. Appending characteristic to the list when added.
    nrf5/modules: Changed return in ubluepy addService() function to return mp_const_none instead of boolean.
    nrf5/modules: Correcting tabbing in ubluepy periheral impl.
    nrf5/modules: Updating ubluepy peripheral. Creating empty service list in constructor. Appending services to the list when added. Added new function for retreiving the service list; getServices().
    nrf5/modules: Adding new members in ubluepy peripheral and service object to keep track of child elements. Peripheral will have a list of services, and service will have a list of charactaristics.
    nrf5/modules: Removing connection handle from python gap event handler callback function.
    nrf5/modules: Updating ubluepy example in the header file with new function call to add service to a peripheral instance.
    nrf5/modules: Updating peripheral class to assign periopheral parent pointer to service's thats added. Also added a hook in the bluetooth le event handler to store the connection handle value, to prevent any services or characteristics to handle this value themselves.
    nrf5/modules: Updating service object to clear pointer to parent peripheral instance. Also assinging pointer to the service when adding a new characteristic.
    nrf5/modules: Updating print to also include peripheral's connection handle. Setting pointer to service parent instance to NULL.
    nrf5/modules: Correcting event id numbers for connect and disconnect event in ubluepy_constants.py
    nrf5/modules: Shuffle order of typedef in ubluepy header. Adding service pointer in characteristic object. Adding peripheral pointer to the service structure. When populated, the characteristic would get access to conn_handle and service handle through pointers. Also service would get access to peripheral instance.
    nrf5/modules: adding template functions for characteristic read and write.
    nrf5/modules: Adding constants class to ubluepy which will contain easy access to common bluetooth le numbers and definitions for the bluetooth stack.
    nrf5/modules: Updating example in ubluepy header with 16-bit uuid's commented out, to show usage.
    nrf5/sdk: Adding support for adding 16-bit uuid's in advertisment packet. The services in paramter list can mix 16-bit and 128-bit.
    nrf5/sdk: Updating sdk_common.mk with new filename of bluetooth le driver.
    nrf5: Updating all includes of softdevice.h to ble_drv.h
    nrf5/sdk: renaming softdevice.* to ble_drv.*
    nrf5/sdk: Renaming bluetooth driver functions to have ble_drv* prefix. Updating modules using it.
    nrf5/sdk: Enable ubluepy module if s110 bluetooth stack is enabled.
    nrf5/sdk: Updating bluetooth driver to only set periph and central count if s132 bluetooth stack. These parameters does not exist in older stacks.
    nrf5/modules: Updating bluetooth driver and ubluepy to use explicit gap event handler. Adding connection handle parameter to the gap handler from ubluepy. Resetting advertisment flag if connection event is recieved, in order to allow for subsequent advertisment if disconnected again. Example in ublupy header updated.
    nrf5: Adding target to flash bluetooth stack when using pyocd-flashtool.
    nrf5/modules: Guarding callback to python event handler before issue the call in case it is not set.
    nrf5/modules: Updating ubluepy example to turn led2 on and off when receiving connected and disconnect bluetooth event.
    nrf5/sdk: Updating bluetooth driver to have configurable logs.
    nrf5/modules: updating ubluepy and bluetooth driver to support python created event handler. Added registration of callback from ubluepy against the bluetooth driver and dispatching of events to the user supplied python function.
    nrf5/modules: Splitting includes to be inside or outside of the compile guard in ubluepy. This way, all micropython specific includes will be outside, and internal will be inside. This way, there will not be any dependency towards ubluepy headers if not compiled in.
    nrf5/modules: Adding two new functions to ubluepy peripheral class to set specific handlers for notificaitons and connection related events.
    nrf5: Set ubluepy to disabled by default in mpconfigport.h if not configured.
    nrf5/modules: Moving includes inside config defines to make non-ubluepy targets compile again.
    nrf5/modules: Adding 'withDelegate' function to peripheral class.
    nrf5/modules: Adding ubluepy delegate type to modubluepy globals table.
    nrf5: Adding ubluepy_delegate.c to list of source files to compile.
    nrf5/modules: Adding new object struct for delegate class and adding a delegate struct member to Peripheral class to bookeep callback object when event occurs.
    nrf5/modules: Adding template for ubluepy delegate class.
    nrf5/sdk: Fixing debug print in bluetooth driver to not use >>> prefix. Adding one more print for connection parameter update.
    nrf5/sdk: Correcting advertisment packet in bluetooth driver in order to make the device connectable.
    nrf5/sdk: Implementing simple event handler for bluetooth stack driver.
    nrf5/sdk: Disable all sdk components from being included in the build while implementing ubluepy, overlap in IRQ handler symbol.
    nrf5/modules: Shortening down the device name to be advertised in the example to make it fit with a 128-bit complete UUID.
    nrf5/modules: Bugfix in ubluepy_uuid_make_new. Used wrong buffer to register vendor specific uuid to the bluetooth stack.
    nrf5/sdk: Updating advertisment function in bluetooth le driver to add 128-bit complete service UUID provided in service list to the advertisment packet.
    nrf5/sdk: Updating advertisment funciton in bluetooth le driver to iterate through services passed in and calculate individiual uuid sizes.
    nrf5/modules: Updating advertisment method in peripheral class to memset advertisment structure. Also applying service list if set to the advertisment structure.
    nrf5/modules: Updating ubluepy module header usage example. Correcting enum for UUID types to start index from 1. Expanding advertisment data structure to also include service list members.
    nrf5/sdk: Adding static boolean for keeping track of whether advertisment is in progress in the bluetooth driver. Now, advertisment can be restarted with new data any time.
    nrf5/modules: Updating ubluepy peripheral class to use mp_const_none instead of MP_OBJ_NULL for unset values in advertisment method parameter list. Adding extraction of the service list in the advertisment method. The list is not yet handled.
    nrf5/modules: Adding a few examples in the modubluepy.h to get easier copy paste when implementing.
    nrf5/sdk: Successful device name advertisment. Added flags to advertisment packet and enable device name byte copy into the advertisment data.
    nrf5/modules: Turning ubluepy peripheral advertisment function into a keyword argument function so that it would be possible to set device name, service uuids, or manually constructed data payload.
    nrf5/sdk: Updating softdevice driver with function to set advertisment data and start advertisment. Does not apply device name yet. Work in progress.
    nrf5/modules: Adding new structure to ubluepy in order to pass advertisment data information to the bluetooth le stack.
    nrf5/modules: Adding function function to add characteristics to the ubluepy service. Enable function in service's local dict table.
    nrf5/modules: Adding function in bluetooth le driver to add characteristic to the bluetooth le stack.
    nrf5/modules: Adding more members to ublue characteristic object structure.
    nrf5/modules: Adding characteristic class to ubluepy globals table.
    nrf5/modules: Updating ubluepy characteristic implementation.
    nrf5/modules: Re-arranging includes in ubluepy_service.c
    nrf5/modules: Adding ubluepy charactaristic type struct.
    nrf5/modules: Updating ubluepy with more implementation in UUID and Service. Adding function in bluetooth le driver which adds services to the bluetooth stack. Making service take UUID object and Service type (primary/secondary) as constructor parameter in Service class.
    nrf5: Adding ubluepy to include path.
    nrf5/modules: Updating ubluepy UUID class constructor with some naive parsing of 128-bit UUIDs, and pass this to the softdevice driver for registration.
    nrf5/sdk: Adding new function to the softdevice handler driver to add vendor specific uuids and return an index to the entry back by reference.
    nrf5/modules: Updating ubluepy UUID class with constructor that can construct an object based on hex value of 16-bit or string of 16-bit prefixed with '0x'.
    nrf5/modules: Adding Peripheral, Service and UUID class to the ubluepy module globals table.
    nrf5/modules: Extending the implementation of Peripheral class in ubluepy.
    nrf5/modules: Extending the implementation of UUID class in ubluepy.
    nrf5/sdk: Adding configuration to enable the ubluepy peripheral class when using softdevice 132 from the SDK.
    nrf5: Adding ubluepy module to builtins if bluetooth stack is selected. Disable NUS profile by default. Adding source for ubluepy module into makefile to be included in build. The source is only linked if MICROPY_PY_UBLUEPY is set.
    nrf5: Aligning code after upmerge with master. Mostly FAT FS related updates. Not tested after merge.
    nrf5/modules: Adding new and print function to ubluepy peripheral class. Template functions only.
    nrf5/modules: Adding ubluepy UUID class template.
    nrf5/modules: Adding ubluepy characteristic class template.
    nrf5/modules: Adding missing #endif. Also adding to property templates to the lolcal dict.
    nrf5/modules: Adding ubluepy service class template.
    nrf5/modules: Updating ubluepy with class function placeholders.
    nrf5/modules: Renaming ble module folder to ubluepy.
    nrf5/modules: Adding new template file for ubluepy Peripheral class.
    nrf5/pyb: Moving pyb module into modules/pyb.
    nrf5/utime: Moving utime module into modules/utime.
    nrf5/uos: Moving uos module into modules/uos.
    nrf5/network: Moving network module into modules/network. Adding include path to network as its needed by the usocket module.
    nrf5/usocket: Moving usocket module into modules/usocket.
    nrf5/led: Moving led module into modules/machine.
    nrf5/led: Moving led module into modules/machine.
    nrf5/pwm: Moving pwm module into modules/machine.
    nrf5/rtc: Moving rtc module into modules/machine.
    nrf5/timer: Moving timer module into modules/machine.
    nrf5/pin: Moving pin module into modules/machine.
    nrf5/adc: Moving adc module into modules/machine.
    nrf5/i2c: Moving i2c module into modules/machine.
    nrf5/spi: Moving spi module into modules/machine.
    nrf5/uart: Moving uart module into modules/machine to start converting it into machine module and not pyb.
    nrf5/machine: Moving modmachine into modules/machine folder. Updating Makefile.
    nrf5/drivers: Renaming folder to modules.
    nrf5: Renaming python modules folder to freeze to give the folder its right meaning. The scripts put into this folder will be frozen.
    nrf5/drivers: Adding template for ubluepy module.
    nrf5/sdk: Adding compilation config whether to include BLE NUS implementation. Config found in sdk/nrf5_sdk_conf.h. NUS enabled for s132 targets by default.
    nrf5: Fallback to HW UART when not Bluetooth LE UART has been enabled.
    nrf5: Updating main.c to use MICROPY_PY_BLE_NUS as switch for regular uart initialization or bluetooth le uart initialization.
    nrf5/sdk: Adding work-in-progress script to connect to bluetooth le REPL using bluepy python module in linux.
    nrf5/boards: Updating board makefiles for s132 and s1xx target for pca10040 (nrf52832) by adding sub variant and device define to the makefiles.
    nrf5/examples: Updating ssd1306.py example with a comment describing proceedure on how to use the I2C variant of the driver.
    nrf5/hal: Line wrapping params in hal_spi.c to make it easier to read.
    nrf5/hal: Updating hal_twi.c tx implementation to a working state. STARTTX only issued once, before looping bytes.
    nrf5/examples: Updating ssd1306.py driver to work with i2c master write implementation.
    nrf5/hal: Updating hal_twi.c with tx function. Gets multiple startup bytes for each clocked byte.
    nrf5/hal: Updating hal_twi.c with tx function which partly works. Bytes are clocked out a bit out of order.
    nrf5/hal: Started implementation of hal_twi.c (non-DMA). Init function started.
    nrf5: Removing hal_twie.c from being compiled in.
    nrf5: Renaming configuration define in board configs using i2c from MICROPY_PY_MACHINE_HW_I2C to MICROPY_PY_MACHINE_I2C as the config is overlapping with the latter.
    nrf5: Renaming configuration define in board configs using i2c from MICROPY_PY_MACHINE_HW_I2C to MICROPY_PY_MACHINE_I2C as the config is overlapping with the latter.
    nrf5: Making i2c configurable from board configuration in case board has to sacrifice the i2c machine module.
    nrf5/boards: Activating all display drivers in pca10056 board.
    nrf5/boards: Updating s110 SD linker script for micro:bit.
    nrf5/i2c: Making use of hal twi tx function in writeto function.
    nrf5/hal: Updating twi driver with template functions.
    nrf5/hal: Updating TWI DMA implementation. Suspend not working on tx. Rx not implemented yet.
    nrf5/hal: Updating twi master tx with stop parameter.
    nrf5/hal: Adding i2c master functions for tx and rx in hal header.
    nrf5/hal: Adding new macros functions to mphalport.h which are used by extmod i2c machine module.
    nrf5/i2c: Adopting use of extmod/machine_i2c module as base for port's machine i2c module.
    nrf5/i2c: Backing up before trying out extmod i2c integration.
    nrf5: Adding i2c class to machine module globals table.
    nrf5: Updating main.c to initialize the i2c machine module if selected.
    nrf5/i2c: Updating i2c machine module with new constructor parameters to set scl and sda pins. Also updating print funciton to debug pin number and port number for the gpio set.
    nrf5/i2c: Updating i2c module to new new hal api, as master is initialized with its own init function.
    nrf5/hal: Adding members to TWI config struct, device address and scl/sda pin. Renaming and adding function such that twi slave and master has seperate init function. Started implementation of master init function for nrf52 using DMA (hal_twie.c).
    nrf5/i2c: Updating module to use new struct layout from hal_twi.h
    nrf5/hal: Updating TWI with frequency enums.
    nrf5/examples: Updating game file to use ssd1305 display driver.
    nrf5/drivers: Updating examples in comment in oled ssd1305 object to use the draw module.
    nrf5/hal: Fixing nrf51 SPI pin configuration to use pin member of struct.
    nrf5/boards: Updating boards to comply to new style of configuring pins for uart and spi.
    nrf5/boards: Updating board configuration for pca10056 (nrf52840) with new pin configuration scheme for SPI and UART.
    nrf5/hal: Updating hal QSPI header with define guard to filter out usage of undefined structures and names when compiling against non-52840 targets.
    nrf5/drivers: Updating display objects to use new SPI pin configuration in print function.
    nrf5/hal: Updating SPI DMA variant with more frequencies, and allowing rx and tx buffers to be NULL.
    nrf5/uart: Updating uart module to use new config hal config structure members for pins. Changing board config provided pins to use const pointers from generated pins instead of pin name.
    nrf5/hal: Updating uart hal to use pointers to Pin objects instead of uint pin and port number.
    nrf5/hal: Updating uart hal to use pointers to Pin objects instead of uint pin and port number.
    nrf5: Updating modmachine to add SPI in globals dict when MICROPY_PY_MACHINE_HW_SPI define is set. This diverge from regular MICROPY_PY_MACHINE_SPI config. Fixes missing SPI in the machine module after renaming port SPI enable define.
    nrf5: Updating main.c to enable SPI if MICROPY_PY_MACHINE_HW_SPI is set. This diverge from regular MICROPY_PY_MACHINE_SPI config. Fixing missing init of SPI after renaming port SPI enable define.
    nrf5/spi: Adding multiple instances of machine SPI depending on which chip is targeted (nrf51/nrf52832/nrf52540). Updating board config requirement to give variable name of const pointer to Pin instead of a Pin name. Adding support of giving keyword set mosi/miso/clk pin through constructor.
    nrf5/hal: Updating SPI hal with full list of SPI interfaces as lookup tables for all devices. Updating init struct to pass Pin instance pointers instead of uint pin number and ports.
    nrf5/drivers: Activate ssd1289 object in the display module.
    nrf5/boards: Adding ssd1289 lcd module in pca10040 (nrf52832) board.
    nrf5: Adding ssd1289 driver and python module into build.
    nrf5/drivers: Adding ssd1289 lcd tft driver and python module.
    nrf5/hal: Fixing compile issues in quad SPI driver.
    nrf5/hal: Updating Quad SPI hal driver.
    nrf5/hal: Aligning assignment in hal_adc.c
    nrf5/hal: Adding more types to quad SPI header.
    nrf5: Syncing code after upmerge with master.
    nrf5/hal: Updating clock frequency enums and lookup table for quad spi.
    nrf5/hal: Adding QSPI base and IRQ num in c-file.
    nrf5/hal: Adding hal template files for 32mhz Quad SPI peripheral.
    nrf5/drivers: Optimizing update_line in ili9341 driver a bit.
    nrf5/drivers: Adding space in macro.
    nrf5/drivers: Adding rgb16.h with macro to convert 5-6-5 rgb values into a 16-bit value.
    nrf5: Adding configuration defines for SSD1289 lcd driver.
    nrf5: Removing old framebuffer implementation.
    nrf5: Remove old framebuffer implementation from being included into the build.
    nrf5/drivers: Enable framebuffer and graphics module to be compiled in by default if display is selected into the compilation.
    nrf5/drivers: Updating epaper driver sld00200p to use new framebuffer.
    nrf5/drivers: Removing debug printf's from epaper display python module.
    nrf5/drivers: Updating python example in comment for ls0xxb7dxx display module.
    nrf5/boards: Enable LS0XXB7DXXX display module in pca10056 board config.
    nrf5/drivers: Adding ls0xxb7dxx to display module.
    nrf5: Adding ssd1305 and ls0xxb7dxxx (sharp memory display) drivers to be included in build.
    nrf5/drivers: Updating sharp memory display driver and python module to a working state.
    nrf5/spi: Adding posibility to configure SPI firstbit mode to LSB or MSB. Default is MSB. Updating python module and hal driver.
    nrf5/drivers: Tuning memory lcd driver a bit. Fixing small mp_printf usage bug.
    nrf5/drivers: Adding sharp memory display driver. For now hardcoded to 2.7 inch variant.
    nrf5: Adding configuration define for sharp memory display series in mpconfigport.h preparing for driver to be included.
    nrf5/boards: Enable ssd1305 oled display to be default for pca10028 for now.
    nrf5/drivers: Adding ssd1305 oled driver. This is very similar to ssd1306, so a merge will happen soon.
    nrf5/drivers: Adding ssd1305 oled driver. This is very similar to ssd1306, so a merge will happen soon.
    nrf5/drivers: Updating ili9341 display object to use new framebuffer.
    nrf5/drivers: Updating ili9341 driver to use new framebuffer, and removing the compressed param from the line update function.
    nrf5: Adding micropython mem_info() to be included in mpconfigport.h.
    nrf5/drivers: Adding example in comment on how to use the ili9341 driver with nrf51/pca10028 board.
    nrf5/examples: Adding a extra global variable to the game which breaks the game execution.
    nrf5/examples: Adding 2048 game using OLED SSD1306 128x64 display and analog joystick.
    nrf52/boards: Increasing the stack and heap in pca10056 (nrf52840) target from 2k/32k to 40k/128k to debug some buffer problems when running large frozen python programs.
    nrf51/boards: Increasing heap and stack size in the pca10028 board.
    nrf51/boards: Enable display driver and oled ssd1306 (also bringing in framebuffer and graphics module) into the pca10028 target.
    nrf5: Enable display/framebuffer.c and graphic/draw.c into the build.
    nrf5/drivers: Adding defines to exclude implementation of draw.c module if not enabled.
    nrf5: Adding configuration defines for the graphics module (draw) and enabling this by default if using oled ssd1306 display which has a compatible python object definition.
    nrf5/drivers: Adding draw module with circle, rectangle and text functions. Can be used by any display object which implements display callback functions.
    nrf5/drivers: Moving oled ssd1306 driver over to new framebuffer layout. Moving some of the draw algorithms into the object in order to optimize the speed on writing data from the framebuffer.
    nrf5/hal: Removing stdio.h include in adce.c which were used for debugging.
    nrf5/boards: Adding ADC pins in pins.csv file for pca10056 (nrf52840).
    nrf52/hal: Adding adce (saadc) implementation for nrf52 to sample values on a channel.
    nrf5/adc: Adding all 8 instances to adc python module. Valid for both nrf51 and nrf52.
    nrf5/drivers: Adding new structures to moddisplay. Adding a display_t structure to cast all other displays into, to retrieve function pointer table of a display object type. Also adding the function table structure which needs to be filled by any display object.
    nrf5/drivers: Adding a new framebuffer implementation to replace the mono_fb.
    nrf5/boards: Updating pca10028 (nrf51) board config. Enable SPI machine module. Enable flow control on UART. Correcting SPI CLK, MISO and MOSI pin assignments.
    nrf5/adc: Updating adc module and hal with a new interface. No need for keeping peripheral base address in structure when there is only one peripheral (nrf51).
    nrf5/rtc: Correcting RTC1 base error in rtc template.
    nrf5: Adding adc module to machine module.
    nrf5/hal: Updating hal_adc* with more api functions.
    nrf5/adc: Adding updated adc module.
    nrf5/boards: Enabling ADCE (SAADC) variant of adc hal to match hardware on nrf52 series.
    nrf5/boards: Adding ADC config to pca10028 pins.csv
    nrf5/boards: Tuning linker script for nrf51822_ac to get some more heap.
    nrf5: Updating nrf51_af.csv to reflect pins having ADC on the chip.
    nrf5/boards: Updating make-pins.py to generate ADC pin settings from board pins.csv.
    nrf5/hal: Updating hal_adc header to use correct Type for ADC on nrf52.
    nrf5/adc: Updating module to compile.
    nrf5/boards: Enable ADC machine module for pca10028, pca10040 and pca10056.
    nrf5: Add add ADC machine module into build.
    nrf5: Adding new config for ADC module in mpconfigport.h.
    nrf5/adc: Adding ADC machine module base files. Implementation missing.
    nrf5: Adding hal_adc* into build.
    nrf5/boards: Enable ADC/SAADC hal for pca10028 (nrf51), pca10040 (nrf52832) and pca10056 (nrf52840) boards.
    nrf5/hal: Removing chip variant guard for hal_adc*, and let this be up to the hal conf file to not mess up at the moment.
    nrf5: Add i2c.c, i2c machine module, and hal_twi into build.
    nrf5/boards: Enable hardware I2C machine module for pca10028 (nrf51), pca10040 (nrf52832) and pca10056 (nrf52840) boards.
    nrf5/boards: Enable TWI hal for pca10028 (nrf51), pca10040 (nrf52832) and pca10056 (nrf52840) boards.
    nrf5/i2c: Adding files for hardware i2c machine module and adding config param in mpconfigport to disable by default.
    nrf5/hal: Adding template files for TWI (i2c) hal.
    nrf5/hal: Adding template files for ADC hal.
    nrf5/drivers: Correcting tabbing in oled ssd1306 c-module.
    nrf5/boards: Enable SSD1306 spi driver for pca10040 (nrf52832) and pca10056 (nrf52840) boards.
    nrf5/drivers: Adding SSD1306 SPI display driver. Not complete, but can do fill screen operation atm.
    nrf5/drivers: Adding epaper display example script in comment for pca10056 / nrf52840 in the display module.
    nrf5/boards: Enable PWM module and epaper display module in pca10056 board config.
    nrf5/drivers: Adding some more delay on bootup to ensure display recovers after reset.
    nrf5/examples: Adding copy of ssd1306.py driver hardcoded with SPI and Pin assignments.
    nrf5/drivers: Updating ili9341 driver to set CS high after cmd or data write.
    nrf5/drivers: Extending print function for ili9341 object to also print out gpio port of the SPI pins.
    nrf5/boards: Giving a bit more heap for nrf52840 linker script.
    nrf5/drivers: bugfix of the sld00200p driver. Stopping the pwm instead of restarting it. Shuffle placement of static function.
    nrf5/drivers: Correcting object print function to also include port number of the SPI pins. Correcting usage script example in comment.
    nrf5/drivers: Adding an initial script as comment for ili9341 on nrf52840/pca10056 in the driver module comment.
    nrf5/examples: Removing tabs from epaper python script usage comment, so that it is easier to copy paste.
    nrf5/hal: Refining if-defs to set up GPIO base pointers in mphalport.h
    nrf5/devices: Removing define which clutters ported modules from nrf.h.
    nrf5/boards: Enabling spi in pca10056 hal config.
    nrf5/boards: Enabling ili9341 display drivers and to be compiled in on pca10056 target board. Updating SPI configuration with gpio port.
    nrf5/boards: Enabling display drivers/spi/pwm to be compiled in on pca10040 target board. Updating SPI configuration with gpio port.
    nrf5/hal: Correcting SPI psel port position define name to the one defined in nrf52840_bitfields.h
    nrf5/led: Hardcoding GPIO port 0 for Led module for now.
    nrf5/hal: Changing import of nrf52 includes in hal_uarte.c to not be explicit. Now only nrf.h is included.
    nrf5: Updating pin, spi and uart to use port configuration for gpio pins. Update pin generation script, macros for PIN generation. Updating macros for setting pin values adding new port parameter to select the correct GPIO peripheral port.
    nrf5/boards: Disable SPI hal from pca10001 board.
    nrf5/boards: Disable SPI/Timer/RTC hal from microbit board.
    nrf5: Exclude import of pwm.h in modmachine.c if MICROPY_PY_MACHINE_PWM is not set, as nrf51 does not yet have this module yet.
    nrf5: Exclude import of pwm.h in main.c if MICROPY_PY_MACHINE_PWM is not set, as nrf51 does not yet have this module yet.
    nrf5/drivers: Block nrf51 from compiling epaper_sld00200p for the moment. There is no soft-pwm present yet, and including pwm would just make compilation fail now.
    nrf5/hal: Making nrf51/2_hal.h go trough nrf.h to find bitfields and other mcu headers instead of explicit include.
    nrf5/boards: Adding more pins to nrf52840 / pca10056 target board.
    nrf5/pin: Adding more pins to nrf52_af.csv file for nrf52840. Port '1' will be prefixed 'B'.
    nrf5/pin: Adding PORT_B to Pin port enum to reflect gpio port 1 on nrf52840.
    nrf5/boards: Updating all board configs with gpio port configuration for uart/spi pins. Leds still not defined by gpio port.
    nrf5/devices: Updating header files for nrf51 and nrf52. Adding headers for nrf52840.
    nrf5: Updating to use new nrfjprog in makefile. Needed for nrf52840 targets. Changed from pinreset to debug reset.
    nrf5/boards: Updating makefiles to use system.c files based on sub-variant of mcu.
    nrf5/devices: Renaming system.c files for nrf51 and nrf52 to be more explicit on which version of chip they are referring to.
    nrf5/drivers: Backing up working epaper display (sld00200p shield) driver before refactoring.
    nrf5/drivers: Fixing parenthesis in ILI9341 __str__ print function.
    nrf5/pwm: Moving out object types to header file so that it can be resused by other modules.
    nrf5/drivers: Updating a working version of ili9341 module and driver. About 10 times faster than python implementation to update a full screen.
    nrf5: Started to split up lcd_mono_fb such that it can be used as a c-library and python module with the same implementaton.
    nrf5/hal: Adding include of stdbool.h in hal_spi.h as it is used by the header.
    nrf5/drivers: Adding preliminary file for ili9341 lcd driver.
    nrf5/hal: Adding support for NULL pointer to be set if no rx buffer is of interest in SPI rx_tx function.
    nrf5: Adding ili9341 class and driver files in Makefile to be included in build.
    nrf5/drivers: Adding template files for upcomming ili9341 driver.
    nrf5/drivers: Adding lcd ili9341 object implementation to make a new instance. print implemented for debugging pins assigned to the display driver. No interaction yet with the hal driver.
    nrf5/drivers: Adding ILI9341 class to the display global dict.
    nrf5/boards: Changing tft lcd display name from SLD10261P to ILI9341 in pca10040 board configuration.
    nrf5: Moving out mp_obj_framebuf_t to the header file to get access to it from other modules. Exposing helper function to make new framebuffer object from c-code.
    nrf5: Trimming down display configurations in mpconfigport.h
    nrf5/spi: Moving *_spi_obj_t out of implementation file to header. Setting hal init structure in the object structure instead of making a temp struct to configure hal. This would enable lookup of the spi settings later.
    nrf5: Removing epaper, lcd and oled modules from Makefile source list as the display modules has been moved to display root folder.
    nrf5/drivers: Removing one level of module hierarchy in display drivers. Removed epaper, lcd and oled modules, making import of classes happen directly from display module.
    nrf5/drivers: Creating python object implementation (locals) to be used for epaper sld00200p.
    nrf5: Moving color defines in lcd_mono_fb from .c to .h so that it can be reused by other modules.
    nrf5: Enable MICROPY_FINALISER and REPL_AUTO_INDENT.
    nrf5/drivers: Adding requirement for nrf52 target on the epaper sld00200p for now. There is no ported PWM module for nrf51 target yet. Hence, soft PWM for nrf51 needs to be added.
    nrf5: Adding suffix to _obj on epaper_sld00200p module.
    nrf5: Correcting define name for epaper sld00200p, missing 0.
    nrf5/drivers: Enable EPAPER_SLD00200P in epaper module globals table.
    nrf5/drivers: Adding missing file for epaper module / driver.
    nrf5/modules: Moving python scripts to examples folder to free up some flash space on constrained targets as modules folder is used as frozen files folder.
    nrf5/boards: Enable display module to be built in. Also adding one epaper display and one tft lcd to test display module when porting the corresponding drivers to micropython.
    nrf5/drivers: Removing external decleration of display module in header.
    nrf5/drivers: Renaming display module to mp_module prefix as it is going to be inbuilt. ifdef'ing all submodules based on type of display configured through mpconfigport.h
    nrf5/drivers: Adding ifdef sourrounding the implementation of module. Configurable with mpconfigport.h.
    nrf5: Adding display module to port builtins.
    nrf5/drivers: Adding driver files to makefile. Implicitly adding display module.
    nrf5/drivers: Adding template for c-implementation of lcd, epaper and oled drivers as a display module.
    nrf5/modules: Updating to correct name of display in epaper driver.
    nrf5/modules: Adding python epaper display driver. Currently colors have been reversed.
    nrf5/hal: Fixing bug in mp_hal_pin_read in mphalport.h which tried to read an OUT register. Corrected to read the IN register.
    nrf5: Adding sleep_us to modutime.c and exposing mp_hal_delay_us in hal/hal_time.h
    nrf5/lcd: Updating framebuffer with double buffer for epaper displays. Moving statics into instance struct. Adding new function to refresh using old buffer, such that epaper can get a cleaner image after update.
    nrf5/boards: Adding initial microbit build files and board configurations.
    nrf5: Makefile option to set FLASHER when doing flash target. If defined in board .mk file, this will be used, else nrfjprog will be used by default (segger). This opens up for using pyocd flashtool and still run 'make flash'.
    nrf5/boards: Updating pca10028 board config to not define RTS/CTS pins when HWFC is set to 0.
    nrf5/uart: Making compile time exclusion of RTS/CTS if not defined to use flow control by board configuration.
    nrf5/spi: Removing automatic chip select (NSS) in hal_spi.c. Also removing configuration of this pin as it is confusing to pass it if not used. User of SPI has to set the NSS/CS itself.
    nrf5/modules: Updating PWM test python script to cope with new api.
    nrf5/hal: Fixing some issues in PWM stop function. Doing a proper stop and disable the peripheral.
    nrf5/pwm: Implementing start and stop call to hal on init and deinit as hal_init does not longer start the PWM automatically.
    nrf5/hal: Exposing two new PWM hal functions start() and stop().
    nrf5/hal: Moving enablement of PWM task from init to a start function. Also activating code in stop function to stop the PWM.
    nrf5/modules: Adding licence text on seeedstudio tft shield python modules.
    nrf52/boards: Tuning linker script for nrf52832 when using iot softdevice. Need more heap for LCD framebuffer.
    nrf5/lcd: Adding lcd_mono_fb.c to source list in the makefile. Adding define in implementation to de-select the file from being included. Adding module to PORT BUILTIN in mpconfigport.h
    nrf52/sdk: Correcting path to iot softdevice if SDK is enabled.
    nrf5: Adding help text for CTRL-D (soft reset) and and CTRL-E (paste mode) in help.c
    nrf5: Adding handling of CTRL+D to reset chip in main.c. Call to NVIC System Reset is issued.
    nrf5/lcd: Correcting indention (tabs with space) in framebuffer module source and header.
    nrf5/lcd: Changing framebuffer to use petme128 8x8 font. This is vertical font. Code modified to flip and mirror the font when rendering a character. Adding copy of the font from stmhal.
    nrf5/modules: Adding new driver for seeedstudio tft shield v2, using new framebuffer module which handles faster update on single lines, callback driven write on each line which is touched in the framebuffer.
    nrf5/lcd: Adding header file for lcd_mono_fb.
    nrf5/lcd: Updating brackets in framebuffer module.
    nrf5/lcd: Renaming variable name from m_ to p_
    nrf5/lcd: Cleaning up a bit in lcd framebuffer.
    nrf5/lcd: Adding work in progress monochrome lcd framebuffer driver which only updates modified (dirty) display lines.
    nrf5/modules: Updating pulse test to set output direction on the LED pin used in the test.
    nrf5/modules: Updating seeedstudio tft lcd driver to render using already existing framebuffer implementation.
    nrf5/boards: Bouncing up heap to 32k  on pca10040 to allow for application to allocate 9600bytes+ framebuffer when using LCD screen (240x320).
    nrf5/modules: Adding a function to get access to the SD card flash drive on the seeedstudio tft shield.
    nrf5/modules: Adding new python script to initialize and clear the display on Seeedstudio 2.8 TFT Touch Shield v2.
    nrf5/modules: Updating documentation on sdcard.py copy to use new params in the example description
    nrf5/modules: Updating mountsd, SD card test script with new params.
    nrf5/pin: Merging input and output pin configuration to one comon function. Adding implementation in Pin class to be able to configure mode and pull. Updating drivers which uses gpio pin configuration to use new function parameters.
    nrf5: Adding rtc.c which implements the machine rtc module to be included in build.
    nrf5/boards: Enable MICROPY_PY_MACHINE_RTC in pca10028 (nrf51) and pca10040 (nrf52) targets.
    nrf5/hal: Adding empty init function in hal_rtc.c
    nrf5/hal: Adding structures and init function prototype to hal_rtc.h.
    nrf5: Setting MICROPY_PY_MACHINE_RTC to disabled by default (during development) in mpconfigport.h. This can be overriden by board config.
    nrf5/rtc: Adding skeleton for machine rtc module for nrf51/52.
    nrf5: Adding timer.c which implements the machine timer module to be included in build.
    nrf5: Setting MICROPY_PY_MACHINE_TIMER to disabled by default (during development) in mpconfigport.h. This can be overriden by board config.
    nrf5/boards: Enable MICROPY_PY_MACHINE_TIMER in pca10028 (nrf51) and pca10040 (nrf52) targets.
    nrf5: Adding initialization of timer module if enabled by MICROPY_PY_MACHINE_TIMER.
    nrf5/timer: Adding initializaton of id field for Timer_HandleTypeDef's. Adding simple print function. Adding make_new function. Enabling the functions in machine_timer_type.
    nrf5/hal: Adding empty init function in hal_timer.c
    nrf5/hal: Adding structures and init function prototype to hal_timer.h.
    nrf5/timer: Adding skeleton for machine timer module for nrf51/52.
    nrf/boards: Adding RTC and TIMER hal to be linked in when implemented. Enable one board for nrf51 and one for nrf52 for ease of debugging when implementing the hal.
    nrf5: Adding rtc and timer hal to Makefile.
    nrf5/hal: Adding skeleton files for rtc and timer driver.
    nrf5/modules: Updating pulse example to work with Pin object instead of hard coded pin number.
    nrf5/pwm: Switching from hardcoded pin number to Pin object type as input to the new() function. Also changing the parameter from kw to arg.
    nrf5/modules: updating test python file with correct PWM frequency type.
    nrf5/modules: Adding a python test file with function to dim a specific led (17).
    nrf5/pwm: Updating pwm module with freq function which re-initilises the PWM instance such that new frequency will be applied.
    nrf5/pwm: Initializing pwm instances in main.c if enabled by MICROPY_PY_MACHINE_PWM.
    nrf5/pwm: Adding api to initialize pwm instances.
    nrf5: Updating mpconfigport.h to set a default for PWM machine module to be enabled by default, if not disabled in a board config. Refactoring order in the file.
    nrf52: Set names to be used on PWM0-2 in board config. For nrf52840, the PWM3 is excluded as repo does not have latest headers to reflect this yet. Bump up to be done soon.
    nrf52: Enable PWM HAL for both pca10040 (nrf52832) and pca10056 (nrf52840).
    nrf51: Disable MICROPY_PY_MACHINE_PWM for now in all nrf51 target boards as sw impl. is not yet included in the repo.
    nrf5: Only enable hal_pwm.c if nrf52 target as nrf51 must have a sw implementation.
    nrf5/pwm: Adding pwm to modmachine.c
    nrf5/hal: Updating PWM header file with init function prototype. Also added PWM_HandleTypeDef structure that can be used in the pwm python module.
    nrf5/pwm: Updating PWM dict table to have freq and duty function. Also added creation of default objects based on PWM name set in board config. Adding ifdef surrounding the import of hal_pwm.h as this module might be used by software implmentation of PWM later.
    nrf5/pwm: Removing include of hal_pwm.h as pwm.c might not use a hal, but sw implementation.
    nrf5: Updating makefile to compile in pwm.c and hal_pwm.c
    nrf5/boards: Adding config flag for HAL_PWM in pca10040 and pca10056.
    nrf5: Adding pwm work in progress machine PWM module.
    nrf5/hal: Starting implementation of PWM hal to be used by PWM python module later.
    nrf5: Adding initial board files for pca10056. The files are not complete (only 32 pins are added for now). UART REPL, leds, and Pins (up to 31) are functional.
    nrf5: Updating comment in linker script for nrf52832 and nrf52840 to distinguish between the two nrf52 variants.
    nrf5: Adding new linker script for nrf52840.
    nrf5: updating flash size comment in nrf52832 linker script.
    lib/netutils: Adding some basic parsing and formating of ipv6 address strings. Only working with full length ipv6 strings. Short forms not supported at the moment (for example FE80::1, needs to be expressed as FE80:0000:0000:0000:0000:0000:0000:0001).
    nrf5: Updating port with new content. SPI, SDcard (trough sdcard.py), Pin, and machine module. Also adding some basic modules depending on SDK and bluetooth stack from nordic semiconductor. NUS is module copied from original port by tralamazza, and new basic module for 6lowpan over BLE which can be used by modnetwork and modusocket. Basic BLE module to enable bluetooth stack and start a eddystone advertisment is kept, and still works without SDK, even if in the SDK folder (its placed there as it needs bluetooth stack from an SDK).
    Renaming softdevice folder to sdk.
    Removing unused 'NRF_SOFTDEVICE' compile variable from all board .mk softdevice targets.
    Fixing main Makefile CFLAGS concatination error when setting softdevice param

Daniel Tralamazza <daniel@tralamazza.com>
    ignore default build folders
    move softdevice (SD) specific code from the main Makefile to their respective board/SD makefiles

Glenn Ruben Bakke <glennbakke@gmail.com>
    Updating Makefile by removing unwanted LDFLAG setting cpu to cortex-m0 in all cases.
    Updating modble.c method doc of address_print() to reflect the actual function name.
    Base support for nrf51 and nrf52 base without depending on SDK. SoftDevice usage optional.

Daniel Tralamazza <daniel@tralamazza.com>
    remove dup declaration mp_builtin_open_obj
    init

Date of "init" commit: Wed Jun 22 22:34:11 2016 +0200
2018-07-18 17:12:25 +10:00
hathach
bb28faf39c arturo182 review 2018-07-17 23:57:49 +07:00
hathach
a0b9871ba9 use seperate interrupt_char.c for nrf
move usb descriptors into usb.c
2018-07-17 21:52:20 +07:00
hathach
d4e84a9bd4 Merge branch 'master' into fix_nrf52840_serial 2018-07-17 21:27:16 +07:00
hathach
3525d65af3 should fix #1021
- update tinyusb for wanted char
- move usb code into usb.c
2018-07-17 21:24:49 +07:00
Dan Halbert
a20ab40ed2 Merge 3.0.0 final bugfixes and changes to master 2018-07-16 09:01:46 -04:00
Dan Halbert
bfe14ff824
Merge pull request #1014 from arturo182/nrf_shared_ble
nrf: Split the ble module into a shared part and the port implementation
2018-07-13 10:23:37 -04:00
Dan Halbert
414267388d
Merge pull request #1023 from arturo182/nrf_pyocd
nrf: Fix flashing with pyocd
2018-07-13 10:02:20 -04:00
arturo182
05c1384b67 nrf: Split the ble module into a shared part and the port implementation
This allows other ports to implement these shared bindings.
2018-07-13 16:01:15 +02:00
arturo182
883ca21321 nrf: Fix flashing with pyocd 2018-07-13 15:22:46 +02:00
arturo182
9729fc3d31 nrf: Fix BLE on nRF52840 after adding the USB functionality 2018-07-13 14:55:02 +02:00
hathach
f98c7f708e merge review 2018-07-12 01:37:23 +07:00
hathach
10846d316b Merge branch 'master' into nrf52840_usbboot 2018-07-11 21:35:44 +07:00
Dan Halbert
4962468fff
Merge pull request #1011 from arturo182/nrf_cleanup
nrf: More cleanup and porting
2018-07-10 15:44:30 -04:00
hathach
a53b1c7cf1 code format 2018-07-10 22:49:51 +07:00
arturo182
eab00ff140 nrf: Remove even more unused files 2018-07-10 14:59:22 +02:00
arturo182
2c63fb2a94 nrf: Remove the random hal and module
Thus getting rid of the whole old hal!
The module is not needed because the common-hal
nRF implementation uses HW RNG anyway.
2018-07-10 14:59:22 +02:00
arturo182
1163462635 nrf: Remove the old time hal and replace with nRFx 2018-07-10 14:59:10 +02:00
Scott Shawcroft
e875f4e52e
Merge pull request #1002 from arturo182/nrfx_gpio
nrf: Rewrite the DigitalInOut hal using nRFx
2018-07-09 17:54:38 -07:00
hathach
0e819599e7 Merge branch 'master' into nrf52840_usbboot 2018-07-10 02:02:52 +07:00
hathach
7715d19efe update bootloader hex 2018-07-10 01:20:37 +07:00
hathach
97a1ae911e add family option for uf2 2018-07-10 01:18:14 +07:00
hathach
f199e87085 add ARRAY_SIZE
which is missing when building with debug mode
2018-07-10 01:06:57 +07:00
hathach
c5089d7274 generate uf2 by default
update tusb
2018-07-10 01:02:33 +07:00
Dan Halbert
64b9ee9c74
Merge pull request #985 from tannewt/heap_tweaks3
A few heap related tweaks
2018-07-08 23:21:38 -04:00
Scott Shawcroft
a45659c59a
Merge pull request #1000 from arturo182/nrfx_uart
nrf: Rewrite the UART HAL using nRFx
2018-07-08 20:17:47 -07:00
Scott Shawcroft
133b99b6f2
Merge pull request #999 from arturo182/nrf_mphalport
nrf: mphalport cleanup
2018-07-08 20:13:21 -07:00
Scott Shawcroft
fd5634e4aa
Merge pull request #992 from arturo182/nrf_i2c_fix
nrf: Fix I2C transfers with data larger than HW allows
2018-07-08 20:12:09 -07:00
arturo182
388f554ff6 nrf: Rewrite the DigitalInOut hal using nRFx 2018-07-08 17:48:32 +02:00
arturo182
25ece8fb3d nrf: Rewrite the UART HAL using nrfx 2018-07-08 16:42:04 +02:00
arturo182
c6a2a55bc9 nrf: Cleanup mpconfigboard files
All the removed defines were used by legacy modules that are now
removed.
2018-07-08 15:18:11 +02:00
arturo182
887486582e nrf: Remove port-specific help
It contains mentions to the pyb module which was removed.
The ble-specific help will be re-added later when the API
is stabilized.
2018-07-08 15:18:11 +02:00
arturo182
1ea633c484 nrf: mphalport cleanup 2018-07-08 14:39:30 +02:00
arturo182
da27253693 nrf: Fix I2C transfers with data larger than HW allows 2018-07-06 21:12:24 +02:00
arturo182
ac74edb4e4 nrf: Fix SPI transfers with data larger than HW allows 2018-07-06 21:10:25 +02:00
hathach
baf68a936e remove hal_time files 2018-07-06 15:59:20 +07:00
hathach
3e319694aa mp_hal_delay_ms() to call background task
remove hal_time.c
2018-07-06 15:48:01 +07:00
hathach
948ddf8463 make SD default to s140 and s132 for nrf52840 and nrf52832
add CFG_HWUART_FOR_SERIAL for using jlink as REPL
2018-07-06 14:39:49 +07:00
hathach
6ef3a0b181 implement filesystem_writable_by_python() 2018-07-06 13:01:07 +07:00
hathach
0806c0a38b update fatfs cached sector when running write10 2018-07-05 17:43:38 +07:00
hathach
4e5d9a029d clean up 2018-07-05 17:26:07 +07:00
hathach
0365912e28 implement msc with internal_flash api
Note: only work with SD is disabled.
2018-07-05 16:19:04 +07:00
hathach
3564e98181 implement msc flash, seems to work 2018-07-05 15:22:23 +07:00
hathach
1745e20391 replace jlink with native usb cdc for serial REPL 2018-07-05 11:30:12 +07:00
hathach
be2ff20e42 enable usb cdc interface
not handle anything yet.
2018-07-04 17:15:49 +07:00
hathach
7fff7f5e70 add usb msc support for nrf52840 2018-07-04 16:40:53 +07:00
Scott Shawcroft
8fb976f0bd
Split out assembly source files. 2018-07-03 07:25:54 -07:00
Scott Shawcroft
dbc977485c
Support gathering register values on nrf. 2018-07-03 06:31:07 -07:00
hathach
46c453cf0a add tinyusb as submodule 2018-07-03 17:46:08 +07:00
hathach
b14b28067e Merge branch 'master' into nrf52840_usbboot 2018-07-03 17:29:28 +07:00
Scott Shawcroft
b91202969a
Merge pull request #982 from arturo182/nrf_makefile
nrf: Save some flash bytes by using extra compile flags
2018-07-02 14:33:47 -07:00
Scott Shawcroft
05a088b369
Merge pull request #972 from arturo182/nrf_i2c
nrf: Rewrite the I2C common-hal using nrfx
2018-07-02 14:33:06 -07:00
arturo182
da491ec961 nrf: Save some flash bytes by using extra compile flags
Both of these are used in the atsamd port as well.
2018-07-02 22:00:04 +02:00
Dan Halbert
7c9a0e2996 remove unnecessary extern in nrf/mphalport.c 2018-06-29 16:06:51 -04:00
Dan Halbert
2a0b857643 implement mp_hal_delay_us() to not need interrupts, and use it 2018-06-29 16:01:46 -04:00
Dan Halbert
b4fd77bb7c fix nrf and esp8266 builds for OneWire fix 2018-06-29 00:00:05 -04:00
Dan Halbert
52a11547cb fix OneWire timing and DigitalInOut.switch_to_input() 2018-06-28 23:32:20 -04:00
Scott Shawcroft
429168d4ac
Merge pull request #970 from arturo182/nrf_softdev
nrf: Remove unsupported softdevice defines
2018-06-28 14:01:19 -07:00
Scott Shawcroft
007155276a
Merge pull request #969 from arturo182/nrf_more_commonhal
nrf: Rewrite more common-hal with nrfx and sync with atsamd port
2018-06-28 14:00:45 -07:00
Scott Shawcroft
039b4dc00a
Merge pull request #968 from arturo182/nrf_qstr
nrf: Remove old qstr defines
2018-06-28 13:57:46 -07:00
Scott Shawcroft
ae82a93b56
Merge pull request #967 from arturo182/nrf_os
nrf: Rewrite the os common-hal using nrfx
2018-06-28 13:55:34 -07:00
arturo182
178c089045 nrf: Rewrite the I2C common-hal using nrfx 2018-06-28 22:45:02 +02:00
arturo182
6e6a500801 nrf: Rewrite the os common-hal using nrfx 2018-06-27 21:01:07 +02:00
arturo182
af5cb9c492 nrf: Remove unneeded hal files 2018-06-27 21:00:34 +02:00
arturo182
b87bba8a28 nrf: Rewrite more common-hal with nrfx and sync with atsamd port 2018-06-27 20:55:29 +02:00
arturo182
1fa8fac5d7 nrf: Remove old qstr defines
These were used by the microbit music module, which was removed.
2018-06-27 20:52:13 +02:00
arturo182
b9f02ca3c5 nrf: Remove unsupported softdevice defines 2018-06-27 20:48:57 +02:00
arturo182
2a12fcd18b nrf: Rewrite the AnalogIn common-hal using nrfx 2018-06-27 20:41:30 +02:00
hathach
c4f11dfd32 flash target update bootloader setting to skip crc checksum 2018-06-27 15:22:44 +07:00
hathach
8fbe1d73e9 clean up makefile 2018-06-27 15:13:20 +07:00
hathach
4920cc47ca move dfu-gen dfu-flash dfu-bootloader bootloader uf2 target to common Makefile since several board use it 2018-06-27 14:31:08 +07:00
hathach
bed7310fd7 update bin files 2018-06-27 14:13:18 +07:00
hathach
ecd3993d43 update pin map for feather52840 2018-06-27 14:06:15 +07:00
Scott Shawcroft
91427b0b23
Merge pull request #959 from arturo182/nrf_spim
nrf: Rewrite the SPI common-hal using nrfx
2018-06-26 11:00:12 -07:00
Scott Shawcroft
d7d132d5a3
Merge pull request #960 from arturo182/nrf_stm_cleanup
nrf: Remove leftovers from stm32 code copy
2018-06-26 10:52:04 -07:00
arturo182
16973d0559 nrf: Remove unused hal files
Makes it easier to keep track of what's left to rewrite.
2018-06-26 00:13:41 +02:00
arturo182
2f1e678d60 nrf: Rewrite the SPI common-hal using nrfx
Use SPIM2 on nRF52832 and SPIM3 on nRF52840. SPIM3 is able to go
up to 32MHz!
2018-06-25 23:46:34 +02:00
arturo182
b14d13e318 nrf: Remove leftovers from stm32 code copy 2018-06-25 23:38:10 +02:00
hathach
8d065fe0e6 update reamde 2018-06-26 00:16:58 +07:00
hathach
54547683f9 add uf2, bootloader target 2018-06-25 23:31:14 +07:00
hathach
4722371be9 update bootloader hex with uf2 2018-06-25 23:27:00 +07:00
hathach
f5be5ed6ee Merge branch 'master' into nrf52840_usbboot 2018-06-25 17:12:24 +07:00
arturo182
596a1d8843 nrf: Rename feather52 to feather52832 in readme files 2018-06-22 10:04:39 +02:00
arturo182
25e71a56d4 nrf: Update the PCA10056 example to use new pin naming 2018-06-20 23:39:36 +02:00
arturo182
deec17e4fe nrf: Remove really old examples
These examples rely on machine and pyb modules, so they have to get.
Leaving 3 BLE examples that also rely on those modules, but can be
fixed to use CP's modules.
2018-06-20 23:38:18 +02:00
arturo182
9c08db55ff nrf: Cleanup machine and microbit leftovers
The music module was useful when this port had support for the
microbit, now that it was removed, it's not so useful.
2018-06-20 23:30:34 +02:00
arturo182
c2d4d0a10b nrf: Simplify pin generation and definition
This commit cleans up the pin generation code, all the pins and their
AF (only ADC, for now) are specified in nrf52_af.csv and board use their
own csv file to specify which pins are available on that board and if
they have any special names.
2018-06-20 23:26:32 +02:00
arturo182
ff918556cd nrf: Simplify the board makefiles
With the only difference between a SD and non-SD build is the linker
file, there's no need to have two separate .mk per board files,
just use a conditional.
2018-06-20 21:21:45 +02:00
arturo182
5509f394dc nrf: Add a nrfx submodule and prepare for using the new drivers 2018-06-20 20:43:59 +02:00
arturo182
7cd34f2a94 nrf: Cleanup Makefile after nrf51 removal 2018-06-20 18:21:18 +02:00
arturo182
97f10241f9 nrf: Fix default board after feather52 rename 2018-06-20 18:21:18 +02:00
arturo182
b47a67d566 nrf: Remove machine, pyb and utime modules
Micropython legacy, keeping it consistent with atsam port.
2018-06-20 18:21:18 +02:00
hathach
61437106e7 update bootloader for feather nrf52840 2018-06-19 15:27:07 +07:00
hathach
6d2702ed98 Merge branch 'master' into nrf52840_usbboot 2018-06-19 14:50:17 +07:00
Scott Shawcroft
4e7eee3553
Merge pull request #946 from arturo182/nrf_sd6
nrf: Use the production version of s140 6.0.0
2018-06-18 16:29:41 -07:00
arturo182
feee808955 nrf: Use the production version of s140 6.0.0 2018-06-18 23:12:28 +02:00
Scott Shawcroft
05547b72ac Switch to Feather52s full name to avoid confusion with the nrf52840 later.
Fixes #940
2018-06-18 10:51:04 -07:00
Limor "Ladyada" Fried
9fc0ec6af8
Merge pull request #934 from microbuilder/usbboot
[WIP] nRF52840 USB Bootloader
2018-06-15 09:35:30 -07:00
hathach
35d38dbfed update nrf52840 bootloader hex 2018-06-13 17:27:55 +07:00
jerryneedell
8150150a24
return "false" for stub call
See #918 for discussion
2018-06-10 07:11:44 -04:00
Scott Shawcroft
8195df1b55 Stub out get_paused in nrf builds. 2018-06-08 14:01:54 -07:00
hathach
418e28c7dc update nrf52840 bootloader hex and target 2018-06-08 16:10:49 +07:00
hathach
2b3436e87c add feather nrf52 uart rts, cts support 2018-06-08 15:59:38 +07:00
hathach
c10899d13f allow to flash feather52 and feather52840 with jlink
add crc bypass magic to bootloader settting
2018-06-08 15:11:17 +07:00
hathach
c854e2dc17 Merge branch 'master' into usbboot 2018-06-07 13:51:21 +07:00
hathach
9bb4ded5fa Merge remote-tracking branch 'upstream/master' 2018-06-07 13:50:04 +07:00
Matt Wozniski
d0e6bb269f Use the system errno's on nrf 2018-06-02 12:55:07 -04:00
Radomir Dopieralski
d02899f822 Add gamepad_singleto to root pointers for the nrf port 2018-05-30 23:11:23 +02:00
hathach
6d4a2f5524 Merge branch 'master' into usbboot 2018-05-17 15:23:45 +07:00
hathach
52ebfd07a5 update nrfutil to 0.5.2d with singlebank option 2018-05-17 15:20:07 +07:00
Kevin Townsend
78f806c891 Added board specific READMEs 2018-05-15 22:42:27 +02:00
hathach
53593d1315 fix #809
define CIRCUITPY_BOOT_OUTPUT_FILE will cause mp_hal_stdout_tx_strn() to
invoke before serial_init() is called. Solution is skipped output to
serial if it is not inited.
2018-05-15 18:40:49 +07:00
hathach
05f36ebeb1 update the bootloader hex for feather52840 2018-05-15 16:06:03 +07:00
hathach
dadf831fe9 Merge branch 'usbboot' of github.com:microbuilder/circuitpython into usbboot 2018-05-15 13:33:53 +07:00
hathach
5365e51e39 Merge branch 'master' into usbboot 2018-05-15 13:29:25 +07:00
Jerry Needell
d6c26942a5 add timeout keyword to I2C - for bitbangio - ignored for busio 2018-05-13 21:54:44 -04:00
Scott Shawcroft
ce5eae1c76
Merge pull request #761 from jepler/nrf-modules
nrf: Enable binascii, hashlib modules
2018-05-11 19:40:45 -07:00
Jeff Epler
471fdae993 nrf: Enable binascii, hashlib modules
These modules would be very handy to have in order to implement a
more robust replacement for ampy.  It costs around 2KiB of text and
no data or bss.

'binascii' has base64 encoding, which can be used to create a fully
8-bit-clean transport above the slightly cooked serial connection of
these boards.

'hashlib' is a bit less critical, but I have found it handy to
be able to robustly checksum remote files.

I see this as only being useful on ports which don't have USB block
device support, so atmel-samd doesn't need it.  These modules are
already on esp8266 so I think nrf52 seems like the only one that
needs it.
2018-05-11 07:41:09 -05:00
Jeff Epler
2acd5d88b6 nrf52: enable framebuf module
Closes: #656
2018-05-10 18:37:08 -05:00
jerryneedell
b617271191
Update mpconfigport.h
comment out define of CIRCUITPYTHON_BOOT_OUTPUT_FILE  for NRF52  --  it does not work properly
2018-05-07 08:59:24 -04:00
Kevin Townsend
d0e00d7fbe
Added built to example 2018-04-23 20:01:53 +02:00
Kevin Townsend
0de8697315
Added note on USB CDC bootloader 2018-04-23 19:58:29 +02:00
hathach
ce9f05f91b add missing files 2018-04-24 00:51:44 +07:00
hathach
50e7a4caa8 add bootloader hex 2018-04-24 00:19:04 +07:00
ladyada
926849d7a8 don't use python nrfutil on windows, it doesnt work :/ tested feather52 makefile on windows/mingw 2018-04-13 14:00:20 -04:00
ladyada
ce6b94f5e2 deal with spaces in directories 2018-04-12 21:43:23 -04:00
Dan Halbert
5f98953ed8 esp8266 and nrf: raise NotImplementedError 2018-04-10 12:08:41 -04:00
sommersoft
6ee573c7c9
Merge branch 'master' into super_status 2018-03-30 14:27:39 -05:00
Jeff Epler
abec199c19 Enable high-quality float hash
This appears to have a relatively small impact on flash usage but
fixes some pathological slow behavior putting floats in dicts or sets.

Closes: #704
2018-03-27 21:56:30 -05:00
Dan Halbert
4190aa2eed
Merge pull request #715 from jepler/array-operation-restrictions-bis
Remove 'O', 'P' support in arrays
2018-03-26 20:01:34 -04:00
Jeff Epler
355bf8b553 Conditionally compile out nonstandard array/struct typecodes
.. defaulting to off for circuitpython-supported boards, on for others.

.. fixing up the tests that fail when it is turned off, so that they skip
instead of failing
2018-03-26 18:13:49 -05:00
Jeff Epler
c0029e1d97 Don't lose half of the processor's serial number
Before this change, `microcontroller.cpu.uid` returned values
where the top 4 bits of each byte were zero, because of
an incorrect bitmask used in this function.
2018-03-25 13:01:04 -05:00
sommersoft
8c9cc6b7c0 nrf: changed Status to Runtime; instituted runtime singleton 2018-03-10 01:07:17 +00:00
Dan Halbert
5f101f3535 Add dummy UART implementation to nrf so it builds with UART turned on. Also add OneWire. 2018-02-21 22:53:17 -05:00
sommersoft
5de8df7997 added Status submodule to ports/nrf/common-hal/supervisor; issue #544 2018-02-19 22:27:16 +00:00
Kevin Townsend
fce0b0858f Removed leftover build option 2018-02-15 21:46:14 +01:00
Kevin Townsend
10497d1db0 Update for style consistency 2018-02-15 21:44:05 +01:00
Kevin Townsend
6544f4cb5c Cleanup minor typos 2018-02-15 21:42:24 +01:00
Kevin Townsend
da15053e0a Fixed pin P0_00 2018-02-15 21:41:21 +01:00
Kevin Townsend
d4356f9416 Added second 'P0_00' 2018-02-15 17:00:58 +01:00
Kevin Townsend
cd7baed14d Added note nrfutil and flashing 2018-02-15 16:00:34 +01:00
Kevin Townsend
70596b6641 Added note on MSDDisable 2018-02-15 15:51:10 +01:00
hathach
f989db25b5 more bootloader feather52840 update 2018-02-15 21:43:27 +07:00
hathach
2e0edd5a63 Merge branch 'nrf52840' of github.com:microbuilder/circuitpython into nrf52840 2018-02-15 15:19:47 +07:00
hathach
2c9cd38547 update bootloader for feather52840 2018-02-15 15:12:30 +07:00
Kevin Townsend
0981c579f0 Fixed pin names 2018-02-13 18:26:28 +01:00
Kevin Townsend
b65e97bdb3 Update pin names 2018-02-13 18:17:31 +01:00
Kevin Townsend
5160dda473 Merge branch 'master' into nrf52840 2018-02-13 18:13:47 +01:00
Kevin Townsend
7b1cc9985b Merge branch 'master' of github.com:adafruit/circuitpython 2018-02-13 18:11:20 +01:00
Kevin Townsend
fac488fbf8
Merge pull request #617 from arturo182/nrf_gpio_cleanup
nrf: Change pin names on DKs to match silkscreen
2018-02-13 17:54:25 +01:00
Kevin Townsend
283be4f58e Added note on installing nrfutil 2018-02-13 11:55:24 +01:00
Kevin Townsend
7b6d1052d9 Improved README 2018-02-13 11:50:51 +01:00
Kevin Townsend
6a8bafc91b Updated FATFS to 256KB 2018-02-13 11:50:29 +01:00
Kevin Townsend
fc28fc4f0b Added notes on flashing bootloader 2018-02-13 11:26:10 +01:00
Kevin Townsend
4745272d6c Added feather52840 readme 2018-02-13 09:34:09 +01:00
Kevin Townsend
76eacad27b
Updated board detection macro 2018-02-13 08:52:17 +01:00
Kevin Townsend
9f1cd41d77
Update to S140 2018-02-13 08:44:35 +01:00
Kevin Townsend
d2b8ae66cb
Update mpconfigboard.h 2018-02-13 08:42:44 +01:00
Kevin Townsend
59f25fb7a5
Update to S140 2018-02-13 08:40:40 +01:00
hathach
3a54a67f3d add 52840 serial bootloader 2018-02-13 13:32:47 +07:00
hathach
3bb45511fa add feather52840 board 2018-02-13 12:26:34 +07:00
arturo182
7579057ee2 nrf: Use -O1 for debug builds
While O0 is great for debugging, the produced binary doesn't fit on the
feather52 anymore.
2018-02-12 22:50:07 +01:00
arturo182
9962ea6449 nrf: Change pin names on DKs to match silkscreen
Quite a big revamp of the make-pins script, it is now used on each
build to generate the pin files, so the static ones are not needed
anymore.
2018-02-12 22:41:19 +01:00
Kevin Townsend
0388a57f77
Merge pull request #614 from arturo182/nrf_pca10040
nrf: Fix pca10040 support
2018-02-12 16:31:14 +01:00
Kevin Townsend
5d99cd0a20
Merge pull request #601 from arturo182/nrf_cleanup
Nrf cleanup
2018-02-12 11:28:47 +01:00
arturo182
f1d8a2d149 nrf: Fix memory misalignment during flash write 2018-02-10 14:43:58 +01:00
Kevin Townsend
e5f0cfcf20
Merge pull request #604 from arturo182/nrf_bitbangio
nrf: Use the shared bitbangio module
2018-02-08 09:57:44 +01:00
Kevin Townsend
71128b575f
Merge pull request #602 from arturo182/nrf_struct
nrf: Use the shared struct module
2018-02-08 00:56:31 +01:00
arturo182
a7cde0e49a nrf: Fix pca10040 support
Works with no SD, or s132 2.0.1 and 5.0.0.
2018-02-07 23:41:21 +01:00
arturo182
381f47bfb0 nrf: Only support SD 132 v2.0.1 and v5.0.0 and SD 140 v6.0.0 2018-02-07 22:44:27 +01:00
arturo182
8bfdaa89b9 nrf: Remove SAMD mentions carried over while copying files 2018-02-07 22:44:27 +01:00
arturo182
05bd5d4ee6 nrf: Remove nRF51 boards and files, update README 2018-02-07 22:44:13 +01:00
arturo182
29ae4cdd1c nrf: Fix building pca10056 without SD 2018-02-07 22:41:26 +01:00
arturo182
47c8e20e5a nrf: Make sure to not use SD functions when SD not available 2018-02-07 22:41:20 +01:00
Kevin Townsend
9d191f7f9f
Merge pull request #589 from arturo182/nrf_gamepad
nrf: Implement ticks, add gamepad module and example
2018-02-07 22:17:05 +01:00
arturo182
afaee7f782 nrf: Use the shared bitbangio module 2018-02-07 00:03:23 +01:00
arturo182
021df5d3d3 nrf: Cleanup AnalogOut and throw an exception in constructor
The nRF MCUs do not support analog output. Throwing an exception
in the constructor will stop users from creating an instance of
the AnalogOut class.

In the future we can ifdef-out the whole class so it is not available
in the module at all.
2018-02-06 21:15:49 +01:00
Kevin Townsend
c433a82082
Merge pull request #573 from arturo182/master
nRF port improvements and pca10056 support
2018-02-06 15:26:40 +01:00
arturo182
d1b2f69771 nrf: Use the shared struct module 2018-02-05 20:50:06 +01:00
arturo182
1de2ee6884 nrf: Implement ticks, add gamepad module and example 2018-02-05 20:48:25 +01:00
arturo182
76f5c01798 nrf: Get the port working on pca10056 (nRF52840) 2018-02-05 20:38:41 +01:00
arturo182
a64b5c84de nrf: Fix missing LED GPIO initialization
led_init was never called, which means the GPIOs were never set to
output and the LEDs didn't work.
2018-02-03 13:51:11 +01:00
arturo182
6731b47d5a nrf: Implement MCU temperature reading
If softdevice is available and enabled the SD function will be used,
otherwise use MCU registers.
2018-02-02 20:33:21 +01:00
arturo182
c6a542d166 nrf: Add SD 6.0.0-6.alpha to the download script 2018-02-02 20:31:47 +01:00
arturo182
fed9087274 nrf: Add flash section for fatfs for no SD pca10056 2018-02-02 20:31:47 +01:00
arturo182
616cbc6271 nrf: Use more generic header
It will include the mcu-specific header based on defines.
2018-02-02 20:31:47 +01:00
arturo182
d0b451be94 nrf: Use the right SPI registers on nRF52840 2018-02-02 20:31:47 +01:00
arturo182
a776c2a51c nrf: Fix errorneous indent
Otherwise we get the "recipe commences before first target" messsage.
2018-02-02 20:31:47 +01:00
Dan Halbert
64831f4e7d add SPI.frequency to nRF 2018-01-30 13:23:00 -05:00
sommersoft
44bc1711aa Added Unique ID Functions/Updated Support Matrix (#527)
shared_bindings/index.rst: updated Support Matrix format as discussed in PR #503 & Issue #448.

shared-bindings/microcontroller/Processor.c & .h: added UID lookup functionality for use with all ports. Fixes #462.
2018-01-18 11:39:11 -08:00
hathach
dfa6b6e9c5 add Ctrl+C for REPL over bleuart 2018-01-18 11:32:47 -08:00
Kevin Townsend
d5af898999 Added note on REPL over NUS 2018-01-18 11:32:47 -08:00
hathach
5e6f113779 add REPL via bleuart 2018-01-18 11:32:47 -08:00
microbuilder
fda065ea89 Minor scan example cleanup 2018-01-18 11:32:47 -08:00
microbuilder
e2ebcbe514 Simple BLE scanner example 2018-01-18 11:32:47 -08:00
microbuilder
1276c12097 Enable SD132v2.0.1 BLE and UBLUEPY support by default 2018-01-18 11:32:47 -08:00
Dan Halbert
23eb79ca8f turn on MICROPY_ENABLE_SOURCE_LINE in nrf 2018-01-16 18:11:54 -08:00
Dan Halbert
01443a9619 Make chosen features consistent across all boards and ports atmel-samd, esp8266, and nrf.
1. Turn off MICROPY_CPYTHON_COMPAT, which includes a number of minor CPython compatibility features,
most of which have workarounds, but uses up significant flash.
2. Turn on MICROPY_PY_SYS_MAXSIZE, which implements sys.maxsize.
3. Turn on MICROPY_CAN_OVERRIDE_BUILTINS, which implements "_" as the most recent value in the REPL,
and also enables redefining builtins.
2018-01-16 18:11:54 -08:00
Dan Halbert
19d353ccd9 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
2018-01-03 16:50:57 -05:00
Dan Halbert
065e82015f merge from 2.2.0 + fix up board defs 2018-01-02 21:25:41 -05:00
hathach
a997ab258e spacing clean up 2017-12-29 23:07:32 +07:00
hathach
7f79a0e78c added Ctrl+C interrupt 2017-12-29 22:43:31 +07:00
hathach
a021a9e5f0 update uart to remove dependency on machine uart module 2017-12-29 21:25:43 +07:00
microbuilder
178925640b Moved comment to avoid abbreviation 2017-12-27 21:13:39 +01:00
microbuilder
a14bfeba64 Merge branch 'nrf52_3.x' of github.com:microbuilder/circuitpython into nrf52_3.x 2017-12-22 12:03:41 +01:00
microbuilder
60feb1a9aa Added .gitattributes for ZIP bin support 2017-12-22 12:03:25 +01:00
Kevin Townsend
b3928288f0
Add files via upload 2017-12-22 12:02:15 +01:00
Kevin Townsend
8dcd9cc35c
Delete feather52_bootloader_5.0.0_s132_single.zip 2017-12-22 12:00:41 +01:00
Kevin Townsend
de72f7fabb
Delete feather52_bootloader_2.0.1_s132_single.zip 2017-12-22 12:00:34 +01:00
microbuilder
ad7cd0399d Added 'mp_raise_NotImplementedError(NULL)' 2017-12-22 11:48:07 +01:00
microbuilder
b9e229f739 Removed old code snippets 2017-12-22 11:47:15 +01:00
microbuilder
ace872bf11 Added 'mp_raise_NotImplementedError(NULL)' 2017-12-22 11:45:51 +01:00
microbuilder
a3289c3c2f Added D13 for standard LED examples 2017-12-22 11:42:33 +01:00
microbuilder
393bc9bce9 Removed leftover code snippet 2017-12-22 11:39:40 +01:00
microbuilder
c868b66f5b Minor typo removed in path 2017-12-22 11:33:17 +01:00
microbuilder
99dd0a61ff Spaces to tabs 2017-12-22 11:29:39 +01:00
microbuilder
60a23f0fb6 nRF52 update with internal file system support 2017-12-21 13:49:14 +01:00
Kevin Townsend
ce75a21e50 Revert "Supervisor REPL support for ports/nrf/boards/feather52"
This reverts commit 92113dde81.
2017-11-23 13:38:38 +01:00
Kevin Townsend
92113dde81 Supervisor REPL support for ports/nrf/boards/feather52 2017-11-23 09:22:11 +01:00
Kevin Townsend
237cc954e3 Fixed feather52 DFU support 2017-11-10 09:17:24 +01:00
Ayke van Laethem
f57be619fc ports/nrf: Add compile switch to disable VFS.
This saves about 17kB.
2017-10-13 18:29:41 +02:00
Ayke van Laethem
61b6faed15 ports/nrf: Use --gc-sections to reduce code size
This saves about 6-7kB.
2017-10-12 21:44:55 +02:00
Ayke van Laethem
d18bf876e3 ports/nrf: Add WT51822-S4AT board. 2017-10-08 23:23:11 +02:00
Glenn Ruben Bakke
a414199793 ports/nrf: Update Makefile and README.md after moving port to new directory 2017-10-04 21:54:01 +02:00
Glenn Ruben Bakke
831759faaa ports/nrf: Align help.c builtin help text to use correct type after upmerge with upstream master. 2017-10-04 21:52:08 +02:00
Glenn Ruben Bakke
44e2cb415f ports/nrf: Moving nrf51/52 port to new ports directory 2017-10-04 21:46:48 +02:00