Commit graph

285 commits

Author SHA1 Message Date
James Devine
c04de3f93c Merge pull request #47 from remay/serial-baud
Remove unnecessary uBit.serial.baud() calls
2016-01-11 14:03:40 +00:00
James Devine
493e174fe8 microbit: Fixed duplicated id for Thermometer
There was a duplication in IDs for MICROBIT_ID_THERMOMETER and MICROBIT_ID_IO_P0
for the event bus. This has been rectified by appending the MICROBIT_ID_THERMOMETER
2016-01-11 13:39:56 +00:00
James Sheppard
13f6bce86b Merge pull request #69 from lancaster-university/events-definition
Events definition updated
2016-01-11 12:09:27 +00:00
James Sheppard
3491187a0d TODOs for DISPLAY_TOAST and PLAY_SOUND 2016-01-11 12:03:50 +00:00
Joe Finney
856a52d893 version v1.4.3 2016-01-09 19:47:39 +00:00
Joe Finney
b48d3f6304 Merge branch 'compass-autocalibration' 2016-01-09 19:40:08 +00:00
Joe Finney
32961973bb microbit: Updates to MicroBitAccelerometer to use sample data accessor methods throughout.
All internal uses of accelerometer sample values now updated to access the
data via accessor methods. This now ensures consistent use irrespective of
the coordinate system used.
2016-01-09 19:32:30 +00:00
Joe Finney
0da7903e24 Merge branch 'master' into compass-autocalibration 2016-01-09 19:10:04 +00:00
Joe Finney
db25d4c0c3 microbit: Further corrections to comment blocks 2016-01-09 18:47:15 +00:00
Joe Finney
0e7a6979da microbit: Comment Cleanup
corrections to comment blocks only.
2016-01-09 11:54:23 +00:00
Joe Finney
92905593f1 microbit: Added support for MicroBitHeapAllocator to allocate C++ style array
declarations

Added missing operator new[] wrapper in MicroBitHeapAllocator.h
Ammended defualt microBitConfig.h to allocate 90% of available heap, rather
than 95%. this is to leave a little more heap for external libraries.
2016-01-09 11:33:02 +00:00
Joe Finney
6916d506b8 microbit: Removed print funcitons from matrix class due to SRAM overhead of
native printf() call.

The Matrix4::print() function is useful, but non essential for most
applications, and the underlying printf() call required cost an
additional 1K of RAM on first use, which is currently above the budget for
micro:bit.
2016-01-09 10:25:26 +00:00
Joe Finney
d51b1205f7 microbit: Added support for compass tilt compensation
An e-compass solution requires knowwlede two pieces of data to provide an
accurate heading:

  - Accurate calibration of the magnetometer hardware so that reliable
    measurements can be taken.
  - Knowledge of the pitch and roll of of device, so that the correct
    components of the X/Y and Z axis sensors of the magnetomer can be used
    to sense the magnetic field in a horizontal plane regardless of the tilt
    of the device.

This commit represent changes to the MicroBitAccelerometer and MicroBitCompass
classes to implemen tthese goals. More specifically, this commit provides:

 - The introduciton of an interactive calibration 'game', that can rapidly
   gather all the data required to calibrate the compass.

 - An improved calibration algorithm based on a Least Mean Squares approach of
   compass samples, as documened in Freescale Application Note AN4248.

 - The inclusion of a simple Matrix4 class to enable efficient Least Mean
   Squares implementation.

 - A change from asynchronous to synchronous calibration of the compass when
   first used. This is in repsonse to a feature request for this from users
   and high level languages using microbit-dal.

 - Support for detemrining tilt and roll angle in MicroBitAccelerometer

 - Support for multiple co-ordinate spaces in MicroBitAccelerometer and
   MicroBitCompass. Data can now be read in either RAW (unaltered) data.
   MICORBIT_SIMPLE_CARTESIAN (as used previously) or NORTH_EAST_DOWN
   (the industry convention in mobile phones, tablets and aviation)

 - Implementation of a tilt compensated algorithm, used when determining
   device heading.
2016-01-09 00:20:19 +00:00
James Sheppard
e82ca68521 MES_DEVICE_INCOMING_CALL and _MESSAGE values added 2016-01-08 16:22:20 +00:00
James Sheppard
41e2fc6b74 MES_PLAY_CONTROLLER removed (descoped) 2016-01-08 16:15:06 +00:00
James Sheppard
db436a4f09 MES_AUDIO_RECORDER events removed 2016-01-08 16:10:14 +00:00
Joe Finney
9a49436659 version v1.4.2 2016-01-05 16:53:55 +00:00
Joe Finney
fd79b2850f microbit: Added explicit version references for module dependencies 2016-01-05 16:53:23 +00:00
Joe Finney
b54cfa1ab6 version v1.4.1 2016-01-05 16:35:37 +00:00
Joe Finney
80b31681c1 Merge branch 'basic-gestures' 2016-01-05 16:32:04 +00:00
Joe Finney
3416e54a36 microbit: increase sensitivity of freefall detection
Freefall now detected when the net force on the device drops below 0.4g,
rather than 0.2g as previously defined. This improves sensitivity, without
generating false positives under common use.

Also correction of minor typos / layout errors.
2016-01-05 16:23:47 +00:00
Joe Finney
17632adafa Merge branch 'master' into basic-gestures 2016-01-05 15:50:53 +00:00
Joe Finney
d3587d888c microbit: code scrub of MicroBitAccelerometer gesture recognition code
- updated acceleration threshold event names to reflect numeric values e.g.
    GESTURE_3G, GESTURE_6G, GESTURE_8G.
  - Add scoping to elements of SimpleGesture enum.
  - Code scrub of code layout caused by editor with incorrect configuration.
  - rename of internal state variables and functions to better reflect use.
  - added clarification to some comments.
2016-01-05 15:44:57 +00:00
Joe Finney
d8651d9129 version v1.4.0 2016-01-05 10:45:13 +00:00
Joe Finney
3c314794f0 Merge branch 'secure-ble' 2016-01-05 01:28:49 +00:00
Joe Finney
413e6a2116 microbit: removed sample hex file used for testing 2016-01-05 01:27:19 +00:00
Joe Finney
55601f3e0e Merge branch 'master' into secure-ble 2016-01-05 01:25:52 +00:00
Joe Finney
fd27a78f0c Merge branch 'remay-ble-disconnect-on-reset' into secure-ble 2016-01-05 00:14:29 +00:00
Joe Finney
6763a9ba6c Merge branch 'ble-disconnect-on-reset' of https://github.com/remay/microbit-dal into remay-ble-disconnect-on-reset 2016-01-05 00:13:26 +00:00
Joe Finney
e1f75b2c4c microbit: Added read capability to MicroBitDFUService::ControlPoint characteristic
Whilst Android devices permit explicit initiation of the BLE pairing process,
IOS based devices are only  capable of implicit initiation of pairing based
on accessing a protected characteristic. Adding read capability to the
ControlPoint characteristic provides a safe and convenient way for IOS devices
to initiate pairing.
2016-01-04 23:41:22 +00:00
Joe Finney
7a71b58bd4 microbit: Revert explicit use of public addresses in pairing mode 2016-01-04 23:06:48 +00:00
Joe Finney
203246b975 WIP: Revert to public addresses pending further debug 2015-12-18 12:27:08 +00:00
Joe Finney
c7ea0af6fe WIP: Analysing correct use of private resolvable addresses 2015-12-17 14:27:57 +00:00
Joe Finney
de28387ff3 version v1.3.10 2015-12-11 04:57:31 +00:00
Joe Finney
14831ac9b9 Updates to BLE 2.1.11 / ble-nrf51822 2.2.3
Minor amends:
  - bleDisconnectionCallback signature change
  - bleSetAdvertisingInterval now takes milliseconds as a parameter
  - event based invocation of DFU bootloader
2015-12-11 04:57:06 +00:00
Joe Finney
6d610f049a microbit: Updates to Pairing Mode to improve the user experience
More specifically:

- BLUEZONE mode renamed to PairingMode (by popular request).
- Added timeout of 90 seconds before automatic device reboot.
- Move from a scroll to a print based algorithm to improve the amount of time key is displayed fully.
- Added compulsory 'click to bond' button press.
- Improved response time of tick/cross being displayed.
2015-12-11 03:43:18 +00:00
Joe Finney
5a9f5d42bd microbit: Updates to enable anonymous advertising during normal operation
Changes to default BLE name. During normal operation, all micro:bits now have the same name: BBC micro:bit
When pairing mode (AKA BLUEZONE) is entered, device name details re appended as before, to give BBC micro:bit [<name>]

This is to provide a degree of anonymity to users, to make tracking of kids more difficult.
2015-12-11 02:09:31 +00:00
Joe Finney
e042a55522 microbit: Added compile time option to enabe support for BLE private resolvable addresses.
Introduced MICROBIT_BLE_PRIVATE_ADDRESSES configuration option.
Disabled by default, as it did not resolve binds correctly on Android 4.4.2
2015-12-11 01:38:22 +00:00
Joe Finney
6f5ad99aa2 BUGFIX: Enabled BLE_COMMON_OPT_RADIO_CPU_MUTEX option
This option is now configured when the BLE stack is initialised. This ensures that SoftDevice is never
starved of CPU during periods of criticality. This does lock out the CPU for application use, but prevents
MIC failures caused by __disable_irq() operations (as found in the mbed Ticker API for example).
2015-12-11 01:16:48 +00:00
Joe Finney
b6ca1365f7 microbit: Added explicit BLE disconnection requests on DFU and soft reset 2015-12-11 00:55:33 +00:00
Joe Finney
1e5d5c8dcf Updates to BLE 2.1.11 / ble-nrf51822 2.2.3
Minor amends:
  - bleDisconnectionCallback signature change
  - bleSetAdvertisingInterval now takes milliseconds as a parameter
  - event based invocation of DFU bootloader
2015-12-11 00:24:21 +00:00
Joe Finney
1b18ac8641 microbit: Added basic gesture recognition into MicroBitAccelerometer
The following postures of the device are now detected:
- TILT_UP
- TILT_DOWN
- TILT_LEFT
- TILT_RIGHT
- FACE_UP
- FACE_DOWN

In addition, the following gestures are inferred:

- NONE
- SHAKE
- FREEFALL
- WHEEE (>=3g)
- SICK (>=5g)
- UNCONSCIOUS (>=8g)

Events are now triggered on the MessageBus upon the transition from one posture/gesture to another,
and a synchronous getGesture() method is now also provided to interogate the last gesture recognised.

I should be noted that the default accelerator range of +/-2g will be insufficient to detect some of
the events noted above, and MicroBitAccelerometer::setRange() should be used to increase the range
if required.
2015-12-03 15:11:31 +00:00
Joe Finney
2327ad44ff version v1.3.9 2015-11-30 00:54:49 +00:00
Joe Finney
462ba8fe45 Merge branch 'remay-fix-random' 2015-11-30 00:54:34 +00:00
Joe Finney
f0cbfb4c50 microbit: Default display brightness changed to 100%
Feedback from trials showed that this improved daylight visibility, especially for the first programs before kids have
discovered brightness APIs.
2015-11-30 00:51:26 +00:00
Joe Finney
f5cf8f2dd4 microbit: Minor optimisations to patch
- LFSR generated values in a subset of the range requested (rounded to the nearest lower power of 2).
   Corrected by increasing the number of bits usedby one, such that it now generated st least the power of 2 greater.

 - replaced enable/disable of interrupts with a local snapshot of randomValue. Much of the nordic software is sensitive to interrupt timings,
   so best avoided where possible. Chance of race condition is low, and effect is minimal (duplicate number returned).
2015-11-30 00:43:24 +00:00
Joe Finney
958136673f Merge branch 'fix-random' of https://github.com/remay/microbit-dal into remay-fix-random 2015-11-29 23:43:46 +00:00
Joe Finney
ae93079a65 code cleanup 2015-11-25 21:21:04 +00:00
Joe Finney
6d1004fb28 Updates to DFU service to align with BLE standard BLE security
- Removed flashcode base authorization
- silenced unused parameter in MicroBitHeapAllocator
- bugfixed BLUEZONE mode so that sensor data is still available via BLE
2015-11-20 11:32:42 +00:00
Robert May
051575d911 Tidy up gcc -Wall fixes. 2015-11-18 23:13:57 +00:00