Compare commits

..

3164 Commits

Author SHA1 Message Date
Ivan Kravets
0b5769dc57 Merge branch 'release/v3.5.1' 2018-01-18 15:12:24 +02:00
Ivan Kravets
9b9b05439b Bump version to 3.5.1 (issue #1273 issue #1280 issue #1286 issue #1247 issue #1284 issue #1299 issue #1290) 2018-01-18 15:11:38 +02:00
Ivan Kravets
93d4e68378 Bump docs to 3.5.1 2018-01-18 15:04:15 +02:00
Ivan Kravets
2c79de971e Show full library version in "Library Dependency Graph" including VCS information // Issue #1274 2018-01-18 14:49:01 +02:00
Ivan Kravets
bc18941eb0 Fix project generator for Qt Creator IDE // Resolve #1299 Resolve #1290 2018-01-18 01:30:39 +02:00
Ivan Kravets
23ecce297a Update docs for custom slash size for ESP8266 2018-01-17 13:18:14 +02:00
Ivan Kravets
cc646b19bf Extend example with a custom program name using extra scripting 2018-01-17 01:00:09 +02:00
Ivan Kravets
4b08dbd602 Bump version to 3.5.1a7 2018-01-16 13:40:59 +02:00
Ivan Kravets
d822334fdd Drop "python-dateutil" dependency, implement light-weight "parse_date" 2018-01-16 00:57:06 +02:00
Ivan Kravets
3289b36450 Refactore code without "arrow" dependency (resolve issue with "ImportError: No module named backports.functools_lru_cache") 2018-01-16 00:06:24 +02:00
Ivan Kravets
affd53eb27 Use "python_requires" for setuptools and depend on Python 2.7+ <3 2018-01-15 23:02:40 +02:00
Ivan Kravets
06a6822173 Minor fix to history 2018-01-13 19:45:54 +02:00
Ivan Kravets
6380d6c3ea Bump version to 3.5.1a6 2018-01-13 19:44:55 +02:00
Ivan Kravets
24f314d73d Improve a work in off-line mode 2018-01-13 19:44:05 +02:00
Ivan Kravets
6cddaf9eb7 Ignore VSCode launch.json for VCS 2018-01-13 19:01:27 +02:00
Ivan Kravets
ec419f3d0e Refactor CMD:LIB tests 2018-01-13 17:02:08 +02:00
Ivan Kravets
a6c84da83a Check cached API result before Internet 2018-01-13 01:21:53 +02:00
Ivan Kravets
7cad113f0a Cleanup tests 2018-01-13 01:19:41 +02:00
Ivan Kravets
712155243c Add "lib" and ".piolibdeps" to CLion project index 2018-01-12 14:20:53 +02:00
Ivan Kravets
2091a33fb9 Show full version of the current interpreter 2018-01-12 02:23:55 +02:00
Ivan Kravets
1d5245edbd Add "lib_ldf_mode = chain+" for example with C/C++ Preprocessor conditional syntax 2018-01-11 14:14:35 +02:00
Ivan Kravets
cfb22f2a36 Add FAQ:Package Manager for PackageInstallError 2018-01-11 02:10:51 +02:00
Ivan Kravets
16eb41b84e Document "[Error 5] Access is denied" for Package Manager 2018-01-11 02:02:59 +02:00
Ivan Kravets
ae38d17b7f Ignore packages with TMP_FOLDER_PREFIX 2018-01-10 15:23:56 +02:00
Ivan Kravets
7bbb850c2f Bump version to 3.5.1a5 2018-01-10 03:33:51 +02:00
Ivan Kravets
fda439841e Restore PY2/3 ConfigParser 2018-01-10 03:07:17 +02:00
Ivan Kravets
c558584640 Fix importing of ConfigParser 2018-01-10 02:58:50 +02:00
Ivan Kravets
cfb04b31a4 Bump version to 3.5.1a4 2018-01-10 02:12:26 +02:00
Ivan Kravets
1090c414f5 Update PIO Core+ and PIO Home // Resolve #1247 Resolve #1280 Resolve #1284 Resolve #1286 2018-01-10 02:06:05 +02:00
Ivan Kravets
5b64bf1f7c Set default build environment for each example 2018-01-09 22:26:33 +02:00
Ivan Kravets
61eb989edd Fix project generator for CLion // Issue #1287 2018-01-09 22:15:03 +02:00
Dmitry Bolotin
23ae8e0d3e Additional fix to 7354515 (#1287)
* Additional fix to 7354515

* Update CMakeListsPrivate.txt.tpl

Also perform `replace('"', '\\"')`
2018-01-09 22:07:57 +02:00
Ivan Kravets
e4f8a1877c Fix library updates when a version is declared in VCS format (not SemVer) 2018-01-09 21:56:21 +02:00
Ivan Kravets
61872dd734 Improve support of PIO Unified Debugger for Eclipse Oxygen 2018-01-06 01:04:43 +02:00
Ivan Kravets
16b307d1b3 Sync docs 2018-01-05 19:08:16 +02:00
Ivan Kravets
a4770a27f4 Bump version to 3.5.1a3 2018-01-05 00:18:08 +02:00
Ivan Kravets
ba858989f2 Fix PIO Unified Debugger for mbed framework 2018-01-05 00:17:45 +02:00
Ivan Kravets
93c055a2ec Bump version to 3.5.1a2 2018-01-04 17:14:04 +02:00
Ivan Kravets
2b3bc05f2b Option which allows to specify custom test_speed // Resolve #1273 2018-01-04 16:14:56 +02:00
Ivan Kravets
5260217537 Sync docs with new boards 2018-01-03 19:46:44 +02:00
Ivan Kravets
62235ef32d Sync examples 2018-01-03 18:59:41 +02:00
Ivan Kravets
ec40dcada7 Custom firmware/program name in build directory 2018-01-03 18:35:25 +02:00
Ivan Kravets
5e666492c3 Rename envs_dir option to build_dir in platformio.ini 2018-01-03 15:47:02 +02:00
Ivan Kravets
82246a837e Change wording 2017-12-31 00:07:12 +02:00
Ivan Kravets
2758e99295 Bump version to 3.5.1a1 2017-12-29 20:51:20 +02:00
Ivan Kravets
7354515845 Fix project generator for CLion IDE 2017-12-29 20:50:17 +02:00
Ivan Kravets
d58c392930 Typo fix in docs 2017-12-28 20:38:08 +02:00
Ivan Kravets
86cb2efd64 Sync docs 2017-12-28 20:36:57 +02:00
Ivan Kravets
b307855207 Fix typo in docs 2017-12-28 20:35:24 +02:00
Ivan Kravets
3ad4ff02e8 Typo fix 2017-12-28 18:57:17 +02:00
Ivan Kravets
4ef3818482 Merge branch 'release/v3.5.0' 2017-12-28 17:26:12 +02:00
Ivan Kravets
0082dc43a3 Merge branch 'release/v3.5.0' into develop 2017-12-28 17:26:12 +02:00
Ivan Kravets
755ade05c6 Bump version to 3.5.0 (issue #1260, issue #781, issue #778, issue #463, issue #1236, issue #1235, issue #953, issue #1118, issue #1107, issue #1196, issue #1179, issue #1161, issue #1126, issue #104, issue #1033, issue #1034, issue #1175, issue #1173, issue #1155, issue #1188, issue #1111, issue #1153, issue #1150, issue #1145, issue #1139, issue #1137, issue #1170, issue #1157, issue #1102, issue #1105, issue #1140, issue #1154, issue #1066, issue #1038, issue #1054, issue #1055, issue #1061, issue #1017) 2017-12-28 17:25:49 +02:00
Ivan Kravets
12e4318de7 Don't follow redirects when checking internet connection 2017-12-28 17:15:34 +02:00
Ivan Kravets
34e9063ddd Use "paged" links for docs 2017-12-28 16:58:15 +02:00
Ivan Kravets
2315b08909 PIO Home docs 2017-12-28 16:51:18 +02:00
Ivan Kravets
9c9a40a531 Add GitHub to PING_INTERNET_IPS list 2017-12-28 15:01:18 +02:00
Ivan Kravets
ac4b485521 Fix issue with non-ascii path when printing LDF Tree in verbose mode 2017-12-28 14:27:08 +02:00
Ivan Kravets
f13bf35dbd Bump version to 3.5.0rc17 2017-12-28 01:11:54 +02:00
Ivan Kravets
012cb85e31 Allow libraries with the same folder name 2017-12-28 00:19:17 +02:00
Ivan Kravets
62ee8066c2 Handle incompatibility between PIO Core and PIO Core+ 2017-12-27 22:05:56 +02:00
Ivan Kravets
fc064aaf05 Support the latest arrow package 2017-12-27 21:38:03 +02:00
Ivan Kravets
0516cd74e1 Check system compatibility for package 2017-12-27 21:36:45 +02:00
Ivan Kravets
5b7a0e6997 Bump version to 3.5.0rc16 2017-12-27 19:57:57 +02:00
Ivan Kravets
ad08ed8d12 Improve support for partial package versions 2017-12-27 19:37:26 +02:00
Ivan Kravets
55d4fc23d0 Use "path" instead of "device" for logical devices 2017-12-27 16:02:36 +02:00
Ivan Kravets
e29ecb47a5 Skip mDSN services with wrong encoding 2017-12-23 22:59:49 +02:00
Ivan Kravets
c96c1f2b2f Bump version to 3.5.0rc15 2017-12-23 21:05:05 +02:00
Ivan Kravets
fab4f00ad4 Reformat exceptions 2017-12-23 19:48:16 +02:00
Ivan Kravets
adaa3757ac Switch to newly created "contrib-pysite" 2017-12-23 13:06:38 +02:00
Ivan Kravets
2eb7d0e8be temporary switch to old "pysite-pioplus" 2017-12-19 17:59:49 +02:00
Ivan Kravets
d16d715898 Bump version to 3.5.0rc14 2017-12-19 17:22:16 +02:00
Ivan Kravets
1171cb204c Fix broken syntax 2017-12-19 16:50:09 +02:00
Ivan Kravets
d70a90f1d5 Explain that no need to use sudo pio ... 2017-12-19 15:49:44 +02:00
Ivan Kravets
06574e3066 Do not update automatically Core packages while upgrading PIO Core 2017-12-19 15:38:32 +02:00
Ivan Kravets
39dfbbdd87 Don't create "packages" directory when there are no packages isntalled 2017-12-19 15:24:23 +02:00
Ivan Kravets
7b8c68c934 Show error information when permissions are broken to PIO home dir 2017-12-19 15:05:41 +02:00
Ivan Kravets
6d81c230a5 Bump version to 3.5.0rc13 2017-12-19 14:48:07 +02:00
Ivan Kravets
a6c1869eb2 Depend on "zeroconf" from "contrib-pysite" 2017-12-19 14:47:31 +02:00
Ivan Kravets
0c3f2b54ed Bump version to 3.5.0rc12 2017-12-19 12:42:18 +02:00
Ivan Kravets
c6abdf8206 Check zeroconf installation before adding to setuptools 2017-12-19 12:41:56 +02:00
Ivan Kravets
9f2875fcd7 Update changelog with missed records 2017-12-19 01:55:51 +02:00
Ivan Kravets
78b296f2ec Update changelog 2017-12-19 01:49:25 +02:00
Ivan Kravets
903ad6c6f8 Bump version to 3.5.0rc11 2017-12-19 01:42:10 +02:00
Ivan Kravets
9441f776cc Handle missed dependency and provide a help how to find it using PlatformIO Library Registry // Resolve #781 2017-12-19 01:41:18 +02:00
Ivan Kravets
5dd97a35cc Reinstall/redownload package with a new `-f, --force` option // Resolve #778 2017-12-19 00:51:35 +02:00
Ivan Kravets
31814b5122 Extend "pio device list" command with new options to list logical devices and multicast DNS services // Resolve #463 2017-12-18 21:31:49 +02:00
Ivan Kravets
724135f40e Docs: Simplify solution for "PackageManager is unable to install tool" 2017-12-17 01:58:43 +02:00
Ivan Kravets
cbb7db552a Add contents for "FAQ: Install PIO Core Shell Commands" 2017-12-17 01:23:40 +02:00
Ivan Kravets
cdf4639c97 Remove duplicate package versions from result 2017-12-16 20:50:25 +02:00
Ivan Kravets
170917a927 Sync supported boards and frameworks 2017-12-16 19:19:08 +02:00
Ivan Kravets
efceb5db72 Explain that we need Internet connection to install all dependencies 2017-12-16 17:40:56 +02:00
Ivan Kravets
cee2da7448 Bump version to 3.5.0rc10 2017-12-16 16:16:07 +02:00
Ivan Kravets
3d8183a2e1 LDF: handle "include" folder per project; fix issue with header files // Resolve #1235 2017-12-16 15:38:13 +02:00
Ivan Kravets
25341d1ec7 Bump version to 3.5.0rc9 2017-12-16 01:07:18 +02:00
Ivan Kravets
05081561c3 Minor fixes 2017-12-16 01:07:03 +02:00
Ivan Kravets
abbba7fe2e Don't use PIOBUILDFILES for LDF 2017-12-15 23:51:13 +02:00
Ivan Kravets
269935726d Check all URL parsed args before installing a package 2017-12-15 23:36:23 +02:00
Ivan Kravets
56aeff87dd Typo fix 2017-12-15 22:31:35 +02:00
Ivan Kravets
42fb589369 Refactor PyLint "inconsistent-return-statements" 2017-12-15 22:16:37 +02:00
Ivan Kravets
bff590e207 Search for libraries used in test // Resolve #953 2017-12-15 21:48:20 +02:00
Ivan Kravets
0933e46a58 Update history 2017-12-15 14:09:07 +02:00
Ivan Kravets
1a7429a1ef Fix "get-platformio.py" script which hangs on Windows 10 // Resolve #1118 2017-12-15 13:47:44 +02:00
Ivan Kravets
fd0b45afdb Use short version of a link for IOError exception 2017-12-15 02:42:38 +02:00
Ivan Kravets
3d67535a9e Bump version to 3.5.0rc8 2017-12-15 02:12:04 +02:00
Ivan Kravets
0eb67a7b61 Handle unknown platform when uninstall/update 2017-12-15 02:01:03 +02:00
Ivan Kravets
75774ad9fa Compress exception report 2017-12-15 01:39:10 +02:00
Ivan Kravets
7b6ecf4e45 Fix broken authentication via PIO Home // Resolve #1229 Resolve #1230 Resolve #1231 2017-12-15 00:22:40 +02:00
Ivan Kravets
ca8bc3819f Add "include" folder for project’s header files // Resolve issue #1107 2017-12-14 22:02:41 +02:00
Ivan Kravets
0bd103a46d YAPF 2017-12-14 22:01:59 +02:00
Ivan Kravets
736c6a9a1e Sort all package versions using SemVer rules 2017-12-14 21:20:08 +02:00
Ivan Kravets
ef00ecd7f1 Test IPs which used for testing internet connection 2017-12-14 20:18:19 +02:00
Ivan Kravets
70b63d8618 Bump version to 3.5.0rc7 2017-12-14 20:05:50 +02:00
Ivan Kravets
a632583f89 Catch IOError for VSCode Terminal 2017-12-14 20:05:06 +02:00
Ivan Kravets
15bb626e78 Docs: explain about VSCode known issue: "PackageManager is unable to install tool" 2017-12-14 18:26:45 +02:00
Ivan Kravets
bc0d1f06e0 Ensure that PIO Home works without Internet connection // Resolve #1179 2017-12-14 16:52:44 +02:00
Ivan Kravets
bd611bbee8 Allow to change default projects location // Resolve #1161 2017-12-14 16:52:13 +02:00
Ivan Kravets
2522d19453 Fix issue when API cache is turned off 2017-12-14 14:55:04 +02:00
Ivan Kravets
5c4b5c2270 Don't export PIO Core Python's PATH 2017-12-13 22:15:37 +02:00
Ivan Kravets
2d0ac1a9c2 Export PYTHONPATH to PIO Core+ 2017-12-13 20:05:39 +02:00
Ivan Kravets
0f37e15b6c Improve off-line mode // Resolve #1126 2017-12-13 18:14:01 +02:00
Ivan Kravets
3d0f0659ae Rename --develop to --dev option for upgrade command 2017-12-13 13:42:16 +02:00
Ivan Kravets
02a263fdce Bump version to 3.5.0rc6 2017-12-13 01:32:19 +02:00
Ivan Kravets
f7815d6c9b Check PIO Core updates after reset of time counter // Issue #1126 2017-12-13 01:31:41 +02:00
Ivan Kravets
786dd8fe18 Implement "--develop" option for "upgrade" command // Resolve #104 2017-12-13 01:23:18 +02:00
Ivan Kravets
f9b9ed317d Export built-in GCC macros for IDEs 2017-12-13 00:59:51 +02:00
Ivan Kravets
0394e43ba4 Remove caching from TravisCI template 2017-12-12 21:35:48 +02:00
Ivan Kravets
3b1fa572fa Handle unicode errors 2017-12-04 16:18:45 +02:00
Ivan Kravets
ea99701172 Bump version to 3.5.0rc5 2017-12-03 02:29:14 +02:00
Ivan Kravets
e329688954 Update PIO Home to 0.4.0 // Resolve #1034 2017-12-03 02:25:49 +02:00
Ivan Kravets
18b10a7fbf Raise exception when try to load non-PIO project 2017-12-03 02:15:49 +02:00
Ivan Kravets
05069f7ac6 Bump version to 3.5.0rc4 2017-12-01 20:53:39 +02:00
Ivan Kravets
1b1453808f Merge branch 'feature/travis-ci' into develop 2017-11-30 14:06:05 +02:00
Ivan Kravets
d0e32ebcb5 CI OSX: Don't upgrade system Python packages 2017-11-30 02:05:14 +02:00
Ivan Kravets
ad48b85a44 Fix sudo command for OSX CI 2017-11-30 00:18:11 +02:00
Ivan Kravets
75160bb231 Better handling of errors from VCS GIT 2017-11-29 22:46:57 +02:00
Ivan Kravets
4b1716e42b CI: Install PIP for macOS build 2017-11-29 22:27:03 +02:00
Ivan Kravets
10d21595c6 Fix issue when board is not specified and "idedata" target is called 2017-11-29 22:22:31 +02:00
Ivan Kravets
f922fac9d9 Handle espressif as espressif8266 dev/platform for LDF 2017-11-29 18:30:00 +02:00
Ivan Kravets
5846566bbb Bump version to 3.5.0rc3 2017-11-29 16:24:47 +02:00
Ivan Kravets
8f97181ea7 Add "__GNUC__" macro by default for VSCode
https://github.com/platformio/platformio-vscode-ide/issues/54
2017-11-29 16:07:11 +02:00
Ivan Kravets
3c6bd9824e Handle old "espressif" platform name for LDF 2017-11-29 15:32:38 +02:00
Ivan Kravets
1b0776167c Bump version to 3.5.0rc2 2017-11-27 21:05:40 +02:00
Ivan Kravets
f5f3cd85d8 Add support for Git scp-like syntax 2017-11-27 21:04:51 +02:00
Ivan Kravets
79b7974f35 Strip SHA1 sum because @bintray returns wrong value 2017-11-27 14:05:04 +02:00
Ivan Kravets
32c92eec95 Add link to LDF docs 2017-11-27 01:32:36 +02:00
Ivan Kravets
7ec90ac23b Bump version to 3.5.0rc1 2017-11-27 00:20:31 +02:00
Ivan Kravets
bab8ad088e Parse library source file in pair with a header when they have the same name // Resolve #1175 2017-11-27 00:01:24 +02:00
Ivan Kravets
46acad952e Parse source files by header name in default LDF mode // Issue #1175 2017-11-26 20:17:38 +02:00
Ivan Kravets
200cbae177 Experimental support for parsing source file in pair with a header when they have the same name // Issue #1175 2017-11-26 18:51:08 +02:00
Ivan Kravets
d8ee64a545 Fix tests 2017-11-26 01:02:21 +02:00
Ivan Kravets
7b324ebc3c Bump version to 3.5.0b6 2017-11-25 23:55:13 +02:00
Ivan Kravets
02d9272d2a Depend on Arrow 0.10.0 (issue with "backports.functools-lru-cache" for PIO Core+) 2017-11-25 23:54:50 +02:00
Ivan Kravets
9fc5aecb64 Add option to configure library Compatible Mode using library.json 2017-11-25 21:51:16 +02:00
Ivan Kravets
5ca472050c Typo fix 2017-11-25 20:16:37 +02:00
Ivan Kravets
dcab855d2c Fix PyLint 2017-11-25 19:59:03 +02:00
Ivan Kravets
0c9c6d1092 Remove debug code 2017-11-25 19:25:07 +02:00
Ivan Kravets
301b8dc649 Bump version to 3.5.0b5 2017-11-25 19:22:47 +02:00
Ivan Kravets
547e983a86 Improved handling of library dependencies defined as VCS or SemVer in platformio.ini // Resolve #1155 2017-11-25 19:22:00 +02:00
Ivan Kravets
9b514ba194 Remove temporary hook for Arrow deps 2017-11-25 19:06:38 +02:00
Ivan Kravets
37a2ccedbd Temporary fix for Arrow with a missing deps to backports.functools-lru-cache 2017-11-25 15:11:06 +02:00
Ivan Kravets
a983f60fa0 Bump version to 3.5.0b4 2017-11-25 01:12:49 +02:00
Ivan Kravets
fc96806e68 Update docs for ESP32 with custom options 2017-11-25 01:02:27 +02:00
Ivan Kravets
53b37216cc Improve support for VCS packages 2017-11-25 00:31:16 +02:00
Ivan Kravets
d07833e010 Include TizenRT to docs 2017-11-24 20:04:18 +02:00
Ivan Kravets
5b5387d97b Sync docs with the latest added hardware/software 2017-11-24 15:36:37 +02:00
Ivan Kravets
1c20efe9d1 Improve support for dependency with scp-like syntax 2017-11-22 21:38:14 +02:00
Ivan Kravets
8b4104bf5b YAPF 2017-11-22 21:09:16 +02:00
Ivan Kravets
448e0f27b6 Merge branch 'feature/debug-blackmagic' into develop 2017-11-08 11:34:22 +02:00
Ivan Kravets
02db510048 Check serial device description when looking for GDB port 2017-11-08 11:22:44 +02:00
Ivan Kravets
ce9c563c9f Bump version to 3.5.0b3 2017-11-08 00:39:25 +02:00
Ivan Kravets
4c170b7934 Ensure real dev/platform name before build process // Resolve #1170 2017-11-08 00:38:19 +02:00
Ivan Kravets
d1a2dba68c Integration with Jenkins CI 2017-11-07 23:47:23 +02:00
Ivan Kravets
5d2867d8a9 Automatically detect BlackMagic probe GDB port 2017-11-07 00:10:48 +02:00
Ivan Kravets
4504a65b92 Add Black Magic Probe rules 2017-11-04 00:38:49 +02:00
Ivan Kravets
25f52917ef Override VSCode IntelliSense mode with clang-x64 2017-11-03 23:38:09 +02:00
Ivan Kravets
75770bcedf Bump version to 3.5.0b2 2017-11-03 23:11:44 +02:00
Ivan Kravets
1c9fe4561a Terminate PIO Home servers when upgrade PIO Core // Issue #1132 2017-11-03 23:10:39 +02:00
Ivan Kravets
909b773f6d Bump version to 3.5.0b1 2017-11-03 00:51:28 +02:00
Ivan Kravets
0343dc0785 Drop flake8 2017-11-03 00:47:00 +02:00
Ivan Kravets
b670ab4888 Initial support for non-ascii locales 2017-11-02 23:14:32 +02:00
Ivan Kravets
f85202d64c Bump version to 3.5.0a17 2017-11-01 14:14:03 +02:00
Ivan Kravets
e5e5ebb7db YAPF formatter 2017-11-01 14:10:32 +02:00
Ivan Kravets
86de58b9e1 Fix missing toolchain include paths for project generator // Resolve #1154 2017-11-01 14:09:06 +02:00
Ivan Kravets
675cd456b6 New development platform - Samsung ARTIK 2017-09-27 19:28:53 +03:00
Ivan Kravets
9fe581e425 Update release notes 2017-09-27 19:03:04 +03:00
Ivan Kravets
a0626ac958 Hint user to delete file manually when exception is raised 2017-09-24 01:28:41 +03:00
Ivan Kravets
1fab2a5bec Bump version to 3.5.0a16 2017-09-24 00:33:35 +03:00
Ivan Kravets
d9ae367281 Improve archive unpacker 2017-09-24 00:33:12 +03:00
Ivan Kravets
837b040761 Bump version to 3.5.0a15 2017-09-22 01:22:41 +03:00
Ivan Kravets
71afea8d80 Expand user folder for lib_extra_dirs 2017-09-22 01:22:21 +03:00
Ivan Kravets
7c9989d999 Fix tests for "platform" command 2017-09-21 23:57:55 +03:00
Ivan Kravets
2e2b1fda9c Bump version to 3.5.0a14 2017-09-21 21:58:37 +03:00
Ivan Kravets
25da978fee Add support for "author" field in library.json manifest // Resolve #1055 2017-09-21 15:07:38 +03:00
Ivan Kravets
c677f24d8e Sync docs 2017-09-20 18:49:19 +03:00
Ivan Kravets
77fe1e8184 Use -ggdb3 instead of -ggdb by default 2017-09-18 14:06:16 +03:00
Ivan Kravets
377008ee08 New Microchip PIC32 boards 2017-09-17 02:21:59 +03:00
Ivan Kravets
22fb89e56a Fix tests 2017-09-17 02:18:35 +03:00
Ivan Kravets
68c56e042c Bump version to 3.5.0a13 2017-09-17 01:33:29 +03:00
Ivan Kravets
16c242e7fa Better parsing of F_CPU 2017-09-17 01:33:04 +03:00
Ivan Kravets
c9e1ae2548 Bump version to 3.5.0a12 2017-09-16 16:36:09 +03:00
Ivan Kravets
fc7f1c0728 Fix platforms, packages, and libraries updating behind proxy // Resolve #1061 2017-09-16 16:35:35 +03:00
Ivan Kravets
aa1c7609d2 Bump version to 3.5.0a11 2017-09-16 01:00:29 +03:00
Ivan Kravets
998f4ed6e6 Use VCS directly with "platform" option in configuration file 2017-09-16 00:57:36 +03:00
Ivan Kravets
33242a02ce Bump version to 3.5.0a10 2017-09-13 17:39:41 +03:00
Ivan Kravets
7963ce2cdd Do not warn about "custom_" options in configuration file 2017-09-13 17:38:42 +03:00
Ivan Kravets
b4159f9144 Docs: Update instruction how to install Espressif staging version 2017-09-09 23:03:15 +03:00
Ivan Kravets
674aa5c4d8 Decrease API cache timeouts 2017-09-09 20:57:25 +03:00
Ivan Kravets
e176e9922a Sync docs 2017-09-07 20:30:48 +03:00
Ivan Kravets
fd98aa0ff8 Fix PyLint warning 2017-09-06 20:57:56 +03:00
Ivan Kravets
f24e97e933 Skip missing package when checking for updates 2017-09-06 14:37:04 +03:00
Ivan Kravets
a934efa90a Sync docs 2017-09-06 02:04:06 +03:00
Ivan Kravets
a0cae2b1a6 Update docs for PIO IDE for Atom 2017-09-05 19:40:11 +03:00
Ivan Kravets
274c1a40a5 Bump version to 3.5.0a9 2017-09-05 14:42:56 +03:00
Ivan Kravets
059a408e95 Merge branch 'feature/prepend-python-pioplus' into develop 2017-09-05 14:42:02 +03:00
Ivan Kravets
f4c6919800 Don't verify SSL certificates for Python < 2.7.9 2017-09-05 14:23:49 +03:00
Ivan Kravets
7301b9e808 Prepend Python's binary folder before calling PIO Core+ 2017-09-05 14:13:00 +03:00
Ivan Kravets
113746dc74 Introduce "get_all_boards" API to PlatformManager 2017-09-03 22:40:00 +03:00
Ivan Kravets
95aaca5e02 Do not skip fixed packages with custom requirements 2017-09-03 20:58:48 +03:00
Ivan Kravets
ed6b196459 Bump version to 3.5.0a8 2017-09-02 18:33:56 +03:00
Ivan Kravets
34ed4678d7 Moved configuration code to a separate function, re-use it for PIO Core+ 2017-09-02 18:02:24 +03:00
Ivan Kravets
a127251107 Catch click's IOError for VSCode Terminal 2017-09-02 17:58:35 +03:00
Ivan Kravets
b55b80ecc8 Better catching of IOError for VSCode/Colorama 2017-09-02 16:23:24 +03:00
Ivan Kravets
68c75735f4 Bump version to 3.5.0a7 2017-09-02 15:39:53 +03:00
Ivan Kravets
9b66abf5ef Fix issue with "IOError" in VSCode when processing a project 2017-09-02 15:39:32 +03:00
Ivan Kravets
ccd650dda0 Fix invalid params order when installing PIO Core without PIP Cache 2017-09-02 14:43:08 +03:00
Ivan Kravets
3afac476e5 Docs: Remove Crisp chat 2017-09-01 20:27:24 +03:00
Ivan Kravets
8f7483cddf Update VSCode docs 2017-09-01 14:31:11 +03:00
Ivan Kravets
3b5c73b1a3 Bump version to 3.5.0a6 2017-09-01 00:39:17 +03:00
Ivan Kravets
04ec65df3e Minor fixes 2017-08-31 23:12:02 +03:00
Ivan Kravets
49244072c4 Improve fetching of logical disks 2017-08-31 20:56:25 +03:00
Ivan Kravets
3fe9ea1b01 Bump version to 3.5.0a5 2017-08-31 18:35:15 +03:00
Ivan Kravets
a55ccb2b28 Docs: Add CI for GitLab 2017-08-31 18:33:17 +03:00
Ivan Kravets
01a6ae656f Depend on new PIO Home 0.2.0 2017-08-31 18:32:52 +03:00
Ivan Kravets
2b7b852a68 Update VSCode docs 2017-08-29 14:16:30 +03:00
Ivan Kravets
b12c4d171e Sync docs 2017-08-26 16:51:27 +03:00
Ivan Kravets
3ce7104542 Fix broken links 2017-08-23 21:46:31 +03:00
Ivan Kravets
297c173418 Docs: Fix invalid hotkey for VSCode Tasks 2017-08-23 17:05:11 +03:00
Ivan Kravets
22733ea110 Docs: Minor fix 2017-08-22 19:52:12 +03:00
Ivan Kravets
845991f1d3 J-Link as debugger and uploader 2017-08-18 22:41:11 +03:00
Ivan Kravets
e6faed5dd9 Update history 2017-08-18 01:26:31 +03:00
Ivan Kravets
44909f9ce8 Switch to "develop" version of PIO Core Installer while it isn't merged to "master" // Resolve #1017 2017-08-18 01:23:15 +03:00
Ivan Kravets
4ff1d640b3 Minor fixes 2017-08-17 23:55:42 +03:00
Ivan Kravets
743de42484 Add "test_ignore" to known options list 2017-08-17 17:18:23 +03:00
Ivan Kravets
04c381d440 Sync docs and examples 2017-08-17 15:33:24 +03:00
Ivan Kravets
bda4b5d264 Docs: Create Advanced Scripting section for platformio.ini 2017-08-16 15:33:36 +03:00
Ivan Kravets
3f13821c43 Update history 2017-08-16 15:12:45 +03:00
Ivan Kravets
e60e076d16 Better explanation about lib_extra_dirs 2017-08-16 15:10:56 +03:00
Ivan Kravets
541993c06b Implement throttle for API calls 2017-08-15 22:57:20 +03:00
Ivan Kravets
3d5114655f Docs: Embedded Testing with PlatformIO - Part 2 2017-08-15 19:33:35 +03:00
Ivan Kravets
3229933ed0 Minor improvements 2017-08-14 23:58:12 +03:00
Ivan Kravets
d7d66fd4a6 Improve fetching logical disks 2017-08-14 15:27:12 +03:00
Ivan Kravets
4a7cd5be6a Update docs for VSCode 2017-08-13 00:08:49 +03:00
Ivan Kravets
fd56e5cec9 Docs: New boards, typo fixes 2017-08-12 19:16:36 +03:00
Ivan Kravets
2cb7fcca9a Bump version to 3.5.0a4 2017-08-10 16:04:51 +03:00
Ivan Kravets
9b2e7bf927 Fix broken installer script 2017-08-09 23:43:31 +03:00
Ivan Kravets
d913fb5600 Call pip as module 2017-08-09 23:02:33 +03:00
Ivan Kravets
6bf42f90ed Docs: Short titles in menu 2017-08-09 17:59:28 +03:00
Ivan Kravets
51ff2b65f4 Bump version to 3.5.0a3 2017-08-08 14:44:25 +03:00
Ivan Kravets
c05e1f7c9b Ignore missed packages in new development platform 2017-08-07 19:33:13 +03:00
Ivan Kravets
4700419590 Bump version to 3.5.0a2 2017-08-07 17:38:21 +03:00
Ivan Kravets
5f320cc5c8 Introduce PIO Home 2017-08-07 17:38:05 +03:00
Ivan Kravets
351aaa3974 Sync submodules 2017-08-05 19:19:43 +03:00
Ivan Kravets
327d42d02d Sync docs 2017-08-03 16:56:25 +03:00
Ivan Kravets
bbcc79208c Bump version to 3.5.0a1 2017-08-02 22:17:21 +03:00
Ivan Kravets
578dfa40aa Ignore only C/C++ properties for VSCode extension 2017-08-02 22:16:41 +03:00
Ivan Kravets
a43c6c6b9e Merge branch 'release/v3.4.1' into develop 2017-08-02 16:51:46 +03:00
Ivan Kravets
5f99dd620d Merge branch 'release/v3.4.1' 2017-08-02 16:51:45 +03:00
Ivan Kravets
e959710d6d Version bump to 3.4.1 (issues #891, #982, #993, #1000, #1001, #1003 ) 2017-08-02 16:51:19 +03:00
Ivan Kravets
f0f1d0a61a Bump version to 3.4.1rc1 2017-08-02 01:08:07 +03:00
Ivan Kravets
7f63928d21 New lib_archive option to control library archiving and linking behaviour // Resolve #993 2017-08-02 01:06:06 +03:00
Ivan Kravets
b929e452b0 Add "inc" folder automatically to CPPPATH when "src" is available (works for project and library) // Resolve #1003 2017-08-01 14:45:42 +03:00
Ivan Kravets
b4f927a84d Sync docs: add new boards 2017-08-01 01:45:48 +03:00
Ivan Kravets
fe4a72edd0 Bump version to 3.4.1b1 2017-08-01 00:35:16 +03:00
Ivan Kravets
5f4a10086f Merge branch 'feature/samba-due-issue' into develop 2017-08-01 00:34:01 +03:00
Ivan Kravets
d5baa153a5 Fix an issue when can not upload firmware to SAM-BA based board (Due) 2017-08-01 00:33:51 +03:00
Ivan Kravets
3f96530c32 Sync docs: Add example how to build a custom HEX from ELF 2017-08-01 00:21:57 +03:00
Ivan Kravets
861659e890 Wait for 400ms after touching serial port (fix SAM-BA issue) 2017-08-01 00:12:05 +03:00
Ivan Kravets
cd5b88dd1f Automatically update PIO Core packages when it is possible 2017-07-31 19:38:42 +03:00
Ivan Kravets
06b49ec3ec Some improvements 2017-07-31 19:05:03 +03:00
Ivan Kravets
4944731dc6 Sync docs: Split build flags into multiple lines 2017-07-31 18:25:57 +03:00
Ivan Kravets
5d31d6825b Export board's connectivity 2017-07-28 00:56:02 +03:00
Ivan Kravets
0099b037f3 Refactor docs for Unit Testing 2017-07-27 19:07:46 +03:00
Ivan Kravets
9994ed8b5e Check context arguments before comparison // Resolve #1000 2017-07-27 15:50:54 +03:00
Ivan Kravets
954357bdd2 Update links to ESP8266 docs 2017-07-25 20:00:27 +03:00
Ivan Kravets
c7f5629f82 Fix links in docs 2017-07-25 19:19:52 +03:00
Ivan Kravets
dfe769c92e Add support for Controllino PLC 2017-07-25 13:22:55 +03:00
Ivan Kravets
53017b24d1 VSCode configuration 2017-07-24 17:37:16 +03:00
Ivan Kravets
f13537cabb YAPF 2017-07-24 17:35:41 +03:00
Ivan Kravets
16ea8f29a1 Update docs with new boards 2017-07-21 22:07:11 +03:00
Ivan Kravets
e708b74507 Document Task Runner for VSCode 2017-07-20 13:36:13 +03:00
Ivan Kravets
f61c7f6030 Sync examples 2017-07-19 13:53:58 +03:00
Ivan Kravets
1260859c42 Sync examples 2017-07-18 23:15:09 +03:00
Ivan Kravets
ec9324d77f Sync examples with mbed 5.5 2017-07-18 22:47:39 +03:00
Ivan Kravets
d66b1780ce Bump version to 3.4.1a6 2017-07-17 13:13:42 +03:00
Ivan Kravets
35cab82605 Remove static tasks for VSCode 2017-07-16 21:28:54 +03:00
Ivan Kravets
12222c0f42 Improve docs for advanced scripting 2017-07-14 23:56:45 +03:00
Ivan Kravets
12ec11c7e2 Sync docs 2017-07-14 14:22:38 +03:00
Ivan Kravets
c926ca389c Sync examples 2017-07-14 14:05:38 +03:00
Ivan Kravets
e01c0a1eff Sync docs 2017-07-14 02:10:12 +03:00
Ivan Kravets
8008f87ffa Manage project libraries with "--storage-dir" option 2017-07-13 00:51:04 +03:00
Ivan Kravets
91d3a8ffad Improve docs for PIO Debugger 2017-07-10 01:28:19 +03:00
Ivan Kravets
309d3a45d6 New "forceUploadAndMonitor" option for PlatformIO IDE for VSCode 2017-07-05 21:22:33 +03:00
Ivan Kravets
ebe0d41b77 Bump version to 3.4.1a5 2017-07-05 20:38:55 +03:00
Ivan Kravets
6403cf0c8b New task "PlatformIO: Monitor" for VSCode 2017-07-05 20:38:28 +03:00
Ivan Kravets
7964aed453 New boards by RushUp 2017-07-04 19:30:39 +03:00
Ivan Kravets
97866cf44d Correct default values for auto_update_libraries/platforms 2017-07-04 14:24:40 +03:00
Ivan Kravets
4eb92ff2e3 Refactor pioNav for docs 2017-07-04 01:17:56 +03:00
Ivan Kravets
0e8fb1ba83 Bump version to 3.4.1a4 2017-07-03 13:36:51 +03:00
Ivan Kravets
8741f37831 Minor improvements 2017-07-03 13:35:39 +03:00
Ivan Kravets
68ccabda56 Update history 2017-07-01 22:17:37 +03:00
Ivan Kravets
a0cd0bc189 Fix an issue with a custom unit testing transport 2017-07-01 22:00:25 +03:00
Ivan Kravets
aadb186054 Escape spaces in task command for VSCode Task Runner 2017-07-01 21:54:04 +03:00
Ivan Kravets
2c232f2f3f Standalone IDEs Integration 2017-07-01 20:34:34 +03:00
Ivan Kravets
f85c894b52 Move Pricing before Docs 2017-07-01 20:24:03 +03:00
Ivan Kravets
fb432da26b Bump version to 3.4.1a3 2017-07-01 19:24:41 +03:00
Ivan Kravets
e8da7b4673 Depend on PIO Core Plus v0.9.1 2017-07-01 19:24:10 +03:00
Ivan Kravets
53906c49cb Refactor PIO Account docs 2017-07-01 14:16:26 +03:00
Ivan Kravets
b774bd6a55 Improve platformio.ini example 2017-06-30 22:07:04 +03:00
Ivan Kravets
cefc2fa21c Cosmetic improvements 2017-06-30 01:35:54 +03:00
Ivan Kravets
546993b12c Fix PyLint Warning 2017-06-30 01:23:52 +03:00
Ivan Kravets
08ab80187c Mode PIO Core Dev installation on upper level 2017-06-30 00:24:35 +03:00
Ivan Kravets
bf48643865 Bump version to 3.4.1a2 2017-06-30 00:20:27 +03:00
Ivan Kravets
35a91dbd57 Pre/Post extra scripting for advanced control of PIO Build System // Resolve #891 2017-06-30 00:15:49 +03:00
Ivan Kravets
7a56ec614c Added monitor_* options to white-list for Project Configuration File “platformio.ini” // Resolve #982 2017-06-29 21:27:38 +03:00
Ivan Kravets
7d2728845e Use a root of library when filtering source code using library.json and srcFilter field 2017-06-29 21:23:06 +03:00
Ivan Kravets
94a834ecc4 Use a root of library when filtering source code using library.json and srcFilter field 2017-06-29 21:22:44 +03:00
Ivan Kravets
46774466db Fix contact url 2017-06-29 19:32:38 +03:00
Ivan Kravets
671eff5012 Library Manager in PlatformIO IDE for Atom 2017-06-29 01:13:20 +03:00
Ivan Kravets
a3e7535db5 Simplify index page of docs 2017-06-28 19:33:53 +03:00
Ivan Kravets
f7ee7e2e8c Add Changelog for PIO IDE for Atom and VSCode 2017-06-28 18:29:56 +03:00
Ivan Kravets
7a04061d6d Typo fix 2017-06-28 14:05:28 +03:00
Ivan Kravets
7827994791 Do not ask for board ID when initialize project for desktop platform 2017-06-28 01:38:20 +03:00
Ivan Kravets
dae290ad2d Bump version to 3.4.1a1 2017-06-28 01:01:27 +03:00
Ivan Kravets
61fc7d8589 Fix issue when can not load broken PIO Core state 2017-06-28 01:01:03 +03:00
Ivan Kravets
0deb623ad5 Add link to PIO IDE packages 2017-06-27 01:56:03 +03:00
Ivan Kravets
ef8aeeb5f0 Add support for Adafruit Feather M0 Express & Metro M0 Expresss boards 2017-06-27 01:17:34 +03:00
Ivan Kravets
2695c985a4 Remove platforms related history from the Core 2017-06-27 01:03:26 +03:00
Ivan Kravets
fcfdc5c206 Sync docs 2017-06-27 00:05:23 +03:00
Ivan Kravets
3a96b460df Merge branch 'release/v3.4.0' 2017-06-26 19:58:30 +03:00
Ivan Kravets
78616bf06f Merge branch 'release/v3.4.0' into develop 2017-06-26 19:58:30 +03:00
Ivan Kravets
43ebff2a84 Bump version to 3.4.0 2017-06-26 19:58:21 +03:00
Ivan Kravets
7afbbadef1 Fix URL for PIO Unified Debugger 2017-06-26 19:53:51 +03:00
Ivan Kravets
e26372075d Update README 2017-06-26 19:51:57 +03:00
Ivan Kravets
d0f6c69135 Minor cleanups 2017-06-26 19:18:41 +03:00
Ivan Kravets
b1780c54db Depend on PIO Core+ v0.9 2017-06-26 19:16:44 +03:00
Ivan Kravets
7cc51035aa Add "Upload and Monitor" task for VSCode 2017-06-26 18:13:09 +03:00
Ivan Kravets
820efaeb21 Switch to stable PlatformIO 2017-06-26 18:04:40 +03:00
Ivan Kravets
1ee53137ec Update udev rules guide 2017-06-26 17:51:11 +03:00
Ivan Kravets
01afcb1c9e New monitor target which allows to launch Serial Monitor automatically after successful “build” or “upload” operations // Resolve #788 2017-06-26 17:14:38 +03:00
Ivan Kravets
574bbd1692 Update custom J-Link debug configuration 2017-06-24 19:45:47 +03:00
Ivan Kravets
0c06982d75 Filter PIO Unit Testing tests using a new test_filter option in "platformio.ini" or platformio test –filter command // Resolve #934 2017-06-24 18:40:30 +03:00
Ivan Kravets
8f4c09a600 Better escaping for package file names 2017-06-24 16:07:40 +03:00
Ivan Kravets
1c5b08de59 Fixed cloning a package (library) from a private Git repository with custom user name and SSH port // Resolve #925 2017-06-24 15:45:48 +03:00
Ivan Kravets
d8a0272bec Escape non-valid file name characters when installing a new package (library) // Resolve #985 2017-06-24 15:20:33 +03:00
Ivan Kravets
f6960a0f98 Update docs for Segger J-Link Tool 2017-06-24 14:26:14 +03:00
Ivan Kravets
2849d78ece Add requirements for Python and PIO Core+ 2017-06-24 02:13:03 +03:00
Ivan Kravets
954ff8dca0 Bump version to 3.4.0rc1 2017-06-24 01:32:05 +03:00
Ivan Kravets
93db0fa064 Improve WaitForNewSerialPort for atmega32u4 based boards 2017-06-24 01:29:53 +03:00
Ivan Kravets
839fe8e02f Integrate PIO Unified Debugger with Sublime Text 2017-06-24 00:06:58 +03:00
Ivan Kravets
60b668342f Integrate PIO Unified Debugger with Eclipse 2017-06-23 22:00:58 +03:00
Ivan Kravets
178cf35a43 Improve docs for CLion 2017-06-23 16:06:22 +03:00
Ivan Kravets
adf30f3640 Reorganize Tutorials and Demo for PIO Core 2017-06-23 15:38:24 +03:00
Ivan Kravets
2793059c70 Refactor library manager navigation 2017-06-23 14:48:01 +03:00
Ivan Kravets
6e7de3a01c Sort platforms and frameworks by name 2017-06-23 14:08:46 +03:00
Ivan Kravets
77a14f3c7b Note about "dialout" group for Ubuntu/Debian users; udev rule for USBasp V2.0 // Resolve #979 2017-06-23 13:53:36 +03:00
Ivan Kravets
a9543037b2 Add default environment to each example 2017-06-23 00:14:16 +03:00
Ivan Kravets
902b8e0a52 Add example with using pyOCD for CMSIS-DAP based boards 2017-06-22 23:23:44 +03:00
Ivan Kravets
613d92c32f Add source code to STM32Cube tutorial 2017-06-22 14:23:09 +03:00
Ivan Kravets
ebf9607c99 Cosmetic changes 2017-06-22 01:26:24 +03:00
Ivan Kravets
89dc767a1c Introduce Tutorials 2017-06-22 01:14:23 +03:00
Ivan Kravets
cb54910529 Add configuration section for Unit Testing 2017-06-21 01:03:09 +03:00
Ivan Kravets
f78837d467 Custom transport for Unit Testing 2017-06-20 18:48:52 +03:00
Ivan Kravets
6ad1ce5239 Improve docs for Platforms and Framworks 2017-06-20 16:57:47 +03:00
Ivan Kravets
707384aeed Cosmetic updates for "Contents" 2017-06-20 15:41:43 +03:00
Ivan Kravets
e3b976e189 Split docs for Project Configuration File into multiple subpages 2017-06-20 15:24:20 +03:00
Ivan Kravets
8c7fa61f62 Fix broken image for VSCode installation 2017-06-19 11:39:31 +03:00
Ivan Kravets
0bdb877fe1 Temporary use development version of PIO Core 3.4 2017-06-14 19:55:44 +03:00
Ivan Kravets
fddcc3c965 Fix SSL SNI issue for Python < 2.7.9 2017-06-14 19:41:36 +03:00
Ivan Kravets
8dde7e2efb Cosmetic changes to icons 2017-06-14 19:03:52 +03:00
Ivan Kravets
2f40f32988 Remove Project IDE examples 2017-06-14 14:34:15 +03:00
Ivan Kravets
bb0063d5cf Fix url for logo in docs 2017-06-13 21:07:58 +03:00
Ivan Kravets
dcdd552856 Fix tests after examples reorganization 2017-06-13 21:01:23 +03:00
Ivan Kravets
c4f23be1dc Fix tests after examples reorganization 2017-06-13 20:39:21 +03:00
Ivan Kravets
571fe4dc04 Reorganize examples 2017-06-13 16:25:55 +03:00
Ivan Kravets
1827223b1c Update docs for Atom/VSCode; other improvements 2017-06-11 01:57:58 +03:00
Ivan Kravets
b2c37311b9 Minor updates 2017-06-09 11:45:42 +03:00
Ivan Kravets
70e4181b17 Bump version to 3.4.0b12 2017-06-09 01:40:50 +03:00
Ivan Kravets
e8d7aae53c Use Terminal Runner for VSCode 2017-06-09 01:40:23 +03:00
Ivan Kravets
41312ef86d Bump version to 3.4.0b11 2017-06-07 02:33:37 +03:00
Ivan Kravets
b04fc327c0 Configure Serial Port Monitor from platformio.ini // Resolve #787 2017-06-07 02:32:25 +03:00
Ivan Kravets
a37eb9868f Skip broken PySerial 3.3 2017-06-06 21:06:05 +03:00
Ivan Kravets
4d1a135d76 Apply YAPF 2017-06-05 16:05:05 +03:00
Ivan Kravets
45e75f7473 Copyright (c) 2014-present PlatformIO <contact@platformio.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
2017-06-05 16:02:39 +03:00
Ivan Kravets
8127e8b2ff Update docs for VSCode 2017-06-05 01:46:31 +03:00
Ivan Kravets
d30b8fffa1 Bump version to 3.4.0b10 2017-06-02 02:34:52 +03:00
Ivan Kravets
52f0e556e2 Do not overwrite workspace settings for VSCode 2017-06-02 02:34:10 +03:00
Ivan Kravets
0376a92ebb FAQ: UnicodeDecodeError: Non-ASCII characters found in build environment 2017-06-01 21:35:26 +03:00
Ivan Kravets
5da5bd43e4 Ensure that package exists 2017-06-01 19:53:05 +03:00
Ivan Kravets
e2811a4a28 Check PIO download storage for "Internet ON" 2017-06-01 19:47:50 +03:00
Ivan Kravets
a53a38b5dd FAQ: ‘platformio’ is not recognized as an internal or external command 2017-06-01 19:21:32 +03:00
Ivan Kravets
6502cf5552 Fix issue with INO to CPP converter and multiline strings 2017-06-01 15:14:52 +03:00
Ivan Kravets
aed6d9a91b Nordic nRF52 & Maxim Integrated development platforms 2017-05-31 22:21:25 +03:00
Ivan Kravets
ff6353a1ea VSCoe task as external program 2017-05-31 00:56:05 +03:00
Ivan Kravets
b6f9220f3f Minor improvements to docs 2017-05-30 22:11:09 +03:00
Ivan Kravets
0c9e6ef577 Close serial port after verification 2017-05-30 19:42:32 +03:00
Ivan Kravets
198dadc209 Verify that serial port is ready for connection before uploading 2017-05-30 14:06:25 +03:00
Ivan Kravets
f6a3d9f474 Add link to PIO IDE for VSCode extension in marketplace 2017-05-29 20:23:12 +03:00
Ivan Kravets
232a735dde Improve VSCode docs 2017-05-29 20:17:22 +03:00
Ivan Kravets
2ea9af8151 Update VSCode main picture 2017-05-29 19:00:18 +03:00
Ivan Kravets
1e14792ea0 Update docs for VSCode 2017-05-29 15:59:02 +03:00
Ivan Kravets
908f0ba833 Bump 3.4.0b9 2017-05-29 15:41:56 +03:00
Ivan Kravets
466d1b1c14 Remove C_CPP settings from VSCode 2017-05-29 13:07:25 +03:00
Ivan Kravets
68d7630b44 Better path escaping 2017-05-28 13:12:59 +03:00
Ivan Kravets
641c981c4b Add VSCode to PlatformIO IDE section 2017-05-28 02:59:43 +03:00
Ivan Kravets
50ec9e48bf Specify particular platform for c_cpp configuration 2017-05-28 02:34:32 +03:00
Ivan Kravets
801ac28c11 Update docs for VSCode 2017-05-28 02:24:14 +03:00
Ivan Kravets
7637e1ad69 Normalize Windows PATHs for VSCode 2017-05-28 02:06:58 +03:00
Ivan Kravets
fa24d61680 Project generator for VSCode IDE // Issue #619 Resolve #960 2017-05-28 00:30:23 +03:00
Ivan Kravets
1bd159e60d Notify about multiple installations of PIO Core // Resolve #961 2017-05-27 18:43:56 +03:00
Ivan Kravets
959dab4dc2 Remove requests.packages.urllib3 tracks 2017-05-27 13:20:54 +03:00
Ivan Kravets
20086b0816 Note about Clang 3.9 2017-05-27 13:14:54 +03:00
Ivan Kravets
e21b8a841b Merge branch 'hotfix/v3.3.1' into develop
# Conflicts:
#	HISTORY.rst
#	platformio/__init__.py
2017-05-27 12:59:06 +03:00
Ivan Kravets
a045469584 Merge branch 'hotfix/v3.3.1' 2017-05-27 12:56:42 +03:00
Ivan Kravets
228db871b4 Bump version to 3.3.1 2017-05-27 12:56:14 +03:00
Ivan Kravets
49b2e7303e * Hotfix for recently updated Python Requests package (2.16.0) 2017-05-27 12:55:46 +03:00
Ivan Kravets
074e262e66 Use BinTray when checking Internet connection // Resolve #968 2017-05-27 02:35:48 +03:00
Ivan Kravets
021f0323cb Bump version to 3.4.0b5 2017-05-27 01:21:56 +03:00
Ivan Kravets
bb55e5bc58 Add chat button to docs 2017-05-27 01:20:32 +03:00
Ivan Kravets
5d6d49f7e1 Implement “debug_load_cmd” 2017-05-27 01:10:07 +03:00
Ivan Kravets
548d0692ba Bump version to 3.4.0b4 2017-05-26 01:25:46 +03:00
Ivan Kravets
5d87fc3461 Project generator for VIM 2017-05-26 01:25:03 +03:00
Ivan Kravets
0a254c52c0 Updated mbed framework to 5.4.5/142 2017-05-26 01:24:23 +03:00
Ivan Kravets
eafa586fdc Implement a delete functionality for State & ContentCache 2017-05-26 00:45:56 +03:00
Ivan Kravets
1e36731076 Update top navigation 2017-05-24 17:24:19 +03:00
Ivan Kravets
d5d3bb19de Typo fix 2017-05-22 21:14:05 +03:00
Ivan Kravets
d367f726ba New boards 2017-05-21 01:54:47 +03:00
Ivan Kravets
cb241b703a Preload debugging firmware before debug session 2017-05-20 02:17:00 +03:00
Ivan Kravets
c02d180e11 Update custom J-Link GDB example 2017-05-20 01:18:49 +03:00
Ivan Kravets
90fc207bf2 Add missed “debug_tool” options 2017-05-18 21:59:42 +03:00
Ivan Kravets
41f1806009 Bump version to 3.4.0b3 2017-05-18 21:52:22 +03:00
Ivan Kravets
6941b822b6 Custom debugging configuration 2017-05-18 21:51:38 +03:00
Ivan Kravets
5eb2fc67e5 Skip network driver when searching for mbed disk 2017-05-11 14:49:44 +03:00
Ivan Kravets
c14ba16297 Fix linke to images 2017-05-10 02:06:09 +03:00
Ivan Kravets
861e68ab3c Depend on a new PIO Core+ 2017-05-08 16:39:06 +03:00
Ivan Kravets
4beecd62a8 Update PIO IDE main picture with Unified Debugger 2017-05-07 21:00:21 +03:00
Ivan Kravets
1e2e409e8d Add info about PIO Unified Debugger 2017-05-07 20:48:38 +03:00
Ivan Kravets
90cefe4809 Bump version to 3.4.0b2 2017-05-07 00:43:39 +03:00
Ivan Kravets
866b3e915a Add link to PIO Unified Debugger to PIO Account page 2017-05-06 14:43:08 +03:00
Ivan Kravets
2827e7dc3a Fixed issue when debugger fails with a space in path to a project // Resolve #954 2017-05-05 19:45:54 +03:00
Ivan Kravets
a8da7dcfd3 Fix PyLint warning 2017-05-05 13:02:20 +03:00
Ivan Kravets
70df106f57 Bump version to 3.4.0b1 2017-05-04 21:02:59 +03:00
Ivan Kravets
d37c6fcdce Use root directory for PIO Home when path contains non-ascii characters // Resolve #951 Resolve #952 2017-05-04 21:02:32 +03:00
Ivan Kravets
f3f8374253 A few updates for PIO Unified Debugger and PIO Account 2017-05-04 19:06:38 +03:00
Ivan Kravets
a5973043b1 Allow to change account password with passed options 2017-05-04 12:31:03 +03:00
Ivan Kravets
d3d87a0bfb Update history 2017-05-04 01:17:28 +03:00
Ivan Kravets
c69269ea3d Offline mode for PIO Account Show command 2017-05-04 00:36:52 +03:00
Ivan Kravets
30ff491a34 Remove extra delay before waiting for serial port 2017-05-03 20:33:37 +03:00
Ivan Kravets
56d4d545c1 Don’t raise error when cache item has been deleted from another thread 2017-05-01 01:33:51 +03:00
Ivan Kravets
884859324d User Guide (CLI) for PIO Unified Debugger 2017-04-30 01:52:06 +03:00
Ivan Kravets
7d92bcdf58 Debugging tools/probes 2017-04-30 01:14:57 +03:00
Ivan Kravets
ba545bfa29 Docs for “debug_tool” option 2017-04-29 02:16:11 +03:00
Ivan Kravets
7c31a9c9b8 Some correction for debug options 2017-04-29 01:58:35 +03:00
Ivan Kravets
13cd09d161 PIO Unified Debugger 2017-04-29 01:42:23 +03:00
Ivan Kravets
d55f28e3d7 Bump version to 3.4.0a8 2017-04-28 19:00:12 +03:00
Ivan Kravets
1e5df747cd Handle `env_default` in "platformio.ini" when re-initializing a project // Resolve #950 2017-04-28 18:10:37 +03:00
Ivan Kravets
46e82e08ce Bump version to 3.4.0a7 2017-04-28 01:39:29 +03:00
Ivan Kravets
9658bcdb73 The Unified Debugger 2017-04-28 01:38:25 +03:00
Ivan Kravets
81c96808b6 Don’t override LED_BUILTIN with macro; sometime it is defined as static variable // Resolve #933 2017-04-27 20:53:54 +03:00
Ivan Kravets
969e72c4a4 Fix issue when Library Dependency Finder (LDF) does not handle custom “src_dir” // Resolve #942 2017-04-27 20:01:17 +03:00
Ivan Kravets
3d2df9f9a9 Fix linter error "unity.h does not exist" for Unit Testing // Resolve #947 2017-04-27 18:39:57 +03:00
Ivan Kravets
384c3c45e4 Add “boards_dir” to known [platformio] option // Resolve #949 2017-04-27 18:30:40 +03:00
Ivan Kravets
6b0467ead5 Use internal context to fetch IDE data 2017-04-27 18:28:50 +03:00
Ivan Kravets
1344ab5bb6 Typo fix with account register command 2017-04-25 19:53:21 +03:00
Ivan Kravets
ae3aeeca69 Update history 2017-04-24 16:25:01 +03:00
Ivan Kravets
e976c617f7 Note about LDF and Dependency Finder Mode 2017-04-24 13:35:08 +03:00
Ivan Kravets
a63592894c Bump 3.4.0a6 2017-04-15 21:28:23 +03:00
Ivan Kravets
bd4636c98f Fix installing package from archive 2017-04-15 21:28:01 +03:00
Ivan Kravets
dff3c7d093 Bump 3.4.0a5 2017-04-15 21:02:47 +03:00
Ivan Kravets
d0f2aa38ca Fixed infinite dependency installing when repository consists of multiple libraries // Resolve #935 2017-04-15 20:32:11 +03:00
Ivan Kravets
abb2fb7045 Add support for “.*cc” extension // Resolve #939 2017-04-15 16:51:15 +03:00
Ivan Kravets
44be1dc1c7 Some fixes for new PyLint 2017-04-15 16:36:59 +03:00
Ivan Kravets
64ed76762e Update Git-submodules for development platforms and libraries which were installed from repository 2017-04-15 16:19:41 +03:00
Ivan Kravets
f194a1a572 Fix debug port auto-detecting 2017-04-15 12:55:34 +03:00
Ivan Kravets
c7249aadf3 Generate “SRC_FILTER” on-the-fly for a custom library 2017-04-14 23:16:52 +03:00
Ivan Kravets
d16fd73b05 Better detecting of mbed-enabled media disk 2017-04-14 18:05:15 +03:00
Ivan Kravets
59b65ba668 Check mbed html page before uploading 2017-04-13 20:02:08 +03:00
Ivan Kravets
ba17c57026 Update history 2017-04-12 20:25:43 +03:00
Ivan Kravets
b5217682fd Fix multi line items for lib_deps // Resolve #931 2017-04-02 21:58:38 +03:00
Ivan Kravets
a60792d20e Add temporary link to community forum for debugging discussion 2017-04-01 23:26:02 +03:00
Ivan Kravets
f4c9d09020 Typo fix 2017-04-01 19:19:37 +03:00
Ivan Kravets
97185fffb8 Bump 3.4.0a3 2017-04-01 15:40:52 +03:00
Ivan Kravets
48ed0a508c Correct path in debug configuration 2017-04-01 14:51:57 +03:00
Ivan Kravets
73f4bce99a Rename “debug_link” option to “debug_tool” 2017-04-01 14:35:55 +03:00
Ivan Kravets
8055c84087 Add OpenOCD dev rules 2017-04-01 01:13:28 +03:00
Ivan Kravets
7a8aff47e9 Be silent when upper level asks 2017-03-31 20:20:07 +03:00
Ivan Kravets
62e755ce60 Quick fix when board doesn’t have debug configuration 2017-03-31 19:50:26 +03:00
Ivan Kravets
75e1173f80 Initial support for debugging // Resolve #514 2017-03-31 18:55:19 +03:00
Ivan Kravets
fe7c93d004 Multi-line support for the different options in “platformio.ini” // Resolve #889 2017-03-29 17:49:01 +03:00
Ivan Kravets
d77dea5fe1 Describe how to remove registry records by Atom on Windows 2017-03-28 21:47:54 +03:00
Ivan Kravets
df226df87d Merge branch 'release/v3.3.0' 2017-03-27 14:39:43 +03:00
Ivan Kravets
dca2e10570 Merge branch 'release/v3.3.0' into develop 2017-03-27 14:39:43 +03:00
Ivan Kravets
aedbda8d7a Bump version to 3.3.0 2017-03-27 14:39:20 +03:00
Ivan Kravets
3721a8f039 Move Python installation to FAQ 2017-03-27 14:33:51 +03:00
Ivan Kravets
e736b08a49 Allow to update only the PIO Core packages 2017-03-27 14:14:29 +03:00
Ivan Kravets
b7a61f12e8 Don’t use global install history when check circle dependencies 2017-03-26 21:32:54 +03:00
Ivan Kravets
ac245ad0a4 Handle circle dependencies for package // Resolve #919 2017-03-26 21:04:16 +03:00
Ivan Kravets
64eaa1516b Add information about VSCode integration // Resolve #619 2017-03-26 20:45:08 +03:00
Ivan Kravets
4e5f34ec19 Allow installing package by framework name 2017-03-26 19:43:00 +03:00
Ivan Kravets
bb124ce681 Update history 2017-03-26 00:43:11 +02:00
Ivan Kravets
d3679671ac Increase exception description length for report 2017-03-23 22:11:48 +02:00
Ivan Kravets
571a52b432 Move core packages to the one place; Bump to 3.0.0a17 2017-03-11 23:28:55 +02:00
Ivan Kravets
a20434ace5 New boards: Generic ATTiny2313 and ATTiny4313 2017-03-11 13:41:25 +02:00
Ivan Kravets
31715e937b Check that PIO Plus could be updated before do update 2017-03-11 13:12:41 +02:00
Ivan Kravets
f39cda041c Fix issue when check updates for VCS repository // Resolve #917 2017-03-11 13:11:58 +02:00
Ivan Kravets
09e15f6d2a Fix Upgrade for 3.0.0b1 2017-03-10 01:18:33 +02:00
Ivan Kravets
23ac02bea1 Note about Antivirus when can’t install a package // Resolve #916 2017-03-10 00:38:04 +02:00
Ivan Kravets
2cd3592a49 Fix issue with an update operation for package manager 2017-03-10 00:29:22 +02:00
Ivan Kravets
f8b2902c91 Don’t update development platforms after PIO upgrade 2017-03-09 23:24:50 +02:00
Ivan Kravets
36d6421312 Bump version to 3.3.0a14 2017-03-08 20:00:00 +02:00
Ivan Kravets
8c283dc8a0 Inform about broken manifest while loading it // Resolve #899 2017-03-08 19:55:56 +02:00
Ivan Kravets
d994da9d53 Check outdated packages for development platform 2017-03-08 19:52:11 +02:00
Ivan Kravets
2fe4b7c0ec Change manifests order for Library Manager 2017-03-08 17:33:25 +02:00
Ivan Kravets
58942c3f38 Significantly improve Package Manager // Resolve #913
* Handle dependencies when installing non-registry package/library (VCS, archive, local folder)
2017-03-08 17:24:58 +02:00
Ivan Kravets
41cea76603 New section for “platformio.ini” Dynamic build flag 2017-03-06 17:45:38 +02:00
Ivan Kravets
a235c532e4 Add example how to get VCS revision "on-the-fly" for the Windows // Resolve #901 2017-03-06 17:08:05 +02:00
Ivan Kravets
5e5c9d3bcf Generate valid directory name when move package 2017-03-05 00:14:05 +02:00
Ivan Kravets
93ce65b28b Unfix installed package when the latest version is uninstalled 2017-03-04 18:37:03 +02:00
Ivan Kravets
3c10e84def Skip projects examples from test on macOS 2017-03-04 17:36:21 +02:00
Ivan Kravets
20d6b2ebbb Fix duplicate explicit target name: "issue #865 in history 2017-03-03 23:40:35 +02:00
Ivan Kravets
cb927c276c Improve JSON support for pio platform sub-commands 2017-03-03 23:29:17 +02:00
Ivan Kravets
3adc3eace3 Switch to new Packages API 2017-03-02 17:09:32 +02:00
Ivan Kravets
fe1846c2e1 YAPF formatting 2017-03-02 17:09:22 +02:00
Ivan Kravets
cfd1f03023 Switch to new Packages API 2017-03-02 16:11:23 +02:00
Ivan Kravets
ba750f0eee Add warning about “.gcc-flags.json” file and custom flags 2017-02-28 19:25:48 +02:00
Ivan Kravets
a119fdfc48 temporary use “develop” version of script 2017-02-28 00:26:28 +02:00
Ivan Kravets
2e6d66fcd4 Sort boards by name 2017-02-26 23:47:04 +02:00
Ivan Kravets
c0c8368905 Code cleanup 2017-02-26 19:37:26 +02:00
Ivan Kravets
8f79d865aa List supported frameworks, SDKs with a new pio platform frameworks command 2017-02-26 17:53:41 +02:00
Ivan Kravets
8f5e23ae95 Update PIO IDE installation guide 2017-02-25 21:28:35 +02:00
Ivan Kravets
30f698ddf0 Typo fix in RST 2017-02-25 14:04:09 +02:00
Ivan Kravets
d4cd3dd600 A few notes about PIO remote Cloud IDE integration 2017-02-25 13:12:52 +02:00
Ivan Kravets
8e0ad02249 New article by Bastiaan Vise 2017-02-23 19:00:26 +02:00
Ivan Kravets
2f6c594ee6 Fix PIO IDE uninstallation steps for macOS 2017-02-23 16:49:26 +02:00
Ivan Kravets
570b72f4c2 Remove PlatformIO title from navbar 2017-02-22 23:41:36 +02:00
Ivan Kravets
024d830621 New ESP IDF examples: BLE, Coap Server, Peripherals UART, Storage SDCard 2017-02-22 16:58:28 +02:00
Ivan Kravets
a817ec19ed Improve docs for PIO Remote 2017-02-22 15:50:23 +02:00
Ivan Kravets
bcb265b42d Update history 2017-02-21 11:54:04 +02:00
Ivan Kravets
2467d5a5d0 Do not overwrite project configuration variables when system environment variables are set 2017-02-18 18:28:05 +02:00
Ivan Kravets
c098b8bbca Fix incorrect example with library dependencies using GIT url and branch/tag/commit // Resolve #902 2017-02-18 17:38:45 +02:00
Ivan Kravets
ea6bf48b3d Fix Shippable link in a history 2017-02-18 15:15:36 +02:00
Ivan Kravets
6ede03f880 Explain how to uninstall Atom with PlatformIO IDE 2017-02-10 12:50:42 +02:00
Ivan Kravets
e180f1cf45 Add example with “lib_extra_dirs” for Windows to platformio.ini 2017-02-04 17:14:42 +02:00
Ivan Kravets
b3ee14bf55 Add example with ignoring mbed-fs 2017-02-02 17:39:08 +02:00
Ivan Kravets
ec88b719f6 Add info about ability to ignore built-in mbed libraries 2017-02-02 17:35:05 +02:00
Ivan Kravets
c03d7bd1c4 Cleanup check only on update command 2017-02-02 13:44:52 +02:00
Ivan Kravets
84d5fbcfe5 Don’t lock cache directory while cleaning 2017-02-02 02:52:07 +02:00
Ivan Kravets
20d9f7dae7 Don’t return something when can’t retrieve latest version 2017-02-01 19:07:53 +02:00
Ivan Kravets
50dc608456 Cleanup cache on platform update 2017-02-01 14:52:32 +02:00
Ivan Kravets
3d6dab39ca Minor fixes for content cacher 2017-02-01 02:49:25 +02:00
Ivan Kravets
ba58b4ba8a Skip bad requests 2017-02-01 00:58:12 +02:00
Ivan Kravets
cbb46fe7b6 Fix PEP to SemVer converting 2017-01-31 01:58:10 +02:00
Ivan Kravets
d99ae7b1a3 Bump new alpha 10 2017-01-31 01:02:41 +02:00
Ivan Kravets
b5482db581 Don’t check for updates tagged VCS repo 2017-01-30 23:54:55 +02:00
Ivan Kravets
916f4b071c Don’t check packages when check platform version 2017-01-30 22:36:25 +02:00
Ivan Kravets
1143012216 Improve Package Manager when check for updates // Resolve #892 2017-01-30 20:21:16 +02:00
Ivan Kravets
1d1c677c81 Update Quick Start for PIO Remote 2017-01-30 15:03:08 +02:00
Ivan Kravets
34eab69e85 “pio lib update” and “pio platform update” in JSON format 2017-01-30 01:04:06 +02:00
Ivan Kravets
c1e14b671c Temporary use develop version of get-pio script 2017-01-28 21:20:59 +02:00
Ivan Kravets
8a7d255361 Handle libraries without manifests 2017-01-28 17:06:20 +02:00
Ivan Kravets
a4d8749e44 Don’t warn about known built-in libraries while building a project 2017-01-28 15:48:36 +02:00
Ivan Kravets
4d566b81d1 Using Arduino Framework with Staging version for ESP32 2017-01-27 23:52:00 +02:00
Ivan Kravets
65db6ce497 Add new boards to docs 2017-01-27 21:49:10 +02:00
Ivan Kravets
054b5cca6b * Added support for EnviroDIY Mayfly board 2017-01-27 21:08:15 +02:00
Ivan Kravets
6123d055f9 Update Blink example for PIO IDE with default value for “LED_BUILTIN” 2017-01-27 13:36:33 +02:00
Ivan Kravets
9cf242ad89 Check manifest engines field for PIO Core version 2017-01-25 15:33:40 +02:00
Ivan Kravets
162caf61a2 Handle requirements for package defined in platform manifest 2017-01-25 02:08:20 +02:00
Ivan Kravets
d64f4778df Package version as "Repository URL" in manifest of development version 2017-01-24 22:07:45 +02:00
Ivan Kravets
a874db38be Apply YAPF 2017-01-24 21:54:50 +02:00
Ivan Kravets
92b2782af8 Fix package installing with VCS branch for Python 2.7.3 // Resolve #885 2017-01-24 17:36:34 +02:00
Ivan Kravets
682f1cb798 Return “False” for unknown outdated package 2017-01-24 16:14:31 +02:00
Ivan Kravets
d31c09f786 Typo fix 2017-01-24 01:37:50 +02:00
Ivan Kravets
5d8a17ba6d Fix issue with empty CPPPATH when processing a library 2017-01-23 14:24:34 +02:00
Ivan Kravets
8314e05a71 Add tip about chat for PIO Plus 2017-01-23 00:30:23 +02:00
Ivan Kravets
ce066417e9 Add new options `--monitor-rts and --monitor-dtr to pio test` command 2017-01-23 00:13:58 +02:00
Ivan Kravets
9405ca3dff Update Arduino SAM & SAMD Core to 1.6.11 2017-01-22 00:10:39 +02:00
Ivan Kravets
b5ddf380ca Add new option “--no-reset” to “pio test” command 2017-01-21 19:58:20 +02:00
Ivan Kravets
06209c17b5 Update Arduino Core for AVR to 1.6.17 2017-01-20 23:47:28 +02:00
Ivan Kravets
ddd07138dd Escape project path when Glob matching is used 2017-01-19 19:02:37 +02:00
Ivan Kravets
20246a3481 Update TIVA C Energia Core to 1.0.2 2017-01-19 13:59:02 +02:00
Ivan Kravets
101ceb538b Update history 2017-01-18 21:54:04 +02:00
Ivan Kravets
6c111959b4 Fix platform installation from VCS // Resolve #878 2017-01-18 15:19:46 +02:00
Ivan Kravets
369aff9113 Fix indent level for Options 2017-01-15 00:19:25 +02:00
Ivan Kravets
b8de4b26b0 List built-in libraries based on development platforms with pio lib builtin command 2017-01-15 00:12:41 +02:00
Ivan Kravets
a9400f5a9c New article by Tiest van Gool 2017-01-13 14:20:18 +02:00
Ivan Kravets
fb2f1d3553 Use C++11 by default for CLion IDE based projects // Resolve #873 2017-01-12 20:07:28 +02:00
Ivan Kravets
87f3cbdda7 Add “Fuses” section to Atmel AVR development platform // Resolve #865 2017-01-07 17:57:40 +02:00
Ivan Kravets
ff5fac251e Custom action before building SPIFFS image. For example, compress HTML, etc. 2017-01-03 20:15:52 +02:00
Ivan Kravets
72e94398bf Improve output of pio lib list and pio lib search commands 2016-12-29 01:31:44 +02:00
Ivan Kravets
1df89525e6 Fix test for pio lib show command 2016-12-28 16:51:28 +02:00
Ivan Kravets
82662d0a09 Move library manager user guide to upper level 2016-12-28 16:00:19 +02:00
Ivan Kravets
e7cc94c27e Show detailed info about a library using pio lib show command // Resolve #430 2016-12-28 15:55:08 +02:00
Ivan Kravets
b6e09c5da4 Fix direct access to non-existing ContentCache data 2016-12-26 14:44:19 +02:00
Ivan Kravets
b6de719f2b Add support for Pumbaa Framework 2016-12-24 16:59:31 +02:00
Ivan Kravets
6cad7c01a7 New docs: Extra Linker Flags without `-Wl,` prefix 2016-12-24 14:55:00 +02:00
Ivan Kravets
c504001f04 PlatformIO Library Registry statistics with new pio lib stats 2016-12-23 21:57:11 +02:00
Ivan Kravets
ede581182c Fix RST for history 2016-12-22 14:13:56 +02:00
Ivan Kravets
80f67df3fa Update history 2016-12-22 13:10:48 +02:00
Ivan Kravets
c7fba32229 Fix CLA link 2016-12-22 02:15:51 +02:00
Xose Pérez
1a4c5df14d Added support for templated methods in InoToCPPConverter (#858)
* Added support for templated methods in InoToCPPConverter
2016-12-22 02:15:01 +02:00
Ivan Kravets
7f38c85738 Update history and docs 2016-12-18 20:46:35 +02:00
Ivan Kravets
2521a2420d Sync docs and examples 2016-12-16 22:41:53 +02:00
Ivan Kravets
8c47814d8d Add support for Samsung ARTIK boards (520, 710, 1020) and ARTIK SDK // Resolve #353 2016-12-16 21:33:17 +02:00
Ivan Kravets
539ad4b5ee New article by Dr. Patrick Mineault; Add Unit Testing example with Labmet Weather Station 2016-12-15 21:23:46 +02:00
Ivan Kravets
99c7473208 Specify default LED_BUILTIN for Quick Start example and wiring-blink 2016-12-15 13:17:52 +02:00
Ivan Kravets
403da8e22b Allow framework without package 2016-12-15 13:05:55 +02:00
Ivan Kravets
e9f15ba034 Add example with media disk for upload_port 2016-12-14 14:01:12 +02:00
Ivan Kravets
0d52147005 Update ISSUE_TEMPLATE.md 2016-12-14 13:14:40 +02:00
Ivan Kravets
bd7d41ed37 Typo fix in docs 2016-12-13 19:51:56 +02:00
Ivan Kravets
8869680302 Make workpiece to dump all platform packages 2016-12-12 23:26:42 +02:00
Ivan Kravets
f1e06da156 Update examples with ArduinoJson library 2016-12-12 17:58:01 +02:00
Ivan Kravets
4a6e644b2f New article by Cuong Tran Viet 2016-12-12 17:13:24 +02:00
Ivan Kravets
d2b3ce55e5 New board Node32s; Update ESP32 Core for Arduino 2016-12-10 18:06:05 +02:00
Ivan Kravets
65e83af982 New board Node32s; Update ESP32 Core for Arduino 2016-12-10 17:49:20 +02:00
Ivan Kravets
36c0c123d3 Update links and data 2016-12-08 20:46:09 +02:00
Ivan Kravets
0286567df8 Fix RST warning 2016-12-08 14:43:15 +02:00
Ivan Kravets
4cf542c6f6 Use stable version of get-platformio.py 2016-12-08 14:37:24 +02:00
Ivan Kravets
7dcddb295e Use stable version of PIO Core 2016-12-08 14:19:47 +02:00
Ivan Kravets
ee086ff580 Produce less noisy output when “-s/—silent” options are used for run and init commands // Resolve #850 2016-12-08 14:15:13 +02:00
Ivan Kravets
c71e15ca10 Merge branch 'release/v3.2.1' 2016-12-07 23:49:54 +02:00
Ivan Kravets
a1ed5c6262 Merge branch 'release/v3.2.1' into develop 2016-12-07 23:49:54 +02:00
Ivan Kravets
c09649c996 Change default LDF Mode from “chain+” to “chain” 2016-12-07 23:49:38 +02:00
Ivan Kravets
0c04d4a435 Merge branch 'release/v3.2.0' into develop 2016-12-07 22:08:45 +02:00
Ivan Kravets
d5725062c9 Merge branch 'release/v3.2.0' 2016-12-07 22:08:44 +02:00
Ivan Kravets
7c72445143 Bump version to 3.2.0 2016-12-07 22:07:03 +02:00
Ivan Kravets
f02ff75f6e Update PIO Remote diagram 2016-12-07 20:52:04 +02:00
Ivan Kravets
ea901a33d3 Add “Test” target for Eclipse & Sublime Text IDEs 2016-12-07 20:19:07 +02:00
Ivan Kravets
7d8cdcb792 Add File Watchers for CLion IDE 2016-12-07 20:14:28 +02:00
Ivan Kravets
8ac3c086f8 Add docs for Eclipse Che Cloud IDE 2016-12-07 19:34:42 +02:00
Ivan Kravets
0ccd63bb46 Add PIO Remote Architecture diagram 2016-12-07 18:50:20 +02:00
Ivan Kravets
b26442d1fe Don’t touch VCS file if it isn’t modified // Issue #848 2016-12-07 00:58:22 +02:00
Ivan Kravets
ac01a37f5f Improve content caching system 2016-12-07 00:38:59 +02:00
Ivan Kravets
22a272061f Fix merging of ".gitignore" files when re-initialize project // Resolve #848 2016-12-07 00:14:47 +02:00
Ivan Kravets
de4bec0a21 Downgrade ARM mbed to v126 2016-12-06 23:50:48 +02:00
Ivan Kravets
9483c0c51f Export libsource_dirs for IDE data 2016-12-06 13:25:03 +02:00
Ivan Kravets
20d6901dea Add link to global lib_extra_dirs option 2016-12-06 13:19:35 +02:00
Ivan Kravets
2a5d686d5a Use unified link to docs pages 2016-12-05 21:25:10 +02:00
Ivan Kravets
8d5cdf6c61 Fix broken images after docs transferring 2016-12-05 20:51:28 +02:00
Ivan Kravets
683e9ff858 Add docs submodule 2016-12-05 20:45:31 +02:00
Ivan Kravets
42c52e2729 Move docs to https://github.com/platformio/platformio-docs 2016-12-05 20:44:07 +02:00
Ivan Kravets
336aa029db Update deps for PIO Plus 2016-12-05 19:26:43 +02:00
Ivan Kravets
898513c95f Bump version to 3.2b6 2016-12-05 19:25:36 +02:00
Ivan Kravets
08cda5e7ea Enable caching by default for API requests and Library Manager 2016-12-05 18:51:25 +02:00
Ivan Kravets
6de8325130 Propagate full PYTHONPATH only for Windows 2016-12-05 18:36:55 +02:00
Ivan Kravets
cd51f7c5b0 JSON output for account show 2016-12-05 16:50:23 +02:00
Ivan Kravets
c14f515526 Propagate full PYTHONPATH 2016-12-05 15:48:59 +02:00
Ivan Kravets
9867de7a41 Rename pio account info command to pio account show 2016-12-05 14:59:16 +02:00
Ivan Kravets
44e11bcc33 Added global “lib_extra_dirs” option to “[platformio]” section // Resolve #842 2016-12-05 14:43:06 +02:00
Ivan Kravets
c75fc623cb Better parser for IDE data 2016-12-04 23:52:38 +02:00
Ivan Kravets
2571305dc9 Update history 2016-12-04 23:38:20 +02:00
Ivan Kravets
9515972c31 Fix indention for RST 2016-12-04 19:32:08 +02:00
Ivan Kravets
4efc0c04e1 Native integration with VIM/Neovim using “neomake-platformio” plugin // Resolve #467 Resolve #808 2016-12-04 18:59:54 +02:00
Ivan Kravets
b51f1f18b6 Rename PIO Core Repository 2016-12-04 18:59:07 +02:00
Ivan Kravets
aed7597bd7 Unix shell-style wildcards for “upload_port” // Resolve #839 2016-12-03 17:59:15 +02:00
Ivan Kravets
50fa64d6de Update boards list in docs 2016-12-03 00:36:03 +02:00
Ivan Kravets
71c7401f6d History: Upgrade development platform with the latest toolchains and Energia framework 2016-12-03 00:20:19 +02:00
Ivan Kravets
f045e65331 PyLint fix 2016-12-02 20:50:03 +02:00
Ivan Kravets
822ba63486 Fix unable to include SSH user in `lib_deps` repository url // Resolve #830 Resolve #836 2016-12-02 20:47:37 +02:00
Ivan Kravets
acf56b28a1 Show vendor version of a package // Resolve #838 2016-12-02 19:55:19 +02:00
Ivan Kravets
25c979a8ee Pass all PIO variables to PlatformManager 2016-12-02 19:21:56 +02:00
Ivan Kravets
aac627abf4 Bump PlatformIO 3.2b5 2016-12-02 00:52:01 +02:00
Ivan Kravets
738c0f9616 Add new LDF Modes 2016-12-01 17:37:12 +02:00
Ivan Kravets
48b87db2fb Bump PlatformIO 3.2 Beta 4 2016-11-30 19:25:23 +02:00
Ivan Kravets
4beb04d8b9 Refactored LDF C/C++ Preprocessor for conditional syntax // Issue #837 2016-11-30 19:05:37 +02:00
Ivan Kravets
cbe733ce80 Update SCons dependency 2016-11-30 18:20:37 +02:00
Ivan Kravets
e0461fedf6 Improve defines processing 2016-11-30 18:05:14 +02:00
Ivan Kravets
7ab393cea7 Refactor CPPDEFINES to tuple style 2016-11-30 15:53:36 +02:00
Ivan Kravets
50df0bfc1c Add Assembler Blink example for AVR // Resolve #843 2016-11-30 13:13:02 +02:00
Ivan Kravets
a93028d6e4 Bump version to 3.2.0b3 2016-11-30 02:14:52 +02:00
Ivan Kravets
448ed99723 Rename project to PlatformIO Core (fix CIs) 2016-11-30 00:04:41 +02:00
Ivan Kravets
12e1cc95b6 Improve LDF C/C++ Preprocessor for conditional syntax // Issue #837 2016-11-29 23:44:54 +02:00
Ivan Kravets
8b121a1ccb Fix LDF C/C++ Preprocessor for conditional syntax // Resolve #837 2016-11-28 23:24:21 +02:00
Ivan Kravets
2ac00fb4b1 Update tests for lib 2016-11-27 00:05:26 +02:00
Ivan Kravets
a3e1856f6d Add ESP32 examples 2016-11-26 22:59:49 +02:00
Ivan Kravets
d070e63c3a Incremental Project Synchronisation for PIO Plus // Resolve #825 2016-11-26 22:59:22 +02:00
Ivan Kravets
3b967a27c1 Update history 2016-11-24 00:05:06 +02:00
Ivan Kravets
1d4187162a Fix order for imports 2016-11-24 00:01:15 +02:00
Ivan Kravets
e2de7b05b9 Improve LDF and Circular dependencies 2016-11-23 23:47:09 +02:00
Ivan Kravets
5bcd7c574d Added support for Maple Mini Original, Maple Mini Bootloader 2.0, MikroElektronika Clicker 2 2016-11-23 23:45:48 +02:00
Ivan Kravets
c0e4d64ee4 Update Microchip PIC32 development platform and its tools 2016-11-23 21:12:44 +02:00
Ivan Kravets
dc9bc81613 Fix broken link to awards 2016-11-22 23:55:23 +02:00
Ivan Kravets
bc42fdbebe Remove obsolete code rated to LD_LIBRARY_PATH & Linux 2016-11-21 16:28:37 +02:00
Ivan Kravets
f7790ce537 Add support for Espressif 32 // Resolve #682 2016-11-19 18:39:25 +02:00
Ivan Kravets
0e20261d76 Update docs with new boards 2016-11-18 18:50:30 +02:00
Ivan Kravets
c186689672 Update history 2016-11-18 17:59:48 +02:00
Ivan Kravets
71432c08dd Update ARM mbed OS to 5.1.5/rev127 2016-11-18 16:11:38 +02:00
Ivan Kravets
3fa8b45e4a Fix issue with uploading to Arduino Zero on programming USB port // Resolve #805 Resolve #828 2016-11-18 13:39:58 +02:00
Ivan Kravets
056436edc4 Update history 2016-11-18 13:25:44 +02:00
Ivan Kravets
f70d7a4286 New article by Ricardo Quesada 2016-11-17 19:20:39 +02:00
Ivan Kravets
5c38cb98fa Remove debug code 2016-11-16 17:32:49 +02:00
Ivan Kravets
3b71cdc75e Keep order in summary when processing environments 2016-11-16 17:31:56 +02:00
Ivan Kravets
9247be97d1 Update examples 2016-11-14 18:51:43 +02:00
Ivan Kravets
f965fd7c2b Show link to the latest version of history after upgrade 2016-11-14 17:16:05 +02:00
Ivan Kravets
8c1ad8e509 Disable SSL for Python < 2.7.9 2016-11-12 00:57:45 +02:00
Ivan Kravets
3d5fe149c3 Reload command for remote, update, improved docs; Bump to 3.2b2 2016-11-12 00:28:49 +02:00
Ivan Kravets
5670b7af1f New article by PiGreek 2016-11-10 20:13:20 +02:00
Ivan Kravets
7bb435cf81 Allow minor + patch versions of PIO Plus packages 2016-11-10 00:16:05 +02:00
Ivan Kravets
39df3d0dc0 Minor fixes 2016-11-10 00:04:30 +02:00
Ivan Kravets
0c0043da7b New article by Xose Pérez 2016-11-08 18:53:19 +02:00
Ivan Kravets
4935763210 Spell fix 2016-11-05 20:52:05 +02:00
Ivan Kravets
5d3927c10a Fix PySite requirements for PIO Plus 2016-11-05 18:21:49 +02:00
Ivan Kravets
5a677fa15d SemVer for PIO Plus packages 2016-11-05 17:49:50 +02:00
Ivan Kravets
269500a969 Support for Account command 2016-11-04 19:40:12 +02:00
Ivan Kravets
4cf146bd4f Minor improvements to PIO Remote docs 2016-11-03 23:45:31 +02:00
Ivan Kravets
9328d3bd31 Add Contents for PIO Remote 2016-11-03 23:18:45 +02:00
Ivan Kravets
5a850bd406 Add Quick Start for PIO Remote to docs 2016-11-03 23:15:30 +02:00
Ivan Kravets
4767e5958f Bump to 3.2.0b1 2016-11-03 20:37:29 +02:00
Ivan Kravets
f1788ae67f Minor Improvements to docs 2016-11-03 19:23:00 +02:00
Ivan Kravets
4568e00f7b Fix image path for Codeanywhere Cloud IDE 2016-11-03 18:33:32 +02:00
Ivan Kravets
9cd8e67fb6 Updates for Unit Testing Docs 2016-11-03 18:29:29 +02:00
Ivan Kravets
e99abc5a36 Docs for Codeanywhere Cloud IDE 2016-11-03 18:19:03 +02:00
Ivan Kravets
822a4d8255 Multi-Project workspace for Cloud9 IDE 2016-11-03 15:59:05 +02:00
Ivan Kravets
b1a79db369 Update supported boards 2016-11-03 15:06:12 +02:00
Ivan Kravets
4f9abde70e Improve Unit Testing docs 2016-11-03 14:37:53 +02:00
Ivan Kravets
79ed0d9024 Handle nested subcommands 2016-11-03 14:03:26 +02:00
Ivan Kravets
14c8231fea Remove invalid codecov badge 2016-11-03 01:23:40 +02:00
Ivan Kravets
f9a369561e PIO Account information; PIO Plus v0.4.0 2016-11-03 01:04:32 +02:00
Ivan Kravets
a28a8273c5 Mention CI for Unit Testing 2016-11-02 20:24:11 +02:00
Ivan Kravets
ac3ebab070 PlatformIO Auth Token command 2016-11-02 19:43:45 +02:00
Ivan Kravets
fa11217da7 Fix Unit Test build environment 2016-11-02 18:53:03 +02:00
Ivan Kravets
9b786ba8c7 Remote Unit Testing 2016-11-02 18:24:52 +02:00
Ivan Kravets
db4dbeeca7 Add advanced example for Travis.CI 2016-11-01 12:54:45 +02:00
Ivan Kravets
1c5535d75f Add info about custom reset methods for ESP8266 // Issue #821 2016-11-01 01:18:52 +02:00
Ivan Kravets
92e3ca2686 Improve docs for Custom Reset Method // Resolve #821 2016-11-01 01:11:22 +02:00
Ivan Kravets
8236f3ff86 Ask about serial port for device monitor when more than one is found 2016-10-31 20:06:48 +02:00
Ivan Kravets
a251470ebd Python style formatting 2016-10-31 20:05:34 +02:00
Ivan Kravets
653f8b87ec Drop support for PySerial 2.7 2016-10-31 18:13:41 +02:00
Ivan Kravets
7b4d94ccfb Custom boards per project with `boards_dir` option in platformio.ini // Resolve #515 2016-10-31 17:41:01 +02:00
Ivan Kravets
e4a91b8343 Inject system environment variables to configuration settings in platformio.ini // Resolve #792 2016-10-31 17:04:34 +02:00
Ivan Kravets
e42387fbf4 Add link to Cloud IDE for PIO Remote 2016-10-31 15:41:46 +02:00
Ivan Kravets
c92ab885f7 Fix formatting 2016-10-31 14:43:30 +02:00
Ivan Kravets
76a65e9238 Add support for both CHE_APIs 2016-10-30 23:31:51 +02:00
Ivan Kravets
ef7bbe5aa6 Typo fix 2016-10-30 02:09:08 +03:00
Ivan Kravets
0e3f329db9 Use only "platformio.ini" in menu for docs 2016-10-30 02:01:57 +03:00
Ivan Kravets
fcd7e60b68 Docs for Cloud9 2016-10-30 01:54:29 +03:00
Ivan Kravets
2cbe284e58 Switch temporary to develop version 2016-10-29 22:22:01 +03:00
Ivan Kravets
7c4b1cedf7 Refactor menu PIO IDE & CLI in docs 2016-10-29 22:07:25 +03:00
Ivan Kravets
5771a9e0f8 Docs for PIO Remote, PIO Account; other improvements for docs 2016-10-29 19:55:36 +03:00
Ivan Kravets
1875495360 Use board ID instead Type 2016-10-29 00:33:26 +03:00
Ivan Kravets
0a19730fa6 Access to Serial Ports (USB/UART) information for dev platform 2016-10-29 00:17:55 +03:00
Ivan Kravets
42000f34b0 Access to Serial Ports (USB/UART) information 2016-10-29 00:08:18 +03:00
Ivan Kravets
53c4c6d2a8 Update docs with "buildprog" target, add/post actions // Resolve #812 2016-10-27 23:40:31 +03:00
Ivan Kravets
3f955659a1 Fix invalid examples for PLATFORMIO_BUILD_FLAGS environment variables 2016-10-27 22:35:09 +03:00
Ivan Kravets
bf48d81c43 Bump version to 3.2.0a10 2016-10-27 01:39:38 +03:00
Ivan Kravets
f907386107 Temporary fix for Eclipse Che 2016-10-27 01:38:49 +03:00
Ivan Kravets
4247f448a8 Add docs for PIO Account 2016-10-26 21:07:43 +03:00
Ivan Kravets
c2bf38f873 Improved handling of library dependencies specified in `library.json` manifest // Resolve #814 2016-10-26 18:35:43 +03:00
Ivan Kravets
2ec0bbb023 Skip custom LD_LIBRARY_PATH for PIO Plus 2016-10-25 21:51:22 +03:00
Ivan Kravets
63f1939c83 PIO Account, Subscription, other improvements 2016-10-24 21:03:54 +03:00
Ivan Kravets
f027e8c52e Fix example with custom ARGUMENT for extra scripting 2016-10-17 22:41:49 +03:00
Ivan Kravets
d4ab58548f Add support for Teensy Audio feature (`build_flags = -D USB_AUDIO`) 2016-10-14 13:30:12 +03:00
Ivan Kravets
9348dc12be Detect Python Arch under Windows OS 2016-10-13 00:42:16 +03:00
Ivan Kravets
90e9dfcd33 Fix docs 2016-10-12 20:17:47 +03:00
Ivan Kravets
27e988e63a Update docs for boards, platforms and frameworks 2016-10-12 18:51:47 +03:00
Ivan Kravets
e8866c9643 Update history for ST STM32 development platform 2016-10-12 18:23:22 +03:00
Ivan Kravets
8ac31d21ec Bump version to v3.2.0a7 2016-10-11 01:40:31 +03:00
Ivan Kravets
2676e77ea4 Isolate test target 2016-10-11 00:06:09 +03:00
Ivan Kravets
b09526a248 Fix PIO installation using get-platformio script 2016-10-10 23:06:09 +03:00
Ivan Kravets
c2ee36a4d7 Initial support for Eclipse Che 2016-10-10 20:59:47 +03:00
Ivan Kravets
5f83861f52 New article by Xose Perez 2016-10-10 20:14:23 +03:00
Ivan Kravets
1d203b46b4 Change default exit combination for Device Monitor from `Ctrl+] to Ctrl+C` 2016-10-10 20:08:54 +03:00
Ivan Kravets
4ead3f0570 Pass all options to remote serial monitor 2016-10-10 18:30:58 +03:00
Ivan Kravets
1a57d0330a Fix contact link 2016-10-09 00:57:30 +03:00
Ivan Kravets
417780ff70 Don't process dependency in lazy mode 2016-10-09 00:23:33 +03:00
Ivan Kravets
c3a16ab8c7 Fix update operation in package manager 2016-10-06 19:41:45 +03:00
Ivan Kravets
66d80b80cd Don't require development version of PlatformIO ESP8266 stage 2016-10-06 17:42:36 +03:00
Ivan Kravets
2231461ef3 Bump version to 3.2.0a4 2016-10-06 16:14:08 +03:00
Ivan Kravets
03497c40ca Pass only 3-rd party PySites to global env 2016-10-06 15:50:41 +03:00
Ivan Kravets
6c7673f17b Fix Unit Test 2016-10-06 13:41:30 +03:00
Ivan Kravets
7bf5d349d7 Ignore buildprog target status 2016-10-05 22:40:19 +03:00
Ivan Kravets
aa8199201f Catch ReturnCode exception 2016-10-05 21:43:28 +03:00
Ivan Kravets
c5f6f408b7 Bump version to 3.2.0a3 2016-10-05 20:11:25 +03:00
Ivan Kravets
31692901c8 Merge branch 'feature/pio-remote' into develop 2016-10-05 20:08:47 +03:00
Ivan Kravets
d2a7d77282 Add SF package registry for PIO Plus 2016-10-05 20:07:55 +03:00
Ivan Kravets
485ba19601 Add package requirements for PIO Plus 2016-10-05 15:46:04 +03:00
Ivan Kravets
41c69797f2 Fix handler for renamed commands 2016-10-05 01:23:50 +03:00
Ivan Kravets
b708653c26 Allow multiple emails for PIO Remote share 2016-10-04 19:37:48 +03:00
Ivan Kravets
2c8736777b Share option for PIO Remote agent 2016-10-04 14:13:30 +03:00
Ivan Kravets
09fc30e777 Bump version to 3.2.0a1 2016-10-04 01:27:41 +03:00
Ivan Kravets
5bcec6b6a0 Merge branch 'develop' into feature/pio-remote
* develop:
  Fix "99-platformio-udev.rules" checker for Linux OS
  Fix issue with "PATH" auto-configuring for upload tools
  New article by Kadda Sahnine
2016-10-04 01:26:19 +03:00
Ivan Kravets
00aeaf021d Further work on PIO Remote 2016-10-04 01:24:38 +03:00
Ivan Kravets
810b6d807f Improve finding of actual LD Script 2016-10-04 01:21:26 +03:00
Ivan Kravets
e51680be63 Rewrite on-the-fly renamed commands 2016-10-03 17:26:24 +03:00
Ivan Kravets
3600ef61a7 Additional target "buildfs" to accompany "uploadfs" // Resolve #6 2016-10-03 17:24:39 +03:00
Ivan Kravets
214f4501b0 Better formatting of envs summary 2016-10-03 16:47:23 +03:00
Ivan Kravets
0595201d81 Use link to the latest release notes 2016-10-02 18:19:07 +03:00
Ivan Kravets
bee52c715e Handle process in container 2016-09-29 23:53:19 +03:00
Ivan Kravets
36ced8010a Fix "99-platformio-udev.rules" checker for Linux OS 2016-09-29 19:03:56 +03:00
Ivan Kravets
71d74f40b0 Fix issue with "PATH" auto-configuring for upload tools 2016-09-29 18:58:35 +03:00
Ivan Kravets
dc874ebf49 New article by Kadda Sahnine 2016-09-27 19:17:28 +03:00
Ivan Kravets
5cfca6b1f6 Initial support for PIO Remote 2016-09-26 22:15:08 +03:00
Ivan Kravets
36dc1c82b2 Add new ESPrectro board 2016-09-25 20:46:30 +03:00
Ivan Kravets
4b4ac58d60 Improve Project Generator for CLion IDE when source folder contains nested items 2016-09-25 19:49:17 +03:00
Ivan Kravets
f9a7451995 Article by The Linux Foundation 2016-09-22 17:19:42 +03:00
Ivan Kravets
8cc06c214a Improve detecting of ARM mbed media disk for uploading 2016-09-21 19:31:02 +03:00
Ivan Kravets
417cce1929 New article by Francesco Azzola 2016-09-21 18:43:00 +03:00
Ivan Kravets
de3157dc2a Add info about multiple options 2016-09-20 20:16:39 +03:00
Ivan Kravets
b0d9680506 New article by Doc Walker 2016-09-20 18:14:50 +03:00
Ivan Kravets
77a5eb24c2 Typo fix 2016-09-19 22:21:26 +03:00
Ivan Kravets
e2e28c7444 Merge branch 'release/v3.1.0' 2016-09-19 21:12:56 +03:00
Ivan Kravets
eb21d54ef8 Merge branch 'release/v3.1.0' into develop 2016-09-19 21:12:56 +03:00
Ivan Kravets
b06c20a1a6 Version bump to 3.1.0 (issues #611, #705, #774, #777, #785) 2016-09-19 21:12:40 +03:00
Ivan Kravets
a3ce23e331 Improvements to docs 2016-09-19 21:02:12 +03:00
Ivan Kravets
6147e0e29b Add example with upload_port 2016-09-19 15:32:11 +03:00
Ivan Kravets
da48ea3818 Improve a work in off-line mode 2016-09-19 15:10:28 +03:00
Ivan Kravets
543a137506 Fix udev.rules warning under Linux Mint 2016-09-18 23:48:10 +03:00
Ivan Kravets
02e7ff6b19 Cosmetic change 2016-09-18 01:41:31 +03:00
Ivan Kravets
935894633c Correct processing summary 2016-09-18 01:21:40 +03:00
Ivan Kravets
9b0bc500fd Summary about processed environments // Resolve #777 2016-09-18 01:11:55 +03:00
Ivan Kravets
83b6bf6c6a Remove test code 2016-09-17 23:50:36 +03:00
Ivan Kravets
5e6469596c Dynamic variables/templates for "platformio.ini" // Resolve #705 2016-09-17 23:46:53 +03:00
Ivan Kravets
c12df19fd1 Fix Project Generator for CLion IDE using Windows OS // Resolve #785 2016-09-17 18:13:39 +03:00
Ivan Kravets
37552a81fc Fix Project Generator for CLion IDE using Windows OS // Resolve #785 2016-09-17 16:55:42 +03:00
Ivan Kravets
e50327bccc Deprecate `lib_force option, please use lib_deps` instead 2016-09-17 16:32:16 +03:00
Ivan Kravets
7dc378bba7 Update examples 2016-09-17 00:24:29 +03:00
Ivan Kravets
72b6390613 Minor updates 2016-09-17 00:02:01 +03:00
Ivan Kravets
52bb6fcbf0 Add dozens of new boards 2016-09-16 23:48:21 +03:00
Ivan Kravets
63748cd83d Add support for Teensy 3.5 and 3.6 boards; Updated Arduino Framework for Teensy to v130 2016-09-16 01:00:50 +03:00
Ivan Kravets
254dcac149 Add Bintray as mirror for development platform manifests 2016-09-15 21:31:56 +03:00
Ivan Kravets
e1f3a248ea Add step with manual installation of ESP8266 Stage 2016-09-15 01:45:36 +03:00
Ivan Kravets
74a8e88308 Rename stage version of esp8266 2016-09-15 01:39:03 +03:00
Ivan Kravets
9c15fed722 Fix issue with escaping platform name 2016-09-15 01:30:51 +03:00
Ivan Kravets
a14dec70c2 Simplify ESP8266-stage using 2016-09-15 01:28:41 +03:00
Ivan Kravets
18153d4168 Cleanup platform name before initialization 2016-09-15 01:17:16 +03:00
Ivan Kravets
bd30de4f18 ESP8266: Using Arduino Framework with Staging version 2016-09-14 23:42:26 +03:00
Ivan Kravets
3b6bda825b Update a complex test for platform install command 2016-09-14 23:26:51 +03:00
Ivan Kravets
92e69a60f4 Fix typo 2016-09-14 23:10:46 +03:00
Ivan Kravets
72084a2013 Fix issue with cache cleaning 2016-09-14 22:50:14 +03:00
Ivan Kravets
27df09533c Clean cache before upgrade 2016-09-14 22:32:35 +03:00
Ivan Kravets
bd207667e3 Implement LocalCache system for API and improve a work in off-line mode 2016-09-14 19:06:22 +03:00
Ivan Kravets
37eb37e2a1 Improve a work in off-line mode 2016-09-14 14:55:07 +03:00
Ivan Kravets
7116deaf54 Allow to initialize project in off-line mode 2016-09-14 14:46:10 +03:00
Ivan Kravets
d2a45245e2 Fix linter warnings 2016-09-13 20:39:04 +03:00
Ivan Kravets
05bbd4a7f8 Improve Project Generator when custom `--project-option is passed to platformio init` command 2016-09-13 19:22:19 +03:00
Ivan Kravets
8199272328 Better checking of available package updates 2016-09-13 18:53:17 +03:00
Ivan Kravets
33b5e18582 Use stable documentation 2016-09-13 17:36:36 +03:00
Ivan Kravets
eae152959b Minor change to BoardConfig() API 2016-09-13 17:36:20 +03:00
Ivan Kravets
35cbbeb457 Fix downloader with Unicode path // Resolve #771 2016-09-12 19:54:28 +03:00
Ivan Kravets
96f7c7c0b0 Add new article by Pedro Minatel 2016-09-12 19:24:24 +03:00
Ivan Kravets
ac7743e217 Rename setting DISABLE_SSL to ENABLE_DISABLE and set it to No by default 2016-09-12 02:11:04 +03:00
Ivan Kravets
7d10041727 Fix test 2016-09-10 23:42:51 +03:00
Ivan Kravets
72a18125ee Fix test 2016-09-10 19:07:24 +03:00
Ivan Kravets
1bd893409d Install empty dev platform in processing mode 2016-09-10 18:58:18 +03:00
Ivan Kravets
d9d5ee15fd Fix default package configurator 2016-09-10 18:49:59 +03:00
Ivan Kravets
78c86446cf Fix RegExp for line error 2016-09-10 17:27:47 +03:00
Ivan Kravets
2a9ba3821a Support PlatformIO Plus 2016-09-10 16:39:27 +03:00
Ivan Kravets
4328d311a5 Remove obsolete defines 2016-09-09 23:18:00 +03:00
Ivan Kravets
a42cf4ebdd Fix incorrect line order when converting from INO to CPP and pointer is used 2016-09-09 18:49:58 +03:00
Ivan Kravets
39a787b0d1 Fix unit test 2016-09-09 18:26:38 +03:00
Ivan Kravets
f186ad30c1 Notify about version field when creating library 2016-09-09 18:08:18 +03:00
Ivan Kravets
160ae3fb60 Add support for SparkFun Blynk Board 2016-09-08 21:39:30 +03:00
Ivan Kravets
80d74c608d Return valid exit code from `plaformio test` command 2016-09-08 16:17:58 +03:00
Ivan Kravets
df4560412d Disable SSL Server-Name-Indication for Python < 2.7.9 2016-09-08 13:50:45 +03:00
Ivan Kravets
dab4c91c98 Merge branch 'release/v3.0.1' into develop 2016-09-08 02:00:07 +03:00
Ivan Kravets
dd20c4273b Merge branch 'release/v3.0.1' 2016-09-08 02:00:06 +03:00
Ivan Kravets
cf5023436c Version bump to 3.0.1 (issue #772) 2016-09-08 01:59:54 +03:00
Ivan Kravets
ff312f0405 Disable temporary SSL for PlatformIO services // Resolve #772 2016-09-08 01:57:50 +03:00
Ivan Kravets
9012ed256c Merge branch 'release/v3.0.0' into develop 2016-09-07 20:50:47 +03:00
Ivan Kravets
0a63b8b905 Merge branch 'release/v3.0.0' 2016-09-07 20:50:46 +03:00
Ivan Kravets
f78c9436c8 Version bump to 3.0.0 (issues #770, #766, #747, #730, #765, #640, #659, #742, #459, #542, #763, #759, #753, #757, #749, #748, #745, #519, #709, #743, #413, #498, #410, #740, #361, #414, #554, #732, #588, #475, #461, #101, #719, #721, #537, #415, #522, #289, #556, #570, #456, #617, #432, #408, #479, #667, #510) 2016-09-07 20:50:34 +03:00
Ivan Kravets
578d8910aa Fix menu height for docs 2016-09-07 19:16:05 +03:00
Ivan Kravets
cd45749c82 Fix issue with multiple archives when linking firmware 2016-09-07 19:05:15 +03:00
Ivan Kravets
3069abfe13 Add migration guide for PIO2 to PIO3 2016-09-07 18:50:25 +03:00
Ivan Kravets
f7b994354b Search libraries by headers/includes with `platformio lib search --header` option 2016-09-07 18:50:09 +03:00
Ivan Kravets
a28e04bfde Update pio run command examples 2016-09-07 15:56:53 +03:00
Ivan Kravets
960de87585 Add Unit Testing Demo 2016-09-07 15:46:48 +03:00
Ivan Kravets
f525165758 Update PIO Plus badge title and link 2016-09-07 13:51:59 +03:00
Ivan Kravets
9e3b2a381e Add PlatformIO Plus badge 2016-09-07 13:50:47 +03:00
Ivan Kravets
f6491b2285 Add links to PlatformIO Plus 2016-09-07 13:47:42 +03:00
Ivan Kravets
93aa0c2b08 Test PlatformIO 3.0 packages 2016-09-04 18:25:28 +03:00
Ivan Kravets
0f300a24a1 Fix issue with archive downloader 2016-09-04 12:03:57 +03:00
Ivan Kravets
a05d192beb Implement installing packages/libraries from different archive (with/without manifests) // Resolve #767 2016-09-04 00:35:47 +03:00
Ivan Kravets
fda7392b84 Rename "espressif" platform to "espressif8266" 2016-09-03 19:35:40 +03:00
Ivan Kravets
6036c54b05 Fix broken URL for Teensy site 2016-09-03 17:07:10 +03:00
Ivan Kravets
7f1b569d6f Update docs for embedded platforms, frameworks and boards 2016-09-03 16:26:52 +03:00
Ivan Kravets
c8849a4648 Extend JSON output when listing installed development platforms 2016-09-03 14:59:50 +03:00
Ivan Kravets
e2d2295866 Handle url with ".git" extension as Git package/library 2016-09-03 01:27:34 +03:00
Ivan Kravets
d4ffc89c02 Merge branch 'feature/test-plus' into develop 2016-09-02 23:49:38 +03:00
Ivan Kravets
139bd4c10a Export library path for PlatformIO Plus 2016-09-02 23:30:24 +03:00
Ivan Kravets
21d34482da Fix package manager when "git@url" is used 2016-09-02 22:41:27 +03:00
Ivan Kravets
9b2999d64b Fix test for "pio test" 2016-09-02 22:23:26 +03:00
Ivan Kravets
65b5f20cf7 Fix typo in docs 2016-09-02 18:50:14 +03:00
Ivan Kravets
ec035c25a1 Improve "clean" target // Resolve #747 2016-09-02 18:45:19 +03:00
Ivan Kravets
a1cb089d0d Add new articles 2016-09-02 16:55:11 +03:00
Ivan Kravets
424d5e71a8 Minor improvements to docs 2016-09-02 16:45:08 +03:00
Ivan Kravets
a48201f60f Skip converting if INO nodes are not found 2016-09-02 15:19:54 +03:00
Ivan Kravets
6442c86084 Fix INO to CPP converter when #define is used 2016-09-02 14:35:07 +03:00
Ivan Kravets
b06dc1e63f Bump new version 2016-09-02 00:46:06 +03:00
Ivan Kravets
bbe6550abe Fix Sphinx warnings 2016-09-02 00:22:12 +03:00
Ivan Kravets
b8af2acce5 Fix issue with converting INO to CPP and missing line number 2016-09-01 23:19:46 +03:00
Ivan Kravets
6b63ae2e46 Ignore warning when can't delete temporary file 2016-09-01 21:56:43 +03:00
Ivan Kravets
85439dbff7 Allow to use dependencies separated with comma + space 2016-09-01 21:34:37 +03:00
Ivan Kravets
b6269188fe Fix indention 2016-09-01 20:02:12 +03:00
Ivan Kravets
bb62444f15 Handle C multiline strings when converting INO to CPP // Resolve #765 2016-09-01 19:08:32 +03:00
Ivan Kravets
ac4c054d1f Implement retrying mechanism for get results from PlatformIO API 2016-09-01 16:05:02 +03:00
Ivan Kravets
838063b1b7 Allow passing custom project configuration options to `platformio ci and platformio init commands using -O, --project-option`. 2016-09-01 15:14:38 +03:00
Ivan Kravets
c51ac0489f Use global library storage for CI 2016-09-01 01:30:14 +03:00
Ivan Kravets
0e464b011f Improve Library Dependency Finder in mode=1 2016-09-01 00:06:34 +03:00
Ivan Kravets
86aa7ad692 Temporary enable LDF_MODE=2 before refactoring 2016-08-31 20:28:26 +03:00
Ivan Kravets
013c675bc4 Allow to control library dependency finder mode from library.json; set ldf_mode to 1 by default 2016-08-31 18:52:27 +03:00
Ivan Kravets
3be35f9987 Introduce PlatformIO Plus 2016-08-31 16:07:35 +03:00
Ivan Kravets
86794d2cf1 Don't check program path 2016-08-31 14:13:09 +03:00
Ivan Kravets
c3004c6a6c Disable HG testing 2016-08-31 13:15:40 +03:00
Ivan Kravets
3a7b0d2c9d Fix INO to CPP converting when 2-tokens type is used 2016-08-31 12:49:10 +03:00
Ivan Kravets
1b32091d7d Fix broken Unit Testing 2016-08-31 02:06:43 +03:00
Ivan Kravets
7a88778f5e Improve INO to CPP converter // Resolve #659 2016-08-31 01:47:57 +03:00
Ivan Kravets
e703054716 Update INO2CPP examples 2016-08-31 01:26:08 +03:00
Ivan Kravets
c33a745862 Fix wrong line number for INO file when `#warning` directive is used // Resolve #742 2016-08-31 01:03:13 +03:00
Ivan Kravets
a94aa898a6 Remove temporary INO/CPP file at process exit 2016-08-31 00:34:23 +03:00
Ivan Kravets
8a379d2db2 Refactor INO to CPP converter 2016-08-31 00:16:23 +03:00
Ivan Kravets
34a860cfa6 Limit max sources length for Win to 6000 chars 2016-08-30 23:09:53 +03:00
Ivan Kravets
d0d139511c Skip unknown packages while updating 2016-08-30 20:38:00 +03:00
Ivan Kravets
dec5529a64 Cleanup not used packages after update 2016-08-29 22:25:38 +03:00
Ivan Kravets
64520130f6 Add development packages 2016-08-29 22:19:56 +03:00
Ivan Kravets
d516d31b30 Remove unused import 2016-08-29 22:07:21 +03:00
Ivan Kravets
5d2f42a5a8 Cleanup PackageManager 2016-08-29 22:06:37 +03:00
Ivan Kravets
f8e70c9362 Improve detecting of Python EXE Path 2016-08-29 20:20:12 +03:00
Ivan Kravets
023e2978ba Disable platforms patching (while PIO3 is not released) 2016-08-29 14:56:55 +03:00
Ivan Kravets
0f8f9c94cd Make less verbose AS command 2016-08-29 14:10:09 +03:00
Ivan Kravets
22bb1c39b1 Handle EOL when update VCS ignore file 2016-08-29 13:35:35 +03:00
Ivan Kravets
6765a60ec3 Minor improvements 2016-08-28 00:03:54 +03:00
Ivan Kravets
d28f0b259a Generate better UID 2016-08-27 23:15:32 +03:00
Ivan Kravets
6894d2c5d2 Allow to pass project file path to run command instead project dir 2016-08-27 20:32:21 +03:00
Ivan Kravets
7b474c69ab PyLint fix 2016-08-27 19:30:53 +03:00
Ivan Kravets
e232810325 Improve output in non verbose mode 2016-08-27 19:30:38 +03:00
Ivan Kravets
4ba3625987 Update comment header for platformio.ini 2016-08-27 12:14:43 +03:00
Ivan Kravets
99dfc23d96 Update supported manifests for Library Registry 2016-08-26 20:22:32 +03:00
Ivan Kravets
84abc5764d Improve docs for library.json build field 2016-08-26 19:11:35 +03:00
Ivan Kravets
8e09d637e7 Improve compatibility with Arduino 1.0 library format 2016-08-26 18:52:44 +03:00
Ivan Kravets
37dff70cd6 Replace TYPE for board/platform with ID // Resolve #459 2016-08-26 16:09:52 +03:00
Ivan Kravets
3e403ef9ee Add example with Library Manager 2016-08-26 14:57:21 +03:00
Ivan Kravets
8d8bfd5587 Document version option for dependencies field in library.json 2016-08-26 14:44:45 +03:00
Ivan Kravets
054790d161 Use stderr stream to write errors instead env.Exi() 2016-08-26 14:39:23 +03:00
Ivan Kravets
c637729eae Rename `platformio serialports command to platformio device` 2016-08-26 14:25:50 +03:00
Ivan Kravets
6e26ce8162 Better exception handling 2016-08-26 12:30:37 +03:00
Ivan Kravets
f9e8ea66ea Remove `enable_prompts` setting. Now, all PlatformIO CLI is non-blocking! 2016-08-26 11:46:59 +03:00
Ivan Kravets
de62e5082e Handle WindowsError when can't create .pioenvs directory 2016-08-26 01:42:05 +03:00
Ivan Kravets
6ff99e4ddd Show error when boards manifest doesn't contain required fields 2016-08-26 01:29:26 +03:00
Ivan Kravets
8cc54bf9be Switch to SSL PlatformIO API 2016-08-25 22:57:52 +03:00
Ivan Kravets
012d33146c Use HTTPS PlatformIO API 2016-08-25 21:02:20 +03:00
Ivan Kravets
1e4ea2dde9 Minor fix 2016-08-25 20:47:39 +03:00
Ivan Kravets
1aabf0ebf5 Build System: Attach custom Before/Pre and After/Post actions for targets // Resolve #542 2016-08-25 20:40:14 +03:00
Ivan Kravets
f51781c763 Add new article 2016-08-25 18:47:39 +03:00
Ivan Kravets
b1cebe9e0e Fix unicode issue when search libraries 2016-08-25 14:21:46 +03:00
Ivan Kravets
a352318f0f Update broken links to issues 2016-08-25 14:18:09 +03:00
Ivan Kravets
62f1f93ad9 Update history of development platforms 2016-08-25 14:14:58 +03:00
Ivan Kravets
3979ee33a3 Update copyrights 2016-08-25 00:12:03 +03:00
Ivan Kravets
a57ed93923 Add information about C/C++ Index Rebuiding 2016-08-24 23:50:15 +03:00
Ivan Kravets
aa19b1c424 Show error message when broken JSON manifest is found 2016-08-24 23:03:41 +03:00
Ivan Kravets
0751c966c4 Use base name of library path instead manifest name 2016-08-24 20:54:54 +03:00
Ivan Kravets
e8643528ea Test updates for PubSubClient library 2016-08-24 15:18:45 +03:00
Ivan Kravets
69773fc838 Fix bug with Arduino based library where utility folder is used 2016-08-24 13:47:16 +03:00
Ivan Kravets
40dbc6c849 Update lib test according to renaming Json lib to ArduinoJson 2016-08-24 13:41:03 +03:00
Ivan Kravets
35cc57f263 Skip headers from examples 2016-08-24 00:28:22 +03:00
Ivan Kravets
e6fc0e30ec Update docs for Library Manager 2016-08-24 00:26:28 +03:00
Ivan Kravets
f1a14a03af Update pio platform command titles 2016-08-23 14:37:14 +03:00
Ivan Kravets
5a63060699 Improve support for "library.properties" manifest 2016-08-23 13:40:32 +03:00
Ivan Kravets
81d3b7fd11 Sync with the latest examples 2016-08-23 11:14:22 +03:00
Ivan Kravets
b3abee8513 Ignore broken libraries; show link to the docs with lib_compat_mode // Resolve #759 2016-08-23 00:09:28 +03:00
Ivan Kravets
d420e956e9 Mode "include" and "exclude" options to "export" field for the library.json 2016-08-22 00:03:27 +03:00
Ivan Kravets
f5b4cb0ae8 Refactor "test_ignore" to accepts test names separated with comma // Resolve #753 2016-08-21 19:32:11 +03:00
Ivan Kravets
0f7f301787 Improve unit testing output; fix issue with non-ascii output from embedded device // Issue #753 2016-08-21 19:27:38 +03:00
Ivan Kravets
3426c01955 Fix invalid example with converting INO to CPP in the Atom docs // Resolve #757 2016-08-21 13:35:31 +03:00
Ivan Kravets
1a517995a0 Rename "quiet" option to "silent" 2016-08-21 00:31:58 +03:00
Ivan Kravets
e51b8d2f61 Cleanup AppVeyor Config 2016-08-19 17:08:31 +03:00
Ivan Kravets
5c105a9bcb Fix CI test 2016-08-18 23:51:32 +03:00
Ivan Kravets
55c627e4ee Minor changes 2016-08-18 20:29:00 +03:00
Ivan Kravets
ec897d217c Update issue template 2016-08-18 20:26:29 +03:00
Ivan Kravets
6f8614906d New article "Installing PlatformIO on Arch Linux" 2016-08-18 19:01:34 +03:00
Ivan Kravets
dab81291eb Extend win hooks for ASPPCOM 2016-08-18 18:51:23 +03:00
Ivan Kravets
fb6df55326 Don't notify ikravets 2016-08-18 16:52:31 +03:00
Ivan Kravets
9b292e0614 Notify only when build changes status 2016-08-18 16:08:47 +03:00
Ivan Kravets
f25e166ea8 Push notification to Slack 2016-08-18 16:05:49 +03:00
Ivan Kravets
ef6952b27a Add Contents to library index page 2016-08-18 15:11:26 +03:00
Ivan Kravets
b0d74c4640 Extend "examples" default value 2016-08-18 15:02:56 +03:00
Ivan Kravets
512ea68dce Disable email notification 2016-08-18 14:47:21 +03:00
Ivan Kravets
d410696729 Push notification to Slack 2016-08-18 14:29:54 +03:00
Ivan Kravets
d630aa4f37 Check CI SRC paths passed via system environment variable 2016-08-18 12:18:27 +03:00
Ivan Kravets
0e9050f2e8 Update lib search test 2016-08-18 00:30:51 +03:00
Ivan Kravets
f01b858e90 Minor fix 2016-08-18 00:13:29 +03:00
Ivan Kravets
d40d1e4f2b Rename url to homepage 2016-08-18 00:08:55 +03:00
Ivan Kravets
b2e6d16221 Don't use shell for Windows and exec commands 2016-08-17 17:38:20 +03:00
Ivan Kravets
64cc353455 Implement build hooks for Windows 2016-08-17 17:36:05 +03:00
Ivan Kravets
9b08244ed8 Add article "ESP8266 Mobile Rick Roll Captive Portal" 2016-08-16 20:10:03 +03:00
Ivan Kravets
797688dedd Fix EXTRA_LIB_BUILDERS 2016-08-16 17:27:11 +03:00
Ivan Kravets
2a3a12b816 Handle relative paths for "lib_extra_dirs" // Resolve #749 2016-08-16 13:02:57 +03:00
Ivan Kravets
8d8a0efdb9 Refactor long command hook for GCC and Windows CMD limitations 2016-08-15 20:14:09 +03:00
Ivan Kravets
94299139cf Allow to pass extra "EXTRA_LIB_BUILDERS" for Library Builder 2016-08-15 19:49:15 +03:00
Ivan Kravets
bb01ec9a1e Fix test for lib command 2016-08-15 19:24:31 +03:00
Ivan Kravets
317c7272cd Explain how to use "uploading" with CI command // Resolve #686 2016-08-13 10:33:03 +03:00
Ivan Kravets
d28e8a06b5 Add new article 2016-08-11 20:55:18 +03:00
Ivan Kravets
9a959a0aa4 Cover maintenance operations with tests 2016-08-11 19:20:54 +03:00
Ivan Kravets
31fdc76f25 Implement "LIBSOURCE_EXTRA" environment variable for extra libraries 2016-08-11 15:23:36 +03:00
Ivan Kravets
3eadadf638 Improve CI command for Windows OS 2016-08-11 12:41:03 +03:00
Ivan Kravets
30f6d456af Update platform command 2016-08-11 10:54:28 +03:00
Ivan Kravets
d3e2b2bde4 Cover CI command with tests 2016-08-10 23:00:46 +03:00
Ivan Kravets
473c821132 Cover init command with tests 2016-08-10 21:58:12 +03:00
Ivan Kravets
3ba0d25f27 Fix updating project libraries // Resolve #745 2016-08-10 19:39:17 +03:00
Ivan Kravets
9299b6716a Fix broken link to Unit Testing examples 2016-08-10 17:50:02 +03:00
Ivan Kravets
6ac2abfc3b Fix docs warning 2016-08-10 17:15:51 +03:00
Ivan Kravets
4b50a9c721 Skip Calculator example from generic test 2016-08-10 16:10:26 +03:00
Ivan Kravets
ef0322019f Add Unit Testing example with Calculator // Issue #519 2016-08-10 15:51:53 +03:00
Ivan Kravets
a395b171e3 Add Support for local ("PC") unit tests // Resolve #519 2016-08-10 15:50:01 +03:00
Ivan Kravets
9177c6f210 Fix typo with known default options for [platformio] section 2016-08-09 23:44:40 +03:00
Ivan Kravets
0264c4eeea Remove debug code 2016-08-09 17:12:30 +03:00
Ivan Kravets
f1e65869f3 Remove "#" from platformio.ini docs 2016-08-09 16:55:14 +03:00
Ivan Kravets
bda61d0ae2 Use semicolons for comment in INI File 2016-08-09 16:53:51 +03:00
Ivan Kravets
55c1a90fc9 Remove unused import 2016-08-09 15:24:56 +03:00
Ivan Kravets
0ab7d53991 Add example with Microbit 2016-08-09 15:13:55 +03:00
Ivan Kravets
5ba20fc6ed Remove prompts from init command; Update template for Project Configuration File 2016-08-09 15:10:52 +03:00
Ivan Kravets
92e82941fe Hint about hard reset for the boards with mbed bootloader // Issue #709 2016-08-09 14:37:44 +03:00
Ivan Kravets
fe76192590 Automatically detect Microbit disk for upload // Issue #709 2016-08-09 14:25:05 +03:00
Ivan Kravets
20be83ef95 Add support for BBC micro:bit board that is built on the ARM mbed and Nordic nrf51 platform // Resolve #709 2016-08-09 14:09:21 +03:00
Ivan Kravets
97c58c8dca Add CI for macOS 2016-08-09 10:30:21 +03:00
Ivan Kravets
239be03a54 Minor changes 2016-08-08 23:25:44 +03:00
Ivan Kravets
70df551eef Fix platformio test command // Resolve #743 2016-08-08 23:10:57 +03:00
Ivan Kravets
7f7cf5281f Show package name when updating 2016-08-08 20:04:47 +03:00
Ivan Kravets
8b53f6e320 Move Unit Testing to the TOP level 2016-08-08 19:51:15 +03:00
Ivan Kravets
20e7525118 Update links to Library Dependency Finder 2016-08-08 19:44:31 +03:00
Ivan Kravets
f9ead74b88 Fix issue when check that LibBuilder contains source file by path 2016-08-08 18:57:18 +03:00
Ivan Kravets
1efea0bd27 Mark "lib_deps" as PIO3; first development "alpha" 2016-08-08 16:06:12 +03:00
Ivan Kravets
655efb1fb6 Merge branch 'feature/platformio-30' into develop 2016-08-08 16:04:20 +03:00
Ivan Kravets
65e0daa06d Project dependencies per build environment using "lib_deps" option // Resolve #413 2016-08-08 16:03:17 +03:00
Ivan Kravets
0b749c3888 Warn about unknown options in project configuration file // Resolve #740 2016-08-08 14:00:23 +03:00
Ivan Kravets
80c7a8d1ce Warn about unknown options in project configuration file // Resolve #740 2016-08-08 14:00:01 +03:00
Ivan Kravets
098653aac7 Better explanation with dependencies 2016-08-05 18:52:24 +03:00
Ivan Kravets
db267513ca Implement custom "rmtree"; resolve issue with Windows and .git 2016-08-05 18:43:20 +03:00
Ivan Kravets
c64354ebcc Add PlatformIO Plus info 2016-08-05 18:20:09 +03:00
Ivan Kravets
6970c95aca Fix command lib test 2016-08-05 17:59:10 +03:00
Ivan Kravets
4fc0ab0649 Fix updating from VCS 2016-08-05 17:39:32 +03:00
Ivan Kravets
39542c4ef2 Improve platform manager when VCS is used 2016-08-05 17:02:39 +03:00
Ivan Kravets
bf727d6905 Update article links 2016-08-05 16:23:39 +03:00
Ivan Kravets
c1178277ca Print coverage report to terminal 2016-08-05 16:04:10 +03:00
Ivan Kravets
976fc8975a Fix coverage reporting 2016-08-05 15:00:15 +03:00
Ivan Kravets
795b8be386 Update examples 2016-08-05 13:57:13 +03:00
Ivan Kravets
e9ed55b6e9 Improve updating of development platforms 2016-08-05 13:51:28 +03:00
Ivan Kravets
dad8f9d80e Show valid text when "Checking" packages version 2016-08-05 13:10:27 +03:00
Valeriy Koval
b714fb1be0 Update OpenOCD uploading flags // Issue #732 2016-08-04 18:37:52 +03:00
Valerii Koval
179a971770 Fix OpenOCD upload command for atmelsam // Issue #732 2016-08-04 12:00:38 +03:00
Ivan Kravets
d27c31a389 Formatter: allow multiline lambdas 2016-08-04 00:55:07 +03:00
Ivan Kravets
941c7ffd07 Remove Python 2.6 code 2016-08-03 23:40:04 +03:00
Ivan Kravets
87d0ead203 Format code with pep8 style 2016-08-03 23:38:20 +03:00
Ivan Kravets
0c9d539a92 Update copyrights 2016-08-03 22:18:51 +03:00
Ivan Kravets
306b77a3f4 Extend a clean target 2016-08-03 22:01:11 +03:00
Ivan Kravets
823e8374b1 Don't show tools in processing output 2016-08-03 20:21:23 +03:00
Ivan Kravets
6b064cb915 Refactor DevPlatform to PioPlatform 2016-08-03 19:58:35 +03:00
Ivan Kravets
11c8ab52f6 Improve "update" command; add test 2016-08-03 17:43:54 +03:00
Ivan Kravets
82a7e67bec Don't show verbose info for LDF when is a clean target 2016-08-03 17:06:30 +03:00
Ivan Kravets
98a6449b06 Show hint about verbosity mode 2016-08-03 01:04:40 +03:00
Ivan Kravets
fbadf83997 Use stable docs 2016-08-03 00:26:48 +03:00
Ivan Kravets
64b8df6d81 Merge branch 'develop' into feature/platformio-30
* develop: (21 commits)
  Use stable docs
  Version bump to 2.11.2 (issues #500, #533, #732, #731, #737, #733, #438, #722, #52, #725)
  Update project configuration template
  Use stable docs
  Implement firmware merging with base firmware for Nordic nRF51 development platform // Resolve #500 , Resolve #533
  Fix firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework // Resolve #732
  Add firmware merging process for nordicnrf51 // Issue #533, #500
  Add OpenOCD as an alternative upload method for atmelsam platform // Issue #732
  Sync flags parser with PlatformIO 3.0 branch // Resolve #738
  Update ``udev`` rules for the new STM32F407DISCOVERY boards // Resolve #731
  Add explanation about "Failed to find MSBuild toolsets directory"
  Add support for local "--echo" for Serial Port Monitor // Resolve #733
  Update history
  Improve support for Microchip PIC32 development platform and ChipKIT boards // Resolve #438
  Fix Project Generator for ESP8266 and ARM mbed based projects
  Switch to gcc-built LwIP library for espressif platform
  Push 2.11.2.dev2
  Fix linking process for microchippic32 platfrom // Issue #438
  Improve Project Generator for PlatformIO IDE (fixes incorrect linter errors)
2016-08-03 00:24:59 +03:00
Ivan Kravets
edc04987d3 Use stable docs 2016-08-02 21:31:12 +03:00
Ivan Kravets
a87c0c8a7a Merge branch 'release/v2.11.2' 2016-08-02 21:25:50 +03:00
Ivan Kravets
40b6072163 Merge branch 'release/v2.11.2' into develop 2016-08-02 21:25:50 +03:00
Ivan Kravets
f15bb1d545 Version bump to 2.11.2 (issues #500, #533, #732, #731, #737, #733, #438, #722, #52, #725) 2016-08-02 21:25:28 +03:00
Ivan Kravets
0b0064afd0 Update project configuration template 2016-08-02 21:21:08 +03:00
Ivan Kravets
4f2c207bb3 Use stable docs 2016-08-02 21:13:58 +03:00
Ivan Kravets
9d1128af51 Implement firmware merging with base firmware for Nordic nRF51 development platform // Resolve #500 , Resolve #533 2016-08-02 21:06:50 +03:00
Ivan Kravets
855c28d956 Fix firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework // Resolve #732 2016-08-02 21:02:39 +03:00
Ivan Kravets
1cb8d61787 Stop Supporting Python 2.6 2016-08-02 20:40:54 +03:00
Ivan Kravets
677cff1230 Stop Supporting Python 2.6 2016-08-02 20:35:28 +03:00
Ivan Kravets
bd430e5afd Makefile with useful targets 2016-08-02 20:19:52 +03:00
Ivan Kravets
758396c9ea PlatformIO Library Manager 3.0 // Resolve #588 , Resolve #414, Resolve #498, Resolve #475, Resolve #410, Resolve #461, Resolve #361, Resolve #507, Resolve #554 2016-08-02 19:10:29 +03:00
Valeriy Koval
a588e88fec Add firmware merging process for nordicnrf51 // Issue #533, #500 2016-08-02 17:32:48 +03:00
Ivan Kravets
5b5a63cb5f Use codecov after success script 2016-08-02 15:50:04 +03:00
Ivan Kravets
26dae8ee94 Skip some tests from coverage 2016-08-02 15:45:05 +03:00
Valeriy Koval
ca2adbac13 Add OpenOCD as an alternative upload method for atmelsam platform // Issue #732 2016-08-02 14:07:12 +03:00
Ivan Kravets
bfab3dac81 Measure code coverage by tests // Resolve #101 2016-08-02 14:04:32 +03:00
Ivan Kravets
e60c2a6ba1 Improve base package manager; VCS and package ID support 2016-08-01 17:05:48 +03:00
Ivan Kravets
e3bf12f65c Rename test for platform command 2016-08-01 14:50:03 +03:00
Ivan Kravets
c728b91914 Check development version automatically 2016-08-01 14:25:11 +03:00
Ivan Kravets
e5b76687a8 Minor changes for PyLint 2016-08-01 00:32:38 +03:00
Ivan Kravets
ef535e399e Cleanup docs 2016-08-01 00:21:52 +03:00
Ivan Kravets
34231327b7 Minor fixes 2016-08-01 00:19:43 +03:00
Ivan Kravets
e49994e205 Fix PyLint warning 2016-08-01 00:16:52 +03:00
Ivan Kravets
513577958f Introduce "Library Dependency Finder" 2016-08-01 00:14:22 +03:00
Ivan Kravets
df0373c4fa Sync flags parser with PlatformIO 3.0 branch // Resolve #738 2016-07-31 20:49:59 +03:00
Ivan Kravets
4c10c85937 Update `udev` rules for the new STM32F407DISCOVERY boards // Resolve #731 2016-07-31 20:21:55 +03:00
Ivan Kravets
22e67e6fdd Rename "lib_compat_level" to "lib_compat_mode" 2016-07-31 15:46:57 +03:00
Ivan Kravets
74af8a5c39 Handle "dependencies" from library and project when build libraries // Issue #709 2016-07-31 00:00:58 +03:00
Ivan Kravets
b364389541 If platformio is installed via brew, show it for upgrade 2016-07-30 19:46:08 +03:00
Ivan Kravets
e6d3f6bc3f Add explanation about "Failed to find MSBuild toolsets directory" 2016-07-30 14:10:15 +03:00
Ivan Kravets
e821a438fe Add support for local "--echo" for Serial Port Monitor // Resolve #733 2016-07-28 23:08:42 +03:00
Ivan Kravets
34b1f3b0a1 Handle includes from CPPPATH for PlatformIOLibBuilder 2016-07-28 22:15:03 +03:00
Ivan Kravets
5c53b93a49 Update history 2016-07-28 18:49:22 +03:00
Ivan Kravets
c61ff611fb Improve support for Microchip PIC32 development platform and ChipKIT boards // Resolve #438 2016-07-28 18:47:20 +03:00
Ivan Kravets
ef9e1a0170 Fix Project Generator for ESP8266 and ARM mbed based projects 2016-07-28 18:44:29 +03:00
Ivan Kravets
3a7032ec9c Show a warning about Circular Dependencies 2016-07-28 17:29:53 +03:00
Ivan Kravets
339acab917 PyLint fix 2016-07-28 16:27:48 +03:00
Ivan Kravets
8c5fabe411 Avoid infinite loop when we've already searched for dependencies 2016-07-28 16:13:49 +03:00
Ivan Kravets
269967a809 Typo fix 2016-07-28 14:39:38 +03:00
Ivan Kravets
b177bb5bfb Remove debug code; a few bugfixes 2016-07-28 14:09:29 +03:00
Ivan Kravets
3c795a215e Fix typo 2016-07-28 02:08:30 +03:00
Ivan Kravets
e3e6676420 Refactor Library Dependency Finder 2016-07-28 01:54:09 +03:00
Ivan Kravets
be85eb3e4a Refactor Library Dependency Finder 2016-07-28 01:52:18 +03:00
Valeriy Koval
98f8c6b25a Switch to gcc-built LwIP library for espressif platform 2016-07-27 14:59:00 +03:00
Ivan Kravets
262b12524b Push 2.11.2.dev2 2016-07-26 20:45:00 +03:00
Valeriy Koval
826b518048 Fix linking process for microchippic32 platfrom // Issue #438 2016-07-26 20:11:50 +03:00
Ivan Kravets
187315fc08 Allow to disable library archiving ("*.ar") // Resolve #719 2016-07-24 20:04:09 +03:00
Ivan Kravets
01c0b45ea2 Introduce "lib_compat_level" option for project configuration file 2016-07-24 18:17:23 +03:00
Ivan Kravets
dfc594fc39 Improve Project Generator for PlatformIO IDE (fixes incorrect linter errors) 2016-07-23 23:11:50 +03:00
Ivan Kravets
2892cb8c2f Fix cmd_init test 2016-07-22 18:16:26 +03:00
Ivan Kravets
fc9c66b0c3 Update examples 2016-07-22 18:03:35 +03:00
Ivan Kravets
6900052ecd Reorder command options 2016-07-22 18:02:04 +03:00
Ivan Kravets
0b862735b2 Push 2.11.2.dev0 2016-07-22 17:23:49 +03:00
Valeriy Koval
a1d9bc7cee Fix ElfToHex builder for microchippic32 2016-07-22 16:43:02 +03:00
Ivan Kravets
1738f44847 Simplify platformio.ini default template 2016-07-19 23:51:22 +03:00
Ivan Kravets
30733e8376 Improve package caching for PkgManager 2016-07-19 23:49:50 +03:00
Ivan Kravets
1029233ec7 Merge branch 'develop' into feature/platformio-30
* develop:
  Update docs for Teensy USB Features // Issue #722
  Implement Teensy 2.0 USB functionality (HID, SERIAL_HID, DISK, MIDI, etc.) // Resolve #722
  Add support for Pinoccio Scout board // Resolve #52
  Fix broken LD Script for Element14 chipKIT Pi board // Resolve #725  Resolve #726
  Fix USB flags processing for teensy platform // Issue #722
  Add Pinoccio board // Issue #52
  Minor improvements for CLion docs
  Improved docs for integration with CLion IDE
  Version bump to 2.11.1 (issues #472, #629, #710, #711, #712, #713, #718)
  Typo fix
  Add "udev" rules for OpenOCD CMSIS-DAP adapters // Resolve #718
  Update history
  Ignore "[platformio]" section from custom project configuration CI
  Bump to 2.11.1b1
  Add Arduino M0 Pro and Tian to the examples // Issue #472
  Fix issue when `pioenvs` folder doesn't exist
  Add more info about `.pioenvs` directory
  Improve CMSIS selection for SAMD21 boards
  Improve support for SAMD21 based boards
  Add contributing guidelines
2016-07-18 22:43:24 +03:00
Ivan Kravets
f16c05c429 Update docs for Teensy USB Features // Issue #722 2016-07-18 22:20:04 +03:00
Ivan Kravets
d7fa255166 Implement Teensy 2.0 USB functionality (HID, SERIAL_HID, DISK, MIDI, etc.) // Resolve #722 2016-07-18 21:06:45 +03:00
Ivan Kravets
60b3fef37a Add support for Pinoccio Scout board // Resolve #52 2016-07-18 20:39:04 +03:00
Ivan Kravets
7b8fb77250 Fix broken LD Script for Element14 chipKIT Pi board // Resolve #725 Resolve #726 2016-07-18 20:36:24 +03:00
Ivan Kravets
1127914512 Fix broken import 2016-07-18 15:47:38 +03:00
Ivan Kravets
5b68d34764 Allow to load PlatformIO project using passed directory 2016-07-18 15:36:08 +03:00
Valeriy Koval
79a4a943dc Fix USB flags processing for teensy platform // Issue #722 2016-07-18 14:52:25 +03:00
Valeriy Koval
7ad8d08037 Add Pinoccio board // Issue #52 2016-07-18 12:14:48 +03:00
Ivan Kravets
f10202c00b Refactor base package manager; Full VCS support as external package item 2016-07-18 01:38:35 +03:00
Ivan Kravets
7b3a235bd7 Don't duplicate source code to .pioenvs directory 2016-07-17 19:19:53 +03:00
Ivan Kravets
e264788f8e Fix non renamed PLATFORM variable 2016-07-17 16:36:05 +03:00
Ivan Kravets
49f5c1d078 Fix PyLint "line too long" warning 2016-07-17 16:19:24 +03:00
Ivan Kravets
8eed54ca45 Refactor PLATFORM and FRAMEWORK build variables with PIO prefix 2016-07-17 16:05:28 +03:00
Ivan Kravets
daac1b2590 Print human-readable information when processing environments without // Resolve #721 2016-07-17 00:48:59 +03:00
Ivan Kravets
70031040b3 Rename test --ignore option to --skip 2016-07-16 18:00:55 +03:00
Ivan Kravets
da6f424b11 Export root "env" to the extra script 2016-07-16 00:19:56 +03:00
Ivan Kravets
02e883b55c Implement "lib_extra_dirs" option for project environment // Resolve #537 2016-07-15 23:51:33 +03:00
Ivan Kravets
9838aef6b8 Check library compatibility with project environment before building // Resolve #415 2016-07-15 23:06:10 +03:00
Ivan Kravets
2bfa3517f0 Add license field to library.json // Resolve #522 2016-07-15 19:57:55 +03:00
Ivan Kravets
06494729f1 Fix for Python 2.6 2016-07-15 19:40:11 +03:00
Ivan Kravets
8726f8317c Typo fix 2016-07-15 18:59:10 +03:00
Ivan Kravets
c7d9ab8474 Allow to use extra build options as array for library.json // Issue #289 2016-07-15 18:41:16 +03:00
Ivan Kravets
4997528f6a Handle specific extra build flags from library.json // Resolve #289 2016-07-15 16:12:07 +03:00
Ivan Kravets
4b622b8603 Improve library builder for Arduino lib structure 2016-07-13 13:24:44 +03:00
Ivan Kravets
4f57cc52d4 Minor improvements for CLion docs 2016-07-13 11:56:20 +03:00
Ivan Kravets
ba23475425 Improved docs for integration with CLion IDE 2016-07-13 11:49:52 +03:00
Ivan Kravets
f88466f3cd Merge branch 'release/v2.11.1' 2016-07-12 19:37:00 +03:00
Ivan Kravets
60be939a1f Merge branch 'release/v2.11.1' into develop 2016-07-12 19:37:00 +03:00
Ivan Kravets
2dd01247e1 Version bump to 2.11.1 (issues #472, #629, #710, #711, #712, #713, #718) 2016-07-12 19:34:14 +03:00
Ivan Kravets
77a4d3f773 Typo fix 2016-07-12 19:29:49 +03:00
Ivan Kravets
6cbd286836 Add "udev" rules for OpenOCD CMSIS-DAP adapters // Resolve #718 2016-07-12 19:26:33 +03:00
Ivan Kravets
b447e0aeab Update history 2016-07-11 23:08:08 +03:00
Ivan Kravets
b165c3f543 Ignore "[platformio]" section from custom project configuration CI 2016-07-11 22:40:37 +03:00
Ivan Kravets
d246ef9a2e Bump to 2.11.1b1 2016-07-11 21:04:40 +03:00
Ivan Kravets
8fd553fbfc Add Arduino M0 Pro and Tian to the examples // Issue #472 2016-07-11 19:52:47 +03:00
Ivan Kravets
f4cebfdbae Fix issue when pioenvs folder doesn't exist 2016-07-11 19:44:36 +03:00
Ivan Kravets
2fdc57055b Add more info about .pioenvs directory 2016-07-11 19:34:36 +03:00
Valeriy Koval
03b0b61aa1 Improve CMSIS selection for SAMD21 boards 2016-07-11 19:26:07 +03:00
Valeriy Koval
3984f80bae Improve support for SAMD21 based boards 2016-07-11 19:12:10 +03:00
Ivan Kravets
8427b9c7ee Create BasePkgManager for PlatformManager and Library Manager 2016-07-11 13:27:30 +03:00
Ivan Kravets
581fd356cd Add contributing guidelines 2016-07-10 19:15:55 +03:00
Ivan Kravets
d88997c418 Typo fix 2016-07-09 19:30:02 +03:00
Ivan Kravets
d6b38dafc6 Merge branch 'develop' into feature/platformio-30
* develop:
  Remove debug info
  Add "Rebuild C/C++ Project Index" target to CLion and Eclipse IDEs
  Iterating the dictionary directly instead of calling .keys()
  Iterating the dictionary directly instead of calling .keys()
  Add example dynamic `build_flags`
  Add new articles
  Update examples
2016-07-09 19:01:43 +03:00
Ivan Kravets
0056651447 Remove debug info 2016-07-09 18:49:35 +03:00
Ivan Kravets
a0d9173b4f Add "Rebuild C/C++ Project Index" target to CLion and Eclipse IDEs 2016-07-09 18:44:45 +03:00
Ivan Kravets
f12c721f44 Iterating the dictionary directly instead of calling .keys() 2016-07-09 15:26:38 +03:00
Ivan Kravets
a73a710364 Iterating the dictionary directly instead of calling .keys() 2016-07-09 15:16:42 +03:00
Ivan Kravets
e33e950712 Add example dynamic build_flags 2016-07-09 14:38:49 +03:00
Ivan Kravets
f767feeef9 Add new articles 2016-07-07 00:26:33 +03:00
Ivan Kravets
fd924f29f3 Update examples 2016-07-06 15:28:39 +03:00
Ivan Kravets
13112ad6d4 Fix issue when development platform doesn't support frameworks 2016-07-06 15:27:46 +03:00
Ivan Kravets
b043a2258f Merge branch 'develop' into feature/platformio-30
* develop: (27 commits)
  Update boards list
  Add Arduino M0 as a separate board
  Update history
  Update microchippic32 platform and boards
  Fix PyLint warning
  Keep user changes for ".gitignore" file when re-generate/update project data
  Documented uploading of EEPROM data
  Push 2.11.1.dev1
  Automatically install dependent upload tools // Issue #472
  Split source files to HEADERS and SOURCES when generate project for Qt Creator IDE // Resolve #713
  Improve project generator for CLion IDE
  Fix missing trailing ``\`` for the source files list when generate project for Qt Creator IDE // Resolve #711
  * Fix missed ``--boot`` flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) // Resolve #710
  Initial support for Arduino M0/Tian boards // Issue #472
  Update project template for Qt Creator // Issue #711
  Fix missed --boot flag for sam3x uploader // Issue # 710
  Auto-remove project cache when PlatformIO is upgraded
  Version bump to 2.11.0 (issues #472, #520, #614, #620, #685, #698, #699)
  Update history
  Update espressif platform according to the new framework version
2016-07-06 15:04:30 +03:00
Ivan Kravets
7f47a2fd25 Update boards list 2016-07-06 13:27:36 +03:00
Valeriy Koval
8fe8318c77 Add Arduino M0 as a separate board 2016-07-06 11:02:36 +03:00
Ivan Kravets
ae81ec043d Update history 2016-07-05 17:40:00 +03:00
Valeriy Koval
9ba96d3673 Update microchippic32 platform and boards 2016-07-05 17:06:14 +03:00
Ivan Kravets
db204941ed Fix PyLint warning 2016-07-05 13:28:22 +03:00
Ivan Kravets
5cd3f9d84d Keep user changes for ".gitignore" file when re-generate/update project data 2016-07-05 13:18:31 +03:00
Ivan Kravets
9160e61ac7 Documented uploading of EEPROM data 2016-07-05 12:34:37 +03:00
Ivan Kravets
63ae732e72 Push 2.11.1.dev1 2016-07-05 00:14:00 +03:00
Ivan Kravets
ac9c3f88f9 Automatically install dependent upload tools // Issue #472 2016-07-05 00:11:48 +03:00
Ivan Kravets
52f1502051 Split source files to HEADERS and SOURCES when generate project for Qt Creator IDE // Resolve #713 2016-07-04 23:42:19 +03:00
Ivan Kravets
e8acc9ca39 Improve project generator for CLion IDE 2016-07-04 23:30:34 +03:00
Ivan Kravets
935f7cd5c3 Fix missing trailing `\` for the source files list when generate project for Qt Creator IDE // Resolve #711 2016-07-04 20:36:02 +03:00
Ivan Kravets
e8290054c2 * Fix missed `--boot` flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) // Resolve #710 2016-07-04 20:35:29 +03:00
Valeriy Koval
2c7c74743d Initial support for Arduino M0/Tian boards // Issue #472 2016-07-04 19:28:02 +03:00
Valeriy Koval
4dd90d5493 Update project template for Qt Creator // Issue #711 2016-07-04 18:01:49 +03:00
Valeriy Koval
241ad8174f Fix missed --boot flag for sam3x uploader // Issue # 710 2016-07-04 13:40:43 +03:00
Ivan Kravets
98f5f73a41 Auto-remove project cache when PlatformIO is upgraded 2016-06-29 13:17:06 +03:00
Ivan Kravets
62ad72fb11 Merge branch 'release/v2.11.0' 2016-06-28 18:04:20 +03:00
Ivan Kravets
4552931b95 Merge branch 'release/v2.11.0' into develop 2016-06-28 18:04:20 +03:00
Ivan Kravets
39f9789fa1 Version bump to 2.11.0 (issues #472, #520, #614, #620, #685, #698, #699) 2016-06-28 18:04:08 +03:00
Ivan Kravets
8d7ff7f37e Update history 2016-06-28 18:01:08 +03:00
Valeriy Koval
59606410f4 Update espressif platform according to the new framework version 2016-06-28 14:10:18 +03:00
Valeriy Koval
486529b112 Add initial support for Arduino M0 Pro board // Issue #472 2016-06-28 11:27:49 +03:00
Ivan Kravets
b16938937b Merge pull request #706 from jphollanti/doc_updates
Doc updates
2016-06-26 21:43:22 +03:00
jphollanti
2ba3603a3d add command example to create library examples 2016-06-26 11:29:46 +03:00
jphollanti
f6b9fd02b2 Added mention about building docs to README.rst 2016-06-26 11:19:13 +03:00
jphollanti
85becf861f Add a mention about library managers 24 hour update cycle 2016-06-26 11:12:02 +03:00
Ivan Kravets
7344828cf7 Update history 2016-06-25 13:34:51 +03:00
Ivan Kravets
51a9565a72 Refactored lib_force and lib_ignore logic 2016-06-25 13:23:24 +03:00
Ivan Kravets
bc30bf5566 Typo fixes 2016-06-24 12:54:01 +03:00
Ivan Kravets
dd111aac4a Library deep search for dependency finder 2016-06-23 23:25:13 +03:00
Ivan Kravets
476b43d539 Fix issue with super() 2016-06-23 21:39:24 +03:00
Ivan Kravets
1d919e5874 New articles 2016-06-23 20:21:48 +03:00
Ivan Kravets
1089c55b26 Update history 2016-06-23 17:34:00 +03:00
Ivan Kravets
d4a866414f Minor fixes 2016-06-23 15:51:08 +03:00
Ivan Kravets
2ed00064e2 Fix PyLint warning 2016-06-22 23:58:42 +03:00
Ivan Kravets
1d7add213e Embedded Board compatibility with more than one development platform // Resolve #456 2016-06-22 23:21:36 +03:00
Ivan Kravets
3572b60afd Show detailed build information about dependent libraries // Resolve #617 2016-06-22 23:17:02 +03:00
Ivan Kravets
f8db1d11a7 New Library Build System: intelligent dependency finder that interprets C Preprocessor conditional macros // Resolve #432 2016-06-22 21:25:44 +03:00
Ivan Kravets
bb7bf4e91b Fix issue with board extraFlags 2016-06-22 19:56:22 +03:00
Valeriy Koval
51dd86e6da Add new SAMD21 boards // Issue #520, #620 2016-06-21 15:03:09 +03:00
Ivan Kravets
4736bfeea6 Fix missed build.extra_flags for the board 2016-06-20 21:47:13 +03:00
Ivan Kravets
d656d6d594 Duplicate source files to pioenvs 2016-06-20 21:37:10 +03:00
Ivan Kravets
76e07d5012 Refactor source files finder 2016-06-20 20:33:53 +03:00
Ivan Kravets
037b520b2c Merge branch 'develop' into feature/platformio-30
* develop:
  Use env.Flatten to manipulate with CPPDEFINES
  Update name of the OpenEnergyMonitor board // Resolve #699
  Fix PyLint warning
  Remove duplicated flags // Issue #698
  Disable dependancy info
  Revert back previous LINKFLAGS
  Better removing unnecessary flags using ``build_unflags`` option // Resolve #698
  Fix unnecessary uppercase for target includes
2016-06-19 19:21:07 +03:00
Ivan Kravets
748437ef7a Use env.Flatten to manipulate with CPPDEFINES 2016-06-18 23:37:58 +03:00
Ivan Kravets
d219999892 Update name of the OpenEnergyMonitor board // Resolve #699 2016-06-18 13:26:04 +03:00
Ivan Kravets
53bd1df8e5 Fix PyLint warning 2016-06-18 01:15:15 +03:00
Ivan Kravets
2b88ef134b Remove duplicated flags // Issue #698 2016-06-18 00:56:04 +03:00
Ivan Kravets
2eca835ec7 Disable dependancy info 2016-06-18 00:53:23 +03:00
Ivan Kravets
8d94a62b9c Revert back previous LINKFLAGS 2016-06-18 00:52:46 +03:00
Ivan Kravets
4035b9ac6c Better removing unnecessary flags using `build_unflags` option // Resolve #698 2016-06-18 00:38:00 +03:00
Ivan Kravets
8a13a18737 Fix PyLint warning 2016-06-16 00:53:19 +03:00
Ivan Kravets
8a67ea9ca2 Allow to ignore tests using glob patterns // Issue #408 2016-06-16 00:36:04 +03:00
Valerii Koval
31a110c37f Fix unnecessary uppercase for target includes 2016-06-15 20:55:45 +03:00
Ivan Kravets
6a08b2126f Merge branch 'develop' into feature/platformio-30
* develop:
  Fix issue with ``platformio init --ide`` command for Python 2.6
  Version bump to 2.10.3
  Fix issue with appending PIO version to Build Defines
  Add test for `init --ide eclipse`
  Version bump to 2.10.2 (issues #695)
  Fix firmware uploading to Arduino/Genuino 101 // Resolve #695
  Use $PLATFORM from build environment instead from the board config
  Update Intel ARC32 Arduino framework to v1.0.6 // Issue #695
  Update Intel ARC32 Arduino framework to v1.0.6
  Add support for ST Nucleo L031K6 board to ARM mbed framework
  Revert mcu option for genuino101
  Update intel_arc32 platform
  Update HISTORY.rst
  Fix upload size checker
  Process "$BUILD_UNFLAGS" variable
  Restore PIO macros if it was deleted by framework
2016-06-15 20:11:22 +03:00
Ivan Kravets
47c238b1eb Fix issue with `platformio init --ide` command for Python 2.6 2016-06-15 19:30:37 +03:00
Ivan Kravets
72c4db25f0 Merge branch 'release/v2.10.3' into develop 2016-06-15 18:46:57 +03:00
Ivan Kravets
50f9186682 Merge branch 'release/v2.10.3' 2016-06-15 18:46:56 +03:00
Ivan Kravets
2cd22f725e Version bump to 2.10.3 2016-06-15 18:46:41 +03:00
Ivan Kravets
1cab0c168e Fix issue with appending PIO version to Build Defines 2016-06-15 18:42:56 +03:00
Ivan Kravets
5dac4e3af6 Add test for init --ide eclipse 2016-06-15 18:42:25 +03:00
Ivan Kravets
09032fb4a5 Merge branch 'release/v2.10.2' 2016-06-15 17:57:39 +03:00
Ivan Kravets
48a8086519 Merge branch 'release/v2.10.2' into develop 2016-06-15 17:57:39 +03:00
Ivan Kravets
c62a3f8ee6 Version bump to 2.10.2 (issues #695) 2016-06-15 17:57:28 +03:00
Ivan Kravets
682e435ded Fix firmware uploading to Arduino/Genuino 101 // Resolve #695 2016-06-15 16:02:04 +03:00
Ivan Kravets
cdcf075635 Use $PLATFORM from build environment instead from the board config 2016-06-15 14:56:31 +03:00
Ivan Kravets
7e027db02b Update Intel ARC32 Arduino framework to v1.0.6 // Issue #695 2016-06-15 14:52:11 +03:00
Ivan Kravets
4abaa67580 Update Intel ARC32 Arduino framework to v1.0.6 2016-06-15 14:48:46 +03:00
Ivan Kravets
13d43425e5 Add support for ST Nucleo L031K6 board to ARM mbed framework 2016-06-15 14:48:27 +03:00
Valeriy Koval
0ba315243b Revert mcu option for genuino101 2016-06-15 14:45:08 +03:00
Ivan Kravets
1ac1e93bbf Add links to the main command and repo with examples 2016-06-15 14:36:10 +03:00
Valeriy Koval
9655ca229f Update intel_arc32 platform 2016-06-15 14:31:07 +03:00
Ivan Kravets
4b553dd659 Revert link to the issue 2016-06-15 14:13:43 +03:00
Ivan Kravets
bb22a1297b Unit Testing for Embedded // Resolve #408 2016-06-15 14:10:42 +03:00
Ivan Kravets
f5727af40e Fix upload size checker 2016-06-15 13:25:35 +03:00
Ivan Kravets
b842a1d9b1 Update HISTORY.rst 2016-06-15 13:18:29 +03:00
Ivan Kravets
2978133862 Fix upload size checker 2016-06-15 00:59:44 +03:00
Ivan Kravets
7422b99b42 Process "$BUILD_UNFLAGS" variable 2016-06-14 20:53:30 +03:00
Ivan Kravets
d04a7de26b Restore PIO macros if it was deleted by framework 2016-06-14 20:48:56 +03:00
Ivan Kravets
4383f81c0f Restore PIO macros if it was deleted by framework 2016-06-14 20:47:25 +03:00
Ivan Kravets
36a9bf69de Merge branch 'develop' into feature/platformio-30
* develop:
  Add support for ST Nucleo L031K6 board to ARM mbed framework
  Fix typo
  Fix pylint error
  Update history
  Improve linker flags handling for mbed
  Update examples
  Improve include selection for mbed boards with a custom vendor
  Re-submit a package to PyPI
  Version bump to 2.10.0 (issues #683, #687, #688, #689, #691)
  Pass PlatformIO macros with version to libs
  Update ARM mbed framework package to v121
  Typo fixes
  Move custom platform and board to separate page
  Add new ST Nucleo board
  Update build script for mbed framework
  Improve firmware uploading to Arduino Leonardo based boards // Resolve #691
  Typo fix
2016-06-14 20:10:50 +03:00
Ivan Kravets
68d834fba0 Add support for ST Nucleo L031K6 board to ARM mbed framework 2016-06-14 19:59:17 +03:00
Ivan Kravets
64c9004036 Fix typo 2016-06-14 19:54:27 +03:00
Valeriy Koval
350fb885b8 Fix pylint error 2016-06-14 19:44:57 +03:00
Ivan Kravets
8d03f2dc80 Update history 2016-06-14 19:41:34 +03:00
Valeriy Koval
220dcd0f5c Improve linker flags handling for mbed 2016-06-14 19:29:54 +03:00
Ivan Kravets
3671d7549d Update examples 2016-06-14 18:08:35 +03:00
Valeriy Koval
a38910b381 Improve include selection for mbed boards with a custom vendor 2016-06-14 13:00:51 +03:00
Ivan Kravets
941b8e84f5 Merge branch 'release/v2.10.1' 2016-06-13 21:32:07 +03:00
Ivan Kravets
382c860d9b Merge branch 'release/v2.10.1' into develop 2016-06-13 21:32:07 +03:00
Ivan Kravets
3dd51a442d Re-submit a package to PyPI 2016-06-13 21:31:17 +03:00
Ivan Kravets
ed21e8c7b2 Merge branch 'release/v2.10.0' 2016-06-13 19:49:55 +03:00
Ivan Kravets
2b6ba32b2c Merge branch 'release/v2.10.0' into develop 2016-06-13 19:49:55 +03:00
Ivan Kravets
14f582faeb Version bump to 2.10.0 (issues #683, #687, #688, #689, #691) 2016-06-13 19:49:37 +03:00
Ivan Kravets
768ac77ea2 Pass PlatformIO macros with version to libs 2016-06-13 19:46:54 +03:00
Ivan Kravets
f75a7c91eb Update ARM mbed framework package to v121 2016-06-13 19:42:35 +03:00
Ivan Kravets
104132c5d3 Typo fixes 2016-06-13 19:24:13 +03:00
Ivan Kravets
3a315c5575 Move custom platform and board to separate page 2016-06-13 19:23:24 +03:00
Valeriy Koval
91fb714250 Add new ST Nucleo board 2016-06-13 17:46:35 +03:00
Valeriy Koval
10d868efa4 Update build script for mbed framework 2016-06-13 17:45:28 +03:00
Ivan Kravets
3b8bc42266 Improve firmware uploading to Arduino Leonardo based boards // Resolve #691 2016-06-11 23:35:29 +03:00
Ivan Kravets
41617f5560 Update documentation for the new decentralised development platforms // Resolve #479 2016-06-11 17:37:32 +03:00
Ivan Kravets
9fb7f251f6 Typo fix 2016-06-11 16:49:25 +03:00
Ivan Kravets
d8ca9d79c3 Merge branch 'develop' into feature/platformio-30
* develop:
  Improve checking for the program size before uploading // Issue #689
  Refactor board "hwid" option to "hwids"
  Add HWID for NodeMCU board
  Better checking of program size before uploading // Issue #689
2016-06-11 16:46:34 +03:00
Ivan Kravets
5398dbef95 Improve checking for the program size before uploading // Issue #689 2016-06-11 15:39:06 +03:00
Ivan Kravets
a4345cedc5 Refactor board "hwid" option to "hwids" 2016-06-11 15:12:27 +03:00
Ivan Kravets
ba574667c7 Add HWID for NodeMCU board 2016-06-11 13:35:02 +03:00
Ivan Kravets
f2c1e279c9 Better checking of program size before uploading // Issue #689 2016-06-11 00:55:38 +03:00
Ivan Kravets
51ad0ed830 Merge branch 'develop' into feature/platformio-30
* develop:
  Check program size before uploading to the board // Resolve #689
  Fix issue with "-L relative/path" when parsing "build_flags" // Resolve #688
  Fix upload speed for OpenEnergyMonitor board
2016-06-11 00:36:27 +03:00
Ivan Kravets
60ff546fec Check program size before uploading to the board // Resolve #689 2016-06-11 00:02:36 +03:00
Ivan Kravets
f6088cbbe1 Fix issue with "-L relative/path" when parsing "build_flags" // Resolve #688 2016-06-10 19:54:17 +03:00
Ivan Kravets
4b093dcdbb Fix upload speed for OpenEnergyMonitor board 2016-06-10 18:01:46 +03:00
Ivan Kravets
4f39a2e3da Merge branch 'develop' into feature/platformio-30
* develop:
  Add support for STM32F0 boards for SPL framework // Issue #683
  Add support for emonPi the OpenEnergyMonitor system // Resolve #687
  Fix path to dfu util when it contains spaces.
2016-06-10 14:40:26 +03:00
Ivan Kravets
c9020d4879 Add support for STM32F0 boards for SPL framework // Issue #683 2016-06-09 19:17:19 +03:00
Ivan Kravets
c5b5e80de4 Add support for emonPi the OpenEnergyMonitor system // Resolve #687 2016-06-09 18:50:08 +03:00
Valeriy Koval
c1a8fdb940 Fix path to dfu util when it contains spaces. 2016-06-09 11:39:44 +03:00
Ivan Kravets
ff3e100b33 Minor fixes 2016-06-08 14:00:40 +03:00
Ivan Kravets
e892473af7 Refactor AutodetectUploadPort 2016-06-08 13:47:03 +03:00
Ivan Kravets
3a143270c2 Handle custom boards 2016-06-08 13:34:49 +03:00
Ivan Kravets
0aa2db8e91 Merge branch 'develop' into feature/platformio-30
* develop:
  Add support for Arduboy DevKit

# Conflicts:
#	platformio/__init__.py
#	platformio/boards/misc.json
2016-06-06 18:14:53 +03:00
Ivan Kravets
1c8de51054 Add support for Arduboy DevKit 2016-06-06 18:13:12 +03:00
Ivan Kravets
d3ab58a487 Merge branch 'develop' into feature/platformio-30
* develop:
  Typo fix
  Version bump to 2.9.4
  Show "udev" warning only for the Linux OS while upload firmware
  Version bump to 2.9.3
  Notify Linux user to install PlatformIO udev rules
  Add new article
  Add support for Arduboy
  Remove unused imports
  Refactor firmware uploading to the embedded boards with SAM-BA bootloader
  Fix firmware uploading to the embedded boards with SAM-BA bootloader
  Add explanation about waiting for the new serial port
  Hook when new serial port is the same in boot mode
  Revert back some code linked with uploading to Leonardo/Due

# Conflicts:
#	platformio/__init__.py
#	platformio/boards/misc.json
#	platformio/builder/scripts/atmelavr.py
#	platformio/builder/scripts/atmelsam.py
#	platformio/builder/tools/pioupload.py
2016-06-06 14:33:09 +03:00
Ivan Kravets
34c171f9fd Typo fix 2016-06-04 00:30:02 +03:00
Ivan Kravets
9b2d49455a Merge branch 'release/v2.9.4' 2016-06-04 00:26:01 +03:00
Ivan Kravets
730b2371df Merge branch 'release/v2.9.4' into develop 2016-06-04 00:26:01 +03:00
Ivan Kravets
f1afa864cd Version bump to 2.9.4 2016-06-04 00:25:15 +03:00
Ivan Kravets
439cd77db8 Show "udev" warning only for the Linux OS while upload firmware 2016-06-04 00:23:33 +03:00
Ivan Kravets
4c35870dff Merge branch 'release/v2.9.3' 2016-06-03 21:04:04 +03:00
Ivan Kravets
9f3624d26e Merge branch 'release/v2.9.3' into develop 2016-06-03 21:04:04 +03:00
Ivan Kravets
ac4e8514db Version bump to 2.9.3 2016-06-03 21:03:48 +03:00
Ivan Kravets
646123f9ab Notify Linux user to install PlatformIO udev rules 2016-06-03 20:57:20 +03:00
Ivan Kravets
11ef9dbdcb Add new article 2016-06-03 20:40:24 +03:00
Ivan Kravets
f3526b1d95 Add support for Arduboy 2016-06-03 20:14:37 +03:00
Ivan Kravets
45d5159fe3 Remove unused imports 2016-06-03 18:46:28 +03:00
Ivan Kravets
439e6b4ccf Refactor firmware uploading to the embedded boards with SAM-BA bootloader 2016-06-03 18:35:47 +03:00
Ivan Kravets
fb08322c17 Fix firmware uploading to the embedded boards with SAM-BA bootloader 2016-06-03 13:58:51 +03:00
Ivan Kravets
c815e0fadc Add explanation about waiting for the new serial port 2016-06-03 01:29:18 +03:00
Ivan Kravets
190ffab76d Hook when new serial port is the same in boot mode 2016-06-03 01:16:16 +03:00
Ivan Kravets
882bddf77e Revert back some code linked with uploading to Leonardo/Due 2016-06-03 00:42:52 +03:00
Ivan Kravets
06e42dc689 Merge branch 'develop' into feature/platformio-30
* develop:
  Version bump to 2.9.2 (issues #641, #645, #648, #652, #664, #665, #666, #671, #674)
  Fix issue with ARM mbed framework when abstract class breaks compile for LPC1768 // Resolve #666
  Fix issue with ARM mbed framework and multiple definition errors   on FRDM-KL46Z board // Resolve #641
  List embedded boards in docs
  Fix multiple definition in mbed framework when using abstract class // Issue #641, #666
  Add "stlink" as the default uploader for STM32 Discovery boards // Resolve #665
  Implement grep serial ports for Windows
  Remove unused imports
  Minor improvements
  Fix PyLint's "misplaced-comparison-constant"
  Use $PROGNAME instead static name when looking for the firmware
  Update title of the article
  Add new articles
  Link Community Forums FAQ with Docs FAQ
  Grep for "/dev/cu.*" on OS X
  Skip grep search for serial ports on Windows machines
  Improve firmware uploading to Arduino Leonardo based boards
  Add MinGW to the PATH

# Conflicts:
#	docs/index.rst
#	docs/platforms/creating_board.rst
#	docs/projectconf.rst
#	docs/userguide/platforms/cmd_install.rst
#	platformio/__init__.py
#	platformio/builder/scripts/atmelavr.py
#	platformio/builder/scripts/atmelsam.py
#	platformio/builder/scripts/frameworks/mbed.py
2016-06-02 23:53:24 +03:00
Ivan Kravets
4f1e1a38c9 Merge branch 'release/v2.9.2' 2016-06-02 20:57:09 +03:00
Ivan Kravets
a9c02c9cbc Merge branch 'release/v2.9.2' into develop 2016-06-02 20:57:09 +03:00
Ivan Kravets
331cfb5b54 Version bump to 2.9.2 (issues #641, #645, #648, #652, #664, #665, #666, #671, #674) 2016-06-02 20:56:52 +03:00
Ivan Kravets
0b80ed6c2b Fix issue with ARM mbed framework when abstract class breaks compile for LPC1768 // Resolve #666 2016-06-02 20:47:09 +03:00
Ivan Kravets
38967eab64 Fix issue with ARM mbed framework and multiple definition errors on FRDM-KL46Z board // Resolve #641 2016-06-02 20:45:43 +03:00
Ivan Kravets
3ad1ad4ef1 List embedded boards in docs 2016-06-02 20:41:10 +03:00
Valeriy Koval
0c8f469246 Fix multiple definition in mbed framework when using abstract class // Issue #641, #666 2016-06-02 17:27:52 +03:00
Ivan Kravets
03d9351dec Add "stlink" as the default uploader for STM32 Discovery boards // Resolve #665 2016-06-02 16:41:04 +03:00
Ivan Kravets
b3fc6617e5 Implement grep serial ports for Windows 2016-06-02 14:57:44 +03:00
Ivan Kravets
1fdc2e3091 Remove unused imports 2016-06-02 01:13:34 +03:00
Ivan Kravets
c773c8f5d5 Minor improvements 2016-06-02 01:09:05 +03:00
Ivan Kravets
b188a05b69 Fix PyLint's "misplaced-comparison-constant" 2016-06-02 00:14:02 +03:00
Ivan Kravets
d7ca3f15a4 Use $PROGNAME instead static name when looking for the firmware 2016-06-01 23:33:15 +03:00
Ivan Kravets
406e240de1 Update title of the article 2016-06-01 22:14:37 +03:00
Ivan Kravets
f3689ac157 Add new articles 2016-06-01 21:30:30 +03:00
Ivan Kravets
ce72ee04f4 Link Community Forums FAQ with Docs FAQ 2016-06-01 20:36:13 +03:00
Ivan Kravets
694121d49a Grep for "/dev/cu.*" on OS X 2016-06-01 20:35:05 +03:00
Ivan Kravets
250b39bcc8 Skip grep search for serial ports on Windows machines 2016-06-01 20:26:10 +03:00
Ivan Kravets
c74a2b4529 Improve firmware uploading to Arduino Leonardo based boards 2016-06-01 20:24:08 +03:00
Ivan Kravets
ff7bc9092d Patch development platforms after upgrade process // Issue #479 2016-05-31 23:43:27 +03:00
Ivan Kravets
d6b6fa2baf Install development platform from local dir and VCS(git, hg, svn) // Issue #479 2016-05-31 00:22:25 +03:00
Valeriy Koval
bfd66deb37 Initial support for unit testing // Issue #408 2016-05-30 17:50:37 +03:00
Ivan Kravets
bf149c075d Auto install too-unity for hardware unit testing 2016-05-30 14:31:58 +03:00
Ivan Kravets
a1e7ce415b Add MinGW to the PATH 2016-05-30 13:15:19 +03:00
Ivan Kravets
2ecc007615 Implement packages updating; other improvements to Package Manager // Issue #479 2016-05-29 23:28:50 +03:00
Ivan Kravets
7a053e6df2 Merge branch 'develop' into feature/platformio-30
* develop:
  Automatically add source directory to "CPPPATH" of Build System
2016-05-29 18:17:34 +03:00
Ivan Kravets
ab15bafc5b Automatically add source directory to "CPPPATH" of Build System 2016-05-29 18:09:21 +03:00
Ivan Kravets
806f6cd2ab Fix platform installer if platform is already installed 2016-05-29 17:59:08 +03:00
Ivan Kravets
b7921c7dcb Merge branch 'develop' into feature/platformio-30
* develop:
  Fixed configuration data for TI LaunchPads based on msp430fr4133 and msp430fr6989 MCUs // Resolve #676
2016-05-29 17:18:29 +03:00
Ivan Kravets
f6014d2e52 Fixed configuration data for TI LaunchPads based on msp430fr4133 and msp430fr6989 MCUs // Resolve #676 2016-05-29 16:47:54 +03:00
Ivan Kravets
420c93aaa3 Automatically install missed development platform for run command 2016-05-29 00:50:05 +03:00
Ivan Kravets
23ef51a4e8 Update tests according new development platforms architecture // Issue #479 2016-05-28 22:51:33 +03:00
Ivan Kravets
c73dd60bd1 Merge branch 'develop' into feature/platformio-30
* develop:
  Install tox manually
  Simplified documentation for Continuous integration with AppVeyor // Resolve #671
  Fix broken links to project examples
  Add stlink as the default uploader for disco boards // Issue #665
  Specify supported types of library repository
2016-05-28 20:42:50 +03:00
Ivan Kravets
35a602cfef Install tox manually 2016-05-28 20:27:16 +03:00
Ivan Kravets
6ecd86a244 Simplified documentation for Continuous integration with AppVeyor // Resolve #671 2016-05-28 20:22:15 +03:00
Ivan Kravets
0cb28f906e Fix broken links to project examples 2016-05-28 19:09:24 +03:00
Ivan Kravets
426389b255 Fix package removing when it is symbolically linked 2016-05-27 15:50:57 +03:00
Ivan Kravets
825c60e2bd Automatically add SCons to the packages list if it is missed in platform manifest // Issue #479 2016-05-27 14:47:22 +03:00
Ivan Kravets
46893e2f04 Stop build process when framework is used and board is not specified 2016-05-27 12:48:10 +03:00
Ivan Kravets
567f9c06cc Disable platform auto-update (temporary) 2016-05-27 12:35:20 +03:00
Ivan Kravets
9a1f1ddb8b Allow to install development platform from local directory // Issue #479 2016-05-26 22:33:17 +03:00
Ivan Kravets
d68eb28629 Decentralized architecture for development platforms // Issue #479 2016-05-26 19:43:36 +03:00
Valeriy Koval
1a305f2dd7 Add stlink as the default uploader for disco boards // Issue #665 2016-05-25 11:29:26 +03:00
Ivan Kravets
cd22f5197b Specify supported types of library repository 2016-05-24 19:20:12 +03:00
Ivan Kravets
349b159a7b Move boards and platforms to separate repos // Issue #479 2016-05-23 22:28:48 +03:00
Ivan Kravets
b3d27b42ad Add key-binding for Toggle Build Panel 2016-05-18 15:46:59 +03:00
Ivan Kravets
ab3a5331c1 New article by Pedro Minatel 2016-05-12 19:51:22 +03:00
Ivan Kravets
9cbe12fbb8 New article by Pedro Minatel 2016-05-12 19:51:04 +03:00
Ivan Kravets
056cc08d68 Fix issue with `src_filter` option for Windows OS // Resolve #652 2016-05-10 15:36:00 +03:00
Ivan Kravets
69effbfedb Add new articles; Link to the Virtual IoT Meetup 2016-05-07 00:16:39 +03:00
Ivan Kravets
d881dfb63c Typo fix 2016-05-06 19:52:27 +03:00
Ivan Kravets
d89b2828e3 Add "Keep build panel visible" to PlatformIO IDE FAQ 2016-05-06 18:22:09 +03:00
Valeriy Koval
75ca6c6e52 Add several new mbed boards 2016-05-06 15:26:56 +03:00
Ivan Kravets
304c8b7184 Add support for MightyCore ATmega8535 board // Issue #585 2016-05-06 15:18:48 +03:00
Ivan Kravets
3c46c17242 Typo fix 2016-05-04 15:51:45 +03:00
Ivan Kravets
aca646e6b9 Use HTTP mirror for Package Manager in case with SSL errors // Resolve #645 2016-05-04 15:50:00 +03:00
Ivan Kravets
b587927687 Sync examples 2016-05-04 15:11:15 +03:00
Ivan Kravets
3edc336f62 Fix bug with "env_default" when "pio run -e" is used 2016-05-04 15:10:08 +03:00
Ivan Kravets
eee6685c59 Update platforms liste README 2016-05-04 14:59:08 +03:00
Ivan Kravets
76b5434157 Merge branch 'release/v2.9.1' into develop 2016-04-30 18:20:46 +03:00
Ivan Kravets
a05f55554f Merge branch 'release/v2.9.1' 2016-04-30 18:20:45 +03:00
Ivan Kravets
ea800f35b7 Version bump to 2.9.1 (issues #639) 2016-04-30 18:20:31 +03:00
Ivan Kravets
4c70856505 Update history 2016-04-30 17:40:55 +03:00
Ivan Kravets
cf7a3e377f Scan all prototypes with pointers 2016-04-30 17:35:41 +03:00
Ivan Kravets
03c0033bed Optmize INO to CPP converter // Issue #639 2016-04-30 17:33:45 +03:00
Ivan Kravets
238fa36212 Fix path for Windows for Preprocessor 2016-04-30 17:23:51 +03:00
Ivan Kravets
f42c8f10f3 Improve INO to CPP converter // Issue #639 2016-04-30 17:19:18 +03:00
Ivan Kravets
0a760ce9a4 Update number of supported development platforms 2016-04-30 13:36:20 +03:00
Ivan Kravets
a77cbe5c16 Handle pointer to the prototypes while converting "*.ino" to ".cpp" // Resolve #639 2016-04-30 13:28:57 +03:00
Ivan Kravets
475a521d0f Minor fixes 2016-04-28 21:19:31 +03:00
Ivan Kravets
6a387359c3 Import examples as submodule 2016-04-28 18:49:50 +03:00
Ivan Kravets
7498791520 Remove examples 2016-04-28 18:48:59 +03:00
Ivan Kravets
f80b378a7b Merge branch 'release/v2.9.0' 2016-04-28 18:48:01 +03:00
Ivan Kravets
9b86fdcfb0 Version bump to 2.9.0 (issues #438, #472, #480, #535, #559, #576, #585, #590, #596, #598, #599, #600, #601, #602, #604, #609, #610, #613, #616, #618, #626, #627, #631, #632, #633, #635, #636, #637) 2016-04-28 18:23:50 +03:00
Ivan Kravets
4e2e8b9f07 Added support for new Arduino.org boards // Issue #472 2016-04-28 17:16:18 +03:00
Valeriy Koval
69d6529f7e Add path to dfu-util for intel_arc32 // Issue #535 2016-04-28 16:48:58 +03:00
Ivan Kravets
4f0b48174b Add support for MightyCore boards // Resolve #585 2016-04-28 16:27:53 +03:00
Ivan Kravets
0cf78c4297 Added support for Generic ATTiny13 // Resolve #636 2016-04-28 15:48:17 +03:00
Ivan Kravets
4c80a022c7 Use Unix path while converting INO to CPP // Issue #610 2016-04-28 14:52:53 +03:00
Ivan Kravets
f5f9421894 Disable Simba from CI 2016-04-28 14:24:34 +03:00
Ivan Kravets
f7a0374d2b New RTOS and build Framework named "Simba" // Resolve #412 2016-04-28 14:11:56 +03:00
Ivan Kravets
ab48a2a8ff Merge branch 'develop' of https://github.com/ivankravets/platformio into develop
* 'develop' of https://github.com/ivankravets/platformio:
  Add missed COMMAND_LINE_TARGETS for microchippic32
  Remove program target code from microchippic32
2016-04-28 13:47:26 +03:00
Ivan Kravets
8411769b0a Sync examples 2016-04-28 13:47:07 +03:00
Valeriy Koval
9a9e177c41 Add missed COMMAND_LINE_TARGETS for microchippic32 2016-04-28 10:41:35 +03:00
Valeriy Koval
e98cc7e500 Remove program target code from microchippic32 2016-04-28 10:28:20 +03:00
Ivan Kravets
3529e9083d Update history 2016-04-27 17:51:50 +03:00
Ivan Kravets
2cd12f30a4 Further work on Intel ARC 32-bit development platform // Issue #535 2016-04-27 17:48:26 +03:00
Ivan Kravets
d6d8e7ec74 New article by Hackaday 2016-04-27 17:13:39 +03:00
Valeriy Koval
b410eed57d Fix lint errors 2016-04-27 15:26:59 +03:00
Valeriy Koval
53e5c483f7 Add info about intel_arc32 packages 2016-04-27 15:24:05 +03:00
Valeriy Koval
7b131ebdde Initial support for intel_arc32 platform // Issue #535 2016-04-27 15:12:07 +03:00
Valeriy Koval
7a0ad497da Improve microchippic32 platform 2016-04-27 14:19:38 +03:00
Ivan Kravets
4b6fc94f94 Allow to specify default environments "env_default" // Resolve #576 2016-04-27 14:10:18 +03:00
Valeriy Koval
ad9ae4c0af Fix uploader flags for microchippic32 platform 2016-04-27 13:23:22 +03:00
Valeriy Koval
fc96e6a145 Add temporarily x32 libs for microchippic32 toolchain 2016-04-27 13:16:17 +03:00
Ivan Kravets
b317e7227a Ask to install Python and Clang before PlatformIO IDE 2016-04-27 12:59:29 +03:00
Ivan Kravets
ab5d7f3313 Allowe to unflag(remove) base/initial flags using build_unflags // Resolve #559 2016-04-27 12:55:07 +03:00
Ivan Kravets
a7c0e2e944 Sync examples 2016-04-27 12:29:09 +03:00
Ivan Kravets
2264141879 Sync examples 2016-04-27 11:55:37 +03:00
Ivan Kravets
d5b41fe617 Add support for Microchip PIC32 development platform // Resolve #438 2016-04-27 11:43:48 +03:00
Ivan Kravets
b036a82203 Fix cache system when project's root directory is used as src_dir // Resolve #635 2016-04-27 00:00:40 +03:00
Ivan Kravets
eaf325b003 Further work on the support for PIC32 2016-04-26 23:29:45 +03:00
Ivan Kravets
3519cc1a75 PyLint fix 2016-04-26 22:54:39 +03:00
Ivan Kravets
2f58b9c7d2 Sync examples 2016-04-26 18:46:01 +03:00
Ivan Kravets
24ef799de7 Remove unused imports 2016-04-26 18:14:30 +03:00
Ivan Kravets
2682e8db8a Optimise converter from ini to cpp // Issue #610 2016-04-26 18:11:03 +03:00
Ivan Kravets
00b76e6fb5 Refactor source code converter from "*.ino" to "*.cpp" // Resolve #610 2016-04-26 18:05:11 +03:00
Valeriy Koval
b70858261f Fix toolchain name for microchippic32 2016-04-26 17:49:44 +03:00
Valeriy Koval
360024af38 Initial support for Microchip PIC32 platform // Issue #438 2016-04-26 17:47:23 +03:00
Ivan Kravets
bfdc425e7c Update history with new boards 2016-04-26 14:19:45 +03:00
Valeriy Koval
7b14182083 Fix mcu option checking 2016-04-26 13:45:30 +03:00
Valeriy Koval
7c760da618 Update espressif platform according to the latest framework 2.2.0 // issue #627 2016-04-26 13:44:10 +03:00
Ivan Kravets
262307608c Ask to install Python before IDE 2016-04-26 13:34:51 +03:00
Valeriy Koval
879efeffd5 Add variant for bbcmicrobit board 2016-04-26 13:24:31 +03:00
Valeriy Koval
a1ba9d542f Add new timsp430 boards 2016-04-26 13:23:44 +03:00
Valeriy Koval
c77e1a9ae8 Add some new boards with mbed support 2016-04-26 13:21:30 +03:00
Ivan Kravets
c5d961e27e Fix latice_ice40 dev platform for Python 2.6 // Issue #480 2016-04-26 13:13:44 +03:00
Ivan Kravets
ffdec11db4 Include Lattice iCE40 FPGA development platform in the docs 2016-04-26 11:54:30 +03:00
Ivan Kravets
b51d95aba5 New Lattice iCE40 FPGA development platform // Resolve #480 2016-04-26 11:43:46 +03:00
Valeriy Koval
f3e8cd9707 Add several ATTtiny boards 2016-04-26 11:38:48 +03:00
Ivan Kravets
19a4ccee8c Be quiet when JSON output 2016-04-26 00:28:48 +03:00
Ivan Kravets
f7be8ad666 Fix firmware uploading using serial port with spaces in the path 2016-04-25 22:02:22 +03:00
Ivan Kravets
d01d40d33c Sync examples 2016-04-25 21:58:25 +03:00
Ivan Kravets
0dd134c338 Remove Circle CI badge and conf 2016-04-25 21:07:08 +03:00
Ivan Kravets
b2aa46bf62 Allow multiple VID/PID pairs when detecting serial ports // Resolve #632 2016-04-25 21:05:34 +03:00
Valeriy Koval
d1f4f82897 Fix port autodececting without hwid 2016-04-25 20:35:57 +03:00
Valeriy Koval
12ef1b26bf Fix flags scope for atmelsam 2016-04-25 14:39:23 +03:00
Valeriy Koval
1872ecff16 Add HWID option for the boards // Issue #632 2016-04-25 12:35:21 +03:00
Ivan Kravets
7cb21dd981 Move octocat to right 2016-04-24 23:21:58 +03:00
Ivan Kravets
565ca05366 Fix typo 2016-04-24 00:52:36 +03:00
Ivan Kravets
db0dbe6d8c Automatically add `-DUSB_MANUFACTURER` with vendor's name // Resolve #631 2016-04-24 00:50:56 +03:00
Ivan Kravets
a821e5b553 Implement --json-output and --page options for pio lib search command // Resolve #604 2016-04-24 00:01:42 +03:00
Ivan Kravets
0fdccddd88 Code improvements 2016-04-23 23:21:01 +03:00
Ivan Kravets
9ff22f802a Remove unused imports 2016-04-23 20:56:05 +03:00
Ivan Kravets
a2d08c6d9c Sync examples 2016-04-23 20:49:09 +03:00
Ivan Kravets
da2946f45c Update links to the new repo with Project Examples 2016-04-23 20:21:04 +03:00
Ivan Kravets
52bfe10ed5 Add submodule with Project Examples 2016-04-23 19:59:32 +03:00
Ivan Kravets
fb8c2c705c Move examples to own repo https://github.com/platformio/platformio-examples 2016-04-23 19:51:12 +03:00
Ivan Kravets
f75358f561 Add ArduinoISP to docs 2016-04-23 17:52:01 +03:00
Ivan Kravets
a6ac5ad19b Add GitHub corner 2016-04-23 15:48:57 +03:00
Ivan Kravets
728ef7f1b7 Add to docs "Jump to Declaration" and "Code Formatting" 2016-04-22 21:10:38 +03:00
Ivan Kravets
c1c9b1b219 Add FAQ to PlatformIO IDE and auto save modified files on build 2016-04-22 13:21:45 +03:00
Ivan Kravets
2cac6796ff Fix default value for RTS/DTR for Serial Port Monitor 2016-04-22 00:59:09 +03:00
Ivan Kravets
05a52003d0 Add new article about PlatformIO IDE // Resolve #624 2016-04-20 21:26:31 +03:00
Ivan Kravets
f559d31363 Typo fix 2016-04-18 19:22:58 +03:00
Ivan Kravets
b0b84560b1 Typo fixes // Resolve #613 #616 #618 2016-04-17 00:27:38 +03:00
Ivan Kravets
2884c8b641 Update link to Apple Xcode 2016-04-15 14:03:15 +03:00
Ivan Kravets
7e9929a310 Typo fix 2016-04-14 00:12:03 +03:00
Ivan Kravets
92ffc112b8 HTTPS for Community 2016-04-13 18:04:43 +03:00
Ivan Kravets
9c15accbbb Improve explanation about "data" directory for SPIFFS // Issue #382 2016-04-13 12:40:43 +03:00
Ivan Kravets
582a1f744e Add new articles 2016-04-12 18:22:01 +03:00
Ivan Kravets
05277af5a7 Add link to XCode 2016-04-10 01:46:28 +03:00
Ivan Kravets
c7880b6736 Fix indention // Issue #609 2016-04-09 23:01:44 +03:00
Ivan Kravets
6356e49fdd Automatically reboot Teensy board after upload when Teensy Loader GUI is used // Resolve #609 2016-04-09 18:39:10 +03:00
Ivan Kravets
669561782b Implement load_json for "util" 2016-04-09 14:15:59 +03:00
Ivan Kravets
fe08e1f3f9 Update API IP 2016-04-09 14:09:26 +03:00
Valeriy Koval
530868a1fe Update native SDK support for espressif platform // Issue #366, #546, #593 2016-04-07 19:19:32 +03:00
Ivan Kravets
9b95d68475 New article; update history 2016-04-07 13:47:19 +03:00
Ivan Kravets
93f9603043 Update TravisCI conf 2016-04-07 13:33:00 +03:00
Valeriy Koval
2c45f18fa1 Update project template for CodeBlocks 2016-04-04 20:49:13 +03:00
Valeriy Koval
e3b3ea53be Add docs for CodeBlocks IDE 2016-04-04 20:48:19 +03:00
Ivan Kravets
3a0ef70249 New article "PlatformIO + Geany + Raspberry PI" 2016-03-30 14:14:51 +03:00
Valeriy Koval
a5b064eb26 Fix template for CodeBlocks IDE // Issue #600 2016-03-30 13:35:33 +03:00
Ivan Kravets
5ceae22f5f Update history 2016-03-30 13:33:09 +03:00
Valeriy Koval
da7ee2c86f Update build flags form atmelsam // Resolve #601 2016-03-30 11:49:41 +03:00
Ivan Kravets
bc3d8d26d0 Don't check OS type for ARM mbed-enabled boards and ST STM32 development platform before uploading to disk 2016-03-29 20:47:12 +03:00
Valeriy Koval
b67acfec9c Add initial project template for CodeBlocks IDE 2016-03-29 18:37:22 +03:00
Valeriy Koval
b5366f9d2f Add missing build flag to reduce code size for atmelsam // Resolve #599 2016-03-29 13:05:06 +03:00
Ivan Kravets
dbeea7ec4f Merge branch 'develop' of https://github.com/ivankravets/platformio into develop
* 'develop' of https://github.com/ivankravets/platformio:
  Add separate examples for atmelsam platform
  Fix build flags for digix board
2016-03-28 15:04:59 +03:00
Ivan Kravets
9a850d4c61 Fix broken compilation for Atmel SAMD based boards except Arduino Due // Resolve 598 2016-03-28 15:04:49 +03:00
Valeriy Koval
9c545dc67b Add separate examples for atmelsam platform 2016-03-28 13:34:58 +03:00
Valeriy Koval
61256c53fe Fix build flags for digix board 2016-03-28 13:23:20 +03:00
Ivan Kravets
5be9b0e120 Add article "PlatformIO IDE Installation" // Resolve #597 2016-03-27 18:29:06 +03:00
Ivan Kravets
44c0575e9b Add new articles 2016-03-26 20:02:59 +02:00
Ivan Kravets
14da22f5ab Merge branch 'release/v2.8.6' into develop 2016-03-22 23:02:57 +02:00
Ivan Kravets
e50121e013 Merge branch 'release/v2.8.6' 2016-03-22 23:02:56 +02:00
Ivan Kravets
b169f2e252 Version bump to 2.8.6 (issues #568, #571, #572, #586, #591) 2016-03-22 23:02:42 +02:00
Ivan Kravets
d83b1280ed Fix "KeyError: 'content-length'" in PlatformIO Download Manager // Resolve #591 2016-03-22 22:03:51 +02:00
Ivan Kravets
2d684d36e8 Update the support for Sanguino Boards 2016-03-22 19:14:32 +02:00
Ivan Kravets
4023d5e558 Add screenshot for Clang installer 2016-03-22 19:13:35 +02:00
Valeriy Koval
0091ceecae Update Sanguino boards // Resolve #586 2016-03-22 16:12:34 +02:00
Ivan Kravets
9a6d15cfe6 Fix resetmethod of ESPresso Lite 2.0 // Resolve #584 2016-03-21 19:15:00 +02:00
Ivan Kravets
b39dcb11ee Peter test for Unicode and home_dir 2016-03-21 18:50:45 +02:00
Ivan Kravets
ac4387328f Fix typo with exception 2016-03-21 18:33:49 +02:00
Ivan Kravets
5e4fcf0ed5 Check user profile for ASCII 2016-03-21 18:31:22 +02:00
Ivan Kravets
ea5a0ae75c Improve support for non-Unicode user profiles for Windows OS 2016-03-21 18:08:15 +02:00
Ivan Kravets
657345fa7a Don't process symbolic links for CI 2016-03-21 16:47:24 +02:00
Ivan Kravets
2862c97958 Update Release Notes 2016-03-21 14:39:02 +02:00
Ivan Kravets
b958960512 Handle ConnectTimeout for API requests 2016-03-21 14:20:37 +02:00
Ivan Kravets
c327cd5c3f Improve DNS lookup for PlatformIO API 2016-03-21 14:17:36 +02:00
Ivan Kravets
4256d6b6a3 Disable progress bar for download operations when prompts are disabled 2016-03-21 14:17:04 +02:00
Valeriy Koval
b34b00eed2 Move arduinoteensy specific math libraries to framework build script 2016-03-19 16:20:41 +02:00
Ivan Kravets
ec2305bb10 Better handling of used boards when init/update project 2016-03-19 00:13:51 +02:00
Valeriy Koval
553b91460a Update linker flags for teensy platform 2016-03-18 18:50:05 +02:00
Valeriy Koval
32e1ce219a Add Seeed Arch Max board // Resolve #572 2016-03-18 11:50:14 +02:00
Ivan Kravets
86ddf628b1 Extra docs for some dev platforms 2016-03-17 00:40:26 +02:00
Ivan Kravets
1af462ff66 Fix broken "warning" block for Teensy platform 2016-03-16 22:17:14 +02:00
Ivan Kravets
9d50803b0c Minor fix for Teensy platform 2016-03-16 19:40:46 +02:00
Ivan Kravets
08d38b0b79 Merge pull request #581 from PaulStoffregen/teensydocs
Document Window driver requirement for Teensy
2016-03-16 19:19:13 +02:00
PaulStoffregen
edb2a50100 Document Window driver requirement for Teensy 2016-03-16 10:14:34 -07:00
Ivan Kravets
3011c6dd3f Add "What is ".pioenvs" dir to FAQ 2016-03-16 17:40:58 +02:00
Ivan Kravets
74a9483286 Fixed invalid board parameters (reset method and baudrate) for a few ESP8266 based boards 2016-03-15 19:57:32 +02:00
Valeriy Koval
3f68eab9bc Fix parameters for espressif boards 2016-03-15 17:23:19 +02:00
Ivan Kravets
7dc80af70a Add information about Deviot Plugin for Sublime Text 2016-03-15 17:20:26 +02:00
Ivan Kravets
83698dbdc0 Add article by Peter B Marks 2016-03-15 11:09:32 +02:00
Ivan Kravets
e231b664fe Minor update to IDE installation 2016-03-14 13:55:41 +02:00
Ivan Kravets
c8c1c28054 Note that don't need to install PlatformIO CLI for IDE 2016-03-14 00:59:21 +02:00
Ivan Kravets
85ad1a1f29 Improve installation section of PlatformIO IDE 2016-03-14 00:37:29 +02:00
Ivan Kravets
f412abf137 Remove unused slash 2016-03-12 21:34:50 +02:00
Ivan Kravets
97487b617a Switch to pretty PlatformIO URLs 2016-03-12 21:32:13 +02:00
Ivan Kravets
3ce17fbcb6 Add article by Richard Arthurs // Resolve #574 2016-03-12 13:49:28 +02:00
Ivan Kravets
af499876ff Note about NetBeans C++ IDE version 2016-03-11 19:22:25 +02:00
Ivan Kravets
3487a21795 Add warning about dev version for PlatformIO IDE 2016-03-11 16:07:21 +02:00
Ivan Kravets
757df8c8ab Fix multiple definition errors for ST STM32 development platform and mbed framework // Resolve #571 2016-03-11 16:01:24 +02:00
Ivan Kravets
034f431ab1 Add new article 2016-03-11 15:25:02 +02:00
Valeriy Koval
fa30a50d20 Update environment variable for extra args. 2016-03-10 13:56:44 +02:00
Valeriy Koval
6523445185 Update script command for dynamic testing of the boards 2016-03-10 13:51:48 +02:00
Ivan Kravets
8d22591914 Short IDE title 2016-03-10 01:33:07 +02:00
Ivan Kravets
a9bd45bbc8 Launch PlatformIO Community Forums // Resolve #530 2016-03-10 01:31:28 +02:00
Valeriy Koval
605a5da65a Fix screenshot in "Quick Start" tutorial 2016-03-09 15:29:17 +02:00
Ivan Kravets
739cfb2182 Add new article "New world with PlatformIO" 2016-03-08 16:26:36 +02:00
Valeriy Koval
6005eaa9bc Update screenshots fort the "Quick Start" tutorial 2016-03-08 12:52:30 +02:00
Ivan Kravets
14f80975fa Update screenshots for PlatformIO IDE 1.0.5 2016-03-08 00:24:41 +02:00
Ivan Kravets
ea13e084ed Add screenshot for each IDE 2016-03-07 21:30:06 +02:00
Ivan Kravets
f9cb31a2f3 Try to disable notification for each commit 2016-03-07 21:29:35 +02:00
Ivan Kravets
85a5409e85 Fix link to PySerial Miniterm 2016-03-07 20:38:35 +02:00
Ivan Kravets
99abd8c090 Update ISSUE_TEMPLATE.md 2016-03-07 18:46:48 +02:00
Ivan Kravets
f633dde50c Merge branch 'release/v2.8.5' into develop 2016-03-07 18:34:44 +02:00
Ivan Kravets
26566282ee Merge branch 'release/v2.8.5' 2016-03-07 18:34:43 +02:00
Ivan Kravets
44fc5163e7 Version bump to 2.8.5 (issues #395, #401, #523, #526, #527, #528, #534, #536, #540, #541, #543, #544, #550, #552, #555) 2016-03-07 18:34:29 +02:00
Ivan Kravets
c231f0e41e Show notification about new PlatformIO as the bottom of screen 2016-03-07 18:27:33 +02:00
Ivan Kravets
6ee9c06285 Travis: Notify only for problems 2016-03-07 18:13:53 +02:00
Ivan Kravets
4063cd6abd Use src_dir directory from platformio.ini when initializing project otherwise create base src directory // Resolve #536 2016-03-07 17:42:15 +02:00
Ivan Kravets
325c50e924 Notify to slack about builds 2016-03-07 16:00:52 +02:00
Ivan Kravets
efd1896825 Explain about IntelliSense Errors for VS // Resolve #543 2016-03-07 15:35:36 +02:00
Ivan Kravets
4f61a05c9e Update ISSUE_TEMPLATE.md 2016-03-07 11:56:59 +02:00
Ivan Kravets
26bfd74a3c Update docs for IDE & init command 2016-03-06 01:03:43 +02:00
Ivan Kravets
ee088f3aea Fix dumping data for IDE with excess -fPIC flag 2016-03-06 00:40:28 +02:00
Ivan Kravets
c162988868 Create ISSUE_TEMPLATE.md 2016-03-06 00:19:16 +02:00
Ivan Kravets
213938a9f8 Add info about "Using Arduino Framework with Staging version" // Resolve #401 2016-03-05 19:01:54 +02:00
Ivan Kravets
d091d4f000 Improve docs 2016-03-04 19:49:30 +02:00
Ivan Kravets
f74f79eed0 Add new article by Ricardo Vega 2016-03-04 15:51:42 +02:00
Ivan Kravets
4c4682f457 Fix incorrect parsing of GCC "-include" flag // Resolve #552 2016-03-04 01:45:04 +02:00
Valeriy Koval
614a736eff Merge ASFLAGS and CCFLAGS in a proper way. 2016-03-03 20:28:06 +02:00
Valeriy Koval
1332413f63 Combine ASFLAGS and CCFLAGS in a proper way 2016-03-03 20:05:51 +02:00
Ivan Kravets
1e3e3dd999 Fix issue with updating package which was deleted manually by user // Resolve #555 2016-03-03 19:01:09 +02:00
Ivan Kravets
888967eb61 Minor improvements to docs 2016-03-03 16:39:58 +02:00
Ivan Kravets
7e0ccd0712 Update Emacs screenshot 2016-03-03 01:47:29 +02:00
Ivan Kravets
6a0cd46da7 Refactor Quick Start page 2016-03-02 22:01:21 +02:00
Ivan Kravets
288eb4df25 Add new article "Introduction to PlatformIO IDE" 2016-03-02 01:42:00 +02:00
Ivan Kravets
8388359b36 Fix invalid detecting of compiler type // Resolve #550 2016-03-02 00:25:36 +02:00
Valeriy Koval
c9505b3acc Add warning block about IntelliSense to Visual Studio documentation 2016-03-01 18:45:39 +02:00
Valeriy Koval
72cb2f1240 Put parsed mbed flags to appropriate scope 2016-03-01 12:58:54 +02:00
Ivan Kravets
9473e51e40 Fix platform ID for NetBeans IDE under Windows 2016-02-29 18:00:47 +02:00
Valeriy Koval
8cf3765b30 Complete NetBeans project template for Windows 2016-02-29 17:48:51 +02:00
Ivan Kravets
a1441b3e73 Minor updates 2016-02-29 17:33:20 +02:00
Ivan Kravets
98026d83b6 Rename CMakeListsLocal.txt to CMakeListsPrivate.txt // Issue #523 2016-02-29 17:33:08 +02:00
Valeriy Koval
b0ba8ae5e3 Improve espressif platform for updated framework. 2016-02-29 12:08:24 +02:00
Ivan Kravets
6190f1aa8f Project generator for NetBeans IDE // Resolve #541 2016-02-27 20:09:27 +02:00
Ivan Kravets
fdff0afd89 Update Gitter badge 2016-02-27 14:30:26 +02:00
Ivan Kravets
52bbe9af33 Generate appropriate project for CLion IDE and CVS // Resolve #523 2016-02-27 01:27:57 +02:00
Ivan Kravets
6d2130444d Add link to @Bintray 2016-02-27 01:01:32 +02:00
Ivan Kravets
ce2bef7d26 Change direct links to PlatformIO IDE binaries 2016-02-27 00:36:48 +02:00
Ivan Kravets
2c4fbda5e3 Add support for the ESP8266 ESP-07 board // Resolve #527 2016-02-27 00:20:42 +02:00
Ivan Kravets
f6f4366030 Add new article "PlatformIO Blink On Nodemcu Dev Kit" 2016-02-26 23:26:20 +02:00
Ivan Kravets
e6c1e35e75 Refactor test for packages manifest 2016-02-26 21:00:51 +02:00
Valeriy Koval
bcb40fb2f9 Initial documentation for "Quickstart" tutorial. 2016-02-26 20:18:38 +02:00
Ivan Kravets
8baf163684 Better handling of PlatformIO Storage Mirrors 2016-02-26 19:48:30 +02:00
Ivan Kravets
99ddea6906 Remove debug code 2016-02-26 01:10:48 +02:00
Valeriy Koval
1c481e0840 Fix handling of build flags passed via environment vars // Resolve #526 2016-02-25 15:09:23 +02:00
Ivan Kravets
ff08416307 Add Awards block 2016-02-25 02:57:42 +02:00
Ivan Kravets
d7e97731d8 Minor updates to docs 2016-02-25 02:38:06 +02:00
Ivan Kravets
0263691f8d Refactor docs for "What is PlatformIO?" 2016-02-25 02:23:54 +02:00
Ivan Kravets
2b2fe46772 Add NetBeans to supported list of IDEs 2016-02-25 02:23:26 +02:00
Ivan Kravets
10ad8ec987 Cleanup docs 2016-02-25 02:22:57 +02:00
Ivan Kravets
fed45e5453 Add new article "How to Integrate PlatformIO with Netbeans" 2016-02-25 01:10:38 +02:00
Valeriy Koval
1f1dc9c5e6 Better handling of build flags passed via environment vars // Resolve #526 2016-02-24 18:23:42 +02:00
Ivan Kravets
caa0efd265 Add new article by Ptarmigan Labs 2016-02-24 12:16:18 +02:00
Ivan Kravets
76c8ac4e6c Fix broken link to IDE 2016-02-23 22:19:42 +02:00
Ivan Kravets
3e52c194ca Fix issue with Project Generator when optional build flags were passed using system environment variables 2016-02-23 21:24:00 +02:00
Ivan Kravets
3f8d89f34a Remove links to PlatformIO IDE from other IDE pages 2016-02-23 21:22:28 +02:00
Valeriy Koval
17796de60d Refactor platform build scripts // Resolve #528 2016-02-22 21:52:44 +02:00
Ivan Kravets
66713021de Update IDE DL links to the new storage // Resolve #531 2016-02-22 11:45:37 +02:00
Ivan Kravets
d3f03f3fc8 Minor updates to IDE docs 2016-02-22 01:23:55 +02:00
Ivan Kravets
17c9e8ddc1 Replace DL links with own DL storage 2016-02-20 08:57:16 +02:00
Ivan Kravets
87bc6a7e8c Update Docs navigation bar according main site 2016-02-20 01:20:18 +02:00
Ivan Kravets
2faa2e003a Place links to PlatformIO IDE 2016-02-20 01:06:25 +02:00
Ivan Kravets
a965d0ea6f Update docs for PlatformIO IDE 1.0.0 2016-02-19 21:54:20 +02:00
Ivan Kravets
90382e0f0d Add new article Develop easier with PlatformIO ecosystem 2016-02-19 18:07:38 +02:00
Ivan Kravets
62d226c8a3 Update donate link // Resolve #478 2016-02-18 00:08:06 +02:00
Ivan Kravets
d7c49b72a9 Typo fix 2016-02-17 22:55:43 +02:00
Ivan Kravets
779798c622 Merge branch 'release/v2.8.4' 2016-02-17 22:53:08 +02:00
Ivan Kravets
fbdcda720d Merge branch 'release/v2.8.4' into develop 2016-02-17 22:53:08 +02:00
Ivan Kravets
321640bd71 Version bump to 2.8.4 (issues #494, #501, #503, #506, #518) 2016-02-17 22:52:52 +02:00
Ivan Kravets
5107d767ee Update links to the new PlatformIO site 2016-02-17 22:47:55 +02:00
Ivan Kravets
dc007dd136 Handle new environment variables PLATFORMIO_UPLOAD_PORT and PLATFORMIO_UPLOAD_FLAGS 2016-02-17 20:20:39 +02:00
Ivan Kravets
50294274c3 Explain what does mean "pip" // Issue #517 2016-02-13 17:51:08 +02:00
Ivan Kravets
63902c8215 Add "pip" to title of installation method using Python Package Manager 2016-02-13 17:46:27 +02:00
Ivan Kravets
69836be1ca Show different info about upgrading PlatformIO within CLI or IDE 2016-02-13 17:22:17 +02:00
Ivan Kravets
851f7db825 Fix issue with pointer (char* myfunc()) while converting from *.ino to *.cpp // Resolve #506 2016-02-11 00:43:52 +02:00
Ivan Kravets
3484c41b64 Fix issue with quotes in CPPDEFINES when dumping data for IDE 2016-02-11 00:27:41 +02:00
Ivan Kravets
d0d292b80f Add support for the new ESP8266-based boards (ESPDuino, ESP-WROOM-02, ESPresso Lite 1.0 & 2.0, SparkFun ESP8266 Thing Dev, ThaiEasyElec ESPino) to Espressif development platform 2016-02-11 00:16:43 +02:00
Ivan Kravets
7e5f6fe22a Update docs for board_flash_mode 2016-02-11 00:00:23 +02:00
Ivan Kravets
45efc0e0d6 Add "board_flash_mode" option to Project Configuration File 2016-02-10 23:16:25 +02:00
Ivan Kravets
6baf6568d2 Add "board_f_flash" option to Project Configuration File // Resolve #501 2016-02-10 22:58:12 +02:00
Ivan Kravets
1a4d1c7d40 Fix unable to link C++ standard library to Espressif platform build // Resolve #503 2016-02-10 17:19:24 +02:00
Ivan Kravets
afe80072c6 Merge branch 'feature/cpp-libs-issue-503' into develop 2016-02-10 17:17:15 +02:00
Ivan Kravets
b17acd7605 Fix issue with "CPPDEFINES" which contain space and break PlatformIO IDE Linter 2016-02-10 17:16:52 +02:00
Valeriy Koval
45096c3137 Change libs order. 2016-02-09 13:58:08 +02:00
Ivan Kravets
c3f78d1977 Temporary disabled "CPPDEFINES" which contain space and break PlatformIO IDE Linter 2016-02-03 01:37:43 +02:00
Ivan Kravets
8dfd6ac3bb Merge branch 'release/v2.8.3' 2016-02-02 19:52:38 +02:00
Ivan Kravets
8a2789fe3f Merge branch 'release/v2.8.3' into develop 2016-02-02 19:52:38 +02:00
Ivan Kravets
40729c38eb Version bump to 2.8.3 (issue #487) 2016-02-02 19:52:05 +02:00
Ivan Kravets
6c2df7d0e1 Fix missing dependency (mbed framework) for Atmel SAM development platform // Resolve #487 2016-02-02 19:47:11 +02:00
Ivan Kravets
223a055e8b Fix issue with removing temporary file while converting *.ino to *.cpp 2016-02-01 00:18:04 +02:00
Ivan Kravets
96c7ef36c2 Update info about PlatformIO IDE 2016-01-31 01:13:06 +02:00
Ivan Kravets
21b52031e7 Fix issue when board is not specified 2016-01-30 21:45:26 +02:00
Ivan Kravets
b44c75a3c1 Better integration of PlatformIO Builder with PlatformIO IDE Linter 2016-01-30 19:14:11 +02:00
Ivan Kravets
1f95b6be25 Add QuickStart for PlatformIO IDE 2016-01-30 13:41:46 +02:00
Ivan Kravets
848c50c55c Update docs for PlatformIO IDE 2016-01-29 23:52:14 +02:00
Ivan Kravets
0c4e0327e3 Fix docs layout 2016-01-29 20:43:22 +02:00
Ivan Kravets
3eb3ba4ee0 Merge branch 'release/v2.8.2' into develop 2016-01-29 20:34:48 +02:00
Ivan Kravets
631fd707fe Merge branch 'release/v2.8.2' 2016-01-29 20:34:47 +02:00
Ivan Kravets
8a269b1d24 Version bump to 2.8.2 (issues #484) 2016-01-29 20:34:25 +02:00
Ivan Kravets
131f1eb943 Correct RAM size for NXP LPC1768 based boards // Resolve #484 2016-01-29 18:17:33 +02:00
Ivan Kravets
c036bde86c Reverted `-Wl,-whole-archive` hook for ST STM32 and mbed 2016-01-29 17:55:48 +02:00
Ivan Kravets
9102a70e04 More strictness to default src filter for builder 2016-01-29 17:52:54 +02:00
Ivan Kravets
c9616ed0fa Exclude only "test" and "tests" folders from build process 2016-01-29 17:25:31 +02:00
Ivan Kravets
dce2f2594a Merge branch 'release/v2.8.1' 2016-01-29 15:50:33 +02:00
Ivan Kravets
8c0bcc6ad9 Merge branch 'release/v2.8.1' into develop 2016-01-29 15:50:33 +02:00
Ivan Kravets
edf19a8cac Version bump to 2.8.1 2016-01-29 15:50:17 +02:00
Ivan Kravets
41f2adc1f6 Fix a bug with Project Initialization in PlatformIO IDE 2016-01-29 15:49:31 +02:00
Ivan Kravets
2b55a2fd05 Merge branch 'release/v2.8.0' 2016-01-29 14:43:35 +02:00
Ivan Kravets
45e8379d99 Merge branch 'release/v2.8.0' into develop 2016-01-29 14:43:35 +02:00
Ivan Kravets
73041b71a4 Version bump to 2.8.0 (issues #441, #444, #447, #453, #458, #465, #470, #474, #476, #483) 2016-01-29 14:43:20 +02:00
Ivan Kravets
f8419c9184 Inform users about PlatformIO IDE 2016-01-29 14:38:06 +02:00
Ivan Kravets
aebba5f1c1 Minor fix to error message 2016-01-29 14:28:56 +02:00
Ivan Kravets
a446386cc9 Don't build empty project // Resolve #483 2016-01-29 14:22:10 +02:00
Ivan Kravets
2be2a4ebf3 Change case for data size 2016-01-28 21:55:21 +02:00
Ivan Kravets
d20eca3f09 Fix incorrect flash size for SeeedStudio Seeeduino-Arch-Pro 2016-01-28 21:53:01 +02:00
Ivan Kravets
3bc5cb0d27 Fix ideate dump for non existing lib dirs 2016-01-28 20:35:02 +02:00
Ivan Kravets
e6745de8d8 Skip empty __cores__ dir for project generator 2016-01-28 18:42:56 +02:00
Ivan Kravets
04cd772f0d Fix PyLint warning 2016-01-28 00:56:25 +02:00
Ivan Kravets
d44d757985 Convert CleanPioEnvsError to warning 2016-01-28 00:37:16 +02:00
Ivan Kravets
df8fda5b69 Better handling of installed libs for Project Generator 2016-01-28 00:20:01 +02:00
Ivan Kravets
c74f122426 Ignore duplicate includes in project generator 2016-01-27 20:04:35 +02:00
Ivan Kravets
c20b6af1ec Disable PyLint warning 2016-01-27 02:00:35 +02:00
Ivan Kravets
de43166257 Generate project for IDEs with information about installed libraries 2016-01-27 01:37:20 +02:00
Ivan Kravets
5c2ba90edf Add donate button/badge // Issue #478 2016-01-26 21:09:32 +02:00
Ivan Kravets
503decdf2e Merge branch 'develop' of https://github.com/ivankravets/platformio into develop
* 'develop' of https://github.com/ivankravets/platformio:
  Allow using custom linker script for the libopenCM3 framework.
2016-01-26 20:31:30 +02:00
Ivan Kravets
ec19341e05 Fix error with unicode for serial ports description 2016-01-26 20:30:45 +02:00
Valeriy Koval
477f387bd7 Allow using custom linker script for the libopenCM3 framework. 2016-01-26 14:17:49 +02:00
Ivan Kravets
9ede9d3c6d Temporary solution for PlatformIO IDE and Serial Monitor 2016-01-26 13:52:40 +02:00
Ivan Kravets
34d5358eaa Exclude "test*" folder by default from build process 2016-01-26 13:02:33 +02:00
Ivan Kravets
9db5a7e004 Add "pio" alias to docs // Resolve #447 2016-01-26 02:00:55 +02:00
Ivan Kravets
e5f3dee470 Ask Windows users to add LLVM to the system PATH 2016-01-26 01:18:33 +02:00
Ivan Kravets
63911f5192 Minor changes 2016-01-26 01:02:14 +02:00
Ivan Kravets
8824c14768 Remove banner 2016-01-26 00:47:07 +02:00
Ivan Kravets
17d68652cf Disable Serial Monitor for PlatformIO IDE (temporary) 2016-01-26 00:27:15 +02:00
Ivan Kravets
559c46beb0 Merge pull request #473 from floretan/patch-1
Mention "overclocking"
2016-01-26 00:13:54 +02:00
Ivan Kravets
380d6eb4be Update docs for PlatformIO IDE 2016-01-25 23:43:11 +02:00
Ivan Kravets
d2f3b76132 Fix error with non unicode chars in serial port description 2016-01-25 23:42:43 +02:00
Florian Loretan
07b69e9f59 Mention "overclocking"
I couldn't find information on how to overclock my teensy with platformio until I asked in the chat and @ivankravets pointed me to this page. Mentioning overclocking should help others find that information more easily.
2016-01-25 22:24:08 +01:00
Ivan Kravets
3ce32e54b2 Fix broken CXX path on Windows 2016-01-25 22:58:52 +02:00
Ivan Kravets
7cce906e55 Generate settings for GCC linter and PlatformIO IDE 2016-01-25 22:49:29 +02:00
Ivan Kravets
a3911eda3b Fix Atom Preferences link for Linux 2016-01-25 14:29:24 +02:00
Ivan Kravets
3ac72e4b8c Improve docs for PlatformIO IDE 2016-01-25 01:05:54 +02:00
Ivan Kravets
456e0109cd Add new article about IntelliJ IDEA & PlatformIO by Sergey Prilukin 2016-01-24 23:11:25 +02:00
Ivan Kravets
1a2ed160cd Move PlatformIO IDE at top 2016-01-24 21:34:37 +02:00
Ivan Kravets
9b49b80051 Fix docs warnings for literal blocks 2016-01-24 18:14:39 +02:00
Ivan Kravets
8a55e65388 Remove test code and fix PyLint warning 2016-01-24 17:19:59 +02:00
Ivan Kravets
0cecd955c5 Allow to disable progress bar for package/library downloader and uploader 2016-01-24 16:45:04 +02:00
Ivan Kravets
a0d3a180e4 Specify full path to PlatformIO IDE screenshot 2016-01-24 01:47:02 +02:00
Ivan Kravets
e257eeff0a Minor changes 2016-01-24 01:14:01 +02:00
Ivan Kravets
8bc54b0179 PlatformIO IDE for Atom // Resolve #470 2016-01-24 00:44:18 +02:00
Ivan Kravets
59a97bff3d Allow upgrading to the latest develop version if no new stable release using "platformio upgrade" 2016-01-23 21:45:08 +02:00
Ivan Kravets
870b306b86 Handle caller id from os environment 2016-01-23 21:01:25 +02:00
Ivan Kravets
c29399944e Improve docs for "version" field of library.json 2016-01-22 23:34:25 +02:00
Ivan Kravets
21834b0832 Typo fix 2016-01-22 22:30:28 +02:00
Ivan Kravets
5535529903 Document tags/releases for "version" field in library.json 2016-01-22 22:25:13 +02:00
Ivan Kravets
1ae2e189dd Document "branch" subfield for "repository" field from library.json 2016-01-22 22:01:24 +02:00
Ivan Kravets
5e8bfe5ef2 Fix url to CVS 2016-01-21 01:02:50 +02:00
Ivan Kravets
6bd7129c80 Rename to "Release Notes" 2016-01-20 16:36:23 +02:00
Ivan Kravets
a41cf3dd48 Fix grammar 2016-01-20 01:24:36 +02:00
Ivan Kravets
1829952b1e Extend examples list with c/cpp/h extensions 2016-01-20 01:24:21 +02:00
Ivan Kravets
d658363b53 Fix bug with custom BOARD_F_CPU for Espressif platform 2016-01-19 23:06:25 +02:00
Ivan Kravets
cc1dec39cf Allow to force to output color ANSI-codes even if the output is a `pipe (not a tty`) 2016-01-19 21:03:49 +02:00
Ivan Kravets
3035d4eeec Add new article by @squix78 2016-01-19 19:31:56 +02:00
Ivan Kravets
c55204cc50 Use current Python interpreter for the all subprocess platformio calls 2016-01-19 18:42:59 +02:00
Ivan Kravets
c48ffc0089 Skip example* from build process 2016-01-19 16:50:26 +02:00
Ivan Kravets
257f4b1c5b Update examples with extra scripts 2016-01-19 00:22:12 +02:00
Ivan Kravets
7f386126cb Typo fix 2016-01-15 23:37:41 +02:00
Ivan Kravets
b1e9dea790 Add "pio" command line alias for "platformio" command // Resolve #447 2016-01-14 01:26:24 +02:00
Ivan Kravets
88fe8f2129 Set 1Mb SPIFFS for Espressif boards by default // Resolve #458 2016-01-14 01:21:25 +02:00
Ivan Kravets
52ceb64758 Added "upload_resetmethod" option to Project Configuration File platformio.ini and allowed to change default upload reset method for Espressif development platform // Resolve #444 2016-01-14 01:07:57 +02:00
Ivan Kravets
1b85a3ddd3 Add banner about IoT Award 2016-01-14 00:02:23 +02:00
Ivan Kravets
9ba493bcee Add new article "STM NUCLEOF401RE TIMER IO" by @g7uvw 2016-01-13 22:50:19 +02:00
Ivan Kravets
54f2f4ce45 Use current Python interpreter to show updated version 2016-01-13 22:22:55 +02:00
Ivan Kravets
2d42f944cd Update history with SPL framework for nucleo_f401re // Issue #453 2016-01-13 21:09:26 +02:00
Ivan Kravets
2f9b61aee4 Docs: add SPL support for nucleo_f401re // Issue #453 2016-01-13 21:05:49 +02:00
Valeriy Koval
e2d9d0a5d8 Add SPL support for nucleo_f401re // Resolve #453 2016-01-13 21:03:45 +02:00
Ivan Kravets
b60eb059c3 Explain in documentation how to overwrite upload reset method for Espressif development platform // Resolve #444 2016-01-13 15:21:51 +02:00
Ivan Kravets
516887c050 Refactor Project Configuration Page 2016-01-13 15:03:13 +02:00
Ivan Kravets
8a85d7ef1c Ignore stupid PyLint warning with "wrong-import-order" 2016-01-13 01:23:58 +02:00
Ivan Kravets
fa51860268 Fix builder for mbed framework and ST STM32 platform 2016-01-11 19:20:26 +02:00
Ivan Kravets
3d0aad6df8 Add support for completions to Atom text editor using ".clang_complete" 2016-01-06 16:52:22 +02:00
Ivan Kravets
4e2370e0a0 Update docs with new boards, tools 2016-01-06 15:47:58 +02:00
Ivan Kravets
5634419513 Merge branch 'release/v2.7.1' into develop 2016-01-06 14:56:31 +02:00
Ivan Kravets
5552460b2f Merge branch 'release/v2.7.1' 2016-01-06 14:56:30 +02:00
Ivan Kravets
038b641a4d Version bump to 2.7.1 (issues #356, #421, #422, #426, #427, #428, #434) 2016-01-06 14:56:16 +02:00
Ivan Kravets
b397748f53 Hook for requires services 2016-01-06 14:45:58 +02:00
Ivan Kravets
cd1440adb2 Remove board ldscripts test 2016-01-06 14:13:47 +02:00
Ivan Kravets
4097c34db8 Add new article "Internet Of Things: The IDE scandal" 2016-01-05 21:38:02 +02:00
Ivan Kravets
fcf50a80ac Merge pull request #436 from valeros/develop
Initial support for Arduino Zero board // Resolve #356
2016-01-05 17:48:59 +02:00
Ivan Kravets
010a8d15cd Merge pull request #435 from ZachMassia/develop
Update Emacs doc page
2016-01-05 17:40:56 +02:00
Valeriy Koval
29174e343d Fix pylint error 2016-01-05 09:47:57 +02:00
Valeriy Koval
9dde962add Initial support for Arduino Zero board // Resolve #356 2016-01-05 09:39:11 +02:00
Zach Massia
5c9bfdac00 Update Emacs doc page 2016-01-04 23:33:41 -05:00
Ivan Kravets
a9464d7878 History fix 2016-01-05 02:35:29 +02:00
Ivan Kravets
33543d6d8f Add generic targets for VIM // Issue #427 2016-01-05 02:26:37 +02:00
Ivan Kravets
df099e15c0 Add generic targets for IDE // Resolve #427 2016-01-05 02:15:43 +02:00
Ivan Kravets
7a7fa845fe Update Teensy Arduino Framework to 1.26 // Resolve #434 2016-01-05 00:07:28 +02:00
Ivan Kravets
0751a2cef9 Fix CMakeLists.txt add_executable has only one source file // Resolve #421 2016-01-04 18:11:20 +02:00
Ivan Kravets
917c0e3388 Use esptool as OBJCOPY for ElfToBin builder // Resolve #426 2016-01-04 17:47:10 +02:00
Ivan Kravets
13ba785400 Merge pull request #433 from ZachMassia/clang-complete
clang_complete support for Emacs and Atom
2016-01-04 14:04:52 +02:00
Zach Massia
6bc7404d3a Add .clang_complete for Atom 2016-01-04 00:29:37 -05:00
Zach Massia
44f0fc9720 Remove CMake from Emacs project template 2016-01-04 00:29:37 -05:00
Ivan Kravets
7184d70f0c Remove donate button 2016-01-04 03:36:54 +02:00
Ivan Kravets
5ecf952934 Minor improvements to docs 2016-01-04 03:34:47 +02:00
Ivan Kravets
39839e919e Remove quotes from includes 2016-01-04 01:46:38 +02:00
Ivan Kravets
363249f165 Minor improvements to the docs 2016-01-04 01:45:57 +02:00
Ivan Kravets
5d74e8ae6e Improve docs for library.json "version" field 2016-01-04 01:07:42 +02:00
Ivan Kravets
db50043972 Generate .clang_complete file for Emacs project 2016-01-03 20:44:42 +02:00
Ivan Kravets
fdff35e31c Fix package "shasum" validation on Mac OS X 10.11.2 // Resolve #429 2016-01-03 17:45:49 +02:00
Ivan Kravets
4d2daa9da4 Merge pull request #428 from ZachMassia/generic-targets
Add external programmer and SPIFFS targets to Emacs
2016-01-03 15:20:33 +02:00
Zach Massia
7d9cd1c2ae Add ext. programmer and spiffs targets to Emacs 2016-01-03 00:31:12 -05:00
Ivan Kravets
77c192050a Add enlarge link to Eclipse IDE screenshot 2016-01-03 03:09:33 +02:00
Ivan Kravets
6be39120ae Add generic targets to Eclipse IDE: Build, Clean, Upload, Upload SPIFFS image, Upload using Programmer // Issue #427 2016-01-03 03:02:21 +02:00
Ivan Kravets
b1de8d119d Fix project generator for CLion IDE // Resolve #422 2016-01-02 13:53:39 +02:00
Ivan Kravets
f29a06e3f3 Fix project generator for CLion IDE // Issue #422 2016-01-02 01:05:05 +02:00
Ivan Kravets
678791bd09 Fix history for PlatformIO 2.7.1 2016-01-02 00:40:21 +02:00
Ivan Kravets
b408f8f0bf Fix uploading of EEPROM data using "uploadeep" target for Atmel AVR development platform 2016-01-02 00:35:53 +02:00
Ivan Kravets
e101b02ccb Run/Upload specific environment 2016-01-01 23:30:18 +02:00
Ivan Kravets
628c54e0c6 Fix indention after bunch of replacements 2016-01-01 21:15:23 +02:00
Ivan Kravets
af85f76f9a Fix PyLint warning 2016-01-01 21:02:22 +02:00
Ivan Kravets
19f1ccd0df 🎄 Happy New 2016 Year! 🎄 2016-01-01 20:51:48 +02:00
Ivan Kravets
5c1c1da5f0 Correction to custom PlatformIO dirs per project 2016-01-01 19:44:24 +02:00
Ivan Kravets
5272f184cf Add Contributing section 2015-12-31 16:12:35 +02:00
Ivan Kravets
4bd507713c Merge pull request #420 from sticilface/patch-1
Update platformio.sublime-project.tpl
2015-12-31 13:32:01 +02:00
sticilface
6aaca7d33d Update platformio.sublime-project.tpl
Include SPIFFS upload in sublime project generation
2015-12-31 11:21:33 +00:00
Ivan Kravets
6e02ba17e3 Update "platformio boards" guide 2015-12-31 01:16:45 +02:00
Ivan Kravets
b588823799 Hint to use library.json with repo+version 2015-12-31 00:47:03 +02:00
Ivan Kravets
4d3a6c9791 Fix mDNS abbreviation 2015-12-30 23:57:33 +02:00
Ivan Kravets
3f19f51937 Minor updates to SPIFFS doc 2015-12-30 23:55:53 +02:00
Ivan Kravets
08ba6cc51c Minor fix for HISTORY 2015-12-30 20:36:27 +02:00
Ivan Kravets
be049bfac2 Merge branch 'release/v2.7.0' 2015-12-30 20:25:12 +02:00
Ivan Kravets
b7ecdf631b Merge branch 'release/v2.7.0' into develop 2015-12-30 20:25:12 +02:00
Ivan Kravets
02480730bb Version bump to 2.7.0 (issues #319, #382, #386, #391, #394, #397, #400, #403, #404, #406, #407, #417) 2015-12-30 20:24:51 +02:00
Ivan Kravets
4d8265bee2 Remove SCons from docs, etc. 2015-12-30 20:19:56 +02:00
Ivan Kravets
aff525e763 Use current interpreter to upgrade PlatformIO 2015-12-30 20:12:52 +02:00
Ivan Kravets
8d6aee3178 Use current Python interpreter for Python-based tools // Resolve #417 2015-12-30 20:01:43 +02:00
Ivan Kravets
d139225ffb Quote upload port for Espressif OTA // Issue #417 2015-12-30 19:23:58 +02:00
Ivan Kravets
56c5ba6fbb Allow OTA upload port to be quoted // Issue #417 2015-12-30 19:10:40 +02:00
Ivan Kravets
7a91683ca6 Better handling of upload port for OTA // Issue #417 2015-12-30 19:01:26 +02:00
Ivan Kravets
f2cad66d79 Quote upload port for Espressif OTA // Issue #417 2015-12-30 18:42:46 +02:00
Ivan Kravets
98ec2237b7 Merge pull request #418 from dh1tw/develop
updated URL in example to new mbed domain
2015-12-30 18:15:13 +02:00
dh1tw
27a555b99a updated URL in example to new mbed domain 2015-12-30 17:12:50 +01:00
Ivan Kravets
680c3867db Allow to use DNS.local as upload port for OTA // Issue #382 2015-12-30 15:02:13 +02:00
Ivan Kravets
121102beef Fix SPIFFS uploading via OTA // Issue #382 2015-12-30 14:33:16 +02:00
Ivan Kravets
4f8138fe1f Add link to discussion as for SPIFFS 2015-12-30 14:23:35 +02:00
Ivan Kravets
044486d46f Allow to upload SPIFFS image using OTA // Issue #382 2015-12-30 14:14:36 +02:00
Ivan Kravets
2d2ce0661f Update donate button 2015-12-30 01:49:16 +02:00
Ivan Kravets
e88ef48e18 Add example with library.json 2015-12-30 01:41:08 +02:00
Ivan Kravets
2dd2dd4f0d Use PySerial < 3 for Python 2.6 2015-12-30 00:13:38 +02:00
Ivan Kravets
38d9f0f5bc Add donate button 2015-12-29 21:59:32 +02:00
Ivan Kravets
14aed800a2 Improve telemetry service 2015-12-29 21:03:51 +02:00
Ivan Kravets
621393138f Move requirements to setuptools 2015-12-29 17:44:39 +02:00
Ivan Kravets
a959ff767d Better handling of source files for uploading // Issue #382 2015-12-29 14:36:39 +02:00
Ivan Kravets
11986354d9 Better handling of LD scripts for SPIFFS uploading // Issue #382 2015-12-29 00:21:24 +02:00
Ivan Kravets
5ea7ec470a Typo fix 2015-12-28 23:29:58 +02:00
Ivan Kravets
a0bcb4d4f0 Fix PyLint warning about sorting for imports 2015-12-28 20:35:56 +02:00
Ivan Kravets
ed68878592 Show error for invalid LD script 2015-12-28 20:09:48 +02:00
Ivan Kravets
3121ca5669 Fix SPIFFS_START address // Issue #382 2015-12-28 18:40:54 +02:00
Ivan Kravets
5abb21c3f9 Minor changes for offsets 2015-12-28 13:54:07 +02:00
Ivan Kravets
b9a87b3d54 Merge pull request #407 from ZachMassia/develop 2015-12-28 10:58:22 +02:00
Zach Massia
cd1259613a Fix typo 2015-12-28 00:54:19 -05:00
Ivan Kravets
023a3487e0 Don't run mkspiffs target by default 2015-12-28 01:38:41 +02:00
Ivan Kravets
2c4c3a12ea Add link to ESP8266 Flash layout // Issue #382 2015-12-28 01:21:17 +02:00
Ivan Kravets
cae5f1f553 Implement uploading files to file system SPIFFS for ESP8266 // Issue #382 2015-12-28 01:15:06 +02:00
Ivan Kravets
d7673b69e2 Add link for enlarge to Emacs screenshot 2015-12-27 17:54:51 +02:00
Ivan Kravets
85f0877d32 Project generator for Emacs text editor // Issue #404 2015-12-27 17:53:51 +02:00
Ivan Kravets
e152155a58 Merge pull request #404 from ZachMassia/develop
Emacs IDE integration support
2015-12-27 16:58:46 +02:00
Ivan Kravets
ce93e6013f Fix variant for RFduino board 2015-12-26 23:50:56 +02:00
Ivan Kravets
bee51aadcb Fix test for LD Scripts 2015-12-26 23:04:16 +02:00
Ivan Kravets
956633847d Add RFDuino iBeacon example 2015-12-26 21:50:47 +02:00
Ivan Kravets
918deb41a4 Typo fix 2015-12-26 21:32:10 +02:00
Ivan Kravets
1b7b2ca0a2 Add support for RFDuino // Resolve #319 2015-12-26 21:24:01 +02:00
Ivan Kravets
1b84078541 Show error message when user tries to install/run PlatformIO with Python 3 2015-12-26 20:22:22 +02:00
Ivan Kravets
f7311eb94d Update Wiring example according to Get-Started on home page 2015-12-26 20:08:50 +02:00
Ivan Kravets
9312ca7f0d Moved SCons to PlatformIO packages. PlatformIO does not require SCons to be installed in your system.
Significantly simplified installation process of  PlatformIO. "pip install platformio" rocks!
2015-12-26 14:47:42 +02:00
Zachary Massia
533720218a Add Emacs screenshot, add Emacs to IDE doc page 2015-12-26 03:00:44 -05:00
Ivan Kravets
d2088e7444 Enhance doc 2015-12-26 01:02:44 +02:00
Zachary Massia
9006b8b618 Add initial version of emacs documentation 2015-12-25 02:09:09 -05:00
Zachary Massia
b9f926d13b Add Emacs to IDE templates 2015-12-25 02:09:09 -05:00
Ivan Kravets
319636f017 Fix broken RST for mbed framework 2015-12-25 01:09:41 +02:00
Ivan Kravets
4c665a292a Cleanup docs for IDE integration 2015-12-25 01:06:55 +02:00
Ivan Kravets
72f93cd563 Link articles with platforms and frameworks 2015-12-25 00:49:27 +02:00
Ivan Kravets
2e38b156dd Add examples for frameworks 2015-12-25 00:31:13 +02:00
Ivan Kravets
a9a50f79da Add examples for Atmel AVR platform 2015-12-25 00:17:19 +02:00
Ivan Kravets
4b922b9de2 Documented firmware uploading for Atmel AVR development platform using Programmers 2015-12-24 23:55:49 +02:00
Ivan Kravets
36912c0fe6 Update Arduino framework for Atmel AVR development platform to 1.6.7 2015-12-24 23:39:25 +02:00
Ivan Kravets
dfe39f386d Add support for the new Adafruit boards Bluefruit Micro and Feather // Resolve #403 2015-12-24 23:09:40 +02:00
Ivan Kravets
943d16bcf8 Add example with "Ctrl+Q" to serial ports monitor as exit key // Resolve #386 2015-12-22 20:28:37 +02:00
Ivan Kravets
6d0b1a8106 Add demo for ESP8266 OTA 2015-12-22 20:17:10 +02:00
Ivan Kravets
663a3b1aec Add new articles 2015-12-22 20:07:43 +02:00
Ivan Kravets
131f6504ca Improve auto installation for SCons 2015-12-22 19:53:54 +02:00
Ivan Kravets
94cdc9b69e Merge branch 'feature/scons-autoinstall' into develop 2015-12-22 19:09:29 +02:00
Ivan Kravets
1c1cd2509e Add demo with "Over-the-Air update for ESP8266" 2015-12-22 18:21:21 +02:00
Ivan Kravets
abdc76aef8 Improve auto installation for SCons 2015-12-22 18:07:15 +02:00
Ivan Kravets
9b058c3958 Merge branch 'release/v2.6.3' into develop 2015-12-21 20:56:06 +02:00
Ivan Kravets
d91261412e Merge branch 'release/v2.6.3' 2015-12-21 20:56:05 +02:00
Ivan Kravets
2e26b5d31d Version bump to 2.6.3 (issues #396) 2015-12-21 20:55:49 +02:00
Ivan Kravets
3266d3b211 Fix top menu in docs 2015-12-21 20:52:39 +02:00
Ivan Kravets
c2072e3e62 Cleanup debug code 2015-12-21 20:43:07 +02:00
Ivan Kravets
5266f4810b Fix PyLint warning 2015-12-21 20:41:57 +02:00
Ivan Kravets
6e83b4b093 Restore support for Espressif ESP8266 ESP-01 1MB board (ready for OTA) 2015-12-21 20:39:45 +02:00
Ivan Kravets
7b1b908779 Fix invalid ROM size for ESP8266-based boards // Resolve #396 2015-12-21 19:23:46 +02:00
Ivan Kravets
7a95a201b5 Merge branch 'release/v2.6.2' 2015-12-21 17:42:01 +02:00
Ivan Kravets
70c86525cc Merge branch 'release/v2.6.2' into develop 2015-12-21 17:42:01 +02:00
Ivan Kravets
618d32b872 Version bump to 2.6.2 2015-12-21 17:41:37 +02:00
Ivan Kravets
66ca204697 Removed SCons from requirements list 2015-12-21 17:35:30 +02:00
Ivan Kravets
54d650aa40 Update number of supported boards 2015-12-19 01:19:36 +02:00
Ivan Kravets
851b452c17 Add warning to CLion docs to avoid running targets 2015-12-18 23:44:04 +02:00
Ivan Kravets
0ff795e798 Fix "ChunkedEncodingError" when SF connection is broken // Issue #356 2015-12-18 22:56:15 +02:00
Ivan Kravets
43b50e5b9f Update docs with the new vendors for ESP8266 2015-12-18 21:01:56 +02:00
Ivan Kravets
18d68bafd0 Fix vendors for ESP8266 boards 2015-12-18 20:56:17 +02:00
Ivan Kravets
feb951c35e Merge branch 'release/v2.6.1' into develop 2015-12-18 20:30:42 +02:00
Ivan Kravets
41c2164755 Merge branch 'release/v2.6.1' 2015-12-18 20:30:41 +02:00
Ivan Kravets
ee87b55947 Version bump to 2.6.1 (issues #377, #378, #379, #380, #381, #383, #384, #387) 2015-12-18 20:30:30 +02:00
Ivan Kravets
7119bb9084 Fix project generator for Eclipse IDE and "duplicate path entries found in project path" // Resolve #383 2015-12-18 20:18:19 +02:00
Ivan Kravets
132c769766 Better error handling 2015-12-18 19:58:09 +02:00
Ivan Kravets
e4dbcd50cc Improv documentation for Espressif platform 2015-12-18 19:29:20 +02:00
Ivan Kravets
62d5f66ae2 Extra docs for Espressif platform 2015-12-18 18:06:20 +02:00
Ivan Kravets
cfa3f1b520 Extra documentation for development platform / frameworks // Resolve #381 2015-12-18 17:06:28 +02:00
Ivan Kravets
0951d53f52 Fix issue with code builder when build path contains spaces // Resolve #387 2015-12-18 15:40:44 +02:00
Ivan Kravets
186580d794 Fix issue with code builder when build path contains spaces // Resolve #387 2015-12-18 15:20:37 +02:00
Ivan Kravets
1a47cfc938 Show INT values for serial monitor hot keys 2015-12-18 12:18:25 +02:00
Ivan Kravets
edc06f12b5 Add to FAQ "Monitoring a serial port breaks upload" // Resolve #384 2015-12-17 20:22:17 +02:00
Ivan Kravets
3830e98c1d Add support for the new ESP8266 based boards 2015-12-17 20:16:17 +02:00
Ivan Kravets
3cbbecb413 Repository for LD scripts; common LD script for ESP8266 // Resolve #379 2015-12-17 18:17:54 +02:00
Ivan Kravets
f0abd353ae Extend link to FAQ with what is PlatformIO 2015-12-17 00:47:56 +02:00
Ivan Kravets
84cbbe437d Remove default options 2015-12-17 00:08:57 +02:00
Ivan Kravets
34a5d366d5 Fix reset method for Espressif NodeMCU (ESP-12E Module) // Resolve #380 2015-12-17 00:02:22 +02:00
Ivan Kravets
d3b7fc7ddb Add JetBrains post in CLion Blog 2015-12-16 13:18:51 +02:00
Ivan Kravets
3d413743e4 Add ESP8266 quickstart 2015-12-16 00:35:24 +02:00
Ivan Kravets
b3d5ced193 Merge branch 'release/v2.6.0' 2015-12-15 20:54:31 +02:00
Ivan Kravets
1e38db8cae Merge branch 'release/v2.6.0' into develop 2015-12-15 20:54:31 +02:00
Ivan Kravets
b073760711 Version bump to 2.6.0 (issues #308, #365, #368, #371, #372, #373, #375) 2015-12-15 20:54:19 +02:00
Valeriy Koval
f778bdb741 Fix test with ldscripts. 2015-12-15 20:45:47 +02:00
Ivan Kravets
2afbe2a64b Better handling of upload targets 2015-12-15 20:25:59 +02:00
Ivan Kravets
a5878c5544 Updated CMSIS framework and added CMSIS support for Nucleo F401RE board // Issue #373 2015-12-15 20:19:27 +02:00
Ivan Kravets
997cfbf488 Change framework order 2015-12-15 20:10:28 +02:00
Ivan Kravets
3afc8c7908 Add make related keywords 2015-12-15 20:10:04 +02:00
Ivan Kravets
1e21d6e05b Merge pull request #376 from valeros/develop
Add CMSIS support for nucleo_f401re board  // Resolve #373
2015-12-15 20:06:10 +02:00
Valeriy Koval
8eebd39426 Fix libopenCM3 framework. 2015-12-15 19:30:11 +02:00
Valeriy Koval
7e985219ad Update builder for SPL framework. 2015-12-15 19:29:37 +02:00
Valeriy Koval
7ce780bcc6 Update builder for CMSIS framework. 2015-12-15 19:28:58 +02:00
Ivan Kravets
62b41e0994 Fix PyLint warnings 2015-12-15 17:04:28 +02:00
Ivan Kravets
4c65093a66 Remove unused imports 2015-12-15 16:09:35 +02:00
Ivan Kravets
cb4c4e13a3 Install only required packages depending on build environment // Resolve #308 2015-12-15 15:58:52 +02:00
Ivan Kravets
3b7de598d3 Replace native with linux_arm platform for Raspberry Pi 2015-12-15 00:50:14 +02:00
Ivan Kravets
a85bf32700 Use "format" to format exception messages 2015-12-14 22:44:16 +02:00
Ivan Kravets
004125a2ca Add support for Raspberry Pi WiringPi framework // Resolve #372 2015-12-14 19:50:50 +02:00
Ivan Kravets
d4e4ab07a6 Add copyrights 2015-12-14 19:40:59 +02:00
Ivan Kravets
94bb0dc43e Revert back step with upgrading for pip/setuptools // Resolve #371 2015-12-14 19:21:23 +02:00
Ivan Kravets
becec986ea More explanations about library.json 2015-12-14 18:47:50 +02:00
Ivan Kravets
9eae55f03c Add link to telemetry setting 2015-12-14 11:30:39 +02:00
Ivan Kravets
4e90a2fd42 Fix test for settings command 2015-12-14 01:14:02 +02:00
Ivan Kravets
c4d5960eb6 Fix multiple search queries to "lib search" 2015-12-14 00:46:17 +02:00
Ivan Kravets
3595c2cc88 More explanation about telemetry service 2015-12-14 00:40:41 +02:00
Ivan Kravets
73cc3e3ac8 Handle more search args for "lib search" 2015-12-14 00:05:33 +02:00
Ivan Kravets
1541537d0d Don't print any maintenance information for --json-output requests 2015-12-13 23:27:37 +02:00
Ivan Kravets
abf4376d20 Add example with upload_port=IP_ADDRESS for OTA 2015-12-13 22:09:50 +02:00
Ivan Kravets
faf2839a08 Remove command with target=clean 2015-12-13 22:09:19 +02:00
Ivan Kravets
15224e3c02 Add .travis.yml and .gitignore files 2015-12-13 19:40:07 +02:00
Ivan Kravets
093176b2ee Add link to demo projects 2015-12-12 23:37:43 +02:00
Ivan Kravets
dffc8ef940 Optimise auto-scroll for docs by hash 2015-12-12 22:48:45 +02:00
Ivan Kravets
21c64b2fe1 Fix anchor scroll 2015-12-12 22:45:37 +02:00
Ivan Kravets
7868566a78 Improve PlatformIO installation on the Mac OS X El Capitan 2015-12-12 18:18:57 +02:00
Ivan Kravets
f793ff1a86 Disable SCons man for --egg 2015-12-12 18:00:03 +02:00
Ivan Kravets
e702e1eb27 Handle broken connection from SF side 2015-12-12 17:59:25 +02:00
Ivan Kravets
5b2fac95ce Improve symlink fixer 2015-12-12 16:45:53 +02:00
Ivan Kravets
2baf14f900 Implemented Over The Air (OTA) upgrades for Espressif development platform // Resolve #365 2015-12-11 15:31:36 +02:00
Ivan Kravets
cc1eb4bad6 Add previously added boards to docs 2015-12-11 15:24:02 +02:00
Ivan Kravets
fbd2c61f40 Update docs with "upload_flags" 2015-12-11 15:20:08 +02:00
Ivan Kravets
9cc9912ef2 Handle upload_flags option in platformio.ini // Resolve #368 2015-12-11 15:17:38 +02:00
Ivan Kravets
e69bc34678 Fix .gitignore contents 2015-12-11 14:23:12 +02:00
Ivan Kravets
9d01d86652 Explain about SCons and how to fix installation 2015-12-11 00:16:06 +02:00
Ivan Kravets
2c301ca422 Explain how to use Arguments and custom options 2015-12-10 23:52:33 +02:00
Ivan Kravets
9cec353d40 Merge branch 'release/v2.5.0' 2015-12-08 19:28:22 +02:00
Ivan Kravets
c42561de45 Merge branch 'release/v2.5.0' into develop 2015-12-08 19:28:22 +02:00
Ivan Kravets
c841ba1cba Version bump to 2.5.0 (issues #352, #354, #358) 2015-12-08 19:28:08 +02:00
Ivan Kravets
eb1971fb17 Fix PyLint 2015-12-08 19:08:00 +02:00
Ivan Kravets
983db2f3c8 Improve project initialisation 2015-12-08 18:42:50 +02:00
Ivan Kravets
c87c4691f3 Typo fix 2015-12-08 18:42:23 +02:00
Ivan Kravets
68c64cd942 Improve upgrading command 2015-12-07 22:44:31 +02:00
Ivan Kravets
dfb93e9682 Improve project initialisation 2015-12-07 22:23:20 +02:00
Ivan Kravets
b7ab825860 Use general exception for usage error 2015-12-07 17:43:59 +02:00
Ivan Kravets
28619a6ce7 Add libray.json 2015-12-07 17:43:33 +02:00
Ivan Kravets
7eed6f56f6 Update keywords 2015-12-07 17:17:01 +02:00
Valeriy Koval
234517ee0a Ignore unsupported mbed native library 2015-12-07 15:09:43 +02:00
Ivan Kravets
a483ecdfdb Warn about missing native support for the library // Resolve #358 2015-12-07 14:52:19 +02:00
Ivan Kravets
97ee8d55ce Remove debug code 2015-12-07 00:23:38 +02:00
Ivan Kravets
7727562f44 Simplify .travis.yml file 2015-12-07 00:20:14 +02:00
Ivan Kravets
f6686f149b Generate ".gitignore" by default 2015-12-05 23:34:25 +02:00
Ivan Kravets
2345eb3bb7 Fix incorrect behaviour of "platformio serialports monitor" in pair with @PySerial 3.0 2015-12-05 23:30:42 +02:00
Ivan Kravets
16abaccf96 Keep consign DB in .pioenvs 2015-12-05 23:21:16 +02:00
Ivan Kravets
8c8de45f30 Fix PyLint warning 2015-12-04 22:35:22 +02:00
Ivan Kravets
f4f65e4c84 Improve code builder for parallel builds (up to 4 times faster than before) 2015-12-04 21:06:29 +02:00
Ivan Kravets
a8ae5e4d03 Generate .travis.yml CI config for embedded projects by default // Resolve #354 2015-12-04 15:18:31 +02:00
Ivan Kravets
b91f03f082 Add examples for "extra_script" 2015-12-04 00:02:37 +02:00
Ivan Kravets
e1396e57b6 Fix extension for example 2015-12-03 20:02:17 +02:00
Ivan Kravets
67cbf25b96 Fix broken ci command 2015-12-03 19:25:46 +02:00
Ivan Kravets
e721ebe171 Add warning to regenerate project when new libs are used 2015-12-03 17:49:26 +02:00
Ivan Kravets
c2d760bccb Fix tests for init command 2015-12-03 17:39:36 +02:00
Ivan Kravets
5dc1396f05 Remove prompt with "auto-uploading" from init command and add --enable-auto-uploading option // Resolve #352 2015-12-03 17:19:43 +02:00
Ivan Kravets
5b1ceccd1f Add Quickstart for Library Manager 2015-12-03 00:40:17 +02:00
Ivan Kravets
bf1751059c Fix URL for article 2015-12-03 00:28:35 +02:00
Ivan Kravets
7e069afbb2 Add new articles 2015-12-02 23:58:21 +02:00
Ivan Kravets
bacb813b31 Add "Articles/Manuals" for IDE docs 2015-12-02 23:51:07 +02:00
Ivan Kravets
c670372b41 Move Library Manager to separate group 2015-12-02 23:28:49 +02:00
Ivan Kravets
ec9b8f980d Merge branch 'release/v2.4.1' 2015-12-01 19:02:16 +02:00
Ivan Kravets
28399f8ac6 Merge branch 'release/v2.4.1' into develop 2015-12-01 19:02:16 +02:00
Ivan Kravets
ef5fa4dea0 Version bump to 2.4.1 2015-12-01 19:02:01 +02:00
Ivan Kravets
84e82dd39a Restore PLATFORMIO macros with the current version 2015-12-01 19:00:40 +02:00
Ivan Kravets
f842898102 Remove "future" code 2015-12-01 18:38:32 +02:00
Ivan Kravets
1bf73c268d Merge branch 'release/v2.4.0' 2015-12-01 17:51:04 +02:00
Ivan Kravets
17ec85263c Merge branch 'release/v2.4.0' into develop 2015-12-01 17:51:04 +02:00
Ivan Kravets
50ba235917 Version bump to 2.4.0 (issues #271, #334, #335, #336, #339, #340, #343, #345, #346) 2015-12-01 17:50:35 +02:00
Ivan Kravets
14fc21c379 Drop Click to (5.1) <6 // Issue #346 2015-12-01 17:43:16 +02:00
Ivan Kravets
306f2f980d Drop Click to <6 2015-12-01 17:41:10 +02:00
Ivan Kravets
a7a82b1c0a Fix PlatformIO version 2015-12-01 16:28:47 +02:00
Valeriy Koval
d806097b60 Fix PlatformIO version. 2015-12-01 13:47:56 +02:00
Ivan Kravets
9f4b73d821 Update Arduino core for Espressif platform to 2.0.0 // Resolve #345 2015-12-01 12:04:41 +02:00
Valeriy Koval
ff5d57039e Merge branch 'feature/issue-339-espressif-rc-framework' into develop 2015-12-01 11:51:50 +02:00
Valeriy Koval
db42863f54 Update build flags for espressif platform. 2015-12-01 11:21:23 +02:00
Ivan Kravets
946f21879c Add new article by Keith Hughes 2015-11-30 21:46:21 +02:00
Ivan Kravets
20b214f3a4 Rephrase slogan (add library manager) 2015-11-30 18:29:30 +02:00
Ivan Kravets
8aedc50f30 Rephrase slogan 2015-11-30 18:05:32 +02:00
Ivan Kravets
cd11171e33 Lint code with the latest PyLint 2015-11-30 01:11:57 +02:00
Ivan Kravets
bcb4e1abfd Add new article by Mistan 2015-11-29 23:23:31 +02:00
Ivan Kravets
786b977603 Print "unexpected block" for non-PlatformIO exceptions 2015-11-29 19:05:02 +02:00
Ivan Kravets
5264d85a78 Fix broken link to extra css 2015-11-29 17:56:26 +02:00
Ivan Kravets
5713a6233f PlatformIO is an open source ecosystem for IoT development 2015-11-28 17:14:42 +02:00
Ivan Kravets
98ad4adcf3 Numerate installation methods 2015-11-27 23:56:30 +02:00
Ivan Kravets
304c023b4e Fix unicode issue for Python 2.6 2015-11-27 23:49:49 +02:00
Ivan Kravets
7ce1dd4f5c Fix ParseFlags for mbed 2015-11-27 21:59:08 +02:00
Ivan Kravets
332b19f35b Update requirements.txt 2015-11-27 21:19:19 +02:00
Ivan Kravets
774ea5240e Update click to 6.1 2015-11-27 21:16:20 +02:00
Ivan Kravets
221b7ed188 Fix relative include path for preprocessor using "build_flags" // Resolve #271 2015-11-27 21:15:09 +02:00
Ivan Kravets
304339e309 Try navbar over footer 2015-11-27 13:22:06 +02:00
Ivan Kravets
bf9c9b8985 Add navbar to doc 2015-11-27 00:37:46 +02:00
Ivan Kravets
e85bc39315 Fix inaccurate Vim instructions // Issue #340 2015-11-26 22:15:57 +02:00
Ivan Kravets
ed32e07e34 Better exceptions handling 2015-11-26 22:02:59 +02:00
Valeriy Koval
9bd1f99b69 Improve espressif platform for RC version of framework 2015-11-26 20:19:36 +02:00
Ivan Kravets
25f57cc683 Add logo to the docs 2015-11-26 14:44:44 +02:00
Ivan Kravets
fb4d605e33 Rename to Custom Board/Platform 2015-11-26 13:31:41 +02:00
Ivan Kravets
426b276b08 Rename to Custom Board/Platform 2015-11-26 13:28:48 +02:00
Ivan Kravets
a085d90af2 Fix broken link 2015-11-26 00:32:23 +02:00
Ivan Kravets
8023b85085 Improve @circleci doc 2015-11-26 00:10:36 +02:00
Ivan Kravets
f17d2d7f90 @circleci doesn't support matrix builds 2015-11-25 22:27:57 +02:00
Ivan Kravets
aef06e837a Fix "LockFailed: failed to create appstate.json.lock" error for Windows 2015-11-25 19:54:06 +02:00
Ivan Kravets
d63f6cff08 Update FAQ & History // Resolve #331 2015-11-24 19:58:24 +02:00
Valeriy Koval
354fbf6253 Add new board with mbed framework support 2015-11-24 19:20:20 +02:00
Valeriy Koval
238ce2e858 fix moteinomega configuration // Resolve #335 2015-11-24 19:08:19 +02:00
Ivan Kravets
c8b6bd1c2c Add new article "Using PlatformIO to get started with Arduino in CLion IDE" by @mseroczynski 2015-11-24 17:17:25 +02:00
Ivan Kravets
dd5a509a99 Fix ESP-12E flash size // Resolve #333 2015-11-24 13:14:41 +02:00
Valeriy Koval
970ddd44bf Fix maximum_size for ESP-12E board // Resolve #333 2015-11-23 18:39:56 +02:00
Ivan Kravets
c0eded84a0 Only bug fixes in 2.3.6 2015-11-23 17:27:02 +02:00
Ivan Kravets
5a83ebe48e Add new article by @joshglendenning about "@Armstrap Eagle and @PlatformIO" 2015-11-20 22:41:36 +02:00
Ivan Kravets
d90697d8db Merge pull request #328 from hoosierEE/develop
Slight grammar/wording tweaks
2015-11-20 00:08:05 +02:00
Ivan Kravets
159c0a93d2 Start 2.4.0 2015-11-18 20:14:16 +02:00
Ivan Kravets
a6040bb53d Merge branch 'release/v2.3.5' 2015-11-18 20:11:40 +02:00
Ivan Kravets
7d39c886f4 Merge branch 'release/v2.3.5' into develop 2015-11-18 20:11:40 +02:00
Ivan Kravets
771a90a588 Bump to @PlatformIO 2.3.5 2015-11-18 20:11:00 +02:00
Ivan Kravets
7b1858a5ce Fix compilation error TWI_Disable not declared for Arduino Due board // Issue #329 2015-11-18 20:08:27 +02:00
Ivan Kravets
c95226ec1e Fix includes for Windows 2015-11-18 19:18:50 +02:00
Ivan Kravets
6bece3f371 Improve running @PlatformIO outside virtualenv 2015-11-18 19:12:53 +02:00
Ivan Kravets
48c3e5aa29 Remove user's data 2015-11-18 19:12:12 +02:00
Ivan Kravets
73ae2ffb9b Add Apache License, Version 2.0 to @PlatformIO examples README 2015-11-18 17:49:21 +02:00
Ivan Kravets
34aaf7b157 Add Apache License, Version 2.0 to @PlatformIO docs 2015-11-18 17:33:46 +02:00
Ivan Kravets
904b08f497 Add Apache License, Version 2.0 to @PlatformIO source code 2015-11-18 17:16:17 +02:00
Ivan Kravets
5454c35430 Fix empty list with serial ports on Mac OS X // Resolve #294 2015-11-17 23:20:04 +02:00
Ivan Kravets
aa98d7dc5d Skip thread exceptions for telemetry 2015-11-17 23:04:49 +02:00
hoosierEE
020c1c7975 Slight grammar/wording tweaks 2015-11-17 13:26:42 -05:00
Ivan Kravets
cf98750f4b Fix project generator for CLion IDE under Windows OS with invalid path to executable // Resolve #326 2015-11-16 23:17:23 +02:00
Ivan Kravets
09ccae0f30 Update Arduino AVR/SAM frameworks to 1.6.6 // Resolve #321 2015-11-16 23:10:14 +02:00
Ivan Kravets
522cbacada Add new article by @nocd5 2015-11-13 17:45:36 +02:00
Ivan Kravets
841fa02b18 Add new article by ALvaro Garcia Gomez 2015-11-12 17:38:56 +02:00
Ivan Kravets
47041272d2 Fix Circle build 2015-11-12 17:28:25 +02:00
Ivan Kravets
c7a6f4f186 Update SCons to 2.4.1 2015-11-12 17:07:17 +02:00
Ivan Kravets
2756984273 Add "open-source" to slogan 2015-11-11 14:59:47 +02:00
Ivan Kravets
cc46fa34e8 Add "framework-arduinonordicnrf51" for the platform 2015-11-10 00:12:30 +02:00
Valeriy Koval
b94cc655c2 Fix lint error. 2015-11-09 21:02:05 +02:00
Valeriy Koval
1c5d34cb5f Update nordicnrf51 platform for RFduino. 2015-11-09 20:24:41 +02:00
Valeriy Koval
ace9ae0b24 Initial support for RFduino. 2015-11-09 18:10:43 +02:00
Ivan Kravets
91345c0bdd Add support for pySerial 3.0 // Resolve #307 2015-11-06 19:54:15 +02:00
Ivan Kravets
1790c6bd0f Merge branch 'feature/pyserial-3.0' into develop 2015-11-06 16:58:50 +02:00
Ivan Kravets
d72b899471 Fix installation on Mac OS X El Capitan // Resolve #312 2015-11-06 16:38:41 +02:00
Ivan Kravets
bf9bbabfd6 Update languages for non-english articles 2015-11-04 16:06:43 +02:00
Ivan Kravets
fff9b34ed7 Fix country name 2015-11-04 16:04:18 +02:00
Ivan Kravets
ce3a8c1f46 Update articles 2015-11-04 16:02:49 +02:00
Ivan Kravets
c420fa4bc2 Add new article "Arduino development at the command line: VIM + @PlatformIO (Japan)" by @caad1229 2015-11-04 00:10:42 +02:00
Ivan Kravets
8e5f9067af Fix article url 2015-11-03 23:56:59 +02:00
Ivan Kravets
306b0a2f62 Fix firmware uploading for "nordicrf51" development platform // Resolve #316 2015-11-02 23:03:05 +02:00
Ivan Kravets
96f4667755 Update bottle to 0.12.9 2015-11-02 22:39:37 +02:00
Ivan Kravets
2c53bd49f2 Upload firmware using external programmer via "platformio run –target program" // Resolve #311 2015-11-02 22:36:49 +02:00
Ivan Kravets
caa0961337 Fix handling of upload port when board option is not specified in platformio.ini // Resolve #313 2015-11-02 21:41:13 +02:00
Ivan Kravets
32d3b632d2 Add support for Espressif ESP8266 ESP-12E board (NodeMCU) // Resolve #310 2015-11-02 21:18:09 +02:00
Valeriy Koval
3945edb7fe Update default cpu frequency for NodeMCU board 2015-10-22 17:59:43 +03:00
Valeriy Koval
928feee008 Remove udev rules for ESP-12E (HL-340 dupl.) 2015-10-21 13:19:44 +03:00
Valeriy Koval
9ef4b00238 Fix udev rules for ESP-12E (NodeMCU) 2015-10-21 13:11:13 +03:00
Valeriy Koval
616a769ff5 Add Espressif ESP-12E board (NodeMCU) 2015-10-21 12:48:13 +03:00
Ivan Kravets
ef2c96ac84 Add more examples for @Travis-CI 2015-10-20 17:35:56 +01:00
Ivan Kravets
1c63da7f33 Improve Travis CI doc 2015-10-19 18:25:06 +01:00
Ivan Kravets
2e00e5f463 Add new article "First Arduino I2C Experience with PaltformIO" 2015-10-19 17:59:38 +01:00
Ivan Kravets
8360bf9d84 Up to 2.4.0.ev0 2015-10-16 15:29:28 +01:00
Ivan Kravets
1520c096a4 Add libOpenCM3 framework for nucleo_f103rb board // Resolve #309 2015-10-16 15:22:11 +01:00
Valeriy Koval
a965bfd32e Fix boards ldscript test 2015-10-16 16:17:24 +03:00
Valeriy Koval
7741790bd8 Add libopenCM3 support for nucleo_f103rb board. 2015-10-16 14:50:28 +03:00
Ivan Kravets
f0e6f8cee2 Update requests to 2.8.1, lockfile to 0.11.0 2015-10-13 20:03:35 +01:00
Ivan Kravets
c4a4dcd419 Merge branch 'release/v2.3.4' 2015-10-13 18:40:46 +01:00
Ivan Kravets
b89a04acd8 Merge branch 'release/v2.3.4' into develop 2015-10-13 18:40:46 +01:00
Ivan Kravets
b7d2619651 Version bump to 2.3.4 (issues #132, #279, #290, #302, #305, #306) 2015-10-13 18:40:23 +01:00
Ivan Kravets
c07e957e28 Fix FAQ doc 2015-10-13 18:36:37 +01:00
Ivan Kravets
b183431c27 Install SCons automatically and avoid error: option --single-version-externally-managed not recognized 2015-10-13 18:24:40 +01:00
Ivan Kravets
177353bf7a PlatformIO command completion in Terminal for bash and zsh // Resolve #290 2015-10-13 17:44:28 +01:00
Ivan Kravets
de2d6818c1 Full support of CLion IDE including code auto-completion // Resolve #132 2015-10-13 14:01:16 +01:00
Ivan Kravets
f758d8607a Use teensy CLI loader for upload of .hex files on OSX // Resolve #306 2015-10-12 16:29:24 +01:00
Ivan Kravets
1164ef31ca Fix missing of framework-mbed package for teensy platform // Resolve #305 2015-10-12 13:24:42 +01:00
Ivan Kravets
2997273654 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/pyserial-3.0 2015-10-10 14:26:21 +01:00
Ivan Kravets
20edf7de41 Add support for @ubIQio Ardhat board // Resolve #302 2015-10-10 11:35:01 +01:00
Ivan Kravets
7467c281cc Add support for @ubIQio Ardhat board 2015-10-10 11:33:38 +01:00
Ivan Kravets
3b8d7304ff Propose upgrading via pip 2015-10-09 14:12:30 +01:00
Ivan Kravets
6e274cbf20 Correct social links 2015-10-08 16:59:12 +01:00
Ivan Kravets
3a0614641b Add links for Hackaday 2015-10-08 16:50:47 +01:00
Ivan Kravets
c395dd5ebd Update requests to 2.8.0 2015-10-07 11:57:46 +01:00
Ivan Kravets
1c9dc2ba3d Handle WindowsError when can't remove .pioenvs directory 2015-10-06 17:06:47 +01:00
Ivan Kravets
52b98dd159 Add "Commands completion in Terminal" 2015-10-04 15:20:49 +01:00
Ivan Kravets
1426e78793 Show valid environment names when user typed unknown values 2015-10-03 15:38:33 +01:00
Ivan Kravets
8eb2798e5c Direct import of comports 2015-10-03 12:28:21 +01:00
Ivan Kravets
ec6af9a460 Merge branch 'release/v2.3.3' 2015-10-02 16:24:02 +01:00
Ivan Kravets
ec844961c7 Merge branch 'release/v2.3.3' into develop 2015-10-02 16:24:02 +01:00
Ivan Kravets
e1c9cb2c00 Version bump to 2.3.3 (issues #263, #288, #292, #295, #296, #297) 2015-10-02 16:23:46 +01:00
Ivan Kravets
2c0d26e06d Skip empty serial ports // Issue #294 2015-10-02 16:20:07 +01:00
Ivan Kravets
3c36eafdfa Avoid pip cache when problem occurs for upgrade process // Issue #295 2015-10-02 16:14:04 +01:00
Ivan Kravets
e22ab787dd Fix ESP8266 compile errors about RAM size when adding 1 library // Resolve #297 2015-10-02 15:34:36 +01:00
Ivan Kravets
948b75aeda Merge pull request #299 from valeros/develop
Update espressif platform // Resolve #296, #297
2015-10-02 15:22:09 +01:00
Valeriy Koval
4dcef89301 Update espressif platform // Resolve #296, #297 2015-10-02 16:11:00 +03:00
Ivan Kravets
12b29a760a More explanations about NotPlatformProject 2015-10-01 17:04:26 +01:00
Ivan Kravets
43ca0e149f Remove debug info 2015-09-30 16:56:13 +01:00
Ivan Kravets
ad1666dd0a Fix double quotes in defines for Project Generator // Issue #294 2015-09-30 16:54:12 +01:00
Ivan Kravets
1b4d4f5695 Handle Atom & Vim as IDE 2015-09-30 14:54:07 +01:00
Ivan Kravets
a714e6084a Add to FAQ "Unable to install PlatformIO: [Errno 1] Operation not permitted" // Resolve #295 2015-09-28 16:57:28 +01:00
Ivan Kravets
a8dd5d85a5 Add support for ST Nucleo F446RE board // Pull #293 2015-09-28 13:19:07 +01:00
Ivan Kravets
83363c7077 Merge pull request #293 from dkuku/patch-1
Add support for ST Nucleo F446RE board
2015-09-28 13:12:48 +01:00
Ivan Kravets
d99a57365f Add support for LightBlue Bean board // Issue #292 2015-09-28 12:09:03 +01:00
Daniel Kuku
3cb41cf6b0 Update ststm32.json
added nucleo_f446re
2015-09-27 03:02:34 +01:00
Ivan Kravets
5201626d6a Merge pull request #292 from mplewis/add-lightblue-boards
config: add LightBlue Bean board definition and docs
2015-09-24 09:43:57 +02:00
Matthew Lewis
f812e74324 config: fix Punch Through vendor name 2015-09-23 11:57:54 -05:00
Matthew Lewis
0668d6d290 docs: remove LightBlue Bean docs 2015-09-23 11:54:00 -05:00
Ivan Kravets
46d1c2c86c Fix broken lock file for "appstate" storage // Resolve #288 2015-09-23 16:35:31 +03:00
Ivan Kravets
ee7fe1fc10 Add to FAQ info about Archlinux issue with libncurses.so.5 // Resolve #291 2015-09-23 15:55:19 +03:00
Matthew Lewis
c997495b5d docs: fix underline length 2015-09-22 15:04:06 -05:00
Matthew Lewis
605b5755bf config: add LightBlue Bean board definition and docs 2015-09-22 14:54:32 -05:00
Ivan Kravets
b60c761cce Fix firmware uploading to Arduino Leonardo board using Mac OS // Resolve #287 2015-09-11 12:53:04 +03:00
Ivan Kravets
12d6df6962 Merge branch 'release/v2.3.2' 2015-09-10 20:44:53 +03:00
Ivan Kravets
34972c77f5 Merge branch 'release/v2.3.2' into develop 2015-09-10 20:44:53 +03:00
Ivan Kravets
2c5db64677 Version bump to 2.3.2 (issues #279) 2015-09-10 20:44:39 +03:00
Ivan Kravets
fa33d53180 Show float RAM values for boards // Issue #286 2015-09-10 20:41:23 +03:00
Ivan Kravets
57b877f445 Fix Cygwin disabling 2015-09-10 20:31:26 +03:00
Ivan Kravets
dcb6d8286b Disable Cygwin support 2015-09-10 20:23:37 +03:00
Ivan Kravets
3a8c515e21 Minor fix 2015-09-10 20:22:54 +03:00
Ivan Kravets
50984f1475 Correct OS arch within Cygwin emu 2015-09-10 19:47:14 +03:00
Ivan Kravets
4338bade5b Allow PlatformIO to be run within Cygwin environment 2015-09-10 19:35:32 +03:00
Ivan Kravets
ed10ecd142 Explain how to use "lib" directory from the PlatformIO based project // Issue #273 2015-09-10 18:19:23 +03:00
Ivan Kravets
6815297b0c Merge branch 'feature/issue-287' into develop 2015-09-10 17:52:40 +03:00
Ivan Kravets
c72bf9ea31 Found solution for "pip/scons error: option –single-version-externally-managed not recognized" // Resolve #279 2015-09-10 17:47:19 +03:00
Ivan Kravets
d4f4d9c789 Fix using $UPLOAD_PROTOCOL env variable 2015-09-10 16:56:33 +03:00
Ivan Kravets
61ef27c345 Allow to use ST-Link uploader for mbed-based projects 2015-09-10 16:43:09 +03:00
Ivan Kravets
9c73e59772 Fix firmware uploading for Arduino Leonardo under Unix 2015-09-10 15:20:29 +03:00
Ivan Kravets
0405ba3f31 Update virtualenv if exists 2015-09-09 01:28:43 +03:00
Ivan Kravets
f5f97fe0fd More explanations about lib directory 2015-09-09 01:01:41 +03:00
Ivan Kravets
82a8bd01fc Fix SConsNotInstalled error for Linux Debian-based distributives 2015-09-09 00:45:51 +03:00
Ivan Kravets
b15408e693 Depend on lockfile >= 0.9.1 2015-09-08 15:08:44 +03:00
Ivan Kravets
74ac9ffa1c Merge branch 'release/v2.3.1' 2015-09-06 18:17:53 +03:00
Ivan Kravets
ed5f035d1c Merge branch 'release/v2.3.1' into develop 2015-09-06 18:17:53 +03:00
Ivan Kravets
0f5417bab4 Version bump to 2.3.1 (issues #283) 2015-09-06 18:17:40 +03:00
Ivan Kravets
0311418bfc Fix critical issue when platformio init --ide__ command hangs PlatformIO // Resolve #283 2015-09-06 18:16:09 +03:00
Ivan Kravets
bc449fec48 Remove SCons from pip instruction 2015-09-05 23:17:01 +03:00
Ivan Kravets
1e7240d6dc Merge branch 'release/v2.3.0' into develop 2015-09-05 23:05:34 +03:00
Ivan Kravets
2732d63362 Merge branch 'release/v2.3.0' 2015-09-05 23:05:33 +03:00
Ivan Kravets
78bf56e327 Version bump to 2.3.0 (issues #234, #252, #256, #263, #268, #270, #272, #274, #277, #279) 2015-09-05 23:04:53 +03:00
Ivan Kravets
01eb25cb39 Handle Miniterm exceptions 2015-09-05 22:58:42 +03:00
Ivan Kravets
1f612b466c Fix platformio path for Windows 2015-09-05 22:43:12 +03:00
Ivan Kravets
0a85e01322 Cleanup 2015-09-05 20:53:50 +03:00
Ivan Kravets
3cb4e6e854 Fix project generator for Windows; update docs for IDE 2015-09-05 20:50:30 +03:00
Ivan Kravets
d566eb2a36 Include subdirectories with tpls for project generator 2015-09-05 10:45:09 +03:00
Ivan Kravets
71890a34be Reorganise IDE examples 2015-09-04 23:48:57 +03:00
Ivan Kravets
c254a3490c Fix path for Windows-based projects 2015-09-04 20:35:56 +03:00
Ivan Kravets
a032026f46 Significantly improve "Project Generator" // Resolve #280 2015-09-04 19:31:59 +03:00
Ivan Kravets
e1ee61d31b Add "-d" option for "--project-dir" to init & run commands 2015-09-04 18:28:13 +03:00
Ivan Kravets
ca4694e1af Update mbed framework 2015-09-04 13:10:14 +03:00
Ivan Kravets
9fea8f4488 Switch to requires.io 2015-09-04 12:57:11 +03:00
Ivan Kravets
f9f54da914 Fix invalid command context 2015-09-03 20:07:35 +03:00
Ivan Kravets
97c1a27031 Fix serial monitor args 2015-09-03 20:00:24 +03:00
Ivan Kravets
0d8d5fdb32 Allow multiple instances of @PlatformIO 2015-09-03 19:04:09 +03:00
Ivan Kravets
25c448627e Added short "-h" help option for PlatformIO and sub-commands 2015-09-02 23:07:45 +03:00
Ivan Kravets
baa83c6ee6 Improve PlatformIO upgrading 2015-09-02 13:42:01 +03:00
Ivan Kravets
2f7a6ef0a1 Check that SCons is installed properly 2015-09-01 16:42:41 +03:00
Ivan Kravets
c50332daa2 Allow to run platformio directly from the bin folder 2015-09-01 16:15:04 +03:00
Ivan Kravets
8dbb282416 Info about "Add" button when $PATH doesn't exist 2015-08-29 00:51:21 +03:00
Ivan Kravets
ef8f7d4fc0 More explanation about Eclipse and $PATH 2015-08-29 00:47:56 +03:00
Ivan Kravets
74ea4ae9c2 Update installation via pip 2015-08-29 00:25:29 +03:00
Ivan Kravets
2cf1b1420c Fix used command and version 2015-08-28 23:53:45 +03:00
Ivan Kravets
8bdcf54d9f Add new article about MBED FRDM-K64F Eclipse/PlatformIO 2015-08-28 23:50:46 +03:00
Ivan Kravets
a815aa15ec Fix installation issue with pip // Resolve #279 2015-08-28 22:32:39 +03:00
Ivan Kravets
b1dbba6224 Add demo to README 2015-08-28 20:15:40 +03:00
Ivan Kravets
35901a125d Fix upload link for Wiring Blink demo 2015-08-28 19:55:16 +03:00
Ivan Kravets
52b28867a0 Add "Demo" page 2015-08-28 19:52:37 +03:00
Ivan Kravets
d7d71b60f8 Full text of docs 2015-08-28 17:19:33 +03:00
Ivan Kravets
465e952ae4 Update TOP links 2015-08-28 17:16:30 +03:00
Ivan Kravets
200658ae6d Use Circle built-in setuptools 2015-08-27 11:09:25 +03:00
Ivan Kravets
e58f5e3617 Fix tox @develop 2015-08-25 18:08:57 +03:00
Ivan Kravets
78ba3176f2 Remove SCons package from develop docs 2015-08-25 16:51:46 +03:00
Ivan Kravets
abd02570f4 Use toolchain's includes pattern "include*" for Project Generator // Resolve #277 2015-08-25 16:45:12 +03:00
Ivan Kravets
97b8d4eeea Add SCons to requirements list 2015-08-25 16:35:19 +03:00
Ivan Kravets
92036356ca Pre-upgrade for pip and setuptools for CI 2015-08-25 16:30:16 +03:00
Ivan Kravets
6842df5577 Install @PlatformIO without -U flag by default 2015-08-25 15:21:13 +03:00
Ivan Kravets
793352dfbf Rephrase installation text 2015-08-25 15:16:25 +03:00
Ivan Kravets
b96535abff Install @PlatformIO with update option 2015-08-25 15:12:31 +03:00
Ivan Kravets
2b4b50ee08 Add info about pip 2015-08-25 15:11:23 +03:00
Ivan Kravets
e2795716f9 Generate "readme.txt" for project "lib" directory // Resolve #273 2015-08-22 23:11:48 +03:00
Ivan Kravets
47d5783700 Improve installation section 2015-08-22 22:27:35 +03:00
Ivan Kravets
9f6c677276 Remove SCons temporary from requirements list (Circle CI fails) 2015-08-22 17:44:51 +03:00
Ivan Kravets
70f117f63f Install the latest pip & setuptools packages 2015-08-22 17:42:01 +03:00
Ivan Kravets
83c8e914ae Fix YAML format 2015-08-22 17:39:19 +03:00
Ivan Kravets
38b6a86858 Install the latest pip & setuptools packages 2015-08-22 17:38:15 +03:00
Ivan Kravets
76267b7db6 Group PlatformIO releases 2015-08-22 17:31:26 +03:00
Ivan Kravets
4cd0febb18 Add information about symlinks // Issue #272 2015-08-22 17:30:58 +03:00
Ivan Kravets
9d9488edd1 Add SCons to requirement list 2015-08-22 17:16:28 +03:00
Ivan Kravets
a1483c263f Simplified installation process of PlatformIO // Resolve #274 2015-08-22 17:09:28 +03:00
Ivan Kravets
8e42c4ae31 Explain that lib dir is suitable for private libraries // Issue #273 2015-08-21 23:56:22 +03:00
Ivan Kravets
bf15ba3a78 Add answer to FAQ when Program “platformio” not found in PATH // Resolve #272 2015-08-21 23:41:50 +03:00
Ivan Kravets
20a0592b37 Fix "AttributeError: 'module' object has no attribute 'packages'" // Resolve #252 2015-08-21 23:09:56 +03:00
Ivan Kravets
5422054ae4 Use original 'returncode' from exec command 2015-08-21 19:50:21 +03:00
Ivan Kravets
ac3844aa95 Add new articles 2015-08-21 17:17:47 +03:00
Valeriy Koval
1b41ffba60 Fix home path environment variable in Eclipse project on Windows // Resolve #270 2015-08-20 14:52:03 +03:00
Ivan Kravets
3393d81452 Hint "save as..." for download get-platformio.py script 2015-08-19 23:11:42 +03:00
Ivan Kravets
25baee266c Add @PlatformIO Storage stats badge 2015-08-18 16:37:44 +03:00
Ivan Kravets
731467d4e9 Add MinGW to PATH env for AppVeyor 2015-08-17 11:55:42 +03:00
Ivan Kravets
bd03d75f14 Switch to click 5.0 2015-08-17 10:37:53 +03:00
Ivan Kravets
260dd03179 Restore external build flags 2015-08-14 16:09:48 +03:00
Ivan Kravets
35f7d8a4cc Enhance docs 2015-08-14 00:14:04 +03:00
Ivan Kravets
84fb5e59a9 Update hello-world example 2015-08-10 22:17:37 +03:00
Ivan Kravets
838ba3ad4f Add new article by Russell Davis 2015-08-10 21:51:09 +03:00
Ivan Kravets
ad7be3b397 Add new development platforms: linux_arm, linux_i686 and linux_x86_64 2015-08-10 21:39:31 +03:00
Ivan Kravets
27ca987284 iSort passed 2015-08-10 16:17:00 +03:00
Ivan Kravets
2b8f7824c2 Add support for Linux 32/64 as host OS for cross compiling to Windows x86 2015-08-10 16:16:16 +03:00
Ivan Kravets
5679271913 Add "Hello World" example for desktop platforms 2015-08-09 21:46:43 +03:00
Ivan Kravets
c9491f47e1 Add support for mingw-linux toolchains 2015-08-09 21:46:07 +03:00
Ivan Kravets
5e2415cb37 Add support for "windows_x86" development platform // Issue #263 2015-08-09 19:05:16 +03:00
Ivan Kravets
2715efd910 Add support for Adafruit Gemma board 2015-08-09 18:08:34 +03:00
Ivan Kravets
b65a356669 Merge pull request #265 from WillemMali/develop
improved error wording
2015-08-07 14:56:45 +03:00
WillemMali
9ec0d3bc8c improved error wording
Fixed a grammatical mistake and made the meaning clearer by replacing "it" with "this" and by adding an example.

It does increase the length of the output, but I think it's much easier to read and more informative.
2015-08-07 13:14:14 +02:00
Ivan Kravets
acd0ecf38a Merge pull request #264 from jrobeson/patch-1
fix typo in udev rules file
2015-08-07 13:09:02 +03:00
Johnny Robeson
b75db38e45 fix typo in udev rules file 2015-08-07 05:23:11 -04:00
Ivan Kravets
c7a79cb8b4 Merge pull request #256 from bkudria/adafruit-gemma
Adafruit Gemma support
2015-08-05 10:59:59 +03:00
Ivan Kravets
7e5c22706b Use own mirror when SF is offline 2015-08-04 00:27:13 +03:00
Ivan Kravets
7d5a2c4dfc Set default PROGNAME to "program" 2015-08-03 23:10:47 +03:00
Ivan Kravets
584d03c802 Propagating External Environment 2015-08-03 15:08:54 +03:00
Ivan Kravets
0646ffc93f Restore process $PATH for SCons 2015-08-03 12:53:21 +03:00
Ivan Kravets
0f8b506c76 Merge branch 'feature/issue-263-native-platform' into develop 2015-08-03 12:34:03 +03:00
Ivan Kravets
f0d849a702 Added native development platform 2015-08-03 12:33:37 +03:00
Ivan Kravets
0d196ef7b7 Rename env.BuildFirmware to env.BuildProgram 2015-08-02 19:52:37 +03:00
Benjamin Kudria
75edcef099 Adafruit Gemma support 2015-08-01 16:52:14 -07:00
Ivan Kravets
ce82b14f6b Fix sys env for Windows 2015-08-01 18:33:41 +03:00
Ivan Kravets
e102fb2880 Allow PROGNAME & PROGSUFFIX to be configurable within platform 2015-08-01 17:41:05 +03:00
Ivan Kravets
203026a57b Use cyclic linker options just for gcc-based compilers 2015-08-01 17:39:15 +03:00
Ivan Kravets
86e39f9b44 More explanations about run --targets 2015-08-01 17:30:20 +03:00
Ivan Kravets
edcad9c251 Add link to Facebook page 2015-07-31 14:22:46 +03:00
Ivan Kravets
cb6d433e15 Add Facebook page 2015-07-31 14:21:30 +03:00
Ivan Kravets
49d5994628 Merge branch 'release/v2.2.2' 2015-07-30 18:56:13 +03:00
Ivan Kravets
e488d53950 Version bump to 2.2.2 (issues #247, #253, #254, #255, #257, #260) 2015-07-30 18:54:06 +03:00
Ivan Kravets
e6be7ab3b5 Minor improvements for exitStatus and returncode 2015-07-30 18:17:57 +03:00
Ivan Kravets
59505cb8f3 Show internal errors from "Miniterm" using "platformio serialports monitor" command // Resolve #257 2015-07-30 18:07:26 +03:00
Ivan Kravets
5761cea47e Fixed "platformio serialports monitor --help" information with HEX char for hotkeys // Resolve #253 2015-07-30 17:50:07 +03:00
Ivan Kravets
d27f9a9d09 Improve CI handling 2015-07-30 17:33:45 +03:00
Ivan Kravets
e43635bf9b Fix comments stripping 2015-07-30 14:37:46 +03:00
Ivan Kravets
3813614d31 Support for off-line/unpublished/private libraries // Resolved #260 2015-07-29 21:14:41 +03:00
Ivan Kravets
9a6189d7cd Disable Shippable Build Status 2015-07-29 20:24:18 +03:00
Ivan Kravets
132f2d20fd Skip SHA1 verification for non SF packages 2015-07-29 19:59:39 +03:00
Ivan Kravets
c96ae1f773 Fix linker cyclic for static libs 2015-07-29 17:48:10 +03:00
Ivan Kravets
45905d0992 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-07-29 17:33:20 +03:00
Ivan Kravets
076696cde1 Use Linker cyclic option when deplibs exist 2015-07-29 17:33:06 +03:00
Ivan Kravets
25781c7631 Add os import to Python template 2015-07-29 14:47:47 +03:00
Ivan Kravets
99649614c5 Add link to article "Arduino Development in Atom Editor" 2015-07-23 19:53:13 +03:00
Ivan Kravets
7a6e8279e4 Integration with Atom IDE 2015-07-23 19:25:10 +03:00
Ivan Kravets
b79a79d423 Handle "OSError: [Errno 13] Permission denied" for PlatformIO installer script 2015-07-21 17:51:33 +03:00
Ivan Kravets
5a91d0bf1b Disable project auto-clean while building/uploading firmware // Resolve #255 2015-07-21 14:53:38 +03:00
Ivan Kravets
b9d14918f3 A few improvements for installation doc 2015-07-21 14:48:34 +03:00
Ivan Kravets
5d6b2e0eb6 Add Teensy HID USB mouse example 2015-07-17 21:31:28 +03:00
Ivan Kravets
3d7c3a0c7a Fix typo in history 2015-07-17 15:05:05 +03:00
Ivan Kravets
2f7f7dcd6a Update release date 2015-07-17 14:58:34 +03:00
Ivan Kravets
5b8c6c4d56 Merge branch 'release/v2.2.1' 2015-07-17 14:54:55 +03:00
Ivan Kravets
6af7fd8007 Merge branch 'release/v2.2.1' into develop 2015-07-17 14:54:55 +03:00
Ivan Kravets
bfb801acef Version bump to 2.2.1 (issues #132, #248, #249, #250, #251) 2015-07-17 14:54:39 +03:00
Ivan Kravets
9379c3cb39 Updated "sdk-esp8266" package for espressif platform 2015-07-17 14:51:17 +03:00
Ivan Kravets
d66e8fe7af Check if all default packages are installed 2015-07-17 14:50:06 +03:00
Valeriy Koval
b85303c12a Improve espressif platform and native example for new SDK 2015-07-17 14:32:50 +03:00
Ivan Kravets
60e3d7450f Fix platform auto-installation 2015-07-17 14:28:14 +03:00
Ivan Kravets
4cd294ef57 Fix indention 2015-07-17 13:52:43 +03:00
Ivan Kravets
890acbc80e Switch to PlatformIO's SCons version 2015-07-17 13:48:17 +03:00
Ivan Kravets
de1cce41b0 Improve platform auto-installing (especially for @SmartAthill) 2015-07-16 22:19:09 +03:00
Ivan Kravets
e20f6abef4 Fix mention about project conf 2015-07-16 13:29:22 +03:00
Ivan Kravets
fa11f5d613 More details about limited features of CLion IDE 2015-07-16 13:27:58 +03:00
Ivan Kravets
1e0adcfdc4 Bump to 2.2.1a0 2015-07-15 19:45:56 +03:00
Valeriy Koval
d5c852d329 Project generator for CLion IDE // Resolve #132 2015-07-15 19:34:10 +03:00
Ivan Kravets
c4e42c88fe Fix Espressif "uploadlazy" target for @SmartAnthill Project 2015-07-13 14:02:14 +03:00
Ivan Kravets
4b93ec0b0b Improve "uploadlazy" target for @SmartAnthill Project 2015-07-13 12:43:45 +03:00
Ivan Kravets
21b01c8949 Note about Windows drivers for embedded boards 2015-07-07 23:33:25 +03:00
Ivan Kravets
76415b930f Fixed incorrect arguments handling for "platformio serialports monitor" command // Resolve #248 2015-07-07 23:08:54 +03:00
Ivan Kravets
88ad2a1626 Minor fix 2015-07-06 22:36:05 +03:00
Ivan Kravets
94c459258c Add explanation about dir change 2015-07-06 18:44:00 +03:00
Ivan Kravets
e1b7810465 Merge branch 'release/v2.2.0' into develop 2015-07-01 18:03:44 +03:00
Ivan Kravets
6c2883ba3b Merge branch 'release/v2.2.0' 2015-07-01 18:03:43 +03:00
Ivan Kravets
249b00df1a Version bump to 2.2.0 (issues #233, #238, #239, #240, #242, #243, #244, #245, #246) 2015-07-01 18:03:33 +03:00
Ivan Kravets
3fcf0a1bda New boards; update packages for pre-built frameworks 2015-06-30 23:34:01 +03:00
Valeriy Koval
c31f591ca0 Add new boards to ST STM32 & Nordic NRF51 platforms 2015-06-30 22:25:27 +03:00
Valeriy Koval
c80fb5f4b3 Update Espressif platform // Resolve #245 2015-06-30 22:21:22 +03:00
Ivan Kravets
218a978f6d Update PlatformIO slogan 2015-06-29 22:26:37 +03:00
Ivan Kravets
f6aed63055 Specify full target anchor for images 2015-06-29 22:25:56 +03:00
Ivan Kravets
a119e39ede Typos fix 2015-06-29 19:40:15 +03:00
Valeriy Koval
94da243dad Disable .user file for Qt Creator (additional steps are explained in docs) // Resolve #244 2015-06-29 18:02:19 +03:00
Valeriy Koval
244412daf1 Update IDE integration instructions for Qt Creator and VisualStudio 2015-06-29 17:59:47 +03:00
Ivan Kravets
29d7137a3d Fix include paths without HOMEDRIVE for VisualStudio 2015-06-29 17:40:10 +03:00
Ivan Kravets
9017cb1600 Fix access to env variable from qtmake 2015-06-29 16:44:37 +03:00
Ivan Kravets
80b012c157 Fix incorrect "includes" for project generator 2015-06-29 16:36:02 +03:00
Ivan Kravets
b80c525952 Improve docs for env's "target" option 2015-06-28 20:38:37 +03:00
Ivan Kravets
1af6eba151 Rename "srcbuild_flags" env option to "src_build_flags" 2015-06-28 20:18:16 +03:00
Ivan Kravets
e288499db9 Rename "install_libs" env option to "lib_install" 2015-06-28 20:16:43 +03:00
Ivan Kravets
ebdbf79868 Rename "use_libs" env option to "lib_use" 2015-06-28 19:44:35 +03:00
Ivan Kravets
776a2027fb Rename "ignore_libs" env option to "lib_ignore" 2015-06-28 19:31:28 +03:00
Ivan Kravets
a928f4aa8f Rename "ldf_cyclic" env option to "lib_dfcyclic" 2015-06-28 19:20:31 +03:00
Ivan Kravets
9c5f9b6e30 Improve embedded texts 2015-06-27 22:47:44 +03:00
Ivan Kravets
ae4918bdb7 Fix relative path for includes when generating project for IDE // Resolve #243 2015-06-27 21:20:44 +03:00
Ivan Kravets
a581ba9814 Fix project generator for Microsoft Visual Studio 2015-06-27 21:18:33 +03:00
Ivan Kravets
31840bbc11 Update PlatformIO logo 2015-06-27 17:57:21 +03:00
Ivan Kravets
53b005bbed Simplify installation process for development version 2015-06-27 15:18:51 +03:00
Ivan Kravets
82864d38e2 Fix IDE project generator when board is specified // Resolve #242 2015-06-27 15:13:27 +03:00
Ivan Kravets
43205b8cd5 Correct fs directory separator // Issue #240 2015-06-23 14:24:46 +03:00
Ivan Kravets
e240e0ee32 Add to FAQ ARM toolchain issue with "error while loading shared libraries" 2015-06-22 18:45:20 +03:00
Ivan Kravets
6c7e26412a Change source dir to "src" 2015-06-22 17:27:32 +03:00
Ivan Kravets
3232ba6a6c Allow to exclude/include source files from build process using src_filter // Resolve #240 2015-06-22 15:06:39 +03:00
Ivan Kravets
46461b0721 Merge branch 'hotfix/v2.1.2' into develop 2015-06-21 21:56:16 +03:00
Ivan Kravets
90508dfd96 Merge branch 'hotfix/v2.1.2' 2015-06-21 21:51:38 +03:00
Ivan Kravets
d8dba90f77 Fix broken link to SCons installer 2015-06-21 21:48:45 +03:00
Ivan Kravets
829d5781a5 Allow to launch own extra script before firmware building/uploading processes // Resolve #239 2015-06-19 15:29:22 +03:00
Ivan Kravets
8e95bfb464 Allow to specify own path to the linker script (ld) using build_flags option // Resolve #233 2015-06-19 13:43:30 +03:00
Ivan Kravets
91563b01d2 Improve path validator 2015-06-19 00:10:50 +03:00
Ivan Kravets
89e2f46e68 Update dependent test-lib 2015-06-19 00:10:17 +03:00
Ivan Kravets
5f1f4a1b19 Bump to 2.2.0.dev0 2015-06-17 14:08:22 +03:00
Ivan Kravets
4669dc7f16 Fix "stk500v2_command(): command failed" // Resolve #238 2015-06-17 13:35:10 +03:00
Ivan Kravets
ca721d7262 Update dependent test-lib 2015-06-17 13:29:28 +03:00
Ivan Kravets
14f84a49a6 Allow to specify library compatibility with the all platforms/frameworks using * symbol in library.json 2015-06-17 13:28:56 +03:00
Ivan Kravets
4744f5afdc Merge pull request #235 from ctag/patch-1
Updated recommened platforms install command
2015-06-13 22:07:29 +02:00
Christopher
3a48f1c40b Updated recommened platforms install
$ platformio install [platform]
The above line is obsolete, I've changed the recommendation to reflect this latest version of the program.
2015-06-12 23:47:17 -05:00
Ivan Kravets
aea7121076 Merge branch 'release/v2.1.1' 2015-06-09 22:21:21 +03:00
Ivan Kravets
50875ff74b Merge branch 'release/v2.1.1' into develop 2015-06-09 22:21:21 +03:00
Ivan Kravets
dc13048254 Version bump to 2.1.1 (issues #229, #231, #232) 2015-06-09 22:20:53 +03:00
Ivan Kravets
18145d2c1c Add OpenHub badge 2015-06-09 22:08:13 +03:00
Ivan Kravets
f868c64d81 Automatically detect upload port using VID:PID board settings // Resolve #231 2015-06-08 23:02:05 +03:00
Ivan Kravets
3b7ad2d333 Avoid "LibInstallDependencyError" when more then 1 library is found // Resolve #229 2015-06-06 16:41:00 +03:00
Ivan Kravets
6732c7cb7c Better handling of user exceptions 2015-06-06 15:02:12 +03:00
Ivan Kravets
7ba67582de Fix indention 2015-06-05 19:30:49 +03:00
Ivan Kravets
35ae470196 Fix Windows Error 32 while cleanup pioenvs dir 2015-06-05 19:12:57 +03:00
Ivan Kravets
fa339a8b70 Fix firmware verification for examples 2015-06-04 23:17:18 +03:00
Ivan Kravets
43b27c138a Fix bad indentation 2015-06-04 23:15:28 +03:00
Ivan Kravets
36cdbb8f0c Improv detection of build changes 2015-06-04 22:50:13 +03:00
Ivan Kravets
8c331df105 Use direct path to LDScript 2015-06-04 21:24:19 +03:00
Ivan Kravets
02d4efcfb5 Merge branch 'release/v2.1.0' into develop 2015-06-03 19:54:52 +03:00
Ivan Kravets
00cb6bd845 Merge branch 'release/v2.1.0' 2015-06-03 19:54:51 +03:00
Ivan Kravets
f038c7a28e Version bump to 2.1.0 (issues #215, #219, #221, #225, #226) 2015-06-03 19:54:39 +03:00
Ivan Kravets
18b4497be7 Add info about Silicon Labs EFM32 platform 2015-06-03 19:53:00 +03:00
Ivan Kravets
8704ad4032 Add new article by @lekum "Discovering PlatformIO: The RaspberryPi / Arduino combo kit is...." 2015-06-03 19:42:48 +03:00
Ivan Kravets
f899e255f3 Add Silicon Labs EFM32 "siliconlabsefm32" development platform // Issue #226 2015-06-03 19:31:09 +03:00
Ivan Kravets
23cf725c20 Skip SF 5xx errors 2015-06-03 19:14:10 +03:00
Ivan Kravets
ba20459178 Merge pull request #227 from valeros/develop
Add Silicon Labs EFM32 development platform // Resolve #226
2015-06-02 17:07:54 +03:00
Valeriy Koval
442604003d Add Silicon Labs EFM32 development platform // Resolve #226 2015-06-02 14:38:41 +03:00
Ivan Kravets
369d0e1a00 Fix response with 504 code when SF is off-line 2015-06-01 17:49:04 +03:00
Ivan Kravets
04b2f94478 Enable auto erase for flash memory while uploading 2015-06-01 17:26:17 +03:00
Ivan Kravets
61b2bd6cb8 Describe in documentation how to create/register own board for PlatformIO 2015-05-30 17:09:01 +03:00
Ivan Kravets
eea4ba3581 Merge pull request #223 from valeros/develop
Update IDE pictures in docs with "forced" run command // Resolve #215
2015-05-29 22:26:04 +03:00
Valeriy Koval
3cb3b4f2ba Update IDE pictures in docs with "forced" run command // Resolve #215 2015-05-29 22:24:04 +03:00
Ivan Kravets
2f376c9d36 Bump to 2.0.3.dev1 2015-05-29 20:33:24 +03:00
Ivan Kravets
c4877e4444 Fix firmware uploading using USB programmer (USBasp) for atmelavr platform // Resolve #221 2015-05-29 20:29:24 +03:00
Ivan Kravets
a288736ced Fix broken tests when SF is offline 2015-05-29 18:34:21 +03:00
Ivan Kravets
1debe847d4 Disabled "nano.specs" for ARM-based platforms // Resolve #219 2015-05-29 17:47:30 +03:00
Ivan Kravets
0c2a15a866 Trim whitespaces 2015-05-29 17:44:57 +03:00
Ivan Kravets
da7e60b49f Switch badges to shields.io 2015-05-29 14:42:41 +03:00
Ivan Kravets
d7c6da71f1 Integrate PlatformIO with Shippable CI 2015-05-28 21:07:41 +03:00
Ivan Kravets
c4ed09c68f Integrate PlatformIO with Circle CI 2015-05-28 16:10:11 +03:00
Ivan Kravets
06baa98823 Fix "ConnectionError" when PlatformIO SF Storage is off-line 2015-05-28 13:44:10 +03:00
Ivan Kravets
8d9071e7c2 Merge branch 'feature/circleci' into develop 2015-05-28 13:10:48 +03:00
Ivan Kravets
8d0785cf1b Fix Circle CI Example 2015-05-28 13:10:36 +03:00
Ivan Kravets
ef0ce3fc07 Update project submodules 2015-05-28 12:44:37 +03:00
Ivan Kravets
af9cdd0694 Remove invalid PyPi SCons package 2015-05-28 12:38:21 +03:00
Ivan Kravets
a120514e9e Fix bottle requirement 2015-05-28 12:35:25 +03:00
Ivan Kravets
e627a6ebdd Fix environment 2015-05-28 12:30:55 +03:00
Ivan Kravets
94c37f4584 Integrate Circle CI 2015-05-28 12:28:24 +03:00
Ivan Kravets
a48b62b0f2 Disable Travis CI cache 2015-05-28 12:03:46 +03:00
Ivan Kravets
a9a9545b37 Fix resolving of C/C++ std libs by Eclipse IDE // Resolve #220 2015-05-28 00:19:55 +03:00
Ivan Kravets
ca1df9462d Bump version to 2.0.2 2015-05-27 19:32:47 +03:00
Ivan Kravets
32b057d1f3 Merge branch 'release/v2.0.2' 2015-05-27 19:27:02 +03:00
Ivan Kravets
5e340843b1 Fix order for "listdir" method 2015-05-27 19:21:29 +03:00
Ivan Kravets
0311298af1 Update history with 2.0.1 release 2015-05-27 17:03:34 +03:00
Ivan Kravets
b4c2e9301c Merge branch 'release/v.2.0.1' 2015-05-27 17:02:08 +03:00
Ivan Kravets
089ef2fa08 Merge branch 'release/v.2.0.1' into develop 2015-05-27 17:02:08 +03:00
Ivan Kravets
9232c7abb1 Version bump to 2.0.1 (issues #210, #211, #212, #214, #216, #217) 2015-05-27 17:01:59 +03:00
Ivan Kravets
27b7c2e201 Enhance docs for Library Manager 2015-05-27 16:23:39 +03:00
Ivan Kravets
392758a842 Allow to control cyclic behaviour of Library Dependency Finder 2015-05-26 23:45:29 +03:00
Ivan Kravets
25fde8db86 Cleanup boards 2015-05-26 23:00:40 +03:00
Ivan Kravets
65ad07af6b Fix failing with `platformio init --ide eclipse` without boards // Resolve #217 2015-05-26 22:55:59 +03:00
Ivan Kravets
ac7479415b Add support for new WildFire boards from Wicked Device to atmelavr platform 2015-05-26 22:52:09 +03:00
Ivan Kravets
1f64f0aacf Merge pull request #218 from valeros/develop
Add WildFire boards from Wicked Device.
2015-05-26 20:47:24 +03:00
Valeriy Koval
8fb0e1b75f Add WildFire boards from Wicked Device. 2015-05-26 20:06:37 +03:00
Ivan Kravets
78db2cda27 Use forced run command and "--project-dir" option 2015-05-26 16:41:45 +03:00
Ivan Kravets
6534fdaf04 Pass all environment variables which shall be copied from the tox invocation environment 2015-05-26 16:16:14 +03:00
Ivan Kravets
2e214f16e7 Return args + options for telemetry 2015-05-26 15:04:47 +03:00
Ivan Kravets
1f373b1e47 Handle AVR Symbols when initialising project for IDE // Resolve #216 2015-05-26 13:59:33 +03:00
Ivan Kravets
4d36db1319 Improve handling of sys.args 2015-05-26 13:07:36 +03:00
Ivan Kravets
58f0f8fab4 Use "include" directories from toolchain when exporting project for IDE // Resolve #210 2015-05-25 23:33:38 +03:00
Ivan Kravets
7d949ecb16 Fix old-style class defination 2015-05-25 23:29:10 +03:00
Ivan Kravets
be70047233 Improve running project from other directory (not CWD) 2015-05-25 23:26:35 +03:00
Ivan Kravets
7649769437 Disable packages/libs updating while "upgrade" operation // Resolve #214 2015-05-25 22:50:46 +03:00
Ivan Kravets
bcf0cc26aa Add --force for run command 2015-05-25 21:45:50 +03:00
Ivan Kravets
96ce0692f8 Merge branch 'feature/reversed-cppath' into develop 2015-05-25 19:35:48 +03:00
Ivan Kravets
9ba3136a24 Fix library order 2015-05-25 19:35:40 +03:00
Ivan Kravets
92313c0686 Reversed order for CPPATH via Append 2015-05-25 13:35:26 +03:00
Ivan Kravets
a1bb98fd5c Reversed order for CPPATH 2015-05-25 13:18:52 +03:00
Ivan Kravets
146d430695 Revert CI detecting 2015-05-25 13:17:50 +03:00
Ivan Kravets
b6a0a0f7c7 Merge pull request #213 from valeros/develop
Add c++ support for ststm32 platform // Resolve #211
2015-05-25 12:54:06 +03:00
Valeriy Koval
97de38d6a6 Add c++ support for ststm32 platform // Resolve #211 2015-05-25 12:45:36 +03:00
Ivan Kravets
65ba676f01 Correct path to import project in VisualStudio 2015-05-25 12:00:53 +03:00
Ivan Kravets
5d9f81533d Use os.environ to detect CI system 2015-05-25 10:11:28 +03:00
Ivan Kravets
1948a730d9 Pass environment variables to subprocess 2015-05-25 09:50:37 +03:00
Ivan Kravets
77f2b17afd Update package for Arduino framework to 1.6.4 // Resolve #212 2015-05-24 18:48:45 +03:00
Ivan Kravets
8739efaee4 Simplify Travis example 2015-05-24 01:02:12 +03:00
Ivan Kravets
8f65492d96 Extend ASM list of source files 2015-05-23 20:23:13 +03:00
Ivan Kravets
4f10047ba3 Handle new environment variable PLATFORMIO_BUILD_FLAGS 2015-05-23 19:17:07 +03:00
Ivan Kravets
9560a665e5 Better detecting of Continuous Integration system 2015-05-23 18:36:11 +03:00
Ivan Kravets
1113e5d69c Improve Travis CI docs 2015-05-23 17:42:22 +03:00
Ivan Kravets
363c65da5f Fix stripping comments when converting from *.ino to *.cpp 2015-05-23 15:00:21 +03:00
Ivan Kravets
28dd32070f Pass to API requests information about Continuous Integration system 2015-05-23 14:23:55 +03:00
Ivan Kravets
f732d4088b Fix bug with converting "*.ino" to "*.cpp" 2015-05-23 14:02:05 +03:00
Ivan Kravets
e22e4d23e4 Fix broken link 2015-05-22 22:16:27 +03:00
Ivan Kravets
ce7d6f0507 Add where PlatformIO 2.0 was made 2015-05-22 22:03:55 +03:00
Ivan Kravets
f499494963 Merge branch 'release/v2.0.0' into develop 2015-05-22 21:49:14 +03:00
Ivan Kravets
429722724f Merge branch 'release/v2.0.0' 2015-05-22 21:49:13 +03:00
Ivan Kravets
6a7a9a78ae Version bump to 2.0.0 (issues #108, #134, #148, #151, #152, #154, #158, #167, #168, #171, #173, #174, #177, #179, #182, #192, #197, #204) 2015-05-22 21:48:58 +03:00
Ivan Kravets
49842df368 Add links for CI 2015-05-22 21:42:49 +03:00
Ivan Kravets
5cee4463e0 Improve docs 2015-05-22 21:05:38 +03:00
Ivan Kravets
e0f0ee0f1a Force to upgrade PyPi packages 2015-05-22 20:23:09 +03:00
Ivan Kravets
76ddcb9d37 Fix export project for IDE under Windows 2015-05-22 19:27:33 +03:00
Ivan Kravets
a7f8b65356 Fix fetching of IDE data from build process 2015-05-22 19:21:05 +03:00
Ivan Kravets
d3a4a04a6d Allow to initialise PlatformIO project for the specified IDE // Resolve #151 2015-05-22 19:08:51 +03:00
Ivan Kravets
3a82d4a804 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-05-22 16:45:14 +03:00
Ivan Kravets
274b04c08f Fix system type when machine data is not available 2015-05-22 16:44:53 +03:00
Ivan Kravets
41fc7dffaf Update AppVeyor badge 2015-05-22 16:12:02 +03:00
Ivan Kravets
66ac453c0f Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-05-22 12:05:50 +03:00
Ivan Kravets
251cab64f3 Remove unused dot 2015-05-22 12:05:42 +03:00
Ivan Kravets
963b182cb9 Update example libs 2015-05-22 10:57:23 +03:00
Ivan Kravets
3af709e95b Merge pull request #209 from valeros/develop
Improve support for espressif platform. Add CI services info and integration examples.
2015-05-22 10:55:55 +03:00
Valeriy Koval
9136fe9a8b Improve support for espressif platform. 2015-05-21 17:03:53 +03:00
Valeriy Koval
e15efa7e08 Add CI services info and integration examples. 2015-05-21 16:43:09 +03:00
Ivan Kravets
1f2b31f174 Create separate Continuous Integration page 2015-05-20 15:57:49 +03:00
Ivan Kravets
352fb01068 Merge pull request #207 from valeros/develop
Add platformio ci command examples with different CI systems.
2015-05-19 20:34:58 +03:00
Valeriy Koval
1a9cfc3311 Add platformio ci command examples with different CI systems. 2015-05-19 20:29:03 +03:00
Ivan Kravets
77838f2938 Use default verbosity level for CI command 2015-05-19 14:37:47 +03:00
Ivan Kravets
a1cc5f4282 Fix invalid import 2015-05-18 19:28:35 +03:00
Ivan Kravets
afdc28df80 Disable progress bar for Continuous Integration Systems 2015-05-18 19:22:42 +03:00
Ivan Kravets
49c389ce70 Add Espressif to list of supported platforms 2015-05-18 18:36:13 +03:00
Ivan Kravets
92bfa8f36d Fix removing locked files under windows 2015-05-18 18:26:52 +03:00
Ivan Kravets
fd39a88b26 Ignore errors when deleting CI tmp folder 2015-05-18 18:12:16 +03:00
Ivan Kravets
dd4fa733e1 Fix WindowsError for CI 2015-05-18 18:10:24 +03:00
Ivan Kravets
5d54727139 Update docs with the new boards // Resolve #204 2015-05-18 17:13:58 +03:00
Ivan Kravets
18d4b3fc1b Merge pull request #206 from valeros/develop
Add Armstrap Eagle boards.
2015-05-18 17:11:12 +03:00
Valeriy Koval
82a0ec0d2b Add Armstrap Eagle boards. 2015-05-18 16:43:33 +03:00
Ivan Kravets
6a4843c258 Merge pull request #205 from Lutino/patch-1
Update qtcreator.rst
2015-05-18 11:21:25 +03:00
Lutino
f414b91b08 Update qtcreator.rst
Edited the file to include an additional step for the initalization of the platformio project
2015-05-17 16:27:09 -07:00
Ivan Kravets
8a6fe2692c Add links to Ivan Kravets interview for IT Hare 2015-05-15 23:35:59 +02:00
Ivan Kravets
8673bc15bc Add --force option to avoid blocking caused by prompts 2015-05-15 22:50:39 +02:00
Ivan Kravets
c7b034b154 Add verbosity option for "run" and "ci" commands 2015-05-15 22:40:29 +02:00
Ivan Kravets
4a132941f6 Reorder short version of options 2015-05-15 22:31:55 +02:00
Ivan Kravets
c933c1edea Merge branch 'feature/platformio_20' into develop 2015-05-15 15:23:10 +02:00
Ivan Kravets
ccfc9afba7 Fix absolute paths for CI 2015-05-15 13:56:19 +02:00
Ivan Kravets
0652d439e5 Merge branch 'release/v1.5.0' 2015-05-15 13:00:51 +02:00
Ivan Kravets
49aea2fcf4 Merge branch 'release/v1.5.0' into develop 2015-05-15 13:00:51 +02:00
Ivan Kravets
10a7e38e13 Version bump to 1.5.0 (issues #175, #178, #183, #185, #189, #190, #191, #195) 2015-05-15 13:00:38 +02:00
Ivan Kravets
5bc2cc6325 Use "whole-archive" hook just for ST STM32 platform 2015-05-14 23:52:15 +02:00
Ivan Kravets
b62ac20180 Merge pull request #201 from platformio/release/v1.4.0
Merge from "release"
2015-05-14 23:39:58 +02:00
Ivan Kravets
c827c12710 Merge pull request #200 from TimJay/teensy_soft_reboot
added soft reboot to teensy_loader_cli
2015-05-14 23:28:32 +02:00
Tim Jagenberg
8453d2431c added soft reboot to teensy_loader_cli 2015-05-14 23:22:55 +02:00
Ivan Kravets
7b60d595a7 Add mbed support for Teensy 3.1 // Resolve #183 2015-05-14 23:13:47 +02:00
Ivan Kravets
b8a9afb6fb Fix PyLint warning 2015-05-14 23:13:20 +02:00
Ivan Kravets
91be0fad5d Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-05-14 23:12:50 +02:00
Ivan Kravets
e7ac08df30 Add "docslinkcheck" environment 2015-05-14 22:53:00 +02:00
Ivan Kravets
7b6014c47a Fix invalid "mbed" firmware for Nucleo F411RE 2015-05-14 22:49:55 +02:00
Ivan Kravets
5de7644493 Merge pull request #199 from valeros/develop
Add mbed support for Teensy 3.1 board // Resolve #183
2015-05-14 22:16:18 +02:00
Valeriy Koval
6e9418f583 Add mbed support for Teensy 3.1 board // Resolve #183 2015-05-14 21:17:07 +03:00
Ivan Kravets
84795fb9f4 Remove duplicate code 2015-05-14 17:49:08 +02:00
Ivan Kravets
4ce09f1d43 Implement "whole-archive" hook for mbed-lib and LINCOM command 2015-05-14 17:47:39 +02:00
Ivan Kravets
96b06db5ef Fix firmware uploading under Linux OS for Arduino Leonardo board // Resolve #178 2015-05-14 17:07:20 +02:00
Ivan Kravets
49562a152e Merge pull request #198 from valeros/develop
Fix TouchSerialPort function on Linux system.
2015-05-14 17:00:08 +02:00
Valeriy Koval
9c4960ab2f Fix TouchSerialPort function on Linux system. 2015-05-14 17:57:21 +03:00
Ivan Kravets
e960302b6d Fix handling symbolic links within source code directory // Resolve #190 2015-05-08 18:09:35 +01:00
Ivan Kravets
40322e0f9b Allow to print dump of SCons environment using "envdump" target 2015-05-08 17:32:14 +01:00
Ivan Kravets
72ebe0ec1b Fix PyLint warnings 2015-05-07 18:40:53 +01:00
Ivan Kravets
1a39781cff Fix cancelling any previous definition of name, either built in or provided with a `-D` option // Resolve #191 2015-05-07 18:13:29 +01:00
Ivan Kravets
44eaf1db22 Document PLATFORMIO_CI_SRC environment variable 2015-05-07 17:02:53 +01:00
Ivan Kravets
8133a12dc3 Merge pull request #193 from valeros/feature/platformio_20
Update project generator and his templates.
2015-05-07 16:47:57 +01:00
Ivan Kravets
a1bad33d9d Add "program" to command options 2015-05-07 16:44:56 +01:00
Ivan Kravets
510c4decb7 PlatformIO as Continuous Integration tool for embedded projects // Resolve #108 2015-05-07 16:20:53 +01:00
Ivan Kravets
7822a929f3 Fix tests after removing "autogen" prefix for init project 2015-05-07 15:53:06 +01:00
Valeriy Koval
19b7c730ae Update project generator and templates. 2015-05-07 17:21:44 +03:00
Ivan Kravets
92e81ee619 Cleanup code 2015-05-06 18:07:17 +01:00
Ivan Kravets
eeeed1ba08 Allow to run project with platformio run –project-dir option without changing the current working directory // Resolve #192 2015-05-06 17:29:58 +01:00
Ivan Kravets
04f246ea9d Remove "autogen_" prefix from default env 2015-05-06 11:28:56 +01:00
Ivan Kravets
945b1324af Fix gathering of _tplvars 2015-05-06 11:17:38 +01:00
Ivan Kravets
5469b98057 Improve documentation for User Guide 2015-05-05 16:15:44 +01:00
Ivan Kravets
f001c087ec Allow to specify libraries which are compatible with build environment using use_libs option in platformio.ini 2015-05-05 15:47:21 +01:00
Ivan Kravets
661ca2d27e Update Gemnasium configuration 2015-05-05 12:59:13 +01:00
Ivan Kravets
440a2b9bc8 Fix parsing of includes for PlatformIO Library Dependency Finder // Resolve #189 2015-05-05 12:36:09 +01:00
Ivan Kravets
125c7b2aba Revert caching for development platforms 2015-05-01 17:51:20 +01:00
Ivan Kravets
424e87a811 Add library dependencies using "install_libs" option in platformio.ini // Resolve #134 2015-05-01 13:49:18 +01:00
Ivan Kravets
7391dfa936 Fix caching for installed platforms and libraries 2015-05-01 13:48:06 +01:00
Ivan Kravets
0a474d34d8 Cache get_installed_libs result 2015-05-01 13:00:33 +01:00
Ivan Kravets
ab9a7e05c8 Use "lib_dir" by default for LibraryManager 2015-05-01 12:54:45 +01:00
Ivan Kravets
6967e936a6 Fix CPPFLAGS example for build flags 2015-05-01 12:06:34 +01:00
Ivan Kravets
47903a7ac9 Update User Guide documentation for PlatformIO 2.0 // Issue #158 2015-04-30 14:14:57 +01:00
Ivan Kravets
cd842d5a86 Put UserAgent for all http requests 2015-04-29 18:17:14 +01:00
Ivan Kravets
7b80e17664 Improve handling of platforms commands for telemetry 2015-04-28 13:13:17 +01:00
Ivan Kravets
bdcf89bf32 Correct spelling in Creating platform example 2015-04-27 18:48:16 +01:00
Ivan Kravets
0d19f021f1 Merge pull request #188 from valeros/feature/platformio_20
Move documentation example with creating especial platform to right place
2015-04-27 18:27:09 +01:00
Valeriy Koval
49bd13adc4 Move documentation example with creating especial platform to right place. 2015-04-27 20:25:47 +03:00
Ivan Kravets
5a162b6341 Merge pull request #187 from valeros/develop
Add GDB as alternative uploader to ststm32 platform // Resolve #175
2015-04-27 17:42:16 +01:00
Valeriy Koval
2206ec50a5 Change compare condition 2015-04-27 19:05:59 +03:00
Valeriy Koval
60dc02682b Add GDB as alternative uploader to ststm32 platform // Resolve #175 2015-04-27 18:59:40 +03:00
Ivan Kravets
3657891833 Merge pull request #186 from valeros/feature/platformio_20
Add example with creating especial platform in documentation
2015-04-27 16:31:06 +01:00
Valeriy Koval
1033e827c0 Add example with creating especial platform in documentation 2015-04-27 18:27:26 +03:00
Ivan Kravets
c14b436aec Fix encoding for Project Generator 2015-04-24 17:17:24 +01:00
Ivan Kravets
8b8d5c360c Add prototypes for includes/srcfiles 2015-04-24 16:34:14 +01:00
Ivan Kravets
97d229232d Correct warning about obsoleted commands 2015-04-24 15:51:08 +01:00
Ivan Kravets
36ad6efa25 Handle obsoleted commands // Issue #158 2015-04-24 15:48:32 +01:00
Ivan Kravets
0bf7e68ea5 Require minimum 1 argument for the "uninstall" command 2015-04-24 15:37:08 +01:00
Ivan Kravets
d415cbbe45 Require minimum 1 argument for the "install" command 2015-04-24 15:33:29 +01:00
Ivan Kravets
c79114c345 Fix build system to "PlatformIO" for ST 2015-04-24 14:53:07 +01:00
Ivan Kravets
6fd07e1e56 Initial support of PlatformIO Project Generator // Issue #151 2015-04-24 14:43:13 +01:00
Ivan Kravets
97044bf5a5 Improve cache logic for lookup operations 2015-04-23 14:11:30 +01:00
Ivan Kravets
31a2880c3c Improve carols with Bountysource 2015-04-23 13:09:41 +01:00
Ivan Kravets
476de84dc5 Allow to specify environment prefix when initialise project // Resolve #182 2015-04-23 12:54:59 +01:00
Ivan Kravets
0d648074e4 Allow to add more boards to existing platformio.ini // Resolve #167 2015-04-23 12:40:19 +01:00
Ivan Kravets
47b8a4dd69 Fix test with incorrect board 2015-04-22 15:24:45 +01:00
Ivan Kravets
60863a4304 Fix PyLint warnings 2015-04-22 14:58:42 +01:00
Ivan Kravets
4d8cbc1349 Fix bug with creating copies of source files // Resolve #177 2015-04-22 14:21:26 +01:00
Ivan Kravets
5af3b9b7c9 Validate passed boards before project initialization 2015-04-20 19:55:18 +01:00
Ivan Kravets
84354edcc1 Fix handling user's platforms 2015-04-20 18:48:38 +01:00
Ivan Kravets
2198e317ff Merge pull request #181 from valeros/develop
Fix search command output
2015-04-20 18:02:25 +01:00
Valeriy Koval
9c318c1d34 Fix search command output 2015-04-20 19:58:39 +03:00
Ivan Kravets
c8af9aacbb Merge branch 'feature/platformio_20' of https://github.com/ivankravets/platformio into feature/platformio_20 2015-04-20 17:20:49 +01:00
Ivan Kravets
71261023de Enhance commands output 2015-04-20 17:20:27 +01:00
Ivan Kravets
4cde47af75 Update click to 4.0 2015-04-20 16:26:12 +01:00
Ivan Kravets
ee962c1919 Created PlatformIO gitter.im room 2015-04-20 16:19:59 +01:00
Ivan Kravets
3f52ba3d05 Create gitter.im room // Resolve #174 2015-04-20 16:13:02 +01:00
Ivan Kravets
2c0693fa72 Add article by Michael Ball 2015-04-18 11:18:39 +01:00
Ivan Kravets
1cf026d956 Fix platform tests according refactor changes 2015-04-17 15:32:33 +01:00
Ivan Kravets
07022bb3be Implement PlatformIO CLI 2.0 // Resolve #158 2015-04-17 12:37:03 +01:00
Ivan Kravets
b52ff11d3c Disabled automatic updates by default for platforms, packages and libraries // Resolve #171 2015-04-17 12:28:10 +01:00
Ivan Kravets
333e1d05f5 Merge pull request #176 from valeros/develop
Add examples with preconfigured IDE projects // Resolve #154
2015-04-16 17:39:32 +01:00
Ivan Kravets
a9942e675f Allow to choose which library to update // Resolve #168 2015-04-16 17:34:22 +01:00
Ivan Kravets
8d75194884 Add global -f, --force option which will force to accept any confirmation prompts // Resolve #152 2015-04-16 17:04:45 +01:00
Ivan Kravets
bf0f4c8de4 Extend troubleshooting with obsolete "setuptools" // Issue #173 2015-04-16 13:16:56 +02:00
Valeriy Koval
3a08fb89b2 Fix Sublime Text project template 2015-04-16 09:51:00 +03:00
Valeriy Koval
7918f912c4 Add integration instructions and example for Qt Creator 2015-04-15 16:42:12 +03:00
Valeriy Koval
b26856e04d Add examples with preconfigured IDE projects // Resolve #154 2015-04-15 16:40:23 +03:00
Ivan Kravets
0234fcd2e3 Add Espressif information 2015-04-11 20:00:12 +03:00
Ivan Kravets
df50cf85a6 Merge branch 'release/v1.4.0' 2015-04-11 19:53:49 +03:00
Ivan Kravets
6f2441f0fe Merge branch 'release/v1.4.0' into develop 2015-04-11 19:53:49 +03:00
Ivan Kravets
7aba4274d3 Version bump to 1.4.0 (issues #143, #144, #145, #146, #149, #156, #162, #170) 2015-04-11 19:53:32 +03:00
Ivan Kravets
cdaaf59216 Prepare for 1.4.0 release 2015-04-11 19:49:18 +03:00
Ivan Kravets
0486348fcc Merge pull request #169 from valeros/develop
Add support for ESP8266 // Resolve #119
2015-04-11 19:27:06 +03:00
Ivan Kravets
1031e4fa63 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-04-11 18:59:25 +03:00
Ivan Kravets
04b5aa7d86 Fix exceptions with auto-updates when isn't active Internet connection 2015-04-10 21:33:20 +03:00
Valeriy Koval
52e5f7ac2e Add Quirkbot board. 2015-04-10 18:24:03 +03:00
Valeriy Koval
3fda492038 Return to esptool-mk uploader. 2015-04-10 18:23:21 +03:00
Valeriy Koval
97d1dc2e15 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-04-09 18:50:13 +03:00
Valeriy Koval
181959f1de Add support for ESP8266 // Resolve #119 2015-04-09 18:50:03 +03:00
Ivan Kravets
be3e7ccddd Bump up to 1.4.0.dev2 2015-04-08 21:01:55 +03:00
Ivan Kravets
31606ad82e Merge pull request #163 from valeros/develop
Improve ESP8266 platform support
2015-04-08 20:56:30 +03:00
Valeriy Koval
9b3ca7ee0b Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-04-08 20:54:52 +03:00
Valeriy Koval
6cf2ab29da Improve ESP8266 platform support 2015-04-08 20:49:48 +03:00
Ivan Kravets
44c78525ee Remove hard FPU for Cortex M4 // Resolve #162 2015-04-08 19:45:24 +03:00
Ivan Kravets
0a76df910d Bump up to 1.4.0.dev1
Support for TeensyLC
2015-04-07 23:13:34 +03:00
Ivan Kravets
0765f6f7a5 Merge pull request #161 from valeros/develop
Add support for Teensy LC board // Resolve #155
2015-04-07 20:30:21 +03:00
Valeriy Koval
6fa7d04e5a Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-04-07 19:44:37 +03:00
Valeriy Koval
0ff3e8a9eb Update espressif platform 2015-04-07 19:44:28 +03:00
Ivan Kravets
469ae260ca Add link to free Visual Studio 2015-04-06 22:28:16 +03:00
Valeriy Koval
960eccad8c Add "nano.specs" for ARM linker 2015-04-06 21:16:10 +03:00
Valeriy Koval
b23a8a7075 Add support for Teensy LC board // Resolve #155 2015-04-06 20:22:03 +03:00
Ivan Kravets
22e2cec102 Update Adafruit GFX Library in examples for the latest version 2015-04-06 11:44:45 +03:00
Ivan Kravets
bf19dc936b Add "ldscripts" package to required list of Espressif platform // Issue #119 2015-04-06 11:43:56 +03:00
Ivan Kravets
fd0448532c Fix libs order for linker 2015-04-03 18:09:58 +03:00
Ivan Kravets
3af1814285 Add support for new Arduino based boards to "atmelavr" platform
SparkFun, BQ, LightUp, LowPowerLab, RedBearLab, TinyCircuits, WickedDevice
2015-04-03 17:45:20 +03:00
Ivan Kravets
cdd7167e24 Improve firmware detecting for system tests 2015-04-03 17:42:00 +03:00
Ivan Kravets
380937c588 Start 1.4.0 2015-04-03 17:41:21 +03:00
Ivan Kravets
b86dd33d6e Typo fix 2015-04-03 00:15:54 +03:00
Ivan Kravets
afeca7e954 Merge pull request #150 from valeros/develop
Initial support for ESP8266 // Issue #119
2015-04-02 21:57:09 +03:00
Valeriy Koval
f20ce96401 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-04-02 20:24:30 +03:00
Valeriy Koval
6594601932 Initial support for ESP8266 // Issue #119 2015-04-02 20:24:22 +03:00
Valeriy Koval
f072a10e9a Add new Arduino based boards 2015-04-02 20:15:34 +03:00
Ivan Kravets
d558480d11 Integrate PlatformIO with AppVeyor Windows based Continuous Integration system // Resolve #149 2015-04-01 16:33:51 +03:00
Ivan Kravets
432ca80c59 Fetch project submodules 2015-04-01 15:58:26 +03:00
Ivan Kravets
3dd0ceb8e0 Remove "scons" version, because it isn't installed by default 2015-04-01 14:05:02 +03:00
Ivan Kravets
59cb537db9 Automatically install "tox" package 2015-04-01 13:57:57 +03:00
Ivan Kravets
b455cab6b0 Remove build version 2015-04-01 13:38:42 +03:00
Ivan Kravets
e9a476d640 Update Adafruit-PCD8544 lib for example 2015-04-01 13:34:35 +03:00
Ivan Kravets
8c89944adb Add AppVeyor CI scripts/hooks 2015-04-01 13:32:43 +03:00
Ivan Kravets
aa86cbb51f Initial support for AppVeyor CI and Py27 test 2015-04-01 13:18:36 +03:00
Ivan Kravets
9085399d8e Correct links to the answered comments 2015-03-31 15:56:35 +03:00
Ivan Kravets
a55f97a34e Improve FAQ page and relatives 2015-03-31 15:27:04 +03:00
Ivan Kravets
6b2af149dc Update link to Travis.CI 2015-03-30 21:30:52 +03:00
Ivan Kravets
52660aeb86 Add FAQ page 2015-03-29 23:19:50 +03:00
Ivan Kravets
989acf5440 Typo fix 2015-03-27 21:55:30 +02:00
Ivan Kravets
450ee3234f Add "url" field to "library.json" 2015-03-27 21:54:47 +02:00
Ivan Kravets
53475fc5ac Add links to PlatformIO Reddit 2015-03-27 21:53:34 +02:00
Ivan Kravets
810844687f Merge branch 'release/v1.3.0' 2015-03-27 17:04:36 +02:00
Ivan Kravets
b0f356ff32 Merge branch 'release/v1.3.0' into develop 2015-03-27 17:04:36 +02:00
Ivan Kravets
5a0d57f507 Version bump to 1.3.0 (issues #127 #128 #130 #131 #133 #136 #137 #138 #139 #140) 2015-03-27 17:04:09 +02:00
Ivan Kravets
40d95ace8a Merge pull request #142 from valeros/develop
Automatically generate "Packages" block for "Creating platform" page // Resolve #139
2015-03-27 14:56:23 +02:00
Valeriy Koval
6385379dc9 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-27 14:37:53 +02:00
Valeriy Koval
0053919f7f Assert error when board's platform mismatch 2015-03-27 14:25:24 +02:00
Valeriy Koval
646e00faa1 Automatically generate "Packages" block for "Creating platform" page // Resolve #139 2015-03-27 14:24:59 +02:00
Ivan Kravets
9b0a25a715 Explain uploading process for Digispark board with micronucleus bootloader 2015-03-27 13:52:50 +02:00
Ivan Kravets
f800b351f3 Fix wrong insertion of function prototypes converting *.ino/pde // Resolve #127 #140 2015-03-25 22:00:02 +02:00
Ivan Kravets
a5f5c7be6f Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-25 20:52:27 +02:00
Ivan Kravets
640e5ff0f9 Merge pull request #141 from valeros/develop
Add integration instructions for  Visual Studio and Sublime Text IDEs
2015-03-25 20:44:53 +02:00
Valeriy Koval
5f93b450ac Add integration instructions for Visual Studio and Sublime Text IDEs 2015-03-25 20:43:30 +02:00
Ivan Kravets
3018113b43 Update example with platforms list 2015-03-25 20:39:44 +02:00
Ivan Kravets
51b73410b5 Add support for QinHeng Electronics HL-340 USB-Serial adapter 2015-03-25 15:52:54 +02:00
Ivan Kravets
f209225864 Fix broken link to Energia site 2015-03-25 13:56:28 +02:00
Ivan Kravets
0b0f312c24 Add "Articles about us" page 2015-03-25 13:42:44 +02:00
Ivan Kravets
4567bcd1ea Improve docs for IDE & PlatformIO 2015-03-25 13:22:39 +02:00
Ivan Kravets
fcd763eb7f Add supported platforms and frameworks to README and main doc page 2015-03-25 12:48:55 +02:00
Ivan Kravets
b51a088230 Add Boards Explorer to docs and README 2015-03-25 12:20:15 +02:00
Ivan Kravets
63925ce3cc Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation 2015-03-25 12:15:17 +02:00
Ivan Kravets
ea9239f8c1 Added support for new Arduino based boards by SparkFun, RepRap, Sanguino // Issue #127 #131 2015-03-25 11:47:32 +02:00
Ivan Kravets
04964bcf3f Extend list of platform examples 2015-03-25 11:43:19 +02:00
Ivan Kravets
516959bddc Normalize board names // Issue #128 2015-03-25 11:42:36 +02:00
Ivan Kravets
82bf459bdc Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation // Resolve #138 2015-03-25 11:35:51 +02:00
Ivan Kravets
cbcbf27d23 Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation 2015-03-25 11:34:48 +02:00
Ivan Kravets
a013834651 Update Adafruit-PCD8544-Nokia-5110-LCD-library in examples/atmelavr-and-arduino/arduino-external-libs/lib/ 2015-03-25 11:15:06 +02:00
Ivan Kravets
162263ab6f Merge pull request #135 from valeros/develop
Allow own libs per framework's core; Add support for Sanguino, SparkFun boards
2015-03-23 23:40:59 +02:00
Valeriy Koval
160c6e61ea Fix Adafruit boards build options 2015-03-23 19:40:47 +02:00
Valeriy Koval
4d91c336be Allow own libs per framework's core // Resolve #133 2015-03-23 19:40:13 +02:00
Valeriy Koval
06812b7a02 Add support for SparkFun boards // Resolve #127 2015-03-23 19:39:32 +02:00
Valeriy Koval
f94da85898 Add support for Sanguino boards // Resolve #131 2015-03-23 19:38:30 +02:00
Valeriy Koval
e89530fca9 Normalize board names // Resolve #128 2015-03-23 12:30:40 +02:00
Ivan Kravets
887372ff44 Fix new lines between keywords 2015-03-22 22:58:15 +02:00
Ivan Kravets
7f43df45c5 Improve handling of multi-file `*.ino/pde` sketches // Resolve #130 2015-03-21 23:08:36 +02:00
Ivan Kravets
b82f9da290 Merge pull request #129 from twpayne/patch-1
Fix typo
2015-03-21 15:30:09 +02:00
Tom Payne
fa3db92d88 Fix typo 2015-03-21 14:05:19 +01:00
Ivan Kravets
b04e17ade2 Merge branch 'release/v1.2.0' into develop 2015-03-20 22:30:06 +02:00
Ivan Kravets
2fa88966b4 Merge branch 'release/v1.2.0' 2015-03-20 22:30:05 +02:00
Ivan Kravets
cef16ab1c0 Version bump to 1.2.0 (issues #5 #100 #105 #112 #113 #114 #115 #116 #117 #120 #122 #125) 2015-03-20 22:29:51 +02:00
Ivan Kravets
e82f8dc086 Add 4-th custom definition which is equal to "enable_prompts" setting 2015-03-20 22:29:29 +02:00
Ivan Kravets
a8a9451c73 Fix re-arranging the *.ino/pde files when converting to *.cpp // Resolve #100 2015-03-20 21:55:08 +02:00
Ivan Kravets
b4a253110d Add supported platforms to framework and vice versa 2015-03-20 21:44:26 +02:00
Ivan Kravets
4c1fb0d2b2 Merge pull request #126 from valeros/develop
Add full support for MBED libraries: rtos, eth, dsp, fat, usb
2015-03-20 21:06:23 +02:00
Valeriy Koval
726887732f Add full support for MBED libraries: rtos, eth, dsp, fat, usb 2015-03-20 19:46:13 +02:00
Valeriy Koval
7cfb9db046 Typo fix 2015-03-20 17:23:46 +02:00
Valeriy Koval
642e1ef7bc Typo fix 2015-03-20 17:22:59 +02:00
Ivan Kravets
4958e24ffc Add information about platforms and frameworks 2015-03-18 23:26:53 +02:00
Ivan Kravets
a70ecdb1be Fix uploading for atmelsam development platform 2015-03-18 23:17:39 +02:00
Ivan Kravets
3fabd01e1b Fix SSL InsecureRequestWarning (avoid for invalid commands) 2015-03-18 23:02:04 +02:00
Ivan Kravets
347dbb6569 Fix SSL InsecureRequestWarning 2015-03-18 15:57:49 +02:00
Ivan Kravets
2e7e7c4e74 Add "Frameworks" page to docs and web-site // Resolve #115 2015-03-17 00:54:42 +02:00
Ivan Kravets
575048faa7 Add link to PlatformIO Boards Explorer 2015-03-16 23:08:59 +02:00
Ivan Kravets
744c6f12a8 Merge pull request #124 from valeros/develop
Add support for "panStamp" boards // Resolve #117
2015-03-16 23:03:16 +02:00
Valeriy Koval
9c5ef02484 Merge branch 'feature/panStamp' into develop 2015-03-16 19:37:44 +02:00
Valeriy Koval
4782c58752 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-16 19:37:19 +02:00
Valeriy Koval
ccc411fb47 Add support for "panStamp" boards // Resolve #117 2015-03-16 19:24:51 +02:00
Valeriy Koval
e76efef6c7 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/panStamp 2015-03-16 18:40:58 +02:00
Valeriy Koval
f3f16b56b2 Rename "opencm3" framework to "libopencm3" // Resolve #120 2015-03-16 17:34:52 +02:00
Ivan Kravets
49ab5e718e Add "name" and vendor links to frameworks 2015-03-16 17:30:23 +02:00
Ivan Kravets
19822ff08f Introduce platform names 2015-03-16 14:15:57 +02:00
Ivan Kravets
0bfc6dfe3e Split platform __doc__ to description and vedor url 2015-03-16 12:47:43 +02:00
Ivan Kravets
39f052a57d Merge pull request #123 from valeros/develop
Fix mbed framework // Resolve #122
2015-03-16 12:42:06 +02:00
Valeriy Koval
c536aca961 Add serial port example with mbed framework 2015-03-16 12:12:13 +02:00
Valeriy Koval
57b84789c0 Fix "mbed" framework // Resolve #122 2015-03-16 12:10:15 +02:00
Ivan Kravets
cbd67364f6 Convert "frameworks" to array 2015-03-15 21:47:19 +02:00
Ivan Kravets
7b1aff1653 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-15 21:20:17 +02:00
Ivan Kravets
0ab6b08ff3 Update requests to 2.6.0 2015-03-15 17:59:20 +02:00
Ivan Kravets
c00fecf992 Avoid direct access to platform packages 2015-03-14 00:02:09 +02:00
Ivan Kravets
bd9ee0c27a Introduce /packages and /packages/manifest API 2015-03-14 00:01:32 +02:00
Ivan Kravets
6fe7d952cf Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-13 22:36:27 +02:00
Ivan Kravets
808c806ab9 Merge pull request #121 from valeros/develop
Improve support for mbed framework
2015-03-13 21:48:32 +02:00
Valeriy Koval
e19f928794 Fix PyLint warnings 2015-03-13 20:54:22 +02:00
Valeriy Koval
040c6371cd Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-13 20:29:16 +02:00
Valeriy Koval
0282c74165 Improve support for mbed framework 2015-03-13 20:27:46 +02:00
Ivan Kravets
8359408e54 Allow multiple frameworks in Project Configuration File 2015-03-13 19:13:36 +02:00
Ivan Kravets
01f65ac4b0 Add information about PlatformIO Web 2.0 2015-03-13 19:06:35 +02:00
Ivan Kravets
4e1e7ed4b5 Enhance "platformio search" command 2015-03-13 18:50:04 +02:00
Ivan Kravets
91b6ef0504 Add example with mbed-enabled boards 2015-03-13 17:59:15 +02:00
Ivan Kravets
519ed04e70 Sort installed libs by ID 2015-03-13 17:58:45 +02:00
Ivan Kravets
4c525e1704 Fix pioversion_to_instr for Py2.6 2015-03-13 17:54:24 +02:00
Ivan Kravets
042816616e Automatically append -DPLATFORMIO to builder // Resolve #105 2015-03-13 17:21:07 +02:00
Ivan Kravets
d89e55e5d7 Disable uploading using mass storage disk for Mac OS X 10.10 (issue with FAT12) 2015-03-13 13:19:00 +02:00
Ivan Kravets
52e1345c4a Improve project description and keywords 2015-03-13 00:19:06 +02:00
Ivan Kravets
f4c21be953 Improve uploading firmware to mbed-enabled mass storages 2015-03-13 00:02:31 +02:00
Ivan Kravets
cd06f3ed43 Add links to credit-card sized computers 2015-03-12 23:32:28 +02:00
Ivan Kravets
b74288f2c4 Merge pull request #118 from valeros/develop
Initial support for mbed; Added Frameworks to doc
2015-03-11 22:05:47 +02:00
Valeriy Koval
a0c3c25721 Fix mbed case for UNIX OS 2015-03-11 20:45:50 +02:00
Valeriy Koval
c00700b7cb Search over platform packages 2015-03-11 20:45:31 +02:00
Valeriy Koval
08808be62b Fix "frameworks" field to JSON array 2015-03-11 20:45:11 +02:00
Valeriy Koval
ce923b6b58 Avoid multiple white spaces 2015-03-11 19:32:53 +02:00
Valeriy Koval
286610b8c5 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-03-11 18:20:31 +02:00
Valeriy Koval
b511df0bd4 Update "Platforms" documentation 2015-03-11 18:19:36 +02:00
Valeriy Koval
fe797a3265 Add "Frameworks" documentation // Resolve #115 2015-03-11 18:19:07 +02:00
Valeriy Koval
7b4680ef6a Add script for dynamically generating RST documents. Update platforms and frameworks documentation // Resolve 114 2015-03-11 18:12:58 +02:00
Valeriy Koval
898a9c5601 Add "get_frameworks" function 2015-03-11 18:08:52 +02:00
Valeriy Koval
e22890ac18 Add "vendor" and "url" field to board options, change "framework" field to "frameworks" // Resolve #113 2015-03-11 17:56:46 +02:00
Valeriy Koval
af9c23ad87 Automatically generate environment with first supported framework 2015-03-11 17:53:46 +02:00
Valeriy Koval
7e58eb8094 Add checking incompatibility between board and frameworks // Resolve #112 2015-03-11 17:50:15 +02:00
Valeriy Koval
326cf0da7d Add "vendor" and "url" field to board options, change "framework" field to "frameworks" // Resolve #113 2015-03-11 17:48:04 +02:00
Ivan Kravets
d4740c4daf Update "setuptools" while install PlatformIO 2015-03-10 13:23:49 +02:00
Ivan Kravets
19a9f153b9 Add configuration example for VIM/YouCompleteMe by @ajford 2015-03-09 22:06:19 +02:00
Ivan Kravets
36c926bed7 Add Cloud Compiling and Continuos Integration 2015-03-09 15:45:46 +02:00
Valeriy Koval
dc7e98c383 Merge branch 'feature/mbed-platform' into develop 2015-03-09 12:31:02 +02:00
Valeriy Koval
413779f0a1 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/mbed-platform 2015-03-09 12:28:38 +02:00
Valeriy Koval
d3b9322d3b Initial support for MBED Framework 2015-03-09 12:27:54 +02:00
Valeriy Koval
4a8cd9914b Add new platforms and boards: Freescale, Nordic, NXP and etc. 2015-03-09 12:27:30 +02:00
Valeriy Koval
5fa0a176a7 Refactor CORELIBS per platform 2015-03-09 12:22:24 +02:00
Valeriy Koval
13455987ae Rename "stm32" platform to "ststm32" 2015-03-09 12:18:46 +02:00
Ivan Kravets
6742629efb Change options to references via titles 2015-03-06 19:22:20 +02:00
Ivan Kravets
2224f98d2d Cache long command for "gcc-ar" 2015-03-06 19:05:41 +02:00
Ivan Kravets
e4627ec9ac Merge branch 'release/v1.1.0' 2015-03-05 15:05:40 +02:00
Ivan Kravets
d00740237b Merge branch 'release/v1.1.0' into develop 2015-03-05 15:05:40 +02:00
Ivan Kravets
7de9109437 Version bump to 1.1.0 (issues #102 #103 #106) 2015-03-05 15:05:28 +02:00
Ivan Kravets
e0f2bcdeaf Resolve #133: Disabled "prompts" automatically for *Continuous Integration* systems 2015-03-05 14:48:56 +02:00
Ivan Kravets
ae92cdedea Implemented PLATFORMIO_* environment variables 2015-03-05 01:36:31 +02:00
Ivan Kravets
21c60fdd99 Hide PyLint warning with undefined WindowsError exception 2015-03-04 22:27:07 +02:00
Ivan Kravets
7756504c92 Fix WindowsError where the process cannot access the file 2015-03-04 22:18:05 +02:00
Ivan Kravets
386ad9a94b Avoid problem with long command for "gcc-ar" under Windows 2015-03-04 21:51:41 +02:00
Ivan Kravets
6f19839920 Split PlatformIO build tool to "core" and "upload" 2015-03-04 21:21:10 +02:00
Ivan Kravets
442da36115 Added support for "SainSmart" boards to "atmelsam" development platform 2015-03-04 21:06:35 +02:00
Ivan Kravets
4d5c125d82 Change example from "pro16MHzatmega168" to "pro16MHzatmega328" 2015-03-04 21:05:20 +02:00
Ivan Kravets
c55f4d35ba Merge pull request #109 from valeros/develop
Add "require_upload_port" board option // Resolve #107
2015-03-04 15:07:04 +02:00
Valeriy Koval
abf0f2d5d6 Fix Digistump boards frequency designation 2015-03-04 14:47:21 +02:00
Valeriy Koval
8e62d9ace3 Add SainSmart Due board 2015-03-04 14:12:43 +02:00
Valeriy Koval
7d63d6c77c Add second upload method through native USB Port for SAM-based boards 2015-03-04 14:11:50 +02:00
Valeriy Koval
148018749a Add "require_upload_port" board option 2015-03-04 13:58:20 +02:00
Ivan Kravets
f058506bc4 Fix firmware uploading for "atmelavr" boards which work within "usbtiny" protocol 2015-03-02 23:17:45 +02:00
Ivan Kravets
3a45d443a1 Sort platforms 2015-02-28 15:34:53 +02:00
Ivan Kravets
beb68fa836 Correct PyPi version to 1.0.1 2015-02-28 11:40:09 +02:00
Ivan Kravets
8b9b978db0 Start 1.1.0-dev 2015-02-28 00:08:19 +02:00
Ivan Kravets
6dddf77774 Merge branch 'release/v1.0.0' into develop 2015-02-27 23:06:31 +02:00
Ivan Kravets
c4967243dc Merge branch 'release/v1.0.0' 2015-02-27 23:06:30 +02:00
Ivan Kravets
637a43d6f4 Correction to supported platforms 2015-02-27 23:02:44 +02:00
Ivan Kravets
ce4ce67607 Add keywords and extend platforms list 2015-02-27 22:56:22 +02:00
Ivan Kravets
f3f0979f92 Change development status from beta to Production/Stable 2015-02-27 22:40:15 +02:00
Ivan Kravets
05b722faa1 Correct documentation links 2015-02-27 22:28:38 +02:00
Ivan Kravets
a1c7fa9092 Change badges style to flat 2015-02-27 00:55:00 +02:00
Ivan Kravets
aba68a9c3f Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-25 23:58:27 +02:00
Ivan Kravets
35ccefae87 Add libOpenCM3 to history 2015-02-25 23:58:13 +02:00
Ivan Kravets
4168fb6dcb Remove IDE help 2015-02-25 21:36:01 +02:00
Ivan Kravets
6d8d87dfbc Update development status of PlatformIO from "Beta" to "Production/Stable" 2015-02-25 21:22:54 +02:00
Ivan Kravets
8bc8bdd6bd Update requests to 2.5.3 2015-02-25 18:35:41 +02:00
Ivan Kravets
0102e7e195 Merge pull request #99 from valeros/develop
Extend validation of package for SHA1 // Resolve #69
2015-02-25 18:34:48 +02:00
Valeriy Koval
fbd3d956f7 Add "platformio-udev" rules 2015-02-25 18:33:34 +02:00
Valeriy Koval
cd764d4b10 Skip testing of package if SF is offline 2015-02-25 18:32:33 +02:00
Valeriy Koval
03636ad4ae Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-25 09:55:33 +02:00
Ivan Kravets
e90e641941 Add Teensy to Wiring Blink example 2015-02-25 00:22:24 +02:00
Ivan Kravets
7a311ff503 Minor fixes 2015-02-24 23:06:58 +02:00
Valeriy Koval
7c0b187ca0 Extend validation of package for SHA1 // Resolve #69 2015-02-24 20:11:57 +02:00
Ivan Kravets
e2f079fc1b Merge pull request #98 from valeros/develop
Improve building of ASM files; Update Teensy Core to 1.21
2015-02-24 19:17:58 +02:00
Valeriy Koval
f12611e27c Fix PyLint warning 2015-02-24 18:53:20 +02:00
Valeriy Koval
9562e2456b Update Teensy Core to 1.21 2015-02-24 18:15:45 +02:00
Valeriy Koval
fedb7527f4 Improve building of ASM files 2015-02-24 18:15:17 +02:00
Ivan Kravets
d142b6e6d1 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-24 12:47:28 +02:00
Ivan Kravets
7948237c94 Fix "Welcome" for upgrading 2015-02-24 12:47:12 +02:00
Ivan Kravets
a18e151fa4 Update requests to 2.5.2 2015-02-24 10:19:30 +02:00
Ivan Kravets
1fc85d3d1d Fill documentation with the new platforms, boards and etc. 2015-02-23 23:47:44 +02:00
Ivan Kravets
7accb86ece Sort search result by platform type 2015-02-23 23:36:19 +02:00
Ivan Kravets
73af0eed3c Add "application/octet-stream" mime type for package 2015-02-23 23:08:42 +02:00
Ivan Kravets
9bde156294 Merge pull request #97 from valeros/develop
Merge Digistump platform to "atmelavr" and "atmelsam"
2015-02-23 22:39:30 +02:00
Valeriy Koval
6f634e76e7 Re-group examples 2015-02-23 22:37:12 +02:00
Valeriy Koval
b60552e264 Fix builder for assembling files 2015-02-23 22:36:57 +02:00
Valeriy Koval
6d86f72060 Merge Digistump platform to "atmelavr" and "atmelsam" 2015-02-23 22:36:21 +02:00
Ivan Kravets
eceedb879b Improve upgrading to 1.0.0 2015-02-23 21:25:59 +02:00
Ivan Kravets
d90933d014 Merge pull request #96 from valeros/develop
Add documentation for Teensy, STM32 and Atmel SAM platforms; Add Digispark boards to Atmel AVR platform
2015-02-23 21:06:19 +02:00
Valeriy Koval
efb02aa056 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-23 21:04:21 +02:00
Valeriy Koval
d28430d8ae Add documentation for Teensy, STM32 and Atmel SAM platforms; Add Digispark boards to Atmel AVR platform 2015-02-23 21:04:08 +02:00
Ivan Kravets
90f17ce6fb Switch to DefaultEnvironment in SCons scripts 2015-02-23 21:02:40 +02:00
Valeriy Koval
aa578fd8ec Fix ROM size 2015-02-23 21:00:27 +02:00
Ivan Kravets
45e8251479 Improve firmware uploading and auto detecting of UPLOAD_PORT // Resolve #93 2015-02-23 19:01:03 +02:00
Ivan Kravets
aab282061c Merge pull request #95 from valeros/develop
Update digistump uploader
2015-02-23 16:55:30 +02:00
Ivan Kravets
b79d1944f2 Merge pull request #94 from valeros/develop
Add example for Engduino boards // Resolve #76
2015-02-23 16:52:03 +02:00
Valeriy Koval
f3251342b4 Update atmelsam uploader options 2015-02-23 16:49:01 +02:00
Valeriy Koval
6a42e1de90 Update digistump uploader 2015-02-23 16:48:26 +02:00
Ivan Kravets
0487825e94 Remove note about Engduino library 2015-02-23 14:47:58 +02:00
Valeriy Koval
dcb1590e57 Append new lines 2015-02-23 14:29:10 +02:00
Valeriy Koval
6e0ebdbc94 Add example for Engduino boards // Resolve #76 2015-02-23 14:25:11 +02:00
Ivan Kravets
2ac6d63ffc Fix Python 2.6 support 2015-02-23 11:50:14 +02:00
Ivan Kravets
d1ca17c406 Fix uploading for "atmelavr" platform // Resolve #92 2015-02-23 01:06:50 +02:00
Ivan Kravets
f86a33c991 Remove hook with SF & packages manifest 2015-02-22 23:31:51 +02:00
Ivan Kravets
46ae4c1a83 Add src_dir option to [platformio] section of platformio.ini which allows to redefine location to project’s source directory // Resolve #83 2015-02-22 22:24:22 +02:00
Ivan Kravets
e17ce83499 Refactor tests with Py.Test's fixtures // Resolve #2 2015-02-21 15:15:00 +02:00
Ivan Kravets
a4926f3c28 Enable stdout capturing for tests by Py.Test 2015-02-21 15:14:25 +02:00
Ivan Kravets
06b009deaa Merge pull request #90 from valeros/develop
Cover package manifest with tests // Issue #69
2015-02-20 22:06:03 +02:00
Ivan Kravets
5b9504d57a Highlight exceptions/errors in red color 2015-02-20 22:02:38 +02:00
Valeriy Koval
05376f873d Cover package manifest with tests // Issue #69 2015-02-20 21:02:10 +02:00
Valeriy Koval
bf059b8b78 Cover "lib" commands with tests 2015-02-20 20:31:59 +02:00
Ivan Kravets
620e5e81c7 Merge pull request #89 from valeros/develop
Cover "list", "search" and "settings" commands with tests
2015-02-20 16:43:06 +02:00
Valeriy Koval
18dd64df88 Cover "list", "search" and "settings" commands with tests 2015-02-20 16:41:42 +02:00
Ivan Kravets
4da8630578 Merge pull request #88 from valeros/develop
Fix CMSIS path for atmelsam platform
2015-02-20 13:50:44 +02:00
Valeriy Koval
442adc1919 Cover "init" and "boards" commands with tests 2015-02-20 13:48:17 +02:00
Valeriy Koval
751a4b9883 Fix CMSIS path for atmelsam platform 2015-02-20 13:19:48 +02:00
Ivan Kravets
6e820afd74 Fix detection of Travis instance 2015-02-19 22:25:40 +02:00
Ivan Kravets
0d7d2ce0b4 Disable Travis Python 2.6 iteration 2015-02-19 22:25:03 +02:00
Ivan Kravets
9a8abaf02b Add "docs" task 2015-02-19 22:05:39 +02:00
Ivan Kravets
a394db1ce1 Refactor build evironments to be compatible with multiple Python versions 2015-02-19 22:04:39 +02:00
Ivan Kravets
2d53d2100d Fix bug with invalid process's "return code" when PlatformIO has internal error 2015-02-19 22:02:50 +02:00
Ivan Kravets
1fc6b222ec Added --json-output option to platformio search command 2015-02-19 19:16:46 +02:00
Valeriy Koval
3f2faeea82 Add default framework for Adafruit boards 2015-02-19 17:56:23 +02:00
Valeriy Koval
a1a5995210 Fix Raspduino extra flags 2015-02-19 17:47:50 +02:00
Valeriy Koval
9a17c6870b Move setup logic for PlatformIO to py.test conf 2015-02-19 17:23:22 +02:00
Valeriy Koval
baf34b37d9 Add default framework per board 2015-02-19 17:20:08 +02:00
Ivan Kravets
d02eb97eeb Fix setting boolean value 2015-02-19 13:49:12 +02:00
Ivan Kravets
8baf2ce241 Merge pull request #87 from valeros/develop
Fix teensy firmware file format
2015-02-19 11:06:24 +02:00
Valeriy Koval
239e1f3fe9 Fix teensy firmware file format 2015-02-19 10:38:09 +02:00
Valeriy Koval
8374199fae Merge pull request #86 from valeros/develop
Typos fix
2015-02-18 20:21:47 +02:00
Valeriy Koval
591efc7257 Typos fix 2015-02-18 20:21:20 +02:00
Valeriy Koval
717d8596ec Merge pull request #85 from valeros/develop
Refactor build scripts for development platforms
2015-02-18 20:13:00 +02:00
Valeriy Koval
9501329526 Refactor build scripts for development platforms 2015-02-18 20:11:52 +02:00
Valeriy Koval
86260a48ba Create LDSCRIPT_PATH Scons env variable 2015-02-18 20:03:49 +02:00
Valeriy Koval
eb4756360a Define MCU & CPU per board 2015-02-18 20:01:39 +02:00
Ivan Kravets
256834be48 Merge pull request #84 from valeros/develop
Add support for Digistump and improve Atmel SAM development platforms
2015-02-17 21:26:53 +02:00
Valeriy Koval
460e896b8f Merge branch 'feature/digistump-platform' into develop 2015-02-17 20:18:48 +02:00
Valeriy Koval
ade673d546 Improve support of Atmel SAM platform 2015-02-17 20:17:33 +02:00
Valeriy Koval
ed5e843893 Add support for Digistump development platform 2015-02-17 20:14:16 +02:00
Ivan Kravets
a03d2382af Grant libs with high priority for C Preprocessor when scan includes 2015-02-17 20:02:57 +02:00
Ivan Kravets
870ce7e0a2 Fix PyLint warning 2015-02-16 23:31:47 +02:00
Ivan Kravets
69d952ea65 Fixed SCons warning: Two different environments were specified for target // Resolve #77 2015-02-16 23:17:22 +02:00
Ivan Kravets
0d2d6cc17e Improve error reporting when upload port isn't defined 2015-02-16 23:16:48 +02:00
Ivan Kravets
be6cdc09d9 Merge pull request #80 from valeros/develop
Add support for Adafruit boards: Flora and Trinkets
2015-02-16 20:45:58 +02:00
Valeriy Koval
63c92152d9 Merge branch 'feature/adafruit-boards' into develop 2015-02-16 20:24:45 +02:00
Valeriy Koval
c9ed663ec5 Add support for Adafruit boards: Flora and Trinkets 2015-02-16 20:23:32 +02:00
Valeriy Koval
45e7fcd106 Remove "SERIALNUM" define for Teensy 2 2015-02-16 20:22:29 +02:00
Valeriy Koval
3f05146de8 Fix Arduino Due ROM & RAM size 2015-02-16 19:32:17 +02:00
Ivan Kravets
9a9b2d8bae Merge pull request #79 from valeros/develop
Add example for teensy boards
2015-02-16 18:05:18 +02:00
Valeriy Koval
639ee9fc47 Add example for teensy boards 2015-02-16 17:35:40 +02:00
Ivan Kravets
fc7e09b8c4 Cache PlatformIO home directory 2015-02-16 17:31:25 +02:00
Ivan Kravets
79d3ad245f Fix PyLint warnings 2015-02-16 15:47:34 +02:00
Ivan Kravets
ca266e81ef Merge pull request #78 from valeros/develop
Update STM32 examples
2015-02-16 15:36:48 +02:00
Valeriy Koval
2b924d1573 Update STM32 examples 2015-02-16 15:34:45 +02:00
Ivan Kravets
00e95dbabc Correct divisor between multiple envs 2015-02-16 11:08:07 +02:00
Ivan Kravets
983b629d23 Implement asynchronous output for build process 2015-02-15 23:53:15 +02:00
Ivan Kravets
0f070d1b78 Implement asynchronous command execution (AsyncPipe+subprocess) 2015-02-15 23:48:04 +02:00
Ivan Kravets
dc61722907 Handle "AbortedByUser" exception 2015-02-15 23:39:02 +02:00
Ivan Kravets
83dfcf6ac2 Remove external rebooter for Teensy CLI 2015-02-15 23:38:11 +02:00
Ivan Kravets
5a32f88dee Test all boards only for the internal libs 2015-02-15 21:37:19 +02:00
Ivan Kravets
9914fc1122 Explain how to install development version of PlatformIO 2015-02-15 21:25:49 +02:00
Ivan Kravets
beab1525a9 Add contents 2015-02-15 21:12:25 +02:00
Ivan Kravets
c6b79f13c3 Add optional $UNIX_TIME variable to build environment 2015-02-15 18:18:11 +02:00
Ivan Kravets
22257e0351 Replace "Unknown board..." message with appropriate exception 2015-02-15 18:02:59 +02:00
Ivan Kravets
030eddb244 Add alias to "tool-teensy" 2015-02-15 16:00:19 +02:00
Ivan Kravets
0047c79fcd Add missed "tool-teensy" to Teensy development platform 2015-02-15 15:58:53 +02:00
Ivan Kravets
cf925b0338 Improve "run" command: env details, timing // Resolve #74 2015-02-15 00:27:28 +02:00
Ivan Kravets
2093960719 Setup minimal "click" version to 3.0 2015-02-15 00:10:59 +02:00
Ivan Kravets
8fffc5ee9c Pass main exceptions to STDERR 2015-02-14 22:26:13 +02:00
Ivan Kravets
88f0b51312 Enable linker "cyclic dependencies" for all platforms 2015-02-14 22:14:49 +02:00
Ivan Kravets
2bfb1d5569 Remove ino-converted file 2015-02-14 20:18:34 +02:00
Ivan Kravets
7a3b43040f Make examples cross-boards, add README 2015-02-14 20:17:04 +02:00
Ivan Kravets
d2ccbf7b7a Remove "framework" alias for all "framework-*" packages
Development platform can contain more then 1 framework
2015-02-14 19:25:02 +02:00
Ivan Kravets
55ad753bf1 Refactor $PLATFORMFW_DIR logic in SCons env 2015-02-14 19:23:59 +02:00
Ivan Kravets
efcb205116 Revert linker "start-group" flag 2015-02-14 19:10:50 +02:00
Ivan Kravets
7470fd3fdd Re-structure "atmelavr-and-arduino" examples 2015-02-14 17:57:46 +02:00
Ivan Kravets
102e3f98de Add openCM3 framework to "titivate" platform 2015-02-14 16:37:44 +02:00
Ivan Kravets
b55dc0917d Fix bug with deleting ".pioenvs" when it doesn't exist 2015-02-14 16:34:00 +02:00
Ivan Kravets
061d7af2ed Improve semiversion detection 2015-02-14 16:21:35 +02:00
Ivan Kravets
ae50b9212f Cleanup automatically .pioenvs when platformio.ini has been changed // Issue #74 2015-02-14 00:12:16 +02:00
Ivan Kravets
2e90ab8092 Improve PlatformIO upgrading and detecting of new version // Resolve #63 2015-02-13 23:55:08 +02:00
Ivan Kravets
f186488fc3 Updated framework-arduino AVR & SAM to 1.6 stable version 2015-02-13 23:10:00 +02:00
Ivan Kravets
1a94952b20 Restore my commits 2015-02-13 23:01:01 +02:00
Ivan Kravets
2c1a864390 Revert "pytest" env 2015-02-13 22:28:16 +02:00
Ivan Kravets
7f258a3f4c Disable pytest env temporary 2015-02-13 19:59:42 +02:00
Ivan Kravets
b57375b8af Fix bug with auto-installing "titiva" platform 2015-02-13 19:04:31 +02:00
Ivan Kravets
3bfe2914f5 Add "pytest" environment 2015-02-13 18:41:48 +02:00
Ivan Kravets
ac14103870 Merge pull request #75 from valeros/develop
Add integration test for "examples" / issue #2
2015-02-13 18:40:09 +02:00
Valeriy Koval
68db70e6bb Merge branch 'feature/tests' into develop 2015-02-13 18:35:21 +02:00
Valeriy Koval
67f1e32652 Add integration test for "examples" 2015-02-13 18:35:09 +02:00
Valeriy Koval
3525c3cca0 Merge branch 'develop' of https://github.com/valeros/platformio into develop 2015-02-12 14:46:53 +02:00
Valeriy Koval
302d1eb15c Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-12 14:44:01 +02:00
Ivan Kravets
bea577beb9 Fix pylint warnings 2015-02-12 14:43:29 +02:00
Ivan Kravets
7f2e6a02f0 Refactor get_boards method with exception handler 2015-02-12 14:43:28 +02:00
Ivan Kravets
f9ec259742 Avoid errors when "upload speed" and "upload protocol" are missed in board definition file 2015-02-12 14:43:28 +02:00
Ivan Kravets
3179e90aea Update settings list 2015-02-12 14:43:27 +02:00
Ivan Kravets
80002dc85c Fill history with the closed issues 2015-02-12 14:43:27 +02:00
Ivan Kravets
fa44827bff Enhance Arduino and Adafruit example 2015-02-12 14:42:13 +02:00
Valeriy Koval
dd18b49604 Revert HISTORY.rst 2015-02-12 14:38:06 +02:00
Valeriy Koval
7bad31c532 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop
Conflicts:
	HISTORY.rst
2015-02-12 14:35:46 +02:00
Ivan Kravets
42caf7865c Fix pylint warnings 2015-02-12 14:32:05 +02:00
Ivan Kravets
d76f0bef77 Refactor get_boards method with exception handler 2015-02-12 14:24:31 +02:00
Ivan Kravets
821ede1d23 Avoid errors when "upload speed" and "upload protocol" are missed in board definition file 2015-02-12 13:26:37 +02:00
Ivan Kravets
0e46dc2222 Update settings list 2015-02-12 00:15:36 +02:00
Ivan Kravets
121f66b2a1 Fill history with the closed issues 2015-02-11 22:48:46 +02:00
Ivan Kravets
d1a2570283 Fix console output for an example 2015-02-11 20:06:05 +02:00
Ivan Kravets
3a7dec1463 Enhance Arduino and Adafruit example 2015-02-11 20:06:04 +02:00
Ivan Kravets
42f05979e3 Fixed AttributeError: 'module' object has no attribute 'disable_warnings' when a version of requests package is less then 2.4.0 2015-02-11 20:06:04 +02:00
Ivan Kravets
86b6b6886b Fix console output for an example 2015-02-11 16:09:01 +02:00
Ivan Kravets
e18552dadc Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-11 16:05:45 +02:00
Ivan Kravets
c62bd88963 Enhance Arduino and Adafruit example 2015-02-11 16:04:26 +02:00
Ivan Kravets
cf2a7af7e3 Fixed AttributeError: 'module' object has no attribute 'disable_warnings' when a version of requests package is less then 2.4.0 2015-02-11 12:59:12 +02:00
Ivan Kravets
b289d0ba42 Merge pull request #64 from valeros/develop
Output compiled size and static memory usage // Resolve #59
2015-02-09 19:59:50 +02:00
Valeriy Koval
d7405c44ca Output compiled size and static memory usage 2015-02-09 19:57:39 +02:00
Ivan Kravets
2bce970809 Fix UnicodeEncodeError when SourceForge doesn't response 2015-02-08 22:49:29 +02:00
Ivan Kravets
ebd2e31efe Reorganise examples 2015-02-08 21:55:26 +02:00
Ivan Kravets
34f7b8b19a Merge pull request #62 from valeros/develop
Add support for Teensy development platform
2015-02-06 18:56:00 +02:00
Valeriy Koval
184df4d5bb Rename "sam" development platform to "atmelsam" 2015-02-06 18:50:02 +02:00
Valeriy Koval
25380a7e98 Merge branch 'feature/teensy' into develop 2015-02-06 18:43:58 +02:00
Valeriy Koval
fcf4b0d303 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/teensy
Conflicts:
	platformio/builder/scripts/frameworks/arduino.py
2015-02-06 18:43:50 +02:00
Valeriy Koval
70839abf88 Finalize with Teensy platform 2015-02-06 18:34:29 +02:00
Ivan Kravets
8a3ad923e1 Merge pull request #61 from valeros/develop
Add support for Atmel SAM development platform
2015-02-06 18:18:21 +02:00
Valeriy Koval
15416a9447 Merge branch 'feature/sam' into develop 2015-02-06 18:13:07 +02:00
Valeriy Koval
14355cb7d4 Finalize with Atmel SAM platform 2015-02-06 18:12:56 +02:00
Valeriy Koval
7cdb8b0c7d Resolve uploading and major improvements 2015-02-05 20:13:21 +02:00
Valeriy Koval
6fac35fced Cleanup 2015-02-05 20:00:56 +02:00
Valeriy Koval
2280c01dc7 Initial support of SAM platform 2015-02-05 15:58:12 +02:00
Valeriy Koval
3f062f72a2 Merge commit 'a884db0825f8c66b694b15fe8900515f9837744a' into develop
Conflicts:
	platformio/builder/scripts/frameworks/arduino.py
2015-02-05 15:56:54 +02:00
Valeriy Koval
2ab49d7f24 Initial support for Teensy 3 2015-02-04 20:39:38 +02:00
Valeriy Koval
9a221085d4 Fix optional board "extra_flags" and "ldscript" 2015-02-04 20:29:07 +02:00
Valeriy Koval
9721172481 Fix optional board "extra_flags" and "ldscript" 2015-02-04 20:23:50 +02:00
Valeriy Koval
a884db0825 Move ARDUINO_ARCH define to extra flags 2015-02-04 14:44:47 +02:00
Valeriy Koval
5a13454244 Reorder options 2015-02-03 19:36:35 +02:00
Valeriy Koval
dc341f9350 Move "board" build option to extra flags 2015-02-03 19:36:22 +02:00
Ivan Kravets
a9781293f9 Maintain upgrading to 0.11.0 2015-02-03 18:45:07 +02:00
Ivan Kravets
2a84aec59e Fix bug with package without alias 2015-02-03 18:44:24 +02:00
Ivan Kravets
68cec0448e Merge pull request #60 from valeros/develop
Add STM32 platform with CMSIS, SPL and OpenCM3 frameworks
2015-02-03 14:49:53 +02:00
Valeriy Koval
2487dab7eb Merge branch 'feature/platform-stm32' into develop 2015-02-03 14:45:00 +02:00
Valeriy Koval
423dc248bc Reorganize examples with STM32 and new frameworks 2015-02-03 14:43:27 +02:00
Valeriy Koval
c402cc7c62 Add support for STM32 CMSIS, SPL and OpenCM3 frameworks 2015-02-03 14:32:12 +02:00
Valeriy Koval
4a5b6fc190 Implement STM32 platform with support for Discovery boards 2015-02-03 14:24:59 +02:00
Valeriy Koval
f176fe759d Cleanup whitespaces 2015-02-03 14:24:27 +02:00
Valeriy Koval
3442b11b3d Implement STM32 platform with support for Discovery boards 2015-02-03 14:24:15 +02:00
Valeriy Koval
2c51c2928a Move "energia-dependent" linker entry to Energia framework 2015-02-03 14:12:56 +02:00
Valeriy Koval
6acc183111 Add dependent "ldscripts" package 2015-02-03 14:08:47 +02:00
Valeriy Koval
ab27592e5d Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/platform-stm32 2015-02-03 14:06:40 +02:00
Valeriy Koval
85afbdb8a7 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-03 14:04:29 +02:00
Ivan Kravets
c05418f47e Resolve #56 / Compiling error if space in Windows user folder 2015-02-03 13:54:31 +02:00
Ivan Kravets
d57cc7b156 Keep Scons env state between SConscripts 2015-02-03 13:50:08 +02:00
Ivan Kravets
eeb58da1cb Allow to ignore files when build library 2015-02-03 13:42:58 +02:00
Ivan Kravets
cf823c471d Resolve #58 with handling assembly files 2015-02-02 14:41:37 +02:00
Valeriy Koval
2227267ff6 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-02 13:13:56 +02:00
Valeriy Koval
9e36975d5f Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/platform-stm32 2015-02-02 13:13:34 +02:00
Ivan Kravets
297f132a0c Allow multiple frameworks for env 2015-02-02 13:12:18 +02:00
Valeriy Koval
8b3979c993 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/platform-stm32 2015-02-02 13:05:25 +02:00
Valeriy Koval
a9b98afa42 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-02-02 13:05:08 +02:00
Ivan Kravets
9bd4047425 Revert "cyclic dependencies" flag to "atmelavr" platform 2015-01-31 23:22:24 +02:00
Ivan Kravets
666c6c70ca Improve "cyclic dependencies" for "Library Dependencies Finder" // Resolve #50 2015-01-31 23:13:53 +02:00
Ivan Kravets
a7fc184662 Remove unused import 2015-01-31 22:45:50 +02:00
Ivan Kravets
673c484fa7 Ask about "auto-uploading" within "platformio init" command 2015-01-31 22:42:52 +02:00
Ivan Kravets
977f30d617 Added new boards to "atmelavr" platform: Arduino NG, Arduino BT, Arduino Esplora, Arduino Ethernet, Arduino Robot Control, Arduino Robot Motor and Arduino Yun 2015-01-31 17:40:48 +02:00
Ivan Kravets
49b7cf6008 Enable by default "lib cyclic dependencies" for atmelavr platform // Resolve #50 2015-01-31 17:34:17 +02:00
Ivan Kravets
4bb513e460 Apply "ignore_pattern" for BuildLibrary to variant directory 2015-01-31 17:19:07 +02:00
Ivan Kravets
8926e27c46 Fix bug with "ignore_pattern" for BuildLibrary when path contains "examples" 2015-01-30 23:24:37 +02:00
Ivan Kravets
63870fd825 Add support for ARM-based credit-card computers: Raspberry Pi, BeagleBoard and CubieBoard 2015-01-29 23:55:17 +02:00
Valeriy Koval
f06cbebf63 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/platform-stm32 2015-01-29 18:54:50 +02:00
Ivan Kravets
6e93806b12 Allow args/kwargs for exec command 2015-01-29 18:54:28 +02:00
Ivan Kravets
00f75c753d Fix home dir path for Windows 2015-01-29 18:50:12 +02:00
Valeriy Koval
8c253137a7 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/platform-stm32 2015-01-29 16:43:26 +02:00
Valeriy Koval
fc7bbc3f20 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2015-01-29 16:42:35 +02:00
Valeriy Koval
0aea0ec1ed Merge branch 'develop' into feature/platform-stm32 2015-01-29 16:29:02 +02:00
Ivan Kravets
1921164ba3 Refactored *Library Dependency Finder* // Resolve #48 #50 #55 2015-01-29 16:09:17 +02:00
Ivan Kravets
d5a7fcf75f Expand warning for all OS about obsolate "setuptools" 2015-01-29 14:05:02 +02:00
Ivan Kravets
1ae23085d4 Allow to ignore some libs from "Library Dependency Finder" 2015-01-29 12:49:46 +02:00
Ivan Kravets
d2ad023b52 Apply "isort" 2015-01-29 12:45:26 +02:00
Ivan Kravets
abd6ff9145 Apply "isort" 2015-01-29 12:45:10 +02:00
Ivan Kravets
93273e922f Merge pull request #53 from MrCustomizer/develop
Fixing handling of relative library paths
2015-01-24 17:27:12 +02:00
Arne Augenstein
ef76822773 expand path first, then get absolute path 2015-01-24 16:14:44 +01:00
Arne Augenstein
87e1b09088 sort imports 2015-01-24 16:04:53 +01:00
Arne Augenstein
f84b113b5e fixing handling of relative paths 2015-01-24 08:53:34 +01:00
Valeriy Koval
c71026d135 Add support for board's build "extra_flags" 2015-01-20 17:42:38 +02:00
Valeriy Koval
c452302735 Move "ldscript" to own package 2015-01-20 17:41:49 +02:00
Valeriy Koval
04726fd871 Add support for stm32 boards 2015-01-19 19:28:37 +02:00
Ivan Kravets
2820e5a243 Fix an issue with the libraries that are git repositories // Resolve #49 2015-01-16 18:41:44 +02:00
Ivan Kravets
5dee9ae4ef Update colorama to 0.3.3 2015-01-13 21:40:34 +02:00
Ivan Kravets
ccb0a6262d Fix PyLint "Too many branches" notice 2015-01-10 20:10:48 +02:00
Ivan Kravets
8baae82b35 Fix multiple definition of "main" function 2015-01-10 19:48:07 +02:00
Ivan Kravets
e8b87a0168 Add "--json-output" option to "platformio boards" command // Resolve issue #42 2015-01-10 16:20:09 +02:00
Ivan Kravets
c8c1c7a83f Split long description 2015-01-08 23:52:24 +02:00
Ivan Kravets
e8746232f6 Describe how to create own development platform 2015-01-08 23:21:30 +02:00
Ivan Kravets
dcf325f64e Improve QuickStart steps 2015-01-08 20:12:42 +02:00
Ivan Kravets
2672f2c7f6 Return to 0.11.0-dev 2015-01-06 18:34:31 +02:00
Ivan Kravets
09493ce196 Merge branch 'release/v0.10.2' 2015-01-06 18:33:36 +02:00
Ivan Kravets
78575f12d5 Merge branch 'release/v0.10.2' into develop 2015-01-06 18:33:36 +02:00
Ivan Kravets
be224d2d8a Bump to 0.10.2 (resolve issue #42, #45) 2015-01-06 18:32:06 +02:00
Ivan Kravets
4b7a7d0cf0 Fix an exception during platformio upgrade under Windows OS // Resolve #45 2015-01-06 17:45:07 +02:00
Ivan Kravets
8c53cf1d3c Fix an issue with `--json-output` // Resolve #42 2015-01-05 22:58:55 +02:00
Ivan Kravets
09159c3ac0 Add notice about Engduino Library 2015-01-03 01:16:19 +02:00
Ivan Kravets
0f1cd87deb Return to 0.11.0-dev 2015-01-02 23:19:26 +02:00
Ivan Kravets
e0cb0003dc Merge branch 'release/v0.10.1' into develop 2015-01-02 23:18:15 +02:00
Ivan Kravets
23017a22ec Merge branch 'release/v0.10.1' 2015-01-02 23:18:14 +02:00
Ivan Kravets
6c86bb4167 Bump to 0.10.1 (resolve issue #42) 2015-01-02 23:17:30 +02:00
Ivan Kravets
ca31230928 Improve lib scanner 2015-01-02 23:14:45 +02:00
Ivan Kravets
01f8795981 Add "--json-output" option to "platformio list", "platformio serialports list" and "platformio lib list" cmds // Resolve #42 2015-01-02 21:03:14 +02:00
Ivan Kravets
2566879a99 Fix indention 2015-01-02 20:27:34 +02:00
Ivan Kravets
418b693fe0 Fix missing auto-uploading by default within init command 2015-01-02 20:25:30 +02:00
Ivan Kravets
8686936a07 Revert lowercase to Quickstart 2015-01-02 17:18:32 +02:00
Ivan Kravets
79b8e6c24e Mention "boards" command on QuickStart page 2015-01-02 15:19:44 +02:00
Ivan Kravets
8c2dd44f44 Update platformio.ini for the examples 2015-01-02 00:16:29 +02:00
Ivan Kravets
f172019edc Disable blink for "thanks" 2015-01-01 22:57:02 +02:00
Ivan Kravets
44bf3e8479 Start 0.11.0-dev 2015-01-01 21:04:27 +02:00
Ivan Kravets
17d6c02d83 Merge branch 'release/v0.10.0' 2015-01-01 21:00:27 +02:00
Ivan Kravets
bd6a57095a Merge branch 'release/v0.10.0' into develop 2015-01-01 21:00:27 +02:00
Ivan Kravets
68733a447a Bump to 0.10.0 (resolve issues: #11, #21, #35, #37, #38, #39, #40, #43 ) 2015-01-01 20:57:47 +02:00
Ivan Kravets
1fb0644f51 Happy New Year to copyrights :) 2015-01-01 19:50:45 +02:00
Ivan Kravets
c74d10b2e3 Migrate to PlatformIO open-source ORG domain 2014-12-30 23:22:42 +02:00
Ivan Kravets
95582d16a6 Rename Twitter account to @PlatformIO_Org 2014-12-30 14:02:20 +02:00
Ivan Kravets
e8628443f0 Correct spelling 2014-12-29 20:27:11 +02:00
Ivan Kravets
af191834d1 Allow to initialise project with the specified embedded boards // Resolve #21 2014-12-29 20:22:01 +02:00
Ivan Kravets
82744afe58 Allow auto-installation of platforms when prompts are disabled // Resolve #43 2014-12-29 15:10:31 +02:00
Ivan Kravets
c109857707 Correct Engduino names 2014-12-28 23:49:46 +02:00
Ivan Kravets
740f609ca8 Added docs for Engduino boards 2014-12-28 23:38:45 +02:00
Ivan Kravets
1b7065d8c1 Added support for *Engduino* boards // Resolve #38 2014-12-28 23:38:18 +02:00
Ivan Kravets
f78f5b454b Parse libs in header files 2014-12-28 23:09:07 +02:00
Ivan Kravets
c3686b4098 Improve compatibility with Arduino bundled libs 2014-12-28 22:58:27 +02:00
Ivan Kravets
9cfa4e40d0 Cleanup extra_flags 2014-12-28 22:57:36 +02:00
Ivan Kravets
4a5903849e Automatic detection of port on "serialports monitor" // Resolve #37 2014-12-28 20:57:05 +02:00
Ivan Kravets
200944ebb3 Fix lint warning with unused argument 2014-12-28 20:43:29 +02:00
Ivan Kravets
7af9f50426 Fix firmware uploading to Arduino Leonardo-based boards // Resolve #40 2014-12-28 20:41:21 +02:00
Ivan Kravets
fe60369b6a Fix pre-configured settings for Arduino boards and ATmega 328 MCU 2014-12-28 20:03:43 +02:00
Ivan Kravets
15acca7b57 Mention about "boards" command in the platform page 2014-12-28 00:06:54 +02:00
Ivan Kravets
2aa4d0af33 Implement 'boards' command // Resolve #11 2014-12-27 23:59:20 +02:00
Ivan Kravets
01bbfcced0 Update "requests" to 2.5.1 2014-12-26 23:49:21 +02:00
Ivan Kravets
65895e658f Fix bug with Arduino's USB boards // Resolve issue #40 2014-12-26 23:48:07 +02:00
Ivan Kravets
0241d65460 Avoid SSL connection to packages manifest file // Resolve #39 2014-12-24 22:12:42 +02:00
Ivan Kravets
060e1764cb Fix urllib3's SSL warning under Python <= 2.7.2 // Resolve #39 2014-12-24 21:36:11 +02:00
Ivan Kravets
9dcc774bfd Add example with uploading firmware via USB programmer (USBasp) // Resolve #35 2014-12-19 19:53:25 +02:00
Ivan Kravets
11b26b3730 Clarify when lib not found by search request 2014-12-16 23:45:00 +02:00
Ivan Kravets
d9a7537d5d Add example to lib search with the "excluding" operator 2014-12-14 19:47:19 +02:00
Ivan Kravets
d68937afe0 Reduce terminate timeout 2014-12-14 19:46:40 +02:00
Ivan Kravets
43441a431e Improve Telemetry service 2014-12-14 00:39:33 +02:00
Ivan Kravets
9e4618ca7e Finally fix issue #18 - Compilation fails on Windows 2014-12-13 22:54:50 +02:00
Ivan Kravets
69cde35fb7 Start 0.10.0-dev 2014-12-10 23:13:41 +02:00
Ivan Kravets
ac02348833 Merge branch 'release/v0.9.2' 2014-12-10 23:12:27 +02:00
Ivan Kravets
311c07e857 Merge branch 'release/v0.9.2' into develop 2014-12-10 23:12:27 +02:00
Ivan Kravets
34c0ccb29f Ready for v0.9.2 2014-12-10 23:11:05 +02:00
Ivan Kravets
efac8ec940 Fix compilation bug on Windows with installed MSVC // Issue #18 2014-12-10 23:07:02 +02:00
Ivan Kravets
4f56bf66db Fix compilation bug on Windows with installed MSVC 2014-12-10 23:01:48 +02:00
Ivan Kravets
3157ceaa47 Add new setting enable_prompts and avoid blocking / Resolve #34 2014-12-10 22:32:22 +02:00
Ivan Kravets
2b2ceb60cc Replace "dark blue" with "cyan" colour / Resolve #33 2014-12-10 21:40:39 +02:00
Ivan Kravets
4f3c4e0901 Update "requests" to 2.5.0 2014-12-10 21:31:50 +02:00
Ivan Kravets
5442ee459d Fix enable/disable telemetry service 2014-12-06 19:00:36 +02:00
Ivan Kravets
63dcb5586c Start 0.10.0-dev 2014-12-05 00:12:44 +02:00
Ivan Kravets
e521a691ae Merge branch 'release/v0.9.1' 2014-12-05 00:04:38 +02:00
Ivan Kravets
b653aca20f Merge branch 'release/v0.9.1' into develop 2014-12-05 00:04:38 +02:00
Ivan Kravets
e0120bc86e Ready for v0.9.1 2014-12-05 00:02:09 +02:00
Ivan Kravets
0dff38fcdd Upgrade Eclipse Project Examples to latest Luna and PlatformIO releases 2014-12-04 23:57:52 +02:00
Ivan Kravets
d8863d1861 Code improvements 2014-12-04 23:17:45 +02:00
Ivan Kravets
8596d271a2 Cleanup click-based source code 2014-12-03 20:16:50 +02:00
Ivan Kravets
affb47b82e Ask user to install platform when it hasn't been installed yet 2014-12-03 20:15:52 +02:00
Ivan Kravets
61e07fe169 Improve documentation 2014-12-03 14:56:24 +02:00
Ivan Kravets
caf6746e89 Fix "OSError: [Errno 2] No such file or directory" when PlatformIO isn't installed properly 2014-12-03 14:18:22 +02:00
Ivan Kravets
f1f6817615 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2014-12-03 14:16:47 +02:00
Ivan Kravets
06f4e5c835 Merge pull request #32 from franciscoruiz/eclipse-ide-examples-tiva
Fixed example for Eclipse IDE with Tiva board
2014-12-03 13:25:00 +02:00
Ivan Kravets
0aeb2e89de Register "serialports" like multicommand 2014-12-03 12:46:24 +02:00
Ivan Kravets
d1513169fc More clarifications about NotPlatformProject 2014-12-03 12:45:23 +02:00
Francisco Ruiz
2af34821aa Made main.c compliant with Energy
Complaining about main() defined twice
2014-12-03 00:31:34 +00:00
Francisco Ruiz
e1ad6072dd Set platformio as builder for the project
Both for building and cleaning
2014-12-03 00:29:44 +00:00
Francisco Ruiz
c69c889a26 Fixed paths to included files for toolchain and framework 2014-12-03 00:28:17 +00:00
Francisco Ruiz
2be4bc4817 Fixed reference to non-existing image in README 2014-12-03 00:24:35 +00:00
Ivan Kravets
32d422bd97 Simplify SF URL to manifest file 2014-12-01 23:21:21 +02:00
Ivan Kravets
be0eb901db Start 0.10.0-dev 2014-12-01 23:11:16 +02:00
Ivan Kravets
ce1b32e4e9 Merge branch 'release/v0.9.0' 2014-12-01 23:04:54 +02:00
Ivan Kravets
e2a4f48953 Merge branch 'release/v0.9.0' into develop 2014-12-01 23:04:54 +02:00
Ivan Kravets
2bc68df958 Preparation for v0.9.0 2014-12-01 23:04:26 +02:00
Ivan Kravets
ba00ee20c2 Switch to SF Storage 2014-12-01 22:45:53 +02:00
Ivan Kravets
107a849f88 Correct dynamic library name 2014-12-01 16:40:46 +02:00
Ivan Kravets
ddab7046ca Don't show obsolate version in =dev mode 2014-12-01 16:33:35 +02:00
Ivan Kravets
e49d4e2722 Fix #28: bug with code builder and built-in Arduino libraries 2014-12-01 16:11:30 +02:00
Ivan Kravets
3c9e809b58 Improve "init" command. Resolve #31 2014-11-30 18:14:18 +02:00
Ivan Kravets
a82d09e816 Trim spaces 2014-11-30 18:13:45 +02:00
Ivan Kravets
6b9cbde8eb Improve telemetry for run env command 2014-11-30 17:00:30 +02:00
Ivan Kravets
22297b9cfd Implement "platformio settings" command 2014-11-29 22:58:10 +02:00
Ivan Kravets
d8837e4756 Allow "upload_port" auto-detecting 2014-11-29 22:56:08 +02:00
Ivan Kravets
bcfb007c90 Added Migration Manager which simplifies process with upgrading to a major release 2014-11-29 22:55:32 +02:00
Ivan Kravets
33d87367e7 Add Telemetry Service 2014-11-29 22:48:15 +02:00
Ivan Kravets
257f751dfa Implement ApplicationState Manager 2014-11-29 22:39:44 +02:00
Ivan Kravets
e41226fcbc Remove copyrights from use's file 2014-11-27 22:25:40 +02:00
Ivan Kravets
4efb798371 Add ready for compilers 2014-11-27 22:22:39 +02:00
Ivan Kravets
f8f47886d3 Resolve issue #27 with LICENSE 2014-11-27 22:17:48 +02:00
Ivan Kravets
dec78d29e8 Improve install/uninstall commands 2014-11-24 22:24:19 +02:00
Ivan Kravets
102175215c Allow for search args to be empty 2014-11-24 21:59:25 +02:00
Ivan Kravets
cd2cc16fcf Improve support for 3-rd party platforms 2014-11-24 21:36:44 +02:00
Ivan Kravets
b103dc01c0 Refactored Package Manager 2014-11-22 23:55:17 +02:00
Ivan Kravets
f8ed09c3ad Improve installation section 2014-11-21 21:06:32 +02:00
Ivan Kravets
7f918da87d Fix SHA1 package verification under Cygwin Env. Resolve #26 2014-11-21 18:13:02 +02:00
Ivan Kravets
32230c6b60 Add pic for colourful output 2014-11-15 20:18:50 +02:00
Ivan Kravets
d8b00eef97 Improve PlatformIO ideas 2014-11-15 20:12:27 +02:00
Ivan Kravets
2b1b64c5c1 Add 'sudo' notice 2014-11-14 00:17:09 +02:00
Ivan Kravets
145fcb63e2 Improve installation 2014-11-14 00:12:23 +02:00
Ivan Kravets
6748fb974b Add pics to IDE page 2014-11-12 19:33:35 +02:00
Ivan Kravets
da234bf228 Update project title 2014-11-07 22:22:18 +02:00
Ivan Kravets
c821cdefa4 Add logo, improve texts 2014-11-07 22:14:44 +02:00
Ivan Kravets
7eb86305d4 Add "user Guide" shortcut to lib menu 2014-11-06 20:21:48 +02:00
Ivan Kravets
66b5299b56 Update Twitter link 2014-11-05 20:58:35 +02:00
Ivan Kravets
fcd0528a9e Fix trademark issues 2014-10-27 22:47:53 +02:00
Ivan Kravets
99929d7fa6 Fix "repository" field and "type" attribute 2014-10-24 22:59:15 +03:00
Ivan Kravets
6c7be9b339 Improve lib examples 2014-10-22 23:52:17 +03:00
Ivan Kravets
73004d0ad8 Switch to 0.9.0-dev branch 2014-10-19 18:01:27 +03:00
Ivan Kravets
c867f9a90a Merge branch 'release/v0.8.0' 2014-10-19 17:59:44 +03:00
Ivan Kravets
7f7620a08c Merge branch 'release/v0.8.0' into develop 2014-10-19 17:59:44 +03:00
Ivan Kravets
416bf8e7af Ready for v0.8.0 2014-10-19 17:58:35 +03:00
Ivan Kravets
b3eebf717d Correct 7-th example for lib search command 2014-10-19 17:56:08 +03:00
Ivan Kravets
baef85aed1 Fix PyLint warnings from the last CI build 2014-10-19 00:21:10 +03:00
Ivan Kravets
2d6c0ef66d Avoid trademark issues in library.json; switch to PlatformIO Library Registry ID logic
Resolve issue #17
2014-10-19 00:14:11 +03:00
Ivan Kravets
4f817a5b61 Describe new fields: frameworks, platforms, authors and dependencies 2014-10-18 20:03:38 +03:00
Ivan Kravets
01d415cc7f Avoid trademarks issues 2014-10-15 22:33:23 +03:00
Ivan Kravets
d13bf3325b Update "colorama" to 0.3.2 2014-10-08 23:10:34 +03:00
Ivan Kravets
0e62ad1600 Cleanup citate 2014-10-08 17:44:20 +03:00
Ivan Kravets
700c6c9b3e Improve citrate 2014-10-08 17:42:02 +03:00
Ivan Kravets
ac02703f5f Disable checking for link anchors 2014-10-08 17:41:48 +03:00
Ivan Kravets
1f80b6746e Fix links 2014-10-07 16:13:24 +03:00
Ivan Kravets
9f87342e30 Add Arduino & Energia IDEs 2014-10-07 16:11:12 +03:00
Ivan Kravets
13d6616b55 Update README.rst 2014-10-06 23:35:52 +03:00
Ivan Kravets
81700523ed Update README.rst 2014-10-06 23:35:38 +03:00
Ivan Kravets
7f1827f1e5 Switch to v0.8.0 2014-10-06 23:33:45 +03:00
Ivan Kravets
8d491b4146 Merge branch 'release/v0.7.1' 2014-10-06 23:28:12 +03:00
Ivan Kravets
0ea57b8bca Merge branch 'release/v0.7.1' into develop 2014-10-06 23:28:12 +03:00
Ivan Kravets
466026b5c6 Update project description, history and etc 2014-10-06 23:27:49 +03:00
Ivan Kravets
c90ef9919b Improve title 2014-10-06 16:21:24 +03:00
Ivan Kravets
8649114546 Fix link to Web Library Search site 2014-10-06 16:15:40 +03:00
Ivan Kravets
dcfa899520 Fix make directory operation for invalid library name 2014-10-06 14:09:22 +03:00
Ivan Kravets
2e03d27d27 Update "requests" to 2.4.3 2014-10-06 13:57:40 +03:00
Ivan Kravets
9ead140b6e Fix lib update crashing when no libs are installed (resolve issue #19) 2014-10-05 23:34:40 +03:00
Ivan Kravets
719e03da16 Expand user path from lib_dir 2014-10-04 23:30:51 +03:00
Ivan Kravets
6a775f3951 Skip "platformio" section from "run" process 2014-10-04 18:53:59 +03:00
Ivan Kravets
7de5166694 Change "print" function to Py2.x 2014-10-03 19:54:02 +03:00
Ivan Kravets
907a72d3bd Move to latest version of SCons 2014-10-03 19:48:17 +03:00
Ivan Kravets
024be2e094 Automatic detection of port on upload (resolve #15) 2014-10-03 19:47:34 +03:00
Ivan Kravets
1c4b97c2f2 Fix lint warning with anomalous backslash 2014-09-30 20:58:30 +03:00
Ivan Kravets
2a7e67b8e4 Fix bug with order for "includes" in conversation from INO/PDE to CPP 2014-09-30 20:55:08 +03:00
Ivan Kravets
09761004dd Ready for 0.8.0-dev 2014-09-24 22:33:40 +03:00
Ivan Kravets
6404b02a5d Merge branch 'release/v0.7.0' 2014-09-24 22:25:58 +03:00
Ivan Kravets
766bc44b23 Merge branch 'release/v0.7.0' into develop 2014-09-24 22:25:58 +03:00
Ivan Kravets
c14dbb5ef1 Resolve #6. Ready for 0.7.0 2014-09-24 22:25:44 +03:00
Ivan Kravets
9c2dbf73f3 Implement lib-search pagination, dependencies uninstalling 2014-09-24 22:18:19 +03:00
Ivan Kravets
c0c3c8efcd Add 'examples' field 2014-09-24 21:40:37 +03:00
Ivan Kravets
24ec2dc9e4 Update PlatformIO Website URLs 2014-09-12 19:27:56 +03:00
Ivan Kravets
97a42a357a Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2014-09-12 19:19:46 +03:00
Ivan Kravets
2dddbfc074 Correction 2014-09-12 19:18:49 +03:00
Ivan Kravets
f77c195f3d Update "requests" to 2.4.1 2014-09-12 19:18:11 +03:00
Ivan Kravets
70493a7721 Update PlatformIO Website URLs 2014-09-12 19:17:31 +03:00
Ivan Kravets
1e1fac2fc1 Merge branch 'develop' of https://github.com/ivankravets/platformio into develop 2014-09-09 23:16:55 +03:00
Ivan Kravets
fbe014f687 Corrections 2014-09-09 23:16:36 +03:00
Ivan Kravets
fd2571da04 Updated "click" to 3.3 2014-09-08 22:15:05 +03:00
Ivan Kravets
813c818477 Implement "lib register" command 2014-09-08 22:02:57 +03:00
Ivan Kravets
c4b28ab252 Rename section of source location 2014-09-08 15:37:04 +03:00
Ivan Kravets
ac66f62262 Rename to "creating" 2014-09-07 19:38:00 +03:00
Ivan Kravets
727ec2f4dc Add citation block 2014-09-07 18:22:52 +03:00
Ivan Kravets
995a25478b Improvements 2014-09-07 18:14:33 +03:00
Ivan Kravets
5fa265374c Rename "create" page 2014-09-07 15:09:32 +03:00
Ivan Kravets
369622f3fb Correct source code locations 2014-09-06 23:55:48 +03:00
Ivan Kravets
6fdc47beda Describe how to create new library and share it 2014-09-06 23:51:28 +03:00
Ivan Kravets
f316308860 Describe "dependencies" field from library.json 2014-09-06 22:27:33 +03:00
Ivan Kravets
2ac4b9a590 Fill history with Library Manager record 2014-09-06 22:19:51 +03:00
Ivan Kravets
23bc5188b3 Fill Library Config information 2014-09-06 22:13:16 +03:00
Ivan Kravets
1631770b85 Describe "lib_dir" option 2014-09-06 18:46:19 +03:00
Ivan Kravets
849a49f665 Add Library Manager documentation 2014-09-06 13:44:45 +03:00
Ivan Kravets
be710cefd8 Implement installing dependence libs 2014-09-06 12:53:17 +03:00
Ivan Kravets
a98dc5bc29 Implement --keyword and --author options for library search command 2014-09-06 12:12:13 +03:00
Ivan Kravets
46fb576c9d Switch package manifest to dl.platformio 2014-09-05 21:55:47 +03:00
Ivan Kravets
b370d38192 Merge branch 'feature/library-manager' into develop 2014-09-05 21:39:41 +03:00
Ivan Kravets
716ff3df86 Merge branch 'develop' of https://github.com/ivankravets/platformio into feature/library-manager 2014-09-05 21:31:37 +03:00
Ivan Kravets
c784c7ab47 Typo fix 2014-09-05 21:27:10 +03:00
Ivan Kravets
bac0a5ebb1 Implement lib commands: install, uninstall, show, update, list 2014-09-04 18:58:12 +03:00
Ivan Kravets
3c030edc38 Grammar fix 2014-09-04 18:57:13 +03:00
Ivan Kravets
35e7c8b3a7 Seek for library in user's lib directory 2014-09-04 18:56:32 +03:00
Ivan Kravets
855df959ee Parse .pde as .ino file 2014-09-04 18:55:56 +03:00
Ivan Kravets
3d179fe1a7 Implement "lib search" command 2014-09-03 23:03:49 +03:00
Ivan Kravets
69b73935d0 Updated "requests" to 2.4.0 2014-09-01 10:30:01 +03:00
Ivan Kravets
a7bc72aa41 Improve installation section 2014-08-28 21:20:15 +03:00
Ivan Kravets
5f539fdf7b Re-tested with Click 3.2 2014-08-23 11:51:18 +03:00
Ivan Kravets
78bf6c0e23 Italic correction 2014-08-22 18:05:27 +03:00
Ivan Kravets
768eea8a6d Implemented new `[platformio]` section for Configuration File | Resolve #14 2014-08-22 17:57:28 +03:00
Ivan Kravets
e4ba030a0c Expand an URL to get-platformio.py 2014-08-13 16:36:38 +03:00
Ivan Kravets
ad6acb28ae Disable PyLint stupid warning 2014-08-13 11:55:25 +03:00
Ivan Kravets
63d9914652 Test passed with new click 3.1 2014-08-13 11:37:50 +03:00
Ivan Kravets
c41be4b294 Add notice about examples on the web 2014-08-12 19:29:57 +03:00
Ivan Kravets
9cec1069d6 Rename Miscellaneous section to Raspduino 2014-08-11 15:58:39 +03:00
Ivan Kravets
1b359b7587 Add new examples to ProjectConfFile + improve Quickstart 2014-08-11 12:20:08 +03:00
Ivan Kravets
80e21f61d3 Minor docs improvement 2014-08-09 23:40:32 +03:00
Ivan Kravets
0323fe7b90 Preparation for 0.7.0-dev 2014-08-09 23:29:37 +03:00
Ivan Kravets
e48c6744ed Merge branch 'release/v0.6.0' 2014-08-09 23:21:02 +03:00
Ivan Kravets
fcef78ed0d Merge branch 'release/v0.6.0' into develop 2014-08-09 23:21:02 +03:00
Ivan Kravets
fbab527ed3 Ready for 0.6.0 release 2014-08-09 23:20:45 +03:00
Ivan Kravets
7bee016a7e Implement serialports monitor / resolve #10 2014-08-09 23:13:29 +03:00
Ivan Kravets
c496b736ea Append SHELL/PATH correction for Makefile 2014-08-09 19:31:34 +03:00
Ivan Kravets
1fb8c5dcab Add PDF version of docs 2014-08-09 18:06:56 +03:00
Ivan Kravets
2f79b604c7 Clean Project Configuration file & README 2014-08-09 17:57:17 +03:00
Ivan Kravets
628cf3b652 Simplify README 2014-08-09 17:49:37 +03:00
Ivan Kravets
71c66b9171 Fix bug with auto-conversation from Arduino *.ino to *.cpp 2014-08-09 17:19:08 +03:00
Ivan Kravets
a14a724836 Add "docs" env for CI 2014-08-09 17:11:45 +03:00
Ivan Kravets
f83e052ea2 Initial version of docs 2014-08-09 16:39:00 +03:00
Ivan Kravets
8961c2fad4 Merge docs + develop 2014-08-09 16:36:29 +03:00
Ivan Kravets
7af95ab897 Merge branch 'develop' into feature/documentation 2014-08-09 16:34:36 +03:00
Ivan Kravets
9a99409ae1 Initial version of docs 2014-08-09 16:31:20 +03:00
Ivan Kravets
62ccafde23 Resolve issue #9: ImportError: No module named platformio.util 2014-08-05 14:18:16 +03:00
Ivan Kravets
75c50ef213 Append PlatformIO info to request header 2014-08-04 12:43:09 +03:00
Ivan Kravets
05908dc882 Continue on 1.0.0-dev 2014-08-04 12:09:04 +03:00
Ivan Kravets
94faec9827 Fix links for testers 2014-08-04 12:00:47 +03:00
Ivan Kravets
26e70ad2f9 Merge branch 'release/v0.5.0' 2014-08-04 11:56:43 +03:00
Ivan Kravets
a2a13039ba Merge branch 'release/v0.5.0' into develop 2014-08-04 11:56:43 +03:00
Ivan Kravets
6239b9d22a Ready for 0.5.0 release 2014-08-04 11:55:55 +03:00
Ivan Kravets
47b8d32bbf Update with fixed bugs/issues and "thanks" part! 2014-08-04 11:51:04 +03:00
Ivan Kravets
8e4520d6e0 Fix libs order when build nested dependencies 2014-08-04 11:38:00 +03:00
Ivan Kravets
de37cc0518 Add static Adafruit_CC3000 library example 2014-08-04 11:14:46 +03:00
Ivan Kravets
8c452851d2 Remove Adafruit submodule from examples 2014-08-04 11:13:54 +03:00
Ivan Kravets
3d680e5351 Remove Adafruit submodule from examples 2014-08-04 11:12:47 +03:00
Ivan Kravets
f7a4ee0d66 Fix bug with first-launching 2014-08-04 11:09:47 +03:00
Ivan Kravets
2534db8c0e Merge branch 'feature/atmelavr-raspduino-reset' into develop 2014-08-04 09:31:17 +03:00
Ivan Kravets
f006561113 Initial commit of docs 2014-08-04 09:23:57 +03:00
Ivan Kravets
8b056efe64 Resolve #8: Implement "upgrade" command and "auto-check" for the latest version 2014-08-03 18:40:20 +03:00
Ivan Kravets
a287d53520 Add Arduino example with external library (Adafruit CC3000) 2014-08-03 16:49:03 +03:00
Ivan Kravets
00e51558db Resolve #7: add auto-conversation from *.ino to valid *.cpp for Arduino/Energia frameworks 2014-08-03 16:23:18 +03:00
Ivan Kravets
1b75d3e461 Allow to clean dependent libraries 2014-08-02 21:07:35 +03:00
Ivan Kravets
47edfdb043 Improve nested lookup for libraries 2014-08-02 20:47:05 +03:00
Ivan Kravets
ce0c1f9f4a Disable default warning flag "-Wall" 2014-08-02 13:23:42 +03:00
Ivan Kravets
eccba803b2 Initial version of "reset" operation for Raspduino 2014-08-01 16:19:54 +03:00
Ivan Kravets
1b2339c3bd Fixed bug with platforms list 2014-07-31 16:58:49 +03:00
Ivan Kravets
3f03143e5e Removed wheel support (need to rely on dynamic dependencies) 2014-07-31 16:58:03 +03:00
Ivan Kravets
94cb62e4d9 Merge branch 'release/v0.4.0' into develop 2014-07-31 16:26:35 +03:00
183 changed files with 15839 additions and 3499 deletions

21
.appveyor.yml Normal file
View File

@@ -0,0 +1,21 @@
build: off
environment:
matrix:
- TOXENV: "py27"
install:
- cmd: git submodule update --init --recursive
- cmd: SET PATH=%PATH%;C:\Python27\Scripts;C:\MinGW\bin
- cmd: pip install tox
test_script:
- cmd: tox
notifications:
- provider: Slack
incoming_webhook:
secure: E9H0SU0Ju7WLDvgxsV8cs3J62T3nTTX7QkEjsczN0Sto/c9hWkVfhc5gGWUkxhlD975cokHByKGJIdwYwCewqOI+7BrcT8U+nlga4Uau7J8=
on_build_success: false
on_build_failure: true
on_build_status_changed: true

21
.coveragerc Normal file
View File

@@ -0,0 +1,21 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[report]
# Regexes for lines to exclude from consideration
exclude_lines =
pragma: no cover
def __repr__
raise AssertionError
raise NotImplementedError

58
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,58 @@
What kind of issue is this?
- [ ] Question. This issue tracker is not the place for questions. If you want to ask how to do
something, or to understand why something isn't working the way you expect it to, use
our Community Forums https://community.platformio.org
- [ ] PlatformIO IDE. All issues related to PlatformIO IDE should be reported to appropriate repository
https://github.com/platformio/platformio-atom-ide/issues
- [ ] Development Platform or Board. All issues related to Development Platforms or Embedded Boards
should be reported to appropriate repository.
See full list with repositories and search for "platform-xxx" repository related to your hardware
https://github.com/platformio?query=platform-
- [ ] Feature Request. Start by telling us what problem youre trying to solve. Often a solution
already exists! Dont send pull requests to implement new features without first getting our
support. Sometimes we leave features out on purpose to keep the project small.
- [ ] PlatformIO Core. If youve found a bug, please provide an information below.
*You can erase any parts of this template not applicable to your Issue.*
------------------------------------------------------------------
### Configuration
**Operating system**:
**PlatformIO Version** (`platformio --version`):
### Description of problem
#### Steps to Reproduce
1.
2.
3.
### Actual Results
### Expected Results
### If problems with PlatformIO Build System:
**The content of `platformio.ini`:**
```ini
Insert here...
```
**Source file to reproduce issue:**
```cpp
Insert here...
```
### Additional info

10
.gitignore vendored
View File

@@ -2,6 +2,10 @@
*.pyc
.pioenvs
.tox
.sconsign.dblite
examples/ide-eclipse/.metadata
examples/ide-eclipse/RemoteSystemsTempFiles
docs/_build
dist
build
.cache
coverage.xml
.coverage
htmlcov

7
.gitmodules vendored Normal file
View File

@@ -0,0 +1,7 @@
[submodule "examples"]
path = examples
url = https://github.com/platformio/platformio-examples.git
[submodule "docs"]
path = docs
url = https://github.com/platformio/platformio-docs.git
branch = develop

View File

@@ -1,3 +1,3 @@
[settings]
line_length=79
known_third_party=click,requests,serial,SCons
known_third_party=bottle,click,lockfile,python-dateutil,pytest,requests,SCons,semantic_version,serial

270
.pylintrc
View File

@@ -1,29 +1,9 @@
[MASTER]
# Specify a configuration file.
#rcfile=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Profiled execution.
profile=no
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Pickle collected data for later comparisons.
persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time. See also the "--disable" option for examples.
@@ -38,244 +18,6 @@ load-plugins=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=C0103,C0111,E0611,F0401,I0011,R0801,R0903
# disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages
reports=yes
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Add a comment according to your evaluation note. This is used by the global
# evaluation report (RP0004).
comment=no
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
[BASIC]
# Required attributes for module, separated by a comma
required-attributes=
# List of builtins function names that should not be used, separated by a comma
bad-functions=map,filter,apply,input
# Regular expression which should only match correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Regular expression which should only match correct module level names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Regular expression which should only match correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
# Regular expression which should only match correct function names
function-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct method names
method-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct instance attribute names
attr-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct argument names
argument-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct variable names
variable-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct attribute names in class
# bodies
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Regular expression which should only match correct list comprehension /
# generator expression variable names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=__.*__
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=80
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
# List of optional constructs for which whitespace checking is disabled
no-space-check=trailing-comma,dict-separator
# Maximum number of lines in a module
max-module-lines=1000
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
[TYPECHECK]
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set).
ignored-classes=SQLObject
# When zope mode is activated, add a predefined set of Zope acquired attributes
# to generated-members.
zope=no
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E0201 when accessed. Python regular
# expressions are accepted.
generated-members=REQUEST,acl_users,aq_parent
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the beginning of the name of dummy variables
# (i.e. not used).
dummy-variables-rgx=_$|dummy
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
[CLASSES]
# List of interface methods to ignore, separated by a comma. This is used for
# instance to not check methods defines in Zope's Interface base class.
ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,__new__,setUp
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
[DESIGN]
# Maximum number of arguments for function / method
max-args=5
# Argument names that match this expression will be ignored. Default to name
# with leading underscore
ignored-argument-names=_.*
# Maximum number of locals for function / method body
max-locals=15
# Maximum number of return / yield for function / method body
max-returns=6
# Maximum number of branch for function / method body
max-branches=12
# Maximum number of statements in function / method body
max-statements=50
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of attributes for a class (see R0902).
max-attributes=7
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=regsub,TERMIOS,Bastion,rexec
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=Exception
disable=locally-disabled,missing-docstring,invalid-name,too-few-public-methods,redefined-variable-type,import-error,similarities,unsupported-membership-test,unsubscriptable-object,ungrouped-imports,cyclic-import

3
.style.yapf Normal file
View File

@@ -0,0 +1,3 @@
[style]
blank_line_before_nested_class_or_def = true
allow_multiline_lambdas = true

View File

@@ -1,12 +1,43 @@
language: python
python: 2.7
env:
- TOX_ENV=lint
- TOX_ENV=py26
matrix:
include:
- os: linux
sudo: false
python: 2.7
env: TOX_ENV=docs
- os: linux
sudo: false
python: 2.7
env: TOX_ENV=lint
- os: linux
sudo: required
python: 2.7
env: TOX_ENV=py27
- os: osx
language: generic
env: TOX_ENV=skipexamples
install:
- pip install tox
- git submodule update --init --recursive
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -fsSL https://bootstrap.pypa.io/get-pip.py | sudo python; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo pip install tox; else pip install -U tox; fi
# ChipKIT issue: install 32-bit support for GCC PIC32
- if [[ "$TOX_ENV" == "py27" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libc6-i386; fi
script:
- tox -e $TOX_ENV
- tox -e $TOX_ENV
after_success:
- if [[ "$TOX_ENV" == "py27" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tox -e coverage; fi
- if [[ "$TOX_ENV" == "py27" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then bash <(curl -s https://codecov.io/bash); fi
notifications:
email: false
slack:
rooms:
secure: JD6VGfN4+SLU2CwDdiIOr1VgwD+zbYUCE/srwyGuHavnjIkPItkl6T6Bn8Y4VrU6ysbuKotfdV2TAJJ82ivFbY8BvZBc7FBcYp/AGQ4FaCCV5ySv8RDAcQgdE12oaGzMdODiLqsB85f65zOlAFa+htaXyEiRTcotn6Y2hupatrI=
on_failure: always
on_success: change

15
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
"python.pythonPath": "${workspaceRoot}/.tox/develop/bin/python",
"python.formatting.provider": "yapf",
"files.exclude": {
"**/*.pyc": true,
"*.egg-info": true,
".cache": true,
"build": true,
"dist": true
},
"editor.rulers": [79],
"restructuredtext.builtDocumentationPath": "${workspaceRoot}/docs/_build/html",
"restructuredtext.confPath": "${workspaceRoot}/docs",
"restructuredtext.linter.executablePath": "${workspaceRoot}/.tox/docs/bin/restructuredtext-lint"
}

21
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,21 @@
Contributing
------------
To get started, <a href="https://www.clahub.com/agreements/platformio/platformio-core">sign the Contributor License Agreement</a>.
1. Fork the repository on GitHub.
2. Make a branch off of ``develop``
3. Run ``pip install tox``
4. Go to the root of project where is located ``tox.ini`` and run ``tox -e develop``
5. Activate current development environment:
* Windows: ``.tox\develop\Scripts\activate``
* Bash/ZSH: ``source .tox/develop/bin/activate``
* Fish: ``source .tox/bin/activate.fish``
6. Make changes to code, documentation, etc.
7. Lint source code ``tox -e lint``
8. Run the tests ``tox -e py27``
9. Build documentation ``tox -e docs`` (creates a directory _build under docs where you can find the html)
10. Commit changes to your forked repository
11. Submit a Pull Request on GitHub.

File diff suppressed because it is too large Load Diff

187
LICENSE
View File

@@ -1,21 +1,174 @@
The MIT License (MIT)
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Copyright (c) 2014 Ivan Kravets
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
1. Definitions.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

26
Makefile Normal file
View File

@@ -0,0 +1,26 @@
lint:
pylint --rcfile=./.pylintrc ./platformio
isort:
isort -rc ./platformio
isort -rc ./tests
yapf:
yapf --recursive --in-place platformio/
test:
py.test -v -s -n 3 --dist=loadscope tests --ignore tests/test_examples.py --ignore tests/test_pkgmanifest.py
before-commit: isort yapf lint test
clean-docs:
rm -rf docs/_build
clean: clean-docs
find . -name \*.pyc -delete
find . -name __pycache__ -delete
rm -rf .cache
rm -rf build
rm -rf htmlcov
rm -f .coverage

View File

@@ -1,619 +1,128 @@
PlatformIO
==========
.. image:: https://travis-ci.org/ivankravets/platformio.svg?branch=develop
:target: https://travis-ci.org/ivankravets/platformio
:alt: Build Status
.. image:: https://gemnasium.com/ivankravets/platformio.png
:target: https://gemnasium.com/ivankravets/platformio
:alt: Dependency Status
.. image:: https://pypip.in/version/platformio/badge.png
.. image:: https://travis-ci.org/platformio/platformio-core.svg?branch=develop
:target: https://travis-ci.org/platformio/platformio-core
:alt: Travis.CI Build Status
.. image:: https://ci.appveyor.com/api/projects/status/unnpw0n3c5k14btn/branch/develop?svg=true
:target: https://ci.appveyor.com/project/ivankravets/platformio-core
:alt: AppVeyor.CI Build Status
.. image:: https://requires.io/github/platformio/platformio-core/requirements.svg?branch=develop
:target: https://requires.io/github/platformio/platformio-core/requirements/?branch=develop
:alt: Requirements Status
.. image:: https://img.shields.io/pypi/v/platformio.svg
:target: https://pypi.python.org/pypi/platformio/
:alt: Latest Version
.. image:: https://pypip.in/download/platformio/badge.png
:target: https://pypi.python.org/pypi/platformio/
:alt: Downloads
.. image:: https://pypip.in/license/platformio/badge.png
.. image:: https://img.shields.io/pypi/l/platformio.svg
:target: https://pypi.python.org/pypi/platformio/
:alt: License
.. image:: https://img.shields.io/PlatformIO/Community.png
:alt: Community Forums
:target: https://community.platformio.org
.. image:: https://img.shields.io/PlatformIO/Plus.png?color=orange
:alt: PlatformIO Plus: Professional solutions for an awesome open source PlatformIO ecosystem
:target: https://pioplus.com
`Quickstart <#quickstart>`_ |
`Installation <#installation>`_ |
`Documentation <#documentation>`_ |
`Examples <https://github.com/ivankravets/platformio/tree/develop/examples>`_ |
`Embedded Platform Boards <#embedded-platform-boards>`_ |
`IDE Integration <#ide-integration>`_ |
`Blog <http://www.ikravets.com/category/computer-life/platformio>`_
**Quick Links:** `Home Page <http://platformio.org>`_ |
`PlatformIO Plus <https://pioplus.com>`_ |
`PlatformIO IDE <http://platformio.org/platformio-ide>`_ |
`Project Examples <https://github.com/platformio/platformio-examples/>`_ |
`Docs <http://docs.platformio.org>`_ |
`Donate <http://platformio.org/donate>`_ |
`Contact Us <https://pioplus.com/contact.html>`_
**Social:** `Twitter <https://twitter.com/PlatformIO_Org>`_ |
`Facebook <https://www.facebook.com/platformio>`_ |
`Hackaday <https://hackaday.io/project/7980-platformio>`_ |
`Bintray <https://bintray.com/platformio>`_ |
`Community <https://community.platformio.org>`_
**PlatformIO** is a console tool to build code with different development
platforms.
.. image:: https://raw.githubusercontent.com/platformio/platformio-web/develop/app/images/platformio-ide-laptop.png
:target: http://platformio.org
You have no need to install any *IDE* or compile any toolchains. *PlatformIO*
has pre-built different development platforms including: compiler, debugger,
flasher (for embedded) and many other useful tools.
`PlatformIO <http://platformio.org>`_ is an open source ecosystem for IoT
development. Cross-platform IDE and unified debugger. Remote unit testing and
firmware updates.
**PlatformIO** allows developer to compile the same code with different
platforms using only one command ``platformio run``. This happens due to
``platformio.ini`` project's file (see
`default template <https://github.com/ivankravets/platformio/blob/develop/platformio/projectconftpl.ini>`_)
where you can setup different environments with specific settings: platform,
firmware uploading options, pre-built framework and many more.
Get Started
-----------
Each platform consists of packages which are located in own repository.
Due to ``platformio update`` command you will have up-to-date development
instruments.
* `What is PlatformIO? <http://docs.platformio.org/page/what-is-platformio.html>`_
.. image:: examples/platformio-examples.png
:target: https://github.com/ivankravets/platformio/raw/develop/examples/platformio-examples.png
:alt: Examples
:width: 730px
Products
--------
**PlatformIO** is well suited for **embedded development**. It can:
* `PlatformIO IDE <http://platformio.org/platformio-ide>`_
* `PlatformIO Core <http://docs.platformio.org/page/core.html>`_
* `PIO Remote™ <http://docs.platformio.org/page/plus/pio-remote.html>`_
* `PIO Unified Debugger <http://docs.platformio.org/page/plus/debugging.html>`_
* `PIO Unit Testing <http://docs.platformio.org/page/plus/unit-testing.html>`_
* `PIO Delivery™ <http://platformio.org/pricing#solution-pio-delivery>`_
* `Cloud Builder <http://platformio.org/pricing#solution-cloud-builder>`_
* Automatically analyse dependency
* Reliably detect build changes
* Build framework or library source code to static library
* Build *ELF* (executable and linkable firmware)
* Convert *ELF* to *HEX* or *BIN* file
* Extract *EEPROM* data
* Upload firmware to your device
Registry
--------
It has support for many popular embedded platforms like these:
* `Libraries <http://platformio.org/lib>`_
* `Development Platforms <http://platformio.org/platforms>`_
* `Frameworks <http://platformio.org/frameworks>`_
* `Embedded Boards <http://platformio.org/boards>`_
* ``atmelavr`` `Atmel AVR <http://en.wikipedia.org/wiki/Atmel_AVR>`_
(including `Arduino <http://www.arduino.cc>`_ based boards)
* ``timsp430`` `TI MSP430 <http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/overview.page>`_
(including `MSP430 LaunchPads <http://www.ti.com/ww/en/launchpad/launchpads-msp430.html>`_)
* ``titiva`` `TI TIVA C <http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/overview.page>`_
(including `TIVA C Series LaunchPads <http://www.ti.com/ww/en/launchpad/launchpads-connected.html>`_)
Solutions
---------
* `Library Manager <http://docs.platformio.org/page/librarymanager/index.html>`_
* `Cloud IDEs Integration <http://platformio.org/pricing#solution-cloud-ide>`_
* `Standalone IDEs Integration <http://docs.platformio.org/page/ide.html#other-ide>`_
* `Continuous Integration <http://docs.platformio.org/page/ci/index.html>`_
See project `examples with screenshots <https://github.com/ivankravets/platformio/tree/develop/examples>`_.
Development Platforms
---------------------
* `Atmel AVR <http://platformio.org/platforms/atmelavr>`_
* `Atmel SAM <http://platformio.org/platforms/atmelsam>`_
* `Espressif 32 <http://platformio.org/platforms/espressif32>`_
* `Espressif 8266 <http://platformio.org/platforms/espressif8266>`_
* `Freescale Kinetis <http://platformio.org/platforms/freescalekinetis>`_
* `Intel ARC32 <http://platformio.org/platforms/intel_arc32>`_
* `Lattice iCE40 <http://platformio.org/platforms/lattice_ice40>`_
* `Maxim 32 <http://platformio.org/platforms/maxim32>`_
* `Microchip PIC32 <http://platformio.org/platforms/microchippic32>`_
* `Nordic nRF51 <http://platformio.org/platforms/nordicnrf51>`_
* `Nordic nRF52 <http://platformio.org/platforms/nordicnrf52>`_
* `NXP LPC <http://platformio.org/platforms/nxplpc>`_
* `Silicon Labs EFM32 <http://platformio.org/platforms/siliconlabsefm32>`_
* `ST STM32 <http://platformio.org/platforms/ststm32>`_
* `Teensy <http://platformio.org/platforms/teensy>`_
* `TI MSP430 <http://platformio.org/platforms/timsp430>`_
* `TI Tiva <http://platformio.org/platforms/titiva>`_
* `WIZNet W7500 <http://platformio.org/platforms/wiznet7500>`_
IDE Integration
---------------
* [Eclipse] `Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO <http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio>`_
Embedded Platform Boards
------------------------
**PlatformIO** has pre-configured settings for most popular platform boards. You
have no need to specify in ``platformio.ini`` type or frequency of MCU, upload
protocol or etc. Please use ``board`` option (for
`example <https://github.com/ivankravets/platformio/blob/develop/examples/wiring-blink/platformio.ini>`_).
Platform ``atmelavr``
~~~~~~~~~~~~~~~~~~~~~
* ``diecimilaatmega168`` Arduino Duemilanove or Diecimila (ATmega168)
* ``diecimilaatmega328`` Arduino Duemilanove or Diecimila (ATmega328)
* ``fio`` Arduino Fio
* ``leonardo`` Arduino Leonardo
* ``LilyPadUSB`` Arduino LilyPad USB
* ``lilypadatmega168`` Arduino LilyPad (ATmega168)
* ``lilypadatmega328`` Arduino LilyPad (ATmega328)
* ``megaatmega1280`` Arduino Mega (ATmega1280)
* ``megaatmega2560`` Arduino Mega (ATmega2560)
* ``megaADK`` Arduino Mega ADK
* ``micro`` Arduino Micro
* ``miniatmega168`` Arduino Mini (ATmega168)
* ``miniatmega328`` Arduino Mini (ATmega328)
* ``nanoatmega168`` Arduino Nano (ATmega168)
* ``nanoatmega328`` Arduino Nano (ATmega328)
* ``pro8MHzatmega168`` Arduino Pro or Pro Mini (ATmega168, 3.3V, 8MHz)
* ``pro16MHzatmega168`` Arduino Pro or Pro Mini (ATmega168, 5V, 16MHz)
* ``pro8MHzatmega328`` Arduino Pro or Pro Mini (ATmega328, 3.3V, 8MHz)
* ``pro16MHzatmega328`` Arduino Pro or Pro Mini (ATmega328, 5V, 16MHz)
* ``uno`` Arduino Uno
* ``raspduino`` Raspduino
* ``328p8m`` Microduino Core (ATmega328P, 3.3V, 8MHz)
* ``328p16m`` Microduino Core (Atmega328P, 5V, 16MHz)
* ``168pa8m`` Microduino Core (ATmega168PA, 3.3V, 8MHz)
* ``168pa16m`` Microduino Core (ATmega168PA, 5V, 16MHz)
* ``644pa8m`` Microduino Core+ (ATmega644PA, 3.3V, 8MHz)
* ``644pa16m`` Microduino Core+ (ATmega644PA, 5V, 16MHz)
* ``1284p8m`` Microduino-Core+ (ATmega1284P, 3.3V, 8MHz)
* ``1284p16m`` Microduino-Core+ (ATmega1284P, 5V, 16MHz)
* ``32u416m`` Microduino-Core USB (ATmega32U4, 5V, 16MHz)
Platform ``timsp430``
~~~~~~~~~~~~~~~~~~~~~
* ``lpmsp430g2231`` TI LaunchPad MSP430 (msp430g2231)
* ``lpmsp430g2452`` TI LaunchPad MSP430 (msp430g2452)
* ``lpmsp430g2553`` TI LaunchPad MSP430 (msp430g2553)
* ``lpmsp430f5529`` TI LaunchPad MSP430 (msp430f5529, 16MHz)
* ``lpmsp430f5529_25`` TI LaunchPad MSP430 (msp430f5529, 25MHz)
* ``lpmsp430fr5969`` TI LaunchPad MSP430 (msp430fr5969)
* ``lpmsp430fr5739`` TI FraunchPad MSP430 (msp430fr5739)
Platform ``titiva``
~~~~~~~~~~~~~~~~~~~
* ``lplm4f120h5qr`` TI Stellaris LM4F120 LaunchPad
* ``lptm4c1230c3pm`` TI Tiva C Series TM4C123G LaunchPad
* ``lptm4c1294ncpdt`` TI Tiva C Series TM4C1294 Connected LaunchPad
Python & OS Support
-------------------
**PlatformIO** is written in `Python <https://www.python.org>`_ and works with
versions 2.6 and 2.7 on Unix/Linux, OS X, and Windows.
Quickstart
Frameworks
----------
.. code-block:: bash
* `Arduino <http://platformio.org/frameworks/arduino>`_
* `ARTIK SDK <http://platformio.org/frameworks/artik-sdk>`_
* `CMSIS <http://platformio.org/frameworks/cmsis>`_
* `Energia <http://platformio.org/frameworks/energia>`_
* `ESP-IDF <http://platformio.org/frameworks/espidf>`_
* `libOpenCM3 <http://platformio.org/frameworks/libopencm3>`_
* `mbed <http://platformio.org/frameworks/mbed>`_
* `Pumbaa <http://platformio.org/frameworks/pumbaa>`_
* `Simba <http://platformio.org/frameworks/simba>`_
* `SPL <http://platformio.org/frameworks/spl>`_
* `STM32Cube <http://platformio.org/frameworks/stm32cube>`_
* `WiringPi <http://platformio.org/frameworks/wiringpi>`_
# Print all availalbe development platforms for installing
$ platformio search all
# Install new development platform
$ platformio install SomePlatform
# Initialize new platformio based project
$ cd /path/to/empty/directory
$ platformio init
# Process the project's environments
$ platformio run
For more detailed information please follow to `Installation <#installation>`_
and `Documentation <#documentation>`_ sections.
Installation
Contributing
------------
All commands below should be executed in
`Command-line <http://en.wikipedia.org/wiki/Command-line_interface>`_
application in your *OS*:
See `contributing guidelines <https://github.com/platformio/platformio/blob/develop/CONTRIBUTING.md>`_.
* *Unix/Linux/OS X* this is *Terminal* application.
* *Windows* this is
`Command Prompt <http://en.wikipedia.org/wiki/Command_Prompt>`_ (``cmd.exe``)
application.
Also, the `Python Interpreter <https://www.python.org/downloads/>`_ (2.6 or 2.7)
is required.
Super-Quick
~~~~~~~~~~~
To install or upgrade *PlatformIO*, download
`get-platformio.py <https://raw.githubusercontent.com/ivankravets/platformio/develop/scripts/get-platformio.py>`_ script.
Then run the following (which may require administrator access):
.. code-block:: bash
$ python get-platformio.py
An alternative short version for *Mac/Linux* users:
.. code-block:: bash
$ curl -L http://bit.ly/1lpanta | python
On *Windows OS* it may look like:
.. code-block:: bash
C:\Python27\python.exe get-platformio.py
Full Guide
~~~~~~~~~~
1. Check a ``python`` version (only 2.6-2.7 is supported):
.. code-block:: bash
$ python --version
*Windows OS* Users only:
* `Download Python 2.7 <https://www.python.org/downloads/>`_ and install it.
* Add to PATH system variable ``;C:\Python27;C:\Python27\Scripts;`` and
reopen *Command Prompt* (``cmd.exe``) application. Please read this
article `How to set the path and environment variables in Windows
<http://www.computerhope.com/issues/ch000549.htm>`_.
2. Check a ``pip`` tool for installing and managing *Python* packages:
.. code-block:: bash
$ pip search platformio
You should see short information about ``platformio`` package.
If your computer does not recognize ``pip`` command, try to install it first
using `these instructions <http://www.pip-installer.org/en/latest/installing.html>`_.
3. Install a ``platformio`` and related packages:
.. code-block:: bash
$ pip install platformio && pip install --egg scons
For upgrading the ``platformio`` to new version please use this command:
.. code-block:: bash
$ pip install -U platformio
Documentation
-------------
To print all available commands and options:
.. code-block:: bash
$ platformio --help
$ platformio COMMAND --help
# Example
$ platformio --help
Usage: platformio [OPTIONS] COMMAND [ARGS]...
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
init Initialize new PlatformIO based project
install Install new platforms
list List installed platforms
run Process project environments
search Search for development platforms
serialports List Serial ports
show Show details about an installed platforms
uninstall Uninstall platforms
update Update installed platforms
``platformio init``
~~~~~~~~~~~~~~~~~~~
Initialize new PlatformIO based project.
.. code-block:: bash
# Change directory to future project
$ cd /path/to/empty/directory
$ platformio init
# Example
$ platformio init
Project has been initialized!
Please put your source code to `src` directory, external libraries to `lib`
and setup environments in `platformio.ini` file.
Then process project with `platformio run` command.
After this command ``platformio`` will create:
* ``.pioenvs`` - a temporary working directory.
* ``lib`` - a directory for project specific libraries. PlatformIO will
compile their to static libraries and link to executable file
* ``src`` - a source directory. Put code here.
* ``platformio.ini`` - a configuration file for project
``platformio install``
~~~~~~~~~~~~~~~~~~~~~~
*PlatformIO* has pre-built development platforms with related packages. You
can install one of them:
.. code-block:: bash
$ platformio install SomePlatform
$ platformio install SomePlatform --with-package=toolchain|uploader|PackageName
$ platformio install SomePlatform --without-package=toolchain|uploader|PackageName
$ platformio install SomePlatform --skip-default-package
# Example
$ platformio install timsp430
Installing toolchain-timsp430 package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
Installing tool-mspdebug package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
Installing framework-energiamsp430 package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
The platform 'timsp430' has been successfully installed!
# Skip default packages and install uploader utility only
$ platformio install timsp430 --skip-default-package --with-package=uploader
Installing tool-mspdebug package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
The platform 'timsp430' has been successfully installed!
``platformio list``
~~~~~~~~~~~~~~~~~~~
To list installed platforms:
.. code-block:: bash
$ platformio list
# Example
$ platformio list
timsp430 with packages: toolchain-timsp430, tool-mspdebug, framework-energiamsp430
``platformio run``
~~~~~~~~~~~~~~~~~~
Process the project's environments defined in ``platformio.ini`` file:
.. code-block:: bash
$ platformio run
# Example
$ platformio run
Processing arduino_pro5v environment:
scons: `.pioenvs/arduino_pro5v/firmware.elf' is up to date.
scons: `.pioenvs/arduino_pro5v/firmware.hex' is up to date.
Processing launchpad_msp430g2 environment:
scons: `.pioenvs/launchpad_msp430g2/firmware.elf' is up to date.
scons: `.pioenvs/launchpad_msp430g2/firmware.hex' is up to date.
Processing launchpad_lm4f120 environment:
scons: `.pioenvs/launchpad_lm4f120/firmware.elf' is up to date.
scons: `.pioenvs/launchpad_lm4f120/firmware.hex' is up to date
Process specific environments:
.. code-block:: bash
$ platformio run -e myenv1 -e myenv2
# Example
$ platformio run -e arduino_pro5v -e launchpad_lm4f120
Processing arduino_pro5v environment:
scons: `.pioenvs/arduino_pro5v/firmware.elf' is up to date.
scons: `.pioenvs/arduino_pro5v/firmware.hex' is up to date.
Processing launchpad_lm4f120 environment:
scons: `.pioenvs/launchpad_lm4f120/firmware.elf' is up to date.
scons: `.pioenvs/launchpad_lm4f120/firmware.hex' is up to date.
Process specific target:
.. code-block:: bash
$ platformio run -t clean
$ platformio run -t upload --upload-port=/dev/ttyUSBX
# Example
platformio run -t clean
Processing arduino_pro5v environment:
Removed .pioenvs/arduino_pro5v/src/main.o
...
Removed .pioenvs/arduino_pro5v/firmware.hex
Processing launchpad_msp430g2 environment:
Removed .pioenvs/launchpad_msp430g2/src/main.o
...
Removed .pioenvs/launchpad_msp430g2/firmware.hex
Processing launchpad_lm4f120 environment:
Removed .pioenvs/launchpad_lm4f120/src/main.o
...
Removed .pioenvs/launchpad_lm4f120/firmware.hex
Mix environments and targets:
.. code-block:: bash
$ platformio run -e myembeddeddevice -t upload
# Example
$ platformio run -e launchpad_msp430g2 -t upload
Processing launchpad_msp430g2 environment:
/Users/ikravets/.platformio/timsp430/tools/mspdebug/mspdebug rf2500 --force-reset "prog .pioenvs/launchpad_msp430g2/firmware.hex"
MSPDebug version 0.20 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2012 Daniel Beer <dlbeer@gmail.com>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Trying to open interface 1 on 009
Initializing FET...
FET protocol version is 30394216
Configured for Spy-Bi-Wire
Sending reset...
Set Vcc: 3000 mV
Device ID: 0x2553
Code start address: 0xc000
Code size : 16384 byte = 16 kb
RAM start address: 0x200
RAM end address: 0x3ff
RAM size : 512 byte = 0 kb
Device: MSP430G2553/G2403
Code memory starts at 0xc000
Number of breakpoints: 2
Chip ID data: 25 53
Erasing...
Programming...
Writing 646 bytes at c000...
Writing 32 bytes at ffe0...
Done, 678 bytes total
``platformio search``
~~~~~~~~~~~~~~~~~~~~~
Search for development platforms:
.. code-block:: bash
# Print all available development platforms
$ platformio search all
# Filter platforms by "Query"
$ platformio search "Query"
# Example
$ platformio search ti
timsp430 - An embedded platform for TI MSP430 microcontrollers (with Energia Framework)
titiva - An embedded platform for TI TIVA C ARM microcontrollers (with Energia Framework)
$ platformio search arduino
atmelavr - An embedded platform for Atmel AVR microcontrollers (with Arduino Framework)
``platformio serialports``
~~~~~~~~~~~~~~~~~~~~~~~~~~
To list available `Serial Ports <http://en.wikipedia.org/wiki/Serial_port>`_:
.. code-block:: bash
$ platformio serialports
# Example (Posix)
$ platformio serialports
/dev/cu.SLAB_USBtoUART
----------
Hardware ID: USB VID:PID=10c4:ea60 SNR=0001
Description: CP2102 USB to UART Bridge Controller
/dev/cu.uart-1CFF4676258F4543
----------
Hardware ID: USB VID:PID=451:f432 SNR=1CFF4676258F4543
Description: Texas Instruments MSP-FET430UIF
# Example (Windows)
$ platformio serialports
COM4
----------
Hardware ID: USB VID:PID=0451:F432
Description: MSP430 Application UART (COM4)
COM3
----------
Hardware ID: USB VID:PID=10C4:EA60 SNR=0001
Description: Silicon Labs CP210x USB to UART Bridge (COM3)
``platformio show``
~~~~~~~~~~~~~~~~~~~
To show details about an installed platform:
.. code-block:: bash
$ platformio show SomePlatform
# Example
$ platformio show atmelavr
atmelavr - An embedded platform for Atmel AVR microcontrollers (with Arduino Framework)
----------
Package: toolchain-atmelavr
Alias: toolchain
Location: /Users/ikravets/.platformio/atmelavr/tools/toolchain
Version: 1
----------
Package: tool-avrdude
Alias: uploader
Location: /Users/ikravets/.platformio/atmelavr/tools/avrdude
Version: 1
----------
Package: framework-arduinoavr
Location: /Users/ikravets/.platformio/atmelavr/frameworks/arduino
Version: 1
``platformio uninstall``
~~~~~~~~~~~~~~~~~~~~~~~~
To uninstall platform:
.. code-block:: bash
$ platformio uninstall SomePlatform
# Example
$ platformio uninstall timsp430
Uninstalling toolchain-timsp430 package: [OK]
Uninstalling tool-mspdebug package: [OK]
Uninstalling framework-energiamsp430 package: [OK]
The platform 'timsp430' has been successfully uninstalled!
``platformio update``
~~~~~~~~~~~~~~~~~~~~~~~~
To check or update installed platforms:
.. code-block:: bash
$ platformio update
# Example
$ platformio update
Platform atmelavr
--------
Updating toolchain-atmelavr package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-arduinoavr package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-avrdude package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform timsp430
--------
Updating toolchain-timsp430 package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-mspdebug package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-energiamsp430 package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform titiva
--------
Updating toolchain-gccarmnoneeabi package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-lm4flash package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-energiativa package:
Versions: Current=1, Latest=1 [Up-to-date]
Questions & Bugs
----------------
Please use the
`issue tracker <https://github.com/ivankravets/platformio/issues>`_
to ask questions or report bugs.
Licence
License
-------
Copyright (C) 2014 Ivan Kravets
Copyright (c) 2014-present PlatformIO <contact@platformio.org>
Licenced under the MIT Licence.
The PlatformIO is licensed under the permissive Apache 2.0 license,
so you can use it in both commercial and personal projects with confidence.

1
docs Submodule

Submodule docs added at 2e04299a17

1
examples Submodule

Submodule examples added at 2d08187562

View File

@@ -1,20 +0,0 @@
Arduino Example: Build code with internal library
=================================================
1. Download ``platformio``
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
2. Extract ZIP archive
3. Then run these commands:
.. code-block:: bash
# Change directory to example
$ cd platformio-develop/examples/arduino-internal-library/
# Install Atmel AVR development platform with Arduino Framework
$ platformio install atmelavr
# Process example project
$ platformio run
.. image:: console-result.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 806 KiB

View File

@@ -1,7 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:arduino_pro5v]
platform = atmelavr
framework = arduino
board = pro16MHzatmega168

View File

@@ -1,51 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
/*
* EEPROM Read
*
* Reads the value of each byte of the EEPROM and prints it
* to the computer.
* This example code is in the public domain.
*
* https://github.com/arduino/Arduino/blob/master/libraries/EEPROM/examples/eeprom_read/eeprom_read.ino
*/
#include <Arduino.h>
#include <EEPROM.h>
// start reading from the first byte (address 0) of the EEPROM
int address = 0;
byte value;
void setup()
{
// initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
}
void loop()
{
// read a byte from the current address of the EEPROM
value = EEPROM.read(address);
Serial.print(address);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
// advance to the next address of the EEPROM
address = address + 1;
// there are only 512 bytes of EEPROM, from 0 to 511, so if we're
// on address 512, wrap around to address 0
if (address == 512)
address = 0;
delay(500);
}

View File

@@ -1,20 +0,0 @@
Atmel AVR: Native Blink Example
===============================
1. Download ``platformio``
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
2. Extract ZIP archive
3. Then run these commands:
.. code-block:: bash
# Change directory to example
$ cd platformio-develop/examples/atmelavr-native-blink/
# Install Atmel AVR development platform
$ platformio install atmelavr
# Process example project
$ platformio run
.. image:: console-result.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

View File

@@ -1,14 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:arduino_pro5v]
platform = atmelavr
board_mcu = atmega168
board_f_cpu = 16000000L
upload_port = /dev/tty.SLAB_USBtoUART
# upload_port = COM3
upload_protocol = arduino
upload_speed = 19200
targets = upload

View File

@@ -1,23 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
// make the LED pin an output for PORTB5
DDRB = 1 << 5;
while (1)
{
_delay_ms(500);
// toggle the LED
PORTB ^= 1 << 5;
}
return 0;
}

View File

@@ -1,14 +0,0 @@
Eclipse IDE Integration
=======================
The detailed information and steps are described in this article:
`Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO <http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio>`_.
.. image:: http://www.ikravets.com/wp-content/uploads/2014/06/eclipse_build_arduino_pro5v-1024x822.png
:width: 850px
:target: http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio
.. image:: http://www.ikravets.com/wp-content/uploads/2014/06/eclipse_debugging_result_1-1024x775.png
:width: 850px
:target: http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio

View File

@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.910961921">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.910961921" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.910961921" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.910961921." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.952979152" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.952979152.52310970" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.1519453406" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1409095472" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1624502120" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.239157887" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/frameworks/arduino/cores/arduino&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.922107295" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.149990277" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.54121539" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1096940598" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/frameworks/arduino/cores/arduino&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1198905600" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.762536863" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1310559623" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.41298875" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/frameworks/arduino/cores/arduino&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.884639970" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.549319812" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="arduino_pro5.null.189551033" name="arduino_pro5"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.910961921">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/arduino_pro5"/>
</configuration>
</storageModule>
</cproject>

View File

@@ -1,5 +0,0 @@
all:
platformio run -t upload
clean:
platformio run -t clean

View File

@@ -1,8 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:arduino_pro5v]
platform = atmelavr
framework = arduino
board = pro16MHzatmega168
upload_port = /dev/tty.SLAB_USBtoUART

View File

@@ -1,20 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include "Arduino.h"
#define WLED 13 // Most Arduino boards already have an LED attached to pin 13 on the board itself
void setup()
{
pinMode(WLED, OUTPUT); // set pin as output
}
void loop()
{
digitalWrite(WLED, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(WLED, LOW); // set the LED off
delay(1000); // wait for a second
}

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.1706826288">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1706826288" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1706826288" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.1706826288." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.944229927" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.944229927.1146791472" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.81097189" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.615700392" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.509191184" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1976688999" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1146079252" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1061741986" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.524184308" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1379816017" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1180078676" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.492516621" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.746817635" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.905883681" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/atmelavr/tools/toolchain/avr/include&quot;"/>
</option>
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1589314232" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__AVR_ATmega168__"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.247974714" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="test.null.312168076" name="test"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.1706826288">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/test"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cproject>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>atmelavr_atmega168</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -1,67 +0,0 @@
eclipse.preferences.version=1
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.checkers.noreturn=Error
org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true}
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false}
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false}
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")}
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}

View File

@@ -1,5 +0,0 @@
all:
platformio run -t upload
clean:
platformio run -t clean

View File

@@ -1,12 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:atmelavr_atmega168]
platform = atmelavr
board_mcu = atmega168
board_f_cpu = 16000000L
upload_port = /dev/tty.SLAB_USBtoUART
# upload_port = COM3
upload_protocol = arduino
upload_speed = 19200

View File

@@ -1,23 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
// make the LED pin an output for PORTB5
DDRB = 1 << 5;
while (1)
{
_delay_ms(500);
// toggle the LED
PORTB ^= 1 << 5;
}
return 0;
}

View File

@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.1778616297">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1778616297" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1778616297" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.1778616297." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.576447412" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.576447412.203226592" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.592280532" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.251286138" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1824859462" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.2021826184" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/timsp430/tools/toolchain/msp430/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1509314343" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1251065831" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1876118829" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/timsp430/tools/toolchain/msp430/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.518683230" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.847615484" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1922525168" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/timsp430/tools/toolchain/msp430/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.68822385" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="tilaunchpad_msp430g2.null.26341321" name="tilaunchpad_msp430g2"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.1778616297">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope"/>
</cproject>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>tilaunchpad_msp430g2</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -1,5 +0,0 @@
all:
platformio run -t upload
clean:
platformio run -t clean

View File

@@ -1,9 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:launchpad_msp430g2]
platform = timsp430
board_mcu = msp430g2553
board_f_cpu = 16000000L
upload_protocol = rf2500

View File

@@ -1,26 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
// make the LED pin an output for P1.0
P1DIR |= 0x01;
volatile int i;
while (1)
{
for (i = 0; i < 10000; i++);
// toggle the LED
P1OUT ^= 0x01;
}
return 0;
}

View File

@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.18931736">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.18931736" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.18931736" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.18931736." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.946409409" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.946409409.264614082" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.2099118713" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1860044306" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.490604788" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1186638432" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/frameworks/energia/cores/lm4f&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/tools/toolchain/arm-none-eabi/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1338936035" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1620533967" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1007143336" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/frameworks/energia/cores/lm4f&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/tools/toolchain/arm-none-eabi/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.2051673558" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.549164281" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.454536693" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/frameworks/energia/cores/lm4f&quot;"/>
<listOptionValue builtIn="false" value="&quot;${HOME}/.platformio/titiva/tools/toolchain/arm-none-eabi/include&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1468046922" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="titiva_lm4f120h5qr.null.1743670775" name="titiva_lm4f120h5qr"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.18931736">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope"/>
</cproject>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>titiva_lm4f120</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -1,5 +0,0 @@
all:
platformio run -t upload
clean:
platformio run -t clean

View File

@@ -1,8 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:launchpad_lm4f120]
platform = titiva
framework = energia
board = lplm4f120h5qr
targets = upload

View File

@@ -1,42 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#define false 0
#define true 1
typedef int bool;
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#define LED_RED GPIO_PIN_1
#define LED_BLUE GPIO_PIN_2
#define LED_GREEN GPIO_PIN_3
int main(void)
{
SysCtlClockSet(
SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN);
while (1)
{
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_RED);
SysCtlDelay(3000000);
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_BLUE);
SysCtlDelay(3000000);
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_GREEN);
SysCtlDelay(3000000);
}
return 0;
}
// hook for Energia main.cpp where these methods are defined
void setup() {}
void loop() {}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

View File

@@ -1,20 +0,0 @@
TI MSP430: Native Blink Example
===============================
1. Download ``platformio``
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
2. Extract ZIP archive
3. Then run these commands:
.. code-block:: bash
# Change directory to example
$ cd platformio-develop/examples/timsp430-native-blink/
# Install TI MSP430 development platform
$ platformio install timsp430
# Process example project
$ platformio run
.. image:: console-result.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

View File

@@ -1,11 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:launchpad_msp430g2]
platform = timsp430
board_mcu = msp430g2553
board_f_cpu = 16000000L
upload_protocol = rf2500
targets = upload

View File

@@ -1,26 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
// make the LED pin an output for P1.0
P1DIR |= 0x01;
volatile int i;
while (1)
{
for (i = 0; i < 10000; i++);
// toggle the LED
P1OUT ^= 0x01;
}
return 0;
}

View File

@@ -1,20 +0,0 @@
TI TIVA C ARM Cortex-M4: Native Blink Example
=============================================
1. Download ``platformio``
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
2. Extract ZIP archive
3. Then run these commands:
.. code-block:: bash
# Change directory to example
$ cd platformio-develop/examples/titiva-native-blink/
# Install TI TIVA development platform
$ platformio install titiva
# Process example project
$ platformio run
.. image:: console-result.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

View File

@@ -1,8 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:launchpad_lm4f120]
platform = titiva
framework = energia
board = lplm4f120h5qr
targets = upload

View File

@@ -1,39 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#define LED_RED GPIO_PIN_1
#define LED_BLUE GPIO_PIN_2
#define LED_GREEN GPIO_PIN_3
int main(void)
{
SysCtlClockSet(
SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN);
while (1)
{
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_RED);
SysCtlDelay(3000000);
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_BLUE);
SysCtlDelay(3000000);
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_GREEN);
SysCtlDelay(3000000);
}
return 0;
}
// hook for Energia main.cpp where these methods are defined
void setup() {}
void loop() {}

View File

@@ -1,22 +0,0 @@
Wiring Framework (Arduino + Energia) Blink Example
==================================================
1. Download ``platformio``
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
2. Extract ZIP archive
3. Then run these commands:
.. code-block:: bash
# Change directory to example
$ cd platformio-develop/examples/wiring-blink/
# Install Atmel AVR development platform with Arduino Framework
# Install TI MSP430 development platform with Energia Framework
# Install TI TIVA development platform with Energia Framework
$ platformio install atmelavr timsp430 titiva
# Process example project
$ platformio run
.. image:: console-result.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

View File

@@ -1,19 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
[env:arduino_pro5v]
platform = atmelavr
framework = arduino
board = pro16MHzatmega168
upload_port = /dev/tty.SLAB_USBtoUART
[env:launchpad_msp430g2]
platform = timsp430
framework = energia
board = lpmsp430g2553
[env:launchpad_lm4f120]
platform = titiva
framework = energia
board = lplm4f120h5qr
build_flags = "-DLED_PIN=GREEN_LED"

View File

@@ -1,29 +0,0 @@
/**
* Copyright (C) Ivan Kravets <me@ikravets.com>
* See LICENSE for details.
*/
/**
Turns ON and OFF the Wiring compatible board LED,
with intervals of 1 second (1000 milliseconds)
*/
#include "Arduino.h"
#ifndef LED_PIN
#define LED_PIN 13 // Most Arduino boards already have an LED attached to pin 13 on the board itself
#endif
void setup()
{
pinMode(LED_PIN, OUTPUT); // set pin as output
}
void loop()
{
digitalWrite(LED_PIN, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(LED_PIN, LOW); // set the LED off
delay(1000); // wait for a second
}

View File

@@ -1,18 +1,42 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
VERSION = (0, 4, 0)
import sys
VERSION = (3, 5, 1)
__version__ = ".".join([str(s) for s in VERSION])
__title__ = "platformio"
__description__ = ("A console tool to build code with different "
"development platforms")
__url__ = "https://github.com/ivankravets/platformio"
__description__ = (
"An open source ecosystem for IoT development. "
"Cross-platform IDE and unified debugger. "
"Remote unit testing and firmware updates. "
"Arduino, ARM mbed, Espressif (ESP8266/ESP32), STM32, PIC32, nRF51/nRF52, "
"FPGA, CMSIS, SPL, AVR, Samsung ARTIK, libOpenCM3")
__url__ = "http://platformio.org"
__author__ = "Ivan Kravets"
__email__ = "me@ikravets.com"
__license__ = "MIT Licence"
__copyright__ = "Copyright (C) 2014 Ivan Kravets"
__license__ = "Apache Software License"
__copyright__ = "Copyright 2014-present PlatformIO"
__pkgmanifesturl__ = "http://platformio.ikravets.com/packages/manifest.json"
__apiurl__ = "https://api.platformio.org"
if sys.version_info < (2, 7, 0) or sys.version_info >= (3, 0, 0):
msg = ("PlatformIO Core v%s does not run under Python version %s.\n"
"Minimum supported version is 2.7, please upgrade Python.\n"
"Python 3 is not yet supported.\n")
sys.stderr.write(msg % (__version__, sys.version))
sys.exit(1)

View File

@@ -1,23 +1,34 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from os import listdir
import os
import sys
from os.path import join
from sys import exit as sys_exit
from platform import system
from traceback import format_exc
from click import command, MultiCommand, version_option
import click
from platformio import __version__
from platformio.exception import PlatformioException, UnknownCLICommand
from platformio import __version__, exception, maintenance
from platformio.util import get_source_dir
class PlatformioCLI(MultiCommand):
class PlatformioCLI(click.MultiCommand): # pylint: disable=R0904
def list_commands(self, ctx):
cmds = []
for filename in listdir(join(get_source_dir(), "commands")):
for filename in os.listdir(join(get_source_dir(), "commands")):
if filename.startswith("__init__"):
continue
if filename.endswith(".py"):
@@ -25,30 +36,121 @@ class PlatformioCLI(MultiCommand):
cmds.sort()
return cmds
def get_command(self, ctx, name):
def get_command(self, ctx, cmd_name):
mod = None
try:
mod = __import__("platformio.commands." + name,
None, None, ["cli"])
mod = __import__("platformio.commands." + cmd_name, None, None,
["cli"])
except ImportError:
raise UnknownCLICommand(name)
try:
return self._handle_obsolate_command(cmd_name)
except AttributeError:
raise click.UsageError('No such command "%s"' % cmd_name, ctx)
return mod.cli
@staticmethod
def _handle_obsolate_command(name):
if name == "platforms":
from platformio.commands import platform
return platform.cli
elif name == "serialports":
from platformio.commands import device
return device.cli
raise AttributeError()
@command(cls=PlatformioCLI)
@version_option(__version__, prog_name="PlatformIO")
def cli():
pass
@click.command(
cls=PlatformioCLI,
context_settings=dict(help_option_names=["-h", "--help"]))
@click.version_option(__version__, prog_name="PlatformIO")
@click.option(
"--force",
"-f",
is_flag=True,
help="Force to accept any confirmation prompts.")
@click.option("--caller", "-c", help="Caller ID (service).")
@click.pass_context
def cli(ctx, force, caller):
maintenance.on_platformio_start(ctx, force, caller)
@cli.resultcallback()
@click.pass_context
def process_result(ctx, result, force, caller): # pylint: disable=W0613
maintenance.on_platformio_end(ctx, result)
def configure():
if "cygwin" in system().lower():
raise exception.CygwinEnvDetected()
# https://urllib3.readthedocs.org
# /en/latest/security.html#insecureplatformwarning
try:
import urllib3
urllib3.disable_warnings()
except (AttributeError, ImportError):
pass
# handle PLATFORMIO_FORCE_COLOR
if str(os.getenv("PLATFORMIO_FORCE_COLOR", "")).lower() == "true":
try:
# pylint: disable=protected-access
click._compat.isatty = lambda stream: True
except: # pylint: disable=bare-except
pass
# Handle IOError issue with VSCode's Terminal (Windows)
click_echo_origin = [click.echo, click.secho]
def _safe_echo(origin, *args, **kwargs):
try:
click_echo_origin[origin](*args, **kwargs)
except IOError:
(sys.stderr.write if kwargs.get("err") else
sys.stdout.write)("%s\n" % (args[0] if args else ""))
click.echo = lambda *args, **kwargs: _safe_echo(0, *args, **kwargs)
click.secho = lambda *args, **kwargs: _safe_echo(1, *args, **kwargs)
def main():
try:
cli()
except Exception as e: # pylint: disable=W0703
if isinstance(e, PlatformioException):
sys_exit("Error: " + str(e))
else:
print format_exc()
configure()
cli(None, None, None)
except Exception as e: # pylint: disable=broad-except
if not isinstance(e, exception.ReturnErrorCode):
maintenance.on_platformio_exception(e)
error_str = "Error: "
if isinstance(e, exception.PlatformioException):
error_str += str(e)
else:
error_str += format_exc()
error_str += """
============================================================
An unexpected error occurred. Further steps:
* Verify that you have the latest version of PlatformIO using
`pip install -U platformio` command
* Try to find answer in FAQ Troubleshooting section
http://docs.platformio.org/page/faq.html
* Report this problem to the developers
https://github.com/platformio/platformio-core/issues
============================================================
"""
click.secho(error_str, fg="red", err=True)
return int(str(e)) if str(e).isdigit() else 1
return 0
def debug_gdb_main():
sys.argv = [sys.argv[0], "debug", "--interface", "gdb"] + sys.argv[1:]
return main()
if __name__ == "__main__":
sys_exit(main())
sys.exit(main())

368
platformio/app.py Normal file
View File

@@ -0,0 +1,368 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import hashlib
import json
import os
import uuid
from copy import deepcopy
from os import environ, getenv, listdir, remove
from os.path import abspath, dirname, expanduser, getmtime, isdir, isfile, join
from time import time
import requests
from lockfile import LockFailed, LockFile
from platformio import __version__, exception, util
def projects_dir_validate(projects_dir):
assert isdir(projects_dir)
return abspath(projects_dir)
DEFAULT_SETTINGS = {
"auto_update_libraries": {
"description": "Automatically update libraries (Yes/No)",
"value": False
},
"auto_update_platforms": {
"description": "Automatically update platforms (Yes/No)",
"value": False
},
"check_libraries_interval": {
"description": "Check for the library updates interval (days)",
"value": 7
},
"check_platformio_interval": {
"description": "Check for the new PlatformIO interval (days)",
"value": 3
},
"check_platforms_interval": {
"description": "Check for the platform updates interval (days)",
"value": 7
},
"enable_cache": {
"description": "Enable caching for API requests and Library Manager",
"value": True
},
"enable_ssl": {
"description": "Enable SSL for PlatformIO Services",
"value": False
},
"enable_telemetry": {
"description":
("Telemetry service <http://docs.platformio.org/page/"
"userguide/cmd_settings.html?#enable-telemetry> (Yes/No)"),
"value":
True
},
"force_verbose": {
"description": "Force verbose output when processing environments",
"value": False
},
"projects_dir": {
"description": "Default location for PlatformIO projects (PIO Home)",
"value": join(expanduser("~"), "Documents", "PlatformIO", "Projects"),
"validator": projects_dir_validate
},
}
SESSION_VARS = {"command_ctx": None, "force_option": False, "caller_id": None}
class State(object):
def __init__(self, path=None, lock=False):
self.path = path
self.lock = lock
if not self.path:
self.path = join(util.get_home_dir(), "appstate.json")
self._state = {}
self._prev_state = {}
self._lockfile = None
def __enter__(self):
try:
self._lock_state_file()
if isfile(self.path):
self._state = util.load_json(self.path)
except exception.PlatformioException:
self._state = {}
self._prev_state = deepcopy(self._state)
return self._state
def __exit__(self, type_, value, traceback):
if self._prev_state != self._state:
try:
with open(self.path, "w") as fp:
if "dev" in __version__:
json.dump(self._state, fp, indent=4)
else:
json.dump(self._state, fp)
except IOError:
raise exception.HomeDirPermissionsError(util.get_home_dir())
self._unlock_state_file()
def _lock_state_file(self):
if not self.lock:
return
self._lockfile = LockFile(self.path)
if self._lockfile.is_locked() and \
(time() - getmtime(self._lockfile.lock_file)) > 10:
self._lockfile.break_lock()
try:
self._lockfile.acquire()
except LockFailed:
raise exception.HomeDirPermissionsError(dirname(self.path))
def _unlock_state_file(self):
if self._lockfile:
self._lockfile.release()
class ContentCache(object):
def __init__(self, cache_dir=None):
self.cache_dir = None
self._db_path = None
self._lockfile = None
self.cache_dir = cache_dir or join(util.get_home_dir(), ".cache")
self._db_path = join(self.cache_dir, "db.data")
def __enter__(self):
self.delete()
return self
def __exit__(self, type_, value, traceback):
pass
def _lock_dbindex(self):
if not self.cache_dir:
os.makedirs(self.cache_dir)
self._lockfile = LockFile(self.cache_dir)
if self._lockfile.is_locked() and \
isfile(self._lockfile.lock_file) and \
(time() - getmtime(self._lockfile.lock_file)) > 10:
self._lockfile.break_lock()
try:
self._lockfile.acquire()
except LockFailed:
return False
return True
def _unlock_dbindex(self):
if self._lockfile:
self._lockfile.release()
return True
def get_cache_path(self, key):
assert len(key) > 3
return join(self.cache_dir, key[-2:], key)
@staticmethod
def key_from_args(*args):
h = hashlib.md5()
for data in args:
h.update(str(data))
return h.hexdigest()
def get(self, key):
cache_path = self.get_cache_path(key)
if not isfile(cache_path):
return None
with open(cache_path, "rb") as fp:
data = fp.read()
if data and data[0] in ("{", "["):
return json.loads(data)
return data
def set(self, key, data, valid):
if not get_setting("enable_cache"):
return False
cache_path = self.get_cache_path(key)
if isfile(cache_path):
self.delete(key)
if not data:
return False
if not isdir(self.cache_dir):
os.makedirs(self.cache_dir)
tdmap = {"s": 1, "m": 60, "h": 3600, "d": 86400}
assert valid.endswith(tuple(tdmap.keys()))
expire_time = int(time() + tdmap[valid[-1]] * int(valid[:-1]))
if not self._lock_dbindex():
return False
if not isdir(dirname(cache_path)):
os.makedirs(dirname(cache_path))
with open(cache_path, "wb") as fp:
if isinstance(data, (dict, list)):
json.dump(data, fp)
else:
fp.write(str(data))
with open(self._db_path, "a") as fp:
fp.write("%s=%s\n" % (str(expire_time), cache_path))
return self._unlock_dbindex()
def delete(self, keys=None):
""" Keys=None, delete expired items """
if not isfile(self._db_path):
return None
if not keys:
keys = []
if not isinstance(keys, list):
keys = [keys]
paths_for_delete = [self.get_cache_path(k) for k in keys]
found = False
newlines = []
with open(self._db_path) as fp:
for line in fp.readlines():
if "=" not in line:
continue
line = line.strip()
expire, path = line.split("=")
if time() < int(expire) and isfile(path) and \
path not in paths_for_delete:
newlines.append(line)
continue
found = True
if isfile(path):
try:
remove(path)
if not listdir(dirname(path)):
util.rmtree_(dirname(path))
except OSError:
pass
if found and self._lock_dbindex():
with open(self._db_path, "w") as fp:
fp.write("\n".join(newlines) + "\n")
self._unlock_dbindex()
return True
def clean(self):
if not self.cache_dir or not isdir(self.cache_dir):
return
util.rmtree_(self.cache_dir)
def clean_cache():
with ContentCache() as cc:
cc.clean()
def sanitize_setting(name, value):
if name not in DEFAULT_SETTINGS:
raise exception.InvalidSettingName(name)
defdata = DEFAULT_SETTINGS[name]
try:
if "validator" in defdata:
value = defdata['validator'](value)
elif isinstance(defdata['value'], bool):
if not isinstance(value, bool):
value = str(value).lower() in ("true", "yes", "y", "1")
elif isinstance(defdata['value'], int):
value = int(value)
except Exception:
raise exception.InvalidSettingValue(value, name)
return value
def get_state_item(name, default=None):
with State() as data:
return data.get(name, default)
def set_state_item(name, value):
with State(lock=True) as data:
data[name] = value
def delete_state_item(name):
with State(lock=True) as data:
if name in data:
del data[name]
def get_setting(name):
_env_name = "PLATFORMIO_SETTING_%s" % name.upper()
if _env_name in environ:
return sanitize_setting(name, getenv(_env_name))
with State() as data:
if "settings" in data and name in data['settings']:
return data['settings'][name]
return DEFAULT_SETTINGS[name]['value']
def set_setting(name, value):
with State(lock=True) as data:
if "settings" not in data:
data['settings'] = {}
data['settings'][name] = sanitize_setting(name, value)
def reset_settings():
with State(lock=True) as data:
if "settings" in data:
del data['settings']
def get_session_var(name, default=None):
return SESSION_VARS.get(name, default)
def set_session_var(name, value):
assert name in SESSION_VARS
SESSION_VARS[name] = value
def is_disabled_progressbar():
return any([
get_session_var("force_option"),
util.is_ci(),
getenv("PLATFORMIO_DISABLE_PROGRESSBAR") == "true"
])
def get_cid():
cid = get_state_item("cid")
if not cid:
_uid = None
if getenv("C9_UID"):
_uid = getenv("C9_UID")
elif getenv("CHE_API", getenv("CHE_API_ENDPOINT")):
try:
_uid = requests.get("{api}/user?token={token}".format(
api=getenv("CHE_API", getenv("CHE_API_ENDPOINT")),
token=getenv("USER_TOKEN"))).json().get("id")
except: # pylint: disable=bare-except
pass
cid = str(
uuid.UUID(
bytes=hashlib.md5(str(_uid if _uid else uuid.getnode()))
.digest()))
if "windows" in util.get_systype() or os.getuid() > 0:
set_state_item("cid", cid)
return cid

View File

@@ -1,2 +1,13 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

View File

@@ -1,66 +1,184 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from os.path import isdir, join
import base64
import json
import sys
from os import environ
from os.path import expanduser, join
from time import time
from SCons.Script import (DefaultEnvironment, Exit, SConscript,
SConscriptChdir, Variables)
from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, DEFAULT_TARGETS,
AllowSubstExceptions, AlwaysBuild,
DefaultEnvironment, Variables)
from platformio.util import (get_home_dir, get_pioenvs_dir, get_project_dir,
get_source_dir)
from platformio import util
# AllowSubstExceptions()
AllowSubstExceptions(NameError)
# allow common variables from INI file
commonvars = Variables(None)
commonvars.AddVariables(
("PLATFORM_MANIFEST",),
("BUILD_SCRIPT",),
("EXTRA_SCRIPTS",),
("PIOENV",),
("PLATFORM",),
("FRAMEWORK",),
("PIOTEST",),
("PIOPLATFORM",),
("PIOFRAMEWORK",),
# build options
("BUILD_FLAGS",),
("SRCBUILD_FLAGS",),
("SRC_BUILD_FLAGS",),
("BUILD_UNFLAGS",),
("SRC_FILTER",),
# library options
("LIB_LDF_MODE",),
("LIB_COMPAT_MODE",),
("LIB_DEPS",),
("LIB_IGNORE",),
("LIB_EXTRA_DIRS",),
("LIB_ARCHIVE",),
# board options
("BOARD",),
("BOARD_MCU",),
("BOARD_F_CPU",),
("BOARD_F_FLASH",),
("BOARD_FLASH_MODE",),
# upload options
("UPLOAD_PORT",),
("UPLOAD_PROTOCOL",),
("UPLOAD_SPEED",)
)
("UPLOAD_SPEED",),
("UPLOAD_FLAGS",),
("UPLOAD_RESETMETHOD",)
DefaultEnvironment(
tools=["default", "platformio"],
toolpath=[join("$PIOBUILDER_DIR", "tools")],
) # yapf: disable
MULTILINE_VARS = [
"EXTRA_SCRIPTS", "PIOFRAMEWORK", "BUILD_FLAGS", "SRC_BUILD_FLAGS",
"BUILD_UNFLAGS", "SRC_FILTER", "LIB_DEPS", "LIB_IGNORE", "LIB_EXTRA_DIRS"
]
DEFAULT_ENV_OPTIONS = dict(
tools=[
"ar", "as", "gcc", "g++", "gnulink", "platformio", "pioplatform",
"piowinhooks", "piolib", "pioupload", "piomisc", "pioide"
], # yapf: disable
toolpath=[join(util.get_source_dir(), "builder", "tools")],
variables=commonvars,
PIOBUILDER_DIR=join(get_source_dir(), "builder"),
PROJECT_DIR=get_project_dir(),
PIOENVS_DIR=get_pioenvs_dir(),
PLATFORMIOHOME_DIR=get_home_dir(),
PLATFORM_DIR=join("$PLATFORMIOHOME_DIR", "$PLATFORM"),
PLATFORMFW_DIR=join("$PLATFORM_DIR", "frameworks", "$FRAMEWORK"),
PLATFORMTOOLS_DIR=join("$PLATFORM_DIR", "tools"),
BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"),
# Propagating External Environment
PIOVARIABLES=commonvars.keys(),
ENV=environ,
UNIX_TIME=int(time()),
PIOHOME_DIR=util.get_home_dir(),
PROJECT_DIR=util.get_project_dir(),
PROJECTINCLUDE_DIR=util.get_projectinclude_dir(),
PROJECTSRC_DIR=util.get_projectsrc_dir(),
PROJECTTEST_DIR=util.get_projecttest_dir(),
PROJECTDATA_DIR=util.get_projectdata_dir(),
PROJECTBUILD_DIR=util.get_projectbuild_dir(),
BUILD_DIR=join("$PROJECTBUILD_DIR", "$PIOENV"),
BUILDSRC_DIR=join("$BUILD_DIR", "src"),
BUILDTEST_DIR=join("$BUILD_DIR", "test"),
LIBSOURCE_DIRS=[
join("$PROJECT_DIR", "lib"),
join("$PLATFORMFW_DIR", "libraries"),
]
)
util.get_projectlib_dir(),
util.get_projectlibdeps_dir(),
join("$PIOHOME_DIR", "lib")
],
PROGNAME="program",
PROG_PATH=join("$BUILD_DIR", "$PROGNAME$PROGSUFFIX"),
PYTHONEXE=util.get_pythonexe_path())
env = DefaultEnvironment()
if not int(ARGUMENTS.get("PIOVERBOSE", 0)):
DEFAULT_ENV_OPTIONS['ARCOMSTR'] = "Archiving $TARGET"
DEFAULT_ENV_OPTIONS['LINKCOMSTR'] = "Linking $TARGET"
DEFAULT_ENV_OPTIONS['RANLIBCOMSTR'] = "Indexing $TARGET"
for k in ("ASCOMSTR", "ASPPCOMSTR", "CCCOMSTR", "CXXCOMSTR"):
DEFAULT_ENV_OPTIONS[k] = "Compiling $TARGET"
if not isdir(env['PLATFORMIOHOME_DIR']):
Exit("You haven't installed any platforms yet. Please use "
"`platformio install` command")
elif not isdir(env.subst("$PLATFORM_DIR")):
Exit("An '%s' platform hasn't been installed yet. Please use "
"`platformio install %s` command" % (env['PLATFORM'],
env['PLATFORM']))
env = DefaultEnvironment(**DEFAULT_ENV_OPTIONS)
SConscriptChdir(0)
SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "${PLATFORM}.py")))
# decode common variables
for k in commonvars.keys():
if k in env:
env[k] = base64.b64decode(env[k])
if k in MULTILINE_VARS:
env[k] = util.parse_conf_multi_values(env[k])
if env.GetOption('clean'):
env.PioClean(env.subst("$BUILD_DIR"))
env.Exit(0)
elif not int(ARGUMENTS.get("PIOVERBOSE", 0)):
print "Verbose mode can be enabled via `-v, --verbose` option"
# Handle custom variables from system environment
for var in ("BUILD_FLAGS", "SRC_BUILD_FLAGS", "SRC_FILTER", "EXTRA_SCRIPTS",
"UPLOAD_PORT", "UPLOAD_FLAGS", "LIB_EXTRA_DIRS"):
k = "PLATFORMIO_%s" % var
if k not in environ:
continue
if var in ("UPLOAD_PORT", ):
env[var] = environ.get(k)
continue
env.Append(**{var: util.parse_conf_multi_values(environ.get(k))})
# Configure extra library source directories for LDF
if util.get_project_optional_dir("lib_extra_dirs"):
env.Prepend(
LIBSOURCE_DIRS=util.parse_conf_multi_values(
util.get_project_optional_dir("lib_extra_dirs")))
env.Prepend(LIBSOURCE_DIRS=env.get("LIB_EXTRA_DIRS", []))
env['LIBSOURCE_DIRS'] = [
expanduser(d) if d.startswith("~") else d for d in env['LIBSOURCE_DIRS']
]
env.LoadPioPlatform(commonvars)
env.SConscriptChdir(0)
env.SConsignFile(join("$PROJECTBUILD_DIR", ".sconsign.dblite"))
for item in env.GetPreExtraScripts():
env.SConscript(item, exports="env")
env.SConscript("$BUILD_SCRIPT")
AlwaysBuild(env.Alias("__debug", DEFAULT_TARGETS + ["size"]))
AlwaysBuild(env.Alias("__test", DEFAULT_TARGETS + ["size"]))
if "UPLOAD_FLAGS" in env:
env.Append(UPLOADERFLAGS=["$UPLOAD_FLAGS"])
for item in env.GetPostExtraScripts():
env.SConscript(item, exports="env")
if "envdump" in COMMAND_LINE_TARGETS:
print env.Dump()
env.Exit(0)
if "idedata" in COMMAND_LINE_TARGETS:
try:
print "\n%s\n" % util.path_to_unicode(
json.dumps(env.DumpIDEData(), ensure_ascii=False))
env.Exit(0)
except UnicodeDecodeError:
sys.stderr.write(
"\nUnicodeDecodeError: Non-ASCII characters found in build "
"environment\n"
"See explanation in FAQ > Troubleshooting > Building\n"
"http://docs.platformio.org/page/faq.html\n\n")
env.Exit(1)

View File

@@ -1,2 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.

View File

@@ -1,158 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
"""
Builder for Atmel AVR series of microcontrollers
"""
from os.path import join
from SCons.Script import (AlwaysBuild, Builder, COMMAND_LINE_TARGETS, Default,
DefaultEnvironment, Exit)
from platformio.util import reset_serialport
env = DefaultEnvironment()
env.Replace(
AR="avr-ar",
AS="avr-gcc",
CC="avr-gcc",
CXX="avr-g++",
OBJCOPY="avr-objcopy",
RANLIB="avr-ranlib",
ARFLAGS=["rcs"],
ASFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-x", "assembler-with-cpp",
"-mmcu=$BOARD_MCU"
],
CCFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size
"-Wall", # show warnings
"-ffunction-sections", # place each function in its own section
"-fdata-sections",
"-MMD", # output dependancy info
"-mmcu=$BOARD_MCU"
],
CXXFLAGS=["-fno-exceptions"],
CPPDEFINES=[
"F_CPU=$BOARD_F_CPU"
],
LINKFLAGS=[
"-Os",
"-Wl,--gc-sections",
"-mmcu=$BOARD_MCU"
],
UPLOADER=join("$PLATFORMTOOLS_DIR", "avrdude", "avrdude"),
UPLOADERFLAGS=[
"-V", # do not verify
"-q", # suppress progress output
"-D", # disable auto erase for flash memory
"-p", "$BOARD_MCU",
"-C", join("$PLATFORMTOOLS_DIR", "avrdude", "avrdude.conf"),
"-c", "$UPLOAD_PROTOCOL",
"-b", "$UPLOAD_SPEED",
"-P", "$UPLOAD_PORT"
],
UPLOADHEXCMD="$UPLOADER $UPLOADERFLAGS -U flash:w:$SOURCES:i",
UPLOADEEPCMD="$UPLOADER $UPLOADERFLAGS -U eeprom:w:$SOURCES:i"
)
env.Append(
BUILDERS=dict(
ElfToEep=Builder(
action=" ".join([
"$OBJCOPY",
"-O",
"ihex",
"-j",
".eeprom",
'--set-section-flags=.eeprom="alloc,load"',
"--no-change-warnings",
"--change-section-lma",
".eeprom=0",
"$SOURCES",
"$TARGET"]),
suffix=".eep"
),
ElfToHex=Builder(
action=" ".join([
"$OBJCOPY",
"-O",
"ihex",
"-R",
".eeprom",
"$SOURCES",
"$TARGET"]),
suffix=".hex"
)
)
)
BUILT_LIBS = env.ProcessGeneral()
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildFirmware(BUILT_LIBS + ["m"])
#
# Target: Extract EEPROM data (from EEMEM directive) to .eep file
#
target_eep = env.Alias("eep", env.ElfToEep(join("$BUILD_DIR", "firmware"),
target_elf))
#
# Target: Build the .hex file
#
if "uploadlazy" in COMMAND_LINE_TARGETS:
target_hex = join("$BUILD_DIR", "firmware.hex")
else:
target_hex = env.ElfToHex(join("$BUILD_DIR", "firmware"), target_elf)
#
# Target: Upload by default .hex file
#
upload = env.Alias(["upload", "uploadlazy"], target_hex, [
lambda target, source, env: reset_serialport(env.subst("$UPLOAD_PORT")),
"$UPLOADHEXCMD"])
AlwaysBuild(upload)
#
# Target: Upload .eep file
#
uploadeep = env.Alias("uploadeep", target_eep, [
lambda target, source, env: reset_serialport(env.subst("$UPLOAD_PORT")),
"$UPLOADEEPCMD"])
AlwaysBuild(uploadeep)
#
# Check for $UPLOAD_PORT variable
#
is_uptarget = (set(["upload", "uploadlazy", "uploadeep"]) &
set(COMMAND_LINE_TARGETS))
if is_uptarget and not env.subst("$UPLOAD_PORT"):
Exit("Please specify environment 'upload_port' or use global "
"--upload-port option.")
#
# Setup default targets
#
Default(target_hex)

View File

@@ -1,2 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.

View File

@@ -1,70 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
"""
Build script for Android Framework (based on Wiring).
"""
from os.path import join
from SCons.Script import Import, Return
env = None
Import("env")
BOARD_OPTIONS = env.ParseBoardOptions(
join("$PLATFORMFW_DIR", "boards.txt"),
"${BOARD}"
)
ARDUINO_VERSION = int(
open(join(env.subst("$PLATFORMFW_DIR"),
"version.txt")).read().replace(".", "").strip())
# usb flags
ARDUINO_USBDEFINES = []
if "build.usb_product" in BOARD_OPTIONS:
ARDUINO_USBDEFINES = [
"USB_VID=%s" % BOARD_OPTIONS['build.vid'],
"USB_PID=%s" % BOARD_OPTIONS['build.pid'],
"USB_PRODUCT=%s" % BOARD_OPTIONS['build.usb_product'].replace('"', "")
]
# include board variant
env.VariantDir(
join("$BUILD_DIR", "variant"),
join("$PLATFORMFW_DIR", "variants", BOARD_OPTIONS['build.variant'])
)
env.Append(
CPPDEFINES=[
"ARDUINO=%d" % ARDUINO_VERSION,
"ARDUINO_%s" % BOARD_OPTIONS['build.board']
] + ARDUINO_USBDEFINES,
CPPPATH=[
join("$BUILD_DIR", "core"),
join("$BUILD_DIR", "variant")
]
)
if "BOARD_MCU" not in env:
env.Replace(BOARD_MCU=BOARD_OPTIONS['build.mcu'])
if "BOARD_F_CPU" not in env:
env.Replace(BOARD_F_CPU=BOARD_OPTIONS['build.f_cpu'])
if "UPLOAD_PROTOCOL" not in env:
env.Replace(UPLOAD_PROTOCOL=BOARD_OPTIONS['upload.protocol'])
if "UPLOAD_SPEED" not in env:
env.Replace(UPLOAD_SPEED=BOARD_OPTIONS['upload.speed'])
libs = []
#
# Target: Build Core Library
#
libs.append(env.BuildLibrary(
join("$BUILD_DIR", "core"),
join("$PLATFORMFW_DIR", "cores", BOARD_OPTIONS['build.core'])
))
Return("libs")

View File

@@ -1,67 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
"""
Build script for Energia Framework (based on Wiring).
"""
from os.path import join
from SCons.Script import Import, Return
env = None
Import("env")
BOARD_OPTIONS = env.ParseBoardOptions(
join("$PLATFORMFW_DIR", "boards.txt"),
"${BOARD}"
)
ENERGIA_VERSION = int(
open(join(env.subst("$PLATFORMFW_DIR"),
"version.txt")).read().replace(".", "").strip())
# include board variant
env.VariantDir(
join("$BUILD_DIR", "variant"),
join("$PLATFORMFW_DIR", "variants", BOARD_OPTIONS['build.variant'])
)
env.Append(
CPPDEFINES=[
"ARDUINO=101",
"ENERGIA=%d" % ENERGIA_VERSION
],
CPPPATH=[
join("$BUILD_DIR", "core"),
join("$BUILD_DIR", "variant")
]
)
if "BOARD_MCU" not in env:
env.Replace(BOARD_MCU=BOARD_OPTIONS['build.mcu'])
if "BOARD_F_CPU" not in env:
env.Replace(BOARD_F_CPU=BOARD_OPTIONS['build.f_cpu'])
if "UPLOAD_PROTOCOL" not in env and "upload.protocol" in BOARD_OPTIONS:
env.Replace(UPLOAD_PROTOCOL=BOARD_OPTIONS['upload.protocol'])
# specific linker script for TIVA devices
if "ldscript" in BOARD_OPTIONS:
env.Append(
LINKFLAGS=["-T", join("$PLATFORMFW_DIR", "cores",
BOARD_OPTIONS['build.core'],
BOARD_OPTIONS['ldscript'])]
)
libs = []
#
# Target: Build Core Library
#
libs.append(env.BuildLibrary(
join("$BUILD_DIR", "core"),
join("$PLATFORMFW_DIR", "cores", BOARD_OPTIONS['build.core'])
))
Return("libs")

View File

@@ -1,106 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
"""
Builder for Texas Instruments
MSP430 Ultra-Low Power 16-bit microcontrollers
"""
from os.path import join
from platform import system
from SCons.Script import (AlwaysBuild, Builder, COMMAND_LINE_TARGETS, Default,
DefaultEnvironment)
env = DefaultEnvironment()
env.Replace(
AR="msp430-ar",
AS="msp430-gcc",
CC="msp430-gcc",
CXX="msp430-g++",
OBJCOPY="msp430-objcopy",
RANLIB="msp430-ranlib",
ARFLAGS=["rcs"],
ASFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-x", "-assembler-with-cpp",
"-mmcu=$BOARD_MCU"
],
CCFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size
"-Wall", # show warnings
"-ffunction-sections", # place each function in its own section
"-fdata-sections",
"-MMD", # output dependancy info
"-mmcu=$BOARD_MCU"
],
CPPDEFINES=[
"F_CPU=$BOARD_F_CPU"
],
LINK="$CC",
LINKFLAGS=[
"-Os",
"-mmcu=$BOARD_MCU",
"-Wl,-gc-sections,-u,main"
],
UPLOADER=join("$PLATFORMTOOLS_DIR", "mspdebug", "mspdebug"),
UPLOADERFLAGS=[
"$UPLOAD_PROTOCOL" if system() != "Windows" else "tilib",
"--force-reset"
],
UPLOADCMD='$UPLOADER $UPLOADERFLAGS "prog $SOURCES"'
)
env.Append(
BUILDERS=dict(
ElfToHex=Builder(
action=" ".join([
"$OBJCOPY",
"-O",
"ihex",
"-R",
".eeprom",
"$SOURCES",
"$TARGET"]),
suffix=".hex"
)
)
)
BUILT_LIBS = env.ProcessGeneral()
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildFirmware(BUILT_LIBS + ["m"])
#
# Target: Build the .hex
#
if "uploadlazy" in COMMAND_LINE_TARGETS:
target_hex = join("$BUILD_DIR", "firmware.hex")
else:
target_hex = env.ElfToHex(join("$BUILD_DIR", "firmware"), target_elf)
#
# Target: Upload firmware
#
upload = env.Alias(["upload", "uploadlazy"], target_hex, "$UPLOADCMD")
AlwaysBuild(upload)
#
# Target: Define targets
#
Default(target_hex)

View File

@@ -1,120 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
"""
Builder for Texas Instruments
Tiva C Series ARM Cortex-M4 microcontrollers.
"""
from os.path import join
from SCons.Script import (AlwaysBuild, Builder, COMMAND_LINE_TARGETS, Default,
DefaultEnvironment)
env = DefaultEnvironment()
env.Replace(
AR="arm-none-eabi-ar",
AS="arm-none-eabi-gcc",
CC="arm-none-eabi-gcc",
CXX="arm-none-eabi-g++",
OBJCOPY="arm-none-eabi-objcopy",
RANLIB="arm-none-eabi-ranlib",
ARFLAGS=["rcs"],
ASFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-x", "assembler-with-cpp",
"-Wall",
"-mthumb",
"-mcpu=cortex-m4",
"-mfloat-abi=hard",
"-mfpu=fpv4-sp-d16",
"-fsingle-precision-constant"
],
CCFLAGS=[
"-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size
"-Wall", # show warnings
"-ffunction-sections", # place each function in its own section
"-fdata-sections",
"-Wall",
"-mthumb",
"-mcpu=cortex-m4",
"-mfloat-abi=hard",
"-mfpu=fpv4-sp-d16",
"-fsingle-precision-constant",
"-MMD" # output dependancy info
],
CXXFLAGS=[
"-fno-rtti",
"-fno-exceptions"
],
CPPDEFINES=[
"F_CPU=$BOARD_F_CPU"
],
LINKFLAGS=[
"-Os",
"-nostartfiles",
"-nostdlib",
"-Wl,--gc-sections",
"-Wl,--entry=ResetISR",
"-mthumb",
"-mcpu=cortex-m4",
"-mfloat-abi=hard",
"-mfpu=fpv4-sp-d16",
"-fsingle-precision-constant"
],
UPLOADER=join("$PLATFORMTOOLS_DIR", "lm4flash", "lm4flash"),
UPLOADCMD="$UPLOADER $SOURCES"
)
env.Append(
BUILDERS=dict(
ElfToBin=Builder(
action=" ".join([
"$OBJCOPY",
"-O",
"binary",
"$SOURCES",
"$TARGET"]),
suffix=".bin"
)
)
)
BUILT_LIBS = env.ProcessGeneral()
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildFirmware(BUILT_LIBS + ["c", "gcc", "m"])
#
# Target: Build the .bin file
#
if "uploadlazy" in COMMAND_LINE_TARGETS:
target_bin = join("$BUILD_DIR", "firmware.bin")
else:
target_bin = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf)
#
# Target: Upload firmware
#
upload = env.Alias(["upload", "uploadlazy"], target_bin, "$UPLOADCMD")
AlwaysBuild(upload)
#
# Target: Define targets
#
Default(target_bin)

View File

@@ -1,2 +1,13 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

View File

@@ -0,0 +1,156 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
from glob import glob
from os import environ
from os.path import join
from SCons.Defaults import processDefines
from platformio import util
from platformio.managers.core import get_core_package_dir
def _dump_includes(env):
includes = []
for item in env.get("CPPPATH", []):
includes.append(env.subst(item))
# installed libs
for lb in env.GetLibBuilders():
includes.extend(lb.get_include_dirs())
# includes from toolchains
p = env.PioPlatform()
for name in p.get_installed_packages():
if p.get_package_type(name) != "toolchain":
continue
toolchain_dir = util.glob_escape(p.get_package_dir(name))
toolchain_incglobs = [
join(toolchain_dir, "*", "include*"),
join(toolchain_dir, "*", "include", "c++", "*"),
join(toolchain_dir, "*", "include", "c++", "*", "*-*-*"),
join(toolchain_dir, "lib", "gcc", "*", "*", "include*")
]
for g in toolchain_incglobs:
includes.extend(glob(g))
unity_dir = get_core_package_dir("tool-unity")
if unity_dir:
includes.append(unity_dir)
return includes
def _get_gcc_defines(env):
items = []
try:
sysenv = environ.copy()
sysenv['PATH'] = str(env['ENV']['PATH'])
result = util.exec_command(
"echo | %s -dM -E -" % env.subst("$CC"), env=sysenv, shell=True)
except OSError:
return items
if result['returncode'] != 0:
return items
for line in result['out'].split("\n"):
tokens = line.strip().split(" ", 2)
if not tokens or tokens[0] != "#define":
continue
if len(tokens) > 2:
items.append("%s=%s" % (tokens[1], tokens[2]))
else:
items.append(tokens[1])
return items
def _dump_defines(env):
defines = []
# global symbols
for item in processDefines(env.get("CPPDEFINES", [])):
defines.append(env.subst(item).replace('\\', ''))
# special symbol for Atmel AVR MCU
if env['PIOPLATFORM'] == "atmelavr":
board_mcu = env.get("BOARD_MCU")
if not board_mcu and "BOARD" in env:
board_mcu = env.BoardConfig().get("build.mcu")
if board_mcu:
defines.append(
str("__AVR_%s__" % board_mcu.upper()
.replace("ATMEGA", "ATmega").replace("ATTINY", "ATtiny")))
# built-in GCC marcos
if env.GetCompilerType() == "gcc":
defines.extend(_get_gcc_defines(env))
return defines
def DumpIDEData(env):
LINTCCOM = "$CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS"
LINTCXXCOM = "$CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS"
data = {
"libsource_dirs":
[env.subst(l) for l in env.get("LIBSOURCE_DIRS", [])],
"defines":
_dump_defines(env),
"includes":
_dump_includes(env),
"cc_flags":
env.subst(LINTCCOM),
"cxx_flags":
env.subst(LINTCXXCOM),
"cc_path":
util.where_is_program(env.subst("$CC"), env.subst("${ENV['PATH']}")),
"cxx_path":
util.where_is_program(env.subst("$CXX"), env.subst("${ENV['PATH']}")),
"gdb_path":
util.where_is_program(env.subst("$GDB"), env.subst("${ENV['PATH']}")),
"prog_path":
env.subst("$PROG_PATH"),
"compiler_type":
env.GetCompilerType()
}
env_ = env.Clone()
# https://github.com/platformio/platformio-atom-ide/issues/34
_new_defines = []
for item in processDefines(env_.get("CPPDEFINES", [])):
item = item.replace('\\"', '"')
if " " in item:
_new_defines.append(item.replace(" ", "\\\\ "))
else:
_new_defines.append(item)
env_.Replace(CPPDEFINES=_new_defines)
data.update({
"cc_flags": env_.subst(LINTCCOM),
"cxx_flags": env_.subst(LINTCXXCOM)
})
return data
def exists(_):
return True
def generate(env):
env.AddMethod(DumpIDEData)
return env

View File

@@ -0,0 +1,847 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# pylint: disable=no-member, no-self-use, unused-argument
# pylint: disable=too-many-instance-attributes, too-many-public-methods
from __future__ import absolute_import
import hashlib
import os
import sys
from glob import glob
from os.path import (basename, commonprefix, dirname, isdir, isfile, join,
realpath, sep)
from platform import system
import SCons.Scanner
from SCons.Script import ARGUMENTS, COMMAND_LINE_TARGETS, DefaultEnvironment
from platformio import util
from platformio.builder.tools import platformio as piotool
from platformio.managers.lib import LibraryManager
from platformio.managers.package import PackageManager
class LibBuilderFactory(object):
@staticmethod
def new(env, path, verbose=False):
clsname = "UnknownLibBuilder"
if isfile(join(path, "library.json")):
clsname = "PlatformIOLibBuilder"
else:
used_frameworks = LibBuilderFactory.get_used_frameworks(env, path)
common_frameworks = (
set(env.get("PIOFRAMEWORK", [])) & set(used_frameworks))
if common_frameworks:
clsname = "%sLibBuilder" % list(common_frameworks)[0].title()
elif used_frameworks:
clsname = "%sLibBuilder" % used_frameworks[0].title()
obj = getattr(sys.modules[__name__], clsname)(
env, path, verbose=verbose)
assert isinstance(obj, LibBuilderBase)
return obj
@staticmethod
def get_used_frameworks(env, path):
if any([
isfile(join(path, fname))
for fname in ("library.properties", "keywords.txt")
]):
return ["arduino"]
if isfile(join(path, "module.json")):
return ["mbed"]
# check source files
for root, _, files in os.walk(path, followlinks=True):
for fname in files:
if not env.IsFileWithExt(
fname, piotool.SRC_BUILD_EXT + piotool.SRC_HEADER_EXT):
continue
with open(join(root, fname)) as f:
content = f.read()
if "Arduino.h" in content:
return ["arduino"]
elif "mbed.h" in content:
return ["mbed"]
return []
class LibBuilderBase(object):
LDF_MODES = ["off", "chain", "deep", "chain+", "deep+"]
LDF_MODE_DEFAULT = "chain"
COMPAT_MODES = [0, 1, 2]
COMPAT_MODE_DEFAULT = 1
CLASSIC_SCANNER = SCons.Scanner.C.CScanner()
ADVANCED_SCANNER = SCons.Scanner.C.CScanner(advanced=True)
PARSE_SRC_BY_H_NAME = True
_INCLUDE_DIRS_CACHE = None
def __init__(self, env, path, manifest=None, verbose=False):
self.env = env.Clone()
self.envorigin = env.Clone()
self.path = realpath(env.subst(path))
self.verbose = verbose
self._manifest = manifest if manifest else self.load_manifest()
self._is_dependent = False
self._is_built = False
self._depbuilders = list()
self._circular_deps = list()
self._processed_files = list()
# reset source filter, could be overridden with extra script
self.env['SRC_FILTER'] = ""
# process extra options and append to build environment
self.process_extra_options()
def __repr__(self):
return "%s(%r)" % (self.__class__, self.path)
def __contains__(self, path):
p1 = self.path
p2 = path
if system() == "Windows":
p1 = p1.lower()
p2 = p2.lower()
return commonprefix((p1 + sep, p2)) == p1 + sep
@property
def name(self):
return self._manifest.get("name", basename(self.path))
@property
def version(self):
return self._manifest.get("version")
@property
def vcs_info(self):
items = glob(join(self.path, ".*", PackageManager.SRC_MANIFEST_NAME))
if not items:
return None
return util.load_json(items[0])
@property
def dependencies(self):
return LibraryManager.normalize_dependencies(
self._manifest.get("dependencies", []))
@property
def src_filter(self):
return piotool.SRC_FILTER_DEFAULT + [
"-<example%s>" % os.sep,
"-<examples%s>" % os.sep,
"-<test%s>" % os.sep,
"-<tests%s>" % os.sep
]
@property
def include_dir(self):
if not all([isdir(join(self.path, d)) for d in ("include", "src")]):
return None
return join(self.path, "include")
@property
def src_dir(self):
return (join(self.path, "src")
if isdir(join(self.path, "src")) else self.path)
def get_include_dirs(self):
items = [self.src_dir]
include_dir = self.include_dir
if include_dir and include_dir not in items:
items.append(include_dir)
return items
@property
def build_dir(self):
return join("$BUILD_DIR",
"lib%s" % hashlib.sha1(self.path).hexdigest()[:3],
basename(self.path))
@property
def build_flags(self):
return None
@property
def build_unflags(self):
return None
@property
def extra_script(self):
return None
@property
def lib_archive(self):
return self.env.get("LIB_ARCHIVE", "") != "false"
@property
def lib_ldf_mode(self):
return self.validate_ldf_mode(
self.env.get("LIB_LDF_MODE", self.LDF_MODE_DEFAULT))
@property
def lib_compat_mode(self):
return self.validate_compat_mode(
self.env.get("LIB_COMPAT_MODE", self.COMPAT_MODE_DEFAULT))
@property
def depbuilders(self):
return self._depbuilders
@property
def dependent(self):
return self._is_dependent
@property
def is_built(self):
return self._is_built
@staticmethod
def validate_ldf_mode(mode):
if isinstance(mode, basestring):
mode = mode.strip().lower()
if mode in LibBuilderBase.LDF_MODES:
return mode
try:
return LibBuilderBase.LDF_MODES[int(mode)]
except (IndexError, ValueError):
pass
return LibBuilderBase.LDF_MODE_DEFAULT
@staticmethod
def validate_compat_mode(mode):
try:
mode = int(mode)
assert mode in LibBuilderBase.COMPAT_MODES
return mode
except (AssertionError, ValueError):
return LibBuilderBase.COMPAT_MODE_DEFAULT
def is_platforms_compatible(self, platforms):
return True
def is_frameworks_compatible(self, frameworks):
return True
def load_manifest(self):
return {}
def process_extra_options(self):
with util.cd(self.path):
self.env.ProcessUnFlags(self.build_unflags)
self.env.ProcessFlags(self.build_flags)
if self.extra_script:
self.env.SConscriptChdir(1)
self.env.SConscript(
realpath(self.extra_script),
exports={
"env": self.env,
"pio_lib_builder": self
})
def process_dependencies(self):
if not self.dependencies:
return
for item in self.dependencies:
skip = False
for key in ("platforms", "frameworks"):
env_key = "PIO" + key.upper()[:-1]
if env_key not in self.env:
continue
if (key in item and
not util.items_in_list(self.env[env_key], item[key])):
if self.verbose:
sys.stderr.write(
"Skip %s incompatible dependency %s\n" % (key[:-1],
item))
skip = True
if skip:
continue
found = False
for lb in self.env.GetLibBuilders():
if item['name'] != lb.name:
continue
elif "frameworks" in item and \
not lb.is_frameworks_compatible(item["frameworks"]):
continue
elif "platforms" in item and \
not lb.is_platforms_compatible(item["platforms"]):
continue
found = True
self.depend_recursive(lb)
break
if not found:
sys.stderr.write(
"Error: Could not find `%s` dependency for `%s` "
"library\n" % (item['name'], self.name))
self.env.Exit(1)
def get_search_files(self):
items = [
join(self.src_dir, item) for item in self.env.MatchSourceFiles(
self.src_dir, self.src_filter)
]
include_dir = self.include_dir
if include_dir:
items.extend([
join(include_dir, item)
for item in self.env.MatchSourceFiles(include_dir)
])
return items
def _validate_search_files(self, search_files=None):
if not search_files:
search_files = []
assert isinstance(search_files, list)
_search_files = []
for path in search_files:
if path not in self._processed_files:
_search_files.append(path)
self._processed_files.append(path)
return _search_files
def _get_found_includes(self, search_files=None):
# all include directories
if not LibBuilderBase._INCLUDE_DIRS_CACHE:
LibBuilderBase._INCLUDE_DIRS_CACHE = []
for lb in self.env.GetLibBuilders():
LibBuilderBase._INCLUDE_DIRS_CACHE.extend(
[self.env.Dir(d) for d in lb.get_include_dirs()])
# append self include directories
include_dirs = [self.env.Dir(d) for d in self.get_include_dirs()]
include_dirs.extend(LibBuilderBase._INCLUDE_DIRS_CACHE)
result = []
for path in self._validate_search_files(search_files):
try:
assert "+" in self.lib_ldf_mode
incs = self.env.File(path).get_found_includes(
self.env, LibBuilderBase.ADVANCED_SCANNER,
tuple(include_dirs))
except Exception as e: # pylint: disable=broad-except
if self.verbose and "+" in self.lib_ldf_mode:
sys.stderr.write(
"Warning! Classic Pre Processor is used for `%s`, "
"advanced has failed with `%s`\n" % (path, e))
_incs = self.env.File(path).get_found_includes(
self.env, LibBuilderBase.CLASSIC_SCANNER,
tuple(include_dirs))
incs = []
for inc in _incs:
incs.append(inc)
if not self.PARSE_SRC_BY_H_NAME:
continue
_h_path = inc.get_abspath()
if not self.env.IsFileWithExt(_h_path,
piotool.SRC_HEADER_EXT):
continue
_f_part = _h_path[:_h_path.rindex(".")]
for ext in piotool.SRC_C_EXT:
if isfile("%s.%s" % (_f_part, ext)):
incs.append(
self.env.File("%s.%s" % (_f_part, ext)))
# print path, map(lambda n: n.get_abspath(), incs)
for inc in incs:
if inc not in result:
result.append(inc)
return result
def depend_recursive(self, lb, search_files=None):
def _already_depends(_lb):
if self in _lb.depbuilders:
return True
for __lb in _lb.depbuilders:
if _already_depends(__lb):
return True
return False
# assert isinstance(lb, LibBuilderBase)
if self != lb:
if _already_depends(lb):
if self.verbose:
sys.stderr.write("Warning! Circular dependencies detected "
"between `%s` and `%s`\n" % (self.path,
lb.path))
self._circular_deps.append(lb)
elif lb not in self._depbuilders:
self._depbuilders.append(lb)
LibBuilderBase._INCLUDE_DIRS_CACHE = None
lb.search_deps_recursive(search_files)
def search_deps_recursive(self, search_files=None):
if not self._is_dependent:
self._is_dependent = True
self.process_dependencies()
if self.lib_ldf_mode.startswith("deep"):
search_files = self.get_search_files()
# when LDF is disabled
if self.lib_ldf_mode == "off":
return
lib_inc_map = {}
for inc in self._get_found_includes(search_files):
for lb in self.env.GetLibBuilders():
if inc.get_abspath() in lb:
if lb not in lib_inc_map:
lib_inc_map[lb] = []
lib_inc_map[lb].append(inc.get_abspath())
break
for lb, lb_search_files in lib_inc_map.items():
self.depend_recursive(lb, lb_search_files)
def build(self):
libs = []
for lb in self._depbuilders:
libs.extend(lb.build())
# copy shared information to self env
for key in ("CPPPATH", "LIBPATH", "LIBS", "LINKFLAGS"):
self.env.AppendUnique(**{key: lb.env.get(key)})
for lb in self._circular_deps:
self.env.AppendUnique(CPPPATH=lb.get_include_dirs())
if self._is_built:
return libs
self._is_built = True
self.env.AppendUnique(CPPPATH=self.get_include_dirs())
if self.lib_ldf_mode == "off":
for lb in self.env.GetLibBuilders():
if self == lb or not lb.is_built:
continue
for key in ("CPPPATH", "LIBPATH", "LIBS", "LINKFLAGS"):
self.env.AppendUnique(**{key: lb.env.get(key)})
if self.lib_archive:
libs.append(
self.env.BuildLibrary(self.build_dir, self.src_dir,
self.src_filter))
else:
self.env.BuildSources(self.build_dir, self.src_dir,
self.src_filter)
return libs
class UnknownLibBuilder(LibBuilderBase):
pass
class ArduinoLibBuilder(LibBuilderBase):
def load_manifest(self):
manifest = {}
if not isfile(join(self.path, "library.properties")):
return manifest
with open(join(self.path, "library.properties")) as fp:
for line in fp.readlines():
if "=" not in line:
continue
key, value = line.split("=", 1)
manifest[key.strip()] = value.strip()
return manifest
def get_include_dirs(self):
include_dirs = LibBuilderBase.get_include_dirs(self)
if isdir(join(self.path, "src")):
return include_dirs
if isdir(join(self.path, "utility")):
include_dirs.append(join(self.path, "utility"))
return include_dirs
@property
def src_filter(self):
if isdir(join(self.path, "src")):
return LibBuilderBase.src_filter.fget(self)
src_filter = []
is_utility = isdir(join(self.path, "utility"))
for ext in piotool.SRC_BUILD_EXT + piotool.SRC_HEADER_EXT:
src_filter.append("+<*.%s>" % ext)
if is_utility:
src_filter.append("+<utility%s*.%s>" % (sep, ext))
return src_filter
def is_frameworks_compatible(self, frameworks):
return util.items_in_list(frameworks, ["arduino", "energia"])
class MbedLibBuilder(LibBuilderBase):
def load_manifest(self):
if not isfile(join(self.path, "module.json")):
return {}
return util.load_json(join(self.path, "module.json"))
@property
def include_dir(self):
if isdir(join(self.path, "include")):
return join(self.path, "include")
return None
@property
def src_dir(self):
if isdir(join(self.path, "source")):
return join(self.path, "source")
return LibBuilderBase.src_dir.fget(self)
def get_include_dirs(self):
include_dirs = LibBuilderBase.get_include_dirs(self)
if self.path not in include_dirs:
include_dirs.append(self.path)
for p in self._manifest.get("extraIncludes", []):
include_dirs.append(join(self.path, p))
return include_dirs
def is_frameworks_compatible(self, frameworks):
return util.items_in_list(frameworks, ["mbed"])
class PlatformIOLibBuilder(LibBuilderBase):
def load_manifest(self):
assert isfile(join(self.path, "library.json"))
manifest = util.load_json(join(self.path, "library.json"))
assert "name" in manifest
# replace "espressif" old name dev/platform with ESP8266
if "platforms" in manifest:
manifest['platforms'] = [
"espressif8266" if p == "espressif" else p
for p in util.items_to_list(manifest['platforms'])
]
return manifest
def _is_arduino_manifest(self):
return isfile(join(self.path, "library.properties"))
@property
def src_dir(self):
if all([
"srcFilter" in self._manifest.get("build", {})
or self.env['SRC_FILTER'], not self._is_arduino_manifest()
]):
return self.path
return LibBuilderBase.src_dir.fget(self)
@property
def src_filter(self):
if "srcFilter" in self._manifest.get("build", {}):
return self._manifest.get("build").get("srcFilter")
elif self.env['SRC_FILTER']:
return self.env['SRC_FILTER']
elif self._is_arduino_manifest():
return ArduinoLibBuilder.src_filter.fget(self)
return LibBuilderBase.src_filter.fget(self)
@property
def build_flags(self):
if "flags" in self._manifest.get("build", {}):
return self._manifest.get("build").get("flags")
return LibBuilderBase.build_flags.fget(self)
@property
def build_unflags(self):
if "unflags" in self._manifest.get("build", {}):
return self._manifest.get("build").get("unflags")
return LibBuilderBase.build_unflags.fget(self)
@property
def extra_script(self):
if "extraScript" in self._manifest.get("build", {}):
return self._manifest.get("build").get("extraScript")
return LibBuilderBase.extra_script.fget(self)
@property
def lib_archive(self):
if "libArchive" in self._manifest.get("build", {}):
return self._manifest.get("build").get("libArchive")
return LibBuilderBase.lib_archive.fget(self)
@property
def lib_ldf_mode(self):
if "libLDFMode" in self._manifest.get("build", {}):
return self.validate_ldf_mode(
self._manifest.get("build").get("libLDFMode"))
return LibBuilderBase.lib_ldf_mode.fget(self)
@property
def lib_compat_mode(self):
if "libCompatMode" in self._manifest.get("build", {}):
return self.validate_compat_mode(
self._manifest.get("build").get("libCompatMode"))
return LibBuilderBase.lib_compat_mode.fget(self)
def is_platforms_compatible(self, platforms):
items = self._manifest.get("platforms")
if not items:
return LibBuilderBase.is_platforms_compatible(self, platforms)
return util.items_in_list(platforms, items)
def is_frameworks_compatible(self, frameworks):
items = self._manifest.get("frameworks")
if not items:
return LibBuilderBase.is_frameworks_compatible(self, frameworks)
return util.items_in_list(frameworks, items)
def get_include_dirs(self):
include_dirs = LibBuilderBase.get_include_dirs(self)
# backwards compatibility with PlatformIO 2.0
if ("build" not in self._manifest and self._is_arduino_manifest()
and not isdir(join(self.path, "src"))
and isdir(join(self.path, "utility"))):
include_dirs.append(join(self.path, "utility"))
for path in self.env.get("CPPPATH", []):
if path not in self.envorigin.get("CPPPATH", []):
include_dirs.append(self.env.subst(path))
return include_dirs
class ProjectAsLibBuilder(LibBuilderBase):
@property
def include_dir(self):
include_dir = self.env.subst("$PROJECTINCLUDE_DIR")
return include_dir if isdir(include_dir) else None
@property
def src_dir(self):
return self.env.subst("$PROJECTSRC_DIR")
def get_include_dirs(self):
include_dirs = LibBuilderBase.get_include_dirs(self)
project_include_dir = self.env.subst("$PROJECTINCLUDE_DIR")
if isdir(project_include_dir):
include_dirs.append(project_include_dir)
return include_dirs
def get_search_files(self):
# project files
items = LibBuilderBase.get_search_files(self)
# test files
if "__test" in COMMAND_LINE_TARGETS:
items.extend([
join("$PROJECTTEST_DIR",
item) for item in self.env.MatchSourceFiles(
"$PROJECTTEST_DIR", "$PIOTEST_SRC_FILTER")
])
return items
@property
def lib_ldf_mode(self):
mode = LibBuilderBase.lib_ldf_mode.fget(self)
if not mode.startswith("chain"):
return mode
# parse all project files
return "deep+" if "+" in mode else "deep"
@property
def src_filter(self):
return self.env.get("SRC_FILTER", LibBuilderBase.src_filter.fget(self))
def process_extra_options(self):
# skip for project, options are already processed
pass
def process_dependencies(self): # pylint: disable=too-many-branches
uris = self.env.get("LIB_DEPS", [])
if not uris:
return
storage_dirs = []
for lb in self.env.GetLibBuilders():
if dirname(lb.path) not in storage_dirs:
storage_dirs.append(dirname(lb.path))
for uri in uris:
found = False
for storage_dir in storage_dirs:
if found:
break
lm = LibraryManager(storage_dir)
pkg_dir = lm.get_package_dir(*lm.parse_pkg_uri(uri))
if not pkg_dir:
continue
for lb in self.env.GetLibBuilders():
if lb.path != pkg_dir:
continue
if lb not in self.depbuilders:
self.depend_recursive(lb)
found = True
break
if not found:
for lb in self.env.GetLibBuilders():
if lb.name != uri:
continue
if lb not in self.depbuilders:
self.depend_recursive(lb)
break
def build(self):
self._is_built = True # do not build Project now
self.env.AppendUnique(CPPPATH=self.get_include_dirs())
return LibBuilderBase.build(self)
def GetLibBuilders(env): # pylint: disable=too-many-branches
if "__PIO_LIB_BUILDERS" in DefaultEnvironment():
return sorted(
DefaultEnvironment()['__PIO_LIB_BUILDERS'],
key=lambda lb: 0 if lb.dependent else 1)
items = []
verbose = int(ARGUMENTS.get("PIOVERBOSE",
0)) and not env.GetOption('clean')
def _check_lib_builder(lb):
compat_mode = lb.lib_compat_mode
if lb.name in env.get("LIB_IGNORE", []):
if verbose:
sys.stderr.write("Ignored library %s\n" % lb.path)
return None
if compat_mode > 1 and not lb.is_platforms_compatible(
env['PIOPLATFORM']):
if verbose:
sys.stderr.write(
"Platform incompatible library %s\n" % lb.path)
return False
if compat_mode > 0 and "PIOFRAMEWORK" in env and \
not lb.is_frameworks_compatible(env.get("PIOFRAMEWORK", [])):
if verbose:
sys.stderr.write(
"Framework incompatible library %s\n" % lb.path)
return False
return True
found_incompat = False
for libs_dir in env['LIBSOURCE_DIRS']:
libs_dir = env.subst(libs_dir)
if not isdir(libs_dir):
continue
for item in sorted(os.listdir(libs_dir)):
if item == "__cores__" or not isdir(join(libs_dir, item)):
continue
try:
lb = LibBuilderFactory.new(
env, join(libs_dir, item), verbose=verbose)
except ValueError:
if verbose:
sys.stderr.write("Skip library with broken manifest: %s\n"
% join(libs_dir, item))
continue
if _check_lib_builder(lb):
items.append(lb)
else:
found_incompat = True
for lb in env.get("EXTRA_LIB_BUILDERS", []):
if _check_lib_builder(lb):
items.append(lb)
else:
found_incompat = True
if verbose and found_incompat:
sys.stderr.write(
"More details about \"Library Compatibility Mode\": "
"http://docs.platformio.org/page/librarymanager/ldf.html#"
"ldf-compat-mode\n")
DefaultEnvironment()['__PIO_LIB_BUILDERS'] = items
return items
def BuildProjectLibraries(env):
lib_builders = env.GetLibBuilders()
def correct_found_libs():
# build full dependency graph
found_lbs = [lb for lb in lib_builders if lb.dependent]
for lb in lib_builders:
if lb in found_lbs:
lb.search_deps_recursive(lb.get_search_files())
for lb in lib_builders:
for deplb in lb.depbuilders[:]:
if deplb not in found_lbs:
lb.depbuilders.remove(deplb)
def print_deps_tree(root, level=0):
margin = "| " * (level)
for lb in root.depbuilders:
title = "<%s>" % lb.name
vcs_info = lb.vcs_info
if lb.version:
title += " v%s" % lb.version
if vcs_info:
title += " #%s" % vcs_info.get("version")
sys.stdout.write("%s|-- %s" % (margin, title))
if int(ARGUMENTS.get("PIOVERBOSE", 0)):
if vcs_info:
sys.stdout.write(" [%s]" % vcs_info.get("url"))
sys.stdout.write(" (")
sys.stdout.write(lb.path)
sys.stdout.write(")")
sys.stdout.write("\n")
if lb.depbuilders:
print_deps_tree(lb, level + 1)
print "Collected %d compatible libraries" % len(lib_builders)
print "Scanning dependencies..."
project = ProjectAsLibBuilder(env, "$PROJECT_DIR")
project.env = env
project.search_deps_recursive()
if (LibBuilderBase.validate_ldf_mode(
env.get("LIB_LDF_MODE", LibBuilderBase.LDF_MODE_DEFAULT))
.startswith("chain") and project.depbuilders):
correct_found_libs()
if project.depbuilders:
print "Library Dependency Graph ( http://bit.ly/configure-pio-ldf )"
print_deps_tree(project)
else:
print "No dependencies"
return project.build()
def exists(_):
return True
def generate(env):
env.AddMethod(GetLibBuilders)
env.AddMethod(BuildProjectLibraries)
return env

View File

@@ -0,0 +1,333 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
import atexit
import re
import sys
from os import environ, remove, walk
from os.path import basename, isdir, isfile, join, relpath, sep
from tempfile import mkstemp
from SCons.Action import Action
from SCons.Script import ARGUMENTS
from platformio import util
from platformio.managers.core import get_core_package_dir
class InoToCPPConverter(object):
PROTOTYPE_RE = re.compile(r"""^(
(?:template\<.*\>\s*)? # template
([a-z_\d]+\*?\s+){1,2} # return type
([a-z_\d]+\s*) # name of prototype
\([a-z_,\.\*\&\[\]\s\d]*\) # arguments
)\s*\{ # must end with {
""", re.X | re.M | re.I)
DETECTMAIN_RE = re.compile(r"void\s+(setup|loop)\s*\(", re.M | re.I)
PROTOPTRS_TPLRE = r"\([^&\(]*&(%s)[^\)]*\)"
def __init__(self, env):
self.env = env
self._main_ino = None
def is_main_node(self, contents):
return self.DETECTMAIN_RE.search(contents)
def convert(self, nodes):
contents = self.merge(nodes)
if not contents:
return None
return self.process(contents)
def merge(self, nodes):
assert nodes
lines = []
for node in nodes:
contents = node.get_text_contents()
_lines = [
'# 1 "%s"' % node.get_path().replace("\\", "/"), contents
]
if self.is_main_node(contents):
lines = _lines + lines
self._main_ino = node.get_path()
else:
lines.extend(_lines)
if not self._main_ino:
self._main_ino = nodes[0].get_path()
return "\n".join(["#include <Arduino.h>"] + lines) if lines else None
def process(self, contents):
out_file = self._main_ino + ".cpp"
assert self._gcc_preprocess(contents, out_file)
with open(out_file) as fp:
contents = fp.read()
contents = self._join_multiline_strings(contents)
with open(out_file, "w") as fp:
fp.write(self.append_prototypes(contents))
return out_file
def _gcc_preprocess(self, contents, out_file):
tmp_path = mkstemp()[1]
with open(tmp_path, "w") as fp:
fp.write(contents)
self.env.Execute(
self.env.VerboseAction(
'$CXX -o "{0}" -x c++ -fpreprocessed -dD -E "{1}"'.format(
out_file,
tmp_path), "Converting " + basename(out_file[:-4])))
atexit.register(_delete_file, tmp_path)
return isfile(out_file)
def _join_multiline_strings(self, contents):
if "\\\n" not in contents:
return contents
newlines = []
linenum = 0
stropen = False
for line in contents.split("\n"):
_linenum = self._parse_preproc_line_num(line)
if _linenum is not None:
linenum = _linenum
else:
linenum += 1
if line.endswith("\\"):
if line.startswith('"'):
stropen = True
newlines.append(line[:-1])
continue
elif stropen:
newlines[len(newlines) - 1] += line[:-1]
continue
elif stropen and line.endswith(('",', '";')):
newlines[len(newlines) - 1] += line
stropen = False
newlines.append('#line %d "%s"' %
(linenum, self._main_ino.replace("\\", "/")))
continue
newlines.append(line)
return "\n".join(newlines)
@staticmethod
def _parse_preproc_line_num(line):
if not line.startswith("#"):
return None
tokens = line.split(" ", 3)
if len(tokens) > 2 and tokens[1].isdigit():
return int(tokens[1])
return None
def _parse_prototypes(self, contents):
prototypes = []
reserved_keywords = set(["if", "else", "while"])
for match in self.PROTOTYPE_RE.finditer(contents):
if (set([match.group(2).strip(),
match.group(3).strip()]) & reserved_keywords):
continue
prototypes.append(match)
return prototypes
def _get_total_lines(self, contents):
total = 0
if contents.endswith("\n"):
contents = contents[:-1]
for line in contents.split("\n")[::-1]:
linenum = self._parse_preproc_line_num(line)
if linenum is not None:
return total + linenum
total += 1
return total
def append_prototypes(self, contents):
prototypes = self._parse_prototypes(contents)
if not prototypes:
return contents
prototype_names = set([m.group(3).strip() for m in prototypes])
split_pos = prototypes[0].start()
match_ptrs = re.search(self.PROTOPTRS_TPLRE %
("|".join(prototype_names)),
contents[:split_pos], re.M)
if match_ptrs:
split_pos = contents.rfind("\n", 0, match_ptrs.start()) + 1
result = []
result.append(contents[:split_pos].strip())
result.append("%s;" % ";\n".join([m.group(1) for m in prototypes]))
result.append('#line %d "%s"' %
(self._get_total_lines(contents[:split_pos]),
self._main_ino.replace("\\", "/")))
result.append(contents[split_pos:].strip())
return "\n".join(result)
def ConvertInoToCpp(env):
src_dir = util.glob_escape(env.subst("$PROJECTSRC_DIR"))
ino_nodes = (
env.Glob(join(src_dir, "*.ino")) + env.Glob(join(src_dir, "*.pde")))
if not ino_nodes:
return
c = InoToCPPConverter(env)
out_file = c.convert(ino_nodes)
atexit.register(_delete_file, out_file)
def _delete_file(path):
try:
if isfile(path):
remove(path)
except: # pylint: disable=bare-except
pass
@util.memoized
def _get_compiler_type(env):
try:
sysenv = environ.copy()
sysenv['PATH'] = str(env['ENV']['PATH'])
result = util.exec_command([env.subst("$CC"), "-v"], env=sysenv)
except OSError:
return None
if result['returncode'] != 0:
return None
output = "".join([result['out'], result['err']]).lower()
if "clang" in output and "LLVM" in output:
return "clang"
elif "gcc" in output:
return "gcc"
return None
def GetCompilerType(env):
return _get_compiler_type(env)
def GetActualLDScript(env):
def _lookup_in_ldpath(script):
for d in env.get("LIBPATH", []):
path = join(env.subst(d), script)
if isfile(path):
return path
return None
script = None
for f in env.get("LINKFLAGS", []):
if f.startswith("-Wl,-T"):
script = env.subst(f[6:].replace('"', "").strip())
if isfile(script):
return script
path = _lookup_in_ldpath(script)
if path:
return path
if script:
sys.stderr.write(
"Error: Could not find '%s' LD script in LDPATH '%s'\n" %
(script, env.subst("$LIBPATH")))
env.Exit(1)
if not script and "LDSCRIPT_PATH" in env:
path = _lookup_in_ldpath(env['LDSCRIPT_PATH'])
if path:
return path
sys.stderr.write("Error: Could not find LD script\n")
env.Exit(1)
def VerboseAction(_, act, actstr):
if int(ARGUMENTS.get("PIOVERBOSE", 0)):
return act
return Action(act, actstr)
def PioClean(env, clean_dir):
if not isdir(clean_dir):
print "Build environment is clean"
env.Exit(0)
for root, _, files in walk(clean_dir):
for file_ in files:
remove(join(root, file_))
print "Removed %s" % relpath(join(root, file_))
print "Done cleaning"
util.rmtree_(clean_dir)
env.Exit(0)
def ProcessDebug(env):
if not env.subst("$PIODEBUGFLAGS"):
env.Replace(PIODEBUGFLAGS=["-Og", "-g3", "-ggdb3"])
env.Append(
BUILD_FLAGS=env.get("PIODEBUGFLAGS", []),
BUILD_UNFLAGS=["-Os", "-O0", "-O1", "-O2", "-O3"])
def ProcessTest(env):
env.Append(
CPPDEFINES=["UNIT_TEST", "UNITY_INCLUDE_CONFIG_H"],
CPPPATH=[join("$BUILD_DIR", "UnityTestLib")])
unitylib = env.BuildLibrary(
join("$BUILD_DIR", "UnityTestLib"), get_core_package_dir("tool-unity"))
env.Prepend(LIBS=[unitylib])
src_filter = ["+<*.cpp>", "+<*.c>"]
if "PIOTEST" in env:
src_filter.append("+<%s%s>" % (env['PIOTEST'], sep))
env.Replace(PIOTEST_SRC_FILTER=src_filter)
return env.CollectBuildFiles(
"$BUILDTEST_DIR",
"$PROJECTTEST_DIR",
"$PIOTEST_SRC_FILTER",
duplicate=False)
def GetPreExtraScripts(env):
return [
item[4:] for item in env.get("EXTRA_SCRIPTS", [])
if item.startswith("pre:")
]
def GetPostExtraScripts(env):
return [
item[5:] if item.startswith("post:") else item
for item in env.get("EXTRA_SCRIPTS", []) if not item.startswith("pre:")
]
def exists(_):
return True
def generate(env):
env.AddMethod(ConvertInoToCpp)
env.AddMethod(GetCompilerType)
env.AddMethod(GetActualLDScript)
env.AddMethod(VerboseAction)
env.AddMethod(PioClean)
env.AddMethod(ProcessDebug)
env.AddMethod(ProcessTest)
env.AddMethod(GetPreExtraScripts)
env.AddMethod(GetPostExtraScripts)
return env

View File

@@ -0,0 +1,109 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
import sys
from os.path import isdir, isfile, join
from SCons.Script import COMMAND_LINE_TARGETS
from platformio import exception, util
from platformio.managers.platform import PlatformFactory
@util.memoized
def initPioPlatform(name):
return PlatformFactory.newPlatform(name)
def PioPlatform(env):
variables = {}
for name in env['PIOVARIABLES']:
if name in env:
variables[name.lower()] = env[name]
p = initPioPlatform(env['PLATFORM_MANIFEST'])
p.configure_default_packages(variables, COMMAND_LINE_TARGETS)
return p
def BoardConfig(env, board=None):
p = initPioPlatform(env['PLATFORM_MANIFEST'])
try:
assert env.get("BOARD", board), "BoardConfig: Board is not defined"
config = p.board_config(board if board else env.get("BOARD"))
except (AssertionError, exception.UnknownBoard) as e:
sys.stderr.write("Error: %s\n" % str(e))
env.Exit(1)
return config
def GetFrameworkScript(env, framework):
p = env.PioPlatform()
assert p.frameworks and framework in p.frameworks
script_path = env.subst(p.frameworks[framework]['script'])
if not isfile(script_path):
script_path = join(p.get_dir(), script_path)
return script_path
def LoadPioPlatform(env, variables):
p = env.PioPlatform()
installed_packages = p.get_installed_packages()
# Ensure real platform name
env['PIOPLATFORM'] = p.name
# Add toolchains and uploaders to $PATH
for name in installed_packages:
type_ = p.get_package_type(name)
if type_ not in ("toolchain", "uploader"):
continue
path = p.get_package_dir(name)
if isdir(join(path, "bin")):
path = join(path, "bin")
env.PrependENVPath("PATH", path)
# Platform specific LD Scripts
if isdir(join(p.get_dir(), "ldscripts")):
env.Prepend(LIBPATH=[join(p.get_dir(), "ldscripts")])
if "BOARD" not in env:
return
board_config = env.BoardConfig()
for k in variables.keys():
if k in env or \
not any([k.startswith("BOARD_"), k.startswith("UPLOAD_")]):
continue
_opt, _val = k.lower().split("_", 1)
if _opt == "board":
_opt = "build"
if _val in board_config.get(_opt):
env.Replace(**{k: board_config.get("%s.%s" % (_opt, _val))})
if "build.ldscript" in board_config:
env.Replace(LDSCRIPT_PATH=board_config.get("build.ldscript"))
def exists(_):
return True
def generate(env):
env.AddMethod(PioPlatform)
env.AddMethod(BoardConfig)
env.AddMethod(GetFrameworkScript)
env.AddMethod(LoadPioPlatform)
return env

View File

@@ -0,0 +1,226 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
import sys
from fnmatch import fnmatch
from os import environ
from os.path import isfile, join
from platform import system
from shutil import copyfile
from time import sleep
from SCons.Node.Alias import Alias
from serial import Serial, SerialException
from platformio import util
def FlushSerialBuffer(env, port):
s = Serial(env.subst(port))
s.flushInput()
s.setDTR(False)
s.setRTS(False)
sleep(0.1)
s.setDTR(True)
s.setRTS(True)
s.close()
def TouchSerialPort(env, port, baudrate):
port = env.subst(port)
print "Forcing reset using %dbps open/close on port %s" % (baudrate, port)
try:
s = Serial(port=port, baudrate=baudrate)
s.setDTR(False)
s.close()
except: # pylint: disable=W0702
pass
sleep(0.4) # DO NOT REMOVE THAT (required by SAM-BA based boards)
def WaitForNewSerialPort(env, before):
print "Waiting for the new upload port..."
prev_port = env.subst("$UPLOAD_PORT")
new_port = None
elapsed = 0
before = [p['port'] for p in before]
while elapsed < 5 and new_port is None:
now = [p['port'] for p in util.get_serial_ports()]
for p in now:
if p not in before:
new_port = p
break
before = now
sleep(0.25)
elapsed += 0.25
if not new_port:
for p in now:
if prev_port == p:
new_port = p
break
try:
s = Serial(new_port)
s.close()
except SerialException:
sleep(1)
if not new_port:
sys.stderr.write("Error: Couldn't find a board on the selected port. "
"Check that you have the correct port selected. "
"If it is correct, try pressing the board's reset "
"button after initiating the upload.\n")
env.Exit(1)
return new_port
def AutodetectUploadPort(*args, **kwargs): # pylint: disable=unused-argument
env = args[0]
def _get_pattern():
if "UPLOAD_PORT" not in env:
return None
if set(["*", "?", "[", "]"]) & set(env['UPLOAD_PORT']):
return env['UPLOAD_PORT']
return None
def _is_match_pattern(port):
pattern = _get_pattern()
if not pattern:
return True
return fnmatch(port, pattern)
def _look_for_mbed_disk():
msdlabels = ("mbed", "nucleo", "frdm", "microbit")
for item in util.get_logical_devices():
if item['path'].startswith("/net") or not _is_match_pattern(
item['path']):
continue
mbed_pages = [
join(item['path'], n) for n in ("mbed.htm", "mbed.html")
]
if any([isfile(p) for p in mbed_pages]):
return item['path']
if item['name'] \
and any([l in item['name'].lower() for l in msdlabels]):
return item['path']
return None
def _look_for_serial_port():
port = None
board_hwids = []
upload_protocol = env.subst("$UPLOAD_PROTOCOL")
if "BOARD" in env and "build.hwids" in env.BoardConfig():
board_hwids = env.BoardConfig().get("build.hwids")
for item in util.get_serial_ports(filter_hwid=True):
if not _is_match_pattern(item['port']):
continue
port = item['port']
if upload_protocol.startswith("blackmagic") \
and "GDB" in item['description']:
return port
for hwid in board_hwids:
hwid_str = ("%s:%s" % (hwid[0], hwid[1])).replace("0x", "")
if hwid_str in item['hwid']:
return port
return port
if "UPLOAD_PORT" in env and not _get_pattern():
print env.subst("Use manually specified: $UPLOAD_PORT")
return
if "mbed" in env.subst("$PIOFRAMEWORK") \
and not env.subst("$UPLOAD_PROTOCOL"):
env.Replace(UPLOAD_PORT=_look_for_mbed_disk())
else:
if (system() == "Linux" and not any([
isfile("/etc/udev/rules.d/99-platformio-udev.rules"),
isfile("/lib/udev/rules.d/99-platformio-udev.rules")
])):
sys.stderr.write(
"\nWarning! Please install `99-platformio-udev.rules` and "
"check that your board's PID and VID are listed in the rules."
"\n https://raw.githubusercontent.com/platformio/platformio"
"/develop/scripts/99-platformio-udev.rules\n")
env.Replace(UPLOAD_PORT=_look_for_serial_port())
if env.subst("$UPLOAD_PORT"):
print env.subst("Auto-detected: $UPLOAD_PORT")
else:
sys.stderr.write(
"Error: Please specify `upload_port` for environment or use "
"global `--upload-port` option.\n"
"For some development platforms it can be a USB flash "
"drive (i.e. /media/<user>/<device name>)\n")
env.Exit(1)
def UploadToDisk(_, target, source, env): # pylint: disable=W0613,W0621
assert "UPLOAD_PORT" in env
progname = env.subst("$PROGNAME")
for ext in ("bin", "hex"):
fpath = join(env.subst("$BUILD_DIR"), "%s.%s" % (progname, ext))
if not isfile(fpath):
continue
copyfile(fpath,
join(env.subst("$UPLOAD_PORT"), "%s.%s" % (progname, ext)))
print "Firmware has been successfully uploaded.\n"\
"(Some boards may require manual hard reset)"
def CheckUploadSize(_, target, source, env): # pylint: disable=W0613,W0621
if "BOARD" not in env:
return
max_size = int(env.BoardConfig().get("upload.maximum_size", 0))
if max_size == 0 or "SIZETOOL" not in env:
return
sysenv = environ.copy()
sysenv['PATH'] = str(env['ENV']['PATH'])
cmd = [
env.subst("$SIZETOOL"), "-B",
str(source[0] if isinstance(target[0], Alias) else target[0])
]
result = util.exec_command(cmd, env=sysenv)
if result['returncode'] != 0:
return
print result['out'].strip()
line = result['out'].strip().splitlines()[1]
values = [v.strip() for v in line.split("\t")]
used_size = int(values[0]) + int(values[1])
if used_size > max_size:
sys.stderr.write("Error: The program size (%d bytes) is greater "
"than maximum allowed (%s bytes)\n" % (used_size,
max_size))
env.Exit(1)
def exists(_):
return True
def generate(env):
env.AddMethod(FlushSerialBuffer)
env.AddMethod(TouchSerialPort)
env.AddMethod(WaitForNewSerialPort)
env.AddMethod(AutodetectUploadPort)
env.AddMethod(UploadToDisk)
env.AddMethod(CheckUploadSize)
return env

View File

@@ -0,0 +1,88 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from hashlib import md5
from os import makedirs
from os.path import isdir, isfile, join
from platform import system
# Windows CLI has limit with command length to 8192
# Leave 2000 chars for flags and other options
MAX_SOURCES_LENGTH = 6000
def long_sources_hook(env, sources):
_sources = str(sources).replace("\\", "/")
if len(str(_sources)) < MAX_SOURCES_LENGTH:
return sources
# fix space in paths
data = []
for line in _sources.split(".o "):
line = line.strip()
if not line.endswith(".o"):
line += ".o"
data.append('"%s"' % line)
return '@"%s"' % _file_long_data(env, " ".join(data))
def long_incflags_hook(env, incflags):
_incflags = env.subst(incflags).replace("\\", "/")
if len(_incflags) < MAX_SOURCES_LENGTH:
return incflags
# fix space in paths
data = []
for line in _incflags.split(" -I"):
line = line.strip()
if not line.startswith("-I"):
line = "-I" + line
data.append('-I"%s"' % line[2:])
return '@"%s"' % _file_long_data(env, " ".join(data))
def _file_long_data(env, data):
build_dir = env.subst("$BUILD_DIR")
if not isdir(build_dir):
makedirs(build_dir)
tmp_file = join(build_dir, "longcmd-%s" % md5(data).hexdigest())
if isfile(tmp_file):
return tmp_file
with open(tmp_file, "w") as fp:
fp.write(data)
return tmp_file
def exists(_):
return True
def generate(env):
if system() != "Windows":
return None
env.Replace(_long_sources_hook=long_sources_hook)
env.Replace(_long_incflags_hook=long_incflags_hook)
coms = {}
for key in ("ARCOM", "LINKCOM"):
coms[key] = env.get(key, "").replace(
"$SOURCES", "${_long_sources_hook(__env__, SOURCES)}")
for key in ("_CCCOMCOM", "ASPPCOM"):
coms[key] = env.get(key, "").replace(
"$_CPPINCFLAGS", "${_long_incflags_hook(__env__, _CPPINCFLAGS)}")
env.Replace(**coms)
return env

View File

@@ -1,138 +1,281 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
import re
from os import getenv, listdir, walk
from os.path import isdir, isfile, join
import sys
from glob import glob
from os import sep, walk
from os.path import basename, dirname, isdir, join, realpath
from SCons.Script import SConscript, SConscriptChdir
from SCons.Action import Action
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
DefaultEnvironment, SConscript)
from SCons.Util import case_sensitive_suffixes, is_Sequence
from platformio.util import glob_escape, pioversion_to_intstr
SRC_HEADER_EXT = ["h", "hpp"]
SRC_C_EXT = ["c", "cc", "cpp"]
SRC_BUILD_EXT = SRC_C_EXT + ["S", "spp", "SPP", "sx", "s", "asm", "ASM"]
SRC_FILTER_DEFAULT = ["+<*>", "-<.git%s>" % sep, "-<svn%s>" % sep]
def ProcessGeneral(env):
libs = []
if "BUILD_FLAGS" in env:
env.MergeFlags(env['BUILD_FLAGS'])
def BuildProgram(env):
env.PrependENVPath(
"PATH",
join(env.subst("$PLATFORMTOOLS_DIR"), "toolchain", "bin")
)
def _append_pio_macros():
env.AppendUnique(CPPDEFINES=[(
"PLATFORMIO",
int("{0:02d}{1:02d}{2:02d}".format(*pioversion_to_intstr())))])
if "FRAMEWORK" in env:
SConscriptChdir(0)
libs = SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts",
"frameworks", "${FRAMEWORK}.py")),
exports="env")
return libs
_append_pio_macros()
# fix ASM handling under non-casitive OS
if not case_sensitive_suffixes(".s", ".S"):
env.Replace(AS="$CC", ASCOM="$ASPPCOM")
if "__debug" in COMMAND_LINE_TARGETS:
env.ProcessDebug()
# process extra flags from board
if "BOARD" in env and "build.extra_flags" in env.BoardConfig():
env.ProcessFlags(env.BoardConfig().get("build.extra_flags"))
# remove base flags
env.ProcessUnFlags(env.get("BUILD_UNFLAGS"))
# apply user flags
env.ProcessFlags(env.get("BUILD_FLAGS"))
# process framework scripts
env.BuildFrameworks(env.get("PIOFRAMEWORK"))
# restore PIO macros if it was deleted by framework
_append_pio_macros()
# build dependent libs
env.Append(LIBS=env.BuildProjectLibraries())
# append specified LD_SCRIPT
if ("LDSCRIPT_PATH" in env
and not any(["-Wl,-T" in f for f in env['LINKFLAGS']])):
env.Append(LINKFLAGS=['-Wl,-T"$LDSCRIPT_PATH"'])
# enable "cyclic reference" for linker
if env.get("LIBS") and env.GetCompilerType() == "gcc":
env.Prepend(_LIBFLAGS="-Wl,--start-group ")
env.Append(_LIBFLAGS=" -Wl,--end-group")
# Handle SRC_BUILD_FLAGS
env.ProcessFlags(env.get("SRC_BUILD_FLAGS"))
env.Append(
LIBPATH=["$BUILD_DIR"],
PIOBUILDFILES=env.CollectBuildFiles(
"$BUILDSRC_DIR",
"$PROJECTSRC_DIR",
src_filter=env.get("SRC_FILTER"),
duplicate=False))
if "__test" in COMMAND_LINE_TARGETS:
env.Append(PIOBUILDFILES=env.ProcessTest())
if not env['PIOBUILDFILES'] and not COMMAND_LINE_TARGETS:
sys.stderr.write(
"Error: Nothing to build. Please put your source code files "
"to '%s' folder\n" % env.subst("$PROJECTSRC_DIR"))
env.Exit(1)
program = env.Program(
join("$BUILD_DIR", env.subst("$PROGNAME")), env['PIOBUILDFILES'])
checksize_action = Action(env.CheckUploadSize, "Checking program size")
AlwaysBuild(env.Alias("checkprogsize", program, checksize_action))
if set(["upload", "program"]) & set(COMMAND_LINE_TARGETS):
env.AddPostAction(program, checksize_action)
return program
def BuildLibrary(env, variant_dir, library_dir):
lib = env.Clone()
vdirs = lib.VariantDirRecursive(variant_dir, library_dir)
return lib.Library(
lib.subst(variant_dir),
[lib.GlobCXXFiles(vdir) for vdir in vdirs]
)
def BuildDependentLibraries(env, src_dir):
libs = []
for deplibfile in env.GetDependentLibraries(src_dir):
for lsd_dir in env['LIBSOURCE_DIRS']:
lsd_dir = env.subst(lsd_dir)
if not isdir(lsd_dir):
continue
for libname in listdir(lsd_dir):
if not isfile(join(lsd_dir, libname, deplibfile)):
continue
_libbuild_dir = join("$BUILD_DIR", libname)
env.Append(CPPPATH=[_libbuild_dir])
libs.append(
env.BuildLibrary(_libbuild_dir, join(lsd_dir, libname)))
return libs
def BuildFirmware(env, libslist):
src = env.Clone()
vdirs = src.VariantDirRecursive(
join("$BUILD_DIR", "src"), join("$PROJECT_DIR", "src"))
# build source's dependent libs
for vdir in vdirs:
_libs = src.BuildDependentLibraries(vdir)
if _libs:
libslist += _libs
src.MergeFlags(getenv("PIOSRCBUILD_FLAGS", "$SRCBUILD_FLAGS"))
return src.Program(
join("$BUILD_DIR", "firmware"),
[src.GlobCXXFiles(vdir) for vdir in vdirs],
LIBS=libslist,
LIBPATH="$BUILD_DIR",
PROGSUFFIX=".elf")
def GlobCXXFiles(env, path):
files = []
for suff in ["*.c", "*.cpp", "*.S"]:
_list = env.Glob(join(path, suff))
if _list:
files += _list
return files
def GetDependentLibraries(env, src_dir):
deplibs = []
regexp = re.compile(r"^#include\s+<([^>]+)>", re.M)
for node in env.GlobCXXFiles(src_dir):
deplibs += regexp.findall(node.get_text_contents())
return deplibs
def VariantDirRecursive(env, variant_dir, src_dir, duplicate=True):
# add root dir by default
variants = [variant_dir]
env.VariantDir(variant_dir, src_dir, duplicate)
for root, dirnames, _ in walk(env.subst(src_dir)):
if not dirnames:
def ProcessFlags(env, flags): # pylint: disable=too-many-branches
if not flags:
return
if isinstance(flags, list):
flags = " ".join(flags)
parsed_flags = env.ParseFlags(str(flags))
for flag in parsed_flags.pop("CPPDEFINES"):
if not is_Sequence(flag):
env.Append(CPPDEFINES=flag)
continue
for dn in dirnames:
env.VariantDir(join(variant_dir, dn), join(root, dn), duplicate)
variants.append(join(variant_dir, dn))
return variants
_key, _value = flag[:2]
if '\"' in _value:
_value = _value.replace('\"', '\\\"')
elif _value.isdigit():
_value = int(_value)
elif _value.replace(".", "", 1).isdigit():
_value = float(_value)
env.Append(CPPDEFINES=(_key, _value))
env.Append(**parsed_flags)
# fix relative CPPPATH & LIBPATH
for k in ("CPPPATH", "LIBPATH"):
for i, p in enumerate(env.get(k, [])):
if isdir(p):
env[k][i] = realpath(p)
# fix relative path for "-include"
for i, f in enumerate(env.get("CCFLAGS", [])):
if isinstance(f, tuple) and f[0] == "-include":
env['CCFLAGS'][i] = (f[0], env.File(realpath(f[1].get_path())))
# Cancel any previous definition of name, either built in or
# provided with a -D option // Issue #191
undefines = [
u for u in env.get("CCFLAGS", [])
if isinstance(u, basestring) and u.startswith("-U")
]
if undefines:
for undef in undefines:
env['CCFLAGS'].remove(undef)
env.Append(_CPPDEFFLAGS=" %s" % " ".join(undefines))
def ParseBoardOptions(env, path, name):
path = env.subst(path)
name = env.subst(name)
if not isfile(path):
env.Exit("Invalid path to boards.txt -> %s" % path)
def ProcessUnFlags(env, flags):
if not flags:
return
if isinstance(flags, list):
flags = " ".join(flags)
parsed_flags = env.ParseFlags(str(flags))
all_flags = []
for items in parsed_flags.values():
all_flags.extend(items)
all_flags = set(all_flags)
data = {}
with open(path) as f:
for line in f:
if not line.strip() or line[0] == "#":
continue
for key in parsed_flags:
cur_flags = set(env.Flatten(env.get(key, [])))
for item in cur_flags & all_flags:
while item in env[key]:
env[key].remove(item)
_group = line[:line.index(".")]
_cpu = name[len(_group):]
line = line[len(_group)+1:].strip()
if _group != name[:len(_group)]:
continue
elif "menu.cpu." in line:
if _cpu not in line:
continue
else:
line = line[len(_cpu)+10:]
if "=" in line:
opt, value = line.split("=", 1)
data[opt] = value
if not data:
env.Exit("Unknown Board '%s'" % name)
else:
return data
def IsFileWithExt(env, file_, ext): # pylint: disable=W0613
if basename(file_).startswith("."):
return False
for e in ext:
if file_.endswith(".%s" % e):
return True
return False
def MatchSourceFiles(env, src_dir, src_filter=None):
SRC_FILTER_PATTERNS_RE = re.compile(r"(\+|\-)<([^>]+)>")
def _append_build_item(items, item, src_dir):
if env.IsFileWithExt(item, SRC_BUILD_EXT + SRC_HEADER_EXT):
items.add(item.replace(src_dir + sep, ""))
src_dir = env.subst(src_dir)
src_filter = env.subst(src_filter) if src_filter else None
src_filter = src_filter or SRC_FILTER_DEFAULT
if isinstance(src_filter, (list, tuple)):
src_filter = " ".join(src_filter)
matches = set()
# correct fs directory separator
src_filter = src_filter.replace("/", sep).replace("\\", sep)
for (action, pattern) in SRC_FILTER_PATTERNS_RE.findall(src_filter):
items = set()
for item in glob(join(glob_escape(src_dir), pattern)):
if isdir(item):
for root, _, files in walk(item, followlinks=True):
for f in files:
_append_build_item(items, join(root, f), src_dir)
else:
_append_build_item(items, item, src_dir)
if action == "+":
matches |= items
else:
matches -= items
return sorted(list(matches))
def CollectBuildFiles(env,
variant_dir,
src_dir,
src_filter=None,
duplicate=False):
sources = []
variants = []
src_dir = env.subst(src_dir)
if src_dir.endswith(sep):
src_dir = src_dir[:-1]
for item in env.MatchSourceFiles(src_dir, src_filter):
_reldir = dirname(item)
_src_dir = join(src_dir, _reldir) if _reldir else src_dir
_var_dir = join(variant_dir, _reldir) if _reldir else variant_dir
if _var_dir not in variants:
variants.append(_var_dir)
env.VariantDir(_var_dir, _src_dir, duplicate)
if env.IsFileWithExt(item, SRC_BUILD_EXT):
sources.append(env.File(join(_var_dir, basename(item))))
return sources
def BuildFrameworks(env, frameworks):
if not frameworks:
return
if "BOARD" not in env:
sys.stderr.write("Please specify `board` in `platformio.ini` to use "
"with '%s' framework\n" % ", ".join(frameworks))
env.Exit(1)
board_frameworks = env.BoardConfig().get("frameworks", [])
if frameworks == ["platformio"]:
if board_frameworks:
frameworks.insert(0, board_frameworks[0])
else:
sys.stderr.write(
"Error: Please specify `board` in `platformio.ini`\n")
env.Exit(1)
for f in frameworks:
if f in ("arduino", "energia"):
env.ConvertInoToCpp()
if f in board_frameworks:
SConscript(env.GetFrameworkScript(f))
else:
sys.stderr.write(
"Error: This board doesn't support %s framework!\n" % f)
env.Exit(1)
def BuildLibrary(env, variant_dir, src_dir, src_filter=None):
lib = env.Clone()
return lib.StaticLibrary(
lib.subst(variant_dir),
lib.CollectBuildFiles(variant_dir, src_dir, src_filter))
def BuildSources(env, variant_dir, src_dir, src_filter=None):
DefaultEnvironment().Append(PIOBUILDFILES=env.Clone().CollectBuildFiles(
variant_dir, src_dir, src_filter))
def exists(_):
@@ -140,12 +283,13 @@ def exists(_):
def generate(env):
env.AddMethod(ProcessGeneral)
env.AddMethod(BuildProgram)
env.AddMethod(ProcessFlags)
env.AddMethod(ProcessUnFlags)
env.AddMethod(IsFileWithExt)
env.AddMethod(MatchSourceFiles)
env.AddMethod(CollectBuildFiles)
env.AddMethod(BuildFrameworks)
env.AddMethod(BuildLibrary)
env.AddMethod(BuildDependentLibraries)
env.AddMethod(BuildFirmware)
env.AddMethod(GlobCXXFiles)
env.AddMethod(GetDependentLibraries)
env.AddMethod(VariantDirRecursive)
env.AddMethod(ParseBoardOptions)
env.AddMethod(BuildSources)
return env

View File

@@ -1,2 +1,13 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

View File

@@ -0,0 +1,72 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# pylint: disable=unused-argument
import sys
import click
from platformio.managers.core import pioplus_call
@click.group("account", short_help="Manage PIO Account")
def cli():
pass
@cli.command("register", short_help="Create new PIO Account")
@click.option("-u", "--username")
def account_register(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("login", short_help="Log in to PIO Account")
@click.option("-u", "--username")
@click.option("-p", "--password")
def account_login(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("logout", short_help="Log out of PIO Account")
def account_logout():
pioplus_call(sys.argv[1:])
@cli.command("password", short_help="Change password")
@click.option("--old-password")
@click.option("--new-password")
def account_password(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("token", short_help="Get or regenerate Authentication Token")
@click.option("-p", "--password")
@click.option("--regenerate", is_flag=True)
@click.option("--json-output", is_flag=True)
def account_token(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("forgot", short_help="Forgot password")
@click.option("-u", "--username")
def account_forgot(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("show", short_help="PIO Account information")
@click.option("--offline", is_flag=True)
@click.option("--json-output", is_flag=True)
def account_show(**kwargs):
pioplus_call(sys.argv[1:])

View File

@@ -0,0 +1,95 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
import click
from platformio.managers.platform import PlatformManager
@click.command("boards", short_help="Embedded Board Explorer")
@click.argument("query", required=False)
@click.option("--installed", is_flag=True)
@click.option("--json-output", is_flag=True)
def cli(query, installed, json_output): # pylint: disable=R0912
if json_output:
return _print_boards_json(query, installed)
grpboards = {}
for board in _get_boards(installed):
if query and query.lower() not in json.dumps(board).lower():
continue
if board['platform'] not in grpboards:
grpboards[board['platform']] = []
grpboards[board['platform']].append(board)
terminal_width, _ = click.get_terminal_size()
for (platform, boards) in sorted(grpboards.items()):
click.echo("")
click.echo("Platform: ", nl=False)
click.secho(platform, bold=True)
click.echo("-" * terminal_width)
print_boards(boards)
return True
def print_boards(boards):
terminal_width, _ = click.get_terminal_size()
BOARDLIST_TPL = ("{type:<30} {mcu:<14} {frequency:<8} "
" {flash:<7} {ram:<6} {name}")
click.echo(
BOARDLIST_TPL.format(
type=click.style("ID", fg="cyan"),
mcu="MCU",
frequency="Frequency",
flash="Flash",
ram="RAM",
name="Name"))
click.echo("-" * terminal_width)
for board in boards:
ram_size = board['ram']
if ram_size >= 1024:
if ram_size % 1024:
ram_size = "%.1fkB" % (ram_size / 1024.0)
else:
ram_size = "%dkB" % (ram_size / 1024)
else:
ram_size = "%dB" % ram_size
click.echo(
BOARDLIST_TPL.format(
type=click.style(board['id'], fg="cyan"),
mcu=board['mcu'],
frequency="%dMhz" % (board['fcpu'] / 1000000),
flash="%dkB" % (board['rom'] / 1024),
ram=ram_size,
name=board['name']))
def _get_boards(installed=False):
pm = PlatformManager()
return pm.get_installed_boards() if installed else pm.get_all_boards()
def _print_boards_json(query, installed=False):
result = []
for board in _get_boards(installed):
if query:
search_data = "%s %s" % (board['id'], json.dumps(board).lower())
if query.lower() not in search_data.lower():
continue
result.append(board)
click.echo(json.dumps(result))

169
platformio/commands/ci.py Normal file
View File

@@ -0,0 +1,169 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from glob import glob
from os import getenv, makedirs, remove
from os.path import abspath, basename, expanduser, isdir, isfile, join
from shutil import copyfile, copytree
from tempfile import mkdtemp
import click
from platformio import app, util
from platformio.commands.init import cli as cmd_init
from platformio.commands.init import validate_boards
from platformio.commands.run import cli as cmd_run
from platformio.exception import CIBuildEnvsEmpty
def validate_path(ctx, param, value): # pylint: disable=unused-argument
invalid_path = None
value = list(value)
for i, p in enumerate(value):
if p.startswith("~"):
value[i] = expanduser(p)
value[i] = abspath(value[i])
if not glob(value[i]):
invalid_path = p
break
try:
assert invalid_path is None
return value
except AssertionError:
raise click.BadParameter("Found invalid path: %s" % invalid_path)
@click.command("ci", short_help="Continuous Integration")
@click.argument("src", nargs=-1, callback=validate_path)
@click.option(
"-l", "--lib", multiple=True, callback=validate_path, metavar="DIRECTORY")
@click.option("--exclude", multiple=True)
@click.option(
"-b", "--board", multiple=True, metavar="ID", callback=validate_boards)
@click.option(
"--build-dir",
default=mkdtemp,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("--keep-build-dir", is_flag=True)
@click.option(
"-C",
"--project-conf",
type=click.Path(
exists=True,
file_okay=True,
dir_okay=False,
readable=True,
resolve_path=True))
@click.option("-O", "--project-option", multiple=True)
@click.option("-v", "--verbose", is_flag=True)
@click.pass_context
def cli( # pylint: disable=too-many-arguments
ctx, src, lib, exclude, board, build_dir, keep_build_dir, project_conf,
project_option, verbose):
if not src and getenv("PLATFORMIO_CI_SRC"):
src = validate_path(ctx, None, getenv("PLATFORMIO_CI_SRC").split(":"))
if not src:
raise click.BadParameter("Missing argument 'src'")
try:
app.set_session_var("force_option", True)
_clean_dir(build_dir)
for dir_name, patterns in dict(lib=lib, src=src).iteritems():
if not patterns:
continue
contents = []
for p in patterns:
contents += glob(p)
_copy_contents(join(build_dir, dir_name), contents)
if project_conf and isfile(project_conf):
_copy_project_conf(build_dir, project_conf)
elif not board:
raise CIBuildEnvsEmpty()
if exclude:
_exclude_contents(build_dir, exclude)
# initialise project
ctx.invoke(
cmd_init,
project_dir=build_dir,
board=board,
project_option=project_option)
# process project
ctx.invoke(cmd_run, project_dir=build_dir, verbose=verbose)
finally:
if not keep_build_dir:
util.rmtree_(build_dir)
def _clean_dir(dirpath):
util.rmtree_(dirpath)
makedirs(dirpath)
def _copy_contents(dst_dir, contents):
items = {"dirs": set(), "files": set()}
for path in contents:
if isdir(path):
items['dirs'].add(path)
elif isfile(path):
items['files'].add(path)
dst_dir_name = basename(dst_dir)
if dst_dir_name == "src" and len(items['dirs']) == 1:
copytree(list(items['dirs']).pop(), dst_dir, symlinks=True)
else:
makedirs(dst_dir)
for d in items['dirs']:
copytree(d, join(dst_dir, basename(d)), symlinks=True)
if not items['files']:
return
if dst_dir_name == "lib":
dst_dir = join(dst_dir, mkdtemp(dir=dst_dir))
for f in items['files']:
copyfile(f, join(dst_dir, basename(f)))
def _exclude_contents(dst_dir, patterns):
contents = []
for p in patterns:
contents += glob(join(util.glob_escape(dst_dir), p))
for path in contents:
path = abspath(path)
if isdir(path):
util.rmtree_(path)
elif isfile(path):
remove(path)
def _copy_project_conf(build_dir, project_conf):
config = util.load_project_config(project_conf)
if config.has_section("platformio"):
config.remove_section("platformio")
with open(join(build_dir, "platformio.ini"), "w") as fp:
config.write(fp)

View File

@@ -0,0 +1,42 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from os import getcwd
import click
from platformio.managers.core import pioplus_call
@click.command(
"debug",
context_settings=dict(ignore_unknown_options=True),
short_help="PIO Unified Debugger")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("--environment", "-e", metavar="<environment>")
@click.option("--verbose", "-v", is_flag=True)
@click.option("--interface", type=click.Choice(["gdb"]))
@click.argument("__unprocessed", nargs=-1, type=click.UNPROCESSED)
def cli(*args, **kwargs): # pylint: disable=unused-argument
pioplus_call(sys.argv[1:])

View File

@@ -0,0 +1,226 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
import sys
from os import getcwd
import click
from serial.tools import miniterm
from platformio import exception, util
@click.group(short_help="Monitor device or list existing")
def cli():
pass
@cli.command("list", short_help="List devices")
@click.option("--serial", is_flag=True, help="List serial ports, default")
@click.option("--logical", is_flag=True, help="List logical devices")
@click.option("--mdns", is_flag=True, help="List multicast DNS services")
@click.option("--json-output", is_flag=True)
def device_list( # pylint: disable=too-many-branches
serial, logical, mdns, json_output):
if not logical and not mdns:
serial = True
data = {}
if serial:
data['serial'] = util.get_serial_ports()
if logical:
data['logical'] = util.get_logical_devices()
if mdns:
data['mdns'] = util.get_mdns_services()
single_key = data.keys()[0] if len(data.keys()) == 1 else None
if json_output:
return click.echo(json.dumps(data[single_key] if single_key else data))
titles = {
"serial": "Serial Ports",
"logical": "Logical Devices",
"mdns": "Multicast DNS Services"
}
for key, value in data.iteritems():
if not single_key:
click.secho(titles[key], bold=True)
click.echo("=" * len(titles[key]))
if key == "serial":
for item in value:
click.secho(item['port'], fg="cyan")
click.echo("-" * len(item['port']))
click.echo("Hardware ID: %s" % item['hwid'])
click.echo("Description: %s" % item['description'])
click.echo("")
if key == "logical":
for item in value:
click.secho(item['path'], fg="cyan")
click.echo("-" * len(item['path']))
click.echo("Name: %s" % item['name'])
click.echo("")
if key == "mdns":
for item in value:
click.secho(item['name'], fg="cyan")
click.echo("-" * len(item['name']))
click.echo("Type: %s" % item['type'])
click.echo("IP: %s" % item['ip'])
click.echo("Port: %s" % item['port'])
if item['properties']:
click.echo("Properties: %s" % ("; ".join([
"%s=%s" % (k, v)
for k, v in item['properties'].iteritems()
])))
click.echo("")
if single_key:
click.echo("")
return True
@cli.command("monitor", short_help="Monitor device (Serial)")
@click.option("--port", "-p", help="Port, a number or a device name")
@click.option("--baud", "-b", type=int, help="Set baud rate, default=9600")
@click.option(
"--parity",
default="N",
type=click.Choice(["N", "E", "O", "S", "M"]),
help="Set parity, default=N")
@click.option(
"--rtscts", is_flag=True, help="Enable RTS/CTS flow control, default=Off")
@click.option(
"--xonxoff",
is_flag=True,
help="Enable software flow control, default=Off")
@click.option(
"--rts",
default=None,
type=click.IntRange(0, 1),
help="Set initial RTS line state")
@click.option(
"--dtr",
default=None,
type=click.IntRange(0, 1),
help="Set initial DTR line state")
@click.option("--echo", is_flag=True, help="Enable local echo, default=Off")
@click.option(
"--encoding",
default="UTF-8",
help="Set the encoding for the serial port (e.g. hexlify, "
"Latin1, UTF-8), default: UTF-8")
@click.option("--filter", "-f", multiple=True, help="Add text transformation")
@click.option(
"--eol",
default="CRLF",
type=click.Choice(["CR", "LF", "CRLF"]),
help="End of line mode, default=CRLF")
@click.option(
"--raw", is_flag=True, help="Do not apply any encodings/transformations")
@click.option(
"--exit-char",
type=int,
default=3,
help="ASCII code of special character that is used to exit "
"the application, default=3 (Ctrl+C)")
@click.option(
"--menu-char",
type=int,
default=20,
help="ASCII code of special character that is used to "
"control miniterm (menu), default=20 (DEC)")
@click.option(
"--quiet",
is_flag=True,
help="Diagnostics: suppress non-error messages, default=Off")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True, file_okay=False, dir_okay=True, resolve_path=True))
@click.option(
"-e",
"--environment",
help="Load configuration from `platformio.ini` and specified environment")
def device_monitor(**kwargs): # pylint: disable=too-many-branches
try:
project_options = get_project_options(kwargs['project_dir'],
kwargs['environment'])
monitor_options = {k: v for k, v in project_options or []}
if monitor_options:
for k in ("port", "baud", "rts", "dtr"):
k2 = "monitor_%s" % k
if kwargs[k] is None and k2 in monitor_options:
kwargs[k] = monitor_options[k2]
if k != "port":
kwargs[k] = int(kwargs[k])
except exception.NotPlatformIOProject:
pass
if not kwargs['port']:
ports = util.get_serial_ports(filter_hwid=True)
if len(ports) == 1:
kwargs['port'] = ports[0]['port']
sys.argv = ["monitor"]
for k, v in kwargs.iteritems():
if k in ("port", "baud", "rts", "dtr", "environment", "project_dir"):
continue
k = "--" + k.replace("_", "-")
if isinstance(v, bool):
if v:
sys.argv.append(k)
elif isinstance(v, tuple):
for i in v:
sys.argv.extend([k, i])
else:
sys.argv.extend([k, str(v)])
try:
miniterm.main(
default_port=kwargs['port'],
default_baudrate=kwargs['baud'] or 9600,
default_rts=kwargs['rts'],
default_dtr=kwargs['dtr'])
except Exception as e:
raise exception.MinitermException(e)
def get_project_options(project_dir, environment):
config = util.load_project_config(project_dir)
if not config.sections():
return None
known_envs = [s[4:] for s in config.sections() if s.startswith("env:")]
if environment:
if environment in known_envs:
return config.items("env:%s" % environment)
raise exception.UnknownEnvNames(environment, ", ".join(known_envs))
if not known_envs:
return None
if config.has_option("platformio", "env_default"):
env_default = config.get("platformio",
"env_default").split(", ")[0].strip()
if env_default and env_default in known_envs:
return config.items("env:%s" % env_default)
return config.items("env:%s" % known_envs[0])

View File

@@ -0,0 +1,42 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
import click
import requests
from platformio.managers.core import pioplus_call
@click.command("home", short_help="PIO Home")
@click.option("--port", type=int, default=8008, help="HTTP port, default=8008")
@click.option(
"--host",
default="127.0.0.1",
help="HTTP host, default=127.0.0.1. "
"You can open PIO Home for inbound connections with --host=0.0.0.0")
@click.option("--no-open", is_flag=True)
def cli(*args, **kwargs): # pylint: disable=unused-argument
pioplus_call(sys.argv[1:])
def shutdown_servers():
port = 8010
while port < 9000:
try:
requests.get("http://127.0.0.1:%d?__shutdown__=1" % port)
port += 1
except: # pylint: disable=bare-except
return

View File

@@ -1,30 +1,341 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from os import makedirs
# pylint: disable=too-many-arguments,too-many-locals, too-many-branches
from os import getcwd, makedirs
from os.path import isdir, isfile, join
from shutil import copyfile
from click import command, secho
import click
from platformio.exception import ProjectInitialized
from platformio.util import get_source_dir
from platformio import exception, util
from platformio.commands.platform import \
platform_install as cli_platform_install
from platformio.ide.projectgenerator import ProjectGenerator
from platformio.managers.platform import PlatformManager
@command("init", short_help="Initialize new PlatformIO based project")
def cli():
def validate_boards(ctx, param, value): # pylint: disable=W0613
pm = PlatformManager()
for id_ in value:
try:
pm.board_config(id_)
except exception.UnknownBoard:
raise click.BadParameter(
"`%s`. Please search for board ID using `platformio boards` "
"command" % id_)
return value
if isfile("platformio.ini") and isdir("src"):
raise ProjectInitialized()
for d in ("lib", "src"):
@click.command(
"init", short_help="Initialize PlatformIO project or update existing")
@click.option(
"--project-dir",
"-d",
default=getcwd,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option(
"-b", "--board", multiple=True, metavar="ID", callback=validate_boards)
@click.option(
"--ide", type=click.Choice(ProjectGenerator.get_supported_ides()))
@click.option("-O", "--project-option", multiple=True)
@click.option("--env-prefix", default="")
@click.option("-s", "--silent", is_flag=True)
@click.pass_context
def cli(
ctx, # pylint: disable=R0913
project_dir,
board,
ide,
project_option,
env_prefix,
silent):
if not silent:
if project_dir == getcwd():
click.secho(
"\nThe current working directory", fg="yellow", nl=False)
click.secho(" %s " % project_dir, fg="cyan", nl=False)
click.secho(
"will be used for project.\n"
"You can specify another project directory via\n"
"`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.",
fg="yellow")
click.echo("")
click.echo("The next files/directories have been created in %s" %
click.style(project_dir, fg="cyan"))
click.echo("%s - Project Configuration File" % click.style(
"platformio.ini", fg="cyan"))
click.echo(
"%s - Put your source files here" % click.style("src", fg="cyan"))
click.echo("%s - Put here project specific (private) libraries" %
click.style("lib", fg="cyan"))
init_base_project(project_dir)
if board:
fill_project_envs(ctx, project_dir, board, project_option, env_prefix,
ide is not None)
if ide:
env_name = get_best_envname(project_dir, board)
if not env_name:
raise exception.BoardNotDefined()
pg = ProjectGenerator(project_dir, ide, env_name)
pg.generate()
if not silent:
click.secho(
"\nProject has been successfully initialized!\nUseful commands:\n"
"`platformio run` - process/build project from the current "
"directory\n"
"`platformio run --target upload` or `platformio run -t upload` "
"- upload firmware to embedded board\n"
"`platformio run --target clean` - clean project (remove compiled "
"files)\n"
"`platformio run --help` - additional information",
fg="green")
def get_best_envname(project_dir, boards=None):
config = util.load_project_config(project_dir)
env_default = None
if config.has_option("platformio", "env_default"):
env_default = config.get("platformio",
"env_default").split(", ")[0].strip()
if env_default:
return env_default
section = None
for section in config.sections():
if not section.startswith("env:"):
continue
elif config.has_option(section, "board") and (not boards or config.get(
section, "board") in boards):
break
return section[4:] if section else None
def init_base_project(project_dir):
if not util.is_platformio_project(project_dir):
copyfile(
join(util.get_source_dir(), "projectconftpl.ini"),
join(project_dir, "platformio.ini"))
lib_dir = join(project_dir, "lib")
src_dir = join(project_dir, "src")
config = util.load_project_config(project_dir)
if config.has_option("platformio", "src_dir"):
src_dir = join(project_dir, config.get("platformio", "src_dir"))
for d in (src_dir, lib_dir):
if not isdir(d):
makedirs(d)
if not isfile("platformio.ini"):
copyfile(join(get_source_dir(), "projectconftpl.ini"),
"platformio.ini")
secho("Project has been initialized!\n"
"Please put your source code to `src` directory, "
"external libraries to `lib` and "
"setup environments in `platformio.ini` file.\n"
"Then process project with `platformio run` command.",
fg="green")
init_lib_readme(lib_dir)
init_ci_conf(project_dir)
init_cvs_ignore(project_dir)
def init_lib_readme(lib_dir):
if isfile(join(lib_dir, "readme.txt")):
return
with open(join(lib_dir, "readme.txt"), "w") as f:
f.write("""
This directory is intended for the project specific (private) libraries.
PlatformIO will compile them to static libraries and link to executable file.
The source code of each library should be placed in separate directory, like
"lib/private_lib/[here are source files]".
For example, see how can be organized `Foo` and `Bar` libraries:
|--lib
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |- readme.txt --> THIS FILE
|- platformio.ini
|--src
|- main.c
Then in `src/main.c` you should use:
#include <Foo.h>
#include <Bar.h>
// rest H/C/CPP code
PlatformIO will find your libraries automatically, configure preprocessor's
include paths and build them.
More information about PlatformIO Library Dependency Finder
- http://docs.platformio.org/page/librarymanager/ldf.html
""")
def init_ci_conf(project_dir):
if isfile(join(project_dir, ".travis.yml")):
return
with open(join(project_dir, ".travis.yml"), "w") as f:
f.write("""# Continuous Integration (CI) is the practice, in software
# engineering, of merging all developer working copies with a shared mainline
# several times a day < http://docs.platformio.org/page/ci/index.html >
#
# Documentation:
#
# * Travis CI Embedded Builds with PlatformIO
# < https://docs.travis-ci.com/user/integration/platformio/ >
#
# * PlatformIO integration with Travis CI
# < http://docs.platformio.org/page/ci/travis.html >
#
# * User Guide for `platformio ci` command
# < http://docs.platformio.org/page/userguide/cmd_ci.html >
#
#
# Please choice one of the following templates (proposed below) and uncomment
# it (remove "# " before each line) or use own configuration according to the
# Travis CI documentation (see above).
#
#
# Template #1: General project. Test it using existing `platformio.ini`.
#
# language: python
# python:
# - "2.7"
#
# install:
# - pip install -U platformio
#
# script:
# - platformio run
#
# Template #2: The project is intended to by used as a library with examples
#
# language: python
# python:
# - "2.7"
#
# env:
# - PLATFORMIO_CI_SRC=path/to/test/file.c
# - PLATFORMIO_CI_SRC=examples/file.ino
# - PLATFORMIO_CI_SRC=path/to/test/directory
#
# install:
# - pip install -U platformio
#
# script:
# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N
""")
def init_cvs_ignore(project_dir):
ignore_path = join(project_dir, ".gitignore")
default = [".pioenvs\n", ".piolibdeps\n"]
current = []
modified = False
if isfile(ignore_path):
with open(ignore_path) as fp:
current = fp.readlines()
if current and not current[-1].endswith("\n"):
current[-1] += "\n"
for d in default:
if d not in current:
modified = True
current.append(d)
if not modified:
return
with open(ignore_path, "w") as fp:
fp.writelines(current)
def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
force_download):
content = []
used_boards = []
used_platforms = []
config = util.load_project_config(project_dir)
for section in config.sections():
cond = [
section.startswith("env:"),
config.has_option(section, "board")
]
if all(cond):
used_boards.append(config.get(section, "board"))
pm = PlatformManager()
for id_ in board_ids:
board_config = pm.board_config(id_)
used_platforms.append(board_config['platform'])
if id_ in used_boards:
continue
used_boards.append(id_)
envopts = {"platform": board_config['platform'], "board": id_}
# find default framework for board
frameworks = board_config.get("frameworks")
if frameworks:
envopts['framework'] = frameworks[0]
for item in project_option:
if "=" not in item:
continue
_name, _value = item.split("=", 1)
envopts[_name.strip()] = _value.strip()
content.append("")
content.append("[env:%s%s]" % (env_prefix, id_))
for name, value in envopts.items():
content.append("%s = %s" % (name, value))
if force_download and used_platforms:
_install_dependent_platforms(ctx, used_platforms)
if not content:
return
with open(join(project_dir, "platformio.ini"), "a") as f:
content.append("")
f.write("\n".join(content))
def _install_dependent_platforms(ctx, platforms):
installed_platforms = [
p['name'] for p in PlatformManager().get_installed()
]
if set(platforms) <= set(installed_platforms):
return
ctx.invoke(
cli_platform_install,
platforms=list(set(platforms) - set(installed_platforms)))

View File

@@ -1,20 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from click import argument, command, option, secho
from platformio.platforms.base import PlatformFactory
@command("install", short_help="Install new platforms")
@argument("platforms", nargs=-1)
@option("--with-package", multiple=True, metavar="<package>")
@option("--without-package", multiple=True, metavar="<package>")
@option("--skip-default-package", is_flag=True)
def cli(platforms, with_package, without_package, skip_default_package):
for platform in platforms:
p = PlatformFactory().newPlatform(platform)
if p.install(with_package, without_package, skip_default_package):
secho("The platform '%s' has been successfully installed!" %
platform, fg="green")

471
platformio/commands/lib.py Normal file
View File

@@ -0,0 +1,471 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# pylint: disable=too-many-branches, too-many-locals
import json
import time
from os.path import isdir, join
from urllib import quote
import click
from platformio import exception, util
from platformio.managers.lib import LibraryManager, get_builtin_libs
from platformio.util import get_api_result
@click.group(short_help="Library Manager")
@click.option(
"-g",
"--global",
is_flag=True,
help="Manage global PlatformIO library storage")
@click.option(
"-d",
"--storage-dir",
default=None,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True),
help="Manage custom library storage")
@click.pass_context
def cli(ctx, **options):
non_storage_cmds = ("search", "show", "register", "stats", "builtin")
# skip commands that don't need storage folder
if ctx.invoked_subcommand in non_storage_cmds or \
(len(ctx.args) == 2 and ctx.args[1] in ("-h", "--help")):
return
storage_dir = options['storage_dir']
if not storage_dir:
if options['global']:
storage_dir = join(util.get_home_dir(), "lib")
elif util.is_platformio_project():
storage_dir = util.get_projectlibdeps_dir()
elif util.is_ci():
storage_dir = join(util.get_home_dir(), "lib")
click.secho(
"Warning! Global library storage is used automatically. "
"Please use `platformio lib --global %s` command to remove "
"this warning." % ctx.invoked_subcommand,
fg="yellow")
elif util.is_platformio_project(storage_dir):
with util.cd(storage_dir):
storage_dir = util.get_projectlibdeps_dir()
if not storage_dir and not util.is_platformio_project():
raise exception.NotGlobalLibDir(util.get_project_dir(),
join(util.get_home_dir(), "lib"),
ctx.invoked_subcommand)
ctx.obj = LibraryManager(storage_dir)
if "--json-output" not in ctx.args:
click.echo("Library Storage: " + storage_dir)
@cli.command("install", short_help="Install library")
@click.argument("libraries", required=False, nargs=-1, metavar="[LIBRARY...]")
# @click.option(
# "--save",
# is_flag=True,
# help="Save installed libraries into the project's platformio.ini "
# "library dependencies")
@click.option(
"-s", "--silent", is_flag=True, help="Suppress progress reporting")
@click.option(
"--interactive",
is_flag=True,
help="Allow to make a choice for all prompts")
@click.option(
"-f",
"--force",
is_flag=True,
help="Reinstall/redownload library if exists")
@click.pass_obj
def lib_install(lm, libraries, silent, interactive, force):
# @TODO: "save" option
for library in libraries:
lm.install(
library, silent=silent, interactive=interactive, force=force)
@cli.command("uninstall", short_help="Uninstall libraries")
@click.argument("libraries", nargs=-1, metavar="[LIBRARY...]")
@click.pass_obj
def lib_uninstall(lm, libraries):
for library in libraries:
lm.uninstall(library)
@cli.command("update", short_help="Update installed libraries")
@click.argument("libraries", required=False, nargs=-1, metavar="[LIBRARY...]")
@click.option(
"-c",
"--only-check",
is_flag=True,
help="Do not update, only check for new version")
@click.option("--json-output", is_flag=True)
@click.pass_obj
def lib_update(lm, libraries, only_check, json_output):
if not libraries:
libraries = [manifest['__pkg_dir'] for manifest in lm.get_installed()]
if only_check and json_output:
result = []
for library in libraries:
pkg_dir = library if isdir(library) else None
requirements = None
url = None
if not pkg_dir:
name, requirements, url = lm.parse_pkg_uri(library)
pkg_dir = lm.get_package_dir(name, requirements, url)
if not pkg_dir:
continue
latest = lm.outdated(pkg_dir, requirements)
if not latest:
continue
manifest = lm.load_manifest(pkg_dir)
manifest['versionLatest'] = latest
result.append(manifest)
return click.echo(json.dumps(result))
else:
for library in libraries:
lm.update(library, only_check=only_check)
return True
def print_lib_item(item):
click.secho(item['name'], fg="cyan")
click.echo("=" * len(item['name']))
if "id" in item:
click.secho("#ID: %d" % item['id'], bold=True)
if "description" in item or "url" in item:
click.echo(item.get("description", item.get("url", "")))
click.echo()
for key in ("version", "homepage", "license", "keywords"):
if key not in item or not item[key]:
continue
if isinstance(item[key], list):
click.echo("%s: %s" % (key.title(), ", ".join(item[key])))
else:
click.echo("%s: %s" % (key.title(), item[key]))
for key in ("frameworks", "platforms"):
if key not in item:
continue
click.echo("Compatible %s: %s" % (key, ", ".join(
[i['title'] if isinstance(i, dict) else i for i in item[key]])))
if "authors" in item or "authornames" in item:
click.echo("Authors: %s" % ", ".join(
item.get("authornames",
[a.get("name", "") for a in item.get("authors", [])])))
if "__src_url" in item:
click.secho("Source: %s" % item['__src_url'])
click.echo()
@cli.command("search", short_help="Search for a library")
@click.argument("query", required=False, nargs=-1)
@click.option("--json-output", is_flag=True)
@click.option("--page", type=click.INT, default=1)
@click.option("-n", "--name", multiple=True)
@click.option("-a", "--author", multiple=True)
@click.option("-k", "--keyword", multiple=True)
@click.option("-f", "--framework", multiple=True)
@click.option("-p", "--platform", multiple=True)
@click.option("-i", "--header", multiple=True)
@click.option(
"--noninteractive",
is_flag=True,
help="Do not prompt, automatically paginate with delay")
def lib_search(query, json_output, page, noninteractive, **filters):
if not query:
query = []
if not isinstance(query, list):
query = list(query)
for key, values in filters.iteritems():
for value in values:
query.append('%s:"%s"' % (key, value))
result = get_api_result(
"/v2/lib/search",
dict(query=" ".join(query), page=page),
cache_valid="1d")
if json_output:
click.echo(json.dumps(result))
return
if result['total'] == 0:
click.secho(
"Nothing has been found by your request\n"
"Try a less-specific search or use truncation (or wildcard) "
"operator",
fg="yellow",
nl=False)
click.secho(" *", fg="green")
click.secho("For example: DS*, PCA*, DHT* and etc.\n", fg="yellow")
click.echo("For more examples and advanced search syntax, "
"please use documentation:")
click.secho(
"http://docs.platformio.org/page/userguide/lib/cmd_search.html\n",
fg="cyan")
return
click.secho(
"Found %d libraries:\n" % result['total'],
fg="green" if result['total'] else "yellow")
while True:
for item in result['items']:
print_lib_item(item)
if (int(result['page']) * int(result['perpage']) >= int(
result['total'])):
break
if noninteractive:
click.echo()
click.secho(
"Loading next %d libraries... Press Ctrl+C to stop!" %
result['perpage'],
fg="yellow")
click.echo()
time.sleep(5)
elif not click.confirm("Show next libraries?"):
break
result = get_api_result(
"/v2/lib/search",
{"query": " ".join(query),
"page": int(result['page']) + 1},
cache_valid="1d")
@cli.command("list", short_help="List installed libraries")
@click.option("--json-output", is_flag=True)
@click.pass_obj
def lib_list(lm, json_output):
items = lm.get_installed()
if json_output:
return click.echo(json.dumps(items))
if not items:
return None
for item in sorted(items, key=lambda i: i['name']):
print_lib_item(item)
return True
@cli.command("builtin", short_help="List built-in libraries")
@click.option("--storage", multiple=True)
@click.option("--json-output", is_flag=True)
def lib_builtin(storage, json_output):
items = get_builtin_libs(storage)
if json_output:
return click.echo(json.dumps(items))
for storage_ in items:
if not storage_['items']:
continue
click.secho(storage_['name'], fg="green")
click.echo("*" * len(storage_['name']))
click.echo()
for item in sorted(storage_['items'], key=lambda i: i['name']):
print_lib_item(item)
return True
@cli.command("show", short_help="Show detailed info about a library")
@click.argument("library", metavar="[LIBRARY]")
@click.option("--json-output", is_flag=True)
def lib_show(library, json_output):
lm = LibraryManager()
name, requirements, _ = lm.parse_pkg_uri(library)
lib_id = lm.search_lib_id(
{
"name": name,
"requirements": requirements
},
silent=json_output,
interactive=not json_output)
lib = get_api_result("/lib/info/%d" % lib_id, cache_valid="1d")
if json_output:
return click.echo(json.dumps(lib))
click.secho(lib['name'], fg="cyan")
click.echo("=" * len(lib['name']))
click.secho("#ID: %d" % lib['id'], bold=True)
click.echo(lib['description'])
click.echo()
click.echo(
"Version: %s, released %s" %
(lib['version']['name'],
time.strftime("%c", util.parse_date(lib['version']['released']))))
click.echo("Manifest: %s" % lib['confurl'])
for key in ("homepage", "repository", "license"):
if key not in lib or not lib[key]:
continue
if isinstance(lib[key], list):
click.echo("%s: %s" % (key.title(), ", ".join(lib[key])))
else:
click.echo("%s: %s" % (key.title(), lib[key]))
blocks = []
_authors = []
for author in lib.get("authors", []):
_data = []
for key in ("name", "email", "url", "maintainer"):
if not author[key]:
continue
if key == "email":
_data.append("<%s>" % author[key])
elif key == "maintainer":
_data.append("(maintainer)")
else:
_data.append(author[key])
_authors.append(" ".join(_data))
if _authors:
blocks.append(("Authors", _authors))
blocks.append(("Keywords", lib['keywords']))
for key in ("frameworks", "platforms"):
if key not in lib or not lib[key]:
continue
blocks.append(("Compatible %s" % key, [i['title'] for i in lib[key]]))
blocks.append(("Headers", lib['headers']))
blocks.append(("Examples", lib['examples']))
blocks.append(("Versions", [
"%s, released %s" %
(v['name'], time.strftime("%c", util.parse_date(v['released'])))
for v in lib['versions']
]))
blocks.append(("Unique Downloads", [
"Today: %s" % lib['dlstats']['day'],
"Week: %s" % lib['dlstats']['week'],
"Month: %s" % lib['dlstats']['month']
]))
for (title, rows) in blocks:
click.echo()
click.secho(title, bold=True)
click.echo("-" * len(title))
for row in rows:
click.echo(row)
return True
@cli.command("register", short_help="Register a new library")
@click.argument("config_url")
def lib_register(config_url):
if (not config_url.startswith("http://")
and not config_url.startswith("https://")):
raise exception.InvalidLibConfURL(config_url)
result = get_api_result("/lib/register", data=dict(config_url=config_url))
if "message" in result and result['message']:
click.secho(
result['message'],
fg="green"
if "successed" in result and result['successed'] else "red")
@cli.command("stats", short_help="Library Registry Statistics")
@click.option("--json-output", is_flag=True)
def lib_stats(json_output):
result = get_api_result("/lib/stats", cache_valid="1h")
if json_output:
return click.echo(json.dumps(result))
printitem_tpl = "{name:<33} {url}"
printitemdate_tpl = "{name:<33} {date:23} {url}"
def _print_title(title):
click.secho(title.upper(), bold=True)
click.echo("*" * len(title))
def _print_header(with_date=False):
click.echo((printitemdate_tpl if with_date else printitem_tpl).format(
name=click.style("Name", fg="cyan"),
date="Date",
url=click.style("Url", fg="blue")))
terminal_width, _ = click.get_terminal_size()
click.echo("-" * terminal_width)
def _print_lib_item(item):
click.echo((printitemdate_tpl
if "date" in item else printitem_tpl).format(
name=click.style(item['name'], fg="cyan"),
date=str(
time.strftime("%c", util.parse_date(item['date']))
if "date" in item else ""),
url=click.style(
"http://platformio.org/lib/show/%s/%s" %
(item['id'], quote(item['name'])),
fg="blue")))
def _print_tag_item(name):
click.echo(
printitem_tpl.format(
name=click.style(name, fg="cyan"),
url=click.style(
"http://platformio.org/lib/search?query=" +
quote("keyword:%s" % name),
fg="blue")))
for key in ("updated", "added"):
_print_title("Recently " + key)
_print_header(with_date=True)
for item in result.get(key, []):
_print_lib_item(item)
click.echo()
_print_title("Recent keywords")
_print_header(with_date=False)
for item in result.get("lastkeywords"):
_print_tag_item(item)
click.echo()
_print_title("Popular keywords")
_print_header(with_date=False)
for item in result.get("topkeywords"):
_print_tag_item(item)
click.echo()
for key, title in (("dlday", "Today"), ("dlweek", "Week"), ("dlmonth",
"Month")):
_print_title("Featured: " + title)
_print_header(with_date=False)
for item in result.get(key, []):
_print_lib_item(item)
click.echo()
return True

View File

@@ -1,16 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from click import command, echo, style
from platformio.pkgmanager import PackageManager
@command("list", short_help="List installed platforms")
def cli():
for name, pkgs in PackageManager.get_installed().items():
echo("{name:<20} with packages: {pkgs}".format(
name=style(name, fg="cyan"),
pkgs=", ".join(pkgs.keys())
))

View File

@@ -0,0 +1,387 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
from os.path import dirname, isdir
import click
from platformio import app, exception, util
from platformio.commands.boards import print_boards
from platformio.managers.platform import PlatformFactory, PlatformManager
@click.group(short_help="Platform Manager")
def cli():
pass
def _print_platforms(platforms):
for platform in platforms:
click.echo("{name} ~ {title}".format(
name=click.style(platform['name'], fg="cyan"),
title=platform['title']))
click.echo("=" * (3 + len(platform['name'] + platform['title'])))
click.echo(platform['description'])
click.echo()
if "homepage" in platform:
click.echo("Home: %s" % platform['homepage'])
if "frameworks" in platform and platform['frameworks']:
click.echo("Frameworks: %s" % ", ".join(platform['frameworks']))
if "packages" in platform:
click.echo("Packages: %s" % ", ".join(platform['packages']))
if "version" in platform:
click.echo("Version: " + platform['version'])
click.echo()
def _get_registry_platforms():
platforms = util.get_api_result("/platforms", cache_valid="7d")
pm = PlatformManager()
for platform in platforms or []:
platform['versions'] = pm.get_all_repo_versions(platform['name'])
return platforms
def _original_version(version):
if version.count(".") != 2:
return None
_, y = version.split(".")[:2]
if int(y) < 100:
return None
if len(y) % 2 != 0:
y = "0" + y
parts = [str(int(y[i * 2:i * 2 + 2])) for i in range(len(y) / 2)]
return ".".join(parts)
def _get_platform_data(*args, **kwargs):
try:
return _get_installed_platform_data(*args, **kwargs)
except exception.UnknownPlatform:
return _get_registry_platform_data(*args, **kwargs)
def _get_installed_platform_data(platform,
with_boards=True,
expose_packages=True):
p = PlatformFactory.newPlatform(platform)
data = dict(
name=p.name,
title=p.title,
description=p.description,
version=p.version,
homepage=p.homepage,
repository=p.repository_url,
url=p.vendor_url,
license=p.license,
forDesktop=not p.is_embedded(),
frameworks=sorted(p.frameworks.keys() if p.frameworks else []),
packages=p.packages.keys() if p.packages else [])
# if dump to API
# del data['version']
# return data
# overwrite VCS version and add extra fields
manifest = PlatformManager().load_manifest(dirname(p.manifest_path))
assert manifest
for key in manifest:
if key == "version" or key.startswith("__"):
data[key] = manifest[key]
if with_boards:
data['boards'] = [c.get_brief_data() for c in p.get_boards().values()]
if not data['packages'] or not expose_packages:
return data
data['packages'] = []
installed_pkgs = p.get_installed_packages()
for name, opts in p.packages.items():
item = dict(
name=name,
type=p.get_package_type(name),
requirements=opts.get("version"),
optional=opts.get("optional") is True)
if name in installed_pkgs:
for key, value in installed_pkgs[name].items():
if key not in ("url", "version", "description"):
continue
item[key] = value
if key == "version":
item["originalVersion"] = _original_version(value)
data['packages'].append(item)
return data
def _get_registry_platform_data( # pylint: disable=unused-argument
platform,
with_boards=True,
expose_packages=True):
_data = None
for p in _get_registry_platforms():
if p['name'] == platform:
_data = p
break
if not _data:
return None
data = dict(
name=_data['name'],
title=_data['title'],
description=_data['description'],
homepage=_data['homepage'],
repository=_data['repository'],
url=_data['url'],
license=_data['license'],
forDesktop=_data['forDesktop'],
frameworks=_data['frameworks'],
packages=_data['packages'],
versions=_data['versions'])
if with_boards:
data['boards'] = [
board for board in PlatformManager().get_registered_boards()
if board['platform'] == _data['name']
]
return data
@cli.command("search", short_help="Search for development platform")
@click.argument("query", required=False)
@click.option("--json-output", is_flag=True)
def platform_search(query, json_output):
platforms = []
for platform in _get_registry_platforms():
if query == "all":
query = ""
search_data = json.dumps(platform)
if query and query.lower() not in search_data.lower():
continue
platforms.append(
_get_registry_platform_data(
platform['name'], with_boards=False, expose_packages=False))
if json_output:
click.echo(json.dumps(platforms))
else:
_print_platforms(platforms)
@cli.command("frameworks", short_help="List supported frameworks, SDKs")
@click.argument("query", required=False)
@click.option("--json-output", is_flag=True)
def platform_frameworks(query, json_output):
frameworks = []
for framework in util.get_api_result("/frameworks", cache_valid="7d"):
if query == "all":
query = ""
search_data = json.dumps(framework)
if query and query.lower() not in search_data.lower():
continue
framework['homepage'] = (
"http://platformio.org/frameworks/" + framework['name'])
framework['platforms'] = [
platform['name'] for platform in _get_registry_platforms()
if framework['name'] in platform['frameworks']
]
frameworks.append(framework)
frameworks = sorted(frameworks, key=lambda manifest: manifest['name'])
if json_output:
click.echo(json.dumps(frameworks))
else:
_print_platforms(frameworks)
@cli.command("list", short_help="List installed development platforms")
@click.option("--json-output", is_flag=True)
def platform_list(json_output):
platforms = []
pm = PlatformManager()
for manifest in pm.get_installed():
platforms.append(
_get_installed_platform_data(
manifest['__pkg_dir'],
with_boards=False,
expose_packages=False))
platforms = sorted(platforms, key=lambda manifest: manifest['name'])
if json_output:
click.echo(json.dumps(platforms))
else:
_print_platforms(platforms)
@cli.command("show", short_help="Show details about development platform")
@click.argument("platform")
@click.option("--json-output", is_flag=True)
def platform_show(platform, json_output): # pylint: disable=too-many-branches
data = _get_platform_data(platform)
if not data:
raise exception.UnknownPlatform(platform)
if json_output:
return click.echo(json.dumps(data))
click.echo("{name} ~ {title}".format(
name=click.style(data['name'], fg="cyan"), title=data['title']))
click.echo("=" * (3 + len(data['name'] + data['title'])))
click.echo(data['description'])
click.echo()
if "version" in data:
click.echo("Version: %s" % data['version'])
if data['homepage']:
click.echo("Home: %s" % data['homepage'])
if data['repository']:
click.echo("Repository: %s" % data['repository'])
if data['url']:
click.echo("Vendor: %s" % data['url'])
if data['license']:
click.echo("License: %s" % data['license'])
if data['frameworks']:
click.echo("Frameworks: %s" % ", ".join(data['frameworks']))
if not data['packages']:
return None
if not isinstance(data['packages'][0], dict):
click.echo("Packages: %s" % ", ".join(data['packages']))
else:
click.echo()
click.secho("Packages", bold=True)
click.echo("--------")
for item in data['packages']:
click.echo()
click.echo("Package %s" % click.style(item['name'], fg="yellow"))
click.echo("-" * (8 + len(item['name'])))
if item['type']:
click.echo("Type: %s" % item['type'])
click.echo("Requirements: %s" % item['requirements'])
click.echo("Installed: %s" %
("Yes" if item.get("version") else "No (optional)"))
if "version" in item:
click.echo("Version: %s" % item['version'])
if "originalVersion" in item:
click.echo("Original version: %s" % item['originalVersion'])
if "description" in item:
click.echo("Description: %s" % item['description'])
if data['boards']:
click.echo()
click.secho("Boards", bold=True)
click.echo("------")
print_boards(data['boards'])
return True
@cli.command("install", short_help="Install new development platform")
@click.argument("platforms", nargs=-1, required=True, metavar="[PLATFORM...]")
@click.option("--with-package", multiple=True)
@click.option("--without-package", multiple=True)
@click.option("--skip-default-package", is_flag=True)
@click.option(
"-f",
"--force",
is_flag=True,
help="Reinstall/redownload dev/platform and its packages if exist")
def platform_install(platforms, with_package, without_package,
skip_default_package, force):
pm = PlatformManager()
for platform in platforms:
if pm.install(
name=platform,
with_packages=with_package,
without_packages=without_package,
skip_default_package=skip_default_package,
force=force):
click.secho(
"The platform '%s' has been successfully installed!\n"
"The rest of packages will be installed automatically "
"depending on your build environment." % platform,
fg="green")
@cli.command("uninstall", short_help="Uninstall development platform")
@click.argument("platforms", nargs=-1, required=True, metavar="[PLATFORM...]")
def platform_uninstall(platforms):
pm = PlatformManager()
for platform in platforms:
if pm.uninstall(platform):
click.secho(
"The platform '%s' has been successfully "
"uninstalled!" % platform,
fg="green")
@cli.command("update", short_help="Update installed development platforms")
@click.argument("platforms", nargs=-1, required=False, metavar="[PLATFORM...]")
@click.option(
"-p",
"--only-packages",
is_flag=True,
help="Update only the platform packages")
@click.option(
"-c",
"--only-check",
is_flag=True,
help="Do not update, only check for a new version")
@click.option("--json-output", is_flag=True)
def platform_update(platforms, only_packages, only_check, json_output):
pm = PlatformManager()
pkg_dir_to_name = {}
if not platforms:
platforms = []
for manifest in pm.get_installed():
platforms.append(manifest['__pkg_dir'])
pkg_dir_to_name[manifest['__pkg_dir']] = manifest.get(
"title", manifest['name'])
if only_check and json_output:
result = []
for platform in platforms:
pkg_dir = platform if isdir(platform) else None
requirements = None
url = None
if not pkg_dir:
name, requirements, url = pm.parse_pkg_uri(platform)
pkg_dir = pm.get_package_dir(name, requirements, url)
if not pkg_dir:
continue
latest = pm.outdated(pkg_dir, requirements)
if (not latest and not PlatformFactory.newPlatform(pkg_dir)
.are_outdated_packages()):
continue
data = _get_installed_platform_data(
pkg_dir, with_boards=False, expose_packages=False)
if latest:
data['versionLatest'] = latest
result.append(data)
return click.echo(json.dumps(result))
else:
# cleanup cached board and platform lists
app.clean_cache()
for platform in platforms:
click.echo("Platform %s" % click.style(
pkg_dir_to_name.get(platform, platform), fg="cyan"))
click.echo("--------")
pm.update(
platform, only_packages=only_packages, only_check=only_check)
click.echo()
return True

View File

@@ -0,0 +1,209 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
import threading
from os import getcwd
from os.path import isfile, join
from tempfile import mkdtemp
from time import sleep
import click
from platformio import exception, util
from platformio.commands.device import device_monitor as cmd_device_monitor
from platformio.managers.core import pioplus_call
# pylint: disable=unused-argument
@click.group("remote", short_help="PIO Remote")
@click.option("-a", "--agent", multiple=True)
def cli(**kwargs):
pass
@cli.group("agent", short_help="Start new agent or list active")
def remote_agent():
pass
@remote_agent.command("start", short_help="Start agent")
@click.option("-n", "--name")
@click.option("-s", "--share", multiple=True, metavar="E-MAIL")
@click.option(
"-d",
"--working-dir",
envvar="PLATFORMIO_REMOTE_AGENT_DIR",
type=click.Path(
file_okay=False, dir_okay=True, writable=True, resolve_path=True))
def remote_agent_start(**kwargs):
pioplus_call(sys.argv[1:])
@remote_agent.command("reload", short_help="Reload agents")
def remote_agent_reload():
pioplus_call(sys.argv[1:])
@remote_agent.command("list", short_help="List active agents")
def remote_agent_list():
pioplus_call(sys.argv[1:])
@cli.command(
"update", short_help="Update installed Platforms, Packages and Libraries")
@click.option(
"-c",
"--only-check",
is_flag=True,
help="Do not update, only check for new version")
def remote_update(only_check):
pioplus_call(sys.argv[1:])
@cli.command("run", short_help="Process project environments remotely")
@click.option("-e", "--environment", multiple=True)
@click.option("-t", "--target", multiple=True)
@click.option("--upload-port")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True,
file_okay=True,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("--disable-auto-clean", is_flag=True)
@click.option("-r", "--force-remote", is_flag=True)
@click.option("-s", "--silent", is_flag=True)
@click.option("-v", "--verbose", is_flag=True)
def remote_run(**kwargs):
pioplus_call(sys.argv[1:])
@cli.command("test", short_help="Remote Unit Testing")
@click.option("--environment", "-e", multiple=True, metavar="<environment>")
@click.option("--ignore", "-i", multiple=True, metavar="<pattern>")
@click.option("--upload-port")
@click.option("--test-port")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("-r", "--force-remote", is_flag=True)
@click.option("--without-building", is_flag=True)
@click.option("--without-uploading", is_flag=True)
@click.option("--verbose", "-v", is_flag=True)
def remote_test(**kwargs):
pioplus_call(sys.argv[1:])
@cli.group("device", short_help="Monitor remote device or list existing")
def remote_device():
pass
@remote_device.command("list", short_help="List remote devices")
@click.option("--json-output", is_flag=True)
def device_list(json_output):
pioplus_call(sys.argv[1:])
@remote_device.command("monitor", short_help="Monitor remote device")
@click.option("--port", "-p", help="Port, a number or a device name")
@click.option(
"--baud", "-b", type=int, default=9600, help="Set baud rate, default=9600")
@click.option(
"--parity",
default="N",
type=click.Choice(["N", "E", "O", "S", "M"]),
help="Set parity, default=N")
@click.option(
"--rtscts", is_flag=True, help="Enable RTS/CTS flow control, default=Off")
@click.option(
"--xonxoff",
is_flag=True,
help="Enable software flow control, default=Off")
@click.option(
"--rts",
default=None,
type=click.IntRange(0, 1),
help="Set initial RTS line state")
@click.option(
"--dtr",
default=None,
type=click.IntRange(0, 1),
help="Set initial DTR line state")
@click.option("--echo", is_flag=True, help="Enable local echo, default=Off")
@click.option(
"--encoding",
default="UTF-8",
help="Set the encoding for the serial port (e.g. hexlify, "
"Latin1, UTF-8), default: UTF-8")
@click.option("--filter", "-f", multiple=True, help="Add text transformation")
@click.option(
"--eol",
default="CRLF",
type=click.Choice(["CR", "LF", "CRLF"]),
help="End of line mode, default=CRLF")
@click.option(
"--raw", is_flag=True, help="Do not apply any encodings/transformations")
@click.option(
"--exit-char",
type=int,
default=3,
help="ASCII code of special character that is used to exit "
"the application, default=3 (Ctrl+C)")
@click.option(
"--menu-char",
type=int,
default=20,
help="ASCII code of special character that is used to "
"control miniterm (menu), default=20 (DEC)")
@click.option(
"--quiet",
is_flag=True,
help="Diagnostics: suppress non-error messages, default=Off")
@click.pass_context
def device_monitor(ctx, **kwargs):
def _tx_target(sock_dir):
try:
pioplus_call(sys.argv[1:] + ["--sock", sock_dir])
except exception.ReturnErrorCode:
pass
sock_dir = mkdtemp(suffix="pioplus")
sock_file = join(sock_dir, "sock")
try:
t = threading.Thread(target=_tx_target, args=(sock_dir, ))
t.start()
while t.is_alive() and not isfile(sock_file):
sleep(0.1)
if not t.is_alive():
return
kwargs['port'] = open(sock_file).read()
ctx.invoke(cmd_device_monitor, **kwargs)
t.join(2)
finally:
util.rmtree_(sock_dir)

View File

@@ -1,59 +1,416 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from click import command, echo, option, secho, style
from datetime import datetime
from hashlib import sha1
from os import getcwd, makedirs, walk
from os.path import getmtime, isdir, isfile, join
from time import time
from platformio.exception import (InvalidEnvName, ProjectEnvsNotAvaialable,
UndefinedEnvPlatform, UnknownEnvNames)
from platformio.platforms.base import PlatformFactory
from platformio.util import get_project_config
import click
from platformio import __version__, exception, telemetry, util
from platformio.commands.device import device_monitor as cmd_device_monitor
from platformio.commands.lib import lib_install as cmd_lib_install
from platformio.commands.platform import \
platform_install as cmd_platform_install
from platformio.managers.lib import LibraryManager, is_builtin_lib
from platformio.managers.platform import PlatformFactory
# pylint: disable=too-many-arguments,too-many-locals,too-many-branches
@command("run", short_help="Process project environments")
@option("--environment", "-e", multiple=True, metavar="<environment>")
@option("--target", "-t", multiple=True, metavar="<target>")
@option("--upload-port", metavar="<upload port>")
def cli(environment, target, upload_port):
@click.command("run", short_help="Process project environments")
@click.option("-e", "--environment", multiple=True)
@click.option("-t", "--target", multiple=True)
@click.option("--upload-port")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True,
file_okay=True,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("-s", "--silent", is_flag=True)
@click.option("-v", "--verbose", is_flag=True)
@click.option("--disable-auto-clean", is_flag=True)
@click.pass_context
def cli(ctx, environment, target, upload_port, project_dir, silent, verbose,
disable_auto_clean):
# find project directory on upper level
if isfile(project_dir):
project_dir = util.find_project_dir_above(project_dir)
config = get_project_config()
if not util.is_platformio_project(project_dir):
raise exception.NotPlatformIOProject(project_dir)
if not config.sections():
raise ProjectEnvsNotAvaialable()
with util.cd(project_dir):
# clean obsolete build dir
if not disable_auto_clean:
try:
_clean_build_dir(util.get_projectbuild_dir())
except: # pylint: disable=bare-except
click.secho(
"Can not remove temporary directory `%s`. Please remove "
"it manually to avoid build issues" %
util.get_projectbuild_dir(force=True),
fg="yellow")
unknown = set(environment) - set([s[4:] for s in config.sections()])
if unknown:
raise UnknownEnvNames(", ".join(unknown))
config = util.load_project_config()
check_project_defopts(config)
assert check_project_envs(config, environment)
for section in config.sections():
if section[:4] != "env:":
raise InvalidEnvName(section)
env_default = None
if config.has_option("platformio", "env_default"):
env_default = util.parse_conf_multi_values(
config.get("platformio", "env_default"))
envname = section[4:]
if environment and envname not in environment:
# echo("Skipped %s environment" % style(envname, fg="yellow"))
continue
echo("Processing %s environment:" % style(envname, fg="cyan"))
variables = ["PIOENV=" + envname]
if upload_port:
variables.append("UPLOAD_PORT=%s" % upload_port)
for k, v in config.items(section):
k = k.upper()
if k == "TARGETS" or (k == "UPLOAD_PORT" and upload_port):
results = []
start_time = time()
for section in config.sections():
if not section.startswith("env:"):
continue
variables.append("%s=%s" % (k.upper(), v))
envtargets = []
if target:
envtargets = [t for t in target]
elif config.has_option(section, "targets"):
envtargets = config.get(section, "targets").split()
envname = section[4:]
skipenv = any([
environment and envname not in environment, not environment
and env_default and envname not in env_default
])
if skipenv:
results.append((envname, None))
continue
if not config.has_option(section, "platform"):
raise UndefinedEnvPlatform(envname)
if not silent and results:
click.echo()
p = PlatformFactory().newPlatform(config.get(section, "platform"))
result = p.run(variables, envtargets)
secho(result['out'], fg="green")
secho(result['err'], fg="red")
options = {}
for k, v in config.items(section):
options[k] = v
if "piotest" not in options and "piotest" in ctx.meta:
options['piotest'] = ctx.meta['piotest']
ep = EnvironmentProcessor(ctx, envname, options, target,
upload_port, silent, verbose)
result = (envname, ep.process())
results.append(result)
if result[1] and "monitor" in ep.get_build_targets() and \
"nobuild" not in ep.get_build_targets():
ctx.invoke(cmd_device_monitor)
found_error = any([status is False for (_, status) in results])
if (found_error or not silent) and len(results) > 1:
click.echo()
print_summary(results, start_time)
if found_error:
raise exception.ReturnErrorCode(1)
return True
class EnvironmentProcessor(object):
KNOWN_OPTIONS = ("platform", "framework", "board", "board_mcu",
"board_f_cpu", "board_f_flash", "board_flash_mode",
"build_flags", "src_build_flags", "build_unflags",
"src_filter", "extra_scripts", "targets", "upload_port",
"upload_protocol", "upload_speed", "upload_flags",
"upload_resetmethod", "lib_deps", "lib_ignore",
"lib_extra_dirs", "lib_ldf_mode", "lib_compat_mode",
"lib_archive", "piotest", "test_transport", "test_filter",
"test_ignore", "test_port", "test_speed", "debug_tool",
"debug_port", "debug_init_cmds", "debug_extra_cmds",
"debug_server", "debug_init_break", "debug_load_cmd",
"monitor_port", "monitor_baud", "monitor_rts",
"monitor_dtr")
IGNORE_BUILD_OPTIONS = ("test_transport", "test_filter", "test_ignore",
"test_port", "test_speed", "debug_tool",
"debug_port", "debug_init_cmds",
"debug_extra_cmds", "debug_server",
"debug_init_break", "debug_load_cmd",
"monitor_port", "monitor_baud", "monitor_rts",
"monitor_dtr")
REMAPED_OPTIONS = {"framework": "pioframework", "platform": "pioplatform"}
RENAMED_OPTIONS = {
"lib_use": "lib_deps",
"lib_force": "lib_deps",
"extra_script": "extra_scripts"
}
RENAMED_PLATFORMS = {"espressif": "espressif8266"}
def __init__(
self, # pylint: disable=R0913
cmd_ctx,
name,
options,
targets,
upload_port,
silent,
verbose):
self.cmd_ctx = cmd_ctx
self.name = name
self.options = options
self.targets = targets
self.upload_port = upload_port
self.silent = silent
self.verbose = verbose
def process(self):
terminal_width, _ = click.get_terminal_size()
start_time = time()
for k, v in self.options.items():
self.options[k] = self.options[k].strip()
if not self.silent:
click.echo("[%s] Processing %s (%s)" %
(datetime.now().strftime("%c"),
click.style(self.name, fg="cyan", bold=True),
"; ".join([
"%s: %s" %
(k, ", ".join(util.parse_conf_multi_values(v)))
for k, v in self.options.items()
])))
click.secho("-" * terminal_width, bold=True)
self.options = self._validate_options(self.options)
result = self._run()
is_error = result['returncode'] != 0
if self.silent and not is_error:
return True
if is_error or "piotest_processor" not in self.cmd_ctx.meta:
print_header(
"[%s] Took %.2f seconds" %
((click.style("ERROR", fg="red", bold=True)
if is_error else click.style(
"SUCCESS", fg="green", bold=True)), time() - start_time),
is_error=is_error)
return not is_error
def _validate_options(self, options):
result = {}
for k, v in options.items():
# process obsolete options
if k in self.RENAMED_OPTIONS:
click.secho(
"Warning! `%s` option is deprecated and will be "
"removed in the next release! Please use "
"`%s` instead." % (k, self.RENAMED_OPTIONS[k]),
fg="yellow")
k = self.RENAMED_OPTIONS[k]
# process renamed platforms
if k == "platform" and v in self.RENAMED_PLATFORMS:
click.secho(
"Warning! Platform `%s` is deprecated and will be "
"removed in the next release! Please use "
"`%s` instead." % (v, self.RENAMED_PLATFORMS[v]),
fg="yellow")
v = self.RENAMED_PLATFORMS[v]
# warn about unknown options
if k not in self.KNOWN_OPTIONS and not k.startswith("custom_"):
click.secho(
"Detected non-PlatformIO `%s` option in `[env:%s]` section"
% (k, self.name),
fg="yellow")
result[k] = v
return result
def get_build_variables(self):
variables = {"pioenv": self.name}
if self.upload_port:
variables['upload_port'] = self.upload_port
for k, v in self.options.items():
if k in self.REMAPED_OPTIONS:
k = self.REMAPED_OPTIONS[k]
if k in self.IGNORE_BUILD_OPTIONS:
continue
if k == "targets" or (k == "upload_port" and self.upload_port):
continue
variables[k] = v
return variables
def get_build_targets(self):
targets = []
if self.targets:
targets = [t for t in self.targets]
elif "targets" in self.options:
targets = self.options['targets'].split(", ")
return targets
def _run(self):
if "platform" not in self.options:
raise exception.UndefinedEnvPlatform(self.name)
build_vars = self.get_build_variables()
build_targets = self.get_build_targets()
telemetry.on_run_environment(self.options, build_targets)
# skip monitor target, we call it above
if "monitor" in build_targets:
build_targets.remove("monitor")
if "nobuild" not in build_targets:
# install dependent libraries
if "lib_install" in self.options:
_autoinstall_libdeps(self.cmd_ctx, [
int(d.strip())
for d in self.options['lib_install'].split(",")
if d.strip()
], self.verbose)
if "lib_deps" in self.options:
_autoinstall_libdeps(self.cmd_ctx,
util.parse_conf_multi_values(
self.options['lib_deps']),
self.verbose)
try:
p = PlatformFactory.newPlatform(self.options['platform'])
except exception.UnknownPlatform:
self.cmd_ctx.invoke(
cmd_platform_install,
platforms=[self.options['platform']],
skip_default_package=True)
p = PlatformFactory.newPlatform(self.options['platform'])
return p.run(build_vars, build_targets, self.silent, self.verbose)
def _autoinstall_libdeps(ctx, libraries, verbose=False):
if not libraries:
return
storage_dir = util.get_projectlibdeps_dir()
ctx.obj = LibraryManager(storage_dir)
if verbose:
click.echo("Library Storage: " + storage_dir)
for lib in libraries:
try:
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
except exception.LibNotFound as e:
if verbose or not is_builtin_lib(lib):
click.secho("Warning! %s" % e, fg="yellow")
except exception.InternetIsOffline as e:
click.secho(str(e), fg="yellow")
def _clean_build_dir(build_dir):
structhash_file = join(build_dir, "structure.hash")
proj_hash = calculate_project_hash()
# if project's config is modified
if (isdir(build_dir)
and getmtime(join(util.get_project_dir(),
"platformio.ini")) > getmtime(build_dir)):
util.rmtree_(build_dir)
# check project structure
if isdir(build_dir) and isfile(structhash_file):
with open(structhash_file) as f:
if f.read() == proj_hash:
return
util.rmtree_(build_dir)
if not isdir(build_dir):
makedirs(build_dir)
with open(structhash_file, "w") as f:
f.write(proj_hash)
def print_header(label, is_error=False):
terminal_width, _ = click.get_terminal_size()
width = len(click.unstyle(label))
half_line = "=" * ((terminal_width - width - 2) / 2)
click.echo("%s %s %s" % (half_line, label, half_line), err=is_error)
def print_summary(results, start_time):
print_header("[%s]" % click.style("SUMMARY"))
envname_max_len = 0
for (envname, _) in results:
if len(envname) > envname_max_len:
envname_max_len = len(envname)
successed = True
for (envname, status) in results:
status_str = click.style("SUCCESS", fg="green")
if status is False:
successed = False
status_str = click.style("ERROR", fg="red")
elif status is None:
status_str = click.style("SKIP", fg="yellow")
format_str = (
"Environment {0:<" + str(envname_max_len + 9) + "}\t[{1}]")
click.echo(
format_str.format(click.style(envname, fg="cyan"), status_str),
err=status is False)
print_header(
"[%s] Took %.2f seconds" %
((click.style("SUCCESS", fg="green", bold=True)
if successed else click.style("ERROR", fg="red", bold=True)),
time() - start_time),
is_error=not successed)
def check_project_defopts(config):
if not config.has_section("platformio"):
return True
known = ("env_default", "home_dir", "lib_dir", "libdeps_dir", "src_dir",
"build_dir", "data_dir", "test_dir", "boards_dir",
"lib_extra_dirs")
unknown = set([k for k, _ in config.items("platformio")]) - set(known)
if not unknown:
return True
click.secho(
"Warning! Ignore unknown `%s` option in `[platformio]` section" %
", ".join(unknown),
fg="yellow")
return False
def check_project_envs(config, environments):
if not config.sections():
raise exception.ProjectEnvsNotAvailable()
known = set([s[4:] for s in config.sections() if s.startswith("env:")])
unknown = set(environments) - known
if unknown:
raise exception.UnknownEnvNames(", ".join(unknown), ", ".join(known))
return True
def calculate_project_hash():
structure = [__version__]
for d in (util.get_projectsrc_dir(), util.get_projectlib_dir()):
if not isdir(d):
continue
for root, _, files in walk(d):
for f in files:
path = join(root, f)
if not any([s in path for s in (".git", ".svn", ".pioenvs")]):
structure.append(path)
return sha1(",".join(sorted(structure))).hexdigest() if structure else ""

View File

@@ -1,23 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from click import argument, command, echo, style
from platformio.platforms.base import PlatformFactory
from platformio.util import get_platforms
@command("search", short_help="Search for development platforms")
@argument("query")
def cli(query):
for platform in get_platforms():
p = PlatformFactory().newPlatform(platform)
name = p.get_name()
shinfo = p.get_short_info()
search_data = "%s %s" % (name, shinfo)
if query != "all" and query.lower() not in search_data.lower():
continue
echo("{name:<20} - {info}".format(name=style(name, fg="cyan"),
info=shinfo))

View File

@@ -1,17 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from click import command, echo, secho
from platformio.util import get_serialports
@command("serialports", short_help="List Serial ports")
def cli():
for item in get_serialports():
secho(item['port'], fg="cyan")
echo("----------")
echo("Hardware ID: %s" % item['hwid'])
echo("Description: %s" % item['description'])
echo("")

View File

@@ -0,0 +1,80 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import click
from platformio import app
@click.group(short_help="Manage PlatformIO settings")
def cli():
pass
@cli.command("get", short_help="Get existing setting/-s")
@click.argument("name", required=False)
def settings_get(name):
list_tpl = "{name:<40} {value:<35} {description}"
terminal_width, _ = click.get_terminal_size()
click.echo(
list_tpl.format(
name=click.style("Name", fg="cyan"),
value=(click.style("Value", fg="green") +
click.style(" [Default]", fg="yellow")),
description="Description"))
click.echo("-" * terminal_width)
for _name, _data in sorted(app.DEFAULT_SETTINGS.items()):
if name and name != _name:
continue
_value = app.get_setting(_name)
_value_str = str(_value)
if isinstance(_value, bool):
_value_str = "Yes" if _value else "No"
_value_str = click.style(_value_str, fg="green")
if _value != _data['value']:
_defvalue_str = str(_data['value'])
if isinstance(_data['value'], bool):
_defvalue_str = "Yes" if _data['value'] else "No"
_value_str += click.style(" [%s]" % _defvalue_str, fg="yellow")
else:
_value_str += click.style(" ", fg="yellow")
click.echo(
list_tpl.format(
name=click.style(_name, fg="cyan"),
value=_value_str,
description=_data['description']))
@cli.command("set", short_help="Set new value for the setting")
@click.argument("name")
@click.argument("value")
@click.pass_context
def settings_set(ctx, name, value):
app.set_setting(name, value)
click.secho("The new value for the setting has been set!", fg="green")
ctx.invoke(settings_get, name=name)
@cli.command("reset", short_help="Reset settings to default")
@click.pass_context
def settings_reset(ctx):
app.reset_settings()
click.secho("The settings have been reseted!", fg="green")
ctx.invoke(settings_get)

View File

@@ -1,32 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from os.path import join
from click import argument, command, echo, style
from platformio.exception import PlatformNotInstalledYet
from platformio.pkgmanager import PackageManager
from platformio.platforms.base import PlatformFactory
@command("show", short_help="Show details about an installed platforms")
@argument("platform")
def cli(platform):
p = PlatformFactory().newPlatform(platform)
if platform not in PackageManager.get_installed():
raise PlatformNotInstalledYet(platform)
# print info about platform
echo("{name:<20} - {info}".format(name=style(p.get_name(), fg="cyan"),
info=p.get_short_info()))
pm = PackageManager(platform)
for name, data in pm.get_installed(platform).items():
pkgalias = p.get_pkg_alias(name)
echo("----------")
echo("Package: %s" % style(name, fg="yellow"))
if pkgalias:
echo("Alias: %s" % pkgalias)
echo("Location: %s" % join(pm.get_platform_dir(), data['path']))
echo("Version: %d" % int(data['version']))

View File

@@ -0,0 +1,67 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from os import getcwd
import click
from platformio.managers.core import pioplus_call
@click.command("test", short_help="Local Unit Testing")
@click.option("--environment", "-e", multiple=True, metavar="<environment>")
@click.option(
"--filter",
"-f",
multiple=True,
metavar="<pattern>",
help="Filter tests by a pattern")
@click.option(
"--ignore",
"-i",
multiple=True,
metavar="<pattern>",
help="Ignore tests by a pattern")
@click.option("--upload-port")
@click.option("--test-port")
@click.option(
"-d",
"--project-dir",
default=getcwd,
type=click.Path(
exists=True,
file_okay=False,
dir_okay=True,
writable=True,
resolve_path=True))
@click.option("--without-building", is_flag=True)
@click.option("--without-uploading", is_flag=True)
@click.option(
"--no-reset",
is_flag=True,
help="Disable software reset via Serial.DTR/RST")
@click.option(
"--monitor-rts",
default=None,
type=click.IntRange(0, 1),
help="Set initial RTS line state for Serial Monitor")
@click.option(
"--monitor-dtr",
default=None,
type=click.IntRange(0, 1),
help="Set initial DTR line state for Serial Monitor")
@click.option("--verbose", "-v", is_flag=True)
def cli(*args, **kwargs): # pylint: disable=unused-argument
pioplus_call(sys.argv[1:])

View File

@@ -1,23 +0,0 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
from click import argument, command, secho
from platformio.exception import PlatformNotInstalledYet
from platformio.pkgmanager import PackageManager
from platformio.platforms.base import PlatformFactory
@command("uninstall", short_help="Uninstall platforms")
@argument("platforms", nargs=-1)
def cli(platforms):
for platform in platforms:
if platform not in PackageManager.get_installed():
raise PlatformNotInstalledYet(platform)
p = PlatformFactory().newPlatform(platform)
if p.uninstall():
secho("The platform '%s' has been successfully "
"uninstalled!" % platform, fg="green")

View File

@@ -1,17 +1,52 @@
# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from click import command, echo, style
import click
from platformio.pkgmanager import PackageManager
from platformio.platforms.base import PlatformFactory
from platformio import app
from platformio.commands.lib import lib_update as cmd_lib_update
from platformio.commands.platform import platform_update as cmd_platform_update
from platformio.managers.core import update_core_packages
from platformio.managers.lib import LibraryManager
@command("update", short_help="Update installed platforms")
def cli():
@click.command(
"update", short_help="Update installed platforms, packages and libraries")
@click.option(
"--core-packages", is_flag=True, help="Update only the core packages")
@click.option(
"-c",
"--only-check",
is_flag=True,
help="Do not update, only check for new version")
@click.pass_context
def cli(ctx, core_packages, only_check):
update_core_packages(only_check)
for platform in PackageManager.get_installed().keys():
echo("\nPlatform %s" % style(platform, fg="cyan"))
echo("--------")
p = PlatformFactory().newPlatform(platform)
p.update()
if core_packages:
return
# cleanup lib search results, cached board and platform lists
app.clean_cache()
click.echo()
click.echo("Platform Manager")
click.echo("================")
ctx.invoke(cmd_platform_update, only_check=only_check)
click.echo()
click.echo("Library Manager")
click.echo("===============")
ctx.obj = LibraryManager()
ctx.invoke(cmd_lib_update, only_check=only_check)

Some files were not shown because too many files have changed in this diff Show More