diff --git a/.yotta_ignore b/.yotta_ignore new file mode 100644 index 0000000..fe3f55b --- /dev/null +++ b/.yotta_ignore @@ -0,0 +1 @@ +source/examples diff --git a/README.md b/README.md index 6faa4aa..7071e53 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,33 @@ A collection of example programs using the micro:bit runtime. -The source folder contains a selection of samples demonstrating the capabilities and usage of the runtime APIs. -To select a sample, edit the `MicroBitSamples.h` file in the source folder and uncomment the line matching the -sample you wish to use. Please be sure to note that only one sample is selected at a time. +The source/examples folder contains a selection of samples demonstrating the capabilities and usage of the runtime APIs. +To select a sample, simply copy the .cpp files from the relevant folder into the source/ folder. + +e.g. to select the "invaders" example: + +``` +cp source/examples/invaders/* source +``` + +and then to compile your sample: + +``` +yt clean +yt build +``` + +The HEX file for you micro:bit with then be generated and stored in build\bbc-microbit-classic-gcc\source\microbit-samples-combined.hex + +n.b. Any samples using the low level RADIO APIs (such as simple-radio-rx and simple-radio-tx) require the bluetooth capabilities of the +micro:bit to be disabled. To do this, simply copy the config.json file from the sample to the top level of your project. Don't forget to +remove this file again later if you then want to use Bluetooth! For example: + + +``` +cp source/examples/simple-radio-rx/config.json . +``` + ## Overview @@ -25,7 +49,7 @@ In addition to supporting development in C/C++, the runtime is also designed spe ## microbit-dal Configuration -To configure the DAL a number options can be modified in `MicroBitConfig.h`, a full list and explanation +The DAL also contains a number of compile time options can be modified. A full list and explanation can be found in our [documentation](http://lancaster-university.github.io/microbit-docs/advanced/#compile-time-options-with-microbitconfigh). Alternately, `yotta` can be used to configure the dal regardless of module/folder structure, through providing a diff --git a/source/MicroBitSamples.h b/source/MicroBitSamples.h deleted file mode 100644 index 253bd16..0000000 --- a/source/MicroBitSamples.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 British Broadcasting Corporation. -This software is provided by Lancaster University by arrangement with the BBC. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -*/ - -#ifndef MICROBIT_SAMPLES_H -#define MICROBIT_SAMPLES_H - - -// -// Uncomment ONE of the following #defines to select which sample to build. -// Afterwards, save this file and build the project. The resulting HEX -// file will contain your chosen sample. -// - - -// -// Introductory examples using the uBit object. -// - -#define MICROBIT_SAMPLE_HELLO_WORLD -//#define MICROBIT_SAMPLE_ACCELEROMETER_DEMO -//#define MICROBIT_SAMPLE_BUTTON_EVENTS -//#define MICROBIT_SAMPLE_SIMPLE_ANIMATION -//#define MICROBIT_SAMPLE_GREYSCALE -//#define MICROBIT_SAMPLE_LOGIC_GATES -//#define MICROBIT_SAMPLE_SNAKE -//#define MICROBIT_SAMPLE_INVADERS - -// -// Examples using MicroBitRadio. -// -// n.b. you MUST disable the BLE stack to run these samples. -// Do this by setting "#define MICROBIT_BLE_ENABLED 0" in your MicroBitConfig.h file. -// -// For yotta based environments this file is located at: -// "yotta_modules/microbit-dal/inc/core/MicroBitConfig.h" -// -// For project compiling on mbed.org, it is located at: -// "microbit/microbit-dal/inc/core/MicroBitConfig.h" -// - -//#define MICROBIT_SAMPLE_SIMPLE_RADIO_TX -//#define MICROBIT_SAMPLE_SIMPLE_RADIO_RX - - -#endif diff --git a/source/AccelerometerDemo.cpp b/source/examples/accelerometer/main.cpp similarity index 96% rename from source/AccelerometerDemo.cpp rename to source/examples/accelerometer/main.cpp index 4a522f4..3731e63 100644 --- a/source/AccelerometerDemo.cpp +++ b/source/examples/accelerometer/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_ACCELEROMETER_DEMO MicroBit uBit; @@ -71,4 +68,3 @@ int main() } } -#endif diff --git a/source/ButtonEvents.cpp b/source/examples/button-events/main.cpp similarity index 97% rename from source/ButtonEvents.cpp rename to source/examples/button-events/main.cpp index 91e60d6..73008cc 100644 --- a/source/ButtonEvents.cpp +++ b/source/examples/button-events/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_BUTTON_EVENTS MicroBit uBit; @@ -101,4 +98,3 @@ int main() uBit.sleep(10000); } -#endif diff --git a/source/Greyscale.cpp b/source/examples/greyscale/main.cpp similarity index 96% rename from source/Greyscale.cpp rename to source/examples/greyscale/main.cpp index 5c190a1..de3dbb6 100644 --- a/source/Greyscale.cpp +++ b/source/examples/greyscale/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_GREYSCALE MicroBit uBit; @@ -55,4 +52,3 @@ int main() uBit.sleep(10000); } -#endif diff --git a/source/HelloWorld.cpp b/source/examples/hello-world/main.cpp similarity index 95% rename from source/HelloWorld.cpp rename to source/examples/hello-world/main.cpp index 69ebbff..6509ec1 100644 --- a/source/HelloWorld.cpp +++ b/source/examples/hello-world/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_HELLO_WORLD MicroBit uBit; @@ -44,4 +41,3 @@ int main() release_fiber(); } -#endif diff --git a/source/Invaders.cpp b/source/examples/invaders/main.cpp similarity index 98% rename from source/Invaders.cpp rename to source/examples/invaders/main.cpp index 1416ab3..7cedc2c 100644 --- a/source/Invaders.cpp +++ b/source/examples/invaders/main.cpp @@ -37,13 +37,10 @@ DEALINGS IN THE SOFTWARE. // #include "MicroBit.h" -#include "MicroBitSamples.h" #define GAME_ON 0 #define GAME_OVER 1 -#ifdef MICROBIT_SAMPLE_INVADERS - struct Point { int x; @@ -293,4 +290,3 @@ int main() spaceInvaders(); } -#endif diff --git a/source/LogicGates.cpp b/source/examples/logic-gates/main.cpp similarity index 98% rename from source/LogicGates.cpp rename to source/examples/logic-gates/main.cpp index 57a8464..77fd803 100644 --- a/source/LogicGates.cpp +++ b/source/examples/logic-gates/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_LOGIC_GATES #define LOGIC_MODE_NOT 1 #define LOGIC_MODE_AND 2 @@ -165,4 +162,3 @@ int main() } } -#endif diff --git a/source/SimpleAnimation.cpp b/source/examples/simple-animation/main.cpp similarity index 95% rename from source/SimpleAnimation.cpp rename to source/examples/simple-animation/main.cpp index b069061..1ffbda3 100644 --- a/source/SimpleAnimation.cpp +++ b/source/examples/simple-animation/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_SIMPLE_ANIMATION MicroBit uBit; @@ -42,4 +39,3 @@ int main() uBit.display.scroll(img, 80, -1); } -#endif diff --git a/source/examples/simple-radio-rx/config.json b/source/examples/simple-radio-rx/config.json new file mode 100644 index 0000000..a2b2e7e --- /dev/null +++ b/source/examples/simple-radio-rx/config.json @@ -0,0 +1,7 @@ +{ + "microbit-dal":{ + "bluetooth":{ + "enabled": 0 + } + } +} diff --git a/source/SimpleRadioRx.cpp b/source/examples/simple-radio-rx/main.cpp similarity index 95% rename from source/SimpleRadioRx.cpp rename to source/examples/simple-radio-rx/main.cpp index d827aec..12ef663 100644 --- a/source/SimpleRadioRx.cpp +++ b/source/examples/simple-radio-rx/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_SIMPLE_RADIO_RX MicroBit uBit; @@ -53,4 +50,3 @@ int main() uBit.sleep(1000); } -#endif diff --git a/source/examples/simple-radio-tx/config.json b/source/examples/simple-radio-tx/config.json new file mode 100644 index 0000000..a2b2e7e --- /dev/null +++ b/source/examples/simple-radio-tx/config.json @@ -0,0 +1,7 @@ +{ + "microbit-dal":{ + "bluetooth":{ + "enabled": 0 + } + } +} diff --git a/source/SimpleRadioTx.cpp b/source/examples/simple-radio-tx/main.cpp similarity index 95% rename from source/SimpleRadioTx.cpp rename to source/examples/simple-radio-tx/main.cpp index 7846f05..44ec21d 100644 --- a/source/SimpleRadioTx.cpp +++ b/source/examples/simple-radio-tx/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_SIMPLE_RADIO_TX MicroBit uBit; @@ -49,4 +46,3 @@ int main() } -#endif diff --git a/source/Snake.cpp b/source/examples/snake/main.cpp similarity index 98% rename from source/Snake.cpp rename to source/examples/snake/main.cpp index 0c475c4..1d510e5 100644 --- a/source/Snake.cpp +++ b/source/examples/snake/main.cpp @@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE. */ #include "MicroBit.h" -#include "MicroBitSamples.h" - -#ifdef MICROBIT_SAMPLE_SNAKE #define SNAKE_EMPTY 0 #define SNAKE_UP 1 @@ -203,4 +200,3 @@ int main() snake(); } -#endif diff --git a/source/main.cpp b/source/main.cpp new file mode 100644 index 0000000..6509ec1 --- /dev/null +++ b/source/main.cpp @@ -0,0 +1,43 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 British Broadcasting Corporation. +This software is provided by Lancaster University by arrangement with the BBC. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + +#include "MicroBit.h" + +MicroBit uBit; + +int main() +{ + // Initialise the micro:bit runtime. + uBit.init(); + + // Insert your code here! + uBit.display.scroll("HELLO WORLD! :)"); + + // If main exits, there may still be other fibers running or registered event handlers etc. + // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then + // sit in the idle task forever, in a power efficient sleep. + release_fiber(); +} +