Skip to content

Commit ee040ed

Browse files
authored
Update README.md (#166)
1 parent f87008a commit ee040ed

File tree

1 file changed

+46
-15
lines changed

1 file changed

+46
-15
lines changed

Diff for: README.md

+46-15
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,59 @@
44
[![codecov](https://codecov.io/gh/arduino/ArduinoCore-API/branch/master/graph/badge.svg)](https://codecov.io/gh/arduino/ArduinoCore-API)
55
[![Spell Check status](https://github.com/arduino/ArduinoCore-API/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino/ArduinoCore-API/actions/workflows/spell-check.yml)
66

7-
This repository hosts the hardware independent layer of Arduino core.
7+
This repository hosts the hardware independent layer of Arduino core. In other words it contains the abstract definition of the Arduino core API, consisting of hardware-independent header files that are then included and implemented by the various platform-specific cores.
88

9-
All Arduino official cores are being ported to the new structure so they take advantage of this single repo.
9+
Having a single place where the Arduino API is defined means that there is no longer a String implementation within every Arduino core (a String module within ArduinoCore-avr, a String module within ArduinoCore-samd, a String module within ArduinoCore-megaavr …) but rather one String implementation within ArduinoCore-API which all other cores utilise. This has the pleasant side effects that bugs fixed or features added within the ArduinoCore-API String implementation are automatically propagated to all cores utilizing ArduinoCore-API.
1010

11-
Including this repo in your existing Arduino core will allow the language to grow and include new features.
12-
For backwards compatibility, every revision of this repo will increase the `ARDUINO_API_VERSION` define.
11+
As of now, the following official cores are utilising ArduinoCore-API:
1312

14-
Some cores have been ported to the new structure, for example:
15-
* megaAVR (https://github.com/arduino/ArduinoCore-megaAVR)
16-
* nRF52-mbedos (https://github.com/arduino/ArduinoCore-nRF528x-mbedos)
17-
* classic AVR (https://github.com/arduino/ArduinoCore-avr/tree/api)
18-
* SAMD (https://github.com/arduino/ArduinoCore-samd)
13+
* [megaavr](https://github.com/arduino/ArduinoCore-megaAVR)
14+
* [mbed](https://github.com/arduino/ArduinoCore-mbed)
15+
* [samd](https://github.com/arduino/ArduinoCore-samd)
1916

20-
These repositories **don't** contain the needed `api` subfolder; to "complete" the core you need to copy or symlink the `api` folder from this repo to the target's `cores/arduino` folder.
17+
There's an ongoing effort to port the others, while maintainers of third-party cores are strongly invited to follow the same route in order to stay up-to-date with the new language features. For backwards compatibility, every revision of this repo will increase the `ARDUINO_API_VERSION` define.
2118

22-
### Porting tips
19+
## Documentation
2320

24-
In the future, core APIs will be updated independently from the core, so all the compatible cores will seamlessly adopt new features.
25-
This requires support from all the IDEs, so in the meantime we suggest to release the core by copying a snapshot of this `api` folder.
21+
The Arduino API is documented in the official [language reference](https://www.arduino.cc/reference/en/), whose sources are located in [this repository](https://github.com/arduino/reference-en) and are open to contributions from the community.
22+
23+
## Support
24+
25+
This repository is not directly usable by final users. If you need assistance with Arduino, see the [Help Center](https://support.arduino.cc/) and browse the [forum](https://forum.arduino.cc).
26+
27+
## Development
28+
29+
### Bugs & Issues
30+
31+
If you want to report an issue with this core, you can submit it to the [issue tracker](https://github.com/arduino/ArduinoCore-API/issues) of this repository. Some rules apply:
32+
33+
* If your issue is about a specific hardware platform, report it to its repository. This one is only about discussing the generic API.
34+
* Before posting, please check if the same problem has been already reported by someone else to avoid duplicates.
35+
* Remember to include as much detail as you can about your hardware set-up, code and steps for reproducing the issue. Make sure you're using an original Arduino board.
36+
37+
### Contributions
38+
39+
Contributions are always welcome! You can submit them directly to this repository as Pull Requests. Please provide a detailed description of the problem you're trying to solve. We also appreciate any help in testing issues and patches contributed by other users.
40+
41+
### Unit testing
42+
43+
This repository includes a test suite that covers most of the API and that is designed to run on generic hardware, thus not requiring a development board. We call this _host-based unit-testing_. In order to test the features that are only defined but not implemented in this repository, mock implementations are included.
44+
45+
Please help us improve the coverage of the test suite!
46+
47+
### Implementing ArduinoCore-API
48+
49+
In order to compile a core which is implementing ArduinoCore-API you'll need to copy/symlink the `api` directory to the target's `cores/arduino` directory as part of your development and release workflow. The most elegant and effective solution is to develop your core with `api` symlinked and produce the distributable archive by telling `tar` to follow symlinks. Example:
2650

27-
The most elegant and effective solution is to develop the core with `api` symlinked and produce the distributable archive by telling `tar` to follow symlinks.
28-
Example command:
2951
```
3052
tar --exclude='*.git*' -cjhvf $yourcore-$version.tar.bz2 $yourcore/
3153
```
54+
55+
## Donations
56+
57+
This open source code is maintained by Arduino with the help of the community. We invest a considerable amount of time in testing code, optimizing it and introducing new features. Please consider [donating](https://www.arduino.cc/en/donate/) or [sponsoring](https://github.com/sponsors/arduino) to support our work, as well as [buying original Arduino boards](https://store.arduino.cc) which is the best way to make sure our effort can continue in the long term.
58+
59+
## License and credits
60+
61+
This code is licensed under the terms of the GNU LGPL 2.1. If you have questions about licensing please contact us at [[email protected]](mailto:[email protected]).
62+

0 commit comments

Comments
 (0)