Merge branch 'master' into data-logging-doc
23
README.md
@ -1,9 +1,9 @@
|
|||||||
# micro:bit target for PXT
|
# micro:bit target for PXT
|
||||||
|
|
||||||
This target allow to program a [BBC micro:bit](https://microbit.org/) using
|
This target allows you to program a [BBC micro:bit](https://microbit.org/) using
|
||||||
PXT ([Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt)).
|
PXT ([Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt)).
|
||||||
|
|
||||||
* [Try it live](@homeurl@)
|
* [Try it live](https://makecode.microbit.org)
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/Microsoft/pxt-microbit.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-microbit)
|
[![Build Status](https://travis-ci.org/Microsoft/pxt-microbit.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-microbit)
|
||||||
|
|
||||||
@ -13,11 +13,11 @@ All issue tracking for this repo happens at https://github.com/Microsoft/pxt, se
|
|||||||
|
|
||||||
## Local server
|
## Local server
|
||||||
|
|
||||||
The local server allows to run the editor and the documentation from your computer.
|
The local server lets you to run the editor and serve the documentation from your own computer.
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
|
|
||||||
The following commands are a 1-time setup after synching the repo on your machine.
|
The following commands perform a one-time setup after synching the repo on your machine.
|
||||||
|
|
||||||
* See requirements for [pxt](https://github.com/Microsoft/pxt)
|
* See requirements for [pxt](https://github.com/Microsoft/pxt)
|
||||||
* [clone this repo](https://help.github.com/articles/cloning-a-repository/) to your computer and go in the project folder
|
* [clone this repo](https://help.github.com/articles/cloning-a-repository/) to your computer and go in the project folder
|
||||||
@ -32,6 +32,7 @@ npm install -g pxt
|
|||||||
* install the dependencies
|
* install the dependencies
|
||||||
```
|
```
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running
|
### Running
|
||||||
@ -50,16 +51,16 @@ pxt serve -yt
|
|||||||
|
|
||||||
## Updates
|
## Updates
|
||||||
|
|
||||||
To update your PXT version and make sure you're running the latest tools, run (add ``sudo`` for Mac/Linux shells)
|
To update your PXT version and make sure you're running the latest tools, run (add ``sudo`` for Mac/Linux shells):
|
||||||
```
|
```
|
||||||
pxt update
|
pxt update
|
||||||
```
|
```
|
||||||
|
|
||||||
More instructions at https://github.com/Microsoft/pxt#running-a-target-from-localhost
|
More instructions are at https://github.com/Microsoft/pxt#running-a-target-from-localhost
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
The build automatically runs the following:
|
The build also automatically runs the following checks:
|
||||||
|
|
||||||
* make sure the built-in packages compile
|
* make sure the built-in packages compile
|
||||||
* `pxt run` in `libs/lang-test*` - this will run the test in command line runner;
|
* `pxt run` in `libs/lang-test*` - this will run the test in command line runner;
|
||||||
@ -76,7 +77,7 @@ The `lang-test0` source comes from the `pxt-core` package. It's also tested with
|
|||||||
|
|
||||||
## Repos
|
## Repos
|
||||||
|
|
||||||
There are a number of repos that pxt-microbit depends on. The main ones are:
|
The pxt-microbit target depends on several other repos. The main ones are:
|
||||||
- https://github.com/Microsoft/pxt, the PXT framework
|
- https://github.com/Microsoft/pxt, the PXT framework
|
||||||
- https://github.com/lancaster-university/microbit, basic wrapper around the DAL
|
- https://github.com/lancaster-university/microbit, basic wrapper around the DAL
|
||||||
- https://github.com/lancaster-university/microbit-dal
|
- https://github.com/lancaster-university/microbit-dal
|
||||||
@ -85,8 +86,10 @@ There are a number of repos that pxt-microbit depends on. The main ones are:
|
|||||||
|
|
||||||
Current serviced versions of pxt-microbit:
|
Current serviced versions of pxt-microbit:
|
||||||
|
|
||||||
| pxt-microbit | v0.12.* | release | uses pxt/v0 v.0.12.*
|
| Target | Version | Type | PXT |
|
||||||
| pxt-microbit | v0.13.* | accessibility | uses pxt/v0 v.0.13.* (with accessibility)
|
|---|---|---|---|
|
||||||
|
| pxt-microbit | v0.13.\* | accessibility | uses pxt/v0 v.0.13.\* (with accessibility) |
|
||||||
|
| pxt-microbit | v0.12.\* | release | uses pxt/v0 v.0.12.\* |
|
||||||
|
|
||||||
## Code of Conduct
|
## Code of Conduct
|
||||||
|
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
# Courses
|
# Courses
|
||||||
|
|
||||||
A collection of courses built for the @boardname@.
|
A collection of courses and tutorials built for the @boardname@.
|
||||||
|
|
||||||
## Courses
|
## Courses
|
||||||
|
|
||||||
|
|
||||||
```codecard
|
```codecard
|
||||||
[{
|
[{
|
||||||
"name": "Intro to CS",
|
"name": "Intro to CS",
|
||||||
@ -17,15 +16,20 @@ A collection of courses built for the @boardname@.
|
|||||||
"url":"https://microbit.org/en/2017-03-07-javascript-block-resources/",
|
"url":"https://microbit.org/en/2017-03-07-javascript-block-resources/",
|
||||||
"imageUrl": "https://microbit.org/assets/posts/2017-03-07-rock%20paper%20scissors.png"
|
"imageUrl": "https://microbit.org/assets/posts/2017-03-07-rock%20paper%20scissors.png"
|
||||||
}, {
|
}, {
|
||||||
"name": "Kitronik Inventory Kit",
|
|
||||||
"description": "11 experiments based on the Kitronik Inventor Kit",
|
|
||||||
"url": "https://www.kitronik.co.uk/blog/inventors-kit-experiment-1-help",
|
|
||||||
"imageUrl": "https://www.kitronik.co.uk/wp/wp-content/uploads/2016/10/inventors-kit-experiment-1-further-help-870.jpg"
|
|
||||||
},{
|
|
||||||
"name": "SparkFun Videos",
|
"name": "SparkFun Videos",
|
||||||
"description": "YouTube video tutorials produced by the SparkFun team!",
|
"description": "YouTube video tutorials produced by the SparkFun team!",
|
||||||
"url": "https://youtu.be/kaNtg1HGXbY?list=PLBcrWxTa5CS0mWJrytvii8aG5KUqMXvSk",
|
"url": "https://youtu.be/kaNtg1HGXbY?list=PLBcrWxTa5CS0mWJrytvii8aG5KUqMXvSk",
|
||||||
"imageUrl": "https://i.ytimg.com/vi/kaNtg1HGXbY/hqdefault.jpg"
|
"imageUrl": "https://i.ytimg.com/vi/kaNtg1HGXbY/hqdefault.jpg"
|
||||||
|
}, {
|
||||||
|
"name": "Kitronik University",
|
||||||
|
"description": "Kits, projects and tutorials",
|
||||||
|
"url": "https://www.kitronik.co.uk/blog/bbc-microbit-kitronik-university/",
|
||||||
|
"imageUrl": "https://www.kitronik.co.uk/wp/wp-content/uploads/2015/03/2150_KIT01_banner-kitronikuniversity_002_v1.png"
|
||||||
|
}, {
|
||||||
|
"name": "Kitronik Inventory Kit",
|
||||||
|
"description": "11 experiments based on the Kitronik Inventor Kit",
|
||||||
|
"url": "https://www.kitronik.co.uk/blog/inventors-kit-experiment-1-help",
|
||||||
|
"imageUrl": "https://www.kitronik.co.uk/wp/wp-content/uploads/2016/10/inventors-kit-experiment-1-further-help-870.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "micro:bit of Things",
|
"name": "micro:bit of Things",
|
||||||
@ -37,6 +41,4 @@ A collection of courses built for the @boardname@.
|
|||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
[Intro to CS](/courses/csintro),
|
[Intro to CS](/courses/csintro)
|
||||||
[Start Coding](http://microbit.org/en/2017-03-07-javascript-block-resources/),
|
|
||||||
[micro:bit of Things](https://sites.google.com/view/microbitofthings)
|
|
||||||
|
@ -13,13 +13,12 @@ This course takes approximately 14 weeks to complete, spending about 1 week on e
|
|||||||
|
|
||||||
The entire course is also available as a download. Choose any of these formats:
|
The entire course is also available as a download. Choose any of these formats:
|
||||||
|
|
||||||
* [**HTML** - The entire course in a single HTML page that you can print to PDF or paper.](/--docs#book:/courses/csintro/SUMMARY)
|
|||
|
||||||
|
|-|-|
|
||||||
[![](/static/courses/csintro/icons/microsoft-onenote-24x24.png) **OneNote** - Intro to CS with MakeCode for micro:bit](https://1drv.ms/o/s!AqsgsTyHBmRBgQvFaUaeANNHbxpC)
|
| [![](/static/courses/csintro/icons/html-24x24.png)](/--docs#book:/courses/csintro/SUMMARY) | [- **HTML** - The entire course in a single HTML page that you can print to PDF or paper](/--docs#book:/courses/csintro/SUMMARY) |
|
||||||
|
| [![](/static/courses/csintro/icons/microsoft-onenote-24x24.png)](https://1drv.ms/o/s!AqsgsTyHBmRBgQvFaUaeANNHbxpC) | [- **OneNote** - Intro to CS with MakeCode for micro:bit](https://1drv.ms/o/s!AqsgsTyHBmRBgQvFaUaeANNHbxpC) |
|
||||||
[![](/static/courses/csintro/icons/adobe-pdf-file-icon-24x24.png) **PDF** - Intro to CS with MakeCode for micro:bit](https://1drv.ms/b/s!AqsgsTyHBmRBgQ1Fjzm5y5wKG75M)
|
| [![](/static/courses/csintro/icons/adobe-pdf-file-icon-24x24.png)](https://1drv.ms/b/s!AqsgsTyHBmRBgQ1Fjzm5y5wKG75M) | [- **PDF** - Intro to CS with MakeCode for micro:bit](https://1drv.ms/b/s!AqsgsTyHBmRBgQ1Fjzm5y5wKG75M) |
|
||||||
|
| [![](/static/courses/csintro/icons/apple-itunes-ibook-24x24.png)](https://itunes.apple.com/us/book/making-with-micro-bit/id1255260221?mt=11) | [- **iBooks** - Making with micro:bit](https://itunes.apple.com/us/book/making-with-micro-bit/id1255260221?mt=11) |
|
||||||
[![](/static/courses/csintro/icons/apple-itunes-ibook-24x24.png) **iBooks** - Making with micro:bit](https://itunes.apple.com/us/book/making-with-micro-bit/id1255260221?mt=11)
|
|
||||||
### ~
|
### ~
|
||||||
|
|
||||||
### Lesson structure
|
### Lesson structure
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
`# Introduction
|
# Introduction
|
||||||
|
|
||||||
What is a micro:bit?
|
What is a micro:bit?
|
||||||
The micro:bit was created in 2015 in the UK by the BBC to teach computer science to students. The BBC gave away a micro:bit to every Year 7 student in the UK. You can think of a micro:bit as a mini computer.
|
The micro:bit was created in 2015 in the UK by the BBC to teach computer science to students. The BBC gave away a micro:bit to every Year 7 student in the UK. You can think of a micro:bit as a mini computer.
|
||||||
|
@ -30,7 +30,7 @@ by **Colleen Graves**
|
|||||||
|
|
||||||
Inspiring Makers to Experiment, Create, and Learn
|
Inspiring Makers to Experiment, Create, and Learn
|
||||||
|
|
||||||
![Makerspace Projects Book Cover](/static/courses/csintro/references/makerspace-projects.jpg)
|
[![Makerspace Projects Book Cover](/static/courses/csintro/references/makerspace-projects.jpg)](https://colleengraves.org/bigmakerbook/)
|
||||||
|
|
||||||
## Code and Computational Thinking
|
## Code and Computational Thinking
|
||||||
|
|
||||||
|
@ -30,8 +30,7 @@ Fun games to build with your @boardname@.
|
|||||||
}, {
|
}, {
|
||||||
"name": "Rock Paper Scissors",
|
"name": "Rock Paper Scissors",
|
||||||
"url":"/projects/rock-paper-scissors",
|
"url":"/projects/rock-paper-scissors",
|
||||||
"imageUrl":"/static/mb/projects/a4-motion.png",
|
"imageUrl":"/static/mb/projects/a4-motion.png"
|
||||||
"cardType": "tutorial"
|
|
||||||
}, {
|
}, {
|
||||||
"name": "Magic Button Trick",
|
"name": "Magic Button Trick",
|
||||||
"url":"/projects/magic-button-trick",
|
"url":"/projects/magic-button-trick",
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
# Coin Flipper
|
# Coin Flipper
|
||||||
|
|
||||||
## ~avatar avatar
|
|
||||||
|
|
||||||
Are you trying to choose whether to play soccer or go to the movies
|
|
||||||
instead, or which toppings to have on your pizza? Build a coin
|
|
||||||
flipping machine with the @boardname@ to choose for you!
|
|
||||||
|
|
||||||
## ~
|
|
||||||
|
|
||||||
## Step 1
|
## Step 1
|
||||||
|
|
||||||
Place a ``||input:on button pressed||`` block to run code
|
Place a ``||input:on button pressed||`` block to run code
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
https://youtu.be/S8NppVT_paw
|
https://youtu.be/S8NppVT_paw
|
||||||
|
|
||||||
* Connect a nail to the ``GND`` pin with a croc clip and insert it in the soil
|
* Connect a nail to the ``3V`` pin with a croc clip and insert it in the soil
|
||||||
* Connect the other nail to the ``P0`` pin with a croc clip and insert it in the soil
|
* Connect the other nail to the ``P0`` pin with a croc clip and insert it in the soil
|
||||||
|
|
||||||
That's it!
|
That's it!
|
||||||
|
@ -21,6 +21,7 @@ input.lightLevel();
|
|||||||
input.rotation(Rotation.Pitch);
|
input.rotation(Rotation.Pitch);
|
||||||
input.magneticForce(Dimension.X);
|
input.magneticForce(Dimension.X);
|
||||||
input.runningTime();
|
input.runningTime();
|
||||||
|
input.runningTimeMicros();
|
||||||
input.setAccelerometerRange(AcceleratorRange.OneG);
|
input.setAccelerometerRange(AcceleratorRange.OneG);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ input.calibrateCompass();
|
|||||||
|
|
||||||
## Calibration
|
## Calibration
|
||||||
|
|
||||||
The calibration will ask you to draw a circle by tilting the
|
The calibration will ask you to draw a circle or fill the LED screen by tilting the
|
||||||
@boardname@.
|
@boardname@.
|
||||||
|
|
||||||
If you are calibrating or using the compass near metal, it might
|
If you are calibrating or using the compass near metal, it might
|
||||||
|
17
docs/reference/input/running-time-micros.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Running Time Micros
|
||||||
|
|
||||||
|
Find how long it has been since the program started in micro-seconds.
|
||||||
|
|
||||||
|
```sig
|
||||||
|
input.runningTimeMicros();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Returns
|
||||||
|
|
||||||
|
* the [Number](/types/number) of microseconds since the program started.
|
||||||
|
(One second is 1000000 microseconds.)
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
[show number](/reference/basic/show-number), [pause](/reference/basic/pause)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
# Running Time
|
# Running Time
|
||||||
|
|
||||||
Find how long it has been since the program started.
|
Find how long it has been since the program started in milli-seconds.
|
||||||
|
|
||||||
```sig
|
```sig
|
||||||
input.runningTime();
|
input.runningTime();
|
||||||
|
BIN
docs/static/courses/csintro/icons/html-24x24.png
vendored
Normal file
After Width: | Height: | Size: 874 B |
@ -31,89 +31,87 @@ namespace pxt.editor {
|
|||||||
|
|
||||||
class DAPWrapper {
|
class DAPWrapper {
|
||||||
cortexM: DapJS.CortexM
|
cortexM: DapJS.CortexM
|
||||||
|
packetIo: HF2.PacketIO;
|
||||||
|
|
||||||
constructor(h: HF2.PacketIO) {
|
constructor(h: HF2.PacketIO) {
|
||||||
let pbuf = new U.PromiseBuffer<Uint8Array>()
|
this.packetIo = h;
|
||||||
|
let pbuf = new U.PromiseBuffer<Uint8Array>();
|
||||||
|
|
||||||
let sendMany = (cmds: Uint8Array[]) => {
|
let sendMany = (cmds: Uint8Array[]) => {
|
||||||
return h.talksAsync(cmds.map(c => ({ cmd: 0, data: c })))
|
return h.talksAsync(cmds.map(c => ({ cmd: 0, data: c })));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!h.talksAsync)
|
if (!h.talksAsync)
|
||||||
sendMany = null
|
sendMany = null;
|
||||||
|
|
||||||
let dev = new DapJS.DAP({
|
let dev = new DapJS.DAP({
|
||||||
write: writeAsync,
|
write: writeAsync,
|
||||||
close: closeAsync,
|
close: this.disconnectAsync,
|
||||||
read: readAsync,
|
read: readAsync,
|
||||||
sendMany: sendMany
|
sendMany: sendMany
|
||||||
})
|
});
|
||||||
this.cortexM = new DapJS.CortexM(dev)
|
this.cortexM = new DapJS.CortexM(dev);
|
||||||
|
|
||||||
h.onData = buf => {
|
h.onData = buf => {
|
||||||
pbuf.push(buf)
|
pbuf.push(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeAsync(data: ArrayBuffer) {
|
function writeAsync(data: ArrayBuffer) {
|
||||||
h.sendPacketAsync(new Uint8Array(data))
|
h.sendPacketAsync(new Uint8Array(data));
|
||||||
return Promise.resolve()
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
function readAsync() {
|
function readAsync() {
|
||||||
return pbuf.shiftAsync()
|
return pbuf.shiftAsync();
|
||||||
}
|
|
||||||
|
|
||||||
function closeAsync() {
|
|
||||||
return h.disconnectAsync()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
reconnectAsync(first: boolean) {
|
reconnectAsync(first: boolean) {
|
||||||
return this.cortexM.init()
|
return this.cortexM.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnectAsync() {
|
||||||
|
return this.packetIo.disconnectAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let previousDapWrapper: DAPWrapper;
|
||||||
function dapAsync() {
|
function dapAsync() {
|
||||||
return pxt.HF2.mkPacketIOAsync()
|
return Promise.resolve()
|
||||||
|
.then(() => {
|
||||||
|
if (previousDapWrapper) {
|
||||||
|
return previousDapWrapper.disconnectAsync()
|
||||||
|
.finally(() => {
|
||||||
|
previousDapWrapper = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => pxt.HF2.mkPacketIOAsync())
|
||||||
.then(h => {
|
.then(h => {
|
||||||
let w = new DAPWrapper(h)
|
let w = new DAPWrapper(h)
|
||||||
|
previousDapWrapper = w;
|
||||||
return w.reconnectAsync(true)
|
return w.reconnectAsync(true)
|
||||||
.then(() => w)
|
.then(() => w)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let noHID = false
|
|
||||||
|
|
||||||
let initPromise: Promise<DAPWrapper>
|
|
||||||
function initAsync() {
|
function initAsync() {
|
||||||
if (initPromise)
|
|
||||||
return initPromise
|
|
||||||
|
|
||||||
let canHID = false
|
let canHID = false
|
||||||
if (U.isNodeJS) {
|
if (U.isNodeJS) {
|
||||||
canHID = true
|
canHID = true
|
||||||
} else {
|
} else {
|
||||||
const forceHexDownload = /forceHexDownload/i.test(window.location.href);
|
const forceHexDownload = /forceHexDownload/i.test(window.location.href);
|
||||||
if (Cloud.isLocalHost() && Cloud.localToken && !forceHexDownload)
|
const isUwp = !!(window as any).Windows;
|
||||||
|
if (Cloud.isLocalHost() && Cloud.localToken && !forceHexDownload || isUwp)
|
||||||
canHID = true
|
canHID = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noHID)
|
|
||||||
canHID = false
|
|
||||||
|
|
||||||
if (canHID) {
|
if (canHID) {
|
||||||
initPromise = dapAsync()
|
return dapAsync();
|
||||||
.catch(err => {
|
|
||||||
initPromise = null
|
|
||||||
noHID = true
|
|
||||||
return Promise.reject(err)
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
noHID = true
|
return Promise.reject(new Error("no HID"))
|
||||||
initPromise = Promise.reject(new Error("no HID"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return initPromise
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function pageAlignBlocks(blocks: UF2.Block[], pageSize: number) {
|
function pageAlignBlocks(blocks: UF2.Block[], pageSize: number) {
|
||||||
@ -234,13 +232,8 @@ namespace pxt.editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
startTime = 0
|
startTime = 0
|
||||||
|
|
||||||
if (noHID) return saveHexAsync()
|
|
||||||
|
|
||||||
let wrap: DAPWrapper
|
let wrap: DAPWrapper
|
||||||
|
|
||||||
log("init")
|
log("init")
|
||||||
|
|
||||||
let logV = (msg: string) => { }
|
let logV = (msg: string) => { }
|
||||||
//let logV = log
|
//let logV = log
|
||||||
|
|
||||||
@ -339,11 +332,7 @@ namespace pxt.editor {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
// if we failed to initalize, retry
|
return saveHexAsync();
|
||||||
if (noHID)
|
|
||||||
return saveHexAsync()
|
|
||||||
else
|
|
||||||
return Promise.reject(e)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,16 +360,16 @@ namespace pxt.editor {
|
|||||||
}, name: data.meta.name
|
}, name: data.meta.name
|
||||||
})
|
})
|
||||||
}, {
|
}, {
|
||||||
id: "td",
|
id: "td",
|
||||||
canImport: data => data.meta.cloudId == "microbit.co.uk" && data.meta.editor == "touchdevelop",
|
canImport: data => data.meta.cloudId == "microbit.co.uk" && data.meta.editor == "touchdevelop",
|
||||||
importAsync: (project, data) =>
|
importAsync: (project, data) =>
|
||||||
project.createProjectAsync({
|
project.createProjectAsync({
|
||||||
filesOverride: { "main.blocks": "", "main.ts": " " },
|
filesOverride: { "main.blocks": "", "main.ts": " " },
|
||||||
name: data.meta.name
|
name: data.meta.name
|
||||||
})
|
})
|
||||||
.then(() => project.convertTouchDevelopToTypeScriptAsync(data.source))
|
.then(() => project.convertTouchDevelopToTypeScriptAsync(data.source))
|
||||||
.then(text => project.overrideTypescriptFile(text))
|
.then(text => project.overrideTypescriptFile(text))
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
pxt.commands.deployCoreAsync = deployCoreAsync;
|
pxt.commands.deployCoreAsync = deployCoreAsync;
|
||||||
return Promise.resolve<pxt.editor.ExtensionResult>(res);
|
return Promise.resolve<pxt.editor.ExtensionResult>(res);
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"AcceleratorRange.EightG": "The accelerator measures forces up to 8 gravity",
|
||||||
|
"AcceleratorRange.FourG": "The accelerator measures forces up to 4 gravity",
|
||||||
|
"AcceleratorRange.OneG": "The accelerator measures forces up to 1 gravity",
|
||||||
|
"AcceleratorRange.TwoG": "The accelerator measures forces up to 2 gravity",
|
||||||
"Array": "Add, remove, and replace items in lists.\n\nAdd, remove, and replace items in lists.",
|
"Array": "Add, remove, and replace items in lists.\n\nAdd, remove, and replace items in lists.",
|
||||||
"Array.filter": "Return the elements of an array that meet the condition specified in a callback function.",
|
"Array.filter": "Return the elements of an array that meet the condition specified in a callback function.",
|
||||||
"Array.filter|param|callbackfn": "A function that accepts up to two arguments. The filter method calls the callbackfn function one time for each element in the array.",
|
"Array.filter|param|callbackfn": "A function that accepts up to two arguments. The filter method calls the callbackfn function one time for each element in the array.",
|
||||||
@ -35,6 +39,57 @@
|
|||||||
"Array.splice|param|start": "The zero-based location in the array from which to start removing elements. eg: 0",
|
"Array.splice|param|start": "The zero-based location in the array from which to start removing elements. eg: 0",
|
||||||
"Array.unshift": "Add one element to the beginning of an array and return the new length of the array.",
|
"Array.unshift": "Add one element to the beginning of an array and return the new length of the array.",
|
||||||
"Array.unshift|param|value": "to insert at the start of the Array.",
|
"Array.unshift|param|value": "to insert at the start of the Array.",
|
||||||
|
"Boolean.toString": "Returns a string representation of an object.",
|
||||||
|
"Buffer.fill": "Fill (a fragment) of the buffer with given value.",
|
||||||
|
"Buffer.getNumber": "Read a number in specified format from the buffer.",
|
||||||
|
"Buffer.length": "Returns the length of a Buffer object.",
|
||||||
|
"Buffer.rotate": "Rotate buffer left in place.",
|
||||||
|
"Buffer.rotate|param|length": "number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1",
|
||||||
|
"Buffer.rotate|param|offset": "number of bytes to shift; use negative value to shift right",
|
||||||
|
"Buffer.rotate|param|start": "start offset in buffer. Default is 0.",
|
||||||
|
"Buffer.setNumber": "Write a number in specified format in the buffer.",
|
||||||
|
"Buffer.shift": "Shift buffer left in place, with zero padding.",
|
||||||
|
"Buffer.shift|param|length": "number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1",
|
||||||
|
"Buffer.shift|param|offset": "number of bytes to shift; use negative value to shift right",
|
||||||
|
"Buffer.shift|param|start": "start offset in buffer. Default is 0.",
|
||||||
|
"Buffer.slice": "Return a copy of a fragment of a buffer.",
|
||||||
|
"Buffer.write": "Write contents of `src` at `dstOffset` in current buffer.",
|
||||||
|
"EventCreationMode": "How to create the event.",
|
||||||
|
"EventCreationMode.CreateAndFire": "MicroBitEvent is initialised, and its event handlers are immediately fired (not suitable for use in interrupts!).",
|
||||||
|
"EventCreationMode.CreateOnly": "MicroBitEvent is initialised, and no further processing takes place.",
|
||||||
|
"Gesture.EightG": "Raised when a 8G shock is detected",
|
||||||
|
"Gesture.FreeFall": "Raised when the board is falling!",
|
||||||
|
"Gesture.LogoDown": "Raised when the logo is downward and the screen is vertical",
|
||||||
|
"Gesture.LogoUp": "Raised when the logo is upward and the screen is vertical",
|
||||||
|
"Gesture.ScreenDown": "Raised when the screen is pointing up and the board is horizontal",
|
||||||
|
"Gesture.ScreenUp": "Raised when the screen is pointing down and the board is horizontal",
|
||||||
|
"Gesture.Shake": "Raised when shaken",
|
||||||
|
"Gesture.SixG": "Raised when a 6G shock is detected",
|
||||||
|
"Gesture.ThreeG": "Raised when a 3G shock is detected",
|
||||||
|
"Gesture.TiltLeft": "Raised when the screen is pointing left",
|
||||||
|
"Gesture.TiltRight": "Raised when the screen is pointing right",
|
||||||
|
"Image.clear": "Sets all pixels off.",
|
||||||
|
"Image.height": "Gets the height in rows (always 5)",
|
||||||
|
"Image.pixel": "Get the pixel state at position ``(x,y)``",
|
||||||
|
"Image.pixelBrightness": "Gets the pixel brightness ([0..255]) at a given position",
|
||||||
|
"Image.pixel|param|x": "TODO",
|
||||||
|
"Image.pixel|param|y": "TODO",
|
||||||
|
"Image.plotFrame": "Draws the ``index``-th frame of the image on the screen.",
|
||||||
|
"Image.plotFrame|param|xOffset": "column index to start displaying the image",
|
||||||
|
"Image.plotImage": "Plots the image at a given column to the screen",
|
||||||
|
"Image.scrollImage": "Scrolls an image .",
|
||||||
|
"Image.scrollImage|param|frameOffset": "x offset moved on each animation step, eg: 1, 2, 5",
|
||||||
|
"Image.scrollImage|param|interval": "time between each animation step in milli seconds, eg: 200",
|
||||||
|
"Image.setPixel": "Set a pixel state at position ``(x,y)``",
|
||||||
|
"Image.setPixelBrightness": "Sets a specific pixel brightness at a given position",
|
||||||
|
"Image.setPixel|param|value": "TODO",
|
||||||
|
"Image.setPixel|param|x": "TODO",
|
||||||
|
"Image.setPixel|param|y": "TODO",
|
||||||
|
"Image.showFrame": "Shows a particular frame of the image strip.",
|
||||||
|
"Image.showFrame|param|frame": "TODO",
|
||||||
|
"Image.showImage": "Shows an frame from the image at offset ``x offset``.",
|
||||||
|
"Image.showImage|param|xOffset": "column index to start displaying the image",
|
||||||
|
"Image.width": "Gets the width in columns",
|
||||||
"Math": "More complex operations with numbers.",
|
"Math": "More complex operations with numbers.",
|
||||||
"Math.abs": "Returns the absolute value of a number (the value without regard to whether it is positive or negative).\nFor example, the absolute value of -5 is the same as the absolute value of 5.",
|
"Math.abs": "Returns the absolute value of a number (the value without regard to whether it is positive or negative).\nFor example, the absolute value of -5 is the same as the absolute value of 5.",
|
||||||
"Math.abs|param|x": "A numeric expression for which the absolute value is needed.",
|
"Math.abs|param|x": "A numeric expression for which the absolute value is needed.",
|
||||||
@ -50,6 +105,7 @@
|
|||||||
"Math.sign|param|x": "The numeric expression to test",
|
"Math.sign|param|x": "The numeric expression to test",
|
||||||
"Math.sqrt": "Return the square root of a number.",
|
"Math.sqrt": "Return the square root of a number.",
|
||||||
"Math.sqrt|param|x": "A numeric expression.",
|
"Math.sqrt|param|x": "A numeric expression.",
|
||||||
|
"Number.toString": "Return a string representation of a number.",
|
||||||
"String": "Combine, split, and search text strings.\n\nCombine, split, and search text strings.",
|
"String": "Combine, split, and search text strings.\n\nCombine, split, and search text strings.",
|
||||||
"String.charAt": "Return the character at the specified index.",
|
"String.charAt": "Return the character at the specified index.",
|
||||||
"String.charAt|param|index": "The zero-based index of the desired character, eg: 0",
|
"String.charAt|param|index": "The zero-based index of the desired character, eg: 0",
|
||||||
@ -109,6 +165,58 @@
|
|||||||
"control.waitMicros": "Blocks the current fiber for the given microseconds",
|
"control.waitMicros": "Blocks the current fiber for the given microseconds",
|
||||||
"control.waitMicros|param|micros": "number of micro-seconds to wait. eg: 4",
|
"control.waitMicros|param|micros": "number of micro-seconds to wait. eg: 4",
|
||||||
"game": "A single-LED sprite game engine",
|
"game": "A single-LED sprite game engine",
|
||||||
|
"game.LedSprite": "A game sprite rendered as a single LED",
|
||||||
|
"game.LedSprite.blink": "Reports the ``blink`` duration of a sprite",
|
||||||
|
"game.LedSprite.brightness": "Reports the ``brightness` of a sprite on the LED screen",
|
||||||
|
"game.LedSprite.change": "Changes a property of the sprite",
|
||||||
|
"game.LedSprite.changeBlinkBy": "Changes the ``blink`` duration by the given amount of millisecons",
|
||||||
|
"game.LedSprite.changeBlinkBy|param|ms": "TODO",
|
||||||
|
"game.LedSprite.changeBrightnessBy": "Changes the ``y`` position by the given amount",
|
||||||
|
"game.LedSprite.changeBrightnessBy|param|value": "the value to change brightness",
|
||||||
|
"game.LedSprite.changeDirectionBy": "Changes the ``direction`` position by the given amount by turning right",
|
||||||
|
"game.LedSprite.changeDirectionBy|param|angle": "TODO",
|
||||||
|
"game.LedSprite.changeXBy": "Changes the ``x`` position by the given amount",
|
||||||
|
"game.LedSprite.changeXBy|param|x": "TODO",
|
||||||
|
"game.LedSprite.changeYBy": "Changes the ``y`` position by the given amount",
|
||||||
|
"game.LedSprite.changeYBy|param|y": "TODO",
|
||||||
|
"game.LedSprite.change|param|property": "the name of the property to change",
|
||||||
|
"game.LedSprite.change|param|value": "amount of change, eg: 1",
|
||||||
|
"game.LedSprite.delete": "Deletes the sprite from the game engine. The sprite will no longer appear on the screen or interact with other sprites.",
|
||||||
|
"game.LedSprite.direction": "Reports the current direction of a sprite",
|
||||||
|
"game.LedSprite.get": "Gets a property of the sprite",
|
||||||
|
"game.LedSprite.get|param|property": "the name of the property to change",
|
||||||
|
"game.LedSprite.goTo": "Go to this position on the screen",
|
||||||
|
"game.LedSprite.goTo|param|x": "TODO",
|
||||||
|
"game.LedSprite.goTo|param|y": "TODO",
|
||||||
|
"game.LedSprite.ifOnEdgeBounce": "If touching the edge of the stage and facing towards it, then turn away.",
|
||||||
|
"game.LedSprite.isTouching": "Reports true if sprite has the same position as specified sprite",
|
||||||
|
"game.LedSprite.isTouchingEdge": "Reports true if sprite is touching an edge",
|
||||||
|
"game.LedSprite.isTouching|param|other": "TODO",
|
||||||
|
"game.LedSprite.move": "Move a certain number of LEDs in the current direction",
|
||||||
|
"game.LedSprite.move|param|leds": "number of leds to move, eg: 1, -1",
|
||||||
|
"game.LedSprite.off": "Turns off the sprite (on by default)",
|
||||||
|
"game.LedSprite.on": "Turns on the sprite (on by default)",
|
||||||
|
"game.LedSprite.set": "Sets a property of the sprite",
|
||||||
|
"game.LedSprite.setBlink": "Sets the blink duration interval in millisecond.",
|
||||||
|
"game.LedSprite.setBlink|param|ms": "TODO",
|
||||||
|
"game.LedSprite.setBrightness": "Set the ``brightness`` of a sprite",
|
||||||
|
"game.LedSprite.setBrightness|param|brightness": "the brightness from 0 (off) to 255 (on), eg: 255.",
|
||||||
|
"game.LedSprite.setDirection": "Set the direction of the current sprite, rounded to the nearest multiple of 45",
|
||||||
|
"game.LedSprite.setDirection|param|degrees": "TODO",
|
||||||
|
"game.LedSprite.setX": "Set the ``x`` position of a sprite",
|
||||||
|
"game.LedSprite.setX|param|x": "TODO",
|
||||||
|
"game.LedSprite.setY": "Set the ``y`` position of a sprite",
|
||||||
|
"game.LedSprite.setY|param|y": "TODO",
|
||||||
|
"game.LedSprite.set|param|property": "the name of the property to change",
|
||||||
|
"game.LedSprite.turn": "Turn the sprite",
|
||||||
|
"game.LedSprite.turnLeft": "Turn to the left (counter-clockwise)",
|
||||||
|
"game.LedSprite.turnLeft|param|degrees": "TODO",
|
||||||
|
"game.LedSprite.turnRight": "Turn to the right (clockwise)",
|
||||||
|
"game.LedSprite.turnRight|param|degrees": "TODO",
|
||||||
|
"game.LedSprite.turn|param|degrees": "angle in degrees to turn, eg: 45, 90, 180, 135",
|
||||||
|
"game.LedSprite.turn|param|direction": "left or right",
|
||||||
|
"game.LedSprite.x": "Reports the ``x`` position of a sprite on the LED screen",
|
||||||
|
"game.LedSprite.y": "Reports the ``y`` position of a sprite on the LED screen",
|
||||||
"game.addLife": "Adds life points to the current life",
|
"game.addLife": "Adds life points to the current life",
|
||||||
"game.addLife|param|lives": "TODO",
|
"game.addLife|param|lives": "TODO",
|
||||||
"game.addScore": "Adds points to the current score and shows an animation",
|
"game.addScore": "Adds points to the current score and shows an animation",
|
||||||
@ -179,6 +287,7 @@
|
|||||||
"input.rotation": "The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.",
|
"input.rotation": "The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.",
|
||||||
"input.rotation|param|kind": "TODO",
|
"input.rotation|param|kind": "TODO",
|
||||||
"input.runningTime": "Gets the number of milliseconds elapsed since power on.",
|
"input.runningTime": "Gets the number of milliseconds elapsed since power on.",
|
||||||
|
"input.runningTimeMicros": "Gets the number of microseconds elapsed since power on.",
|
||||||
"input.setAccelerometerRange": "Sets the accelerometer sample range in gravities.",
|
"input.setAccelerometerRange": "Sets the accelerometer sample range in gravities.",
|
||||||
"input.setAccelerometerRange|param|range": "a value describe the maximum strengh of acceleration measured",
|
"input.setAccelerometerRange|param|range": "a value describe the maximum strengh of acceleration measured",
|
||||||
"input.temperature": "Gets the temperature in Celsius degrees (°C).",
|
"input.temperature": "Gets the temperature in Celsius degrees (°C).",
|
||||||
@ -239,6 +348,7 @@
|
|||||||
"music.setTempo": "Sets the tempo to the specified amount",
|
"music.setTempo": "Sets the tempo to the specified amount",
|
||||||
"music.setTempo|param|bpm": "The new tempo in beats per minute, eg: 120",
|
"music.setTempo|param|bpm": "The new tempo in beats per minute, eg: 120",
|
||||||
"music.tempo": "Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.",
|
"music.tempo": "Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.",
|
||||||
|
"parseInt": "Convert A string to an integer.",
|
||||||
"pins": "Control currents in Pins for analog/digital signals, servos, i2c, ...",
|
"pins": "Control currents in Pins for analog/digital signals, servos, i2c, ...",
|
||||||
"pins.analogPitch": "Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.",
|
"pins.analogPitch": "Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.",
|
||||||
"pins.analogPitch|param|frequency": "frequency to modulate in Hz.",
|
"pins.analogPitch|param|frequency": "frequency to modulate in Hz.",
|
||||||
|
@ -136,6 +136,8 @@
|
|||||||
"IconNames.Triangle|block": "triangle",
|
"IconNames.Triangle|block": "triangle",
|
||||||
"IconNames.Umbrella|block": "umbrella",
|
"IconNames.Umbrella|block": "umbrella",
|
||||||
"IconNames.Yes|block": "yes",
|
"IconNames.Yes|block": "yes",
|
||||||
|
"Image.scrollImage|block": "scroll image %sprite|with offset %frameoffset|and interval (ms) %delay",
|
||||||
|
"Image.showImage|block": "show image %sprite|at offset %offset",
|
||||||
"LedSpriteProperty.Blink|block": "blink",
|
"LedSpriteProperty.Blink|block": "blink",
|
||||||
"LedSpriteProperty.Brightness|block": "brightness",
|
"LedSpriteProperty.Brightness|block": "brightness",
|
||||||
"LedSpriteProperty.Direction|block": "direction",
|
"LedSpriteProperty.Direction|block": "direction",
|
||||||
@ -244,6 +246,15 @@
|
|||||||
"control.reset|block": "reset",
|
"control.reset|block": "reset",
|
||||||
"control.waitMicros|block": "wait (µs)%micros",
|
"control.waitMicros|block": "wait (µs)%micros",
|
||||||
"control|block": "control",
|
"control|block": "control",
|
||||||
|
"game.LedSprite.change|block": "%sprite|change %property|by %value",
|
||||||
|
"game.LedSprite.delete|block": "delete %this",
|
||||||
|
"game.LedSprite.get|block": "%sprite|%property",
|
||||||
|
"game.LedSprite.ifOnEdgeBounce|block": "%sprite|if on edge, bounce",
|
||||||
|
"game.LedSprite.isTouchingEdge|block": "%sprite|touching edge?",
|
||||||
|
"game.LedSprite.isTouching|block": "%sprite|touching %other|?",
|
||||||
|
"game.LedSprite.move|block": "%sprite|move by %leds",
|
||||||
|
"game.LedSprite.set|block": "%sprite|set %property|to %value",
|
||||||
|
"game.LedSprite.turn|block": "%sprite|turn %direction|by (°) %degrees",
|
||||||
"game.addScore|block": "change score by|%points",
|
"game.addScore|block": "change score by|%points",
|
||||||
"game.createSprite|block": "create sprite at|x: %x|y: %y",
|
"game.createSprite|block": "create sprite at|x: %x|y: %y",
|
||||||
"game.gameOver|block": "game over",
|
"game.gameOver|block": "game over",
|
||||||
@ -253,8 +264,11 @@
|
|||||||
"game.setScore|block": "set score %points",
|
"game.setScore|block": "set score %points",
|
||||||
"game.startCountdown|block": "start countdown|(ms) %duration",
|
"game.startCountdown|block": "start countdown|(ms) %duration",
|
||||||
"game|block": "game",
|
"game|block": "game",
|
||||||
|
"images.arrowImage|block": "arrow image %i=device_arrow",
|
||||||
|
"images.arrowNumber|block": "%arrow",
|
||||||
"images.createBigImage|block": "create big image",
|
"images.createBigImage|block": "create big image",
|
||||||
"images.createImage|block": "create image",
|
"images.createImage|block": "create image",
|
||||||
|
"images.iconImage|block": "icon image %i",
|
||||||
"images|block": "images",
|
"images|block": "images",
|
||||||
"input.acceleration|block": "acceleration (mg)|%NAME",
|
"input.acceleration|block": "acceleration (mg)|%NAME",
|
||||||
"input.buttonIsPressed|block": "button|%NAME|is pressed",
|
"input.buttonIsPressed|block": "button|%NAME|is pressed",
|
||||||
@ -268,6 +282,7 @@
|
|||||||
"input.onPinReleased|block": "on pin %NAME|released",
|
"input.onPinReleased|block": "on pin %NAME|released",
|
||||||
"input.pinIsPressed|block": "pin %NAME|is pressed",
|
"input.pinIsPressed|block": "pin %NAME|is pressed",
|
||||||
"input.rotation|block": "rotation (°)|%NAME",
|
"input.rotation|block": "rotation (°)|%NAME",
|
||||||
|
"input.runningTimeMicros|block": "running time (micros)",
|
||||||
"input.runningTime|block": "running time (ms)",
|
"input.runningTime|block": "running time (ms)",
|
||||||
"input.setAccelerometerRange|block": "set accelerometer|range %range",
|
"input.setAccelerometerRange|block": "set accelerometer|range %range",
|
||||||
"input.temperature|block": "temperature (°C)",
|
"input.temperature|block": "temperature (°C)",
|
||||||
@ -295,6 +310,7 @@
|
|||||||
"music.setTempo|block": "set tempo to (bpm)|%value",
|
"music.setTempo|block": "set tempo to (bpm)|%value",
|
||||||
"music.tempo|block": "tempo (bpm)",
|
"music.tempo|block": "tempo (bpm)",
|
||||||
"music|block": "music",
|
"music|block": "music",
|
||||||
|
"parseInt|block": "parse to integer %text",
|
||||||
"pins.analogPitch|block": "analog pitch %frequency|for (ms) %ms",
|
"pins.analogPitch|block": "analog pitch %frequency|for (ms) %ms",
|
||||||
"pins.analogReadPin|block": "analog read|pin %name",
|
"pins.analogReadPin|block": "analog read|pin %name",
|
||||||
"pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros",
|
"pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros",
|
||||||
@ -333,13 +349,19 @@
|
|||||||
"{id:category}Array": "Array",
|
"{id:category}Array": "Array",
|
||||||
"{id:category}Arrays": "Arrays",
|
"{id:category}Arrays": "Arrays",
|
||||||
"{id:category}Basic": "Basic",
|
"{id:category}Basic": "Basic",
|
||||||
|
"{id:category}Boolean": "Boolean",
|
||||||
|
"{id:category}Buffer": "Buffer",
|
||||||
|
"{id:category}Console": "Console",
|
||||||
"{id:category}Control": "Control",
|
"{id:category}Control": "Control",
|
||||||
"{id:category}Game": "Game",
|
"{id:category}Game": "Game",
|
||||||
|
"{id:category}Helpers": "Helpers",
|
||||||
|
"{id:category}Image": "Image",
|
||||||
"{id:category}Images": "Images",
|
"{id:category}Images": "Images",
|
||||||
"{id:category}Input": "Input",
|
"{id:category}Input": "Input",
|
||||||
"{id:category}Led": "Led",
|
"{id:category}Led": "Led",
|
||||||
"{id:category}Math": "Math",
|
"{id:category}Math": "Math",
|
||||||
"{id:category}Music": "Music",
|
"{id:category}Music": "Music",
|
||||||
|
"{id:category}Number": "Number",
|
||||||
"{id:category}Pins": "Pins",
|
"{id:category}Pins": "Pins",
|
||||||
"{id:category}Serial": "Serial",
|
"{id:category}Serial": "Serial",
|
||||||
"{id:category}String": "String",
|
"{id:category}String": "String",
|
||||||
|
40
libs/core/enums.d.ts
vendored
@ -5,7 +5,7 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum Button {
|
declare const enum Button {
|
||||||
A = 1, // MICROBIT_ID_BUTTON_A
|
A = 1, // MICROBIT_ID_BUTTON_A
|
||||||
B = 2, // MICROBIT_ID_BUTTON_B
|
B = 2, // MICROBIT_ID_BUTTON_B
|
||||||
//% block="A+B"
|
//% block="A+B"
|
||||||
@ -13,7 +13,7 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum Dimension {
|
declare const enum Dimension {
|
||||||
//% block=x
|
//% block=x
|
||||||
X = 0,
|
X = 0,
|
||||||
//% block=y
|
//% block=y
|
||||||
@ -25,7 +25,7 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum Rotation {
|
declare const enum Rotation {
|
||||||
//% block=pitch
|
//% block=pitch
|
||||||
Pitch = 0,
|
Pitch = 0,
|
||||||
//% block=roll
|
//% block=roll
|
||||||
@ -33,14 +33,14 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum TouchPin {
|
declare const enum TouchPin {
|
||||||
P0 = 7, // MICROBIT_ID_IO_P0
|
P0 = 7, // MICROBIT_ID_IO_P0
|
||||||
P1 = 8, // MICROBIT_ID_IO_P1
|
P1 = 8, // MICROBIT_ID_IO_P1
|
||||||
P2 = 9, // MICROBIT_ID_IO_P2
|
P2 = 9, // MICROBIT_ID_IO_P2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum AcceleratorRange {
|
declare const enum AcceleratorRange {
|
||||||
/**
|
/**
|
||||||
* The accelerator measures forces up to 1 gravity
|
* The accelerator measures forces up to 1 gravity
|
||||||
*/
|
*/
|
||||||
@ -64,7 +64,7 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum Gesture {
|
declare const enum Gesture {
|
||||||
/**
|
/**
|
||||||
* Raised when shaken
|
* Raised when shaken
|
||||||
*/
|
*/
|
||||||
@ -123,7 +123,7 @@ declare namespace basic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum MesDpadButtonInfo {
|
declare const enum MesDpadButtonInfo {
|
||||||
//% block="A down"
|
//% block="A down"
|
||||||
ADown = 1, // MES_DPAD_BUTTON_A_DOWN
|
ADown = 1, // MES_DPAD_BUTTON_A_DOWN
|
||||||
//% block="A up"
|
//% block="A up"
|
||||||
@ -165,7 +165,7 @@ declare namespace input {
|
|||||||
* How to create the event.
|
* How to create the event.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare enum EventCreationMode {
|
declare const enum EventCreationMode {
|
||||||
/**
|
/**
|
||||||
* MicroBitEvent is initialised, and no further processing takes place.
|
* MicroBitEvent is initialised, and no further processing takes place.
|
||||||
*/
|
*/
|
||||||
@ -177,7 +177,7 @@ declare namespace input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum EventBusSource {
|
declare const enum EventBusSource {
|
||||||
//% blockIdentity="control.eventSourceId"
|
//% blockIdentity="control.eventSourceId"
|
||||||
MICROBIT_ID_BUTTON_A = 1, // MICROBIT_ID_BUTTON_A
|
MICROBIT_ID_BUTTON_A = 1, // MICROBIT_ID_BUTTON_A
|
||||||
//% blockIdentity="control.eventSourceId"
|
//% blockIdentity="control.eventSourceId"
|
||||||
@ -239,7 +239,7 @@ declare namespace input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum EventBusValue {
|
declare const enum EventBusValue {
|
||||||
//% blockIdentity="control.eventValueId"
|
//% blockIdentity="control.eventValueId"
|
||||||
MICROBIT_EVT_ANY = 0, // MICROBIT_EVT_ANY
|
MICROBIT_EVT_ANY = 0, // MICROBIT_EVT_ANY
|
||||||
//% blockIdentity="control.eventValueId"
|
//% blockIdentity="control.eventValueId"
|
||||||
@ -367,7 +367,7 @@ declare namespace control {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum DisplayMode {
|
declare const enum DisplayMode {
|
||||||
//% block="black and white"
|
//% block="black and white"
|
||||||
BackAndWhite = 0, // DISPLAY_MODE_BLACK_AND_WHITE
|
BackAndWhite = 0, // DISPLAY_MODE_BLACK_AND_WHITE
|
||||||
//% block="greyscale"
|
//% block="greyscale"
|
||||||
@ -378,7 +378,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum DigitalPin {
|
declare const enum DigitalPin {
|
||||||
P0 = 7, // MICROBIT_ID_IO_P0
|
P0 = 7, // MICROBIT_ID_IO_P0
|
||||||
P1 = 8, // MICROBIT_ID_IO_P1
|
P1 = 8, // MICROBIT_ID_IO_P1
|
||||||
P2 = 9, // MICROBIT_ID_IO_P2
|
P2 = 9, // MICROBIT_ID_IO_P2
|
||||||
@ -401,7 +401,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum AnalogPin {
|
declare const enum AnalogPin {
|
||||||
P0 = 7, // MICROBIT_ID_IO_P0
|
P0 = 7, // MICROBIT_ID_IO_P0
|
||||||
P1 = 8, // MICROBIT_ID_IO_P1
|
P1 = 8, // MICROBIT_ID_IO_P1
|
||||||
P2 = 9, // MICROBIT_ID_IO_P2
|
P2 = 9, // MICROBIT_ID_IO_P2
|
||||||
@ -437,7 +437,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum PulseValue {
|
declare const enum PulseValue {
|
||||||
//% block=high
|
//% block=high
|
||||||
High = 4, // MICROBIT_PIN_EVT_PULSE_HI
|
High = 4, // MICROBIT_PIN_EVT_PULSE_HI
|
||||||
//% block=low
|
//% block=low
|
||||||
@ -445,7 +445,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum PinPullMode {
|
declare const enum PinPullMode {
|
||||||
//% block="down"
|
//% block="down"
|
||||||
PullDown = 0,
|
PullDown = 0,
|
||||||
//% block="up"
|
//% block="up"
|
||||||
@ -455,7 +455,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum PinEventType {
|
declare const enum PinEventType {
|
||||||
//% block="edge"
|
//% block="edge"
|
||||||
Edge = 1, // MICROBIT_PIN_EVENT_ON_EDGE
|
Edge = 1, // MICROBIT_PIN_EVENT_ON_EDGE
|
||||||
//% block="pulse"
|
//% block="pulse"
|
||||||
@ -467,7 +467,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum SerialPin {
|
declare const enum SerialPin {
|
||||||
P0 = 7, // MICROBIT_ID_IO_P0
|
P0 = 7, // MICROBIT_ID_IO_P0
|
||||||
P1 = 8, // MICROBIT_ID_IO_P1
|
P1 = 8, // MICROBIT_ID_IO_P1
|
||||||
P2 = 9, // MICROBIT_ID_IO_P2
|
P2 = 9, // MICROBIT_ID_IO_P2
|
||||||
@ -480,7 +480,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum BaudRate {
|
declare const enum BaudRate {
|
||||||
//% block=115200
|
//% block=115200
|
||||||
BaudRate115200 = 115200,
|
BaudRate115200 = 115200,
|
||||||
//% block=57600
|
//% block=57600
|
||||||
@ -508,7 +508,7 @@ declare namespace led {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum Delimiters {
|
declare const enum Delimiters {
|
||||||
//% block="new line"
|
//% block="new line"
|
||||||
NewLine = 1,
|
NewLine = 1,
|
||||||
//% block=","
|
//% block=","
|
||||||
@ -526,7 +526,7 @@ declare namespace serial {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum NumberFormat {
|
declare const enum NumberFormat {
|
||||||
Int8LE = 1,
|
Int8LE = 1,
|
||||||
UInt8LE = 2,
|
UInt8LE = 2,
|
||||||
Int16LE = 3,
|
Int16LE = 3,
|
||||||
|
@ -35,6 +35,7 @@ namespace game {
|
|||||||
let _img: Image;
|
let _img: Image;
|
||||||
let _sprites: LedSprite[];
|
let _sprites: LedSprite[];
|
||||||
let _paused: boolean = false;
|
let _paused: boolean = false;
|
||||||
|
let _backgroundAnimation = false; // indicates if an auxiliary animation (and fiber) is already running
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new LED sprite pointing to the right.
|
* Creates a new LED sprite pointing to the right.
|
||||||
@ -68,7 +69,8 @@ namespace game {
|
|||||||
//% parts="ledmatrix"
|
//% parts="ledmatrix"
|
||||||
export function addScore(points: number): void {
|
export function addScore(points: number): void {
|
||||||
setScore(_score + points);
|
setScore(_score + points);
|
||||||
if (!_paused)
|
if (!_paused && !_backgroundAnimation) {
|
||||||
|
_backgroundAnimation = true;
|
||||||
control.inBackground(() => {
|
control.inBackground(() => {
|
||||||
led.stopAnimation();
|
led.stopAnimation();
|
||||||
basic.showAnimation(`0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0
|
basic.showAnimation(`0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0
|
||||||
@ -76,7 +78,9 @@ namespace game {
|
|||||||
0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0`, 20);
|
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0`, 20);
|
||||||
|
_backgroundAnimation = false;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,7 +120,6 @@ namespace game {
|
|||||||
unplugEvents();
|
unplugEvents();
|
||||||
led.stopAnimation();
|
led.stopAnimation();
|
||||||
led.setBrightness(255);
|
led.setBrightness(255);
|
||||||
led.setDisplayMode(DisplayMode.BackAndWhite);
|
|
||||||
while (true) {
|
while (true) {
|
||||||
for (let i = 0; i < 8; i++) {
|
for (let i = 0; i < 8; i++) {
|
||||||
basic.clearScreen();
|
basic.clearScreen();
|
||||||
@ -318,6 +321,10 @@ namespace game {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A game sprite rendered as a single LED
|
||||||
|
*/
|
||||||
|
//%
|
||||||
export class LedSprite {
|
export class LedSprite {
|
||||||
private _x: number;
|
private _x: number;
|
||||||
private _y: number;
|
private _y: number;
|
||||||
@ -731,22 +738,22 @@ namespace game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function init(): void {
|
function init(): void {
|
||||||
if (_img == null) {
|
if (_img) return;
|
||||||
_img = images.createImage(
|
const img = images.createImage(
|
||||||
`0 0 0 0 0
|
`0 0 0 0 0
|
||||||
0 0 0 0 0
|
0 0 0 0 0
|
||||||
0 0 0 0 0
|
0 0 0 0 0
|
||||||
0 0 0 0 0
|
0 0 0 0 0
|
||||||
0 0 0 0 0`);
|
0 0 0 0 0`);
|
||||||
_sprites = (<LedSprite[]>[]);
|
_sprites = (<LedSprite[]>[]);
|
||||||
basic.forever(() => {
|
basic.forever(() => {
|
||||||
basic.pause(30);
|
basic.pause(30);
|
||||||
plot();
|
plot();
|
||||||
if (game.isGameOver()) {
|
if (game.isGameOver()) {
|
||||||
basic.pause(600);
|
basic.pause(600);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
_img = img;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -754,19 +761,23 @@ namespace game {
|
|||||||
*/
|
*/
|
||||||
//% parts="ledmatrix"
|
//% parts="ledmatrix"
|
||||||
function plot(): void {
|
function plot(): void {
|
||||||
if (game.isGameOver() || game.isPaused() || !_img) {
|
if (game.isGameOver() || game.isPaused() || !_img || _backgroundAnimation) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// ensure greyscale mode
|
// ensure greyscale mode
|
||||||
if (led.displayMode() != DisplayMode.Greyscale)
|
const dm = led.displayMode();
|
||||||
|
if (dm != DisplayMode.Greyscale)
|
||||||
led.setDisplayMode(DisplayMode.Greyscale);
|
led.setDisplayMode(DisplayMode.Greyscale);
|
||||||
// render sprites
|
// render sprites
|
||||||
let now = input.runningTime();
|
const now = input.runningTime();
|
||||||
_img.clear();
|
_img.clear();
|
||||||
for (let i = 0; i < _sprites.length; i++) {
|
for (let i = 0; i < _sprites.length; i++) {
|
||||||
_sprites[i]._plot(now);
|
_sprites[i]._plot(now);
|
||||||
}
|
}
|
||||||
_img.plotImage(0);
|
_img.plotImage(0);
|
||||||
|
// restore previous display mode
|
||||||
|
if (dm != DisplayMode.Greyscale)
|
||||||
|
led.setDisplayMode(dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -274,6 +274,9 @@ namespace images {
|
|||||||
//% weight=50 blockGap=8
|
//% weight=50 blockGap=8
|
||||||
//% help=images/icon-image
|
//% help=images/icon-image
|
||||||
//% blockId=builtin_image block="icon image %i"
|
//% blockId=builtin_image block="icon image %i"
|
||||||
|
//% i.fieldEditor="gridpicker"
|
||||||
|
//% i.fieldOptions.width="400" i.fieldOptions.columns="5"
|
||||||
|
//% i.fieldOptions.itemColour="black" i.fieldOptions.tooltips="true"
|
||||||
export function iconImage(i: IconNames): Image {
|
export function iconImage(i: IconNames): Image {
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case IconNames.Heart: return images.createImage(`
|
case IconNames.Heart: return images.createImage(`
|
||||||
|
@ -339,13 +339,23 @@ namespace input {
|
|||||||
/**
|
/**
|
||||||
* Gets the number of milliseconds elapsed since power on.
|
* Gets the number of milliseconds elapsed since power on.
|
||||||
*/
|
*/
|
||||||
//% help=input/running-time weight=50
|
//% help=input/running-time weight=50 blockGap=8
|
||||||
//% blockId=device_get_running_time block="running time (ms)"
|
//% blockId=device_get_running_time block="running time (ms)"
|
||||||
//% advanced=true
|
//% advanced=true
|
||||||
int runningTime() {
|
int runningTime() {
|
||||||
return system_timer_current_time();
|
return system_timer_current_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the number of microseconds elapsed since power on.
|
||||||
|
*/
|
||||||
|
//% help=input/running-time-micros weight=49
|
||||||
|
//% blockId=device_get_running_time_micros block="running time (micros)"
|
||||||
|
//% advanced=true
|
||||||
|
int runningTimeMicros() {
|
||||||
|
return system_timer_current_time_us();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obsolete, compass calibration is automatic.
|
* Obsolete, compass calibration is automatic.
|
||||||
*/
|
*/
|
||||||
|
@ -429,6 +429,12 @@ namespace pins {
|
|||||||
*/
|
*/
|
||||||
//% help=pins/spi-pins weight=2 advanced=true
|
//% help=pins/spi-pins weight=2 advanced=true
|
||||||
//% blockId=spi_pins block="spi set pins|MOSI %mosi|MISO %miso|SCK %sck"
|
//% blockId=spi_pins block="spi set pins|MOSI %mosi|MISO %miso|SCK %sck"
|
||||||
|
//% mosi.fieldEditor="gridpicker" mosi.fieldOptions.columns=4
|
||||||
|
//% mosi.fieldOptions.tooltips="false" mosi.fieldOptions.width="300"
|
||||||
|
//% miso.fieldEditor="gridpicker" miso.fieldOptions.columns=4
|
||||||
|
//% miso.fieldOptions.tooltips="false" miso.fieldOptions.width="300"
|
||||||
|
//% sck.fieldEditor="gridpicker" sck.fieldOptions.columns=4
|
||||||
|
//% sck.fieldOptions.tooltips="false" sck.fieldOptions.width="300"
|
||||||
void spiPins(DigitalPin mosi, DigitalPin miso, DigitalPin sck) {
|
void spiPins(DigitalPin mosi, DigitalPin miso, DigitalPin sck) {
|
||||||
if (NULL != spi) {
|
if (NULL != spi) {
|
||||||
delete spi;
|
delete spi;
|
||||||
|
@ -394,10 +394,7 @@ namespace pxt {
|
|||||||
|
|
||||||
uint32_t RefCollection::removeAt(int i)
|
uint32_t RefCollection::removeAt(int i)
|
||||||
{
|
{
|
||||||
if (isRef())
|
// no decr() - we return the result
|
||||||
{
|
|
||||||
decr(head.get(i));
|
|
||||||
}
|
|
||||||
return head.remove(i);
|
return head.remove(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,7 +461,8 @@ namespace pxt {
|
|||||||
{
|
{
|
||||||
int idx = indexOf(x, 0);
|
int idx = indexOf(x, 0);
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
removeAt(idx);
|
uint32_t elt = removeAt(idx);
|
||||||
|
if (isRef()) decr(elt);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -160,6 +160,7 @@ namespace pxt {
|
|||||||
inline void unref()
|
inline void unref()
|
||||||
{
|
{
|
||||||
//printf("DECR "); this->print();
|
//printf("DECR "); this->print();
|
||||||
|
check(refcnt > 0, ERR_REF_DELETED);
|
||||||
refcnt -= 2;
|
refcnt -= 2;
|
||||||
if (refcnt == 0) {
|
if (refcnt == 0) {
|
||||||
destroy();
|
destroy();
|
||||||
|
@ -148,6 +148,10 @@ namespace serial {
|
|||||||
//% help=serial/redirect-to
|
//% help=serial/redirect-to
|
||||||
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
||||||
//% blockExternalInputs=1
|
//% blockExternalInputs=1
|
||||||
|
//% tx.fieldEditor="gridpicker" tx.fieldOptions.columns=3
|
||||||
|
//% tx.fieldOptions.tooltips="false"
|
||||||
|
//% rx.fieldEditor="gridpicker" rx.fieldOptions.columns=3
|
||||||
|
//% rx.fieldOptions.tooltips="false"
|
||||||
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
||||||
MicroBitPin* txp = getPin(tx); if (!tx) return;
|
MicroBitPin* txp = getPin(tx); if (!tx) return;
|
||||||
MicroBitPin* rxp = getPin(rx); if (!rx) return;
|
MicroBitPin* rxp = getPin(rx); if (!rx) return;
|
||||||
|
24
libs/core/shims.d.ts
vendored
@ -332,11 +332,19 @@ declare namespace input {
|
|||||||
/**
|
/**
|
||||||
* Gets the number of milliseconds elapsed since power on.
|
* Gets the number of milliseconds elapsed since power on.
|
||||||
*/
|
*/
|
||||||
//% help=input/running-time weight=50
|
//% help=input/running-time weight=50 blockGap=8
|
||||||
//% blockId=device_get_running_time block="running time (ms)"
|
//% blockId=device_get_running_time block="running time (ms)"
|
||||||
//% advanced=true shim=input::runningTime
|
//% advanced=true shim=input::runningTime
|
||||||
function runningTime(): number;
|
function runningTime(): number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the number of microseconds elapsed since power on.
|
||||||
|
*/
|
||||||
|
//% help=input/running-time-micros weight=49
|
||||||
|
//% blockId=device_get_running_time_micros block="running time (micros)"
|
||||||
|
//% advanced=true shim=input::runningTimeMicros
|
||||||
|
function runningTimeMicros(): number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obsolete, compass calibration is automatic.
|
* Obsolete, compass calibration is automatic.
|
||||||
*/
|
*/
|
||||||
@ -747,7 +755,13 @@ declare namespace pins {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
//% help=pins/spi-pins weight=2 advanced=true
|
//% help=pins/spi-pins weight=2 advanced=true
|
||||||
//% blockId=spi_pins block="spi set pins|MOSI %mosi|MISO %miso|SCK %sck" shim=pins::spiPins
|
//% blockId=spi_pins block="spi set pins|MOSI %mosi|MISO %miso|SCK %sck"
|
||||||
|
//% mosi.fieldEditor="gridpicker" mosi.fieldOptions.columns=4
|
||||||
|
//% mosi.fieldOptions.tooltips="false" mosi.fieldOptions.width="300"
|
||||||
|
//% miso.fieldEditor="gridpicker" miso.fieldOptions.columns=4
|
||||||
|
//% miso.fieldOptions.tooltips="false" miso.fieldOptions.width="300"
|
||||||
|
//% sck.fieldEditor="gridpicker" sck.fieldOptions.columns=4
|
||||||
|
//% sck.fieldOptions.tooltips="false" sck.fieldOptions.width="300" shim=pins::spiPins
|
||||||
function spiPins(mosi: DigitalPin, miso: DigitalPin, sck: DigitalPin): void;
|
function spiPins(mosi: DigitalPin, miso: DigitalPin, sck: DigitalPin): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -813,7 +827,11 @@ declare namespace serial {
|
|||||||
//% weight=10
|
//% weight=10
|
||||||
//% help=serial/redirect-to
|
//% help=serial/redirect-to
|
||||||
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
||||||
//% blockExternalInputs=1 shim=serial::redirect
|
//% blockExternalInputs=1
|
||||||
|
//% tx.fieldEditor="gridpicker" tx.fieldOptions.columns=3
|
||||||
|
//% tx.fieldOptions.tooltips="false"
|
||||||
|
//% rx.fieldEditor="gridpicker" rx.fieldOptions.columns=3
|
||||||
|
//% rx.fieldOptions.tooltips="false" shim=serial::redirect
|
||||||
function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
|
function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
libs/devices/enums.d.ts
vendored
@ -1,7 +1,7 @@
|
|||||||
// Auto-generated. Do not edit.
|
// Auto-generated. Do not edit.
|
||||||
|
|
||||||
|
|
||||||
declare enum MesCameraEvent {
|
declare const enum MesCameraEvent {
|
||||||
//% block="take photo"
|
//% block="take photo"
|
||||||
TakePhoto = 3, // MES_CAMERA_EVT_TAKE_PHOTO
|
TakePhoto = 3, // MES_CAMERA_EVT_TAKE_PHOTO
|
||||||
//% block="start video capture"
|
//% block="start video capture"
|
||||||
@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum MesAlertEvent {
|
declare const enum MesAlertEvent {
|
||||||
//% block="display toast"
|
//% block="display toast"
|
||||||
DisplayToast = 1, // MES_ALERT_EVT_DISPLAY_TOAST
|
DisplayToast = 1, // MES_ALERT_EVT_DISPLAY_TOAST
|
||||||
//% block="vibrate"
|
//% block="vibrate"
|
||||||
@ -47,7 +47,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum MesDeviceInfo {
|
declare const enum MesDeviceInfo {
|
||||||
//% block="incoming call"
|
//% block="incoming call"
|
||||||
IncomingCall = 7, // MES_DEVICE_INCOMING_CALL
|
IncomingCall = 7, // MES_DEVICE_INCOMING_CALL
|
||||||
//% block="incoming message"
|
//% block="incoming message"
|
||||||
@ -65,7 +65,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
declare enum MesRemoteControlEvent {
|
declare const enum MesRemoteControlEvent {
|
||||||
//% block="play"
|
//% block="play"
|
||||||
play = 1, // MES_REMOTE_CONTROL_EVT_PLAY
|
play = 1, // MES_REMOTE_CONTROL_EVT_PLAY
|
||||||
//% block="pause"
|
//% block="pause"
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"radio": "Communicate data using radio packets",
|
"radio": "Communicate data using radio packets",
|
||||||
|
"radio.Packet.receivedNumber": "The number payload if a number was sent in this packet (via ``sendNumber()`` or ``sendValue()``)\nor 0 if this packet did not contain a number.",
|
||||||
|
"radio.Packet.receivedString": "The string payload if a string was sent in this packet (via ``sendString()`` or ``sendValue()``)\nor the empty string if this packet did not contain a string.",
|
||||||
|
"radio.Packet.serial": "The serial number of the sender of the packet or 0 if the sender did not sent their serial number.",
|
||||||
|
"radio.Packet.signal": "The received signal strength indicator (RSSI) of the packet.",
|
||||||
|
"radio.Packet.time": "The system time of the sender of the packet at the time the packet was sent.",
|
||||||
"radio.onDataPacketReceived": "Registers code to run when the radio receives a packet. Also takes the\nreceived packet from the radio queue.",
|
"radio.onDataPacketReceived": "Registers code to run when the radio receives a packet. Also takes the\nreceived packet from the radio queue.",
|
||||||
"radio.onDataReceived": "Registers code to run when a packet is received over radio.",
|
"radio.onDataReceived": "Registers code to run when a packet is received over radio.",
|
||||||
"radio.receiveNumber": "Reads the next packet from the radio queue and returns the packet's number\npayload or 0 if the packet did not contain a number.",
|
"radio.receiveNumber": "Reads the next packet from the radio queue and returns the packet's number\npayload or 0 if the packet did not contain a number.",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pxt-microbit",
|
"name": "pxt-microbit",
|
||||||
"version": "0.13.22",
|
"version": "0.13.30",
|
||||||
"description": "micro:bit target for Microsoft MakeCode (PXT)",
|
"description": "micro:bit target for Microsoft MakeCode (PXT)",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"JavaScript",
|
"JavaScript",
|
||||||
@ -38,6 +38,6 @@
|
|||||||
"semantic-ui-less": "^2.2.4"
|
"semantic-ui-less": "^2.2.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pxt-core": "0.13.30"
|
"pxt-core": "0.14.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,14 @@
|
|||||||
"device_print_message.message": "text"
|
"device_print_message.message": "text"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"hidSelectors": [
|
||||||
|
{
|
||||||
|
"usagePage": "0xFF00",
|
||||||
|
"usageId": "0x0001",
|
||||||
|
"vid": "0x0d28",
|
||||||
|
"pid": "0x0204"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
|
295
pxtwapp/.gitignore
vendored
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
**/Properties/launchSettings.json
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/packages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/packages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/packages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Typescript v1 declaration files
|
||||||
|
typings/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush
|
||||||
|
.cr/
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
48
pxtwapp/pxtwapp.sln
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26430.15
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "pxtwapp", "pxtwapp\pxtwapp.jsproj", "{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|ARM = Release|ARM
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.Build.0 = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.Deploy.0 = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.Deploy.0 = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.ActiveCfg = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.Build.0 = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.Deploy.0 = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.Build.0 = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.Deploy.0 = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.Build.0 = Release|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.Deploy.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
BIN
pxtwapp/pxtwapp/images/SmallTile.scale-200.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
pxtwapp/pxtwapp/images/SplashScreen.scale-200.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
pxtwapp/pxtwapp/images/Square150x150Logo.scale-200.png
Normal file
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 3.4 KiB |
BIN
pxtwapp/pxtwapp/images/Square44x44Logo.scale-200.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
pxtwapp/pxtwapp/images/Square44x44Logo.targetsize-48.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
pxtwapp/pxtwapp/images/Wide310x150Logo.scale-200.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
pxtwapp/pxtwapp/images/logo.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
pxtwapp/pxtwapp/images/storelogo.scale-200.png
Normal file
After Width: | Height: | Size: 10 KiB |
40
pxtwapp/pxtwapp/msapp-error.css
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
body {
|
||||||
|
margin: 10px;
|
||||||
|
background-color: #4C4B4D;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: 'Open Sans', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paramName {
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paramValue {
|
||||||
|
font-size: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.param {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#retryButton {
|
||||||
|
box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset;
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
vertical-align: baseline;
|
||||||
|
padding: 0.78571429em 1.5em 0.78571429em;
|
||||||
|
text-transform: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 0.28571429rem;
|
||||||
|
background-color: #FB48C7;
|
||||||
|
margin: 15px 10px 100px 10px;
|
||||||
|
width: 80px;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
24
pxtwapp/pxtwapp/msapp-error.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Oops!</title>
|
||||||
|
<link href="msapp-error.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script src="msapp-error.js" type="text/javascript"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Oops! Please connect to the Internet.</h1>
|
||||||
|
<button id="retryButton">Retry</button>
|
||||||
|
<div id="failureUrl" class="param">
|
||||||
|
<span class="paramName">URL:</span>
|
||||||
|
<span id="failureUrlValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
<div id="httpStatus" class="param">
|
||||||
|
<span class="paramName">HTTP status:</span>
|
||||||
|
<span id="httpStatusValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
<div id="failureName">
|
||||||
|
<span class="paramName">Failure name:</span>
|
||||||
|
<span id="failureNameValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
47
pxtwapp/pxtwapp/msapp-error.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
(function () {
|
||||||
|
var validParameterNames = ["httpStatus", "failureName", "failureUrl"];
|
||||||
|
|
||||||
|
function parseQueryParameters() {
|
||||||
|
var query = location.search.slice(1);
|
||||||
|
return query.split("&").reduce(function (queryParameters, rawPair) {
|
||||||
|
var pair = rawPair.split("=").map(decodeURIComponent);
|
||||||
|
queryParameters[pair[0]] = pair[1];
|
||||||
|
return queryParameters;
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
var queryParameters = parseQueryParameters();
|
||||||
|
var url = queryParameters["failureUrl"];
|
||||||
|
var retryButton = document.getElementById("retryButton");
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
retryButton.addEventListener("click", (e) => {
|
||||||
|
window.location.href = url;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
retryButton.style.display = none;
|
||||||
|
}
|
||||||
|
|
||||||
|
validParameterNames.forEach(function (parameterName) {
|
||||||
|
var parameterValue = queryParameters[parameterName];
|
||||||
|
|
||||||
|
if (parameterValue) {
|
||||||
|
document.getElementById(parameterName + "Value").textContent = parameterValue;
|
||||||
|
} else {
|
||||||
|
document.getElementById(parameterName).remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateOnlineStatus(e) {
|
||||||
|
var queryParameters = parseQueryParameters();
|
||||||
|
var url = queryParameters["failureUrl"];
|
||||||
|
if (url) {
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("online", updateOnlineStatus);
|
||||||
|
document.addEventListener("DOMContentLoaded", initialize);
|
||||||
|
}());
|
60
pxtwapp/pxtwapp/package.appxmanifest
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" IgnorableNamespaces="uap uap3 mp">
|
||||||
|
<Identity Name="microsoft.makecode.microbit" Version="1.0.1.0" Publisher="CN=microbit" />
|
||||||
|
<mp:PhoneIdentity PhoneProductId="34e8cde2-3991-414e-bb19-bff4bd5e031a" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||||
|
<Properties>
|
||||||
|
<DisplayName>Microsoft MakeCode for micro:bit</DisplayName>
|
||||||
|
<PublisherDisplayName>micro:bit</PublisherDisplayName>
|
||||||
|
<Logo>images\storelogo.png</Logo>
|
||||||
|
</Properties>
|
||||||
|
<Dependencies>
|
||||||
|
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||||
|
</Dependencies>
|
||||||
|
<Resources>
|
||||||
|
<Resource Language="x-generate" />
|
||||||
|
</Resources>
|
||||||
|
<Applications>
|
||||||
|
<Application Id="App" StartPage="http://localhost:3232/index.html#nolocalhost=1">
|
||||||
|
<uap:ApplicationContentUriRules>
|
||||||
|
<uap:Rule Match="http://localhost:3232/*" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://makecode.microbit.org/" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://trg-microbit.userpxt.io/---simulator" Type="include" WindowsRuntimeAccess="none" />
|
||||||
|
<uap:Rule Match="https://makecode.microbit.com/beta" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://trg-microbit.userpxt.io/beta---simulator" Type="include" WindowsRuntimeAccess="none" />
|
||||||
|
</uap:ApplicationContentUriRules>
|
||||||
|
<uap:VisualElements DisplayName="Microsoft MakeCode for micro:bit" Description="Microsoft MakeCode for micro:bit" BackgroundColor="#BA0018" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
|
||||||
|
<uap:DefaultTile Wide310x150Logo="images\Wide310x150Logo.png" Square71x71Logo="images\SmallTile.png">
|
||||||
|
</uap:DefaultTile>
|
||||||
|
<uap:SplashScreen Image="images\SplashScreen.png" BackgroundColor="#BA0018" />
|
||||||
|
</uap:VisualElements>
|
||||||
|
<Extensions>
|
||||||
|
<uap:Extension Category="windows.fileTypeAssociation">
|
||||||
|
<uap:FileTypeAssociation Name="makecode">
|
||||||
|
<uap:DisplayName>Microsoft MakeCode binary file</uap:DisplayName>
|
||||||
|
<uap:SupportedFileTypes>
|
||||||
|
<uap:FileType ContentType="application/x-makecode-hex">.hex</uap:FileType>
|
||||||
|
</uap:SupportedFileTypes>
|
||||||
|
</uap:FileTypeAssociation>
|
||||||
|
</uap:Extension>
|
||||||
|
<uap3:Extension Category="windows.appUriHandler">
|
||||||
|
<uap3:AppUriHandler>
|
||||||
|
<uap3:Host Name="makecode.microbit.org" />
|
||||||
|
</uap3:AppUriHandler>
|
||||||
|
</uap3:Extension>
|
||||||
|
</Extensions>
|
||||||
|
</Application>
|
||||||
|
</Applications>
|
||||||
|
<Capabilities>
|
||||||
|
<Capability Name="internetClient" />
|
||||||
|
<DeviceCapability Name="serialcommunication">
|
||||||
|
<Device Id="any">
|
||||||
|
<Function Type="name:serialPort" />
|
||||||
|
</Device>
|
||||||
|
</DeviceCapability>
|
||||||
|
<DeviceCapability Name="humaninterfacedevice">
|
||||||
|
<Device Id="vidpid:0d28 0204">
|
||||||
|
<Function Type="usage:FF00 *" />
|
||||||
|
</Device>
|
||||||
|
</DeviceCapability>
|
||||||
|
</Capabilities>
|
||||||
|
</Package>
|
87
pxtwapp/pxtwapp/pxtwapp.jsproj
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|AnyCPU">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>AnyCPU</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x86">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|AnyCPU">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>AnyCPU</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x86">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>34e8cde2-3991-414e-bb19-bff4bd5e031a</ProjectGuid>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0'">
|
||||||
|
<VisualStudioVersion>14.0</VisualStudioVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
|
||||||
|
<TargetPlatformVersion>10.0.15063.0</TargetPlatformVersion>
|
||||||
|
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
|
||||||
|
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
|
||||||
|
<DefaultLanguage>en-US</DefaultLanguage>
|
||||||
|
<PackageCertificateKeyFile>pxtwapp_TemporaryKey.pfx</PackageCertificateKeyFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<AppxManifest Include="package.appxmanifest">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</AppxManifest>
|
||||||
|
<Content Include="images\logo.png" />
|
||||||
|
<Content Include="images\SmallTile.scale-200.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-48.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.targetsize-48.png" />
|
||||||
|
<Content Include="images\storelogo.scale-200.png" />
|
||||||
|
<Content Include="msapp-error.js" />
|
||||||
|
<Content Include="msapp-error.css" />
|
||||||
|
<Content Include="msapp-error.html" />
|
||||||
|
<Content Include="images\SplashScreen.scale-200.png" />
|
||||||
|
<Content Include="images\Square150x150Logo.scale-200.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.scale-200.png" />
|
||||||
|
<Content Include="images\Wide310x150Logo.scale-200.png" />
|
||||||
|
<None Include="pxtwapp_TemporaryKey.pfx" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below then uncomment
|
||||||
|
that target and the DisableFastUpToDateCheck PropertyGroup.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
<PropertyGroup>
|
||||||
|
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
|
||||||
|
</PropertyGroup>
|
||||||
|
-->
|
||||||
|
</Project>
|
@ -86,6 +86,10 @@ namespace pxsim.input {
|
|||||||
return runtime.runningTime();
|
return runtime.runningTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function runningTimeMicros(): number {
|
||||||
|
return runtime.runningTimeUs();
|
||||||
|
}
|
||||||
|
|
||||||
export function calibrateCompass() {
|
export function calibrateCompass() {
|
||||||
// device calibrates...
|
// device calibrates...
|
||||||
}
|
}
|
||||||
@ -189,13 +193,13 @@ namespace pxsim.bluetooth {
|
|||||||
export function startUartService(): void {
|
export function startUartService(): void {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
export function uartWrite(s: string): void {
|
export function uartWriteString(s: string): void {
|
||||||
serial.writeString(s)
|
serial.writeString(s)
|
||||||
}
|
}
|
||||||
export function uartReadUntil(del: string): string {
|
export function uartReadUntil(del: string): string {
|
||||||
return serial.readUntil(del);
|
return serial.readUntil(del);
|
||||||
}
|
}
|
||||||
export function onDataReceived(delimiters: string, handler: RefAction) {
|
export function onUartDataReceived(delimiters: string, handler: RefAction) {
|
||||||
let b = board();
|
let b = board();
|
||||||
b.bus.listen(DAL.MICROBIT_ID_BLE_UART, DAL.MICROBIT_UART_S_EVT_DELIM_MATCH, handler);
|
b.bus.listen(DAL.MICROBIT_ID_BLE_UART, DAL.MICROBIT_UART_S_EVT_DELIM_MATCH, handler);
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"languages": [
|
"languages": [
|
||||||
"de",
|
|
||||||
"en",
|
"en",
|
||||||
|
"de",
|
||||||
"fr",
|
"fr",
|
||||||
|
"ko",
|
||||||
|
"it",
|
||||||
"ja",
|
"ja",
|
||||||
"nl",
|
"nl",
|
||||||
"no",
|
"no",
|
||||||
|