Compare commits
164 Commits
Author | SHA1 | Date | |
---|---|---|---|
c9dde9d99f | |||
df5ec40bd7 | |||
ada5a5898b | |||
72d3cb64eb | |||
735cdc743c | |||
f8a5244146 | |||
b5c1acd363 | |||
29fc2c6681 | |||
a7534b0680 | |||
2a2f31d71c | |||
1ec778276d | |||
186ecb6493 | |||
623269e239 | |||
6264e32223 | |||
bc8b97faba | |||
df64034519 | |||
3ef7fe6a5a | |||
2b4d71ac8b | |||
aec1cf2ca6 | |||
d1d6abebb4 | |||
df04e9f0d1 | |||
a1b0b5153c | |||
00b4e8dc01 | |||
7a8f540b27 | |||
f04222fecb | |||
ede7c8b29b | |||
3dffd14abb | |||
fbf653834e | |||
166014bd92 | |||
3811461274 | |||
dbd3837dba | |||
db79634446 | |||
7f710c7d78 | |||
ce8bd38cb7 | |||
56dc85e6ff | |||
60f921c173 | |||
28fc309a64 | |||
e28cd3c3c6 | |||
4d2981489d | |||
f7f9a29e55 | |||
be88603d57 | |||
0dc9f53e30 | |||
9cb426e060 | |||
38c60710d1 | |||
5c62e5d697 | |||
63268c61a8 | |||
0c0c1cdd73 | |||
3d70526d05 | |||
cf1b85f85b | |||
1f7ad1f114 | |||
b1d8ab0206 | |||
8bfa79fd15 | |||
991aa40f19 | |||
279f72c800 | |||
2420a7c781 | |||
7f134f330d | |||
a91c28bd56 | |||
a5aca0dfcf | |||
b1fd48882c | |||
a34004c14a | |||
9db0335844 | |||
ae8cb2dc53 | |||
3fb21e590c | |||
4376d3cefe | |||
b31d6188f9 | |||
7a741622a9 | |||
a1104010e4 | |||
a39067a0f4 | |||
f2ccad6c26 | |||
8fe328b2e8 | |||
b984af2130 | |||
fcfcf901aa | |||
969ecee5b5 | |||
cd5e5d55bc | |||
7730b7c18f | |||
254a979086 | |||
a846685d26 | |||
1a7667724d | |||
1d49ba4cf0 | |||
70dd486320 | |||
9e60666b66 | |||
0de9102f96 | |||
53dd4206a0 | |||
9b2fdabdcc | |||
3af4d8cf18 | |||
9f2368b59e | |||
08f79ee743 | |||
5ec4a3118a | |||
352e59bfad | |||
143c703bf2 | |||
37eb855df6 | |||
47dac2a175 | |||
211ec7a65d | |||
d4220593b0 | |||
5d861e1e6d | |||
64aa0fd6f5 | |||
5be188d6e7 | |||
502cca6cc0 | |||
703a876a84 | |||
ca1e3e7231 | |||
a0e971d49f | |||
750faf42e4 | |||
b359411058 | |||
9c140a5e6f | |||
fad68499e5 | |||
c861fd6c65 | |||
db961f78a5 | |||
975b995f09 | |||
167ba57d2b | |||
d40c0763f1 | |||
8c2ecdd42e | |||
9d58ea8b1c | |||
22864af73d | |||
53bb4ec7e9 | |||
8e3694661a | |||
2ba1b0c262 | |||
a61e6f539e | |||
cc3c966427 | |||
ef5bee5a21 | |||
800682e8cc | |||
291ea7169f | |||
ef6c3a6617 | |||
734e81f4be | |||
8e1acfc7df | |||
01c56e1111 | |||
dfbf06fc0e | |||
d1902a83ca | |||
aeff3d9f45 | |||
6530bc26ae | |||
8ea9f1fb26 | |||
1e94e04104 | |||
e95d29286a | |||
14d50810cb | |||
250e21b5c9 | |||
98eab3672f | |||
360e2b7ba6 | |||
f255e1a903 | |||
d4762cc5b5 | |||
749b5266cb | |||
bbd23f6d26 | |||
4bef7d50bd | |||
bf423ca037 | |||
7556796eb6 | |||
0a380a70d1 | |||
5c57e0faa4 | |||
41abeb62c3 | |||
b6eeeef4d5 | |||
b5b7edb978 | |||
a65fe1343c | |||
3165fb3749 | |||
2789887f3b | |||
d230fdd2fb | |||
88c9ef5b22 | |||
154115cc66 | |||
145dbaeb8f | |||
1c8ceaef17 | |||
e30c6f7149 | |||
e69174ed0f | |||
303d37ac9b | |||
69e2b41c40 | |||
8f04c8c20a | |||
7661df09c8 | |||
62cbacc8ba | |||
a9fd336093 |
60
cmds/cmds.ts
@ -1,60 +0,0 @@
|
||||
/// <reference path="../node_modules/pxt-core/typings/node/node.d.ts"/>
|
||||
/// <reference path="../node_modules/pxt-core/built/pxtlib.d.ts" />
|
||||
|
||||
import * as fs from "fs";
|
||||
import * as path from "path";
|
||||
import * as child_process from "child_process";
|
||||
|
||||
let writeFileAsync: any = Promise.promisify(fs.writeFile)
|
||||
let execAsync: (cmd: string, options?: { cwd?: string }) => Promise<Buffer> = Promise.promisify(child_process.exec)
|
||||
let readDirAsync = Promise.promisify(fs.readdir)
|
||||
|
||||
|
||||
export function deployCoreAsync(res: ts.pxtc.CompileResult) {
|
||||
return getBitDrivesAsync()
|
||||
.then(drives => {
|
||||
if (drives.length == 0) {
|
||||
console.log("cannot find any drives to deploy to");
|
||||
return Promise.resolve(0);
|
||||
}
|
||||
|
||||
console.log(`copy ${ts.pxtc.BINARY_HEX} to ` + drives.join(", "));
|
||||
|
||||
let writeHexFile = (filename: string) => {
|
||||
return writeFileAsync(filename + ts.pxtc.BINARY_HEX, res.outfiles[ts.pxtc.BINARY_HEX])
|
||||
.then(() => console.log("wrote hex file to " + filename));
|
||||
};
|
||||
|
||||
return Promise.map(drives, d => writeHexFile(d))
|
||||
.then(() => drives.length);
|
||||
});
|
||||
}
|
||||
|
||||
function getBitDrivesAsync(): Promise<string[]> {
|
||||
if (process.platform == "win32") {
|
||||
const rx = new RegExp("^([A-Z]:).* " + pxt.appTarget.compile.deployDrives)
|
||||
return execAsync("wmic PATH Win32_LogicalDisk get DeviceID, VolumeName, FileSystem")
|
||||
.then(buf => {
|
||||
let res: string[] = []
|
||||
buf.toString("utf8").split(/\n/).forEach(ln => {
|
||||
let m = rx.exec(ln)
|
||||
if (m) {
|
||||
res.push(m[1] + "/")
|
||||
}
|
||||
})
|
||||
return res
|
||||
})
|
||||
}
|
||||
else if (process.platform == "darwin") {
|
||||
const rx = new RegExp(pxt.appTarget.compile.deployDrives)
|
||||
return readDirAsync("/Volumes")
|
||||
.then(lst => lst.filter(s => rx.test(s)).map(s => "/Volumes/" + s + "/"))
|
||||
} else if (process.platform == "linux") {
|
||||
const rx = new RegExp(pxt.appTarget.compile.deployDrives)
|
||||
const user = process.env["USER"]
|
||||
return readDirAsync(`/media/${user}`)
|
||||
.then(lst => lst.filter(s => rx.test(s)).map(s => `/media/${user}/${s}/`))
|
||||
} else {
|
||||
return Promise.resolve([])
|
||||
}
|
||||
}
|
@ -1,3 +1,6 @@
|
||||
/// <reference path="../node_modules/pxt-core/typings/globals/node/index.d.ts"/>
|
||||
/// <reference path="../node_modules/pxt-core/built/pxtlib.d.ts" />
|
||||
|
||||
import * as path from "path";
|
||||
export let pxtCore = require("pxt-core");
|
||||
// require.resolve() gives path to [pxt dir]/built/pxt.js, so move up twice to get pxt root dir
|
||||
|
@ -2,90 +2,4 @@
|
||||
|
||||
# About
|
||||
|
||||
### @description A Blocks / Javascript code editor for the micro:bit, a pocket-size computer with 5x5 display, sensors and Bluetooth.
|
||||
|
||||
The [BBC micro:bit](https://www.microbit.co.uk) is a [pocket-size computer](/device) with a 5x5 display of 25 LEDs, Bluetooth and sensors that can be programmed by anyone.
|
||||
The BBC micro:bit was made possible by many [partners](https://www.microbit.co.uk/partners).
|
||||
|
||||
The micro:bit provides an easy and fun introduction to programming and making – switch on, program it to do something fun – wear it, customize it.
|
||||
Just like Arduino, the micro:bit can be connected to and interact with sensors, displays, and other devices.
|
||||
|
||||
* [Read the docs](/docs)
|
||||
|
||||
## [Hardware: The Device](/device)
|
||||
|
||||
The BBC micro:bit is packaged with sensors, radio and other goodies. Learn about the [hardware components](/device) of the micro:bit to make the most of it!
|
||||
|
||||
## Programming: [Blocks](/blocks) or [JavaScript](/javascript)
|
||||
|
||||
You can program the micro:bit using [Blocks](/blocks) or [JavaScript](/javascript) in your web browser via the [micro:bit APIs](/reference):
|
||||
|
||||
```block
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showString("Hi!");
|
||||
})
|
||||
```
|
||||
```typescript
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showString("Hi!");
|
||||
})
|
||||
```
|
||||
|
||||
The editor work in [most modern browsers](/browsers), work [offline](/offline) once loaded and do not require any installation.
|
||||
|
||||
## [Compile and Flash: Your Program!](/device/usb)
|
||||
|
||||
When you have your code ready, you connect your micro:bit to a computer via a USB cable, so it appears as a mounted drive (named MICROBIT).
|
||||
|
||||
Compilation to ARM thumb machine code from [Blocks](/blocks) or [JavaScript](/javascript) happens in the browser. You save the ARM binary
|
||||
program to a file, which you then copy to the micro:bit drive, which flashes the micro:bit device with the new program.
|
||||
|
||||
## Simulator: Test Your Code
|
||||
|
||||
You can run your code using the micro:bit simulator, all within the confines of a web browser.
|
||||
The simulator has support for the LED screen, buttons, as well as compass, accelerometer, and digital I/O pins.
|
||||
|
||||
```sim
|
||||
basic.forever(() => {
|
||||
basic.showString("Hi!");
|
||||
})
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
led.stopAnimation();
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .`);
|
||||
});
|
||||
input.onButtonPressed(Button.B, () => {
|
||||
led.stopAnimation();
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
# . # . #
|
||||
# . . . #
|
||||
. # . # .
|
||||
. . # . .`);
|
||||
});
|
||||
```
|
||||
|
||||
## C++ Runtime
|
||||
|
||||
The [C++ micro:bit runtime](http://lancaster-university.github.io/microbit-docs/), created at [Lancaster University](http://www.lancaster.ac.uk/), provides access to the hardware functions of the micro:bit,
|
||||
as well as a set of helper functions (such as displaying a number/image/string on the LED screen).
|
||||
|
||||
The [micro:bit library](/reference) mirrors the functions of the C++ library.
|
||||
When code is compiled to ARM machine code, the calls to JavaScript micro:bit functions are replaced with calls to the corresponding C++ functions.
|
||||
|
||||
## [Command Line Tools](/cli)
|
||||
|
||||
Looking to use pxt.microbit.org in your favorite editor? Install the [command line tools](/cli) and get rolling!
|
||||
|
||||
## [Packages](/packages)
|
||||
|
||||
Create, edit and distribute your own blocks and JavaScript using [packages](/packages). Packages are hosted on GitHub and may be written
|
||||
using C++, JavaScript and/or ARM thumb.
|
||||
|
||||
## [Open Source](/open-source)
|
||||
|
||||
The code for the micro:bit is [open source](/open-source) on GitHub. Contributors are welcome!
|
||||
Read more at https://calliope.cc .
|
18
docs/docs.md
@ -2,12 +2,6 @@
|
||||
|
||||
### @description Links to the documentation, reference and projects.
|
||||
|
||||
### Things to do
|
||||
|
||||
* **[Getting Started](/getting-started)**
|
||||
* [Projects](/projects)
|
||||
* [Lessons](/lessons)
|
||||
|
||||
### @boardname@ reference
|
||||
|
||||
* [The @boardname@ APIs](/reference)
|
||||
@ -17,15 +11,3 @@
|
||||
|
||||
* [Blocks language](/blocks)
|
||||
* [JavaScript language](/javascript)
|
||||
|
||||
### More questions?
|
||||
|
||||
* [Frequently Asked Question](/faq)
|
||||
* [Help Translate](/translate)
|
||||
* [Embedding project](/share)
|
||||
|
||||
### Developers
|
||||
|
||||
* [Command Line Interface](/cli)
|
||||
* Learn about [packages](/packages)
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"appref": "v0.5.89"
|
||||
"appref": "v0.8.21"
|
||||
}
|
||||
|
30
docs/reference/pins/set-events.md
Normal file
@ -0,0 +1,30 @@
|
||||
# Set Events
|
||||
|
||||
Configure the type of events emitted by a given pin.
|
||||
|
||||
```sig
|
||||
pins.setEvents(DigitalPin.P0, PinEventType.Edge);
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
* ``name``: The @boardname@ hardware pin to configure (``P0`` through ``P20``)
|
||||
* ``type``: The type of events this pin should emit
|
||||
|
||||
### Example
|
||||
|
||||
The following example configures pin ``P0`` and then
|
||||
subscribes to the rise and fall events.
|
||||
|
||||
```blocks
|
||||
control.onEvent(control.eventSourceId(EventBusSource.MICROBIT_ID_IO_P0), control.eventValueId(EventBusValue.MICROBIT_PIN_EVT_RISE), () => {
|
||||
basic.showString("Rise")
|
||||
})
|
||||
control.onEvent(control.eventSourceId(EventBusSource.MICROBIT_ID_IO_P0), control.eventValueId(EventBusValue.MICROBIT_PIN_EVT_FALL), () => {
|
||||
basic.showString("Fall")
|
||||
})
|
||||
pins.setEvents(DigitalPin.P0, PinEventType.Edge)
|
||||
```
|
||||
|
||||
**This is an advanced API.** For more information, see the
|
||||
[@boardname@ runtime messageBus documentation](https://lancaster-university.github.io/microbit-docs/ubit/messageBus/)
|
@ -7,8 +7,11 @@ serial.writeLine("");
|
||||
serial.writeNumber(0);
|
||||
serial.writeValue("x", 0);
|
||||
serial.writeString("");
|
||||
serial.readUntil(",");
|
||||
serial.readLine();
|
||||
serial.readString();
|
||||
serial.redirect(SerialPin.P0, SerialPin.P0, BaudRate.BaudRate115200);
|
||||
serial.onDataReceived(",", () => {})
|
||||
```
|
||||
|
||||
### See Also
|
||||
|
29
docs/reference/serial/on-data-received.md
Normal file
@ -0,0 +1,29 @@
|
||||
# Serial On Data Received
|
||||
|
||||
Registers an event to be fired when one of the delimiter is matched.
|
||||
|
||||
|
||||
```sig
|
||||
serial.onDataReceived(",", () => {})
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
* `delimiters` is a [string](/reference/types/string) containing any of the character to match
|
||||
|
||||
### Example
|
||||
|
||||
Read values separated by `,`:
|
||||
|
||||
```blocks
|
||||
serial.onDataReceived(serial.delimiters(Delimiters.Comma), () => {
|
||||
basic.showString(serial.readUntil(serial.delimiters(Delimiters.Comma)))
|
||||
})
|
||||
```
|
||||
|
||||
### See also
|
||||
|
||||
[serial](/device/serial),
|
||||
[serial write line](/reference/serial/write-line),
|
||||
[serial write value](/reference/serial/write-value)
|
||||
|
27
docs/reference/serial/read-string.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Serial Read String
|
||||
|
||||
Read the buffered serial data as a string
|
||||
|
||||
```sig
|
||||
serial.readString();
|
||||
```
|
||||
|
||||
### Returns
|
||||
|
||||
* a [string](/reference/types/string) containing input from the serial port. Empty if no data available.
|
||||
|
||||
### Example
|
||||
|
||||
The following program scrolls text on the screen as it arrives from serial.
|
||||
|
||||
```blocks
|
||||
basic.forever(() => {
|
||||
basic.showString(serial.readString());
|
||||
});
|
||||
```
|
||||
|
||||
### See also
|
||||
|
||||
[serial](/device/serial),
|
||||
[serial write line](/reference/serial/write-line),
|
||||
[serial write value](/reference/serial/write-value)
|
616
docs/static/Calliope_mini_v1.0.svg
vendored
Normal file
@ -0,0 +1,616 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="530px" height="530px" viewBox="0 0 530 530" enable-background="new 0 0 530 530" xml:space="preserve">
|
||||
<path fill="#034854" d="M520.5,298.5c-18.2,0-32.9-14.7-32.9-32.9s14.7-32.9,32.9-32.9c0.6,0,1.3,0,1.9,0.1
|
||||
c-19.4-9-44.4-27.4-72.1-63.3c-28.8-37.8-28.6-84.7-25.8-115c0.2-2.3,0.4-4.5,0.7-6.6c1.5-14.7-7.2-28.6-21.3-33.6l-1.1-0.4
|
||||
c-9.5-3.4-20.1-2-28.4,3.9c-1.4,1-2.9,2-4.5,3.1c-22.1,14.8-62.8,37.6-104.6,37.6c-39.2,0-80.1-22.2-104.7-38.3
|
||||
c5.7,5.9,9.3,14,9.3,22.9c0,18.2-14.7,32.9-32.9,32.9c-12.4,0-23.2-6.9-28.8-17c2.3,27.8-0.7,71.6-26.4,109.2
|
||||
C60.1,199.2,27,220.2,3.3,232.3c2-0.4,4.1-0.6,6.2-0.6c18.2,0,33,14.4,32.9,32.8c0,18.2-14.7,32.9-32.9,32.9c-2,0-4-0.2-5.9-0.5
|
||||
c17.2,5.6,37.6,16.2,71.3,56.2c34.4,40.4,35.9,94.5,32.3,124.1c-1.8,13.7,1.6,27.9,12.5,36.3c10.4,8.1,28.8,5.4,39.5-2.5
|
||||
c12.4-9.3,25.8-18.2,39.5-24.5c15.5-7.2,30.1-11.1,39.6-11.8c5-0.5,9.8-2.3,11.4-7.1c2-5.7,6.2-12.7,15.9-12.7
|
||||
c9.3,0,13.8,6.4,15.9,12c1.6,4.3,5.4,7.3,10,7.7c6.6,0.5,18.4,3.2,39.3,11.2c17,6.6,29.6,16.2,40.2,23.2
|
||||
c18.4,11.8,32.1,8.8,41.4,2.9c8.3-5.2,12.7-14.9,11.4-24.8c-3.1-22-5.8-73,22-121.1c21.5-36.7,54.4-56.1,77.5-67.5
|
||||
C522.3,298.5,521.4,298.5,520.5,298.5z M138,502.8c-8.7,0-15.7-7-15.7-15.7s7-15.7,15.7-15.7s15.7,7,15.7,15.7
|
||||
S146.6,502.8,138,502.8z M393.4,501.5c-8.7,0-15.7-7-15.7-15.7c0-8.7,7-15.7,15.7-15.7s15.7,7,15.7,15.7
|
||||
C409.1,494.5,402.1,501.5,393.4,501.5z M393.4,59.2c-8.6,0-15.7-6.9-15.7-15.7c0-8.8,6.9-15.7,15.7-15.7c8.8,0,15.7,6.9,15.7,15.7
|
||||
C409.1,52.3,401.9,59.2,393.4,59.2z"/>
|
||||
<path id="EDGE_VCC" fill="#EFDA48" d="M393.4,10.8c-9.2,0-17.6,3.8-23.6,9.9c-5.8,5.9-9.3,14-9.3,22.9c0,18.2,14.7,32.9,32.9,32.9
|
||||
c14.4,0,26.6-9.3,31.1-22.1c1.2-3.4,1.8-7,1.8-10.8C426.3,25.5,411.5,10.8,393.4,10.8z M393.4,59.2c-8.6,0-15.7-6.9-15.7-15.7
|
||||
c0-8.8,6.9-15.7,15.7-15.7c8.8,0,15.7,6.9,15.7,15.7C409.1,52.3,401.9,59.2,393.4,59.2z"/>
|
||||
<path fill="#BDD1CF" d="M286.9,94h-41.7c-1.7,0-2.8-1.1-2.8-2.8v-32c0-1.7,1.1-2.8,2.8-2.8h41.7c1.7,0,2.8,1.1,2.8,2.8v32
|
||||
C289.7,92.8,288.3,94,286.9,94z"/>
|
||||
<path id="EXT_PWR" fill="#F2F2C8" d="M449.4,343l-37-15.7c-0.3-0.1-0.7-0.2-1.1-0.2l-15.9-6.7l-3,7.4l13.5,5.6l-15.7,37.4l-13.6-5.8
|
||||
l-3,7.4l22.5,9.8l0.1-0.2l31.3,13.2c1.9,0.7,4.1,0,4.7-1.9l19.2-45.7C452,345.8,451.3,343.7,449.4,343z"/>
|
||||
<polygon fill="#F8B133" points="354,361 326.3,361 326.3,311.2 354,311.2 "/>
|
||||
<polygon fill="#1D1D1B" points="190.7,364.4 162.5,336.2 190.7,308 218.9,336.2 "/>
|
||||
<polygon fill="#FFFFFF" points="184.6,379.7 165.5,379.6 165.5,362.4 184.6,362.6 "/>
|
||||
<rect id="ACCEL" x="132.3" y="241.8" fill="#1D1D1B" width="23.8" height="14.4"/>
|
||||
<path fill="#BDD1CF" d="M326.6,84.1h-10.3c-1,0-2-0.9-2-2V66.9c0-1,0.9-2,2-2h10.3c1,0,2,0.9,2,2v15.2
|
||||
C328.4,83.2,327.6,84.1,326.6,84.1z"/>
|
||||
<path fill="#FFFFFF" d="M325.9,74.5c0-3.2-0.3-8.4-4.6-8.4c-5.1,0-4.6,5-4.6,8.4c0,3.2-0.2,8.4,4.6,8.4
|
||||
C326.6,82.9,325.9,77.6,325.9,74.5z"/>
|
||||
<rect id="FLASH" x="350" y="90" fill="#1D1D1B" width="25.3" height="30.8"/>
|
||||
<rect id="G_A0" x="80.5" y="144.4" transform="matrix(-0.5687 0.8226 -0.8226 -0.5687 301.6608 150.839)" fill="#FFFFFF" width="61.5" height="20.3"/>
|
||||
<circle id="G_A0_GND" fill="#BDD1CF" cx="124.8" cy="135.6" r="2.7"/>
|
||||
<circle id="G_A0_VCC" fill="#BDD1CF" cx="115.6" cy="148.2" r="2.7"/>
|
||||
<circle id="G_A0_SDA" fill="#BDD1CF" cx="107.4" cy="160" r="2.7"/>
|
||||
<circle id="G_A0_SCL" fill="#BDD1CF" cx="98" cy="173.5" r="2.7"/>
|
||||
<rect id="G_A1" x="412.2" y="123.3" transform="matrix(-0.8226 0.5687 -0.5687 -0.8226 857.3843 40.5361)" fill="#FFFFFF" width="20.3" height="61.5"/>
|
||||
<circle id="G_A1_RX" fill="#BDD1CF" cx="408.9" cy="135.2" r="2.7"/>
|
||||
<circle id="G_A1_TX" fill="#BDD1CF" cx="418.2" cy="147.7" r="2.7"/>
|
||||
<circle id="G_A1_VCC" fill="#BDD1CF" cx="426.5" cy="159.6" r="2.7"/>
|
||||
<circle id="G_A1_GND" fill="#BDD1CF" cx="435.7" cy="173" r="2.7"/>
|
||||
<path fill="#FFFFFF" d="M116.6,194.9l-37.7,13.2l9.6,30.1l39.3-14.2c7.3-2.3,9.6-9.1,7.3-16.4l-1.3-3.8
|
||||
C131.6,196.8,123.8,192.6,116.6,194.9z M131.6,216.4h-5.8v-2.1l1.3-0.2l-0.7-2.3h-5.7l-0.7,2.3l1.3,0.2v2.1h-5.8v-2.1l1.3-0.2
|
||||
l5.3-14.9h3.6l5.1,14.9l1.3,0.2L131.6,216.4L131.6,216.4z"/>
|
||||
<path fill="#FFFFFF" d="M411.7,193c-7.6-2.1-15.2,2.8-17.4,10.1l-1,3.8c-2.1,7.3,2.1,14.9,9.4,17.1l40,12.8l8.9-30.6L411.7,193z
|
||||
M413.1,215.1c-1,0.9-2.7,1.3-4.6,1.3H400v-2.1l1.8-0.3v-12.4l-1.8-0.3v-2.1h1.8h5.8c2,0,3.6,0.3,4.8,1.3c1,0.7,1.8,2,1.8,3.6
|
||||
c0,0.7-0.2,1.6-0.7,2.1c-0.3,0.7-1,1-1.8,1.5c1,0.2,1.8,0.7,2.3,1.5c0.5,0.7,0.7,1.6,0.7,2.5C414.7,213,414.2,214.1,413.1,215.1z"/>
|
||||
<polygon fill="#FFFFFF" points="122.8,202.8 120.9,208.8 124.8,208.8 "/>
|
||||
<path fill="#FFFFFF" d="M410.1,204.8c0.3-0.3,0.5-0.7,0.5-1.3c0-0.7-0.2-1-0.5-1.5c-0.3-0.3-0.9-0.3-1.8-0.3h-3v3.6h3.2
|
||||
C409.2,205.4,409.8,205.2,410.1,204.8z"/>
|
||||
<path fill="#FFFFFF" d="M408.5,208.7h-3.3v5h3.2c0.9,0,1.6-0.2,2.1-0.5c0.5-0.3,0.7-1,0.7-1.8c0-0.9-0.2-1.5-0.5-2
|
||||
C410.2,208.8,409.6,208.7,408.5,208.7z"/>
|
||||
<rect x="75.5" y="190.3" transform="matrix(-0.4514 0.8923 -0.8923 -0.4514 290.9554 206.6756)" fill="#F9EBA7" width="12.8" height="5"/>
|
||||
<rect x="100" y="202.6" transform="matrix(-0.4514 0.8923 -0.8923 -0.4514 337.565 202.7501)" fill="#F9EBA7" width="12.8" height="5"/>
|
||||
<rect x="53.5" y="233.5" transform="matrix(-0.4514 0.8923 -0.8923 -0.4514 297.6011 288.9738)" fill="#F9EBA7" width="12.8" height="5"/>
|
||||
<rect x="78.2" y="245.9" transform="matrix(-0.4514 0.8923 -0.8923 -0.4514 344.3886 285.0334)" fill="#F9EBA7" width="12.8" height="5"/>
|
||||
<path id="BTN_A_BOX" fill="#BDD1CF" d="M90.1,244.3l-29.7-15.1c-0.9-0.5-1.3-1.6-0.9-2.7l15.1-30.1c0.5-0.9,1.6-1.3,2.7-0.9
|
||||
l29.7,15.1c0.9,0.5,1.3,1.6,0.9,2.7l-15.1,30.2C92.2,244.3,91,244.8,90.1,244.3z"/>
|
||||
<circle id="BTN_A" fill="#42767F" cx="83.8" cy="220" r="11.6"/>
|
||||
<circle fill="#1D1D1B" cx="77.7" cy="201.5" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="102.1" cy="214" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="65.3" cy="225.8" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="89.8" cy="238.3" r="3.9"/>
|
||||
<rect x="423.2" y="198.5" transform="matrix(-0.8998 0.4362 -0.4362 -0.8998 898.2063 203.5292)" fill="#F9EBA7" width="5" height="12.8"/>
|
||||
<rect x="447.9" y="186.5" transform="matrix(-0.8998 0.4362 -0.4362 -0.8998 939.8604 170.0185)" fill="#F9EBA7" width="5" height="12.8"/>
|
||||
<rect x="444.3" y="242.1" transform="matrix(-0.8998 0.4362 -0.4362 -0.8998 957.366 277.2607)" fill="#F9EBA7" width="5" height="12.8"/>
|
||||
<rect x="469" y="230" transform="matrix(-0.8998 0.4362 -0.4362 -0.8998 998.9489 243.5197)" fill="#F9EBA7" width="5" height="12.8"/>
|
||||
<path id="BTN_B_BOX" fill="#BDD1CF" d="M471.6,229.7l-30.1,14.6c-0.9,0.5-2.1,0-2.5-0.9l-14.7-30.3c-0.5-0.9,0-2.1,0.9-2.5
|
||||
l30.1-14.6c0.9-0.5,2.1,0,2.5,0.9l14.7,30.3C473.1,227.9,472.8,229.2,471.6,229.7z"/>
|
||||
<circle id="BTN_B" fill="#BC1254" cx="448.5" cy="220" r="11.6"/>
|
||||
<circle fill="#1D1D1B" cx="430" cy="213.5" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="454.8" cy="201.6" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="442" cy="238.3" r="3.9"/>
|
||||
<circle fill="#1D1D1B" cx="466.8" cy="226.2" r="3.9"/>
|
||||
<polygon fill="#FFFFFF" points="139,280.5 123.8,280.5 123.8,278.8 138.4,278.8 139.4,277.4 139.4,255.8 141.4,255.8 141.4,278.3
|
||||
"/>
|
||||
<polygon fill="#FFFFFF" points="265.5,108.8 258.6,108.8 258.6,106.9 264.6,106.9 265.9,105.7 265.9,95.9 267.6,95.9 267.6,106.5
|
||||
"/>
|
||||
<polygon fill="#FFFFFF" points="339.1,73.8 328.1,73.8 328.1,75.7 338.5,75.7 339.6,76.8 339.6,100.9 338.5,102.2 337.3,102.2
|
||||
337.3,104 339.1,104 341.5,101.7 341.5,76.1 "/>
|
||||
<polygon fill="#FFFFFF" points="305.8,322.6 277.3,322.6 277.3,320.9 305.2,320.9 306.4,319.6 306.4,301.2 305.2,300 302,300
|
||||
302,298.2 305.8,298.2 308.2,300.6 308.2,320.6 "/>
|
||||
<polygon fill="#FFFFFF" points="412.1,279.8 367.8,279.8 367.8,277.9 412.3,277.9 "/>
|
||||
<polygon fill="#FFFFFF" points="201.2,352.9 222.7,374.6 228.9,374.6 228.9,372.8 223.5,372.8 202.4,351.6 "/>
|
||||
<polygon fill="#FFFFFF" points="406.3,386.2 390.3,402.3 368.3,402.5 368.3,400.7 389.6,400.7 404.3,385.5 "/>
|
||||
<path id="C_GND1" fill="#EFDA48" d="M165.3,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C170.3,436.8,167.9,434.6,165.3,434.6z M165.3,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.5,0,2.5,1,2.5,2.5
|
||||
S166.6,441.9,165.3,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="165.3" cy="439.6" r="2.5"/>
|
||||
<path id="C_P0" fill="#EFDA48" d="M182.2,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C187.5,436.8,185.1,434.6,182.2,434.6z M182.2,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S183.6,441.9,182.2,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="182.2" cy="439.6" r="2.5"/>
|
||||
<path id="C_P2" fill="#EFDA48" d="M199.3,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C204.5,436.8,202.2,434.6,199.3,434.6z M199.3,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S200.7,441.9,199.3,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="199.3" cy="439.6" r="2.5"/>
|
||||
<path id="C_P4" fill="#EFDA48" d="M216.4,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C221.4,436.8,219.3,434.6,216.4,434.6z M216.4,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S217.6,441.9,216.4,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="216.4" cy="439.6" r="2.5"/>
|
||||
<path id="C_P6" fill="#EFDA48" d="M233.5,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C238.3,436.8,236.1,434.6,233.5,434.6z M233.5,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.5,0,2.5,1,2.5,2.5
|
||||
S234.7,441.9,233.5,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="233.5" cy="439.6" r="2.5"/>
|
||||
<path id="C_P8" fill="#EFDA48" d="M250.3,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C255.5,436.8,253.3,434.6,250.3,434.6z M250.3,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S251.8,441.9,250.3,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="250.3" cy="439.6" r="2.5"/>
|
||||
<path id="C_GND2" fill="#EFDA48" d="M267.5,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C272.6,436.8,270.2,434.6,267.5,434.6z M267.5,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S268.9,441.9,267.5,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="267.5" cy="439.6" r="2.5"/>
|
||||
<path id="C_P10" fill="#EFDA48" d="M284.6,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C289.7,436.8,287.4,434.6,284.6,434.6z M284.6,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S285.8,441.9,284.6,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="284.6" cy="439.6" r="2.5"/>
|
||||
<path id="C_P12" fill="#EFDA48" d="M301.5,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C306.6,436.8,304.4,434.6,301.5,434.6z M301.5,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S302.9,441.9,301.5,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="301.5" cy="439.6" r="2.5"/>
|
||||
<path id="C_P14" fill="#EFDA48" d="M318.7,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C323.5,436.8,321.3,434.6,318.7,434.6z M318.7,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5S320,441.9,318.7,441.9
|
||||
z"/>
|
||||
<circle fill="#1D1D1B" cx="318.7" cy="439.6" r="2.5"/>
|
||||
<path id="C_P16" fill="#EFDA48" d="M335.4,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C340.7,436.8,338.5,434.6,335.4,434.6z M335.4,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5S337,441.9,335.4,441.9
|
||||
z"/>
|
||||
<circle fill="#1D1D1B" cx="335.4" cy="439.6" r="2.5"/>
|
||||
<path id="C_P18" fill="#EFDA48" d="M352.7,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C357.8,436.8,355.5,434.6,352.7,434.6z M352.7,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S354.1,441.9,352.7,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="352.7" cy="439.6" r="2.5"/>
|
||||
<path id="C_VCC1" fill="#EFDA48" d="M369.7,434.6c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C374.6,436.8,372.5,434.6,369.7,434.6z M369.7,441.9c-1.3,0-2.5-1-2.5-2.5s1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
S370.9,441.9,369.7,441.9z"/>
|
||||
<circle fill="#1D1D1B" cx="369.7" cy="439.6" r="2.5"/>
|
||||
<path id="C_VCC2" fill="#EFDA48" d="M165.3,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C170.4,419.7,167.9,417.4,165.3,417.4z M165.3,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.5,0,2.5,1,2.5,2.5
|
||||
C167.7,424,166.6,425,165.3,425z"/>
|
||||
<circle fill="#1D1D1B" cx="165.3" cy="422.4" r="2.5"/>
|
||||
<path id="C_P1" fill="#EFDA48" d="M182.2,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C187.4,419.7,185.1,417.4,182.2,417.4z M182.2,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C184.7,424,183.6,425,182.2,425z"/>
|
||||
<circle fill="#1D1D1B" cx="182.2" cy="422.4" r="2.5"/>
|
||||
<path id="C_P3" fill="#EFDA48" d="M199.3,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C204.4,419.7,202.2,417.4,199.3,417.4z M199.3,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C201.9,424,200.7,425,199.3,425z"/>
|
||||
<circle fill="#1D1D1B" cx="199.3" cy="422.4" r="2.5"/>
|
||||
<path id="C_P5" fill="#EFDA48" d="M216.4,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C221.5,419.7,219.3,417.4,216.4,417.4z M216.4,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C218.7,424,217.6,425,216.4,425z"/>
|
||||
<circle fill="#1D1D1B" cx="216.4" cy="422.4" r="2.5"/>
|
||||
<path id="C_P7" fill="#EFDA48" d="M233.5,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C238.6,419.7,236.1,417.4,233.5,417.4z M233.5,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.5,0,2.5,1,2.5,2.5
|
||||
C235.7,424,234.7,425,233.5,425z"/>
|
||||
<circle fill="#1D1D1B" cx="233.5" cy="422.4" r="2.5"/>
|
||||
<path id="C_P9" fill="#EFDA48" d="M250.3,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C255.4,419.7,253.3,417.4,250.3,417.4z M250.3,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C252.8,424,251.8,425,250.3,425z"/>
|
||||
<circle fill="#1D1D1B" cx="250.3" cy="422.4" r="2.5"/>
|
||||
<path id="C_GND3" fill="#EFDA48" d="M267.5,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C272.6,419.7,270.2,417.4,267.5,417.4z M267.5,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C270,424,268.9,425,267.5,425z"/>
|
||||
<circle fill="#1D1D1B" cx="267.5" cy="422.4" r="2.5"/>
|
||||
<path id="C_P11" fill="#EFDA48" d="M284.6,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C289.7,419.7,287.4,417.4,284.6,417.4z M284.6,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C286.9,424,285.8,425,284.6,425z"/>
|
||||
<circle fill="#1D1D1B" cx="284.6" cy="422.4" r="2.5"/>
|
||||
<path id="C_P13" fill="#EFDA48" d="M301.5,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C306.6,419.7,304.4,417.4,301.5,417.4z M301.5,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C303.9,424,302.9,425,301.5,425z"/>
|
||||
<circle fill="#1D1D1B" cx="301.5" cy="422.4" r="2.5"/>
|
||||
<path id="C_P15" fill="#EFDA48" d="M318.7,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1
|
||||
C323.8,419.7,321.3,417.4,318.7,417.4z M318.7,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C321,424,320,425,318.7,425z"/>
|
||||
<circle fill="#1D1D1B" cx="318.7" cy="422.4" r="2.5"/>
|
||||
<path id="C_P17" fill="#EFDA48" d="M335.4,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C340.6,419.7,338.5,417.4,335.4,417.4z M335.4,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C338.1,424,337,425,335.4,425z"/>
|
||||
<circle fill="#1D1D1B" cx="335.4" cy="422.4" r="2.5"/>
|
||||
<path id="C_P19" fill="#EFDA48" d="M352.7,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C357.8,419.7,355.5,417.4,352.7,417.4z M352.7,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C355.2,424,354.1,425,352.7,425z"/>
|
||||
<circle fill="#1D1D1B" cx="352.7" cy="422.4" r="2.5"/>
|
||||
<path id="C_GND4" fill="#EFDA48" d="M369.7,417.4c-2.8,0-5.1,2.3-5.1,5.1c0,2.8,2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
C374.8,419.7,372.5,417.4,369.7,417.4z M369.7,425c-1.3,0-2.5-1-2.5-2.5c0-1.3,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C372,424,370.9,425,369.7,425z"/>
|
||||
<circle fill="#1D1D1B" cx="369.7" cy="422.4" r="2.5"/>
|
||||
<path id="M_GND1" fill="#EFDA48" d="M233.5,384.8c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1S236.1,384.8,233.5,384.8z
|
||||
M233.5,392.3c-1.3,0-2.5-1-2.5-2.5c0-1.5,1-2.5,2.5-2.5c1.5,0,2.5,1,2.5,2.5C236,391.3,234.7,392.3,233.5,392.3z"/>
|
||||
<circle fill="#1D1D1B" cx="233.5" cy="389.7" r="2.5"/>
|
||||
<path id="M_OUT1" fill="#EFDA48" d="M250.3,384.8c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
S253.3,384.8,250.3,384.8z M250.3,392.3c-1.3,0-2.5-1-2.5-2.5c0-1.5,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C252.8,391.3,251.8,392.3,250.3,392.3z"/>
|
||||
<circle fill="#1D1D1B" cx="250.3" cy="389.7" r="2.5"/>
|
||||
<path id="M_OUT2" fill="#EFDA48" d="M267.5,384.8c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
S270.2,384.8,267.5,384.8z M267.5,392.3c-1.3,0-2.5-1-2.5-2.5c0-1.5,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C270,391.3,268.9,392.3,267.5,392.3z"/>
|
||||
<circle fill="#1D1D1B" cx="267.5" cy="389.7" r="2.5"/>
|
||||
<path id="M_GND2" fill="#EFDA48" d="M284.6,384.8c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1s5.1-2.3,5.1-5.1S287.4,384.8,284.6,384.8z
|
||||
M284.6,392.3c-1.3,0-2.5-1-2.5-2.5c0-1.5,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5C287.1,391.3,285.8,392.3,284.6,392.3z"/>
|
||||
<circle fill="#1D1D1B" cx="284.6" cy="389.7" r="2.5"/>
|
||||
<path id="M_VM" fill="#EFDA48" d="M301.5,384.8c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c2.8,0,5.1-2.3,5.1-5.1
|
||||
S304.4,384.8,301.5,384.8z M301.5,392.3c-1.3,0-2.5-1-2.5-2.5c0-1.5,1-2.5,2.5-2.5c1.3,0,2.5,1,2.5,2.5
|
||||
C304,391.3,302.9,392.3,301.5,392.3z"/>
|
||||
<circle fill="#1D1D1B" cx="301.5" cy="389.7" r="2.5"/>
|
||||
<path id="EDGE_P0" fill="#EFDA48" d="M9.5,231.7c-2.1,0-4.2,0.2-6.2,0.6c-15.2,2.9-26.7,16.2-26.7,32.2c0,16.1,11.7,29.6,27,32.4
|
||||
c1.9,0.3,3.9,0.5,5.9,0.5c18.2,0,32.9-14.7,32.9-32.9C42.5,246.1,27.7,231.7,9.5,231.7z M9.5,279.9c-0.5,0-1.1,0-1.6-0.1
|
||||
c-0.2,0-0.5-0.1-0.7-0.1c-0.3,0-0.6-0.1-0.9-0.1c-0.2,0-0.4-0.1-0.6-0.2c-0.3-0.1-0.6-0.1-0.9-0.2c-0.1,0-0.3-0.1-0.4-0.2
|
||||
c-0.3-0.1-0.7-0.2-1-0.4c-0.1,0-0.1,0-0.1-0.1c-5.5-2.4-9.4-7.9-9.4-14.4c0-0.5,0-1.1,0.1-1.6c0-0.2,0.1-0.5,0.1-0.7
|
||||
c0-0.3,0.1-0.6,0.1-0.9c0-0.2,0.1-0.4,0.2-0.6c0.1-0.3,0.1-0.6,0.2-0.9c0-0.1,0.1-0.3,0.2-0.4c0.1-0.3,0.2-0.7,0.4-1
|
||||
c0-0.1,0-0.1,0.1-0.2c2.4-5.5,7.9-9.4,14.4-9.4c8.8,0,15.7,6.9,15.7,15.7S18.3,279.9,9.5,279.9z"/>
|
||||
<circle fill="none" cx="138" cy="487.1" r="15.7"/>
|
||||
<rect id="LED_0_0" x="210.7" y="146.2" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_1_0" x="236.8" y="146.2" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_2_0" x="262.7" y="146.2" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_3_0" x="288.7" y="146.2" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_4_0" x="314.6" y="146.2" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_0_1" x="210.7" y="171.7" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_1_1" x="236.8" y="171.7" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_2_1" x="262.7" y="171.7" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_3_1" x="288.7" y="171.7" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_4_1" x="314.6" y="171.7" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_0_2" x="210.7" y="197" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_1_2" x="236.8" y="197" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_2_2" x="262.7" y="197" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_3_2" x="288.7" y="197" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_4_2" x="314.6" y="197" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_0_3" x="210.7" y="222.5" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_1_3" x="236.8" y="222.5" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_2_3" x="262.7" y="222.5" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_3_3" x="288.7" y="222.5" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_4_3" x="314.6" y="222.5" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_0_4" x="210.7" y="247.8" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_1_4" x="236.8" y="247.8" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_2_4" x="262.7" y="247.8" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_3_4" x="288.7" y="247.8" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="LED_4_4" x="314.6" y="247.8" fill="#FFFFFF" width="5.1" height="12.9"/>
|
||||
<rect id="rgbled" x="254.5" y="311.7" fill="#FFFFFF" width="25.5" height="24.8"/>
|
||||
<circle id="rgbledcircle" fill="#BDD1CF" cx="267.1" cy="324" r="9.6"/>
|
||||
<rect id="SPKR" x="408.4" y="265.3" transform="matrix(-0.3593 0.9332 -0.9332 -0.3593 868.265 -8.347)" fill="#1D1D1B" width="57.1" height="57.1"/>
|
||||
<polygon fill="#EFDA48" points="353.4,181.9 353.4,171.1 372.8,171.1 372.8,181.9 "/>
|
||||
<path id="MIC" fill="#1D1D1B" d="M358.4,174c-0.9,0-1.8,0.7-1.8,1.8c0,1,0.7,1.8,1.8,1.8s1.8-0.7,1.8-1.8
|
||||
C360.2,174.8,359.5,174,358.4,174z"/>
|
||||
<polygon fill="#FFFFFF" points="158.1,146.2 163.2,146.2 163.2,155.4 158.1,155.4 "/>
|
||||
<path id="IF_LED" fill="#BDD1CF" d="M162.5,150.9c0-0.9-0.8-1.8-1.8-1.8c-0.9,0-1.8,0.8-1.8,1.8s0.8,1.8,1.8,1.8
|
||||
C161.7,152.6,162.5,151.7,162.5,150.9z"/>
|
||||
<rect x="175.7" y="49.5" fill="#FFFFFF" width="9.5" height="2.3"/>
|
||||
<polygon fill="#FFFFFF" points="350.9,49.6 350.9,45.6 348.6,45.6 348.6,49.6 344.8,49.6 344.8,51.9 348.6,51.9 348.6,56.2
|
||||
350.9,56.2 350.9,51.9 354.8,51.9 354.8,49.6 "/>
|
||||
<path fill="#FFFFFF" d="M36.7,294.8c-0.3-0.3-0.6-0.6-1-0.7c-0.7-0.3-1.8-0.3-2.5,0c-0.4,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.3,0.3-0.4,0.7-0.6,1.1c-0.1,0.4-0.2,0.9-0.2,1.5v2c0,0.6,0.1,1.1,0.2,1.5c0.1,0.4,0.3,0.8,0.6,1.1c0.3,0.3,0.6,0.6,1,0.7
|
||||
c0.4,0.2,0.8,0.2,1.3,0.2c0.5,0,0.9-0.1,1.3-0.2c0.4-0.2,0.7-0.4,0.9-0.7c0.3-0.3,0.4-0.7,0.6-1.1c0.1-0.4,0.2-0.9,0.2-1.5v-2
|
||||
c0-0.6-0.1-1.1-0.2-1.5C37.2,295.5,37,295.1,36.7,294.8z M35.8,296.5l-2.7,2.1v-1.5c0-0.7,0.1-1.2,0.4-1.5c0.2-0.3,0.5-0.5,1-0.5
|
||||
c0.4,0,0.7,0.1,0.9,0.3C35.6,295.8,35.8,296.1,35.8,296.5z M35.9,298.2v1.4c0,0.7-0.1,1.2-0.3,1.5c-0.2,0.3-0.5,0.5-1,0.5
|
||||
c-0.4,0-0.7-0.1-0.9-0.3c-0.2-0.2-0.3-0.5-0.4-0.9L35.9,298.2z"/>
|
||||
<path fill="#FFFFFF" d="M498.8,299.6c-0.1-0.2-0.1-0.4-0.3-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.1-0.1-0.2-0.1-0.3-0.2
|
||||
c0.1,0,0.1-0.1,0.2-0.1c0.2-0.2,0.3-0.3,0.4-0.5c0.1-0.2,0.2-0.4,0.3-0.6c0.1-0.2,0.1-0.4,0.1-0.6c0-0.4-0.1-0.8-0.2-1.1
|
||||
c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.9-0.5c-0.7-0.2-1.6-0.2-2.3,0c-0.3,0.1-0.7,0.3-0.9,0.5c-0.3,0.2-0.5,0.5-0.6,0.8
|
||||
c-0.1,0.3-0.2,0.7-0.2,1v0.3h1.6v-0.3c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.4-0.2
|
||||
c0.2-0.1,0.3-0.1,0.5-0.1c0.4,0,0.7,0.1,0.9,0.3c0.2,0.2,0.3,0.5,0.3,0.9c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.1,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.4,0.1-0.6,0.1h-1v1.4h1c0.2,0,0.5,0,0.7,0.1c0.2,0.1,0.3,0.1,0.5,0.2c0.1,0.1,0.2,0.2,0.3,0.4
|
||||
c0.1,0.1,0.1,0.3,0.1,0.6c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.1,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.2c-0.3,0.1-0.8,0.1-1.2,0
|
||||
c-0.2-0.1-0.3-0.1-0.4-0.2c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5v-0.3H493v0.3c0,0.4,0.1,0.8,0.2,1.1
|
||||
c0.2,0.3,0.4,0.6,0.6,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.7,0.2,1.1,0.2c0.4,0,0.8-0.1,1.1-0.2c0.4-0.1,0.7-0.3,0.9-0.5
|
||||
c0.3-0.2,0.5-0.5,0.6-0.9c0.1-0.3,0.2-0.7,0.2-1.1C498.9,300.1,498.8,299.9,498.8,299.6z"/>
|
||||
<polygon fill="#FFFFFF" points="177.4,475.2 177.4,476.7 179.6,475.9 179.6,482.8 181.2,482.8 181.2,473.8 180.9,473.8 "/>
|
||||
<path fill="#FFFFFF" d="M349.5,481.4l1.8-2c0.2-0.2,0.4-0.5,0.6-0.7c0.2-0.2,0.4-0.5,0.5-0.7c0.2-0.3,0.3-0.5,0.4-0.8
|
||||
c0.1-0.3,0.1-0.5,0.1-0.8c0-0.4-0.1-0.7-0.2-1c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.9-0.5c-0.7-0.3-1.7-0.3-2.4,0
|
||||
c-0.4,0.1-0.7,0.4-0.9,0.6c-0.3,0.3-0.5,0.6-0.6,0.9c-0.1,0.3-0.2,0.7-0.2,1.1v0.3h1.6v-0.3c0-0.2,0-0.4,0.1-0.6
|
||||
c0.1-0.2,0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.4-0.3c0.3-0.1,0.8-0.2,1.1,0c0.1,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.2,0.2,0.4
|
||||
c0.1,0.2,0.1,0.3,0.1,0.5c0,0.1,0,0.3-0.1,0.4c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.2-0.2,0.3-0.4,0.6c-0.2,0.2-0.4,0.4-0.6,0.7l-2.8,3.1
|
||||
v1.1h6v-1.4H349.5z"/>
|
||||
<polygon fill="#FFFFFF" points="282.7,282 278.2,282 278.2,274.5 276.6,274.5 276.6,283.5 282.7,283.5 "/>
|
||||
<path fill="#FFFFFF" d="M288,274.5h-1.3l-2.9,8.9h1.6l0.7-2.2h2.4l0.7,2.2h1.6l-2.8-8.7L288,274.5z M288.2,279.8h-1.5l0.8-2.5
|
||||
L288.2,279.8z"/>
|
||||
<path fill="#FFFFFF" d="M296.1,280.5c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5c-0.1,0.2-0.3,0.3-0.4,0.4
|
||||
c-0.3,0.2-0.9,0.2-1.2,0c-0.2-0.1-0.3-0.2-0.4-0.4c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6l0-5.9h-1.5l0,6
|
||||
c0,0.4,0.1,0.8,0.2,1.2c0.1,0.4,0.3,0.7,0.6,1c0.3,0.3,0.6,0.5,0.9,0.7c0.4,0.2,0.8,0.2,1.2,0.2c0.4,0,0.8-0.1,1.2-0.2
|
||||
s0.7-0.4,1-0.7c0.3-0.3,0.5-0.6,0.6-1c0.1-0.4,0.2-0.8,0.2-1.2l0-5.9h-1.6L296.1,280.5z"/>
|
||||
<polygon fill="#FFFFFF" points="302.9,283.5 302.9,276 305.5,276 305.5,274.5 298.8,274.5 298.8,276 301.4,276 301.4,283.5 "/>
|
||||
<path fill="#FFFFFF" d="M309.4,283.6c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.1
|
||||
c0-0.3,0-0.5-0.1-0.8c-0.1-0.2-0.2-0.4-0.3-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.2-0.4-0.4c-0.1-0.1-0.1-0.3-0.1-0.5
|
||||
c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9
|
||||
c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1
|
||||
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2
|
||||
c0.2,0.1,0.4,0.2,0.5,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6
|
||||
l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.4,0.6,0.8,0.9c0.3,0.2,0.6,0.4,1,0.5C308.6,283.5,309,283.6,309.4,283.6z"/>
|
||||
<path fill="#FFFFFF" d="M315.5,280.1h1.4c0.4,0,0.8-0.1,1.2-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.9
|
||||
c0.2-0.3,0.2-0.7,0.2-1.2c0-0.4-0.1-0.8-0.2-1.2c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.7-0.2-1.2-0.2h-3v8.9
|
||||
h1.6V280.1z M318,278.3c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.4v-2.7h1.4c0.2,0,0.4,0,0.6,0.1
|
||||
c0.2,0.1,0.3,0.2,0.5,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.1,0.6c0,0.2,0,0.4-0.1,0.6C318.2,278.1,318.1,278.2,318,278.3z
|
||||
"/>
|
||||
<path fill="#FFFFFF" d="M322.6,280h1.2l1.6,3.3l0.1,0.1h1.5l0-0.4l-1.7-3.4c0.2-0.1,0.3-0.2,0.4-0.3c0.2-0.2,0.4-0.3,0.5-0.5
|
||||
c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5
|
||||
c-0.4-0.1-0.8-0.2-1.2-0.2H321v8.9h1.6V280z M325.1,277.9c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
|
||||
c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3c0.1,0.1,0.2,0.2,0.3,0.4
|
||||
c0.1,0.2,0.1,0.4,0.1,0.6C325.2,277.5,325.2,277.7,325.1,277.9z"/>
|
||||
<polygon fill="#FFFFFF" points="333.7,282 329.7,282 329.7,279.6 333.2,279.6 333.2,278.1 329.7,278.1 329.7,276 333.7,276
|
||||
333.7,274.5 328.1,274.5 328.1,283.5 333.7,283.5 "/>
|
||||
<path fill="#FFFFFF" d="M339.5,280.6c0,0.2-0.1,0.5-0.2,0.6c-0.1,0.2-0.2,0.3-0.3,0.5c-0.1,0.1-0.3,0.2-0.4,0.3
|
||||
c-0.3,0.1-0.9,0.2-1.2,0c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6
|
||||
c0-0.2,0-0.4,0-0.6v-1.2c0-0.2,0-0.4,0-0.6c0-0.2,0.1-0.4,0.1-0.6c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4
|
||||
c0.1-0.1,0.3-0.2,0.4-0.3c0.3-0.1,0.9-0.1,1.2,0c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2
|
||||
h1.6l0-0.3c0-0.4-0.2-0.8-0.3-1.2c-0.2-0.4-0.4-0.7-0.6-0.9c-0.3-0.3-0.6-0.5-0.9-0.6c-0.7-0.3-1.6-0.3-2.3-0.1
|
||||
c-0.3,0.1-0.6,0.3-0.8,0.4c-0.2,0.2-0.5,0.4-0.6,0.7c-0.2,0.3-0.3,0.5-0.4,0.8c-0.1,0.3-0.2,0.6-0.3,0.9c-0.1,0.3-0.1,0.6-0.1,1v1.2
|
||||
c0,0.3,0,0.6,0.1,1c0.1,0.3,0.1,0.6,0.2,0.9c0.1,0.3,0.3,0.6,0.4,0.8c0.2,0.3,0.4,0.5,0.6,0.7c0.2,0.2,0.5,0.3,0.8,0.5
|
||||
c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.8-0.1,1.2-0.2c0.4-0.1,0.7-0.3,0.9-0.6c0.3-0.3,0.5-0.6,0.6-0.9c0.2-0.3,0.3-0.7,0.3-1.1l0-0.3h-1.6
|
||||
L339.5,280.6z"/>
|
||||
<polygon fill="#FFFFFF" points="346.4,278.1 343.5,278.1 343.5,274.5 342,274.5 342,283.5 343.5,283.5 343.5,279.6 346.4,279.6
|
||||
346.4,283.5 348,283.5 348,274.5 346.4,274.5 "/>
|
||||
<polygon fill="#FFFFFF" points="350.9,279.6 354.4,279.6 354.4,278.1 350.9,278.1 350.9,276 354.9,276 354.9,274.5 349.3,274.5
|
||||
349.3,283.5 355,283.5 355,282 350.9,282 "/>
|
||||
<path fill="#FFFFFF" d="M361.2,279.4c0.2-0.2,0.4-0.3,0.6-0.5c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8
|
||||
c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7v8.9h1.6V280h1.2l1.6,3.3
|
||||
l0.1,0.1h1.5l0-0.4l-1.7-3.4C360.9,279.6,361,279.5,361.2,279.4z M360.6,277.3c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1H358v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4C360.6,276.9,360.6,277.1,360.6,277.3z"/>
|
||||
<polygon fill="#FFFFFF" points="50.5,274.5 48.9,274.5 48.9,283.5 54.6,283.5 54.6,282 50.5,282 "/>
|
||||
<path fill="#FFFFFF" d="M58.1,274.5l-2.9,8.9h1.6l0.7-2.2h2.4l0.7,2.2h1.6l-2.8-8.9H58.1z M59.5,279.8H58l0.8-2.5L59.5,279.8z"/>
|
||||
<path fill="#FFFFFF" d="M64.1,277.9c0-0.2,0.1-0.4,0.1-0.6c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4
|
||||
c0.1-0.1,0.3-0.2,0.4-0.3c0.3-0.1,0.8-0.1,1.2,0c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2
|
||||
h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.3-1.6-0.3-2.2,0
|
||||
c-0.3,0.1-0.6,0.3-0.8,0.5c-0.2,0.2-0.5,0.4-0.6,0.7c-0.2,0.3-0.3,0.5-0.4,0.8c-0.1,0.3-0.2,0.6-0.3,0.9c-0.1,0.3-0.1,0.6-0.1,1v1
|
||||
c0,0.3,0,0.7,0.1,1c0.1,0.3,0.2,0.6,0.3,0.9c0.1,0.3,0.3,0.6,0.5,0.8c0.2,0.3,0.4,0.5,0.7,0.7c0.3,0.2,0.5,0.4,0.9,0.5
|
||||
c0.3,0.1,0.7,0.2,1,0.2h0c0.6,0,1.1-0.1,1.6-0.3c0.5-0.2,0.9-0.6,1.3-1l0.1-0.1l0-3.4h-3.2v1.4h1.7l0,1.5c-0.1,0.1-0.1,0.1-0.2,0.2
|
||||
c-0.1,0.1-0.2,0.1-0.4,0.2c-0.1,0-0.3,0.1-0.4,0.1c-0.1,0-0.2,0-0.3,0l-0.1,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.3-0.2-0.4-0.3
|
||||
c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4-0.1-0.6v-1
|
||||
C64.1,278.3,64.1,278.1,64.1,277.9z M65.9,283.3L65.9,283.3L65.9,283.3L65.9,283.3z"/>
|
||||
<polygon fill="#FFFFFF" points="71.7,279.6 75.2,279.6 75.2,278.1 71.7,278.1 71.7,276 75.7,276 75.7,274.5 70.1,274.5 70.1,283.5
|
||||
75.7,283.5 75.7,282 71.7,282 "/>
|
||||
<path fill="#FFFFFF" d="M82.7,279.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.1-0.3-0.1-0.5
|
||||
c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9
|
||||
c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1
|
||||
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2
|
||||
c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.1-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6
|
||||
l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.4,0.6,0.8,0.9c0.3,0.2,0.6,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2
|
||||
c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.1c0-0.3,0-0.5-0.1-0.8
|
||||
C82.9,280,82.8,279.8,82.7,279.6z"/>
|
||||
<polygon fill="#FFFFFF" points="85.8,279.6 89.3,279.6 89.3,278.1 85.8,278.1 85.8,276 89.9,276 89.9,274.5 84.2,274.5 84.2,283.5
|
||||
89.9,283.5 89.9,282 85.8,282 "/>
|
||||
<polygon fill="#FFFFFF" points="95.4,280 92.6,274.5 91.1,274.5 91.1,283.5 92.7,283.5 92.7,278 95.5,283.5 97,283.5 97,274.5
|
||||
95.4,274.5 "/>
|
||||
<path fill="#FFFFFF" d="M103.9,279.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.1-0.3-0.1-0.5
|
||||
c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9
|
||||
c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1
|
||||
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2
|
||||
c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.1-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6
|
||||
l0-0.2H98l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.5,0.6,0.8,0.9c0.3,0.2,0.6,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2
|
||||
c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.1c0-0.3,0-0.5-0.1-0.8
|
||||
C104.2,280,104.1,279.8,103.9,279.6z"/>
|
||||
<path fill="#FFFFFF" d="M111.1,276.6c-0.1-0.3-0.2-0.6-0.4-0.9c-0.2-0.3-0.4-0.5-0.6-0.7c-0.2-0.2-0.5-0.4-0.8-0.5
|
||||
c-0.6-0.2-1.5-0.2-2.1,0c-0.3,0.1-0.6,0.3-0.8,0.5c-0.2,0.2-0.4,0.4-0.6,0.7c-0.2,0.3-0.3,0.6-0.4,0.8c-0.1,0.3-0.2,0.6-0.2,0.9
|
||||
c0,0.3-0.1,0.6-0.1,0.9v1c0,0.3,0,0.6,0.1,0.9c0.1,0.3,0.1,0.6,0.2,0.9c0.1,0.3,0.2,0.6,0.4,0.9c0.2,0.3,0.4,0.5,0.6,0.7
|
||||
c0.2,0.2,0.5,0.4,0.8,0.5c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.4,0.6-0.7
|
||||
c0.2-0.3,0.3-0.6,0.4-0.8c0.1-0.3,0.2-0.6,0.2-0.9c0-0.3,0.1-0.6,0.1-0.9v-1c0-0.3,0-0.6-0.1-0.9
|
||||
C111.3,277.2,111.2,276.9,111.1,276.6z M109.8,278.5v1c0,0.2,0,0.4,0,0.6c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.2-0.1,0.4-0.2,0.6
|
||||
c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3c-0.3,0.1-0.8,0.1-1.1,0c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.4
|
||||
c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4,0-0.6v-1c0-0.2,0-0.4,0-0.6c0-0.2,0.1-0.4,0.1-0.6
|
||||
c0-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4c0.1-0.1,0.3-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1
|
||||
c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0.1,0.2,0.1,0.4,0.1,0.6
|
||||
C109.8,278.1,109.8,278.3,109.8,278.5z"/>
|
||||
<path fill="#FFFFFF" d="M117.3,279.4c0.2-0.2,0.4-0.3,0.5-0.5c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8
|
||||
c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7v8.9h1.6V280h1.2l1.6,3.4
|
||||
h1.5l0-0.4l-1.7-3.4C117.1,279.6,117.2,279.5,117.3,279.4z M116.8,277.3c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4C116.7,276.9,116.8,277.1,116.8,277.3z"/>
|
||||
<path fill="#FFFFFF" d="M239.4,369.8c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-3v8.9h1.6v-3.4h1.4c0.4,0,0.8-0.1,1.2-0.2
|
||||
c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.9c0.2-0.3,0.2-0.7,0.2-1.2c0-0.4-0.1-0.8-0.2-1.2C239.9,370.3,239.7,370,239.4,369.8z
|
||||
M238.7,371.9c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.4v-2.7h1.4
|
||||
c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.2,0.5,0.3c0.1,0.1,0.2,0.3,0.3,0.4C238.7,371.5,238.7,371.7,238.7,371.9z"/>
|
||||
<path fill="#FFFFFF" d="M246.1,373.9c0.2-0.2,0.4-0.3,0.6-0.5c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8
|
||||
c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7v8.9h1.6v-3.4h1.2l1.6,3.4
|
||||
h1.5l0-0.4l-1.7-3.4C245.8,374.1,246,374,246.1,373.9z M245.6,371.8c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4C245.5,371.4,245.6,371.6,245.6,371.8z"/>
|
||||
<path fill="#FFFFFF" d="M254,371.2c-0.1-0.3-0.2-0.6-0.4-0.8c-0.2-0.3-0.4-0.5-0.6-0.7c-0.2-0.2-0.5-0.4-0.8-0.5
|
||||
c-0.6-0.2-1.4-0.2-2.1,0c-0.3,0.1-0.6,0.3-0.8,0.5c-0.2,0.2-0.4,0.4-0.6,0.7c-0.2,0.3-0.3,0.6-0.4,0.8c-0.1,0.3-0.2,0.6-0.2,0.9
|
||||
c0,0.3-0.1,0.6-0.1,0.9v1c0,0.3,0,0.6,0.1,0.9c0.1,0.3,0.1,0.6,0.2,0.9c0.1,0.3,0.2,0.6,0.4,0.9c0.2,0.3,0.4,0.5,0.6,0.7
|
||||
c0.2,0.2,0.5,0.4,0.8,0.5c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.4,0.6-0.7
|
||||
c0.2-0.3,0.3-0.6,0.4-0.8c0.1-0.3,0.2-0.6,0.2-0.9c0.1-0.3,0.1-0.6,0.1-0.9v-1c0-0.3,0-0.6-0.1-0.9
|
||||
C254.2,371.8,254.2,371.5,254,371.2z M252.8,373v1c0,0.2,0,0.4,0,0.6c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.2-0.1,0.4-0.2,0.6
|
||||
c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.4,0.3c-0.3,0.1-0.8,0.1-1.1,0c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.5
|
||||
c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4,0-0.6v-1c0-0.2,0-0.4,0-0.6c0-0.2,0.1-0.4,0.1-0.6
|
||||
c0-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4c0.1-0.1,0.2-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1
|
||||
c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0.1,0.2,0.1,0.4,0.1,0.6
|
||||
C252.8,372.7,252.8,372.9,252.8,373z"/>
|
||||
<polygon fill="#FFFFFF" points="261,370.3 261.1,370.2 261,369.1 255.2,369.1 255.2,370.5 259.1,370.5 255.2,376.8 255.1,376.8
|
||||
255.1,378 261.2,378 261.2,376.6 257.1,376.6 "/>
|
||||
<polygon fill="#FFFFFF" points="264.2,374.1 267.7,374.1 267.7,372.7 264.2,372.7 264.2,370.5 268.2,370.5 268.2,369.1 262.6,369.1
|
||||
262.6,378 268.3,378 268.3,376.6 264.2,376.6 "/>
|
||||
<path fill="#FFFFFF" d="M275.2,374.2c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.1-0.3-0.1-0.5
|
||||
c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9
|
||||
c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1
|
||||
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2
|
||||
c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.1-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6
|
||||
l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.5,0.6,0.8,0.9c0.3,0.2,0.7,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2
|
||||
c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.1c0-0.3,0-0.5-0.1-0.8
|
||||
C275.5,374.6,275.3,374.4,275.2,374.2z"/>
|
||||
<path fill="#FFFFFF" d="M282.3,374.2c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.2-0.4-0.4c-0.1-0.1-0.1-0.3-0.1-0.5
|
||||
c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.3,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3
|
||||
c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9
|
||||
c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1
|
||||
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2
|
||||
c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.3-0.1-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6
|
||||
l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.4,0.6,0.8,0.9c0.3,0.2,0.7,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2
|
||||
c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.1c0-0.3,0-0.5-0.1-0.8
|
||||
C282.5,374.6,282.4,374.4,282.3,374.2z"/>
|
||||
<path fill="#FFFFFF" d="M289.5,371.2c-0.1-0.3-0.3-0.6-0.4-0.8c-0.2-0.3-0.4-0.5-0.6-0.7c-0.2-0.2-0.5-0.4-0.8-0.5
|
||||
c-0.6-0.2-1.4-0.2-2.1,0c-0.3,0.1-0.6,0.3-0.8,0.5c-0.2,0.2-0.4,0.4-0.6,0.7c-0.2,0.3-0.3,0.6-0.4,0.8c-0.1,0.3-0.2,0.6-0.2,0.9
|
||||
c-0.1,0.3-0.1,0.6-0.1,0.9v1c0,0.3,0,0.6,0.1,0.9c0.1,0.3,0.1,0.6,0.2,0.9c0.1,0.3,0.2,0.6,0.4,0.8c0.2,0.3,0.4,0.5,0.6,0.7
|
||||
c0.2,0.2,0.5,0.4,0.8,0.5c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.4,0.6-0.7
|
||||
c0.2-0.3,0.3-0.6,0.4-0.8c0.1-0.3,0.2-0.6,0.2-0.9c0.1-0.3,0.1-0.6,0.1-0.9v-1c0-0.3,0-0.6-0.1-0.9
|
||||
C289.7,371.8,289.6,371.5,289.5,371.2z M288.2,373v1c0,0.2,0,0.4,0,0.6c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.2-0.1,0.4-0.2,0.6
|
||||
c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.4,0.3c-0.3,0.1-0.8,0.1-1.1,0c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.5
|
||||
c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4,0-0.6v-1c0-0.2,0-0.4,0-0.6c0-0.2,0.1-0.4,0.1-0.6
|
||||
c0-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4c0.1-0.1,0.3-0.2,0.4-0.3c0.2-0.1,0.3-0.1,0.5-0.1c0.2,0,0.4,0,0.5,0.1
|
||||
c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0.1,0.2,0.1,0.4,0.1,0.6
|
||||
C288.2,372.7,288.2,372.9,288.2,373z"/>
|
||||
<path fill="#FFFFFF" d="M295.7,373.9c0.2-0.2,0.4-0.3,0.6-0.5c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8
|
||||
c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7v8.9h1.6v-3.4h1.2l1.6,3.3
|
||||
l0.1,0.1h1.5l0-0.4l-1.7-3.4C295.4,374.1,295.6,374,295.7,373.9z M295.2,371.8c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4C295.1,371.4,295.2,371.6,295.2,371.8z"/>
|
||||
<path fill="#FFFFFF" d="M239.2,103.5h-1.6l0,5.9c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5c-0.1,0.2-0.3,0.3-0.4,0.4
|
||||
c-0.3,0.2-0.9,0.2-1.2,0c-0.2-0.1-0.3-0.2-0.4-0.4c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6l0-5.9h-1.5l0,6
|
||||
c0,0.4,0.1,0.8,0.2,1.2c0.1,0.4,0.4,0.7,0.6,1c0.3,0.3,0.6,0.5,0.9,0.7c0.4,0.2,0.8,0.2,1.2,0.2c0.4,0,0.8-0.1,1.2-0.2
|
||||
c0.4-0.2,0.7-0.4,1-0.7c0.3-0.3,0.5-0.6,0.6-1c0.1-0.4,0.2-0.8,0.2-1.2L239.2,103.5z"/>
|
||||
<path fill="#FFFFFF" d="M246.5,110c0-0.3,0-0.5-0.1-0.8c-0.1-0.2-0.2-0.4-0.3-0.6c-0.1-0.2-0.3-0.4-0.5-0.5
|
||||
c-0.2-0.1-0.4-0.3-0.6-0.4c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3
|
||||
c-0.1-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2
|
||||
c0.4-0.1,0.8-0.1,1.1,0c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3
|
||||
c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5
|
||||
c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.3,0.7-0.3,1.1c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.6,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5
|
||||
c0.3,0.1,0.6,0.3,0.9,0.4c0.2,0.1,0.4,0.1,0.6,0.2c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5
|
||||
c0,0.2,0,0.3-0.1,0.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.1-0.5-0.3
|
||||
c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.4,0.6,0.8,0.9
|
||||
c0.3,0.2,0.7,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2c0.4,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8
|
||||
C246.4,110.8,246.5,110.5,246.5,110z"/>
|
||||
<path fill="#FFFFFF" d="M250.5,112.4c0.4,0,0.8-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.2
|
||||
c0-0.3,0-0.5-0.1-0.8c-0.1-0.2-0.2-0.5-0.4-0.7c-0.2-0.2-0.3-0.4-0.5-0.5c0,0-0.1-0.1-0.1-0.1c0,0,0,0,0,0c0.2-0.1,0.3-0.3,0.5-0.4
|
||||
c0.1-0.2,0.2-0.4,0.3-0.6c0.1-0.2,0.1-0.4,0.1-0.7c0-0.4-0.1-0.8-0.3-1.1c-0.2-0.3-0.4-0.6-0.7-0.8c-0.3-0.2-0.6-0.3-1-0.4
|
||||
c-0.4-0.1-0.7-0.1-1.1-0.1h-2.8v8.9H250.5L250.5,112.4z M249.2,108.5h1.4c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.4,0.2
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.2,0.1,0.3,0.1,0.5c0,0.2,0,0.4-0.1,0.5c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
|
||||
c-0.2,0.1-0.3,0.1-0.5,0.1h-1.4V108.5z M251.6,106.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1
|
||||
h-1.2V105h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.3,0.1,0.5
|
||||
C251.7,106.2,251.7,106.3,251.6,106.5z"/>
|
||||
<path fill="#FFFFFF" d="M307.2,103.6c0.2-0.2,0.4-0.3,0.5-0.5c0.2-0.2,0.3-0.4,0.4-0.7c0.1-0.3,0.1-0.5,0.1-0.8
|
||||
c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7v8.9h1.6v-3.4h1.2l1.6,3.3
|
||||
l0.1,0.1h1.5l0-0.4l-1.7-3.4C306.9,103.7,307,103.7,307.2,103.6z M306.6,101.5c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.3-0.3,0.4
|
||||
c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1H304v-2.7h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4C306.6,101,306.6,101.2,306.6,101.5z"/>
|
||||
<polygon fill="#FFFFFF" points="315.2,106.2 311.1,106.2 311.1,103.7 314.6,103.7 314.6,102.3 311.1,102.3 311.1,100.1 315.1,100.1
|
||||
315.1,98.7 309.5,98.7 309.5,107.6 315.2,107.6 "/>
|
||||
<path fill="#FFFFFF" d="M320,106c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0.1-0.8,0.1-1.2,0c-0.2-0.1-0.4-0.2-0.5-0.3
|
||||
c-0.1-0.1-0.3-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6l0-0.2h-1.6l0,0.3c0,0.4,0.1,0.8,0.3,1.2c0.2,0.3,0.4,0.6,0.8,0.9
|
||||
c0.3,0.2,0.7,0.4,1,0.5c0.4,0.1,0.8,0.2,1.2,0.2c0.3,0,0.7-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8
|
||||
c0.2-0.3,0.3-0.7,0.3-1.1c0-0.3,0-0.5-0.1-0.8c-0.1-0.2-0.2-0.4-0.3-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.3-0.6-0.4
|
||||
c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2-0.1-0.4-0.1-0.6-0.2c-0.2-0.1-0.4-0.2-0.5-0.3c-0.2-0.1-0.3-0.2-0.4-0.4
|
||||
c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1-0.1,0.3-0.2,0.4-0.2c0.4-0.1,0.8-0.1,1.1,0
|
||||
c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3c0-0.4-0.1-0.8-0.3-1.2
|
||||
c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.2-1.5-0.3-2.2,0c-0.4,0.1-0.7,0.3-1,0.5c-0.3,0.2-0.5,0.5-0.7,0.8
|
||||
c-0.2,0.3-0.3,0.7-0.3,1.1c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.8c0.3,0.2,0.6,0.4,0.9,0.5c0.3,0.1,0.6,0.3,0.9,0.4
|
||||
c0.2,0.1,0.4,0.1,0.6,0.2c0.2,0.1,0.4,0.2,0.6,0.3c0.2,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.3-0.1,0.5
|
||||
C320.2,105.8,320.1,105.9,320,106z"/>
|
||||
<polygon fill="#FFFFFF" points="328.7,106.2 324.6,106.2 324.6,103.7 328.1,103.7 328.1,102.3 324.6,102.3 324.6,100.1 328.7,100.1
|
||||
328.7,98.7 323,98.7 323,107.6 328.7,107.6 "/>
|
||||
<polygon fill="#FFFFFF" points="332.1,107.6 333.7,107.6 333.7,100.1 336.3,100.1 336.3,98.7 329.5,98.7 329.5,100.1 332.1,100.1
|
||||
"/>
|
||||
<path fill="#FFFFFF" d="M134.3,157.5l-2.8,8.8h1.6l0.7-2.1h2.4l0.7,2.1h1.6l-2.8-8.8H134.3z M135.6,162.7h-1.5l0.7-2.4L135.6,162.7z
|
||||
"/>
|
||||
<path fill="#FFFFFF" d="M145.3,158.3c-0.3-0.3-0.6-0.6-0.9-0.7c-0.7-0.3-1.7-0.3-2.5,0c-0.4,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.3,0.3-0.4,0.7-0.6,1.1c-0.1,0.4-0.2,0.9-0.2,1.5v1.9c0,0.6,0.1,1,0.2,1.5c0.1,0.4,0.3,0.8,0.6,1.1c0.3,0.3,0.6,0.5,0.9,0.7
|
||||
c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,0.9-0.1,1.2-0.2c0.4-0.2,0.7-0.4,0.9-0.7c0.2-0.3,0.4-0.7,0.6-1.1c0.1-0.4,0.2-0.9,0.2-1.5v-1.9
|
||||
c0-0.5-0.1-1-0.2-1.5C145.7,159,145.6,158.6,145.3,158.3z M144.4,160.1l-2.7,2.1v-1.4c0-0.7,0.1-1.2,0.3-1.5c0.2-0.3,0.5-0.4,1-0.4
|
||||
c0.4,0,0.7,0.1,0.9,0.3C144.3,159.3,144.4,159.7,144.4,160.1z M144.5,161.7v1.4c0,0.7-0.1,1.2-0.3,1.5c-0.2,0.3-0.5,0.5-1,0.5
|
||||
c-0.4,0-0.7-0.1-0.9-0.3c-0.2-0.2-0.3-0.5-0.4-0.9L144.5,161.7z"/>
|
||||
<path fill="#FFFFFF" d="M387.6,166.2h1.6l-2.7-8.6l-0.1-0.2h-1.3l-2.8,8.8h1.6l0.7-2.1h2.4L387.6,166.2z M386.5,162.6H385l0.7-2.4
|
||||
L386.5,162.6z"/>
|
||||
<polygon fill="#FFFFFF" points="393.4,166.2 395,166.2 395,157.4 394.7,157.4 391.2,158.7 391.2,160.2 393.4,159.4 "/>
|
||||
<path fill="#FFFFFF" d="M314.5,402.4c-0.2-0.2-0.3-0.4-0.5-0.5c0,0-0.1-0.1-0.1-0.1c0,0,0,0,0,0c0.2-0.1,0.3-0.3,0.5-0.4
|
||||
c0.1-0.2,0.2-0.4,0.3-0.6c0.1-0.2,0.1-0.4,0.1-0.7c0-0.4-0.1-0.8-0.3-1.1c-0.2-0.3-0.4-0.6-0.7-0.8c-0.3-0.2-0.6-0.3-1-0.4
|
||||
c-0.4-0.1-0.7-0.1-1.1-0.1H309v8.9h3c0.4,0,0.8-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.2
|
||||
c0-0.3,0-0.5-0.1-0.8C314.8,402.8,314.7,402.6,314.5,402.4z M310.6,402.6h1.4c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.4,0.2
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.2,0.1,0.3,0.1,0.5c0,0.2,0,0.4-0.1,0.5c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
|
||||
c-0.2,0.1-0.4,0.1-0.5,0.1h-1.4V402.6z M313.1,400.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1
|
||||
h-1.2V399h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.3,0.1,0.5
|
||||
C313.2,400.2,313.2,400.4,313.1,400.5z"/>
|
||||
<path fill="#FFFFFF" d="M319.7,397.6h-1.3l-2.9,8.9h1.6l0.7-2.2h2.4l0.7,2.2h1.6l-2.8-8.7L319.7,397.6z M319.8,402.9h-1.5l0.8-2.5
|
||||
L319.8,402.9z"/>
|
||||
<polygon fill="#FFFFFF" points="322.7,399 325.2,399 325.2,406.5 326.8,406.5 326.8,399 329.4,399 329.4,397.6 322.7,397.6 "/>
|
||||
<polygon fill="#FFFFFF" points="330,399 332.6,399 332.6,406.5 334.2,406.5 334.2,399 336.8,399 336.8,397.6 330,397.6 "/>
|
||||
<polygon fill="#FFFFFF" points="339.3,402.6 342.8,402.6 342.8,401.2 339.3,401.2 339.3,399 343.3,399 343.3,397.6 337.7,397.6
|
||||
337.7,406.5 343.4,406.5 343.4,405 339.3,405 "/>
|
||||
<path fill="#FFFFFF" d="M349.3,406.5h1.5l0-0.4l-1.7-3.4c0.2-0.1,0.3-0.2,0.4-0.3c0.2-0.2,0.4-0.3,0.6-0.5c0.1-0.2,0.3-0.4,0.4-0.7
|
||||
c0.1-0.3,0.1-0.5,0.1-0.8c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7
|
||||
v8.9h1.6v-3.4h1.2L349.3,406.5z M348.9,400.9c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2V399
|
||||
h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.1,0.6
|
||||
C349,400.5,349,400.7,348.9,400.9z"/>
|
||||
<polygon fill="#FFFFFF" points="351.8,399 353.8,399 353.8,405 351.8,405 351.8,406.5 357.4,406.5 357.4,405 355.4,405 355.4,399
|
||||
357.4,399 357.4,397.6 351.8,397.6 "/>
|
||||
<polygon fill="#FFFFFF" points="360.6,402.6 364.1,402.6 364.1,401.2 360.6,401.2 360.6,399 364.6,399 364.6,397.6 359,397.6
|
||||
359,406.5 364.6,406.5 364.6,405 360.6,405 "/>
|
||||
<path fill="#FFFFFF" d="M256.6,303.4h1.5l0-0.4l-1.7-3.4c0.2-0.1,0.3-0.2,0.4-0.3c0.2-0.2,0.4-0.3,0.5-0.5c0.2-0.2,0.3-0.4,0.4-0.7
|
||||
c0.1-0.3,0.1-0.5,0.1-0.8c0-0.5-0.1-0.9-0.2-1.2c-0.2-0.4-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.5c-0.4-0.1-0.8-0.2-1.2-0.2h-2.7
|
||||
v8.9h1.6V300h1.2L256.6,303.4z M256.3,297.8c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1h-1.2v-2.7
|
||||
h1.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.5,0.3c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.2,0.1,0.4,0.1,0.6
|
||||
C256.4,297.5,256.4,297.7,256.3,297.8z"/>
|
||||
<path fill="#FFFFFF" d="M262.2,303.5c0.6,0,1.1-0.1,1.6-0.3c0.5-0.2,0.9-0.6,1.3-1l0.1-0.1l0-3.4h-3.2v1.4h1.7l0,1.5
|
||||
c-0.1,0.1-0.1,0.1-0.2,0.2c-0.1,0.1-0.2,0.1-0.4,0.2c-0.1,0-0.3,0.1-0.4,0.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.4,0-0.6-0.1
|
||||
c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.2-0.4-0.2-0.6c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4-0.1-0.6v-1
|
||||
c0-0.2,0-0.4,0-0.6c0-0.2,0.1-0.4,0.1-0.6c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.2-0.3,0.3-0.4c0.1-0.1,0.3-0.2,0.4-0.3
|
||||
c0.3-0.1,0.8-0.1,1.2,0c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.3,0.3,0.4c0.1,0.2,0.1,0.4,0.2,0.6l0,0.2h1.6l0-0.3
|
||||
c0-0.4-0.1-0.8-0.3-1.2c-0.2-0.3-0.4-0.6-0.7-0.9c-0.3-0.2-0.6-0.4-1-0.6c-0.7-0.3-1.6-0.3-2.2,0c-0.3,0.1-0.6,0.3-0.8,0.5
|
||||
c-0.2,0.2-0.5,0.4-0.6,0.7c-0.2,0.3-0.3,0.5-0.4,0.8c-0.1,0.3-0.2,0.6-0.3,0.9c-0.1,0.3-0.1,0.6-0.1,1v1c0,0.3,0,0.7,0.1,1
|
||||
c0.1,0.3,0.2,0.7,0.3,0.9c0.1,0.3,0.3,0.6,0.5,0.8c0.2,0.3,0.4,0.5,0.7,0.7c0.3,0.2,0.5,0.4,0.9,0.5
|
||||
C261.5,303.5,261.8,303.5,262.2,303.5L262.2,303.5z M262.2,303.3L262.2,303.3L262.2,303.3L262.2,303.3z"/>
|
||||
<path fill="#FFFFFF" d="M269.2,303.4c0.4,0,0.8-0.1,1.1-0.2c0.4-0.1,0.7-0.3,1-0.5c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.3-0.7,0.3-1.2
|
||||
c0-0.3,0-0.5-0.1-0.8c-0.1-0.2-0.2-0.5-0.4-0.7c-0.2-0.2-0.3-0.4-0.5-0.5c0,0-0.1-0.1-0.1-0.1c0,0,0,0,0,0c0.2-0.1,0.3-0.3,0.5-0.4
|
||||
c0.1-0.2,0.2-0.4,0.3-0.6c0.1-0.2,0.1-0.4,0.1-0.7c0-0.4-0.1-0.8-0.3-1.1c-0.2-0.3-0.4-0.6-0.7-0.8c-0.3-0.2-0.6-0.3-1-0.4
|
||||
c-0.4-0.1-0.7-0.1-1.1-0.1h-2.8v8.9H269.2L269.2,303.4z M267.9,299.5h1.4c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.1,0.4,0.2
|
||||
c0.1,0.1,0.2,0.2,0.3,0.4c0.1,0.1,0.1,0.3,0.1,0.5c0,0.2,0,0.4-0.1,0.5c-0.1,0.2-0.2,0.3-0.3,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
|
||||
c-0.2,0.1-0.4,0.1-0.5,0.1h-1.4V299.5z M270.3,297.4c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.2c-0.2,0.1-0.3,0.1-0.5,0.1
|
||||
h-1.2v-2.1h1.2c0.2,0,0.4,0,0.5,0.1c0.2,0,0.3,0.1,0.4,0.2c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.1,0.1,0.3,0.1,0.5
|
||||
C270.4,297.2,270.4,297.3,270.3,297.4z"/>
|
||||
<polygon fill="#FFFFFF" points="278.2,294.5 276.6,294.5 276.6,303.4 282.3,303.4 282.3,302 278.2,302 "/>
|
||||
<polygon fill="#FFFFFF" points="285.2,299.5 288.7,299.5 288.7,298.1 285.2,298.1 285.2,295.9 289.2,295.9 289.2,294.5 283.6,294.5
|
||||
283.6,303.4 289.2,303.4 289.2,302 285.2,302 "/>
|
||||
<path fill="#FFFFFF" d="M295.6,295.7c-0.3-0.4-0.8-0.7-1.3-0.9c-0.5-0.2-1-0.3-1.7-0.3h-2.2v8.9h2.2c0.6,0,1.2-0.1,1.7-0.3
|
||||
c0.5-0.2,0.9-0.5,1.3-0.9c0.3-0.4,0.6-0.8,0.8-1.3c0.2-0.5,0.3-1.1,0.3-1.7v-0.6c0-0.6-0.1-1.2-0.3-1.7
|
||||
C296.2,296.5,296,296,295.6,295.7z M295.1,298.6v0.6c0,0.4-0.1,0.8-0.2,1.1c-0.1,0.3-0.2,0.6-0.4,0.9c-0.2,0.2-0.4,0.4-0.7,0.6
|
||||
c-0.3,0.1-0.6,0.2-1.1,0.2h-0.6v-6.1h0.6c0.4,0,0.8,0.1,1.1,0.2c0.3,0.1,0.5,0.3,0.7,0.6c0.2,0.2,0.3,0.5,0.4,0.9
|
||||
C295,297.9,295.1,298.2,295.1,298.6z"/>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M128.3,354.3l-0.7-1.1l0.9-0.7c0.1-0.2,0.1-0.5,0-0.8c0-0.3-0.2-0.6-0.3-0.9c-0.4-0.7-0.9-1-1.6-1.1
|
||||
c-0.7-0.1-1.4,0.1-2.2,0.6l-0.3,0.2c-0.8,0.4-1.3,1-1.6,1.6c-0.3,0.6-0.2,1.3,0.1,1.9c0.2,0.3,0.4,0.6,0.6,0.8
|
||||
c0.2,0.2,0.5,0.3,0.7,0.4l1.1-0.4l0.7,1.1l-1.5,0.9c-0.5-0.1-1-0.3-1.5-0.7c-0.5-0.4-0.9-0.8-1.2-1.4c-0.6-1-0.7-2.1-0.4-3.1
|
||||
c0.3-1.1,1.1-1.9,2.2-2.6l0.3-0.1c1.1-0.6,2.2-0.8,3.3-0.6c1.1,0.2,1.9,0.9,2.5,1.9c0.3,0.6,0.5,1.2,0.6,1.8c0.1,0.6,0,1.2-0.2,1.7
|
||||
L128.3,354.3z"/>
|
||||
<path fill="#FFFFFF" d="M124.9,358l0.4,0.5l8-1.5l0.9,1.6l-5.3,6.2l0.2,0.6l-0.9,0.5l-1.5-2.6l0.9-0.5l0.4,0.5l0.9-0.9l-1.4-2.5
|
||||
l-1.2,0.3l0.2,0.6l-0.9,0.5l-1.5-2.6L124.9,358z M128.7,359.5l1,1.8l2.2-2.4l0,0L128.7,359.5z"/>
|
||||
<path fill="#FFFFFF" d="M128.8,367l0.9-0.5l0.6,0.7l5.5-3.2l-0.3-0.9l0.9-0.5l0.5,0.8l0.9,1.5l0.5,0.8l-0.9,0.5l-0.6-0.7l-5.4,3.1
|
||||
l1.2,2.2l1-0.5l0.7,1.2l-2.1,1.2L128.8,367z"/>
|
||||
<path fill="#FFFFFF" d="M132.8,373.9l0.9-0.5l0.6,0.7l5.5-3.2l-0.3-0.9l0.9-0.5l0.5,0.8l0.9,1.5l0.5,0.8l-0.9,0.5l-0.6-0.7
|
||||
l-5.4,3.1l1.2,2.2l1-0.5l0.7,1.2l-2.1,1.2L132.8,373.9z"/>
|
||||
<path fill="#FFFFFF" d="M143.6,377l0.9-0.5l1.8,3.2l-0.9,0.5l-0.6-0.7l-5.5,3.2l0.3,0.9l-0.9,0.5l-1.8-3.2l0.9-0.5l0.6,0.7l5.5-3.2
|
||||
L143.6,377z"/>
|
||||
<path fill="#FFFFFF" d="M147.2,390c-1.1,0.6-2.2,0.9-3.3,0.6c-1.1-0.2-2-0.8-2.6-1.9c-0.6-1-0.7-2.1-0.4-3.1
|
||||
c0.4-1.1,1.1-1.9,2.2-2.6l0.1-0.1c1.1-0.6,2.2-0.9,3.3-0.7c1.1,0.2,1.9,0.8,2.5,1.9c0.6,1,0.7,2.1,0.4,3.2
|
||||
c-0.4,1.1-1.1,1.9-2.2,2.6L147.2,390z M146.4,388.4c0.8-0.5,1.3-1,1.6-1.6c0.3-0.6,0.3-1.2-0.1-1.9c-0.4-0.6-0.9-1-1.6-1
|
||||
c-0.7,0-1.4,0.2-2.2,0.6l-0.1,0.1c-0.8,0.5-1.4,1-1.7,1.6c-0.3,0.6-0.3,1.2,0.1,1.9c0.4,0.6,0.9,1,1.6,1c0.7,0,1.4-0.2,2.2-0.6
|
||||
L146.4,388.4z"/>
|
||||
<path fill="#FFFFFF" d="M153.9,392.7c0.5,0.9,0.7,1.7,0.5,2.5c-0.2,0.8-0.6,1.4-1.3,1.8c-0.7,0.4-1.5,0.5-2.2,0.3
|
||||
c-0.7-0.2-1.4-0.8-1.9-1.7l-0.7-1.3l-1.7,1l0.3,0.9l-0.9,0.5l-1.8-3.2l0.9-0.5l0.6,0.7l5.5-3.2l-0.3-0.9l0.9-0.5l0.5,0.8
|
||||
L153.9,392.7z M149.5,393.5l0.7,1.3c0.2,0.4,0.6,0.7,0.9,0.8c0.4,0.1,0.7,0,1.1-0.2c0.4-0.2,0.6-0.5,0.7-0.9c0.1-0.4,0-0.7-0.2-1.2
|
||||
l-0.7-1.3L149.5,393.5z"/>
|
||||
<path fill="#FFFFFF" d="M154.8,404l-1.5-2.6l-2.2,1.3l1.4,2.5l1-0.5l0.7,1.2l-2.1,1.2l-3.5-6l0.9-0.5l0.6,0.7l5.5-3.2l-0.3-0.9
|
||||
l0.9-0.5l0.5,0.8l3,5.2l-2.1,1.2l-0.7-1.2l0.9-0.6l-1.4-2.4l-1.9,1.1l1.5,2.6L154.8,404z"/>
|
||||
<path fill="#FFFFFF" d="M113.9,357.7l-1.3,0.9c0.7,0,1.3,0.1,1.8,0.3c0.5,0.3,1,0.7,1.3,1.3c0.3,0.6,0.5,1.1,0.5,1.6
|
||||
s-0.2,1-0.6,1.4c0.6,0,1.1,0.2,1.6,0.4c0.5,0.3,0.9,0.7,1.2,1.2c0.2,0.4,0.4,0.9,0.5,1.3c0.1,0.4,0,0.9-0.1,1.3
|
||||
c-0.2,0.4-0.4,0.9-0.8,1.3c-0.4,0.4-0.9,0.8-1.6,1.2l-9.5,5.5l-1.6-2.7l9.6-5.5c0.5-0.3,0.8-0.6,0.9-1c0.1-0.3,0-0.7-0.2-1
|
||||
c-0.2-0.3-0.4-0.5-0.7-0.6c-0.3-0.1-0.6-0.1-0.9-0.1l-10.1,5.8l-1.5-2.6l9.6-5.5c0.5-0.3,0.8-0.6,0.9-0.9c0.1-0.3,0-0.7-0.2-1
|
||||
c-0.2-0.3-0.4-0.6-0.7-0.7c-0.3-0.1-0.5-0.1-0.8-0.1l-10.1,5.9l-1.6-2.7l13-7.6L113.9,357.7z"/>
|
||||
<path fill="#FFFFFF" d="M121.9,371.5l4,7l-10.7,6.2l2.2,3.9l-2.4,1.4l-6.3-10.8l2.4-1.4l2.3,4.1l8.3-4.8l-2.3-4.1L121.9,371.5z
|
||||
M127.5,373.3c0.4-0.3,0.9-0.3,1.4-0.2c0.5,0.1,0.8,0.4,1.1,1c0.3,0.5,0.4,1,0.3,1.5s-0.4,0.8-0.9,1.1c-0.5,0.3-0.9,0.3-1.4,0.2
|
||||
c-0.5-0.1-0.8-0.5-1.2-1c-0.3-0.5-0.4-1-0.3-1.5C126.8,374,127.1,373.6,127.5,373.3z"/>
|
||||
<path fill="#FFFFFF" d="M131.7,388.4l-1.7,1.2c0.9,0.1,1.8,0.4,2.5,0.8c0.7,0.5,1.4,1.1,1.8,1.9c0.4,0.7,0.6,1.3,0.8,2
|
||||
c0.1,0.7,0.1,1.3-0.1,1.9c-0.2,0.6-0.5,1.3-1.1,1.9c-0.5,0.6-1.2,1.2-2.2,1.7l-8.2,4.7l-1.7-2.9l8.1-4.7c0.5-0.3,1-0.6,1.2-1
|
||||
s0.5-0.7,0.6-1c0.1-0.4,0.1-0.7,0-1.1c-0.1-0.4-0.3-0.8-0.5-1.2c-0.4-0.6-0.8-1.1-1.4-1.4c-0.6-0.3-1.2-0.5-1.8-0.5l-9.4,5.4
|
||||
l-1.7-2.9l13-7.6L131.7,388.4z"/>
|
||||
<path fill="#FFFFFF" d="M138.5,400.4l4,7l-10.7,6.2l2.2,3.9l-2.4,1.4l-6.3-10.8l2.4-1.4l2.3,4.1l8.3-4.8l-2.3-4.1L138.5,400.4z
|
||||
M144.1,402.2c0.4-0.3,0.9-0.3,1.4-0.2c0.5,0.1,0.8,0.4,1.1,1c0.3,0.5,0.4,1,0.3,1.5s-0.4,0.8-0.9,1.1c-0.5,0.3-0.9,0.3-1.4,0.2
|
||||
c-0.5-0.1-0.8-0.5-1.2-1c-0.3-0.5-0.4-1-0.3-1.5C143.4,402.8,143.7,402.5,144.1,402.2z"/>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M126.3,333.7l-3.9-6.8c-0.6-1-1.9-1.4-2.9-0.8c0,0-5.8,3.3-5.1,2.9c4.3-2.4,5.8-7.9,3.3-12.2
|
||||
c-2.4-4.3-7.9-5.8-12.2-3.3c-0.6,0.4-5.2,3-8.5,4.9l-12.1-5.3c-8.3-3.5-16.3,5.5-11.8,13.3l1.1,1.8c6.1-2.5,14.2-4.7,20.6-3.5
|
||||
l0.1,0.2l4.7,8.2c-2.2,6.1-8.3,11.7-13.6,15.7l1.5,2.6c1.6,2.9,5.3,3.9,8.2,2.3l19.9-11.3l10.1-5.7
|
||||
C126.5,336,126.9,334.7,126.3,333.7z M111.1,316.7l3.6,6.4l-4.3,2.5c-1.4,0.8-3.2,0.3-4-1.1l-0.8-1.3c-0.8-1.4-0.3-3.2,1.1-4
|
||||
L111.1,316.7z M97.7,322.3l7.2-0.3l-4.6,4.9L97.7,322.3z M100.4,327.1l6.6-1.4l-3.9,6.1L100.4,327.1z M110.2,333.2l9.5-5.4
|
||||
l4.4,7.7l-9.5,5.4L110.2,333.2z"/>
|
||||
<path fill="#FFFFFF" d="M83.6,344.8c0.6-5.8,6.4-13.5,11.2-19.9l-17,9.7L83.6,344.8z"/>
|
||||
</g>
|
||||
</g>
|
||||
<circle fill="none" cx="393.4" cy="485.9" r="15.7"/>
|
||||
<circle fill="none" cx="138" cy="487.1" r="15.7"/>
|
||||
<path id="EDGE_P3" fill="#EFDA48" d="M522.4,232.8c-0.6,0-1.3-0.1-1.9-0.1c-18.2,0-32.9,14.7-32.9,32.9s14.7,32.9,32.9,32.9
|
||||
c0.9,0,1.8,0,2.7-0.1c16.9-1.4,30.2-15.5,30.2-32.8C553.4,248.1,539.7,233.8,522.4,232.8z M520.5,281c-8.5,0-15.6-6.8-15.7-15.6
|
||||
c0.1-8.6,7-15.6,15.7-15.6c8.6,0,15.6,7,15.7,15.6C536.1,274.1,529.2,281,520.5,281z"/>
|
||||
<path id="EDGE_P2" fill="#EFDA48" d="M393.4,453c-18.2,0-32.9,14.7-32.9,32.9c0,18.2,14.7,32.9,32.9,32.9
|
||||
c18.2,0,32.9-14.7,32.9-32.9C426.1,467.8,411.3,453,393.4,453z M393.4,501.5c-8.6,0-15.7-6.9-15.7-15.7c0-8.6,6.9-15.7,15.7-15.7
|
||||
c8.6,0,15.7,6.9,15.7,15.7C408.9,494.4,401.9,501.5,393.4,501.5z"/>
|
||||
<path id="EDGE_P1" fill="#EFDA48" d="M138,454.2c-18.2,0-32.9,14.7-32.9,32.9c0,18.2,14.7,32.9,32.9,32.9s32.9-14.7,32.9-32.9
|
||||
C170.9,469.1,156.1,454.2,138,454.2z M138,502.8c-8.6,0-15.7-6.9-15.7-15.7c0-8.8,6.9-15.7,15.7-15.7s15.7,6.9,15.7,15.7
|
||||
C153.6,495.9,146.7,502.8,138,502.8z"/>
|
||||
<path id="EDGE_GND" fill="#EFDA48" d="M160.6,20c-6-6.2-14.4-10-23.6-10C118.7,10,104,24.7,104,42.9c0,5.8,1.5,11.2,4.1,15.9
|
||||
c5.6,10.2,16.4,17,28.8,17c18.2,0,32.9-14.7,32.9-32.9C169.8,34,166.3,25.9,160.6,20z M136.9,58.4c-8.7,0-15.7-7.1-15.7-15.7
|
||||
s6.9-15.7,15.7-15.7c8.7,0,15.7,6.9,15.7,15.7S145.5,58.4,136.9,58.4z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 58 KiB |
BIN
docs/static/Microsoft-logo_rgb_c-gray-square.png
vendored
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
docs/static/Microsoft-logo_rgb_c-white.png
vendored
Normal file
After Width: | Height: | Size: 12 KiB |
145
docs/static/avatar.svg
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Ebene_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 175.49999 172.4"
|
||||
enable-background="new 0 0 841.9 595.3"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="Logo_Calliope_Woman.svg"
|
||||
width="175.5"
|
||||
height="172.39999"><metadata
|
||||
id="metadata5011"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs5009" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1137"
|
||||
id="namedview5007"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.34208337"
|
||||
inkscape:cx="420.95001"
|
||||
inkscape:cy="297.64999"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="156"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Ebene_1" /><g
|
||||
id="g4955"
|
||||
transform="translate(-260.90025,-204.1)"><g
|
||||
id="g4957"><defs
|
||||
id="defs4959"><rect
|
||||
id="SVGID_7_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_1_"><use
|
||||
xlink:href="#SVGID_7_"
|
||||
overflow="visible"
|
||||
id="use4963"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath></g><g
|
||||
id="g4965"><defs
|
||||
id="defs4967"><rect
|
||||
id="SVGID_9_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_2_"><use
|
||||
xlink:href="#SVGID_9_"
|
||||
overflow="visible"
|
||||
id="use4971"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath></g><g
|
||||
id="g4973"><defs
|
||||
id="defs4975"><rect
|
||||
id="SVGID_11_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_3_"><use
|
||||
xlink:href="#SVGID_11_"
|
||||
overflow="visible"
|
||||
id="use4979"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><path
|
||||
clip-path="url(#SVGID_3_)"
|
||||
d="m 436.4,262 -47.9,0 0,-46 c 0,-4.7 3.8,-8.4 8.4,-8.4 l 31,0 c 4.7,0 8.4,3.8 8.4,8.4 l 0,46 z"
|
||||
id="path4981"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#4a5261" /></g><rect
|
||||
x="394.79999"
|
||||
y="218.7"
|
||||
width="35.099998"
|
||||
height="43.200001"
|
||||
id="rect4983"
|
||||
style="fill:#8096a1" /><path
|
||||
d="m 317.6,239.5 0,61 71,0.2 c 0,0 0,-57.3 0,-61 0,-19.5 -16.1,-35.6 -35.6,-35.6 -19.6,0 -35.4,15.8 -35.4,35.4"
|
||||
id="path4985"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#855c33" /><path
|
||||
d="m 412.4,376.5 -114.2,0 c -35.6,0 -50.9,-45.2 -22.6,-66.8 l 63.8,-47.8 96.9,0 0,90.7 c 0.1,13.2 -10.6,23.9 -23.9,23.9"
|
||||
id="path4987"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#26a6ab" /><polygon
|
||||
points="345.7,257.3 334.8,298.8 285.1,302.5 "
|
||||
id="polygon4989"
|
||||
style="fill:#42c9c9" /><polygon
|
||||
points="354,283.8 332.5,283.8 345.7,257.3 "
|
||||
id="polygon4991"
|
||||
style="fill:#f7f5e8" /><polygon
|
||||
points="375.4,283.8 354,283.8 362.2,257.3 "
|
||||
id="polygon4993"
|
||||
style="fill:#f7f5e8" /><polygon
|
||||
points="373.1,298.8 334.8,298.8 332.5,283.8 375.4,283.8 "
|
||||
id="polygon4995"
|
||||
style="fill:#bdd1cf" /><path
|
||||
d="m 400.6,376.5 c -3.5,-26.2 -10.6,-58 -27.3,-77.7 l -0.2,0 -19,0 -19,0 -0.2,0 c -16.7,19.8 -23.8,51.5 -27.3,77.7 l 93,0 z"
|
||||
id="path4997"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f7f5e8" /><path
|
||||
d="m 357,258 -6.1,0 c -6.4,0 -11.5,-5.2 -11.5,-11.5 l 0,-19.7 29.2,0 0,19.7 c -0.1,6.3 -5.3,11.5 -11.6,11.5"
|
||||
id="path4999"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffcc99" /><path
|
||||
d="m 335.8,376.5 0,-77.7 c 12.4,29.1 27.7,64.3 46.5,77.7 l -46.5,0 z"
|
||||
id="path5001"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#bdd1cf" /><polygon
|
||||
points="362.2,257.3 345.7,257.3 354,283.8 "
|
||||
id="polygon5003"
|
||||
style="fill:#ffcc99" /><polygon
|
||||
points="436.4,315.3 394.8,262 436.4,262 "
|
||||
id="polygon5005"
|
||||
style="fill:#42c9c9" /></g></svg>
|
After Width: | Height: | Size: 5.2 KiB |
145
docs/static/loader.svg
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Ebene_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 175.49999 172.4"
|
||||
enable-background="new 0 0 841.9 595.3"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="Logo_Calliope_Woman.svg"
|
||||
width="175.5"
|
||||
height="172.39999"><metadata
|
||||
id="metadata5011"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs5009" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1137"
|
||||
id="namedview5007"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.34208337"
|
||||
inkscape:cx="420.95001"
|
||||
inkscape:cy="297.64999"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="156"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Ebene_1" /><g
|
||||
id="g4955"
|
||||
transform="translate(-260.90025,-204.1)"><g
|
||||
id="g4957"><defs
|
||||
id="defs4959"><rect
|
||||
id="SVGID_7_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_1_"><use
|
||||
xlink:href="#SVGID_7_"
|
||||
overflow="visible"
|
||||
id="use4963"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath></g><g
|
||||
id="g4965"><defs
|
||||
id="defs4967"><rect
|
||||
id="SVGID_9_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_2_"><use
|
||||
xlink:href="#SVGID_9_"
|
||||
overflow="visible"
|
||||
id="use4971"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath></g><g
|
||||
id="g4973"><defs
|
||||
id="defs4975"><rect
|
||||
id="SVGID_11_"
|
||||
x="193.10001"
|
||||
y="204.10001"
|
||||
width="318.29999"
|
||||
height="256.29999" /></defs><clipPath
|
||||
id="SVGID_3_"><use
|
||||
xlink:href="#SVGID_11_"
|
||||
overflow="visible"
|
||||
id="use4979"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><path
|
||||
clip-path="url(#SVGID_3_)"
|
||||
d="m 436.4,262 -47.9,0 0,-46 c 0,-4.7 3.8,-8.4 8.4,-8.4 l 31,0 c 4.7,0 8.4,3.8 8.4,8.4 l 0,46 z"
|
||||
id="path4981"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#4a5261" /></g><rect
|
||||
x="394.79999"
|
||||
y="218.7"
|
||||
width="35.099998"
|
||||
height="43.200001"
|
||||
id="rect4983"
|
||||
style="fill:#8096a1" /><path
|
||||
d="m 317.6,239.5 0,61 71,0.2 c 0,0 0,-57.3 0,-61 0,-19.5 -16.1,-35.6 -35.6,-35.6 -19.6,0 -35.4,15.8 -35.4,35.4"
|
||||
id="path4985"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#855c33" /><path
|
||||
d="m 412.4,376.5 -114.2,0 c -35.6,0 -50.9,-45.2 -22.6,-66.8 l 63.8,-47.8 96.9,0 0,90.7 c 0.1,13.2 -10.6,23.9 -23.9,23.9"
|
||||
id="path4987"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#26a6ab" /><polygon
|
||||
points="345.7,257.3 334.8,298.8 285.1,302.5 "
|
||||
id="polygon4989"
|
||||
style="fill:#42c9c9" /><polygon
|
||||
points="354,283.8 332.5,283.8 345.7,257.3 "
|
||||
id="polygon4991"
|
||||
style="fill:#f7f5e8" /><polygon
|
||||
points="375.4,283.8 354,283.8 362.2,257.3 "
|
||||
id="polygon4993"
|
||||
style="fill:#f7f5e8" /><polygon
|
||||
points="373.1,298.8 334.8,298.8 332.5,283.8 375.4,283.8 "
|
||||
id="polygon4995"
|
||||
style="fill:#bdd1cf" /><path
|
||||
d="m 400.6,376.5 c -3.5,-26.2 -10.6,-58 -27.3,-77.7 l -0.2,0 -19,0 -19,0 -0.2,0 c -16.7,19.8 -23.8,51.5 -27.3,77.7 l 93,0 z"
|
||||
id="path4997"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f7f5e8" /><path
|
||||
d="m 357,258 -6.1,0 c -6.4,0 -11.5,-5.2 -11.5,-11.5 l 0,-19.7 29.2,0 0,19.7 c -0.1,6.3 -5.3,11.5 -11.6,11.5"
|
||||
id="path4999"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffcc99" /><path
|
||||
d="m 335.8,376.5 0,-77.7 c 12.4,29.1 27.7,64.3 46.5,77.7 l -46.5,0 z"
|
||||
id="path5001"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#bdd1cf" /><polygon
|
||||
points="362.2,257.3 345.7,257.3 354,283.8 "
|
||||
id="polygon5003"
|
||||
style="fill:#ffcc99" /><polygon
|
||||
points="436.4,315.3 394.8,262 436.4,262 "
|
||||
id="polygon5005"
|
||||
style="fill:#42c9c9" /></g></svg>
|
After Width: | Height: | Size: 5.2 KiB |
61
docs/static/logo.portrait.black.svg
vendored
@ -1,61 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
xml:space="preserve"
|
||||
enable-background="new 0 0 280 32.755"
|
||||
height="34.210526104448945"
|
||||
width="195.47368473887764"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logo.portrait.black.svg"><sodipodi:namedview
|
||||
pagecolor="#ff00ff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1536"
|
||||
inkscape:window-height="801"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.6367355"
|
||||
inkscape:cx="106.22094"
|
||||
inkscape:cy="5.7691884"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" /><rect
|
||||
id="backgroundrect"
|
||||
width="100%"
|
||||
height="100%"
|
||||
x="0"
|
||||
y="0"
|
||||
fill="none"
|
||||
stroke="none"
|
||||
class="" /><title
|
||||
id="title"
|
||||
lang="en-GB">BBC micro:bit</title><desc
|
||||
id="desc"
|
||||
lang="en-GB">BBC micro:bit logo</desc><metadata
|
||||
id="metadata37"><rdf:rdf><cc:work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:work></rdf:rdf><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>BBC micro:bit</dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs35" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
class=""
|
||||
d="m 38.349339,21.473763 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 m -22.311,-6.077 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.9900001 22.576,0 c 4.979,0 9.027,4.0470001 9.027,9.0270001 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.0299997,-4.053 -9.0299997,-9.031 -0.001,-4.98 4.0529997,-9.0270001 9.0299997,-9.0270001 m 22.576,24.0760001 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.0510001 -15.047,-15.0510001 l -22.576,0 c -8.2989997,0 -15.04899969,6.7520001 -15.04899969,15.0510001 0,8.299 6.74999999,15.049 15.04899969,15.049 l 22.576,0 m 112.098991,-21.953 c 0,-1.453 -1.195,-2.6330001 -2.662,-2.6330001 -1.455,0 -2.639,1.1800001 -2.639,2.6330001 0,1.471 1.184,2.672 2.639,2.672 1.466,0 2.662,-1.202 2.662,-2.672 z m -66.785991,5.445 c 0,-4.764 -2.893,-8.0930001 -7.031,-8.0930001 -2.027,0 -3.814,0.851 -5.223,2.4700001 -1.467,-1.6610001 -3.152,-2.4700001 -5.127,-2.4700001 -4.162,0 -7.066,3.3290001 -7.066,8.0930001 l 0,10.466 3.812,0 0,-10.644 c 0,-2.416 1.336,-4.104 3.254,-4.104 1.617,0 3.25,1.409 3.25,4.104 l 0,10.645 3.848,0 0,-10.645 c 0,-2.416 1.338,-4.104 3.252,-4.104 1.863,0 3.217,1.727 3.217,4.104 l 0,10.645 3.814,0 0,-10.467 z m 6.953,-7.6320001 -3.846,0 0,18.0990001 3.846,0 0,-18.0990001 z m 0.569,-5.128 c 0,-1.377 -1.096,-2.454 -2.492,-2.454 -1.4,0 -2.453,1.054 -2.453,2.454 0,1.398 1.078,2.494 2.453,2.494 1.375,0 2.492,-1.117 2.492,-2.494 z m 18.327991,20.9140001 0.576,-0.521 -2.828,-2.658 -0.488,0.455 c -1.252,1.149 -2.504,1.686 -3.945,1.686 -3.064,0 -5.556991,-2.557 -5.556991,-5.699 0,-3.121 2.491991,-5.66 5.556991,-5.66 1.432,0 2.646,0.521 3.949,1.693 l 0.512,0.46 2.748,-2.802 -0.49,-0.502 c -1.754,-1.7930001 -4.016,-2.6960001 -6.719,-2.6960001 -2.459,0 -4.868991,1.022 -6.604991,2.7980001 -1.738,1.734 -2.691,4.119 -2.691,6.709 0,2.596 0.953,4.979 2.684,6.705 1.771,1.811 4.116991,2.811 6.614991,2.811 2.401,-0.003 4.647,-0.937 6.682,-2.779 z m 7.25,-6.947 c 0,-3.322 1.145,-4.686 4.217,-5.029 l 0.641,-0.07 0,-3.7970001 -0.777,0.058 c -5.629,0.458 -8.143,3.2470001 -8.143,9.0480001 l 0,9.051 4.062,0 0,-9.261 0,0 z m 21.998,6.923 c 1.762,-1.756 2.729,-4.146 2.729,-6.715 0,-2.565 -0.967,-4.951 -2.723,-6.702 -1.77,-1.8090001 -4.105,-2.8060001 -6.576,-2.8060001 -2.492,0 -4.84,0.997 -6.613,2.8060001 -1.752,1.792 -2.721,4.174 -2.721,6.702 0,2.53 0.969,4.916 2.721,6.707 1.771,1.81 4.121,2.808 6.613,2.808 2.472,0 4.808,-0.998 6.57,-2.8 z m -1.229,-6.714 c 0,3.18 -2.361,5.665 -5.377,5.665 -2.945,0 -5.346,-2.541 -5.346,-5.665 0,-3.137 2.398,-5.695 5.346,-5.695 2.963,-0.002 5.377,2.558 5.377,5.695 z m 12.917,6.418 c 0,-1.468 -1.195,-2.667 -2.662,-2.667 -1.455,0 -2.639,1.199 -2.639,2.667 0,1.453 1.184,2.632 2.639,2.632 1.466,0 2.662,-1.179 2.662,-2.632 z m 19.507,0.296 c 1.76,-1.756 2.73,-4.146 2.73,-6.715 0,-2.528 -0.973,-4.911 -2.729,-6.702 -1.746,-1.7870001 -4.08,-2.7700001 -6.574,-2.7700001 -2.035,0 -3.84,0.572 -5.484,1.7440001 l 0,-9.93400015 -3.816,0 0.008,15.58200015 c -0.037,0.411 -0.037,0.821 -0.037,1.198 0,6.119 3.836,10.396 9.33,10.396 2.475,10e-4 4.807,-0.997 6.572,-2.799 z m -1.013,-6.677 c 0,3.123 -2.494,5.66 -5.559,5.66 -3.115,0 -5.557,-2.484 -5.557,-5.66 0,-3.143 2.494,-5.698 5.557,-5.698 3.065,0 5.559,2.556 5.559,5.698 z m 10.881,-9.0850001 -3.846,0 0,18.0990001 3.846,0 0,-18.0990001 z m 0.572,-5.128 c 0,-1.377 -1.098,-2.454 -2.492,-2.454 -1.4,0 -2.457,1.054 -2.457,2.454 0,1.398 1.076,2.494 2.457,2.494 1.373,0 2.492,-1.117 2.492,-2.494 z m 13.83,19.7590001 -0.619,-0.089 c -2.855,-0.409 -4.133,-2.104 -4.133,-5.495 l 0,-5.126 4.752,0 0,-3.6740001 -4.752,0 0,-4.006 -3.887,0 0,4.006 -1.662,0 0,3.6740001 1.662,0 0,4.525 c 0,6.215 2.113,8.932 7.783,10.029 l 0.855,0.164 0,-4.008 10e-4,0 z"
|
||||
id="path21"
|
||||
style="fill:#000000" /></svg>
|
Before Width: | Height: | Size: 5.9 KiB |
65
docs/static/logo.portrait.white.svg
vendored
@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
xml:space="preserve"
|
||||
enable-background="new 0 0 280 32.755"
|
||||
height="34.210526104448945"
|
||||
width="195.47368473887764"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logo.portrait.white.svg"><sodipodi:namedview
|
||||
pagecolor="#ff00ff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1536"
|
||||
inkscape:window-height="801"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.6367355"
|
||||
inkscape:cx="106.22094"
|
||||
inkscape:cy="5.7691884"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" /><rect
|
||||
id="backgroundrect"
|
||||
width="100%"
|
||||
height="100%"
|
||||
x="0"
|
||||
y="0"
|
||||
fill="none"
|
||||
stroke="none"
|
||||
class="" /><title
|
||||
id="title"
|
||||
lang="en-GB">BBC micro:bit</title><desc
|
||||
id="desc"
|
||||
lang="en-GB">BBC micro:bit logo</desc><metadata
|
||||
id="metadata37"><rdf:rdf><cc:work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:work></rdf:rdf><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>BBC micro:bit</dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs35" /><g
|
||||
class="currentLayer"
|
||||
id="g9"
|
||||
transform="translate(-0.35013519,1.2540786)"><title
|
||||
id="title11">Layer 1</title><path
|
||||
style="fill:#ffffff"
|
||||
id="path21"
|
||||
d="m 38.699474,20.219684 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 m -22.311,-6.077 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.9899997 22.576,0 c 4.979,0 9.027,4.0469997 9.027,9.0269997 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.0299995,-4.053 -9.0299995,-9.031 -10e-4,-4.98 4.0529995,-9.0269997 9.0299995,-9.0269997 m 22.576,24.0759997 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.2989997 -6.748,-15.0509997 -15.047,-15.0509997 l -22.576,0 c -8.2989995,0 -15.0489995,6.752 -15.0489995,15.0509997 0,8.299 6.75,15.049 15.0489995,15.049 l 22.576,0 m 112.098996,-21.953 c 0,-1.4529997 -1.195,-2.6329997 -2.662,-2.6329997 -1.455,0 -2.639,1.18 -2.639,2.6329997 0,1.471 1.184,2.672 2.639,2.672 1.466,0 2.662,-1.202 2.662,-2.672 z m -66.785996,5.445 c 0,-4.764 -2.893,-8.0929997 -7.031,-8.0929997 -2.027,0 -3.814,0.851 -5.223,2.4699997 -1.467,-1.6609997 -3.152,-2.4699997 -5.127,-2.4699997 -4.162,0 -7.066,3.3289997 -7.066,8.0929997 l 0,10.466 3.812,0 0,-10.644 c 0,-2.416 1.336,-4.104 3.254,-4.104 1.617,0 3.25,1.409 3.25,4.104 l 0,10.645 3.848,0 0,-10.645 c 0,-2.416 1.338,-4.104 3.252,-4.104 1.863,0 3.217,1.727 3.217,4.104 l 0,10.645 3.814,0 0,-10.467 z m 6.953,-7.6319997 -3.846,0 0,18.0989997 3.846,0 0,-18.0989997 z m 0.569,-5.128 c 0,-1.377 -1.096,-2.45400005 -2.492,-2.45400005 -1.4,0 -2.453,1.05400005 -2.453,2.45400005 0,1.398 1.078,2.494 2.453,2.494 1.375,0 2.492,-1.117 2.492,-2.494 z m 18.327996,20.9139997 0.576,-0.521 -2.828,-2.658 -0.488,0.455 c -1.252,1.149 -2.504,1.686 -3.945,1.686 -3.064,0 -5.556996,-2.557 -5.556996,-5.699 0,-3.121 2.491996,-5.66 5.556996,-5.66 1.432,0 2.646,0.521 3.949,1.693 l 0.512,0.46 2.748,-2.802 -0.49,-0.502 c -1.754,-1.7929997 -4.016,-2.6959997 -6.719,-2.6959997 -2.459,0 -4.868996,1.022 -6.604996,2.7979997 -1.738,1.734 -2.691,4.119 -2.691,6.709 0,2.596 0.953,4.979 2.684,6.705 1.771,1.811 4.116996,2.811 6.614996,2.811 2.401,-0.003 4.647,-0.937 6.682,-2.779 z m 7.25,-6.947 c 0,-3.322 1.145,-4.686 4.217,-5.029 l 0.641,-0.07 0,-3.7969997 -0.777,0.058 c -5.629,0.458 -8.143,3.2469997 -8.143,9.0479997 l 0,9.051 4.062,0 0,-9.261 0,0 z m 21.998,6.923 c 1.762,-1.756 2.729,-4.146 2.729,-6.715 0,-2.565 -0.967,-4.951 -2.723,-6.702 -1.77,-1.8089997 -4.105,-2.8059997 -6.576,-2.8059997 -2.492,0 -4.84,0.997 -6.613,2.8059997 -1.752,1.792 -2.721,4.174 -2.721,6.702 0,2.53 0.969,4.916 2.721,6.707 1.771,1.81 4.121,2.808 6.613,2.808 2.472,0 4.808,-0.998 6.57,-2.8 z m -1.229,-6.714 c 0,3.18 -2.361,5.665 -5.377,5.665 -2.945,0 -5.346,-2.541 -5.346,-5.665 0,-3.137 2.398,-5.695 5.346,-5.695 2.963,-0.002 5.377,2.558 5.377,5.695 z m 12.917,6.418 c 0,-1.468 -1.195,-2.667 -2.662,-2.667 -1.455,0 -2.639,1.199 -2.639,2.667 0,1.453 1.184,2.632 2.639,2.632 1.466,0 2.662,-1.179 2.662,-2.632 z m 19.507,0.296 c 1.76,-1.756 2.73,-4.146 2.73,-6.715 0,-2.528 -0.973,-4.911 -2.729,-6.702 -1.746,-1.7869997 -4.08,-2.7699997 -6.574,-2.7699997 -2.035,0 -3.84,0.572 -5.484,1.744 l 0,-9.93400005 -3.816,0 0.008,15.58199975 c -0.037,0.411 -0.037,0.821 -0.037,1.198 0,6.119 3.836,10.396 9.33,10.396 2.475,10e-4 4.807,-0.997 6.572,-2.799 z m -1.013,-6.677 c 0,3.123 -2.494,5.66 -5.559,5.66 -3.115,0 -5.557,-2.484 -5.557,-5.66 0,-3.143 2.494,-5.698 5.557,-5.698 3.065,0 5.559,2.556 5.559,5.698 z m 10.881,-9.0849997 -3.846,0 0,18.0989997 3.846,0 0,-18.0989997 z m 0.572,-5.128 c 0,-1.377 -1.098,-2.45400005 -2.492,-2.45400005 -1.4,0 -2.457,1.05400005 -2.457,2.45400005 0,1.398 1.076,2.494 2.457,2.494 1.373,0 2.492,-1.117 2.492,-2.494 z m 13.83,19.7589997 -0.619,-0.089 c -2.855,-0.409 -4.133,-2.104 -4.133,-5.495 l 0,-5.126 4.752,0 0,-3.6739997 -4.752,0 0,-4.006 -3.887,0 0,4.006 -1.662,0 0,3.6739997 1.662,0 0,4.525 c 0,6.215 2.113,8.932 7.783,10.029 l 0.855,0.164 0,-4.008 0.001,0 z"
|
||||
class=""
|
||||
inkscape:connector-curvature="0" /></g></svg>
|
Before Width: | Height: | Size: 6.0 KiB |
61
docs/static/logo.square.black.svg
vendored
@ -1,61 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
xml:space="preserve"
|
||||
enable-background="new 0 0 280 32.755"
|
||||
height="52.672001"
|
||||
width="52.672001"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logo.square.black.svg"><sodipodi:namedview
|
||||
pagecolor="#ff00ff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1536"
|
||||
inkscape:window-height="801"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.0836233"
|
||||
inkscape:cx="83.390493"
|
||||
inkscape:cy="16.071144"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" /><rect
|
||||
id="backgroundrect"
|
||||
width="195.47368"
|
||||
height="34.210526"
|
||||
x="0"
|
||||
y="18.461473"
|
||||
class=""
|
||||
style="fill:none;stroke:none" /><title
|
||||
id="title"
|
||||
lang="en-GB">BBC micro:bit</title><desc
|
||||
id="desc"
|
||||
lang="en-GB">BBC micro:bit logo</desc><metadata
|
||||
id="metadata37"><rdf:rdf><cc:work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:work></rdf:rdf><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>BBC micro:bit</dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs35" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
class=""
|
||||
d="m 37.363,29.377 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 M 15.052,23.3 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.99 22.576,0 c 4.979,0 9.027,4.047 9.027,9.027 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.0299993,-4.053 -9.0299993,-9.031 C 6.0180007,21.357 10.072,17.31 15.049,17.31 m 22.576,24.076 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.051 -15.047,-15.051 l -22.576,0 C 6.7500007,11.286 6.9250488e-7,18.038 6.9250488e-7,26.337 6.9250488e-7,34.636 6.7500007,41.386 15.049,41.386 l 22.576,0"
|
||||
id="path21"
|
||||
style="fill:#000000"
|
||||
sodipodi:nodetypes="csssccsssccsssscccsssssc" /></svg>
|
Before Width: | Height: | Size: 2.8 KiB |
61
docs/static/logo.square.white.svg
vendored
@ -1,61 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
xml:space="preserve"
|
||||
enable-background="new 0 0 280 32.755"
|
||||
height="52.672001"
|
||||
width="52.672001"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logo.square.white.svg"><sodipodi:namedview
|
||||
pagecolor="#ff00ff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1536"
|
||||
inkscape:window-height="801"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.0836233"
|
||||
inkscape:cx="83.390493"
|
||||
inkscape:cy="16.071144"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" /><rect
|
||||
id="backgroundrect"
|
||||
width="195.47368"
|
||||
height="34.210526"
|
||||
x="0"
|
||||
y="18.461473"
|
||||
class=""
|
||||
style="fill:none;stroke:none" /><title
|
||||
id="title"
|
||||
lang="en-GB">BBC micro:bit</title><desc
|
||||
id="desc"
|
||||
lang="en-GB">BBC micro:bit logo</desc><metadata
|
||||
id="metadata37"><rdf:rdf><cc:work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:work></rdf:rdf><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>BBC micro:bit</dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs35" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
class=""
|
||||
d="m 37.363,29.377 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 M 15.052,23.3 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.99 22.576,0 c 4.979,0 9.027,4.047 9.027,9.027 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.0299993,-4.053 -9.0299993,-9.031 C 6.0180007,21.357 10.072,17.31 15.049,17.31 m 22.576,24.076 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.051 -15.047,-15.051 l -22.576,0 C 6.7500007,11.286 6.9250488e-7,18.038 6.9250488e-7,26.337 6.9250488e-7,34.636 6.7500007,41.386 15.049,41.386 l 22.576,0"
|
||||
id="path21"
|
||||
style="fill:#ffffff"
|
||||
sodipodi:nodetypes="csssccsssccsssscccsssssc" /></svg>
|
Before Width: | Height: | Size: 2.8 KiB |
33
jenkins.groovy
Normal file
@ -0,0 +1,33 @@
|
||||
import jobs.generation.Utilities;
|
||||
import jobs.generation.InternalUtilities;
|
||||
|
||||
def project = GithubProject
|
||||
def branch = GithubBranchName
|
||||
|
||||
[true, false].each { isPR ->
|
||||
def newJobName = InternalUtilities.getFullJobName(project, "Default", isPR)
|
||||
def newJob = job(newJobName) {
|
||||
steps {
|
||||
shell("chmod +x ./jenkins.sh")
|
||||
shell("./jenkins.sh ${isPR}")
|
||||
}
|
||||
|
||||
if (!isPR) {
|
||||
wrappers {
|
||||
credentialsBinding {
|
||||
string('PXT_ACCESS_TOKEN', 'pxt_access_token')
|
||||
string('PXT_RELEASE_REPO', 'pxt_release_repo_calliope')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Utilities.setMachineAffinity(newJob, 'Ubuntu', '20161020')
|
||||
InternalUtilities.standardJobSetup(newJob, project, isPR, "*/*")
|
||||
|
||||
if (isPR) {
|
||||
Utilities.addGithubPRTrigger(newJob, "Default Testing")
|
||||
} else {
|
||||
Utilities.addGithubPushTrigger(newJob)
|
||||
}
|
||||
}
|
55
jenkins.sh
Normal file
@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Set up NVM
|
||||
export NVM_DIR="/home/dotnet-bot/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
|
||||
nvm install 5
|
||||
|
||||
# Set up build environment variables
|
||||
echo ---------- Setting build environment variables
|
||||
echo Git branch: $GIT_BRANCH
|
||||
echo isPR: $1
|
||||
|
||||
originRegex="^origin/.*"
|
||||
branchRegex="^origin/\K.*(?=$)"
|
||||
|
||||
if [[ "$GIT_BRANCH" =~ $originRegex ]]; then
|
||||
branchName=$(echo ${GIT_BRANCH} | grep -oP $branchRegex)
|
||||
echo Setting TRAVIS_BRANCH to ${branchName}
|
||||
export TRAVIS_BRANCH=${branchName}
|
||||
else
|
||||
echo Setting TRAVIS_BRANCH to $GIT_BRANCH
|
||||
export TRAVIS_BRANCH=$GIT_BRANCH
|
||||
fi
|
||||
|
||||
if [ "$1" == "false" ]; then
|
||||
echo Setting TRAVIS_PULL_REQUEST to false
|
||||
export TRAVIS_PULL_REQUEST=false
|
||||
|
||||
if [ $TRAVIS_BRANCH == "master" ]; then
|
||||
if [[ -z $PXT_RELEASE_REPO ]]; then
|
||||
echo Cannot find release repo; skipping tag checks
|
||||
else
|
||||
gitTag=$(git describe --tags --exact-match 2> /dev/null)
|
||||
builtTag=$(git ls-remote --tags $PXT_RELEASE_REPO | grep -o "refs/tags/$gitTag$")
|
||||
|
||||
echo Current tag: $gitTag
|
||||
echo Built tag: $builtTag
|
||||
|
||||
if [[ ! -z $gitTag && -z $builtTag ]]; then
|
||||
echo Built tag not found; building tag
|
||||
echo Setting TRAVIS_BRANCH to $gitTag
|
||||
export TRAVIS_BRANCH=$gitTag
|
||||
echo Setting TRAVIS_TAG to $gitTag
|
||||
export TRAVIS_TAG=$gitTag
|
||||
else
|
||||
echo Not a tag build
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Perform build
|
||||
npm install
|
||||
npm test
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"bluetooth": "Support for additional Bluetooth services.",
|
||||
"bluetooth": "Support for additional Bluetooth services.\n\nSupport for additional Bluetooth services.",
|
||||
"bluetooth.onBluetoothConnected": "Register code to run when the micro:bit is connected to over Bluetooth",
|
||||
"bluetooth.onBluetoothConnected|param|body": "Code to run when a Bluetooth connection is established",
|
||||
"bluetooth.onBluetoothDisconnected": "Register code to run when a bluetooth connection to the micro:bit is lost",
|
||||
|
@ -1,4 +1,6 @@
|
||||
{
|
||||
"bluetooth": "Unterstützung für zusätzliche Bluetooth-Dienste.",
|
||||
"bluetooth.onBluetoothConnected|param|body": "Code, der ausgeführt wird, wenn eine Bluetooth-Verbindung aufgebaut wurde",
|
||||
"bluetooth.uartWriteNumber": "Gibt einen numerischen Wert an die serielle",
|
||||
"bluetooth.uartWriteValue": "Schreibt ein ``Namen: Wert`` Wertepaar auf die serielle Schnittstelle.",
|
||||
"bluetooth.uartWriteValue|param|name": "Name des Wertestreams, z.B.: x",
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Support for additional Bluetooth services.
|
||||
*/
|
||||
//% color=#0082FB weight=20
|
||||
//% color=#0082FB weight=20 icon="\uf294"
|
||||
namespace bluetooth {
|
||||
/**
|
||||
* Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
|
||||
|
@ -138,7 +138,7 @@ function getNoteName(frequency: number): string {
|
||||
}
|
||||
}
|
||||
|
||||
var notes = [
|
||||
let notes = [
|
||||
note(Note.E, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
|
||||
note(Note.G, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
|
||||
note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
|
||||
@ -166,8 +166,8 @@ var notes = [
|
||||
note(Note.C, BeatFraction.Eighth), note(Note.C, BeatFraction.Half)
|
||||
];
|
||||
|
||||
for (var t = 0; t < notes.length; t++) {
|
||||
for (let t = 0; t < notes.length; t++) {
|
||||
music.playTone(notes[t][0], notes[t][1]);
|
||||
basic.showString(getNoteName(notes[t][0]));
|
||||
music.rest(whole - notes[t][1]);
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@
|
||||
"String.substr": "Return substring of the current string.",
|
||||
"String.substr|param|length": "number of characters to extract",
|
||||
"String.substr|param|start": "first character index; can be negative from counting from the end, eg:0",
|
||||
"basic": "Provides access to basic micro:bit functionality.",
|
||||
"basic": "Provides access to basic micro:bit functionality.\n\nProvides access to basic micro:bit functionality.",
|
||||
"basic.clearScreen": "Turn off all LEDs",
|
||||
"basic.color": "Converts the color name to a number",
|
||||
"basic.forever": "Repeats the code forever in the background. On each iteration, allows other codes to run.",
|
||||
@ -180,6 +180,7 @@
|
||||
"music.noteFrequency": "Gets the frequency of a note.",
|
||||
"music.noteFrequency|param|name": "the note name",
|
||||
"music.playTone": "Plays a tone through ``speaker`` for the given duration.",
|
||||
"music.playTone|param|frequency": "pitch of the tone to play in Hertz (Hz)",
|
||||
"music.playTone|param|ms": "tone duration in milliseconds (ms)",
|
||||
"music.rest": "Rests (plays nothing) for a specified time through pin ``P0``.",
|
||||
"music.rest|param|ms": "rest duration in milliseconds (ms)",
|
||||
@ -230,6 +231,9 @@
|
||||
"pins.servoWritePin": "Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).",
|
||||
"pins.servoWritePin|param|name": "pin to write to",
|
||||
"pins.servoWritePin|param|value": "angle or rotation speed, eg:180,90,0",
|
||||
"pins.setEvents": "Configures the events emitted by this pin. Events can be subscribed to\nusing ``control.onEvent()``.",
|
||||
"pins.setEvents|param|name": "pin to set the event mode on, eg: DigitalPin.P0",
|
||||
"pins.setEvents|param|type": "the type of events for this pin to emit, eg: PinEventType.Edge",
|
||||
"pins.setPull": "Configures the pull of this pin.",
|
||||
"pins.setPull|param|name": "pin to set the pull mode on",
|
||||
"pins.setPull|param|pull": "one of the mbed pull configurations: PullUp, PullDown, PullNone ",
|
||||
@ -238,13 +242,16 @@
|
||||
"pins.spiWrite|param|value": "Data to be sent to the SPI slave",
|
||||
"serial": "Reading and writing data over a serial connection.",
|
||||
"serial.delimiters": "Returns the delimiter corresponding string",
|
||||
"serial.onLineReceived": "Registers an event to be fired when a line has been received",
|
||||
"serial.onDataReceived": "Registers an event to be fired when one of the delimiter is matched.",
|
||||
"serial.onDataReceived|param|delimiters": "the characters to match received characters against.",
|
||||
"serial.readLine": "Reads a line of text from the serial port.",
|
||||
"serial.readString": "Reads the buffered received data as a string",
|
||||
"serial.readUntil": "Reads a line of text from the serial port and returns the buffer when the delimiter is met.",
|
||||
"serial.readUntil|param|delimiter": "text delimiter that separates each text chunk",
|
||||
"serial.redirect": "Dynamically configuring the serial instance to use pins other than USBTX and USBRX.",
|
||||
"serial.redirect|param|rx": "the new reception pin",
|
||||
"serial.redirect|param|tx": "the new transmission pins",
|
||||
"serial.redirect|param|rate": "the new baud rate. eg: 115200",
|
||||
"serial.redirect|param|rx": "the new reception pin, eg: SerialPin.P1",
|
||||
"serial.redirect|param|tx": "the new transmission pins, eg: SerialPin.P0",
|
||||
"serial.writeLine": "Prints a line of text to the serial",
|
||||
"serial.writeNumber": "Prints a numeric value to the serial",
|
||||
"serial.writeString": "Sends a piece of text through Serial connection.",
|
||||
|
@ -8,6 +8,7 @@
|
||||
"AcceleratorRange.TwoG": "The accelerator measures forces up to 2 gravity",
|
||||
"AcceleratorRange.TwoG|block": "2g",
|
||||
"BaudRate.BaudRate115200|block": "115200",
|
||||
"BaudRate.BaudRate56700|block": "57600",
|
||||
"BaudRate.BaudRate9600|block": "9600",
|
||||
"BeatFraction.Eighth|block": "1/8",
|
||||
"BeatFraction.Half|block": "1/2",
|
||||
@ -83,18 +84,20 @@
|
||||
"Note.GSharp4|block": "G#4",
|
||||
"Note.GSharp5|block": "G#5",
|
||||
"Note.GSharp|block": "G#",
|
||||
"PinEventType.Edge|block": "edge",
|
||||
"PinEventType.None|block": "none",
|
||||
"PinEventType.Pulse|block": "pulse",
|
||||
"PinEventType.Touch|block": "touch",
|
||||
"PinPullMode.PullDown|block": "down",
|
||||
"PinPullMode.PullNone|block": "none",
|
||||
"PinPullMode.PullUp|block": "up",
|
||||
"Rotation.Pitch|block": "pitch",
|
||||
"Rotation.Roll|block": "roll",
|
||||
"String.charAt|block": "char from %this|at %pos",
|
||||
"String.compare|block": "compare %this| to %that",
|
||||
"String.concat|block": "join %this|%other",
|
||||
"String.charAt|block": "char from %this=text|at %pos",
|
||||
"String.compare|block": "compare %this=text| to %that",
|
||||
"String.fromCharCode|block": "text from char code %code",
|
||||
"String.isEmpty|block": "%this| is empty",
|
||||
"String.length|block": "length of %VALUE",
|
||||
"String.substr|block": "substring of %this|from %start|of length %length",
|
||||
"String.substr|block": "substring of %this=text|from %start|of length %length",
|
||||
"String|block": "String",
|
||||
"basic.clearScreen|block": "clear screen",
|
||||
"basic.color|block": "%c",
|
||||
@ -164,8 +167,10 @@
|
||||
"music.setTempo|block": "set tempo to (bpm)|%value",
|
||||
"music.tempo|block": "tempo (bpm)",
|
||||
"music|block": "music",
|
||||
"pins.analogPitch|block": "analog pitch %frequency|for (ms) %ms",
|
||||
"pins.analogReadPin|block": "analog read|pin %name",
|
||||
"pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros",
|
||||
"pins.analogSetPitchPin|block": "analog set pitch pin %name",
|
||||
"pins.analogWritePin|block": "analog write|pin %name|to %value",
|
||||
"pins.digitalReadPin|block": "digital read|pin %name",
|
||||
"pins.digitalWritePin|block": "digital write|pin %name|to %value",
|
||||
@ -177,11 +182,14 @@
|
||||
"pins.pulseIn|block": "pulse in (µs)|pin %name|pulsed %value",
|
||||
"pins.servoSetPulse|block": "servo set pulse|pin %value|to (µs) %micros",
|
||||
"pins.servoWritePin|block": "servo write|pin %name|to %value",
|
||||
"pins.setEvents|block": "set pin %pin|to emit %type|events",
|
||||
"pins.setPull|block": "set pull|pin %pin|to %pull",
|
||||
"pins.spiWrite|block": "spi write %value",
|
||||
"pins|block": "pins",
|
||||
"serial.delimiters|block": "%del",
|
||||
"serial.onDataReceived|block": "serial|on data received %delimiters=serial_delimiter_conv",
|
||||
"serial.readLine|block": "serial|read line",
|
||||
"serial.readString|block": "serial|read string",
|
||||
"serial.readUntil|block": "serial|read until %delimiter=serial_delimiter_conv",
|
||||
"serial.redirect|block": "serial|redirect to|TX %tx|RX %rx|at baud rate %rate",
|
||||
"serial.writeLine|block": "serial|write line %text",
|
||||
|
@ -71,7 +71,6 @@
|
||||
"control.waitMicros|param|micros": "Anzahl der Mikrosekunden, die gewartet werden soll, z.B.: 4",
|
||||
"game": "Eine Einzel-LED-Sprite-Spielumgebung",
|
||||
"game.addLife": "Fügt Leben zum aktuellen Spielstand hinzu",
|
||||
"game.addLife|param|lives": "TODO",
|
||||
"game.addScore": "Fügt zum aktuellen Spielstand Punkte hinzu",
|
||||
"game.addScore|param|points": "Anzahl von zu verändernden Punkten, z.B.: 1",
|
||||
"game.createSprite": "Erzeugt einen neuen LED-Sprite, der nach rechts zeigt.",
|
||||
@ -86,12 +85,9 @@
|
||||
"game.levelUp": "Erhöht das Level und zeigt eine Nachricht an.",
|
||||
"game.life": "Ruft das aktuelle Leben ab",
|
||||
"game.removeLife": "Entfernt ein Leben",
|
||||
"game.removeLife|param|life": "TODO",
|
||||
"game.score": "Ruft den aktuellen Punktestand ab",
|
||||
"game.setLife": "Setzt den aktuellen Wert der Leben",
|
||||
"game.setLife|param|value": "TODO",
|
||||
"game.setScore": "Setzt den aktuellen Wert des Spielstands",
|
||||
"game.setScore|param|value": "TODO",
|
||||
"game.showScore": "Zeigt den Spielstand auf dem Display.",
|
||||
"game.startCountdown": "Startet einen Spiel-Countdown",
|
||||
"game.startCountdown|param|ms": "Countdown-Dauer in Millisekunden, z.B.: 10000",
|
||||
@ -101,38 +97,24 @@
|
||||
"images.createImage": "Erstellt ein Bild, das auf den LED-Bildschirm passt.",
|
||||
"input": "Ereignisse und Daten der Sensoren",
|
||||
"input.acceleration": "Holt den Beschleunigungswert in Milli-Erdanziehung (wenn das Board flach mit dem Display nach oben liegt, X = 0, y = 0 und Z =-1024)",
|
||||
"input.acceleration|param|dimension": "TODO",
|
||||
"input.buttonIsPressed": "Erhalte den Sie den Tastenstatus (gepresst oder nicht) für ``A`` und ``B``.",
|
||||
"input.calibrate": "Veraltet, Kompasskalibrierung erfolgt automatisch.",
|
||||
"input.compassHeading": "Holt die aktuelle Kompassrichtung in Grad.",
|
||||
"input.lightLevel": "Liest die Lichtintensität auf dem LED-Bildschirm im Bereich von ``0`` (dunkel) und `` 255`` (hell).",
|
||||
"input.magneticForce": "Ruft den Wert der Magnetkraft in ``Mikro-Tesla`` (``µT``) ab. Diese Funktion wird im Simulator nicht unterstützt.",
|
||||
"input.magneticForce|param|dimension": "TODO",
|
||||
"input.onButtonPressed": "Tue etwas, wenn eine Taste (``A``, ``B`` oder ``A + B``) gedrückt wird",
|
||||
"input.onButtonPressed|param|body": "TODO",
|
||||
"input.onButtonPressed|param|button": "TODO",
|
||||
"input.onGesture": "Mache etwas, wenn eine Geste gemacht wird (wie den mini zu schütteln).",
|
||||
"input.onGesture|param|body": "TODO",
|
||||
"input.onLogoDown": "Fügt Code hinzu, der ausgeführt wird, wenn das Logo nach unten zeigt und das Board vertikal ausgerichtet ist.",
|
||||
"input.onLogoDown|param|body": "TODO",
|
||||
"input.onLogoUp": "Fügt Code hinzu, der ausgeführt wird, wenn das Logo nach oben zeigt und das Board vertikal ausgerichtet ist.",
|
||||
"input.onLogoUp|param|body": "TODO",
|
||||
"input.onPinPressed": "Mache etwas, wenn eine Pin gehalten wird.",
|
||||
"input.onPinPressed|param|body": "Code, der ausführt wird, wenn ein Pin gehalten wird",
|
||||
"input.onPinPressed|param|name": "Der Pin, der gehalten werden muss",
|
||||
"input.onPinReleased": "Mache etwas, wenn der Pin losgelassen wird.",
|
||||
"input.onPinReleased|param|body": "Code, der ausgeführt werden soll, wenn der Pin losgelassen wird",
|
||||
"input.onPinReleased|param|name": "Der Pin, der losgelassen werden muss",
|
||||
"input.onScreenDown": "Hängt Code an, der ausgeführt wird, wenn der Bildschirm nach unten zeigt.",
|
||||
"input.onScreenDown|param|body": "TODO",
|
||||
"input.onScreenUp": "Hängt Code an, der ausgeführt wird, wenn der Bildschirm nach oben zeigt.",
|
||||
"input.onScreenUp|param|body": "TODO",
|
||||
"input.onShake": "Hängt Code an, der ausgeführt wird, wenn der mini geschüttelt wird.",
|
||||
"input.onShake|param|body": "TODO",
|
||||
"input.pinIsPressed": "Ruft den Pin-Zustand (gehalten oder nicht) ab. Die Erdung muss gehalten werden, um den Stromkreis zu schließen.",
|
||||
"input.pinIsPressed|param|name": "Pin, der verwendet wird, um eine Berührung zu erkennen",
|
||||
"input.rotation": "Die Neigung und Drehung des mini Drehung auf ``X-Achse``oder ``Y-Achse``, in Grad.",
|
||||
"input.rotation|param|kind": "TODO",
|
||||
"input.runningTime": "Ruft die Anzahl der Millisekunden auf, die seit dem Einschalten vergangen sind.",
|
||||
"input.setAccelerometerRange": "Legt die Stichprobenbereich des Beschleunigungssensors in Schwerkraft fest.",
|
||||
"input.setAccelerometerRange|param|range": "Ein Wert, der die maximale Stärke der gemessenen Beschleunigung beschreibt",
|
||||
@ -141,19 +123,13 @@
|
||||
"led.brightness": "Ruft die Helligkeit des Bildschirms ab, von 0 (aus) bis 255 (volle Helligkeit).",
|
||||
"led.enable": "Schaltet das Display an und aus",
|
||||
"led.fadeIn": "Blendet die Bildschirmanzeige ein.",
|
||||
"led.fadeIn|param|ms": "TODO",
|
||||
"led.fadeOut": "Blendet die Bildschirmhelligkeit aus.",
|
||||
"led.fadeOut|param|ms": "TODO",
|
||||
"led.plot": "Schalte die angegebene LED mit Hilfe von X- und Y-Koordinaten ein (X ist horizontal, Y ist vertikal). (0,0) ist die obere linke Ecke.",
|
||||
"led.plotAll": "Schaltet alle LEDs an",
|
||||
"led.plotBarGraph": "Zeigt ein vertikales Balkendiagramm an, basierend auf dem `Wert`und dem `Hoch`-Wert. Wenn `Hoch`0 ist, wird das Diagramm automatisch angepasst.",
|
||||
"led.plotBarGraph|param|high": "maximalen Wert. Wenn dieser 0 ist, wird der Maximalwert automatisch angepasst, z.B.: 0",
|
||||
"led.plotBarGraph|param|value": "aktueller Wert zum Darstellen",
|
||||
"led.plot|param|x": "TODO",
|
||||
"led.plot|param|y": "TODO",
|
||||
"led.point": "Ruft den An/Aus-Status einer vorgegebenen LED mittels X-/Y-Koordinaten ab. (0,0) ist oben links.",
|
||||
"led.point|param|x": "TODO",
|
||||
"led.point|param|y": "TODO",
|
||||
"led.screenshot": "Macht einen Screenshot vom LED-Bildschirm und gibt ein Bild aus.",
|
||||
"led.setBrightness": "Lege die Helligkeit des Bildschirms fest, von 0 (aus) bis 255 (volle Helligkeit).",
|
||||
"led.setBrightness|param|value": "Helligkeitswert, z.B.: 255, 127, 0",
|
||||
@ -162,11 +138,7 @@
|
||||
"led.stopAnimation": "Bricht die aktuelle Animation ab und löscht andere ausstehende Animationen.",
|
||||
"led.toggle": "Schaltet ein bestimmtes Pixel ein",
|
||||
"led.toggleAll": "Invertiert die aktuelle LED-Anzeige",
|
||||
"led.toggle|param|x": "TODO",
|
||||
"led.toggle|param|y": "TODO",
|
||||
"led.unplot": "Schalte die angegebene LED mit x-und y-Koordinaten ab (X ist horizontal, y ist vertikal). (0,0) ist oben links.",
|
||||
"led.unplot|param|x": "TODO",
|
||||
"led.unplot|param|y": "TODO",
|
||||
"motors": "Blöcke, die genutzt werden, um Onboard-Motoren zu steuern",
|
||||
"motors.dualMotorPower": "Steuert zwei an das Board angeschlossene Motoren. Schaltet auf Dual-Motor-Modus um!",
|
||||
"motors.motorCommand": "Schicke Anhalten, Ausrollen oder Anhalten-Befehle an den Motor. Hat im Dual-Motor-Modus keinen Effekt.",
|
||||
@ -177,7 +149,6 @@
|
||||
"music.changeTempoBy": "Ändere die Geschwindigkeit um den angegebenen Betrag",
|
||||
"music.changeTempoBy|param|bpm": "Die Änderung in Schlägen pro Minute auf das Tempo, z.B.: 20",
|
||||
"music.noteFrequency": "Ruft die Frequenz einer Note ab.",
|
||||
"music.noteFrequency|param|name": "der Name der Notiz",
|
||||
"music.playTone": "Spielt einen Ton für den angegebenen Zeitraum auf dem Lautsprecher ab.",
|
||||
"music.playTone|param|ms": "Tondauer in Millisekunden (ms)",
|
||||
"music.rest": "Ruht (spielt nichts) für eine bestimmte Zeit auf Pin ``P0``.",
|
||||
@ -189,24 +160,15 @@
|
||||
"music.tempo": "Gibt die Geschwindigkeit in Schlägen pro Minute aus. Die Geschwindigkeit ist Schnelligkeit (Bpm = Beats pro Minute), in der Töne abgespielt werden. Je größer der Wert, desto schneller werden die Töne abgespielt.",
|
||||
"pins": "Steuere die Stromstärke über die Pins für analoge/digitale Signale, Servos, I2C,...",
|
||||
"pins.analogPitch": "Gibt ein Pulsweiten Modulation (PWM)-Signal über den aktuellen Pitch-Pin. Benutze `analog set pitch pin`, um den Pitch-Pin festzulegen.",
|
||||
"pins.analogPitch|param|frequency": "TODO",
|
||||
"pins.analogPitch|param|ms": "TODO",
|
||||
"pins.analogReadPin": "Lese den Anschlusswert als Analog aus, d. h. als einen Wert zwischen 0 und 1023.",
|
||||
"pins.analogReadPin|param|name": "Pin, auf den geschrieben werden soll",
|
||||
"pins.analogSetPeriod": "Stellt die Pulsweite Modulation (PWM) des Analogausganges auf den angegebenen Wert in ** Mikrosekunden ** oder `1/1000` Millisekunden ein.\nWenn dieser Pin nicht als einen Analogausgang (mit `analog write pin`) konfiguriert ist, hat der Vorgang keine Auswirkungen.",
|
||||
"pins.analogSetPeriod|param|micros": "Zeit in Mikrosekunden. z.B.: 20000",
|
||||
"pins.analogSetPeriod|param|name": "analoger Pin, der zeitlich festgelegt werden soll",
|
||||
"pins.analogSetPitchPin": "Setzt den genutzten Pin, wenn `pins->analog pitch`angewendet wird.",
|
||||
"pins.analogSetPitchPin|param|name": "TODO",
|
||||
"pins.analogWritePin": "Legt den Wert des Verbinders auf analog fest. Der Wert muss zwischen 0 und 1023 liegen.",
|
||||
"pins.analogWritePin|param|name": "PIN-Name, auf den geschrieben werden soll",
|
||||
"pins.analogWritePin|param|value": "Wert, der auf den Pin geschrieben werden soll, zwischen ``0`` und ``1023`` z.B.: 1023,0",
|
||||
"pins.createBuffer": "Erstellt einen Null-initialisierten Zwischenspeicher.",
|
||||
"pins.createBuffer|param|size": "Anzahl der Bytes im Zwischenspeicher",
|
||||
"pins.digitalReadPin": "Lese den angegebene Pin oder Verbinder als 0 oder 1",
|
||||
"pins.digitalReadPin|param|name": "Pin, aus dem gelesen werden soll",
|
||||
"pins.digitalWritePin": "Setzt einen Pin- oder Verbinder-Wert auf 0 oder 1.",
|
||||
"pins.digitalWritePin|param|name": "Pin, auf den geschrieben werden soll",
|
||||
"pins.digitalWritePin|param|value": "Wert, der auf dem Pin 1 gesetzt werden soll, z.B. 0",
|
||||
"pins.i2cReadBuffer": "Lese `Größe`bytes aus einer 7-bit I2C-Adresse.",
|
||||
"pins.i2cReadNumber": "Lese eine Nummer aus einer 7-bit I2C-Adresse.",
|
||||
@ -227,11 +189,8 @@
|
||||
"pins.servoSetPulse|param|micros": "Impulsdauer in Mikrosekunden, z.B.: 1500",
|
||||
"pins.servoSetPulse|param|name": "PIN-Name",
|
||||
"pins.servoWritePin": "Schreibt einen Wert in den Servo, der die Welle entsprechend kontroliert. Auf einem Standard-Servo wird so der Winkel der Welle (in Grad) eingestellt, sodass sich die Welle entsprechend anpasst. Auf einem kontinuierlich drehenden Servo wird dadurch die Geschwindigkeit des Servos festgelegt, wobei ``0``die volle Geschwindigkeit in eine Richtung darstellt, ``180``die volle Geschwindigkeit in die andere, und ein Wert von ``90`` einen Stillstand erzeugt.",
|
||||
"pins.servoWritePin|param|name": "Pin, auf den geschrieben werden soll",
|
||||
"pins.servoWritePin|param|value": "Winkel oder Rotationsbeschleunigung, z.B.: 180,90,0",
|
||||
"pins.setPull": "Stellt die Anziehungskraft des Pins ein.",
|
||||
"pins.setPull|param|name": "Pin, auf dem der Pull-Modus aktiviert wird",
|
||||
"pins.setPull|param|pull": "eine der mbed-Pull-Konfigurationen: PullUp, PullDown, PullNone",
|
||||
"pins.sizeOf": "Ruft die Bytegröße im spezifierten Nummernformat ab.",
|
||||
"pins.spiWrite": "Schreibe in den SPI-Slave und gebe die Antwort aus",
|
||||
"pins.spiWrite|param|value": "Daten, die an den SPI-Slave geschickt werden sollen",
|
||||
@ -242,8 +201,6 @@
|
||||
"serial.readUntil": "Liest aus eine Textzeile aus dem seriellen Anschluss und gibt den Puffer aus, wenn die Begrenzung erreicht wurde.",
|
||||
"serial.readUntil|param|delimiter": "Text-Begrenzung, die die Textblöcke voneinander trennt",
|
||||
"serial.redirect": "Konfiguriert dynamisch die serielle Instanz, damit sie andere Pins als USBTX und USBRX benutzt.",
|
||||
"serial.redirect|param|rx": "der neue Empfangs-Pin",
|
||||
"serial.redirect|param|tx": "Der neue Übertragungs-Pin",
|
||||
"serial.writeLine": "Gibt eine Zeile des Textes an die serielle",
|
||||
"serial.writeNumber": "Gibt einen numerischen Wert an die serielle",
|
||||
"serial.writeString": "Sendet ein Stück Text über serielle Verbindung.",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"AcceleratorRange.OneG|block": "1g",
|
||||
"AcceleratorRange.TwoG": "Der Bewegungssensor misst Kräfte bis 2g",
|
||||
"AcceleratorRange.TwoG|block": "2g",
|
||||
"BaudRate.BaudRate115200|block": "11520",
|
||||
"BaudRate.BaudRate115200|block": "115200",
|
||||
"BaudRate.BaudRate9600|block": "9600",
|
||||
"BeatFraction.Eighth|block": "1/8",
|
||||
"BeatFraction.Half|block": "1/2",
|
||||
|
@ -4,12 +4,12 @@
|
||||
/**
|
||||
* Provides access to basic micro:bit functionality.
|
||||
*/
|
||||
//% color=#54C9C9 weight=100
|
||||
//% color=#54C9C9 weight=100 icon="\uf00a"
|
||||
namespace basic {
|
||||
/**
|
||||
* Sets the color on the build-in LED. Set to 0 to turn off.
|
||||
*/
|
||||
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
|
||||
//% blockId=device_set_led_color block="set led to %color=color_id"
|
||||
//% weight=50
|
||||
void setLedColor(int color) {
|
||||
if (!color) {
|
||||
@ -31,7 +31,7 @@ namespace basic {
|
||||
*/
|
||||
//% help=basic/show-number
|
||||
//% weight=96
|
||||
//% blockId=device_show_number block="show|number %number" blockGap=8 icon="\uf1ec"
|
||||
//% blockId=device_show_number block="show|number %number" blockGap=8
|
||||
//% async
|
||||
//% parts="ledmatrix"
|
||||
void showNumber(int value, int interval = 150) {
|
||||
@ -55,7 +55,7 @@ namespace basic {
|
||||
//% weight=95 blockGap=8
|
||||
//% imageLiteral=1 async
|
||||
//% blockId=device_show_leds
|
||||
//% block="show leds" icon="\uf00a"
|
||||
//% block="show leds"
|
||||
//% parts="ledmatrix"
|
||||
void showLeds(ImageLiteral leds, int interval = 400) {
|
||||
uBit.display.print(MicroBitImage(imageBytes(leds)), 0, 0, 0, interval);
|
||||
@ -68,7 +68,7 @@ namespace basic {
|
||||
*/
|
||||
//% help=basic/show-string
|
||||
//% weight=87 blockGap=8
|
||||
//% block="show|string %text" icon="\uf031"
|
||||
//% block="show|string %text"
|
||||
//% async
|
||||
//% blockId=device_print_message
|
||||
//% parts="ledmatrix"
|
||||
@ -91,7 +91,7 @@ namespace basic {
|
||||
* Turn off all LEDs
|
||||
*/
|
||||
//% help=basic/clear-screen weight=79
|
||||
//% blockId=device_clear_display block="clear screen" icon="\uf12d"
|
||||
//% blockId=device_clear_display block="clear screen"
|
||||
//% parts="ledmatrix"
|
||||
void clearScreen() {
|
||||
uBit.display.image.clear();
|
||||
@ -131,7 +131,7 @@ namespace basic {
|
||||
* @param body code to execute
|
||||
*/
|
||||
//% help=basic/forever weight=55 blockGap=8
|
||||
//% blockId=device_forever block="forever" icon="\uf01e"
|
||||
//% blockId=device_forever block="forever"
|
||||
void forever(Action a) {
|
||||
if (a != 0) {
|
||||
incr(a);
|
||||
@ -145,7 +145,7 @@ namespace basic {
|
||||
*/
|
||||
//% help=basic/pause weight=54
|
||||
//% async block="pause (ms) %pause"
|
||||
//% blockId=device_pause icon="\uf110"
|
||||
//% blockId=device_pause
|
||||
void pause(int ms) {
|
||||
fiber_sleep(ms);
|
||||
}
|
||||
|
@ -34,17 +34,18 @@ enum EventBusSource {
|
||||
MICROBIT_ID_IO_P5_ = MICROBIT_ID_IO_P5,
|
||||
MICROBIT_ID_IO_P6_ = MICROBIT_ID_IO_P6,
|
||||
MICROBIT_ID_IO_P7_ = MICROBIT_ID_IO_P7,
|
||||
//MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
|
||||
MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
|
||||
MICROBIT_ID_IO_P9_ = MICROBIT_ID_IO_P9,
|
||||
MICROBIT_ID_IO_P10_ = MICROBIT_ID_IO_P10,
|
||||
MICROBIT_ID_IO_P11_ = MICROBIT_ID_IO_P11,
|
||||
//MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
|
||||
//MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
|
||||
//MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
|
||||
//MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
|
||||
//MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
|
||||
MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
|
||||
MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
|
||||
MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
|
||||
MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
|
||||
MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
|
||||
MICROBIT_ID_IO_P19_ = MICROBIT_ID_IO_P19,
|
||||
MICROBIT_ID_IO_P20_ = MICROBIT_ID_IO_P20,
|
||||
MICROBIT_ID_IO_P21_ = MICROBIT_ID_IO_P21,
|
||||
MES_DEVICE_INFO_ID_ = MES_DEVICE_INFO_ID,
|
||||
MES_SIGNAL_STRENGTH_ID_ = MES_SIGNAL_STRENGTH_ID,
|
||||
MES_DPAD_CONTROLLER_ID_ = MES_DPAD_CONTROLLER_ID,
|
||||
@ -56,6 +57,10 @@ enum EventBusValue {
|
||||
MICROBIT_BUTTON_EVT_CLICK_ = MICROBIT_BUTTON_EVT_CLICK,
|
||||
MICROBIT_RADIO_EVT_DATAGRAM_ = MICROBIT_RADIO_EVT_DATAGRAM,
|
||||
MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE_ = MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE,
|
||||
MICROBIT_PIN_EVT_RISE_ = MICROBIT_PIN_EVT_RISE,
|
||||
MICROBIT_PIN_EVT_FALL_ = MICROBIT_PIN_EVT_FALL,
|
||||
MICROBIT_PIN_EVT_PULSE_HI_ = MICROBIT_PIN_EVT_PULSE_HI,
|
||||
MICROBIT_PIN_EVT_PULSE_LO_ = MICROBIT_PIN_EVT_PULSE_LO,
|
||||
MES_ALERT_EVT_ALARM1_ = MES_ALERT_EVT_ALARM1,
|
||||
MES_ALERT_EVT_ALARM2_ = MES_ALERT_EVT_ALARM2,
|
||||
MES_ALERT_EVT_ALARM3_ = MES_ALERT_EVT_ALARM3,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Runtime and event utilities.
|
||||
*/
|
||||
//% weight=1 color="#42495F"
|
||||
//% weight=1 color="#42495F" icon="\uf233"
|
||||
//% advanced=true
|
||||
namespace control {
|
||||
|
||||
|
@ -21,7 +21,12 @@ namespace String_ {
|
||||
|
||||
//%
|
||||
int compare(StringData *s, StringData *that) {
|
||||
return strcmp(s->data, that->data);
|
||||
int compareResult = strcmp(s->data, that->data);
|
||||
if (compareResult < 0)
|
||||
return -1;
|
||||
else if (compareResult > 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//%
|
||||
@ -76,7 +81,7 @@ namespace Boolean_ {
|
||||
}
|
||||
|
||||
//%
|
||||
bool bang(bool v) { return !v; }
|
||||
bool bang(int v) { return v == 0; }
|
||||
}
|
||||
|
||||
namespace Number_ {
|
||||
@ -153,13 +158,19 @@ namespace Array_ {
|
||||
//%
|
||||
int length(RefCollection *c) { return c->length(); }
|
||||
//%
|
||||
void setLength(RefCollection *c, int newLength) { c->setLength(newLength); }
|
||||
//%
|
||||
void push(RefCollection *c, uint32_t x) { c->push(x); }
|
||||
//%
|
||||
uint32_t pop(RefCollection *c) { return c->pop(); }
|
||||
//%
|
||||
uint32_t getAt(RefCollection *c, int x) { return c->getAt(x); }
|
||||
//%
|
||||
void removeAt(RefCollection *c, int x) { c->removeAt(x); }
|
||||
void setAt(RefCollection *c, int x, uint32_t y) { c->setAt(x, y); }
|
||||
//%
|
||||
void setAt(RefCollection *c, int x, uint32_t y) { c->setAt(x, y); }
|
||||
uint32_t removeAt(RefCollection *c, int x) { return c->removeAt(x); }
|
||||
//%
|
||||
void insertAt(RefCollection *c, int x, uint32_t value) { c->insertAt(x, value); }
|
||||
//%
|
||||
int indexOf(RefCollection *c, uint32_t x, int start) { return c->indexOf(x, start); }
|
||||
//%
|
||||
|
50
libs/core/dal.d.ts
vendored
@ -79,12 +79,15 @@ declare const enum DAL {
|
||||
MICROBIT_BLE_PAIRING_TIMEOUT = 90,
|
||||
MICROBIT_BLE_POWER_LEVELS = 8,
|
||||
MICROBIT_BLE_MAXIMUM_BONDS = 4,
|
||||
MICROBIT_BLE_EDDYSTONE_URL_ADV_INTERVAL = 400,
|
||||
MICROBIT_BLE_EDDYSTONE_ADV_INTERVAL = 400,
|
||||
MICROBIT_BLE_EDDYSTONE_DEFAULT_POWER = 0xF0,
|
||||
MICROBIT_BLE_DISCONNECT_AFTER_PAIRING_DELAY = 500,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/bluetooth/MicroBitButtonService.h
|
||||
// built/yt/yotta_modules/microbit-dal/inc/bluetooth/MicroBitDFUService.h
|
||||
MICROBIT_DFU_OPCODE_START_DFU = 1,
|
||||
MICROBIT_DFU_HISTOGRAM_WIDTH = 5,
|
||||
MICROBIT_DFU_HISTOGRAM_HEIGHT = 5,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/bluetooth/MicroBitEddystone.h
|
||||
// built/yt/yotta_modules/microbit-dal/inc/bluetooth/MicroBitEventService.h
|
||||
// built/yt/yotta_modules/microbit-dal/inc/bluetooth/MicroBitIOPinService.h
|
||||
MICROBIT_IO_PIN_SERVICE_PINCOUNT = 19,
|
||||
@ -124,7 +127,6 @@ declare const enum DAL {
|
||||
MICROBIT_ID_ACCELEROMETER = 4,
|
||||
MICROBIT_ID_COMPASS = 5,
|
||||
MICROBIT_ID_DISPLAY = 6,
|
||||
MICROBIT_IO_PINS = 20,
|
||||
MICROBIT_ID_IO_P0 = 7,
|
||||
MICROBIT_ID_IO_P1 = 8,
|
||||
MICROBIT_ID_IO_P2 = 9,
|
||||
@ -133,11 +135,18 @@ declare const enum DAL {
|
||||
MICROBIT_ID_IO_P5 = 12,
|
||||
MICROBIT_ID_IO_P6 = 13,
|
||||
MICROBIT_ID_IO_P7 = 14,
|
||||
MICROBIT_ID_IO_P8 = 15,
|
||||
MICROBIT_ID_IO_P9 = 16,
|
||||
MICROBIT_ID_IO_P10 = 17,
|
||||
MICROBIT_ID_IO_P11 = 18,
|
||||
MICROBIT_ID_IO_P12 = 19,
|
||||
MICROBIT_ID_IO_P13 = 20,
|
||||
MICROBIT_ID_IO_P14 = 21,
|
||||
MICROBIT_ID_IO_P15 = 22,
|
||||
MICROBIT_ID_IO_P16 = 23,
|
||||
MICROBIT_ID_IO_P19 = 24,
|
||||
MICROBIT_ID_IO_P20 = 25,
|
||||
MICROBIT_ID_IO_P21 = 50,
|
||||
MICROBIT_ID_BUTTON_AB = 26,
|
||||
MICROBIT_ID_GESTURE = 27,
|
||||
MICROBIT_ID_THERMOMETER = 28,
|
||||
@ -145,17 +154,6 @@ declare const enum DAL {
|
||||
MICROBIT_ID_RADIO_DATA_READY = 30,
|
||||
MICROBIT_ID_MULTIBUTTON_ATTACH = 31,
|
||||
MICROBIT_ID_SERIAL = 32,
|
||||
CALLIOPE_ID_IO_P3 = 33,
|
||||
CALLIOPE_ID_IO_P7 = 34,
|
||||
CALLIOPE_ID_IO_P8 = 35,
|
||||
CALLIOPE_ID_IO_P9 = 36,
|
||||
CALLIOPE_ID_IO_P13 = 37,
|
||||
CALLIOPE_ID_IO_P14 = 38,
|
||||
CALLIOPE_ID_IO_P15 = 39,
|
||||
CALLIOPE_ID_IO_P22 = 40,
|
||||
CALLIOPE_ID_IO_P28 = 41,
|
||||
CALLIOPE_ID_IO_P29 = 42,
|
||||
CALLIOPE_ID_IO_P30 = 43,
|
||||
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
|
||||
MICROBIT_ID_NOTIFY_ONE = 1022,
|
||||
MICROBIT_ID_NOTIFY = 1023,
|
||||
@ -194,6 +192,7 @@ declare const enum DAL {
|
||||
MICROBIT_SERIAL_EVT_TX_EMPTY = 2,
|
||||
MICROBIT_UART_S_EVT_TX_EMPTY = 3,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/CalliopeRGB.h
|
||||
RGB_LED_MAX_INTENSITY = 40,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/CalliopeSoundMotor.h
|
||||
CALLIOPE_SM_DEFAULT_DUTY_M = 50,
|
||||
CALLIOPE_SM_DEFAULT_DUTY_S = 100,
|
||||
@ -513,6 +512,30 @@ declare const enum DAL {
|
||||
MICROBIT_DISPLAY_ROTATION_90 = 1,
|
||||
MICROBIT_DISPLAY_ROTATION_180 = 2,
|
||||
MICROBIT_DISPLAY_ROTATION_270 = 3,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitFile.h
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitFileSystem.h
|
||||
MBFS_FILENAME_LENGTH = 16,
|
||||
MB_READ = 0x01,
|
||||
MB_WRITE = 0x02,
|
||||
MB_CREAT = 0x04,
|
||||
MB_APPEND = 0x08,
|
||||
MB_SEEK_SET = 0x01,
|
||||
MB_SEEK_END = 0x02,
|
||||
MB_SEEK_CUR = 0x04,
|
||||
MBFS_STATUS_INITIALISED = 0x01,
|
||||
MBFS_UNUSED = 0xFFFF,
|
||||
MBFS_EOF = 0xEFFF,
|
||||
MBFS_DELETED = 0x0000,
|
||||
MBFS_DIRECTORY_ENTRY_FREE = 0x8000,
|
||||
MBFS_DIRECTORY_ENTRY_VALID = 0x4000,
|
||||
MBFS_DIRECTORY_ENTRY_DIRECTORY = 0x2000,
|
||||
MBFS_DIRECTORY_ENTRY_NEW = 0xffff,
|
||||
MBFS_DIRECTORY_ENTRY_DELETED = 0x0000,
|
||||
MBFS_BLOCK_TYPE_FILE = 1,
|
||||
MBFS_BLOCK_TYPE_DIRECTORY = 2,
|
||||
MBFS_BLOCK_TYPE_FILETABLE = 3,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitFlash.h
|
||||
PAGE_SIZE = 1024,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitI2C.h
|
||||
MICROBIT_I2C_MAX_RETRIES = 9,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitIO.h
|
||||
@ -558,7 +581,6 @@ declare const enum DAL {
|
||||
MICROBIT_PIN_EVT_PULSE_LO = 5,
|
||||
PIN_CAPABILITY_DIGITAL = 0x01,
|
||||
PIN_CAPABILITY_ANALOG = 0x02,
|
||||
PIN_CAPABILITY_TOUCH = 0x04,
|
||||
// built/yt/yotta_modules/microbit-dal/inc/drivers/MicroBitRadio.h
|
||||
MICROBIT_RADIO_STATUS_INITIALISED = 0x0001,
|
||||
MICROBIT_RADIO_BASE_ADDRESS = 0x75626974,
|
||||
|
85
libs/core/enums.d.ts
vendored
@ -34,10 +34,10 @@ declare namespace basic {
|
||||
|
||||
|
||||
declare enum TouchPin {
|
||||
P0 = 7, // MICROBIT_ID_IO_P0
|
||||
P1 = 8, // MICROBIT_ID_IO_P1
|
||||
P2 = 9, // MICROBIT_ID_IO_P2
|
||||
P3 = 40, // CALLIOPE_ID_IO_P22
|
||||
P0 = 19, // MICROBIT_ID_IO_P12
|
||||
P1 = 7, // MICROBIT_ID_IO_P0
|
||||
P2 = 8, // MICROBIT_ID_IO_P1
|
||||
P3 = 23, // MICROBIT_ID_IO_P16
|
||||
}
|
||||
|
||||
|
||||
@ -152,17 +152,18 @@ declare namespace input {
|
||||
MICROBIT_ID_IO_P5 = 12, // MICROBIT_ID_IO_P5
|
||||
MICROBIT_ID_IO_P6 = 13, // MICROBIT_ID_IO_P6
|
||||
MICROBIT_ID_IO_P7 = 14, // MICROBIT_ID_IO_P7
|
||||
//MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
|
||||
MICROBIT_ID_IO_P8 = 15, // MICROBIT_ID_IO_P8
|
||||
MICROBIT_ID_IO_P9 = 16, // MICROBIT_ID_IO_P9
|
||||
MICROBIT_ID_IO_P10 = 17, // MICROBIT_ID_IO_P10
|
||||
MICROBIT_ID_IO_P11 = 18, // MICROBIT_ID_IO_P11
|
||||
//MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
|
||||
//MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
|
||||
//MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
|
||||
//MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
|
||||
//MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
|
||||
MICROBIT_ID_IO_P12 = 19, // MICROBIT_ID_IO_P12
|
||||
MICROBIT_ID_IO_P13 = 20, // MICROBIT_ID_IO_P13
|
||||
MICROBIT_ID_IO_P14 = 21, // MICROBIT_ID_IO_P14
|
||||
MICROBIT_ID_IO_P15 = 22, // MICROBIT_ID_IO_P15
|
||||
MICROBIT_ID_IO_P16 = 23, // MICROBIT_ID_IO_P16
|
||||
MICROBIT_ID_IO_P19 = 24, // MICROBIT_ID_IO_P19
|
||||
MICROBIT_ID_IO_P20 = 25, // MICROBIT_ID_IO_P20
|
||||
MICROBIT_ID_IO_P21 = 50, // MICROBIT_ID_IO_P21
|
||||
MES_DEVICE_INFO_ID = 1103, // MES_DEVICE_INFO_ID
|
||||
MES_SIGNAL_STRENGTH_ID = 1101, // MES_SIGNAL_STRENGTH_ID
|
||||
MES_DPAD_CONTROLLER_ID = 1104, // MES_DPAD_CONTROLLER_ID
|
||||
@ -175,6 +176,10 @@ declare namespace input {
|
||||
MICROBIT_BUTTON_EVT_CLICK = 3, // MICROBIT_BUTTON_EVT_CLICK
|
||||
MICROBIT_RADIO_EVT_DATAGRAM = 1, // MICROBIT_RADIO_EVT_DATAGRAM
|
||||
MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE = 1, // MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE
|
||||
MICROBIT_PIN_EVT_RISE = 2, // MICROBIT_PIN_EVT_RISE
|
||||
MICROBIT_PIN_EVT_FALL = 3, // MICROBIT_PIN_EVT_FALL
|
||||
MICROBIT_PIN_EVT_PULSE_HI = 4, // MICROBIT_PIN_EVT_PULSE_HI
|
||||
MICROBIT_PIN_EVT_PULSE_LO = 5, // MICROBIT_PIN_EVT_PULSE_LO
|
||||
MES_ALERT_EVT_ALARM1 = 6, // MES_ALERT_EVT_ALARM1
|
||||
MES_ALERT_EVT_ALARM2 = 7, // MES_ALERT_EVT_ALARM2
|
||||
MES_ALERT_EVT_ALARM3 = 8, // MES_ALERT_EVT_ALARM3
|
||||
@ -263,36 +268,35 @@ declare namespace motors {
|
||||
|
||||
|
||||
declare enum DigitalPin {
|
||||
P0 = 7, // MICROBIT_ID_IO_P0
|
||||
P1 = 8, // MICROBIT_ID_IO_P1
|
||||
P2 = 9, // MICROBIT_ID_IO_P2
|
||||
P3 = 40, // CALLIOPE_ID_IO_P22
|
||||
P0 = 19, // MICROBIT_ID_IO_P12
|
||||
P1 = 7, // MICROBIT_ID_IO_P0
|
||||
P2 = 8, // MICROBIT_ID_IO_P1
|
||||
P3 = 23, // MICROBIT_ID_IO_P16
|
||||
C4 = 10, // MICROBIT_ID_IO_P3
|
||||
C5 = 11, // MICROBIT_ID_IO_P4
|
||||
C6 = 17, // MICROBIT_ID_IO_P10
|
||||
C7 = 34, // CALLIOPE_ID_IO_P7
|
||||
C8 = 35, // CALLIOPE_ID_IO_P8
|
||||
C9 = 36, // CALLIOPE_ID_IO_P9
|
||||
C7 = 20, // MICROBIT_ID_IO_P13
|
||||
C8 = 21, // MICROBIT_ID_IO_P14
|
||||
C9 = 22, // MICROBIT_ID_IO_P15
|
||||
C10 = 16, // MICROBIT_ID_IO_P9
|
||||
C11 = 14, // MICROBIT_ID_IO_P7
|
||||
C12 = 13, // MICROBIT_ID_IO_P6
|
||||
C13 = 37, // CALLIOPE_ID_IO_P13
|
||||
C14 = 38, // CALLIOPE_ID_IO_P14
|
||||
C15 = 39, // CALLIOPE_ID_IO_P15
|
||||
//P16 = MICROBIT_ID_IO_P16,
|
||||
C16 = 9, // MICROBIT_ID_IO_P2
|
||||
C17 = 15, // MICROBIT_ID_IO_P8
|
||||
C18 = 25, // MICROBIT_ID_IO_P20
|
||||
C19 = 24, // MICROBIT_ID_IO_P19
|
||||
C20 = 25, // MICROBIT_ID_IO_P20
|
||||
}
|
||||
|
||||
|
||||
declare enum AnalogPin {
|
||||
//P0 = MICROBIT_ID_IO_P0, -- does not work analogue
|
||||
P1 = 8, // MICROBIT_ID_IO_P1
|
||||
P2 = 9, // MICROBIT_ID_IO_P2
|
||||
//P3 = CALLIOPE_ID_IO_P22, -- does not work analogue
|
||||
P1 = 7, // MICROBIT_ID_IO_P0
|
||||
P2 = 8, // MICROBIT_ID_IO_P1
|
||||
C4 = 10, // MICROBIT_ID_IO_P3
|
||||
C5 = 11, // MICROBIT_ID_IO_P4
|
||||
C6 = 17, // MICROBIT_ID_IO_P10
|
||||
C16 = 9, // MICROBIT_ID_IO_P2
|
||||
C17 = 15, // MICROBIT_ID_IO_P8
|
||||
MIC = 50, // MICROBIT_ID_IO_P21
|
||||
}
|
||||
|
||||
|
||||
@ -312,22 +316,33 @@ declare namespace motors {
|
||||
}
|
||||
|
||||
|
||||
declare enum PinEventType {
|
||||
//% block="edge"
|
||||
Edge = 1, // MICROBIT_PIN_EVENT_ON_EDGE
|
||||
//% block="pulse"
|
||||
Pulse = 2, // MICROBIT_PIN_EVENT_ON_PULSE
|
||||
//% block="touch"
|
||||
Touch = 3, // MICROBIT_PIN_EVENT_ON_TOUCH
|
||||
//% block="none"
|
||||
None = 0, // MICROBIT_PIN_EVENT_NONE
|
||||
}
|
||||
|
||||
|
||||
declare enum SerialPin {
|
||||
P0 = 7, // MICROBIT_ID_IO_P0
|
||||
P1 = 8, // MICROBIT_ID_IO_P1
|
||||
P2 = 9, // MICROBIT_ID_IO_P2
|
||||
//P8 = MICROBIT_ID_IO_P8,
|
||||
//P12 = MICROBIT_ID_IO_P12,
|
||||
//P13 = MICROBIT_ID_IO_P13,
|
||||
//P14 = MICROBIT_ID_IO_P14,
|
||||
//P15 = MICROBIT_ID_IO_P15,
|
||||
//P16 = MICROBIT_ID_IO_P16
|
||||
C16 = 9, // MICROBIT_ID_IO_P2
|
||||
C17 = 15, // MICROBIT_ID_IO_P8
|
||||
P0 = 19, // MICROBIT_ID_IO_P12
|
||||
P1 = 7, // MICROBIT_ID_IO_P0
|
||||
P2 = 8, // MICROBIT_ID_IO_P1
|
||||
P3 = 23, // MICROBIT_ID_IO_P16
|
||||
}
|
||||
|
||||
|
||||
declare enum BaudRate {
|
||||
//% block=115200
|
||||
BaudRate115200 = 115200,
|
||||
//% block=57600
|
||||
BaudRate56700 = 57600,
|
||||
//% block=9600
|
||||
BaudRate9600 = 9600,
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ enum LedSpriteProperty {
|
||||
/**
|
||||
* A single-LED sprite game engine
|
||||
*/
|
||||
//% color=#008272 weight=32
|
||||
//% color=#008272 weight=32 icon="\uf11b"
|
||||
//% advanced=true
|
||||
namespace game {
|
||||
let _score: number = 0;
|
||||
|
@ -3,7 +3,7 @@
|
||||
/**
|
||||
* Creation, manipulation and display of LED images.
|
||||
*/
|
||||
//% color=#5C2D91 weight=31
|
||||
//% color=#5C2D91 weight=31 icon="\uf03e"
|
||||
//% advanced=true
|
||||
namespace images {
|
||||
/**
|
||||
@ -43,9 +43,9 @@ namespace ImageMethods {
|
||||
*/
|
||||
//% help=images/show-image weight=80 blockNamespace=images
|
||||
//% blockId=device_show_image_offset block="show image %sprite|at offset %offset" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
void showImage(Image sprite, int xOffset) {
|
||||
uBit.display.print(MicroBitImage(sprite), -xOffset, 0, 0);
|
||||
//% parts="ledmatrix" async
|
||||
void showImage(Image sprite, int xOffset, int interval = 400) {
|
||||
uBit.display.print(MicroBitImage(sprite), -xOffset, 0, 0, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -150,7 +150,7 @@ namespace ImageMethods {
|
||||
*/
|
||||
//% weight=70 help=images/show-frame
|
||||
//% parts="ledmatrix"
|
||||
void showFrame(Image i, int frame) {
|
||||
showImage(i, frame * 5);
|
||||
void showFrame(Image i, int frame, int interval = 400) {
|
||||
showImage(i, frame * 5, interval);
|
||||
}
|
||||
}
|
||||
|
@ -26,10 +26,10 @@ enum class Rotation {
|
||||
};
|
||||
|
||||
enum class TouchPin {
|
||||
P0 = MICROBIT_ID_IO_P0,
|
||||
P1 = MICROBIT_ID_IO_P1,
|
||||
P2 = MICROBIT_ID_IO_P2,
|
||||
P3 = CALLIOPE_ID_IO_P22
|
||||
P0 = MICROBIT_ID_IO_P12,
|
||||
P1 = MICROBIT_ID_IO_P0,
|
||||
P2 = MICROBIT_ID_IO_P1,
|
||||
P3 = MICROBIT_ID_IO_P16
|
||||
};
|
||||
|
||||
enum class AcceleratorRange {
|
||||
@ -108,7 +108,7 @@ enum class Gesture {
|
||||
SixG = MICROBIT_ACCELEROMETER_EVT_6G
|
||||
};
|
||||
|
||||
//% color=#C90072 weight=99
|
||||
//% color=#C90072 weight=99 icon="\uf192"
|
||||
namespace input {
|
||||
/**
|
||||
* Do something when a button (``A``, ``B`` or both ``A+B``) is pressed
|
||||
@ -116,7 +116,7 @@ namespace input {
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-button-pressed weight=85 blockGap=8
|
||||
//% blockId=device_button_event block="on button|%NAME|pressed" icon="\uf192"
|
||||
//% blockId=device_button_event block="on button|%NAME|pressed"
|
||||
//% parts="buttonpair"
|
||||
void onButtonPressed(Button button, Action body) {
|
||||
registerWithDal((int)button, MICROBIT_BUTTON_EVT_CLICK, body);
|
||||
@ -127,7 +127,7 @@ namespace input {
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-gesture weight=84 blockGap=8
|
||||
//% blockId=device_gesture_event block="on |%NAME" icon="\uf135"
|
||||
//% blockId=device_gesture_event block="on |%NAME"
|
||||
//% parts="accelerometer"
|
||||
void onGesture(Gesture gesture, Action body) {
|
||||
if ((int)gesture == MICROBIT_ACCELEROMETER_EVT_3G && uBit.accelerometer.getRange() < 3)
|
||||
@ -143,7 +143,7 @@ namespace input {
|
||||
* @param body the code to run when the pin is pressed
|
||||
*/
|
||||
//% help=input/on-pin-pressed weight=83
|
||||
//% blockId=device_pin_event block="on pin %NAME|pressed" icon="\uf094"
|
||||
//% blockId=device_pin_event block="on pin %NAME|pressed"
|
||||
void onPinPressed(TouchPin name, Action body) {
|
||||
auto pin = getPin((int)name);
|
||||
if (!pin) return;
|
||||
@ -159,7 +159,7 @@ namespace input {
|
||||
* @param body the code to run when the pin is released
|
||||
*/
|
||||
//% help=input/on-pin-released weight=6 blockGap=8
|
||||
//% blockId=device_pin_released block="on pin %NAME|released" icon="\uf094"
|
||||
//% blockId=device_pin_released block="on pin %NAME|released"
|
||||
//% advanced=true
|
||||
void onPinReleased(TouchPin name, Action body) {
|
||||
auto pin = getPin((int)name);
|
||||
@ -176,7 +176,7 @@ namespace input {
|
||||
//% help=input/button-is-pressed weight=60
|
||||
//% block="button|%NAME|is pressed"
|
||||
//% blockId=device_get_button2
|
||||
//% icon="\uf192" blockGap=8
|
||||
//% blockGap=8
|
||||
//% parts="buttonpair"
|
||||
bool buttonIsPressed(Button button) {
|
||||
if (button == Button::A)
|
||||
@ -193,7 +193,7 @@ namespace input {
|
||||
* @param name pin used to detect the touch
|
||||
*/
|
||||
//% help=input/pin-is-pressed weight=58
|
||||
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed" icon="\uf094"
|
||||
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed"
|
||||
//% blockGap=8
|
||||
bool pinIsPressed(TouchPin name) {
|
||||
auto pin = getPin((int)name);
|
||||
@ -211,7 +211,7 @@ namespace input {
|
||||
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
|
||||
* @param dimension TODO
|
||||
*/
|
||||
//% help=input/acceleration weight=58 icon="\uf135"
|
||||
//% help=input/acceleration weight=58
|
||||
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
|
||||
//% parts="accelerometer"
|
||||
int acceleration(Dimension dimension) {
|
||||
@ -228,7 +228,7 @@ namespace input {
|
||||
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
|
||||
*/
|
||||
//% help=input/light-level weight=57
|
||||
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
|
||||
//% blockId=device_get_light_level block="light level" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
int lightLevel() {
|
||||
return uBit.display.readLightLevel();
|
||||
@ -238,7 +238,7 @@ namespace input {
|
||||
* Get the current compass heading in degrees.
|
||||
*/
|
||||
//% help=input/compass-heading
|
||||
//% weight=56 icon="\uf14e"
|
||||
//% weight=56
|
||||
//% blockId=device_heading block="compass heading (°)" blockGap=8
|
||||
//% parts="compass"
|
||||
int compassHeading() {
|
||||
@ -249,7 +249,7 @@ namespace input {
|
||||
/**
|
||||
* Gets the temperature in Celsius degrees (°C).
|
||||
*/
|
||||
//% weight=55 icon="\uf06d"
|
||||
//% weight=55
|
||||
//% help=input/temperature
|
||||
//% blockId=device_temperature block="temperature (°C)" blockGap=8
|
||||
//% parts="thermometer"
|
||||
@ -262,7 +262,7 @@ namespace input {
|
||||
* @param kind TODO
|
||||
*/
|
||||
//% help=input/rotation weight=52
|
||||
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8 icon="\uf197"
|
||||
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8
|
||||
//% parts="accelerometer" advanced=true
|
||||
int rotation(Rotation kind) {
|
||||
switch (kind) {
|
||||
@ -277,7 +277,7 @@ namespace input {
|
||||
* @param dimension TODO
|
||||
*/
|
||||
//% help=input/magnetic-force weight=51
|
||||
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8 icon="\uf076"
|
||||
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8
|
||||
//% parts="compass"
|
||||
//% advanced=true
|
||||
int magneticForce(Dimension dimension) {
|
||||
@ -297,7 +297,7 @@ namespace input {
|
||||
* Gets the number of milliseconds elapsed since power on.
|
||||
*/
|
||||
//% help=input/running-time weight=50
|
||||
//% blockId=device_get_running_time block="running time (ms)" icon="\uf017"
|
||||
//% blockId=device_get_running_time block="running time (ms)"
|
||||
//% advanced=true
|
||||
int runningTime() {
|
||||
return system_timer_current_time();
|
||||
@ -314,7 +314,7 @@ namespace input {
|
||||
* @param range a value describe the maximum strengh of acceleration measured
|
||||
*/
|
||||
//% help=input/set-accelerometer-range
|
||||
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range" icon="\uf135"
|
||||
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range"
|
||||
//% weight=5
|
||||
//% parts="accelerometer"
|
||||
//% advanced=true
|
||||
|
@ -8,7 +8,7 @@ enum class DisplayMode_ {
|
||||
// TODO DISPLAY_MODE_BLACK_AND_WHITE_LIGHT_SENSE
|
||||
};
|
||||
|
||||
//% color=#8169E6 weight=35
|
||||
//% color=#8169E6 weight=35 icon="\uf205"
|
||||
namespace led {
|
||||
|
||||
/**
|
||||
@ -17,7 +17,7 @@ namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/plot weight=78
|
||||
//% blockId=device_plot block="plot|x %x|y %y" icon="\uf205" blockGap=8
|
||||
//% blockId=device_plot block="plot|x %x|y %y" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
void plot(int x, int y) {
|
||||
uBit.display.image.setPixelValue(x, y, 1);
|
||||
@ -29,7 +29,7 @@ namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/unplot weight=77
|
||||
//% blockId=device_unplot block="unplot|x %x|y %y" icon="\uf204" blockGap=8
|
||||
//% blockId=device_unplot block="unplot|x %x|y %y" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
void unplot(int x, int y) {
|
||||
uBit.display.image.setPixelValue(x, y, 0);
|
||||
@ -41,7 +41,7 @@ namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/point weight=76
|
||||
//% blockId=device_point block="point|x %x|y %y" icon="\uf10c"
|
||||
//% blockId=device_point block="point|x %x|y %y"
|
||||
//% parts="ledmatrix"
|
||||
bool point(int x, int y) {
|
||||
int pix = uBit.display.image.getPixelValue(x, y);
|
||||
@ -52,7 +52,7 @@ namespace led {
|
||||
* Get the screen brightness from 0 (off) to 255 (full bright).
|
||||
*/
|
||||
//% help=led/brightness weight=60
|
||||
//% blockId=device_get_brightness block="brightness" icon="\uf042" blockGap=8
|
||||
//% blockId=device_get_brightness block="brightness" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true
|
||||
int brightness() {
|
||||
@ -64,7 +64,7 @@ namespace led {
|
||||
* @param value the brightness value, eg:255, 127, 0
|
||||
*/
|
||||
//% help=led/set-brightness weight=59
|
||||
//% blockId=device_set_brightness block="set brightness %value" icon="\uf042"
|
||||
//% blockId=device_set_brightness block="set brightness %value"
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true
|
||||
void setBrightness(int value) {
|
||||
@ -75,7 +75,7 @@ namespace led {
|
||||
* Cancels the current animation and clears other pending animations.
|
||||
*/
|
||||
//% weight=50 help=led/stop-animation
|
||||
//% blockId=device_stop_animation block="stop animation" icon="\uf04d"
|
||||
//% blockId=device_stop_animation block="stop animation"
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true
|
||||
void stopAnimation() {
|
||||
@ -95,7 +95,7 @@ namespace led {
|
||||
/**
|
||||
* Turns on or off the display
|
||||
*/
|
||||
//% help=led/enable blockId=device_led_enable icon="\uf04d"
|
||||
//% help=led/enable blockId=device_led_enable
|
||||
//% advanced=true parts="ledmatrix"
|
||||
void enable(bool on) {
|
||||
if (on) uBit.display.enable();
|
||||
|
@ -19,7 +19,7 @@ enum Motor {
|
||||
/**
|
||||
* Blocks to control the onboard motors
|
||||
*/
|
||||
//% color=#008272 weight=30
|
||||
//% color=#008272 weight=30 icon="\uf1b9"
|
||||
namespace motors {
|
||||
/**
|
||||
* Turns on the motor at a certain percent of power. Switches to single motor mode!
|
||||
|
@ -9,9 +9,13 @@ namespace music {
|
||||
//% help=music/play-tone weight=90
|
||||
//% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
|
||||
//% parts="speaker" async
|
||||
void playTone(int freqency, int ms) {
|
||||
uBit.soundmotor.soundOn(freqency);
|
||||
if(ms > 0) uBit.sleep(ms);
|
||||
uBit.soundmotor.soundOff();
|
||||
void playTone(int frequency, int ms) {
|
||||
if(frequency > 0) uBit.soundmotor.soundOn(frequency);
|
||||
else uBit.soundmotor.soundOff();
|
||||
if(ms > 0) {
|
||||
uBit.sleep(ms);
|
||||
uBit.soundmotor.soundOff();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ enum BeatFraction {
|
||||
/**
|
||||
* Generation of music tones through pin ``P0``.
|
||||
*/
|
||||
//% color=#DF4600 weight=98
|
||||
//% color=#DF4600 weight=98 icon="\uf025"
|
||||
namespace music {
|
||||
let beatsPerMinute: number = 120;
|
||||
|
||||
@ -145,7 +145,7 @@ namespace music {
|
||||
* @param frequency pitch of the tone to play in Hertz (Hz)
|
||||
*/
|
||||
//% help=music/ring-tone weight=80
|
||||
//% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
|
||||
//% blockId=device_ring block="ring tone (Hz)|%note=device_note" blockGap=8
|
||||
//% parts="speaker" async
|
||||
export function ringTone(frequency: number) {
|
||||
playTone(frequency, 0);
|
||||
|
@ -1,35 +1,34 @@
|
||||
#include "pxt.h"
|
||||
|
||||
enum class DigitalPin {
|
||||
P0 = MICROBIT_ID_IO_P0, // edge connector 0
|
||||
P1 = MICROBIT_ID_IO_P1, // edge connector 1
|
||||
P2 = MICROBIT_ID_IO_P2, // edge connector 2
|
||||
P3 = CALLIOPE_ID_IO_P22, // edge connector 3
|
||||
C4 = MICROBIT_ID_IO_P3, // LED matrix C1
|
||||
C5 = MICROBIT_ID_IO_P4, // LED matrix C2
|
||||
C6 = MICROBIT_ID_IO_P10, // LED matrix C3
|
||||
C7 = CALLIOPE_ID_IO_P7, // LED matrix C4
|
||||
C8 = CALLIOPE_ID_IO_P8, // LED matrix C5
|
||||
C9 = CALLIOPE_ID_IO_P9, // LED matrix C6
|
||||
C10 = MICROBIT_ID_IO_P9, // LED matrix C7
|
||||
C11 = MICROBIT_ID_IO_P7, // LED matrix C8
|
||||
C12 = MICROBIT_ID_IO_P6, // LED matrix C9
|
||||
C13 = CALLIOPE_ID_IO_P13, // LED matrix R1
|
||||
C14 = CALLIOPE_ID_IO_P14, // LED matrix R2
|
||||
C15 = CALLIOPE_ID_IO_P15, // LED matrix R3
|
||||
//P16 = MICROBIT_ID_IO_P16,
|
||||
C19 = MICROBIT_ID_IO_P19, // SCL
|
||||
C20 = MICROBIT_ID_IO_P20 // SDA
|
||||
P0 = MICROBIT_ID_IO_P12, // edge connector 0
|
||||
P1 = MICROBIT_ID_IO_P0, // edge connector 1
|
||||
P2 = MICROBIT_ID_IO_P1, // edge connector 2
|
||||
P3 = MICROBIT_ID_IO_P16, // edge connector 3
|
||||
C4 = MICROBIT_ID_IO_P3, // LED matrix C1
|
||||
C5 = MICROBIT_ID_IO_P4, // LED matrix C2
|
||||
C6 = MICROBIT_ID_IO_P10, // LED matrix C3
|
||||
C7 = MICROBIT_ID_IO_P13, // LED matrix C4
|
||||
C8 = MICROBIT_ID_IO_P14, // LED matrix C5
|
||||
C9 = MICROBIT_ID_IO_P15, // LED matrix C6
|
||||
C10 = MICROBIT_ID_IO_P9, // LED matrix C7
|
||||
C11 = MICROBIT_ID_IO_P7, // LED matrix C8
|
||||
C12 = MICROBIT_ID_IO_P6, // LED matrix C9
|
||||
C16 = MICROBIT_ID_IO_P2, // RX
|
||||
C17 = MICROBIT_ID_IO_P8, // TX
|
||||
C18 = MICROBIT_ID_IO_P20, // SDA
|
||||
C19 = MICROBIT_ID_IO_P19 // SCL
|
||||
};
|
||||
|
||||
enum class AnalogPin {
|
||||
//P0 = MICROBIT_ID_IO_P0, -- does not work analogue
|
||||
P1 = MICROBIT_ID_IO_P1, // edge connector 1
|
||||
P2 = MICROBIT_ID_IO_P2, // edge connector 2
|
||||
//P3 = CALLIOPE_ID_IO_P22, -- does not work analogue
|
||||
C4 = MICROBIT_ID_IO_P3,
|
||||
C5 = MICROBIT_ID_IO_P4,
|
||||
C6 = MICROBIT_ID_IO_P10,
|
||||
P1 = MICROBIT_ID_IO_P0, // edge connector 1
|
||||
P2 = MICROBIT_ID_IO_P1, // edge connector 2
|
||||
C4 = MICROBIT_ID_IO_P3, // LED matrix C1
|
||||
C5 = MICROBIT_ID_IO_P4, // LED matrix C2
|
||||
C6 = MICROBIT_ID_IO_P10, // LED matrix C3
|
||||
C16 = MICROBIT_ID_IO_P2, // RX
|
||||
C17 = MICROBIT_ID_IO_P8, // TX
|
||||
MIC = MICROBIT_ID_IO_P21 // microphone
|
||||
};
|
||||
|
||||
enum class PulseValue {
|
||||
@ -46,6 +45,17 @@ enum class PinPullMode {
|
||||
PullNone = 2
|
||||
};
|
||||
|
||||
enum class PinEventType {
|
||||
//% block="edge"
|
||||
Edge = MICROBIT_PIN_EVENT_ON_EDGE,
|
||||
//% block="pulse"
|
||||
Pulse = MICROBIT_PIN_EVENT_ON_PULSE,
|
||||
//% block="touch"
|
||||
Touch = MICROBIT_PIN_EVENT_ON_TOUCH,
|
||||
//% block="none"
|
||||
None = MICROBIT_PIN_EVENT_NONE
|
||||
};
|
||||
|
||||
MicroBitPin *getPin(int id) {
|
||||
switch (id) {
|
||||
case MICROBIT_ID_IO_P0: return &uBit.io.P0;
|
||||
@ -56,28 +66,18 @@ MicroBitPin *getPin(int id) {
|
||||
case MICROBIT_ID_IO_P5: return &uBit.io.P5;
|
||||
case MICROBIT_ID_IO_P6: return &uBit.io.P6;
|
||||
case MICROBIT_ID_IO_P7: return &uBit.io.P7;
|
||||
//case MICROBIT_ID_IO_P8: return &uBit.io.P8;
|
||||
case MICROBIT_ID_IO_P8: return &uBit.io.P8;
|
||||
case MICROBIT_ID_IO_P9: return &uBit.io.P9;
|
||||
case MICROBIT_ID_IO_P10: return &uBit.io.P10;
|
||||
case MICROBIT_ID_IO_P11: return &uBit.io.P11;
|
||||
//case MICROBIT_ID_IO_P12: return &uBit.io.P12;
|
||||
//case MICROBIT_ID_IO_P13: return &uBit.io.P13;
|
||||
//case MICROBIT_ID_IO_P14: return &uBit.io.P14;
|
||||
//case MICROBIT_ID_IO_P15: return &uBit.io.P15;
|
||||
//case MICROBIT_ID_IO_P16: return &uBit.io.P16;
|
||||
case MICROBIT_ID_IO_P12: return &uBit.io.P12;
|
||||
case MICROBIT_ID_IO_P13: return &uBit.io.P13;
|
||||
case MICROBIT_ID_IO_P14: return &uBit.io.P14;
|
||||
case MICROBIT_ID_IO_P15: return &uBit.io.P15;
|
||||
case MICROBIT_ID_IO_P16: return &uBit.io.P16;
|
||||
case MICROBIT_ID_IO_P19: return &uBit.io.P19;
|
||||
case MICROBIT_ID_IO_P20: return &uBit.io.P20;
|
||||
case CALLIOPE_ID_IO_P3: return &uBit.io.CAL_P3;
|
||||
case CALLIOPE_ID_IO_P7: return &uBit.io.CAL_P7;
|
||||
case CALLIOPE_ID_IO_P8: return &uBit.io.CAL_P8;
|
||||
case CALLIOPE_ID_IO_P9: return &uBit.io.CAL_P9;
|
||||
case CALLIOPE_ID_IO_P13: return &uBit.io.CAL_P13;
|
||||
case CALLIOPE_ID_IO_P14: return &uBit.io.CAL_P14;
|
||||
case CALLIOPE_ID_IO_P15: return &uBit.io.CAL_P15;
|
||||
case CALLIOPE_ID_IO_P22: return &uBit.io.CAL_P22;
|
||||
case CALLIOPE_ID_IO_P28: return &uBit.io.CAL_P28;
|
||||
case CALLIOPE_ID_IO_P29: return &uBit.io.CAL_P29;
|
||||
case CALLIOPE_ID_IO_P30: return &uBit.io.CAL_P30;
|
||||
case MICROBIT_ID_IO_P21: return &uBit.io.P21;
|
||||
default: return NULL;
|
||||
}
|
||||
}
|
||||
@ -117,7 +117,7 @@ namespace pins {
|
||||
*/
|
||||
//% help=pins/digital-write-pin weight=29
|
||||
//% blockId=device_set_digital_pin block="digital write|pin %name|to %value"
|
||||
void digitalWritePin(DigitalPin name, int value) {
|
||||
void digitalWritePin(DigitalPin name, int value) {
|
||||
PINOP(setDigitalValue(value));
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ namespace pins {
|
||||
* @param name pin to write to
|
||||
*/
|
||||
//% help=pins/analog-read-pin weight=25
|
||||
//% blockId=device_get_analog_pin block="analog read|pin %name" blockGap="8"
|
||||
//% blockId=device_get_analog_pin block="analog read|pin %name" blockGap="8"
|
||||
int analogReadPin(AnalogPin name) {
|
||||
PINREAD(getAnalogValue());
|
||||
}
|
||||
@ -138,7 +138,7 @@ namespace pins {
|
||||
*/
|
||||
//% help=pins/analog-write-pin weight=24
|
||||
//% blockId=device_set_analog_pin block="analog write|pin %name|to %value" blockGap=8
|
||||
void analogWritePin(AnalogPin name, int value) {
|
||||
void analogWritePin(AnalogPin name, int value) {
|
||||
PINOP(setAnalogValue(value));
|
||||
}
|
||||
|
||||
@ -149,11 +149,11 @@ namespace pins {
|
||||
* @param micros period in micro seconds. eg:20000
|
||||
*/
|
||||
//% help=pins/analog-set-period weight=23 blockGap=8
|
||||
//% blockId=device_set_analog_period block="analog set period|pin %pin|to (µs)%micros"
|
||||
void analogSetPeriod(AnalogPin name, int micros) {
|
||||
//% blockId=device_set_analog_period block="analog set period|pin %pin|to (µs)%micros"
|
||||
void analogSetPeriod(AnalogPin name, int micros) {
|
||||
PINOP(setAnalogPeriodUs(micros));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Configures this pin to a digital input, and generates events where the timestamp is the duration that this pin was either ``high`` or ``low``.
|
||||
*/
|
||||
@ -162,11 +162,11 @@ namespace pins {
|
||||
void onPulsed(DigitalPin name, PulseValue pulse, Action body) {
|
||||
MicroBitPin* pin = getPin((int)name);
|
||||
if (!pin) return;
|
||||
|
||||
pin->eventOn(MICROBIT_PIN_EVENT_ON_PULSE);
|
||||
|
||||
pin->eventOn(MICROBIT_PIN_EVENT_ON_PULSE);
|
||||
registerWithDal((int)name, (int)pulse, body);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the duration of the last pulse in micro-seconds. This function should be called from a ``onPulsed`` handler.
|
||||
*/
|
||||
@ -182,7 +182,7 @@ namespace pins {
|
||||
* @param name the pin which measures the pulse
|
||||
* @param value the value of the pulse (default high)
|
||||
* @param maximum duration in micro-seconds
|
||||
*/
|
||||
*/
|
||||
//% blockId="pins_pulse_in" block="pulse in (µs)|pin %name|pulsed %value"
|
||||
//% weight=20
|
||||
int pulseIn(DigitalPin name, PulseValue value, int maxDuration = 2000000) {
|
||||
@ -190,20 +190,20 @@ namespace pins {
|
||||
if (!pin) return 0;
|
||||
|
||||
int pulse = value == PulseValue::High ? 1 : 0;
|
||||
uint64_t tick = system_timer_current_time_us();
|
||||
uint64_t maxd = (uint64_t)maxDuration;
|
||||
uint64_t tick = system_timer_current_time_us();
|
||||
uint64_t maxd = (uint64_t)maxDuration;
|
||||
while(pin->getDigitalValue() != pulse) {
|
||||
if(system_timer_current_time_us() - tick > maxd)
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t start = system_timer_current_time_us();
|
||||
uint64_t start = system_timer_current_time_us();
|
||||
while(pin->getDigitalValue() == pulse) {
|
||||
if(system_timer_current_time_us() - tick > maxd)
|
||||
return 0;
|
||||
}
|
||||
uint64_t end = system_timer_current_time_us();
|
||||
return end - start;
|
||||
return 0;
|
||||
}
|
||||
uint64_t end = system_timer_current_time_us();
|
||||
return end - start;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -214,7 +214,7 @@ namespace pins {
|
||||
//% help=pins/servo-write-pin weight=20
|
||||
//% blockId=device_set_servo_pin block="servo write|pin %name|to %value" blockGap=8
|
||||
//% parts=microservo trackArgs=0
|
||||
void servoWritePin(AnalogPin name, int value) {
|
||||
void servoWritePin(AnalogPin name, int value) {
|
||||
PINOP(setServoValue(value));
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@ namespace pins {
|
||||
*/
|
||||
//% help=pins/servo-set-pulse weight=19
|
||||
//% blockId=device_set_servo_pulse block="servo set pulse|pin %value|to (µs) %micros"
|
||||
void servoSetPulse(AnalogPin name, int micros) {
|
||||
void servoSetPulse(AnalogPin name, int micros) {
|
||||
PINOP(setServoPulseUs(micros));
|
||||
}
|
||||
|
||||
@ -236,8 +236,9 @@ namespace pins {
|
||||
* Sets the pin used when using `pins->analog pitch`.
|
||||
* @param name TODO
|
||||
*/
|
||||
//% help=pins/analog-set-pitch weight=12
|
||||
void analogSetPitchPin(AnalogPin name) {
|
||||
//% blockId=device_analog_set_pitch_pin block="analog set pitch pin %name"
|
||||
//% help=pins/analog-set-pitch weight=3 advanced=true
|
||||
void analogSetPitchPin(AnalogPin name) {
|
||||
pitchPin = getPin((int)name);
|
||||
}
|
||||
|
||||
@ -246,16 +247,18 @@ namespace pins {
|
||||
* @param frequency TODO
|
||||
* @param ms TODO
|
||||
*/
|
||||
//% help=pins/analog-pitch weight=14 async
|
||||
void analogPitch(int frequency, int ms) {
|
||||
if (pitchPin == NULL) return;
|
||||
//% blockId=device_analog_pitch block="analog pitch %frequency|for (ms) %ms"
|
||||
//% help=pins/analog-pitch weight=4 async advanced=true blockGap=8
|
||||
void analogPitch(int frequency, int ms) {
|
||||
if (pitchPin == NULL)
|
||||
analogSetPitchPin(AnalogPin::P1);
|
||||
if (frequency <= 0) {
|
||||
pitchPin->setAnalogValue(0);
|
||||
} else {
|
||||
pitchPin->setAnalogValue(512);
|
||||
pitchPin->setAnalogPeriodUs(1000000/frequency);
|
||||
}
|
||||
|
||||
|
||||
if (ms > 0) {
|
||||
fiber_sleep(ms);
|
||||
pitchPin->setAnalogValue(0);
|
||||
@ -264,7 +267,7 @@ namespace pins {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Configures the pull of this pin.
|
||||
* @param name pin to set the pull mode on
|
||||
@ -273,13 +276,25 @@ namespace pins {
|
||||
//% help=pins/set-pull weight=3
|
||||
//% blockId=device_set_pull block="set pull|pin %pin|to %pull"
|
||||
void setPull(DigitalPin name, PinPullMode pull) {
|
||||
PinMode m = pull == PinPullMode::PullDown
|
||||
PinMode m = pull == PinPullMode::PullDown
|
||||
? PinMode::PullDown
|
||||
: pull == PinPullMode::PullUp ? PinMode::PullUp
|
||||
: pull == PinPullMode::PullUp ? PinMode::PullUp
|
||||
: PinMode::PullNone;
|
||||
PINOP(setPull(m));
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the events emitted by this pin. Events can be subscribed to
|
||||
* using ``control.onEvent()``.
|
||||
* @param name pin to set the event mode on, eg: DigitalPin.P0
|
||||
* @param type the type of events for this pin to emit, eg: PinEventType.Edge
|
||||
*/
|
||||
//% help=pins/set-events weight=4 advanced=true
|
||||
//% blockId=device_set_pin_events block="set pin %pin|to emit %type|events"
|
||||
void setEvents(DigitalPin name, PinEventType type) {
|
||||
getPin((int)name)->eventOn((int)type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new zero-initialized buffer.
|
||||
* @param size number of bytes in the buffer
|
||||
@ -300,7 +315,7 @@ namespace pins {
|
||||
uBit.i2c.read(address << 1, (char*)buf->payload, size, repeat);
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Write bytes to a 7-bit I2C `address`.
|
||||
*/
|
||||
@ -327,5 +342,5 @@ namespace pins {
|
||||
auto p = allocSPI();
|
||||
return p->write(value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Control currents in Pins for analog/digital signals, servos, i2c, ...
|
||||
*/
|
||||
//% color=#A80000 weight=30
|
||||
//% color=#A80000 weight=30 icon="\uf140"
|
||||
//% advanced=true
|
||||
namespace pins {
|
||||
/**
|
||||
|
@ -79,7 +79,7 @@ namespace pxt {
|
||||
|
||||
intcheck(vtable->methods[0] == &RefRecord_destroy, ERR_SIZE, 3);
|
||||
intcheck(vtable->methods[1] == &RefRecord_print, ERR_SIZE, 4);
|
||||
|
||||
|
||||
void *ptr = ::operator new(vtable->numbytes);
|
||||
RefRecord *r = new (ptr) RefRecord(PXT_VTABLE_TO_INT(vtable));
|
||||
memset(r->fields, 0, vtable->numbytes - sizeof(RefRecord));
|
||||
@ -117,7 +117,6 @@ namespace pxt {
|
||||
|
||||
void RefObject::destroy() {
|
||||
((RefObjectMethod)getVTable()->methods[0])(this);
|
||||
delete this;
|
||||
}
|
||||
|
||||
void RefObject::print() {
|
||||
@ -132,6 +131,9 @@ namespace pxt {
|
||||
if (refmask[i]) decr(r->fields[i]);
|
||||
r->fields[i] = 0;
|
||||
}
|
||||
//RefRecord is allocated using placement new
|
||||
r->~RefRecord();
|
||||
::operator delete(r);
|
||||
}
|
||||
|
||||
void RefRecord_print(RefRecord *r)
|
||||
@ -139,63 +141,327 @@ namespace pxt {
|
||||
printf("RefRecord %p r=%d size=%d bytes\n", r, r->refcnt, r->getVTable()->numbytes);
|
||||
}
|
||||
|
||||
void RefCollection::push(uint32_t x) {
|
||||
if (isRef()) incr(x);
|
||||
data.push_back(x);
|
||||
}
|
||||
|
||||
uint32_t RefCollection::getAt(int x) {
|
||||
if (in_range(x)) {
|
||||
uint32_t tmp = data.at(x);
|
||||
if (isRef()) incr(tmp);
|
||||
return tmp;
|
||||
}
|
||||
else {
|
||||
error(ERR_OUT_OF_BOUNDS);
|
||||
return 0;
|
||||
uint32_t Segment::get(uint32_t i)
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::get index:%u\n", i);
|
||||
this->print();
|
||||
#endif
|
||||
|
||||
if (i < length)
|
||||
{
|
||||
return data[i];
|
||||
}
|
||||
return Segment::DefaultValue;
|
||||
}
|
||||
|
||||
void RefCollection::removeAt(int x) {
|
||||
if (!in_range(x))
|
||||
return;
|
||||
|
||||
if (isRef()) decr(data.at(x));
|
||||
data.erase(data.begin()+x);
|
||||
}
|
||||
|
||||
void RefCollection::setAt(int x, uint32_t y) {
|
||||
if (!in_range(x))
|
||||
return;
|
||||
|
||||
if (isRef()) {
|
||||
decr(data.at(x));
|
||||
incr(y);
|
||||
}
|
||||
data.at(x) = y;
|
||||
}
|
||||
|
||||
int RefCollection::indexOf(uint32_t x, int start) {
|
||||
if (!in_range(start))
|
||||
return -1;
|
||||
|
||||
if (isString()) {
|
||||
StringData *xx = (StringData*)x;
|
||||
for (uint32_t i = start; i < data.size(); ++i) {
|
||||
StringData *ee = (StringData*)data.at(i);
|
||||
if (xx->len == ee->len && memcmp(xx->data, ee->data, xx->len) == 0)
|
||||
return (int)i;
|
||||
void Segment::set(uint32_t i, uint32_t value)
|
||||
{
|
||||
if (i < size)
|
||||
{
|
||||
data[i] = value;
|
||||
}
|
||||
} else {
|
||||
for (uint32_t i = start; i < data.size(); ++i)
|
||||
if (data.at(i) == x)
|
||||
else if (i < Segment::MaxSize)
|
||||
{
|
||||
growByMin(i + 1);
|
||||
data[i] = value;
|
||||
}
|
||||
if (length <= i)
|
||||
{
|
||||
length = i + 1;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::set\n");
|
||||
this->print();
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
uint16_t Segment::growthFactor(uint16_t size)
|
||||
{
|
||||
if (size == 0)
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
if (size < 64)
|
||||
{
|
||||
return size * 2; // Double
|
||||
}
|
||||
if (size < 512)
|
||||
{
|
||||
return size * 5/3; //Grow by 1.66 rate
|
||||
}
|
||||
return size + 256; //Grow by constant rate
|
||||
}
|
||||
|
||||
void Segment::growByMin(uint16_t minSize)
|
||||
{
|
||||
growBy(max(minSize, growthFactor(size)));
|
||||
}
|
||||
|
||||
void Segment::growBy(uint16_t newSize)
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("growBy: %d\n", newSize);
|
||||
this->print();
|
||||
#endif
|
||||
if (size < newSize)
|
||||
{
|
||||
//this will throw if unable to allocate
|
||||
uint32_t *tmp = (uint32_t*)(::operator new(newSize * sizeof(uint32_t)));
|
||||
|
||||
//Copy existing data
|
||||
if (size)
|
||||
{
|
||||
memcpy(tmp, data, size * sizeof(uint32_t));
|
||||
}
|
||||
//fill the rest with default value
|
||||
memset(tmp + size, Segment::DefaultValue, (newSize - size) * sizeof(uint32_t));
|
||||
|
||||
//free older segment;
|
||||
::operator delete(data);
|
||||
|
||||
data = tmp;
|
||||
size = newSize;
|
||||
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("growBy - after reallocation\n");
|
||||
this->print();
|
||||
#endif
|
||||
|
||||
}
|
||||
//else { no shrinking yet; }
|
||||
return;
|
||||
}
|
||||
|
||||
void Segment::ensure(uint16_t newSize)
|
||||
{
|
||||
if (newSize < size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
growByMin(newSize);
|
||||
}
|
||||
|
||||
void Segment::setLength(uint32_t newLength)
|
||||
{
|
||||
if (newLength > size)
|
||||
{
|
||||
ensure(length);
|
||||
}
|
||||
length = newLength;
|
||||
return;
|
||||
}
|
||||
|
||||
void Segment::push(uint32_t value)
|
||||
{
|
||||
this->set(length, value);
|
||||
}
|
||||
|
||||
uint32_t Segment::pop()
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::pop\n");
|
||||
this->print();
|
||||
#endif
|
||||
|
||||
if (length > 0)
|
||||
{
|
||||
uint32_t value = data[length];
|
||||
data[length] = Segment::DefaultValue;
|
||||
--length;
|
||||
return value;
|
||||
}
|
||||
return Segment::DefaultValue;
|
||||
}
|
||||
|
||||
//this function removes an element at index i and shifts the rest of the elements to
|
||||
//left to fill the gap
|
||||
uint32_t Segment::remove(uint32_t i)
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::remove index:%u\n", i);
|
||||
this->print();
|
||||
#endif
|
||||
if (i < length)
|
||||
{
|
||||
//value to return
|
||||
uint32_t ret = data[i];
|
||||
if (i + 1 < length)
|
||||
{
|
||||
//Move the rest of the elements to fill in the gap.
|
||||
memmove(data + i, data + i + 1, (length - i - 1) * sizeof(uint32_t));
|
||||
}
|
||||
length--;
|
||||
data[length] = Segment::DefaultValue;
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("After Segment::remove index:%u\n", i);
|
||||
this->print();
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
return Segment::DefaultValue;
|
||||
}
|
||||
|
||||
//this function inserts element value at index i by shifting the rest of the elements right.
|
||||
void Segment::insert(uint32_t i, uint32_t value)
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::insert index:%u value:%u\n", i, value);
|
||||
this->print();
|
||||
#endif
|
||||
|
||||
if (i < length)
|
||||
{
|
||||
ensure(length + 1);
|
||||
if (i + 1 < length)
|
||||
{
|
||||
//Move the rest of the elements to fill in the gap.
|
||||
memmove(data + i + 1, data + i, (length - i) * sizeof(uint32_t));
|
||||
}
|
||||
|
||||
data[i] = value;
|
||||
length++;
|
||||
}
|
||||
else
|
||||
{
|
||||
//This is insert beyond the length, just call set which will adjust the length
|
||||
set(i, value);
|
||||
}
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("After Segment::insert index:%u\n", i);
|
||||
this->print();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Segment::print()
|
||||
{
|
||||
printf("Segment: %x, length: %u, size: %u\n", data, (uint32_t)length, (uint32_t)size);
|
||||
for(uint32_t i = 0; i < size; i++)
|
||||
{
|
||||
printf("%d ",(uint32_t)data[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
bool Segment::isValidIndex(uint32_t i)
|
||||
{
|
||||
if (i > length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Segment::destroy()
|
||||
{
|
||||
#ifdef DEBUG_BUILD
|
||||
printf("In Segment::destroy\n");
|
||||
this->print();
|
||||
#endif
|
||||
length = size = 0;
|
||||
::operator delete(data);
|
||||
data = nullptr;
|
||||
}
|
||||
|
||||
void RefCollection::push(uint32_t x)
|
||||
{
|
||||
if (isRef()) incr(x);
|
||||
head.push(x);
|
||||
}
|
||||
|
||||
uint32_t RefCollection::pop()
|
||||
{
|
||||
uint32_t ret = head.pop();
|
||||
if (isRef())
|
||||
{
|
||||
incr(ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint32_t RefCollection::getAt(int i)
|
||||
{
|
||||
uint32_t tmp = head.get(i);
|
||||
if (isRef())
|
||||
{
|
||||
incr(tmp);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
uint32_t RefCollection::removeAt(int i)
|
||||
{
|
||||
if (isRef())
|
||||
{
|
||||
decr(head.get(i));
|
||||
}
|
||||
return head.remove(i);
|
||||
}
|
||||
|
||||
void RefCollection::insertAt(int i, uint32_t value)
|
||||
{
|
||||
head.insert(i, value);
|
||||
if (isRef())
|
||||
{
|
||||
incr(value);
|
||||
}
|
||||
}
|
||||
|
||||
void RefCollection::setAt(int i, uint32_t value)
|
||||
{
|
||||
if (isRef())
|
||||
{
|
||||
if (head.isValidIndex((uint32_t)i))
|
||||
{
|
||||
decr(head.get(i));
|
||||
}
|
||||
incr(value);
|
||||
}
|
||||
head.set(i, value);
|
||||
}
|
||||
|
||||
int RefCollection::indexOf(uint32_t x, int start)
|
||||
{
|
||||
if (isString())
|
||||
{
|
||||
StringData *xx = (StringData*)x;
|
||||
uint32_t i = start;
|
||||
while(head.isValidIndex(i))
|
||||
{
|
||||
StringData *ee = (StringData*)head.get(i);
|
||||
if (ee == xx)
|
||||
{
|
||||
//handles ee being null
|
||||
return (int) i;
|
||||
}
|
||||
if (ee && xx->len == ee->len && memcmp(xx->data, ee->data, xx->len) == 0)
|
||||
{
|
||||
return (int)i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t i = start;
|
||||
while(head.isValidIndex(i))
|
||||
{
|
||||
if (head.get(i) == x)
|
||||
{
|
||||
return (int)i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int RefCollection::removeElement(uint32_t x) {
|
||||
int RefCollection::removeElement(uint32_t x)
|
||||
{
|
||||
int idx = indexOf(x, 0);
|
||||
if (idx >= 0) {
|
||||
removeAt(idx);
|
||||
@ -237,16 +503,20 @@ namespace pxt {
|
||||
void RefCollection::destroy()
|
||||
{
|
||||
if (this->isRef())
|
||||
for (uint32_t i = 0; i < this->data.size(); ++i) {
|
||||
decr(this->data[i]);
|
||||
this->data[i] = 0;
|
||||
{
|
||||
for(uint32_t i = 0; i < this->head.getLength(); i++)
|
||||
{
|
||||
decr(this->head.get(i));
|
||||
}
|
||||
this->data.resize(0);
|
||||
}
|
||||
this->head.destroy();
|
||||
delete this;
|
||||
}
|
||||
|
||||
void RefCollection::print()
|
||||
{
|
||||
printf("RefCollection %p r=%d flags=%d size=%d [%p, ...]\n", this, refcnt, getFlags(), data.size(), data.size() > 0 ? data[0] : 0);
|
||||
printf("RefCollection %p r=%d flags=%d size=%d\n", this, refcnt, getFlags(), head.getLength());
|
||||
head.print();
|
||||
}
|
||||
|
||||
PXT_VTABLE_CTOR(RefAction) {}
|
||||
@ -258,6 +528,9 @@ namespace pxt {
|
||||
decr(fields[i]);
|
||||
fields[i] = 0;
|
||||
}
|
||||
//RefAction is allocated using placement new
|
||||
this->~RefAction();
|
||||
::operator delete(this);
|
||||
}
|
||||
|
||||
void RefAction::print()
|
||||
@ -272,6 +545,7 @@ namespace pxt {
|
||||
|
||||
void RefLocal::destroy()
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
|
||||
PXT_VTABLE_CTOR(RefLocal) {
|
||||
@ -290,6 +564,7 @@ namespace pxt {
|
||||
void RefRefLocal::destroy()
|
||||
{
|
||||
decr(v);
|
||||
delete this;
|
||||
}
|
||||
|
||||
PXT_VTABLE_BEGIN(RefMap, 0, RefMapMarker)
|
||||
@ -304,6 +579,7 @@ namespace pxt {
|
||||
data[i].val = 0;
|
||||
}
|
||||
data.resize(0);
|
||||
delete this;
|
||||
}
|
||||
|
||||
int RefMap::findIdx(uint32_t key) {
|
||||
@ -328,7 +604,7 @@ namespace pxt {
|
||||
for(std::set<RefObject*>::iterator itr = allptrs.begin();itr!=allptrs.end();itr++)
|
||||
{
|
||||
(*itr)->print();
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
#else
|
||||
@ -341,16 +617,16 @@ namespace pxt {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
map<pair<int, int>, Action> handlersMap;
|
||||
|
||||
|
||||
MicroBitEvent lastEvent;
|
||||
|
||||
// We have the invariant that if [dispatchEvent] is registered against the DAL
|
||||
// for a given event, then [handlersMap] contains a valid entry for that
|
||||
// event.
|
||||
void dispatchEvent(MicroBitEvent e) {
|
||||
|
||||
|
||||
lastEvent = e;
|
||||
|
||||
|
||||
Action curr = handlersMap[{ e.source, e.value }];
|
||||
if (curr)
|
||||
runAction1(curr, e.value);
|
||||
@ -383,7 +659,7 @@ namespace pxt {
|
||||
create_fiber((void(*)(void*))runAction0, (void*)a, fiberDone);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void error(ERROR code, int subcode)
|
||||
{
|
||||
@ -435,10 +711,10 @@ namespace pxt {
|
||||
|
||||
// unique group for radio based on source hash
|
||||
// ::touch_develop::micro_bit::radioDefaultGroup = programHash();
|
||||
|
||||
|
||||
// repeat error 4 times and restart as needed
|
||||
microbit_panic_timeout(4);
|
||||
|
||||
|
||||
int32_t ver = *pc++;
|
||||
checkStr(ver == 0x4209, ":( Bad runtime version");
|
||||
|
||||
@ -467,6 +743,6 @@ namespace pxt {
|
||||
{
|
||||
exec_binary((int32_t*)functionsAndBytecode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=2 sw=2 expandtab
|
||||
// vim: ts=2 sw=2 expandtab
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PXT_H
|
||||
#define __PXT_H
|
||||
|
||||
// #define DEBUG_MEMLEAKS 1
|
||||
//#define DEBUG_MEMLEAKS 1
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
|
||||
@ -63,7 +63,7 @@ namespace pxt {
|
||||
int templateHash();
|
||||
int programHash();
|
||||
uint32_t programSize();
|
||||
uint32_t afterProgramPage();
|
||||
uint32_t afterProgramPage();
|
||||
int getNumGlobals();
|
||||
RefRecord* mkClassInstance(int vtableOffset);
|
||||
|
||||
@ -167,11 +167,49 @@ namespace pxt {
|
||||
}
|
||||
};
|
||||
|
||||
class Segment {
|
||||
private:
|
||||
uint32_t* data;
|
||||
uint16_t length;
|
||||
uint16_t size;
|
||||
|
||||
static const uint16_t MaxSize = 0xFFFF;
|
||||
static const uint32_t DefaultValue = 0x0;
|
||||
|
||||
static uint16_t growthFactor(uint16_t size);
|
||||
void growByMin(uint16_t minSize);
|
||||
void growBy(uint16_t newSize);
|
||||
void ensure(uint16_t newSize);
|
||||
|
||||
public:
|
||||
Segment() : data (nullptr), length(0), size(0) {};
|
||||
|
||||
uint32_t get(uint32_t i);
|
||||
void set(uint32_t i, uint32_t value);
|
||||
|
||||
uint32_t getLength() { return length;};
|
||||
void setLength(uint32_t newLength);
|
||||
|
||||
void push(uint32_t value);
|
||||
uint32_t pop();
|
||||
|
||||
uint32_t remove(uint32_t i);
|
||||
void insert(uint32_t i, uint32_t value);
|
||||
|
||||
bool isValidIndex(uint32_t i);
|
||||
|
||||
void destroy();
|
||||
|
||||
void print();
|
||||
};
|
||||
|
||||
// A ref-counted collection of either primitive or ref-counted objects (String, Image,
|
||||
// user-defined record, another collection)
|
||||
class RefCollection
|
||||
: public RefObject
|
||||
{
|
||||
private:
|
||||
Segment head;
|
||||
public:
|
||||
// 1 - collection of refs (need decr)
|
||||
// 2 - collection of strings (in fact we always have 3, never 2 alone)
|
||||
@ -179,23 +217,23 @@ namespace pxt {
|
||||
inline bool isRef() { return getFlags() & 1; }
|
||||
inline bool isString() { return getFlags() & 2; }
|
||||
|
||||
std::vector<uint32_t> data;
|
||||
|
||||
RefCollection(uint16_t f);
|
||||
|
||||
inline bool in_range(int x) {
|
||||
return (0 <= x && x < (int)data.size());
|
||||
}
|
||||
|
||||
inline int length() { return data.size(); }
|
||||
|
||||
void destroy();
|
||||
void print();
|
||||
|
||||
uint32_t length() { return head.getLength();}
|
||||
void setLength(uint32_t newLength) { head.setLength(newLength); }
|
||||
|
||||
void push(uint32_t x);
|
||||
uint32_t getAt(int x);
|
||||
void removeAt(int x);
|
||||
void setAt(int x, uint32_t y);
|
||||
uint32_t pop();
|
||||
uint32_t getAt(int i);
|
||||
void setAt(int i, uint32_t x);
|
||||
//removes the element at index i and shifts the other elements left
|
||||
uint32_t removeAt(int i);
|
||||
//inserts the element at index i and moves the other elements right.
|
||||
void insertAt(int i, uint32_t x);
|
||||
|
||||
int indexOf(uint32_t x, int start);
|
||||
int removeElement(uint32_t x);
|
||||
};
|
||||
|
@ -43,8 +43,7 @@
|
||||
"public": true,
|
||||
"dependencies": {},
|
||||
"yotta": {
|
||||
"configIsJustDefaults": true,
|
||||
"config": {
|
||||
"optionalConfig": {
|
||||
"microbit-dal": {
|
||||
"bluetooth": {
|
||||
"enabled": 0
|
||||
|
@ -1,20 +1,19 @@
|
||||
#include "pxt.h"
|
||||
|
||||
enum SerialPin {
|
||||
P0 = MICROBIT_ID_IO_P0,
|
||||
P1 = MICROBIT_ID_IO_P1,
|
||||
P2 = MICROBIT_ID_IO_P2,
|
||||
//P8 = MICROBIT_ID_IO_P8,
|
||||
//P12 = MICROBIT_ID_IO_P12,
|
||||
//P13 = MICROBIT_ID_IO_P13,
|
||||
//P14 = MICROBIT_ID_IO_P14,
|
||||
//P15 = MICROBIT_ID_IO_P15,
|
||||
//P16 = MICROBIT_ID_IO_P16
|
||||
C16 = MICROBIT_ID_IO_P2,
|
||||
C17 = MICROBIT_ID_IO_P8,
|
||||
P0 = MICROBIT_ID_IO_P12,
|
||||
P1 = MICROBIT_ID_IO_P0,
|
||||
P2 = MICROBIT_ID_IO_P1,
|
||||
P3 = MICROBIT_ID_IO_P16,
|
||||
};
|
||||
|
||||
enum BaudRate {
|
||||
//% block=115200
|
||||
BaudRate115200 = 115200,
|
||||
//% block=57600
|
||||
BaudRate56700 = 57600,
|
||||
//% block=9600
|
||||
BaudRate9600 = 9600
|
||||
};
|
||||
@ -51,24 +50,27 @@ namespace serial {
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a line of text from the serial port.
|
||||
*/
|
||||
//% help=serial/read-line
|
||||
//% blockId=serial_read_line block="serial|read line"
|
||||
//% weight=20 blockGap=8
|
||||
StringData* readLine() {
|
||||
return readUntil(ManagedString("\n").leakData());
|
||||
* Reads the buffered received data as a string
|
||||
*/
|
||||
//% blockId=serial_read_buffer block="serial|read string"
|
||||
//% weight=18
|
||||
StringData* readString() {
|
||||
int n = uBit.serial.getRxBufferSize();
|
||||
if (n == 0) return ManagedString("").leakData();
|
||||
return ManagedString(uBit.serial.read(n, MicroBitSerialMode::ASYNC)).leakData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an event to be fired when one of the delimiter is matched
|
||||
* @param delimiters the characters to match received characters against. eg:"\n"
|
||||
* Registers an event to be fired when one of the delimiter is matched.
|
||||
* @param delimiters the characters to match received characters against.
|
||||
*/
|
||||
// help=serial/on-data-received
|
||||
// weight=18
|
||||
//% help=serial/on-data-received
|
||||
//% weight=18 blockId=serial_on_data_received block="serial|on data received %delimiters=serial_delimiter_conv"
|
||||
void onDataReceived(StringData* delimiters, Action body) {
|
||||
uBit.serial.eventOn(ManagedString(delimiters));
|
||||
registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
|
||||
// lazy initialization of serial buffers
|
||||
uBit.serial.read(MicroBitSerialMode::ASYNC);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,16 +85,19 @@ namespace serial {
|
||||
|
||||
/**
|
||||
* Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
|
||||
* @param tx the new transmission pins
|
||||
* @param rx the new reception pin
|
||||
* @param baud the new baud rate. eg: 115200
|
||||
* @param tx the new transmission pins, eg: SerialPin.P0
|
||||
* @param rx the new reception pin, eg: SerialPin.P1
|
||||
* @param rate the new baud rate. eg: 115200
|
||||
*/
|
||||
//% weight=10
|
||||
//% help=serial/redirect-to
|
||||
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
||||
//% blockExternalInputs=1
|
||||
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
||||
uBit.serial.redirect((PinName)tx, (PinName)rx);
|
||||
MicroBitPin* txp = getPin(tx); if (!tx) return;
|
||||
MicroBitPin* rxp = getPin(rx); if (!rx) return;
|
||||
|
||||
uBit.serial.redirect(txp->name, rxp->name);
|
||||
uBit.serial.baud((int)rate);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Reading and writing data over a serial connection.
|
||||
*/
|
||||
//% weight=2 color=#002050
|
||||
//% weight=2 color=#002050 icon="\uf287"
|
||||
//% advanced=true
|
||||
namespace serial {
|
||||
/**
|
||||
@ -38,20 +38,20 @@ namespace serial {
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an event to be fired when a line has been received
|
||||
*/
|
||||
// help=serial/on-line-received
|
||||
// blockId=serial_on_line_received block="serial on line received"
|
||||
// weight=21 blockGap=8
|
||||
export function onLineReceived(body: Action): void {
|
||||
// serial.onDataReceived("\n", body);
|
||||
* Reads a line of text from the serial port.
|
||||
*/
|
||||
//% help=serial/read-line
|
||||
//% blockId=serial_read_line block="serial|read line"
|
||||
//% weight=20 blockGap=8
|
||||
export function readLine(): string {
|
||||
return serial.readUntil(delimiters(Delimiters.NewLine));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the delimiter corresponding string
|
||||
*/
|
||||
//% blockId="serial_delimiter_conv" block="%del"
|
||||
//% weight=1
|
||||
//% weight=1 blockHidden=true
|
||||
export function delimiters(del: Delimiters): string {
|
||||
// even though it might not look like, this is more
|
||||
// (memory) efficient than the C++ implementation, because the
|
||||
|
115
libs/core/shims.d.ts
vendored
@ -4,7 +4,7 @@
|
||||
/**
|
||||
* Creation, manipulation and display of LED images.
|
||||
*/
|
||||
//% color=#5C2D91 weight=31
|
||||
//% color=#5C2D91 weight=31 icon="\uf03e"
|
||||
//% advanced=true
|
||||
declare namespace images {
|
||||
|
||||
@ -40,8 +40,8 @@ declare interface Image {
|
||||
*/
|
||||
//% help=images/show-image weight=80 blockNamespace=images
|
||||
//% blockId=device_show_image_offset block="show image %sprite|at offset %offset" blockGap=8
|
||||
//% parts="ledmatrix" shim=ImageMethods::showImage
|
||||
showImage(xOffset: number): void;
|
||||
//% parts="ledmatrix" async interval.defl=400 shim=ImageMethods::showImage
|
||||
showImage(xOffset: number, interval?: number): void;
|
||||
|
||||
/**
|
||||
* Draws the ``index``-th frame of the image on the screen.
|
||||
@ -118,21 +118,21 @@ declare interface Image {
|
||||
* @param frame TODO
|
||||
*/
|
||||
//% weight=70 help=images/show-frame
|
||||
//% parts="ledmatrix" shim=ImageMethods::showFrame
|
||||
showFrame(frame: number): void;
|
||||
//% parts="ledmatrix" interval.defl=400 shim=ImageMethods::showFrame
|
||||
showFrame(frame: number, interval?: number): void;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Provides access to basic micro:bit functionality.
|
||||
*/
|
||||
//% color=#54C9C9 weight=100
|
||||
//% color=#54C9C9 weight=100 icon="\uf00a"
|
||||
declare namespace basic {
|
||||
|
||||
/**
|
||||
* Sets the color on the build-in LED. Set to 0 to turn off.
|
||||
*/
|
||||
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
|
||||
//% blockId=device_set_led_color block="set led to %color=color_id"
|
||||
//% weight=50 shim=basic::setLedColor
|
||||
function setLedColor(color: number): void;
|
||||
|
||||
@ -142,7 +142,7 @@ declare namespace basic {
|
||||
*/
|
||||
//% help=basic/show-number
|
||||
//% weight=96
|
||||
//% blockId=device_show_number block="show|number %number" blockGap=8 icon="\uf1ec"
|
||||
//% blockId=device_show_number block="show|number %number" blockGap=8
|
||||
//% async
|
||||
//% parts="ledmatrix" interval.defl=150 shim=basic::showNumber
|
||||
function showNumber(value: number, interval?: number): void;
|
||||
@ -156,7 +156,7 @@ declare namespace basic {
|
||||
//% weight=95 blockGap=8
|
||||
//% imageLiteral=1 async
|
||||
//% blockId=device_show_leds
|
||||
//% block="show leds" icon="\uf00a"
|
||||
//% block="show leds"
|
||||
//% parts="ledmatrix" interval.defl=400 shim=basic::showLeds
|
||||
function showLeds(leds: string, interval?: number): void;
|
||||
|
||||
@ -167,7 +167,7 @@ declare namespace basic {
|
||||
*/
|
||||
//% help=basic/show-string
|
||||
//% weight=87 blockGap=8
|
||||
//% block="show|string %text" icon="\uf031"
|
||||
//% block="show|string %text"
|
||||
//% async
|
||||
//% blockId=device_print_message
|
||||
//% parts="ledmatrix" interval.defl=150 shim=basic::showString
|
||||
@ -177,7 +177,7 @@ declare namespace basic {
|
||||
* Turn off all LEDs
|
||||
*/
|
||||
//% help=basic/clear-screen weight=79
|
||||
//% blockId=device_clear_display block="clear screen" icon="\uf12d"
|
||||
//% blockId=device_clear_display block="clear screen"
|
||||
//% parts="ledmatrix" shim=basic::clearScreen
|
||||
function clearScreen(): void;
|
||||
|
||||
@ -203,7 +203,7 @@ declare namespace basic {
|
||||
* @param body code to execute
|
||||
*/
|
||||
//% help=basic/forever weight=55 blockGap=8
|
||||
//% blockId=device_forever block="forever" icon="\uf01e" shim=basic::forever
|
||||
//% blockId=device_forever block="forever" shim=basic::forever
|
||||
function forever(a: () => void): void;
|
||||
|
||||
/**
|
||||
@ -212,13 +212,13 @@ declare namespace basic {
|
||||
*/
|
||||
//% help=basic/pause weight=54
|
||||
//% async block="pause (ms) %pause"
|
||||
//% blockId=device_pause icon="\uf110" shim=basic::pause
|
||||
//% blockId=device_pause shim=basic::pause
|
||||
function pause(ms: number): void;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//% color=#C90072 weight=99
|
||||
//% color=#C90072 weight=99 icon="\uf192"
|
||||
declare namespace input {
|
||||
|
||||
/**
|
||||
@ -227,7 +227,7 @@ declare namespace input {
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-button-pressed weight=85 blockGap=8
|
||||
//% blockId=device_button_event block="on button|%NAME|pressed" icon="\uf192"
|
||||
//% blockId=device_button_event block="on button|%NAME|pressed"
|
||||
//% parts="buttonpair" shim=input::onButtonPressed
|
||||
function onButtonPressed(button: Button, body: () => void): void;
|
||||
|
||||
@ -236,7 +236,7 @@ declare namespace input {
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-gesture weight=84 blockGap=8
|
||||
//% blockId=device_gesture_event block="on |%NAME" icon="\uf135"
|
||||
//% blockId=device_gesture_event block="on |%NAME"
|
||||
//% parts="accelerometer" shim=input::onGesture
|
||||
function onGesture(gesture: Gesture, body: () => void): void;
|
||||
|
||||
@ -246,7 +246,7 @@ declare namespace input {
|
||||
* @param body the code to run when the pin is pressed
|
||||
*/
|
||||
//% help=input/on-pin-pressed weight=83
|
||||
//% blockId=device_pin_event block="on pin %NAME|pressed" icon="\uf094" shim=input::onPinPressed
|
||||
//% blockId=device_pin_event block="on pin %NAME|pressed" shim=input::onPinPressed
|
||||
function onPinPressed(name: TouchPin, body: () => void): void;
|
||||
|
||||
/**
|
||||
@ -255,7 +255,7 @@ declare namespace input {
|
||||
* @param body the code to run when the pin is released
|
||||
*/
|
||||
//% help=input/on-pin-released weight=6 blockGap=8
|
||||
//% blockId=device_pin_released block="on pin %NAME|released" icon="\uf094"
|
||||
//% blockId=device_pin_released block="on pin %NAME|released"
|
||||
//% advanced=true shim=input::onPinReleased
|
||||
function onPinReleased(name: TouchPin, body: () => void): void;
|
||||
|
||||
@ -265,7 +265,7 @@ declare namespace input {
|
||||
//% help=input/button-is-pressed weight=60
|
||||
//% block="button|%NAME|is pressed"
|
||||
//% blockId=device_get_button2
|
||||
//% icon="\uf192" blockGap=8
|
||||
//% blockGap=8
|
||||
//% parts="buttonpair" shim=input::buttonIsPressed
|
||||
function buttonIsPressed(button: Button): boolean;
|
||||
|
||||
@ -274,7 +274,7 @@ declare namespace input {
|
||||
* @param name pin used to detect the touch
|
||||
*/
|
||||
//% help=input/pin-is-pressed weight=58
|
||||
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed" icon="\uf094"
|
||||
//% blockId="device_pin_is_pressed" block="pin %NAME|is pressed"
|
||||
//% blockGap=8 shim=input::pinIsPressed
|
||||
function pinIsPressed(name: TouchPin): boolean;
|
||||
|
||||
@ -282,7 +282,7 @@ declare namespace input {
|
||||
* Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)
|
||||
* @param dimension TODO
|
||||
*/
|
||||
//% help=input/acceleration weight=58 icon="\uf135"
|
||||
//% help=input/acceleration weight=58
|
||||
//% blockId=device_acceleration block="acceleration (mg)|%NAME" blockGap=8
|
||||
//% parts="accelerometer" shim=input::acceleration
|
||||
function acceleration(dimension: Dimension): number;
|
||||
@ -291,7 +291,7 @@ declare namespace input {
|
||||
* Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.
|
||||
*/
|
||||
//% help=input/light-level weight=57
|
||||
//% blockId=device_get_light_level block="light level" blockGap=8 icon="\uf185"
|
||||
//% blockId=device_get_light_level block="light level" blockGap=8
|
||||
//% parts="ledmatrix" shim=input::lightLevel
|
||||
function lightLevel(): number;
|
||||
|
||||
@ -299,7 +299,7 @@ declare namespace input {
|
||||
* Get the current compass heading in degrees.
|
||||
*/
|
||||
//% help=input/compass-heading
|
||||
//% weight=56 icon="\uf14e"
|
||||
//% weight=56
|
||||
//% blockId=device_heading block="compass heading (°)" blockGap=8
|
||||
//% parts="compass" shim=input::compassHeading
|
||||
function compassHeading(): number;
|
||||
@ -307,7 +307,7 @@ declare namespace input {
|
||||
/**
|
||||
* Gets the temperature in Celsius degrees (°C).
|
||||
*/
|
||||
//% weight=55 icon="\uf06d"
|
||||
//% weight=55
|
||||
//% help=input/temperature
|
||||
//% blockId=device_temperature block="temperature (°C)" blockGap=8
|
||||
//% parts="thermometer" shim=input::temperature
|
||||
@ -318,7 +318,7 @@ declare namespace input {
|
||||
* @param kind TODO
|
||||
*/
|
||||
//% help=input/rotation weight=52
|
||||
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8 icon="\uf197"
|
||||
//% blockId=device_get_rotation block="rotation (°)|%NAME" blockGap=8
|
||||
//% parts="accelerometer" advanced=true shim=input::rotation
|
||||
function rotation(kind: Rotation): number;
|
||||
|
||||
@ -327,7 +327,7 @@ declare namespace input {
|
||||
* @param dimension TODO
|
||||
*/
|
||||
//% help=input/magnetic-force weight=51
|
||||
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8 icon="\uf076"
|
||||
//% blockId=device_get_magnetic_force block="magnetic force (µT)|%NAME" blockGap=8
|
||||
//% parts="compass"
|
||||
//% advanced=true shim=input::magneticForce
|
||||
function magneticForce(dimension: Dimension): number;
|
||||
@ -336,7 +336,7 @@ declare namespace input {
|
||||
* Gets the number of milliseconds elapsed since power on.
|
||||
*/
|
||||
//% help=input/running-time weight=50
|
||||
//% blockId=device_get_running_time block="running time (ms)" icon="\uf017"
|
||||
//% blockId=device_get_running_time block="running time (ms)"
|
||||
//% advanced=true shim=input::runningTime
|
||||
function runningTime(): number;
|
||||
|
||||
@ -351,7 +351,7 @@ declare namespace input {
|
||||
* @param range a value describe the maximum strengh of acceleration measured
|
||||
*/
|
||||
//% help=input/set-accelerometer-range
|
||||
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range" icon="\uf135"
|
||||
//% blockId=device_set_accelerometer_range block="set accelerometer|range %range"
|
||||
//% weight=5
|
||||
//% parts="accelerometer"
|
||||
//% advanced=true shim=input::setAccelerometerRange
|
||||
@ -432,7 +432,7 @@ declare namespace control {
|
||||
|
||||
|
||||
|
||||
//% color=#8169E6 weight=35
|
||||
//% color=#8169E6 weight=35 icon="\uf205"
|
||||
declare namespace led {
|
||||
|
||||
/**
|
||||
@ -441,7 +441,7 @@ declare namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/plot weight=78
|
||||
//% blockId=device_plot block="plot|x %x|y %y" icon="\uf205" blockGap=8
|
||||
//% blockId=device_plot block="plot|x %x|y %y" blockGap=8
|
||||
//% parts="ledmatrix" shim=led::plot
|
||||
function plot(x: number, y: number): void;
|
||||
|
||||
@ -451,7 +451,7 @@ declare namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/unplot weight=77
|
||||
//% blockId=device_unplot block="unplot|x %x|y %y" icon="\uf204" blockGap=8
|
||||
//% blockId=device_unplot block="unplot|x %x|y %y" blockGap=8
|
||||
//% parts="ledmatrix" shim=led::unplot
|
||||
function unplot(x: number, y: number): void;
|
||||
|
||||
@ -461,7 +461,7 @@ declare namespace led {
|
||||
* @param y TODO
|
||||
*/
|
||||
//% help=led/point weight=76
|
||||
//% blockId=device_point block="point|x %x|y %y" icon="\uf10c"
|
||||
//% blockId=device_point block="point|x %x|y %y"
|
||||
//% parts="ledmatrix" shim=led::point
|
||||
function point(x: number, y: number): boolean;
|
||||
|
||||
@ -469,7 +469,7 @@ declare namespace led {
|
||||
* Get the screen brightness from 0 (off) to 255 (full bright).
|
||||
*/
|
||||
//% help=led/brightness weight=60
|
||||
//% blockId=device_get_brightness block="brightness" icon="\uf042" blockGap=8
|
||||
//% blockId=device_get_brightness block="brightness" blockGap=8
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true shim=led::brightness
|
||||
function brightness(): number;
|
||||
@ -479,7 +479,7 @@ declare namespace led {
|
||||
* @param value the brightness value, eg:255, 127, 0
|
||||
*/
|
||||
//% help=led/set-brightness weight=59
|
||||
//% blockId=device_set_brightness block="set brightness %value" icon="\uf042"
|
||||
//% blockId=device_set_brightness block="set brightness %value"
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true shim=led::setBrightness
|
||||
function setBrightness(value: number): void;
|
||||
@ -488,7 +488,7 @@ declare namespace led {
|
||||
* Cancels the current animation and clears other pending animations.
|
||||
*/
|
||||
//% weight=50 help=led/stop-animation
|
||||
//% blockId=device_stop_animation block="stop animation" icon="\uf04d"
|
||||
//% blockId=device_stop_animation block="stop animation"
|
||||
//% parts="ledmatrix"
|
||||
//% advanced=true shim=led::stopAnimation
|
||||
function stopAnimation(): void;
|
||||
@ -504,7 +504,7 @@ declare namespace led {
|
||||
/**
|
||||
* Turns on or off the display
|
||||
*/
|
||||
//% help=led/enable blockId=device_led_enable icon="\uf04d"
|
||||
//% help=led/enable blockId=device_led_enable
|
||||
//% advanced=true parts="ledmatrix" shim=led::enable
|
||||
function enable(on: boolean): void;
|
||||
|
||||
@ -520,7 +520,7 @@ declare namespace led {
|
||||
/**
|
||||
* Blocks to control the onboard motors
|
||||
*/
|
||||
//% color=#008272 weight=30
|
||||
//% color=#008272 weight=30 icon="\uf1b9"
|
||||
declare namespace motors {
|
||||
|
||||
/**
|
||||
@ -555,7 +555,7 @@ declare namespace music {
|
||||
//% help=music/play-tone weight=90
|
||||
//% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
|
||||
//% parts="speaker" async shim=music::playTone
|
||||
function playTone(freqency: number, ms: number): void;
|
||||
function playTone(frequency: number, ms: number): void;
|
||||
}
|
||||
declare namespace pins {
|
||||
|
||||
@ -651,7 +651,8 @@ declare namespace pins {
|
||||
* Sets the pin used when using `pins->analog pitch`.
|
||||
* @param name TODO
|
||||
*/
|
||||
//% help=pins/analog-set-pitch weight=12 shim=pins::analogSetPitchPin
|
||||
//% blockId=device_analog_set_pitch_pin block="analog set pitch pin %name"
|
||||
//% help=pins/analog-set-pitch weight=3 advanced=true shim=pins::analogSetPitchPin
|
||||
function analogSetPitchPin(name: AnalogPin): void;
|
||||
|
||||
/**
|
||||
@ -659,7 +660,8 @@ declare namespace pins {
|
||||
* @param frequency TODO
|
||||
* @param ms TODO
|
||||
*/
|
||||
//% help=pins/analog-pitch weight=14 async shim=pins::analogPitch
|
||||
//% blockId=device_analog_pitch block="analog pitch %frequency|for (ms) %ms"
|
||||
//% help=pins/analog-pitch weight=4 async advanced=true blockGap=8 shim=pins::analogPitch
|
||||
function analogPitch(frequency: number, ms: number): void;
|
||||
|
||||
/**
|
||||
@ -671,6 +673,16 @@ declare namespace pins {
|
||||
//% blockId=device_set_pull block="set pull|pin %pin|to %pull" shim=pins::setPull
|
||||
function setPull(name: DigitalPin, pull: PinPullMode): void;
|
||||
|
||||
/**
|
||||
* Configures the events emitted by this pin. Events can be subscribed to
|
||||
* using ``control.onEvent()``.
|
||||
* @param name pin to set the event mode on, eg: DigitalPin.P0
|
||||
* @param type the type of events for this pin to emit, eg: PinEventType.Edge
|
||||
*/
|
||||
//% help=pins/set-events weight=4 advanced=true
|
||||
//% blockId=device_set_pin_events block="set pin %pin|to emit %type|events" shim=pins::setEvents
|
||||
function setEvents(name: DigitalPin, type: PinEventType): void;
|
||||
|
||||
/**
|
||||
* Create a new zero-initialized buffer.
|
||||
* @param size number of bytes in the buffer
|
||||
@ -715,12 +727,19 @@ declare namespace serial {
|
||||
function readUntil(delimiter: string): string;
|
||||
|
||||
/**
|
||||
* Reads a line of text from the serial port.
|
||||
* Reads the buffered received data as a string
|
||||
*/
|
||||
//% help=serial/read-line
|
||||
//% blockId=serial_read_line block="serial|read line"
|
||||
//% weight=20 blockGap=8 shim=serial::readLine
|
||||
function readLine(): string;
|
||||
//% blockId=serial_read_buffer block="serial|read string"
|
||||
//% weight=18 shim=serial::readString
|
||||
function readString(): string;
|
||||
|
||||
/**
|
||||
* Registers an event to be fired when one of the delimiter is matched.
|
||||
* @param delimiters the characters to match received characters against.
|
||||
*/
|
||||
//% help=serial/on-data-received
|
||||
//% weight=18 blockId=serial_on_data_received block="serial|on data received %delimiters=serial_delimiter_conv" shim=serial::onDataReceived
|
||||
function onDataReceived(delimiters: string, body: () => void): void;
|
||||
|
||||
/**
|
||||
* Sends a piece of text through Serial connection.
|
||||
@ -732,9 +751,9 @@ declare namespace serial {
|
||||
|
||||
/**
|
||||
* Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
|
||||
* @param tx the new transmission pins
|
||||
* @param rx the new reception pin
|
||||
* @param baud the new baud rate. eg: 115200
|
||||
* @param tx the new transmission pins, eg: SerialPin.P0
|
||||
* @param rx the new reception pin, eg: SerialPin.P1
|
||||
* @param rate the new baud rate. eg: 115200
|
||||
*/
|
||||
//% weight=10
|
||||
//% help=serial/redirect-to
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Communicate data using radio packets
|
||||
*/
|
||||
//% color=#E3008C weight=34
|
||||
//% color=#E3008C weight=34 icon="\uf012"
|
||||
namespace radio {
|
||||
export class Packet {
|
||||
/**
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "pxt-calliope",
|
||||
"version": "0.5.93",
|
||||
"description": "calliope target for PXT",
|
||||
"version": "1.0.5",
|
||||
"description": "Calliope Mini editor for PXT",
|
||||
"keywords": [
|
||||
"JavaScript",
|
||||
"education",
|
||||
@ -34,6 +34,9 @@
|
||||
"semantic-ui-less": "^2.2.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"pxt-core": "0.5.85"
|
||||
"pxt-core": "0.11.55"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node node_modules/pxt-core/built/pxt.js travis"
|
||||
}
|
||||
}
|
||||
|
102
pxtarget.json
@ -2,8 +2,8 @@
|
||||
"id": "calliope",
|
||||
"name": " calliope",
|
||||
"nickname": "mini",
|
||||
"title": "calliope - Blocks / Javascript editor",
|
||||
"description": "A Blocks / JavaScript code editor for the calliope.",
|
||||
"title": "calliope mini - Blocks / Javascript editor",
|
||||
"description": "A Blocks / JavaScript code editor for the calliope mini.",
|
||||
"corepkg": "core",
|
||||
"bundleddirs": [
|
||||
"libs/core",
|
||||
@ -15,13 +15,13 @@
|
||||
"workspace": false,
|
||||
"packages": true,
|
||||
"sharing": true,
|
||||
"publish": true,
|
||||
"publishing": true,
|
||||
"preferredPackages": [
|
||||
],
|
||||
"githubPackages": true
|
||||
},
|
||||
"compile": {
|
||||
"isNative": false,
|
||||
"isNative": true,
|
||||
"hasHex": true,
|
||||
"deployDrives": "MINI",
|
||||
"driveName": "MINI",
|
||||
@ -54,7 +54,10 @@
|
||||
"mathBlocks": true,
|
||||
"loopsBlocks": true,
|
||||
"logicBlocks": true,
|
||||
"variablesBlocks": true
|
||||
"variablesBlocks": true,
|
||||
"textBlocks": true,
|
||||
"onStartColor": "#54C9C9",
|
||||
"onStartNamespace": "basic"
|
||||
},
|
||||
"simulator": {
|
||||
"autoRun": true,
|
||||
@ -114,7 +117,7 @@
|
||||
"C19": "C_P19",
|
||||
"C20": "C_P20",
|
||||
"EXT_PWR":"EXT_PWR",
|
||||
"SPKR":"EXT_PWR",
|
||||
"SPKR":"SPKR",
|
||||
"BTN_A": "BTN_A",
|
||||
"BTN_B": "BTN_B",
|
||||
"MOTOR1": "M_OUT1",
|
||||
@ -165,12 +168,12 @@
|
||||
}
|
||||
},
|
||||
"compileService": {
|
||||
"yottaTarget": "bbc-microbit-classic-gcc",
|
||||
"yottaTarget": "calliope-mini-classic-gcc",
|
||||
"yottaCorePackage": "microbit",
|
||||
"githubCorePackage": "calliope-mini/microbit",
|
||||
"gittag": "v1.0.2-calliope",
|
||||
"serviceId": "microbit"
|
||||
},
|
||||
"gittag": "v2.0.0-rc7-calliope-1.0.1",
|
||||
"serviceId": "calliope"
|
||||
},
|
||||
"serial": {
|
||||
"manufacturerFilter": "^mbed$",
|
||||
"nameFilter": "^mbed Serial Port",
|
||||
@ -187,13 +190,15 @@
|
||||
"cardLogo": "./static/icons/apple-touch-icon.png",
|
||||
"appLogo": "./static/icons/apple-touch-icon.png",
|
||||
"homeUrl": "https://calliope.cc/",
|
||||
"embedUrl": "https://calliope.cc/",
|
||||
"embedUrl": "https://mini.pxt.io/",
|
||||
"privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839",
|
||||
"termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977",
|
||||
"githubUrl": "https://github.com/Microsoft/pxt-calliope",
|
||||
"crowdinProject": "kindscript",
|
||||
"organization": "Microsoft",
|
||||
"organizationUrl": "https://pxt.io/",
|
||||
"organizationLogo": "./static/Microsoft-logo_rgb_c-gray.png",
|
||||
"organizationLogo": "./static/Microsoft-logo_rgb_c-gray-square.png",
|
||||
"organizationWideLogo": "./static/Microsoft-logo_rgb_c-white.png",
|
||||
"browserSupport": [
|
||||
{
|
||||
"name": "unsupported",
|
||||
@ -224,72 +229,19 @@
|
||||
"boardName": "Calliope mini",
|
||||
"hideSideDocs": true,
|
||||
"usbDocs": "/device/usb",
|
||||
"usbHelp": [
|
||||
{
|
||||
"name": "connection",
|
||||
"os": "*",
|
||||
"browser": "*",
|
||||
"path": "/static/mb/device/usb-generic.jpg"
|
||||
},
|
||||
{
|
||||
"name": "connection",
|
||||
"os": "mac",
|
||||
"browser": "*",
|
||||
"path": "/static/mb/device/usb-mac.jpg"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "windows",
|
||||
"browser": "firefox",
|
||||
"path": "/static/mb/device/usb-windows-firefox-1.png"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "mac",
|
||||
"browser": "firefox",
|
||||
"path": "/static/mb/device/usb-osx-firefox-1.jpg"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "mac",
|
||||
"browser": "chrome",
|
||||
"path": "/static/mb/device/usb-osx-chrome.png"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "windows",
|
||||
"browser": "edge",
|
||||
"path": "/static/mb/device/usb-windows-edge-1.png"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "windows",
|
||||
"browser": "ie",
|
||||
"path": "/static/mb/device/usb-windows-ie11-1.png"
|
||||
},
|
||||
{
|
||||
"name": "save",
|
||||
"os": "windows",
|
||||
"browser": "chrome",
|
||||
"path": "/static/mb/device/usb-windows-chrome.png"
|
||||
},
|
||||
{
|
||||
"name": "copy",
|
||||
"os": "mac",
|
||||
"browser": "*",
|
||||
"path": "/static/mb/device/usb-osx-dnd.png"
|
||||
},
|
||||
{
|
||||
"name": "copy",
|
||||
"os": "windows",
|
||||
"browser": "*",
|
||||
"path": "/static/mb/device/usb-windows-sendto.jpg"
|
||||
}
|
||||
],
|
||||
"invertedMenu": true,
|
||||
"invertedToolbox": true,
|
||||
"monacoToolbox": false,
|
||||
"hasAudio": true,
|
||||
"simAnimationEnter": "rotate in",
|
||||
"simAnimationExit": "rotate out",
|
||||
"blocklyOptions": { }
|
||||
"blocklyOptions": {
|
||||
"grid": {
|
||||
"spacing": 45,
|
||||
"length": 7,
|
||||
"colour": "rgba(189, 195, 199, 0.30)",
|
||||
"snap": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ namespace pxsim {
|
||||
neopixelState: NeoPixelState;
|
||||
rgbLedState: number;
|
||||
speakerState: SpeakerState;
|
||||
servosState: MicroServosState;
|
||||
fileSystem: FileSystemState;
|
||||
|
||||
constructor() {
|
||||
@ -42,20 +41,27 @@ namespace pxsim {
|
||||
DAL.MICROBIT_ID_IO_P5,
|
||||
DAL.MICROBIT_ID_IO_P6,
|
||||
DAL.MICROBIT_ID_IO_P7,
|
||||
0, //DAL.MICROBIT_ID_IO_P8,
|
||||
DAL.MICROBIT_ID_IO_P8,
|
||||
DAL.MICROBIT_ID_IO_P9,
|
||||
DAL.MICROBIT_ID_IO_P10,
|
||||
DAL.MICROBIT_ID_IO_P11,
|
||||
0, //DAL.MICROBIT_ID_IO_P12,
|
||||
0, //DAL.MICROBIT_ID_IO_P13,
|
||||
0, //DAL.MICROBIT_ID_IO_P14,
|
||||
0, //DAL.MICROBIT_ID_IO_P15,
|
||||
0, //DAL.MICROBIT_ID_IO_P16,
|
||||
DAL.MICROBIT_ID_IO_P12,
|
||||
DAL.MICROBIT_ID_IO_P13,
|
||||
DAL.MICROBIT_ID_IO_P14,
|
||||
DAL.MICROBIT_ID_IO_P15,
|
||||
DAL.MICROBIT_ID_IO_P16,
|
||||
0,
|
||||
0,
|
||||
DAL.MICROBIT_ID_IO_P19,
|
||||
DAL.MICROBIT_ID_IO_P20
|
||||
]
|
||||
DAL.MICROBIT_ID_IO_P20,
|
||||
DAL.MICROBIT_ID_IO_P21
|
||||
],
|
||||
servos: {
|
||||
"P0": DAL.MICROBIT_ID_IO_P12,
|
||||
"P1": DAL.MICROBIT_ID_IO_P0,
|
||||
"P2": DAL.MICROBIT_ID_IO_P1,
|
||||
"P3": DAL.MICROBIT_ID_IO_P16
|
||||
}
|
||||
});
|
||||
this.builtinParts["radio"] = this.radioState = new RadioState(runtime);
|
||||
this.builtinParts["accelerometer"] = this.accelerometerState = new AccelerometerState(runtime);
|
||||
@ -65,12 +71,7 @@ namespace pxsim {
|
||||
this.builtinParts["compass"] = this.compassState = new CompassState();
|
||||
this.builtinParts["neopixel"] = this.neopixelState = new NeoPixelState();
|
||||
this.builtinParts["speaker"] = this.speakerState = new SpeakerState();
|
||||
this.builtinParts["microservo"] = this.servosState = new MicroServosState({
|
||||
"P0": DAL.MICROBIT_ID_IO_P0,
|
||||
"P1": DAL.MICROBIT_ID_IO_P1,
|
||||
"P2": DAL.MICROBIT_ID_IO_P2,
|
||||
"P3": DAL.MICROBIT_ID_IO_P3
|
||||
});
|
||||
this.builtinParts["microservo"] = this.edgeConnectorState;
|
||||
|
||||
this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
|
||||
this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
|
||||
|
@ -1,4 +1,4 @@
|
||||
/// <reference path="../node_modules/pxt-core/typings/bluebird/bluebird.d.ts"/>
|
||||
/// <reference path="../node_modules/pxt-core/typings/globals/bluebird/index.d.ts"/>
|
||||
/// <reference path="../node_modules/pxt-core/built/pxtsim.d.ts"/>
|
||||
/// <reference path="../node_modules/pxt-core/built/pxtrunner.d.ts"/>
|
||||
|
||||
|
@ -223,10 +223,10 @@ namespace pxsim {
|
||||
return DAL.MICROBIT_ACCELEROMETER_EVT_TILT_UP;
|
||||
|
||||
if (this.getZ() < (-1000 + DAL.MICROBIT_ACCELEROMETER_TILT_TOLERANCE))
|
||||
return DAL.MICROBIT_ACCELEROMETER_EVT_FACE_UP;
|
||||
return DAL.MICROBIT_ACCELEROMETER_EVT_FACE_DOWN;
|
||||
|
||||
if (this.getZ() > (1000 - DAL.MICROBIT_ACCELEROMETER_TILT_TOLERANCE))
|
||||
return DAL.MICROBIT_ACCELEROMETER_EVT_FACE_DOWN;
|
||||
return DAL.MICROBIT_ACCELEROMETER_EVT_FACE_UP;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -76,8 +76,7 @@ namespace pxsim.pins {
|
||||
if (!pin) return;
|
||||
|
||||
analogSetPeriod(pinId, 20000);
|
||||
const state = board().servosState.servoState(pinId);
|
||||
state.setAngle(value);
|
||||
pin.servoAngle = Math.max(0, Math.min(180, value));
|
||||
}
|
||||
|
||||
export function servoSetPulse(pinId: number, micros: number) {
|
||||
|
@ -53,9 +53,9 @@ namespace pxsim {
|
||||
}
|
||||
|
||||
public shiftRight(cols: number) {
|
||||
for (let x = this.width - 1; x <= 0; --x)
|
||||
for (let x = this.width - 1; x >= 0; --x)
|
||||
for (let y = 0; y < 5; ++y)
|
||||
this.set(x, y, x > cols ? this.get(x - cols, y) : 0);
|
||||
this.set(x, y, x >= cols ? this.get(x - cols, y) : 0);
|
||||
}
|
||||
|
||||
public clear(): void {
|
||||
@ -129,10 +129,11 @@ namespace pxsim.images {
|
||||
}
|
||||
|
||||
namespace pxsim.ImageMethods {
|
||||
export function showImage(leds: Image, offset: number) {
|
||||
export function showImage(leds: Image, offset: number, interval: number) {
|
||||
pxtrt.nullCheck(leds)
|
||||
leds.copyTo(offset, 5, board().ledMatrixState.image, 0)
|
||||
runtime.queueDisplayUpdate()
|
||||
basic.pause(interval);
|
||||
}
|
||||
|
||||
export function plotImage(leds: Image, offset: number): void {
|
||||
@ -155,8 +156,8 @@ namespace pxsim.ImageMethods {
|
||||
ImageMethods.plotImage(leds, frame * Image.height);
|
||||
}
|
||||
|
||||
export function showFrame(leds: Image, frame: number) {
|
||||
ImageMethods.showImage(leds, frame * Image.height);
|
||||
export function showFrame(leds: Image, frame: number, interval: number) {
|
||||
ImageMethods.showImage(leds, frame * Image.height, interval);
|
||||
}
|
||||
|
||||
export function pixel(leds: Image, x: number, y: number): number {
|
||||
@ -195,11 +196,16 @@ namespace pxsim.ImageMethods {
|
||||
board().ledMatrixState.animationQ.enqueue({
|
||||
interval: interval,
|
||||
frame: () => {
|
||||
//TODO: support right to left.
|
||||
if (off >= leds.width || off < 0) return false;
|
||||
stride > 0 ? display.shiftLeft(stride) : display.shiftRight(-stride);
|
||||
let c = Math.min(stride, leds.width - off);
|
||||
leds.copyTo(off, c, display, 5 - stride)
|
||||
if (stride > 0) {
|
||||
display.shiftLeft(stride);
|
||||
const c = Math.min(stride, leds.width - off);
|
||||
leds.copyTo(off, c, display, 5 - stride)
|
||||
} else {
|
||||
display.shiftRight(-stride);
|
||||
const c = Math.min(-stride, leds.width - off);
|
||||
leds.copyTo(off, c, display, 0)
|
||||
}
|
||||
off += stride;
|
||||
return true;
|
||||
},
|
||||
@ -223,7 +229,7 @@ namespace pxsim.basic {
|
||||
clearScreen();
|
||||
pause(interval * 5);
|
||||
} else {
|
||||
if (s.length == 1) showLeds(createImageFromString(s + " "), interval * 5)
|
||||
if (s.length == 1) showLeds(createImageFromString(s), 0);
|
||||
else ImageMethods.scrollImage(createImageFromString(s + " "), 1, interval);
|
||||
}
|
||||
}
|
||||
|
@ -119,6 +119,9 @@ namespace pxsim.pins {
|
||||
export function getPinAddress(name: number) {
|
||||
return getPin(name)
|
||||
}
|
||||
|
||||
export function setEvents(name: number, event: number) {
|
||||
}
|
||||
}
|
||||
|
||||
namespace pxsim.devices {
|
||||
|
@ -35,18 +35,14 @@ namespace pxsim.serial {
|
||||
board().writeSerial(s);
|
||||
}
|
||||
|
||||
export function readUntil(del: string): string {
|
||||
return readString();
|
||||
}
|
||||
|
||||
export function readString(): string {
|
||||
return board().serialState.readSerial();
|
||||
}
|
||||
|
||||
export function readLine(): string {
|
||||
return board().serialState.readSerial();
|
||||
}
|
||||
|
||||
export function readUntil(del: string): string {
|
||||
return readLine();
|
||||
}
|
||||
|
||||
export function onDataReceived(delimiters: string, handler: RefAction) {
|
||||
let b = board();
|
||||
b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/// <reference path="../../node_modules/pxt-core/typings/bluebird/bluebird.d.ts"/>
|
||||
/// <reference path="../../node_modules/pxt-core/typings/globals/bluebird/index.d.ts"/>
|
||||
/// <reference path="../../node_modules/pxt-core/built/pxtsim.d.ts"/>
|
||||
|
||||
namespace pxsim.visuals {
|
||||
|
@ -12,17 +12,23 @@
|
||||
/*******************************
|
||||
Add your custom CSS here
|
||||
*******************************/
|
||||
/* not relevant in new UI
|
||||
.openproject {
|
||||
background: #4ECC60 !important;
|
||||
}
|
||||
} */
|
||||
|
||||
.blocks-menuitem, .javascript-menuitem {
|
||||
.blocks-menuitem.active, .javascript-menuitem.active {
|
||||
background: #738791 !important;
|
||||
}
|
||||
|
||||
/* not relevant in new UI
|
||||
.help-dropdown-menuitem, .more-dropdown-menuitem {
|
||||
background: #424955 !important;
|
||||
margin-right:0px !important;
|
||||
} */
|
||||
|
||||
.huge.download-button i {
|
||||
display:none !important; // otherwise spans 2 lines
|
||||
}
|
||||
|
||||
.play-button {
|
||||
@ -45,36 +51,18 @@
|
||||
Blockly
|
||||
*******************************/
|
||||
|
||||
.blocklyTreeRow {
|
||||
border-radius:5px;
|
||||
}
|
||||
|
||||
/* Specifying top and bottom rounded toolbox borders. */
|
||||
.blocklyTreeRow.blocklyTreeRowTop {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
}
|
||||
|
||||
.blocklyTreeRow.blocklyTreeRowBottom {
|
||||
border-bottom-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
}
|
||||
|
||||
.blocklyTreeRow:hover {
|
||||
background: @invertedBackground !important;
|
||||
div.blocklyTreeRow {
|
||||
border-radius:8px;
|
||||
}
|
||||
|
||||
/* This removes any padding at the top of the toolbox */
|
||||
.blocklyTreeRoot {
|
||||
div.blocklyTreeRoot {
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
/* Blockly Text */
|
||||
.blocklyTreeLabel {
|
||||
div.blocklyTreeLabel {
|
||||
font-family: @pageFont !important;
|
||||
}
|
||||
|
||||
.blocklyTreeLabel {
|
||||
font-size:1rem !important;
|
||||
}
|
||||
|
||||
@ -83,10 +71,12 @@
|
||||
}
|
||||
|
||||
.blocklyToolboxDiv {
|
||||
/*left:30px !important;*/
|
||||
padding:7px;
|
||||
}
|
||||
|
||||
.organization {
|
||||
top: 1.6em;
|
||||
}
|
||||
|
||||
/* Mobile */
|
||||
@media only screen and (max-width: @largestMobileScreen) {
|
||||
@ -97,21 +87,14 @@
|
||||
|
||||
/* Tablet */
|
||||
@media only screen and (min-width: @tabletBreakpoint) and (max-width: @largestTabletScreen) {
|
||||
|
||||
}
|
||||
|
||||
/* Small Monitor */
|
||||
@media only screen and (min-width: @computerBreakpoint) and (max-width: @largestSmallMonitor) {
|
||||
.blocklyTreeRow {
|
||||
width: 230px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Large Monitor */
|
||||
@media only screen and (min-width: @largeMonitorBreakpoint) {
|
||||
.blocklyTreeRow {
|
||||
width: 230px;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************
|
||||
|
@ -32,7 +32,7 @@
|
||||
@input : 'pxt';
|
||||
@label : 'pxt';
|
||||
@list : 'pxt';
|
||||
@loader : 'pulsar';
|
||||
@loader : 'pxt';
|
||||
@rail : 'pxt';
|
||||
@reveal : 'pxt';
|
||||
@segment : 'pxt';
|
||||
|
@ -7,4 +7,3 @@ export KS_FORCE_CLOUD=yes
|
||||
(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js test)
|
||||
(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js test)
|
||||
node node_modules/pxt-core/built/pxt.js testdir tests
|
||||
(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v1.json)
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "pxt.microbit.org",
|
||||
"name": "mini.pxt.io",
|
||||
"icons": [
|
||||
{
|
||||
"src": "./static/icons/android-chrome-36x36.png",
|
||||
|