From fa3db92d882b514516a96f2062966bbe8cc977c0 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 21 Mar 2015 14:05:19 +0100 Subject: [PATCH 01/28] Fix typo --- docs/userguide/lib/cmd_register.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/userguide/lib/cmd_register.rst b/docs/userguide/lib/cmd_register.rst index fddb1478..1ba804f5 100644 --- a/docs/userguide/lib/cmd_register.rst +++ b/docs/userguide/lib/cmd_register.rst @@ -10,7 +10,7 @@ Usage .. code-block:: bash - platformio lib regiter [HTTP_URL_TO_LIBRARY.JSON] + platformio lib register [HTTP_URL_TO_LIBRARY.JSON] Description From 7f43df45c5405bd41d90656c496f145d86dafb5f Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 21 Mar 2015 23:08:36 +0200 Subject: [PATCH 02/28] Improve handling of multi-file ``*.ino/pde`` sketches // Resolve #130 --- HISTORY.rst | 7 +++ platformio/__init__.py | 2 +- platformio/builder/tools/platformio.py | 77 +++++++++++++++----------- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index cd912885..5c88bb68 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,13 @@ Release History =============== +1.3.0 (2015-??-??) +------------------ + +* Improved handling of multi-file ``*.ino/pde`` sketches + (`issue #130 `_) + + 1.2.0 (2015-03-20) ------------------ diff --git a/platformio/__init__.py b/platformio/__init__.py index f40ab4c5..aa4e62f4 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -1,7 +1,7 @@ # Copyright (C) Ivan Kravets # See LICENSE for details. -VERSION = (1, 2, 0) +VERSION = (1, 3, "0.dev0") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index a27d8654..6f06bdef 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -275,43 +275,54 @@ def BuildDependentLibraries(env, src_dir): # pylint: disable=R0914 def ConvertInoToCpp(env): - def delete_tmpcpp(files): - for f in files: - remove(f) + PROTOTYPE_RE = re.compile( + r"""^( + (?:\s*[a-z_\d]+){1,2} # return type + \s+[a-z_\d]+\s* # name of prototype + \([a-z_,\.\*\&\[\]\s\d]*\) # arguments + )\s*\{ # must end with { + """, + re.X | re.M | re.I + ) - tmpcpp = [] - items = (env.Glob(join("$PROJECTSRC_DIR", "*.ino")) + - env.Glob(join("$PROJECTSRC_DIR", "*.pde"))) - for item in items: - cppfile = item.get_path()[:-3] + "cpp" - if isfile(cppfile): - continue - ino_contents = item.get_text_contents() + DETECTMAIN_RE = re.compile(r"void\s+(setup|loop)\s*\(", re.M | re.I) - prototypes = re.findall( - r"""^( - (?:\s*[a-z_\d]+){1,2} # return type - \s+[a-z_\d]+\s* # name of prototype - \([a-z_,\.\*\&\[\]\s\d]*\) # args - )\s*\{ # must end with { - """, - ino_contents, - re.X | re.M | re.I - ) - prototypes = [p.strip() for p in prototypes] - # print prototypes + def delete_tmpcpp_file(file_): + remove(file_) - # create new temporary C++ valid file - with open(cppfile, "w") as f: - f.write("#include \n") - if prototypes: - f.write("%s;\n" % ";\n".join(prototypes)) - f.write('#line 1 "%s"\n' % basename(item.path)) - f.write(ino_contents) - tmpcpp.append(cppfile) + def is_main_ino(contents): + return DETECTMAIN_RE.search(contents) - if tmpcpp: - atexit.register(delete_tmpcpp, tmpcpp) + ino_nodes = (env.Glob(join("$PROJECTSRC_DIR", "*.ino")) + + env.Glob(join("$PROJECTSRC_DIR", "*.pde"))) + prototypes = [] + data = [] + for node in ino_nodes: + ino_contents = node.get_text_contents() + prototypes += PROTOTYPE_RE.findall(ino_contents) + + item = (basename(node.get_path()), ino_contents) + if is_main_ino(ino_contents): + data = [item] + data + else: + data.append(item) + + if not data: + return + + # create new temporary C++ valid file + tmpcpp_file = join(env.subst("$PROJECTSRC_DIR"), "piomain.cpp") + with open(tmpcpp_file, "w") as f: + f.write("#include \n") + + if prototypes: + f.write("%s;" % ";\n".join(prototypes)) + + for name, contents in data: + f.write('\n#line 1 "%s"\n' % name) + f.write(contents) + + atexit.register(delete_tmpcpp_file, tmpcpp_file) def exists(_): From 887372ff44e30383530eb8d3906ec656579fcd00 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sun, 22 Mar 2015 22:58:15 +0200 Subject: [PATCH 03/28] Fix new lines between keywords --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 299e25e0..f0c26298 100644 --- a/setup.py +++ b/setup.py @@ -42,7 +42,7 @@ setup( "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Compilers" ], - keywords=("builder library manager atmel avr sam freescale kinetis nordic" - "nrf51 nxp lpc st stm32 ti msp430 tiva teensy arduino mbed" + keywords=("builder library manager atmel avr sam freescale kinetis nordic " + "nrf51 nxp lpc st stm32 ti msp430 tiva teensy arduino mbed " "libopencm3") ) From e89530fca94fea477a9fb6b22dce0fbec42ec699 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 23 Mar 2015 12:30:40 +0200 Subject: [PATCH 04/28] Normalize board names // Resolve #128 --- platformio/boards/adafruit.json | 8 ++++---- platformio/boards/arduino.json | 6 +++--- platformio/boards/digistump.json | 8 ++++---- platformio/boards/misc.json | 2 +- platformio/boards/nordicnrf51.json | 2 +- platformio/boards/nxplpc.json | 22 +++++++++++----------- platformio/boards/ststm32.json | 16 ++++++++-------- platformio/boards/timsp430.json | 14 +++++++------- platformio/boards/titiva.json | 6 +++--- 9 files changed, 42 insertions(+), 42 deletions(-) diff --git a/platformio/boards/adafruit.json b/platformio/boards/adafruit.json index aa2e4dfa..eca5597e 100644 --- a/platformio/boards/adafruit.json +++ b/platformio/boards/adafruit.json @@ -76,7 +76,7 @@ "variant": "eightanaloginputs" }, "frameworks": ["arduino"], - "name": "Pro Trinket 3V/12MHz (USB)", + "name": "Adafruit Pro Trinket 3V/12MHz (USB)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, @@ -96,7 +96,7 @@ "variant": "eightanaloginputs" }, "frameworks": ["arduino"], - "name": "Pro Trinket 5V/16MHz (USB)", + "name": "Adafruit Pro Trinket 5V/16MHz (USB)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, @@ -115,7 +115,7 @@ "variant": "eightanaloginputs" }, "frameworks": ["arduino"], - "name": "Pro Trinket 3V/12MHz (FTDI)", + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, @@ -136,7 +136,7 @@ "variant": "eightanaloginputs" }, "frameworks": ["arduino"], - "name": "Pro Trinket 5V/16MHz (USB)", + "name": "Adafruit Pro Trinket 5V/16MHz (USB)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, diff --git a/platformio/boards/arduino.json b/platformio/boards/arduino.json index 8d84f93e..a0203302 100644 --- a/platformio/boards/arduino.json +++ b/platformio/boards/arduino.json @@ -11,7 +11,7 @@ "vid": "0x1B4F" }, "frameworks": ["arduino"], - "name": "LilyPad Arduino USB", + "name": "Arduino LilyPad USB", "platform": "atmelavr", "upload": { "disable_flushing": true, @@ -259,7 +259,7 @@ "variant": "standard" }, "frameworks": ["arduino"], - "name": "LilyPad Arduino ATmega168", + "name": "Arduino LilyPad ATmega168", "platform": "atmelavr", "upload": { "maximum_ram_size": 1024, @@ -280,7 +280,7 @@ "variant": "standard" }, "frameworks": ["arduino"], - "name": "LilyPad Arduino ATmega328", + "name": "Arduino LilyPad ATmega328", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, diff --git a/platformio/boards/digistump.json b/platformio/boards/digistump.json index c03d3680..b367c5de 100644 --- a/platformio/boards/digistump.json +++ b/platformio/boards/digistump.json @@ -8,7 +8,7 @@ "variant": "digispark_tiny" }, "frameworks": ["arduino"], - "name": "Digispark (Default - 16 MHz)", + "name": "Digistump Digispark (Default - 16 MHz)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, @@ -27,7 +27,7 @@ "variant": "digispark_pro" }, "frameworks": ["arduino"], - "name": "Digispark Pro (Default 16 MHz)", + "name": "Digistump Digispark Pro (Default 16 MHz)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, @@ -46,7 +46,7 @@ "variant": "digispark_pro32" }, "frameworks": ["arduino"], - "name": "Digispark Pro (16 MHz) (32 byte buffer)", + "name": "Digistump Digispark Pro (16 MHz) (32 byte buffer)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, @@ -65,7 +65,7 @@ "variant": "digispark_pro64" }, "frameworks": ["arduino"], - "name": "Digispark Pro (16 MHz) (64 byte buffer)", + "name": "Digistump Digispark Pro (16 MHz) (64 byte buffer)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, diff --git a/platformio/boards/misc.json b/platformio/boards/misc.json index ac796695..a275d918 100644 --- a/platformio/boards/misc.json +++ b/platformio/boards/misc.json @@ -8,7 +8,7 @@ "variant": "standard" }, "frameworks": ["arduino"], - "name": "Raspduino", + "name": "BitWizard Raspduino", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, diff --git a/platformio/boards/nordicnrf51.json b/platformio/boards/nordicnrf51.json index abe44026..c76c1609 100644 --- a/platformio/boards/nordicnrf51.json +++ b/platformio/boards/nordicnrf51.json @@ -118,7 +118,7 @@ "mcu": "nrf51822" }, "frameworks": ["mbed"], - "name": "Seeed Tiny BLE", + "name": "SeeedStudio Seeed Tiny BLE", "platform": "nordicnrf51", "upload": { "maximum_ram_size": 16384, diff --git a/platformio/boards/nxplpc.json b/platformio/boards/nxplpc.json index 67392e27..e368bc35 100644 --- a/platformio/boards/nxplpc.json +++ b/platformio/boards/nxplpc.json @@ -6,7 +6,7 @@ "mcu": "lpc1768" }, "frameworks": ["mbed"], - "name": "mbed LPC1768", + "name": "NXP mbed LPC1768", "platform": "nxplpc", "upload": { "maximum_ram_size": 32768, @@ -22,7 +22,7 @@ "mcu": "lpc11u24" }, "frameworks": ["mbed"], - "name": "mbed LPC11U24", + "name": "NXP mbed LPC11U24", "platform": "nxplpc", "upload": { "maximum_ram_size": 8192, @@ -38,7 +38,7 @@ "mcu": "lpc4088" }, "frameworks": ["mbed"], - "name": "EA LPC4088 QuickStart Board", + "name": "Embedded Artists LPC4088 QuickStart Board", "platform": "nxplpc", "upload": { "maximum_ram_size": 98304, @@ -54,7 +54,7 @@ "mcu": "lpc11u24" }, "frameworks": ["mbed"], - "name": "DipCortex M0", + "name": "Solder Splash Labs DipCortex M0", "platform": "nxplpc", "upload": { "maximum_ram_size": 8192, @@ -70,7 +70,7 @@ "mcu": "lpc11u24" }, "frameworks": ["mbed"], - "name": "BlueBoard-LPC11U24", + "name": "NGX Technologies BlueBoard-LPC11U24", "platform": "nxplpc", "upload": { "maximum_ram_size": 8192, @@ -86,7 +86,7 @@ "mcu": "lpc1768" }, "frameworks": ["mbed"], - "name": "Seeeduino-Arch-Pro", + "name": "SeeedStudio Seeeduino-Arch-Pro", "platform": "nxplpc", "upload": { "maximum_ram_size": 32768, @@ -118,7 +118,7 @@ "mcu": "lpc1114fn28" }, "frameworks": ["mbed"], - "name": "mbed LPC1114FN28", + "name": "Switch Science mbed LPC1114FN28", "platform": "nxplpc", "upload": { "maximum_ram_size": 4096, @@ -134,7 +134,7 @@ "mcu": "lpc11u35" }, "frameworks": ["mbed"], - "name": "EA LPC11U35 QuickStart Board", + "name": "Embedded Artists LPC11U35 QuickStart Board", "platform": "nxplpc", "upload": { "maximum_ram_size": 10240, @@ -150,7 +150,7 @@ "mcu": "lpc11u35" }, "frameworks": ["mbed"], - "name": "TG-LPC11U35-501", + "name": "CQ Publishing TG-LPC11U35-501", "platform": "nxplpc", "upload": { "maximum_ram_size": 10240, @@ -166,7 +166,7 @@ "mcu": "lpc1549" }, "frameworks": ["mbed"], - "name": "LPCXpresso1549", + "name": "NXP LPCXpresso1549", "platform": "nxplpc", "upload": { "maximum_ram_size": 36864, @@ -198,7 +198,7 @@ "mcu": "lpc4088" }, "frameworks": ["mbed"], - "name": "EA LPC4088 Display Module", + "name": "Embedded Artists LPC4088 Display Module", "platform": "nxplpc", "upload": { "maximum_ram_size": 98304, diff --git a/platformio/boards/ststm32.json b/platformio/boards/ststm32.json index 8b45b992..63c188ee 100644 --- a/platformio/boards/ststm32.json +++ b/platformio/boards/ststm32.json @@ -10,7 +10,7 @@ "variant": "stm32f4" }, "frameworks": ["cmsis", "spl", "libopencm3", "mbed"], - "name": "STM32F4DISCOVERY", + "name": "ST STM32F4DISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 131072, @@ -30,7 +30,7 @@ "variant": "stm32l1" }, "frameworks": ["cmsis","spl","libopencm3"], - "name": "STM32LDISCOVERY", + "name": "ST STM32LDISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 16384, @@ -50,7 +50,7 @@ "variant": "stm32f3" }, "frameworks": ["cmsis", "spl", "libopencm3", "mbed"], - "name": "STM32F3DISCOVERY", + "name": "ST STM32F3DISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 49152, @@ -66,7 +66,7 @@ "mcu": "stm32f100rbt6" }, "frameworks": ["mbed"], - "name": "STM32VLDISCOVERY", + "name": "ST STM32VLDISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 8192, @@ -82,7 +82,7 @@ "mcu": "stm32f051r8t6" }, "frameworks": ["mbed"], - "name": "STM32F0DISCOVERY", + "name": "ST STM32F0DISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 8192, @@ -98,7 +98,7 @@ "mcu": "stm32f334c8t6" }, "frameworks": ["mbed"], - "name": "32F3348DISCOVERY", + "name": "ST 32F3348DISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 16384, @@ -114,7 +114,7 @@ "mcu": "stm32f401vct6" }, "frameworks": ["mbed"], - "name": "32F401CDISCOVERY", + "name": "ST 32F401CDISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 65536, @@ -130,7 +130,7 @@ "mcu": "stm32f429zit6" }, "frameworks": ["mbed"], - "name": "32F429IDISCOVERY", + "name": "ST 32F429IDISCOVERY", "platform": "ststm32", "upload": { "maximum_ram_size": 262144, diff --git a/platformio/boards/timsp430.json b/platformio/boards/timsp430.json index 88731614..3c1d314f 100644 --- a/platformio/boards/timsp430.json +++ b/platformio/boards/timsp430.json @@ -7,7 +7,7 @@ "variant": "launchpad_f5529" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430f5529 (16MHz)", + "name": "TI LaunchPad w/ msp430f5529 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, @@ -25,7 +25,7 @@ "variant": "launchpad_f5529" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430f5529 (25MHz)", + "name": "TI LaunchPad w/ msp430f5529 (25MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, @@ -43,7 +43,7 @@ "variant": "fraunchpad" }, "frameworks": ["energia"], - "name": "FraunchPad w/ msp430fr5739", + "name": "TI FraunchPad w/ msp430fr5739", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, @@ -61,7 +61,7 @@ "variant": "launchpad_fr5969" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430fr5969", + "name": "TI LaunchPad w/ msp430fr5969", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, @@ -79,7 +79,7 @@ "variant": "launchpad" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430g2231 (1 MHz)", + "name": "TI LaunchPad w/ msp430g2231 (1 MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 128, @@ -97,7 +97,7 @@ "variant": "launchpad" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430g2452 (16MHz)", + "name": "TI LaunchPad w/ msp430g2452 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 256, @@ -115,7 +115,7 @@ "variant": "launchpad" }, "frameworks": ["energia"], - "name": "LaunchPad w/ msp430g2553 (16MHz)", + "name": "TI LaunchPad w/ msp430g2553 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 512, diff --git a/platformio/boards/titiva.json b/platformio/boards/titiva.json index 69a8d9be..29b7944f 100644 --- a/platformio/boards/titiva.json +++ b/platformio/boards/titiva.json @@ -9,7 +9,7 @@ "variant": "stellarpad" }, "frameworks": ["energia", "libopencm3"], - "name": "LaunchPad (Stellaris) w/ lm4f120 (80MHz)", + "name": "TI LaunchPad (Stellaris) w/ lm4f120 (80MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 32768, @@ -28,7 +28,7 @@ "variant": "stellarpad" }, "frameworks": ["energia", "libopencm3"], - "name": "LaunchPad (Tiva C) w/ tm4c123 (80MHz)", + "name": "TI LaunchPad (Tiva C) w/ tm4c123 (80MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 32768, @@ -47,7 +47,7 @@ "variant": "launchpad_129" }, "frameworks": ["energia", "libopencm3"], - "name": "LaunchPad (Tiva C) w/ tm4c129 (120MHz)", + "name": "TI LaunchPad (Tiva C) w/ tm4c129 (120MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 262144, From f94da85898ebff751aa2bf71a259964f9d2a47fc Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 23 Mar 2015 19:38:30 +0200 Subject: [PATCH 05/28] Add support for Sanguino boards // Resolve #131 --- platformio/boards/misc.json | 112 ++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/platformio/boards/misc.json b/platformio/boards/misc.json index a275d918..495fa4ef 100644 --- a/platformio/boards/misc.json +++ b/platformio/boards/misc.json @@ -20,6 +20,7 @@ "url": "http://www.bitwizard.nl/wiki/index.php/Raspduino", "vendor": "BitWizard" }, + "sainSmartDue": { "build": { "core": "arduino", @@ -76,6 +77,7 @@ "url": "http://www.sainsmart.com/arduino/control-boards/sainsmart-due-atmel-sam3x8e-arm-cortex-m3-board-black.html", "vendor": "SainSmart" }, + "panStampAVR": { "build": { "core": "panstamp", @@ -97,6 +99,7 @@ "url": "http://www.panstamp.com/product/panstamp-avr/", "vendor": "PanStamp" }, + "panStampNRG": { "build": { "core": "panstamp", @@ -114,5 +117,114 @@ }, "url": "http://www.panstamp.com/product/197/", "vendor": "PanStamp" + }, + "reprap_rambo": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_RAMBO", + "f_cpu": "16000000L", + "mcu": "atmega2560", + "variant": "rambo" + }, + "frameworks": ["arduino"], + "name": "RepRap RAMBo", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 258048, + "protocol": "wiring", + "require_upload_port" : true, + "speed": 115200 + }, + "url": "http://reprap.org/wiki/Rambo", + "vendor": "RepRap" + }, + + "sanguino_atmega1284p": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_SANGUINO", + "f_cpu": "16000000L", + "mcu": "atmega1284p", + "variant": "sanguino" + }, + "frameworks": ["arduino"], + "name": "Sanguino ATmega1284p (16MHz)", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072, + "protocol": "stk500", + "require_upload_port" : true, + "speed": 57600 + }, + "url": "https://code.google.com/p/sanguino/", + "vendor": "Sanguino" + }, + + "sanguino_atmega12848m": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_SANGUINO", + "f_cpu": "8000000L", + "mcu": "atmega1284p", + "variant": "sanguino" + }, + "frameworks": ["arduino"], + "name": "Sanguino ATmega1284p (8MHz)", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072, + "protocol": "stk500", + "require_upload_port" : true, + "speed": 19200 + }, + "url": "https://code.google.com/p/sanguino/", + "vendor": "Sanguino" + }, + + "sanguino_atmega1284m": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_SANGUINO", + "f_cpu": "20000000L", + "mcu": "atmega1284p", + "variant": "sanguino" + }, + "frameworks": ["arduino"], + "name": "Sanguino ATmega1284p (20MHz)", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072, + "protocol": "stk500", + "require_upload_port" : true, + "speed": 19200 + }, + "url": "https://code.google.com/p/sanguino/", + "vendor": "Sanguino" + }, + + "sanguino_atmega644p": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_SANGUINO", + "f_cpu": "16000000L", + "mcu": "atmega644p", + "variant": "sanguino" + }, + "frameworks": ["arduino"], + "name": "Sanguino ATmega644P", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 4096, + "maximum_size": 63488, + "protocol": "stk500", + "require_upload_port" : true, + "speed": 57600 + }, + "url": "https://code.google.com/p/sanguino/", + "vendor": "Sanguino" } } From 06812b7a0242adf2fdc73193b8d71e92abd5bcc8 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 23 Mar 2015 19:39:32 +0200 Subject: [PATCH 06/28] Add support for SparkFun boards // Resolve #127 --- platformio/boards/sparkfun.json | 191 ++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 platformio/boards/sparkfun.json diff --git a/platformio/boards/sparkfun.json b/platformio/boards/sparkfun.json new file mode 100644 index 00000000..88240040 --- /dev/null +++ b/platformio/boards/sparkfun.json @@ -0,0 +1,191 @@ + { + "sparkfun_redboard": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO", + "f_cpu": "16000000L", + "mcu": "atmega328p", + "variant": "standard" + }, + "frameworks": ["arduino"], + "name": "SparkFun RedBoard", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 2048, + "maximum_size": 32256, + "protocol": "arduino", + "require_upload_port" : true, + "speed": 115200 + }, + "url": "https://www.sparkfun.com/products/12757", + "vendor": "SparkFun" + }, + "sparkfun_promicro16": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_PROMICRO16", + "f_cpu": "16000000L", + "mcu": "atmega32u4", + "pid": "0x9206", + "usb_product": "SparkFun Pro Micro", + "variant": "sparkfun_promicro", + "vid": "0x1B4F" + }, + "frameworks": ["arduino"], + "name": "SparkFun Pro Micro 5V/16MHz", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://www.sparkfun.com/products/12640", + "vendor": "SparkFun" + }, + "sparkfun_promicro8": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_PROMICRO8", + "f_cpu": "8000000L", + "mcu": "atmega32u4", + "pid": "0x9204", + "usb_product": "SparkFun Pro Micro", + "variant": "sparkfun_promicro", + "vid": "0x1B4F" + }, + "frameworks": ["arduino"], + "name": "SparkFun Pro Micro 3.3V/8MHz", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://www.sparkfun.com/products/12587", + "vendor": "SparkFun" + }, + "sparkfun_fiov3": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_FIOV3", + "f_cpu": "8000000L", + "mcu": "atmega32u4", + "pid": "0xF101", + "usb_product": "SparkFun Fio v3", + "variant": "sparkfun_promicro", + "vid": "0x1B4F" + }, + "frameworks": ["arduino"], + "name": "SparkFun Fio V3 3.3V/8MHz", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://www.sparkfun.com/products/11520", + "vendor": "SparkFun" + }, + "sparkfun_makeymakey": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DAVR_MAKEYMAKEY", + "f_cpu": "16000000L", + "mcu": "atmega32u4", + "pid": "0x2B75", + "usb_product": "SparkFun MaKey", + "variant": "sparkfun_promicro", + "vid": "0x1B4F" + }, + "frameworks": ["arduino"], + "name": "SparkFun Makey Makey", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://www.sparkfun.com/products/11511", + "vendor": "SparkFun" + }, + "sparkfun_megapro16MHz": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MEGA2560", + "f_cpu": "16000000L", + "mcu": "atmega2560", + "variant": "mega" + }, + "frameworks": ["arduino"], + "name": "SparkFun Mega Pro 5V/16MHz", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 258048, + "protocol": "stk500v2", + "speed": 57600 + }, + "url": "https://www.sparkfun.com/products/11007", + "vendor": "SparkFun" + }, + "sparkfun_megapro8MHz": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MEGA2560", + "f_cpu": "8000000L", + "mcu": "atmega2560", + "variant": "mega" + }, + "frameworks": ["arduino"], + "name": "SparkFun Mega Pro 3.3V/8MHz", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 258048, + "protocol": "stk500v2", + "speed": 57600 + }, + "url": "https://www.sparkfun.com/products/10744", + "vendor": "SparkFun" + }, + "sparkfun_megamini": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MEGA2560", + "f_cpu": "8000000L", + "mcu": "atmega2560", + "variant": "mega" + }, + "frameworks": ["arduino"], + "name": "SparkFun Mega Pro Mini 3.3V", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 258048, + "protocol": "stk500v2", + "speed": 57600 + }, + "url": "https://www.sparkfun.com/products/10743", + "vendor": "SparkFun" + } +} \ No newline at end of file From 4d91c336be7ef39c29ab15099815acf9843bef32 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 23 Mar 2015 19:40:13 +0200 Subject: [PATCH 07/28] Allow own libs per framework's core // Resolve #133 --- platformio/builder/main.py | 2 +- .../builder/scripts/frameworks/arduino.py | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 587c0f21..797b0cd4 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -71,7 +71,7 @@ DefaultEnvironment( LIBSOURCE_DIRS=[ join("$PROJECT_DIR", "lib"), util.get_lib_dir(), - join("$PLATFORMFW_DIR", "libraries"), + join("$PLATFORMFW_DIR", "libraries") ] ) diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 0821fe75..1fa6d456 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -12,7 +12,7 @@ http://arduino.cc/en/Reference/HomePage """ from os import listdir, walk -from os.path import isfile, join +from os.path import isdir, isfile, join from SCons.Script import DefaultEnvironment @@ -20,6 +20,7 @@ env = DefaultEnvironment() BOARD_OPTS = env.get("BOARD_OPTIONS", {}) BOARD_BUILDOPTS = BOARD_OPTS.get("build", {}) +BOARD_CORELIBDIRNAME = BOARD_BUILDOPTS.get("core") # # Determine framework directory @@ -30,6 +31,7 @@ PLATFORMFW_DIR = join("$PIOPACKAGES_DIR", "framework-arduino${PLATFORM.replace('atmel', '')}") if "digispark" in BOARD_BUILDOPTS.get("core"): + BOARD_CORELIBDIRNAME = "digispark" PLATFORMFW_DIR = join( "$PIOPACKAGES_DIR", "framework-arduino%s" % ( @@ -43,6 +45,21 @@ elif env.get("PLATFORM") == "timsp430": env.Replace(PLATFORMFW_DIR=PLATFORMFW_DIR) +# +# Lookup for specific core's libraries +# + +if isdir(join(env.subst("$PLATFORMFW_DIR"), "libraries", "__cores__", + BOARD_CORELIBDIRNAME)): + lib_dirs = env.get("LIBSOURCE_DIRS") + lib_dirs.insert( + lib_dirs.index(join("$PLATFORMFW_DIR", "libraries")), + join(PLATFORMFW_DIR, "libraries", "__cores__", BOARD_CORELIBDIRNAME) + ) + env.Replace( + LIBSOURCE_DIRS=lib_dirs + ) + # # Base # From 160c6e61eaba6012acd4a4115752552a60366197 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 23 Mar 2015 19:40:47 +0200 Subject: [PATCH 08/28] Fix Adafruit boards build options --- platformio/boards/adafruit.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/platformio/boards/adafruit.json b/platformio/boards/adafruit.json index eca5597e..38ff5b4a 100644 --- a/platformio/boards/adafruit.json +++ b/platformio/boards/adafruit.json @@ -1,7 +1,7 @@ { "flora8": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "8000000L", "mcu": "atmega32u4", @@ -29,7 +29,7 @@ "trinket3": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "8000000L", "mcu": "attiny85", @@ -49,7 +49,7 @@ "trinket5": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "16000000L", "mcu": "attiny85", @@ -69,7 +69,7 @@ "protrinket3": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "12000000L", "mcu": "atmega328p", @@ -89,7 +89,7 @@ "protrinket5": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "16000000L", "mcu": "atmega328p", @@ -108,7 +108,7 @@ }, "protrinket3ftdi": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "16000000L", "mcu": "atmega328p", @@ -120,7 +120,7 @@ "upload": { "maximum_ram_size": 2048, "maximum_size": 28672, - "protocol": ["arduino"], + "protocol": "arduino", "require_upload_port" : true, "speed": 115200 }, @@ -129,7 +129,7 @@ }, "protrinket5ftdi": { "build": { - "core": ["arduino"], + "core": "arduino", "extra_flags": "-DARDUINO_ARCH_AVR", "f_cpu": "16000000L", "mcu": "atmega328p", @@ -141,7 +141,7 @@ "upload": { "maximum_ram_size": 2048, "maximum_size": 28672, - "protocol": ["arduino"], + "protocol": "arduino", "require_upload_port" : true, "speed": 115200 }, From a0138346516a84c1a44c749c2e74114915e665fd Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:15:06 +0200 Subject: [PATCH 09/28] Update Adafruit-PCD8544-Nokia-5110-LCD-library in examples/atmelavr-and-arduino/arduino-external-libs/lib/ --- .../lib/Adafruit-PCD8544-Nokia-5110-LCD-library | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/atmelavr-and-arduino/arduino-external-libs/lib/Adafruit-PCD8544-Nokia-5110-LCD-library b/examples/atmelavr-and-arduino/arduino-external-libs/lib/Adafruit-PCD8544-Nokia-5110-LCD-library index 32ca9ca7..23d30dc4 160000 --- a/examples/atmelavr-and-arduino/arduino-external-libs/lib/Adafruit-PCD8544-Nokia-5110-LCD-library +++ b/examples/atmelavr-and-arduino/arduino-external-libs/lib/Adafruit-PCD8544-Nokia-5110-LCD-library @@ -1 +1 @@ -Subproject commit 32ca9ca73942b67688ca6946bbc43b0a9729c4fc +Subproject commit 23d30dc48029a543918e5ecdff7c505558c313e3 From cbcbf27d23625832f1e41f2445080967a1255285 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:34:48 +0200 Subject: [PATCH 10/28] Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation --- HISTORY.rst | 116 +++++++++--------- README.rst | 10 +- docs/ide.rst | 2 +- docs/index.rst | 4 +- docs/installation.rst | 8 +- docs/platforms/atmelavr.rst | 2 +- docs/platforms/atmelsam.rst | 2 +- docs/platforms/creating_platform.rst | 2 +- docs/platforms/freescalekinetis.rst | 2 +- docs/platforms/nordicnrf51.rst | 2 +- docs/platforms/nxplpc.rst | 2 +- docs/platforms/ststm32.rst | 2 +- docs/platforms/teensy.rst | 2 +- docs/platforms/timsp430.rst | 2 +- docs/platforms/titiva.rst | 2 +- docs/projectconf.rst | 4 +- docs/quickstart.rst | 2 +- docs/userguide/cmd_run.rst | 2 +- .../adafruit-blink/README.rst | 2 +- .../arduino-external-libs/README.rst | 2 +- .../arduino-internal-libs/README.rst | 2 +- .../arduino-own-src_dir/README.rst | 2 +- .../atmelavr-native-blink/README.rst | 2 +- .../digitstump-mouse/README.rst | 2 +- .../engduino-magnetometer/README.rst | 2 +- .../panstamp-blink/README.rst | 2 +- examples/mbed/mbed-blink/README.rst | 2 +- examples/mbed/mbed-dsp/README.rst | 2 +- examples/mbed/mbed-http-client/README.rst | 2 +- examples/mbed/mbed-rtos/README.rst | 2 +- examples/mbed/mbed-serial/README.rst | 2 +- examples/stm32/stm32-cmsis-blink/README.rst | 2 +- examples/stm32/stm32-opencm3-blink/README.rst | 2 +- examples/stm32/stm32-spl-blink/README.rst | 2 +- .../teensy/teensy-internal-libs/README.rst | 2 +- examples/timsp430/panstamp-blink/README.rst | 2 +- .../timsp430-energia-blink/README.rst | 2 +- .../timsp430/timsp430-native-blink/README.rst | 2 +- .../titiva/titiva-energia-blink/README.rst | 2 +- .../titiva/titiva-native-blink/README.rst | 2 +- .../titiva/titiva-opencm3-blink/README.rst | 2 +- examples/wiring-blink/README.rst | 2 +- scripts/99-platformio-udev.rules | 4 +- scripts/docspregen.py | 2 +- scripts/get-platformio.py | 2 +- 45 files changed, 112 insertions(+), 112 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 5c88bb68..a9946b0e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -5,7 +5,7 @@ Release History ------------------ * Improved handling of multi-file ``*.ino/pde`` sketches - (`issue #130 `_) + (`issue #130 `_) 1.2.0 (2015-03-20) @@ -27,10 +27,10 @@ Release History development platform * Created new `Frameworks `__ page in documentation and added to `PlatformIO Web Site `_ - (`issue #115 `_) + (`issue #115 `_) * Introduced online `Embedded Boards Explorer `_ * Automatically append define ``-DPLATFORMIO=%version%`` to - builder (`issue #105 `_) + builder (`issue #105 `_) * Renamed ``stm32`` development platform to `ststm32 `__ * Renamed ``opencm3`` framework to @@ -38,13 +38,13 @@ Release History * Fixed uploading for `atmelsam `__ development platform * Fixed re-arranging the ``*.ino/pde`` files when converting to ``*.cpp`` - (`issue #100 `_) + (`issue #100 `_) 1.1.0 (2015-03-05) ------------------ * Implemented ``PLATFORMIO_*`` environment variables - (`issue #102 `_) + (`issue #102 `_) * Added support for *SainSmart* boards to `atmelsam `__ development platform @@ -52,11 +52,11 @@ Release History `Project Configuration `__ option named `envs_dir `__ * Disabled "prompts" automatically for *Continuous Integration* systems - (`issue #103 `_) + (`issue #103 `_) * Fixed firmware uploading for `atmelavr `__ boards which work within ``usbtiny`` protocol -* Fixed uploading for *Digispark* board (`issue #106 `_) +* Fixed uploading for *Digispark* board (`issue #106 `_) 1.0.1 (2015-02-27) ------------------ @@ -69,14 +69,14 @@ Release History `BeagleBone `_ and `CubieBoard `_ * Added `atmelsam `__ development platform with supported boards: *Arduino Due and Digistump DigiX* - (`issue #71 `_) + (`issue #71 `_) * Added `ststm32 `__ development platform with supported boards: *Discovery kit for STM32L151/152, STM32F303xx, STM32F407/417 lines* and `libOpenCM3 Framework `_ - (`issue #73 `_) + (`issue #73 `_) * Added `teensy `_ development platform with supported boards: *Teensy 2.x & 3.x* - (`issue #72 `_) + (`issue #72 `_) * Added new *Arduino* boards to `atmelavr `__ platform: *Arduino NG, Arduino BT, Arduino Esplora, Arduino Ethernet, @@ -84,46 +84,46 @@ Release History * Added support for *Adafruit* boards to `atmelavr `__ platform: *Adafruit Flora and Adafruit Trinkets* - (`issue #65 `_) + (`issue #65 `_) * Added support for *Digispark* boards to `atmelavr `__ platform: *Digispark USB Development Board and Digispark Pro* - (`issue #47 `_) -* Covered code with tests (`issue #2 `_) + (`issue #47 `_) +* Covered code with tests (`issue #2 `_) * Refactored *Library Dependency Finder* (issues - `#48 `_, - `#50 `_, - `#55 `_) + `#48 `_, + `#50 `_, + `#55 `_) * Added `src_dir `__ option to ``[platformio]`` section of `platformio.ini `__ which allows to redefine location to project's source directory - (`issue #83 `_) + (`issue #83 `_) * Added ``--json-output`` option to `platformio boards `__ and `platformio search `__ commands which allows to return the output in `JSON `_ format - (`issue #42 `_) + (`issue #42 `_) * Allowed to ignore some libs from *Library Dependency Finder* via `ignore_libs `_ option * Improved `platformio run `__ command: asynchronous output for build process, timing and detailed information about environment configuration - (`issue #74 `_) + (`issue #74 `_) * Output compiled size and static memory usage with `platformio run `__ - command (`issue #59 `_) + command (`issue #59 `_) * Updated `framework-arduino` AVR & SAM to 1.6 stable version * Fixed an issue with the libraries that are git repositories - (`issue #49 `_) + (`issue #49 `_) * Fixed handling of assembly files - (`issue #58 `_) + (`issue #58 `_) * Fixed compiling error if space is in user's folder - (`issue #56 `_) + (`issue #56 `_) * Fixed `AttributeError: 'module' object has no attribute 'disable_warnings'` when a version of `requests` package is less then 2.4.0 * Fixed bug with invalid process's "return code" when PlatformIO has internal - error (`issue #81 `_) + error (`issue #81 `_) * Several bug fixes, increased stability and performance improvements @@ -131,10 +131,10 @@ Release History ------------------- * Fixed an issue with ``--json-output`` - (`issue #42 `_) + (`issue #42 `_) * Fixed an exception during `platformio upgrade `__ - under Windows OS (`issue #45 `_) + under Windows OS (`issue #45 `_) 0.10.1 (2015-01-02) ------------------- @@ -144,7 +144,7 @@ Release History `platformio serialports list `__ and `platformio lib list `__ commands which allows to return the output in `JSON `_ format - (`issue #42 `_) + (`issue #42 `_) * Fixed missing auto-uploading by default after `platformio init `__ command @@ -154,31 +154,31 @@ Release History **Happy New Year!** * Implemented `platformio boards `_ - command (`issue #11 `_) + command (`issue #11 `_) * Added support of *Engduino* boards for `atmelavr `__ - platform (`issue #38 `_) + platform (`issue #38 `_) * Added ``--board`` option to `platformio init `__ command which allows to initialise project with the specified embedded boards - (`issue #21 `_) + (`issue #21 `_) * Added `example with uploading firmware `_ via USB programmer (USBasp) for `atmelavr `_ - *MCUs* (`issue #35 `_) + *MCUs* (`issue #35 `_) * Automatic detection of port on `platformio serialports monitor `_ - (`issue #37 `_) -* Allowed auto-installation of platforms when prompts are disabled (`issue #43 `_) -* Fixed urllib3's *SSL* warning under Python <= 2.7.2 (`issue #39 `_) -* Fixed bug with *Arduino USB* boards (`issue #40 `_) + (`issue #37 `_) +* Allowed auto-installation of platforms when prompts are disabled (`issue #43 `_) +* Fixed urllib3's *SSL* warning under Python <= 2.7.2 (`issue #39 `_) +* Fixed bug with *Arduino USB* boards (`issue #40 `_) 0.9.2 (2014-12-10) ------------------ -* Replaced "dark blue" by "cyan" colour for the texts (`issue #33 `_) +* Replaced "dark blue" by "cyan" colour for the texts (`issue #33 `_) * Added new setting `enable_prompts `_ and allowed to disable all *PlatformIO* prompts (useful for cloud compilers) - (`issue #34 `_) -* Fixed compilation bug on *Windows* with installed *MSVC* (`issue #18 `_) + (`issue #34 `_) +* Fixed compilation bug on *Windows* with installed *MSVC* (`issue #18 `_) 0.9.1 (2014-12-05) ------------------ @@ -190,9 +190,9 @@ Release History * Fixed "*OSError: [Errno 2] No such file or directory*" within `platformio run `__ command when PlatformIO isn't installed properly -* Fixed example for `Eclipse IDE with Tiva board `_ - (`issue #32 `_) -* Upgraded `Eclipse Project Examples `_ +* Fixed example for `Eclipse IDE with Tiva board `_ + (`issue #32 `_) +* Upgraded `Eclipse Project Examples `_ to latest *Luna* and *PlatformIO* releases 0.9.0 (2014-12-01) @@ -201,7 +201,7 @@ Release History * Implemented `platformio settings `_ command * Improved `platformio init `_ command. Added new option ``--project-dir`` where you can specify another path to - directory where new project will be initialized (`issue #31 `_) + directory where new project will be initialized (`issue #31 `_) * Added *Migration Manager* which simplifies process with upgrading to a major release * Added *Telemetry Service* which should help us make *PlatformIO* better @@ -209,9 +209,9 @@ Release History ``.platformio`` states. * Refactored *Package Manager* * Download Manager: fixed SHA1 verification within *Cygwin Environment* - (`issue #26 `_) + (`issue #26 `_) * Fixed bug with code builder and built-in Arduino libraries - (`issue #28 `_) + (`issue #28 `_) 0.8.0 (2014-10-19) ------------------ @@ -220,7 +220,7 @@ Release History with the new fields: `frameworks `_, `platforms `_ and `dependencies `_ - (`issue #17 `_) + (`issue #17 `_) * Switched logic from "Library Name" to "Library Registry ID" for all `platformio lib `_ commands (install, uninstall, update and etc.) @@ -234,8 +234,8 @@ Release History ------------------ * Fixed bug with order for includes in conversation from INO/PDE to CPP -* Automatic detection of port on upload (`issue #15 `_) -* Fixed lib update crashing when no libs are installed (`issue #19 `_) +* Automatic detection of port on upload (`issue #15 `_) +* Fixed lib update crashing when no libs are installed (`issue #19 `_) 0.7.0 (2014-09-24) @@ -243,14 +243,14 @@ Release History * Implemented new `[platformio] `_ section for Configuration File with `home_dir `_ - option (`issue #14 `_) -* Implemented *Library Manager* (`issue #6 `_) + option (`issue #14 `_) +* Implemented *Library Manager* (`issue #6 `_) 0.6.0 (2014-08-09) ------------------ -* Implemented `platformio serialports monitor `_ (`issue #10 `_) -* Fixed an issue ``ImportError: No module named platformio.util`` (`issue #9 `_) +* Implemented `platformio serialports monitor `_ (`issue #10 `_) +* Fixed an issue ``ImportError: No module named platformio.util`` (`issue #9 `_) * Fixed bug with auto-conversation from Arduino \*.ino to \*.cpp 0.5.0 (2014-08-04) @@ -259,12 +259,12 @@ Release History * Improved nested lookups for libraries * Disabled default warning flag "-Wall" * Added auto-conversation from \*.ino to valid \*.cpp for Arduino/Energia - frameworks (`issue #7 `_) -* Added `Arduino example `_ + frameworks (`issue #7 `_) +* Added `Arduino example `_ with external library (*Adafruit CC3000*) * Implemented `platformio upgrade `_ command and "auto-check" for the latest - version (`issue #8 `_) + version (`issue #8 `_) * Fixed an issue with "auto-reset" for *Raspduino* board * Fixed a bug with nested libs building @@ -299,17 +299,17 @@ Release History * Allowed to pass multiple "SomePlatform" to install/uninstall commands * Added "IDE Integration" section to README with Eclipse project examples -* Created auto installer script for *PlatformIO* (`issue #3 `_) +* Created auto installer script for *PlatformIO* (`issue #3 `_) * Added "Super-Quick" way to Installation section (README) -* Implemented "build_flags" option for environments (`issue #4 `_) +* Implemented "build_flags" option for environments (`issue #4 `_) 0.2.0 (2014-06-15) ------------------ -* Resolved `issue #1 "Build referred libraries" `_ +* Resolved `issue #1 "Build referred libraries" `_ * Renamed project's "libs" directory to "lib" -* Added `arduino-internal-library `_ example +* Added `arduino-internal-library `_ example * Changed to beta status diff --git a/README.rst b/README.rst index cde9bb2e..3724dd2b 100644 --- a/README.rst +++ b/README.rst @@ -1,8 +1,8 @@ PlatformIO ========== -.. image:: https://travis-ci.org/ivankravets/platformio.svg?branch=develop - :target: https://travis-ci.org/ivankravets/platformio +.. image:: https://travis-ci.org/platformio/platformio.svg?branch=develop + :target: https://travis-ci.org/profile/platformio :alt: Build Status .. image:: https://gemnasium.com/ivankravets/platformio.png :target: https://gemnasium.com/ivankravets/platformio @@ -19,11 +19,11 @@ PlatformIO `Website + Library Search `_ | `Documentation `_ | -`Project Examples `_ | +`Project Examples `_ | `Blog `_ | `Twitter `_ -.. image:: https://raw.githubusercontent.com/ivankravets/platformio/develop/docs/_static/platformio-logo.png +.. image:: https://raw.githubusercontent.com/platformio/platformio/develop/docs/_static/platformio-logo.png :target: http://platformio.org `PlatformIO `_ is a cross-platform code builder @@ -57,7 +57,7 @@ Embedded Development. *Easier Than Ever.* *PlatformIO* is well suited for embedded development and has pre-configured settings for most popular `Embedded Boards `_. -* Colourful `command-line output `_ +* Colourful `command-line output `_ * Built-in `Serial Port Monitor `_ * Configurable `build -flags/-options `_ * Automatic **firmware uploading** diff --git a/docs/ide.rst b/docs/ide.rst index a7dd0afc..af573259 100644 --- a/docs/ide.rst +++ b/docs/ide.rst @@ -21,7 +21,7 @@ Eclipse :target: http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio * `Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO `_ -* `More examples (TI MSP430, TI TIVA and etc) `_ +* `More examples (TI MSP430, TI TIVA and etc) `_ Energia IDE ----------- diff --git a/docs/index.rst b/docs/index.rst index 5cadf2bc..bacf22f1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -5,9 +5,9 @@ PlatformIO: A cross-platform code builder and the missing library manager :target: http://platformio.org `Website + Library Search `_ | -`Project Examples `_ | +`Project Examples `_ | `Source Code `_ | -`Issues `_ | +`Issues `_ | `Blog `_ | `Twitter `_ diff --git a/docs/installation.rst b/docs/installation.rst index 88d0edd3..75e566a5 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -49,14 +49,14 @@ To install or upgrade *PlatformIO* paste that at a *Terminal* prompt .. code-block:: bash - python -c "$(curl -fsSL https://raw.githubusercontent.com/ivankravets/platformio/master/scripts/get-platformio.py)" + python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)" Installer Script (Mac / Linux / Windows) ---------------------------------------- To install or upgrade *PlatformIO*, download -`get-platformio.py `_ +`get-platformio.py `_ script. Then run the following (you might need to run ``sudo`` first): .. code-block:: bash @@ -136,8 +136,8 @@ Development Version .. code-block:: bash - $ pip install https://github.com/ivankravets/platformio/archive/develop.zip + $ pip install https://github.com/platformio/platformio/archive/develop.zip If you want to be up-to-date with the latest ``develop`` version of PlatformIO, then you need to perform step #2 each time if you see the new commits in -`PlatformIO GitHub repository `_. +`PlatformIO GitHub repository `_. diff --git a/docs/platforms/atmelavr.rst b/docs/platforms/atmelavr.rst index bd8bcead..600f4ebc 100644 --- a/docs/platforms/atmelavr.rst +++ b/docs/platforms/atmelavr.rst @@ -31,7 +31,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/atmelsam.rst b/docs/platforms/atmelsam.rst index a8e78bed..12b77aa8 100644 --- a/docs/platforms/atmelsam.rst +++ b/docs/platforms/atmelsam.rst @@ -31,7 +31,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index 9865beec..e1708ec3 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -238,7 +238,7 @@ base template of ``test-builder.py``. ) # The source code of "platformio-build-tool" is here - # https://github.com/ivankravets/platformio/blob/develop/platformio/builder/tools/platformio.py + # https://github.com/platformio/platformio/blob/develop/platformio/builder/tools/platformio.py # # Target: Build executable and linkable firmware diff --git a/docs/platforms/freescalekinetis.rst b/docs/platforms/freescalekinetis.rst index 5f5eed08..3f8bbb03 100644 --- a/docs/platforms/freescalekinetis.rst +++ b/docs/platforms/freescalekinetis.rst @@ -25,7 +25,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/nordicnrf51.rst b/docs/platforms/nordicnrf51.rst index 04ba9de2..90bf1ac9 100644 --- a/docs/platforms/nordicnrf51.rst +++ b/docs/platforms/nordicnrf51.rst @@ -25,7 +25,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/nxplpc.rst b/docs/platforms/nxplpc.rst index fd2ed5ff..2bea9de5 100644 --- a/docs/platforms/nxplpc.rst +++ b/docs/platforms/nxplpc.rst @@ -25,7 +25,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/ststm32.rst b/docs/platforms/ststm32.rst index 78e3f43f..215d239c 100644 --- a/docs/platforms/ststm32.rst +++ b/docs/platforms/ststm32.rst @@ -40,7 +40,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/teensy.rst b/docs/platforms/teensy.rst index 52c18e22..88b2fc05 100644 --- a/docs/platforms/teensy.rst +++ b/docs/platforms/teensy.rst @@ -34,7 +34,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/timsp430.rst b/docs/platforms/timsp430.rst index b46b7219..19102624 100644 --- a/docs/platforms/timsp430.rst +++ b/docs/platforms/timsp430.rst @@ -31,7 +31,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/platforms/titiva.rst b/docs/platforms/titiva.rst index 5d172bc2..2b02465f 100644 --- a/docs/platforms/titiva.rst +++ b/docs/platforms/titiva.rst @@ -34,7 +34,7 @@ Packages .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). diff --git a/docs/projectconf.rst b/docs/projectconf.rst index de21b0a6..df508ed5 100644 --- a/docs/projectconf.rst +++ b/docs/projectconf.rst @@ -73,7 +73,7 @@ This option can be overridden by global environment variable .. note:: This option is useful for people who migrate from Arduino/Energia IDEs where source directory should have the same name like the main source file. - See `example `__ project with own source directory. + See `example `__ project with own source directory. .. _projectconf_pio_envs_dir: @@ -329,7 +329,7 @@ Examples .. note:: A full list with project examples can be found in - `PlatformIO Repository `_. + `PlatformIO Repository `_. 1. :ref:`platform_atmelavr`: Arduino UNO board with auto pre-configured ``board_*`` and ``upload_*`` options (use only ``board`` option) and Arduino diff --git a/docs/quickstart.rst b/docs/quickstart.rst index 16e20e36..f9296061 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -58,7 +58,7 @@ Change working directory to the project's root where is located If you don't have installed required platforms, then *PlatformIO* will propose you to install them automatically. -Further examples can be found in `PlatformIO Repository `_. +Further examples can be found in `PlatformIO Repository `_. Also, for more detailed information as for commands please go to :ref:`userguide` sections. diff --git a/docs/userguide/cmd_run.rst b/docs/userguide/cmd_run.rst index 2f7345f0..2dc833f4 100644 --- a/docs/userguide/cmd_run.rst +++ b/docs/userguide/cmd_run.rst @@ -42,7 +42,7 @@ Upload port of embedded board. To print all available ports use Examples -------- -1. Process `Wiring Blink Example `_ +1. Process `Wiring Blink Example `_ .. code-block:: bash diff --git a/examples/atmelavr-and-arduino/adafruit-blink/README.rst b/examples/atmelavr-and-arduino/adafruit-blink/README.rst index ffccc76e..222ce460 100644 --- a/examples/atmelavr-and-arduino/adafruit-blink/README.rst +++ b/examples/atmelavr-and-arduino/adafruit-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/arduino-external-libs/README.rst b/examples/atmelavr-and-arduino/arduino-external-libs/README.rst index 634386f8..8a2d15fa 100644 --- a/examples/atmelavr-and-arduino/arduino-external-libs/README.rst +++ b/examples/atmelavr-and-arduino/arduino-external-libs/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/arduino-internal-libs/README.rst b/examples/atmelavr-and-arduino/arduino-internal-libs/README.rst index f510bf29..826cc34e 100644 --- a/examples/atmelavr-and-arduino/arduino-internal-libs/README.rst +++ b/examples/atmelavr-and-arduino/arduino-internal-libs/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/arduino-own-src_dir/README.rst b/examples/atmelavr-and-arduino/arduino-own-src_dir/README.rst index 8c5469cf..ec75a15c 100644 --- a/examples/atmelavr-and-arduino/arduino-own-src_dir/README.rst +++ b/examples/atmelavr-and-arduino/arduino-own-src_dir/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/atmelavr-native-blink/README.rst b/examples/atmelavr-and-arduino/atmelavr-native-blink/README.rst index 4edae991..7ba51060 100644 --- a/examples/atmelavr-and-arduino/atmelavr-native-blink/README.rst +++ b/examples/atmelavr-and-arduino/atmelavr-native-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/digitstump-mouse/README.rst b/examples/atmelavr-and-arduino/digitstump-mouse/README.rst index 0a7076bc..97b6e46d 100644 --- a/examples/atmelavr-and-arduino/digitstump-mouse/README.rst +++ b/examples/atmelavr-and-arduino/digitstump-mouse/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/engduino-magnetometer/README.rst b/examples/atmelavr-and-arduino/engduino-magnetometer/README.rst index 71ef0514..6639e20c 100644 --- a/examples/atmelavr-and-arduino/engduino-magnetometer/README.rst +++ b/examples/atmelavr-and-arduino/engduino-magnetometer/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/atmelavr-and-arduino/panstamp-blink/README.rst b/examples/atmelavr-and-arduino/panstamp-blink/README.rst index eb66f295..a3a0035f 100644 --- a/examples/atmelavr-and-arduino/panstamp-blink/README.rst +++ b/examples/atmelavr-and-arduino/panstamp-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/mbed/mbed-blink/README.rst b/examples/mbed/mbed-blink/README.rst index cc6c6377..50389eb4 100644 --- a/examples/mbed/mbed-blink/README.rst +++ b/examples/mbed/mbed-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/mbed/mbed-dsp/README.rst b/examples/mbed/mbed-dsp/README.rst index 557272de..70645910 100644 --- a/examples/mbed/mbed-dsp/README.rst +++ b/examples/mbed/mbed-dsp/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/mbed/mbed-http-client/README.rst b/examples/mbed/mbed-http-client/README.rst index c7f23685..b2aa2faf 100644 --- a/examples/mbed/mbed-http-client/README.rst +++ b/examples/mbed/mbed-http-client/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/mbed/mbed-rtos/README.rst b/examples/mbed/mbed-rtos/README.rst index 6411da4b..b2e6ff03 100644 --- a/examples/mbed/mbed-rtos/README.rst +++ b/examples/mbed/mbed-rtos/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ==================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/mbed/mbed-serial/README.rst b/examples/mbed/mbed-serial/README.rst index 7f1feb4a..11cc9a66 100644 --- a/examples/mbed/mbed-serial/README.rst +++ b/examples/mbed/mbed-serial/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/stm32/stm32-cmsis-blink/README.rst b/examples/stm32/stm32-cmsis-blink/README.rst index 0c1b987b..f02757ad 100644 --- a/examples/stm32/stm32-cmsis-blink/README.rst +++ b/examples/stm32/stm32-cmsis-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/stm32/stm32-opencm3-blink/README.rst b/examples/stm32/stm32-opencm3-blink/README.rst index b2df8478..32f77fe0 100644 --- a/examples/stm32/stm32-opencm3-blink/README.rst +++ b/examples/stm32/stm32-opencm3-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/stm32/stm32-spl-blink/README.rst b/examples/stm32/stm32-spl-blink/README.rst index 8ed58571..32ba57d8 100644 --- a/examples/stm32/stm32-spl-blink/README.rst +++ b/examples/stm32/stm32-spl-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/teensy/teensy-internal-libs/README.rst b/examples/teensy/teensy-internal-libs/README.rst index e1a1cc9a..58dccb21 100644 --- a/examples/teensy/teensy-internal-libs/README.rst +++ b/examples/teensy/teensy-internal-libs/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/timsp430/panstamp-blink/README.rst b/examples/timsp430/panstamp-blink/README.rst index 6e7c06b7..9a95c87d 100644 --- a/examples/timsp430/panstamp-blink/README.rst +++ b/examples/timsp430/panstamp-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/timsp430/timsp430-energia-blink/README.rst b/examples/timsp430/timsp430-energia-blink/README.rst index 7ad63a62..bd60b1cc 100644 --- a/examples/timsp430/timsp430-energia-blink/README.rst +++ b/examples/timsp430/timsp430-energia-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/timsp430/timsp430-native-blink/README.rst b/examples/timsp430/timsp430-native-blink/README.rst index 5014d0ce..b7e2c7f9 100644 --- a/examples/timsp430/timsp430-native-blink/README.rst +++ b/examples/timsp430/timsp430-native-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/titiva/titiva-energia-blink/README.rst b/examples/titiva/titiva-energia-blink/README.rst index 3f182624..3d49993d 100644 --- a/examples/titiva/titiva-energia-blink/README.rst +++ b/examples/titiva/titiva-energia-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/titiva/titiva-native-blink/README.rst b/examples/titiva/titiva-native-blink/README.rst index 109f2ebb..a97487da 100644 --- a/examples/titiva/titiva-native-blink/README.rst +++ b/examples/titiva/titiva-native-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/titiva/titiva-opencm3-blink/README.rst b/examples/titiva/titiva-opencm3-blink/README.rst index d3a83202..29e2d37f 100644 --- a/examples/titiva/titiva-opencm3-blink/README.rst +++ b/examples/titiva/titiva-opencm3-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/examples/wiring-blink/README.rst b/examples/wiring-blink/README.rst index 8dbda11e..22a843ac 100644 --- a/examples/wiring-blink/README.rst +++ b/examples/wiring-blink/README.rst @@ -2,7 +2,7 @@ How to build PlatformIO based project ===================================== 1. `Install PlatformIO `_ -2. Download `source code with examples `_ +2. Download `source code with examples `_ 3. Extract ZIP archive 4. Run these commands: diff --git a/scripts/99-platformio-udev.rules b/scripts/99-platformio-udev.rules index 34045ef3..dabde7d5 100644 --- a/scripts/99-platformio-udev.rules +++ b/scripts/99-platformio-udev.rules @@ -4,7 +4,7 @@ # UDEV Rules for PlatformIO supproted boards, http://platformio.org/#!/boards # # The latest version of this file may be found at: -# https://github.com/ivankravets/platformio/blob/develop/scripts/99-platformio-udev.rules +# https://github.com/platformio/platformio/blob/develop/scripts/99-platformio-udev.rules # # This file must be placed at: # /etc/udev/rules.d/99-platformio-udev.rules (preferred location) @@ -51,7 +51,7 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:= KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666" #TI Stellaris Launchpad -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666" #TI MSP430 Launchpad SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666" diff --git a/scripts/docspregen.py b/scripts/docspregen.py index d07afb95..86bb60d6 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -89,7 +89,7 @@ def generate_packages(packages): lines.append(""" .. warning:: **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). + `99-platformio-udev.rules `_ (an instruction is located in the file). """) return "\n".join(lines) diff --git a/scripts/get-platformio.py b/scripts/get-platformio.py index 47d34bc7..fd792b25 100644 --- a/scripts/get-platformio.py +++ b/scripts/get-platformio.py @@ -123,7 +123,7 @@ def main(): if is_error: print ("The installation process has been FAILED!\n" "Please report about this problem here\n" - "< https://github.com/ivankravets/platformio/issues >") + "< https://github.com/platformio/platformio/issues >") return else: print ("\n ==> Installation process has been " From 82bf459bdcbd64cc05c14a713390214e577029f9 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:35:51 +0200 Subject: [PATCH 11/28] Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation // Resolve #138 --- HISTORY.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index a9946b0e..35011b00 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,9 @@ Release History 1.3.0 (2015-??-??) ------------------ +* Moved PlatformIO source code and repositories from Ivan Kravets's account + to `PlatformIO Organisation `_ + (`issue #138 `_) * Improved handling of multi-file ``*.ino/pde`` sketches (`issue #130 `_) From 516959bddc819be2ed127712547efafc3865a8bb Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:42:36 +0200 Subject: [PATCH 12/28] Normalize board names // Issue #128 --- docs/frameworks/arduino.rst | 24 ++++++++++----------- docs/frameworks/cmsis.rst | 6 +++--- docs/frameworks/energia.rst | 20 +++++++++--------- docs/frameworks/libopencm3.rst | 12 +++++------ docs/frameworks/mbed.rst | 38 +++++++++++++++++----------------- docs/frameworks/spl.rst | 6 +++--- docs/platforms/atmelavr.rst | 24 ++++++++++----------- docs/platforms/nordicnrf51.rst | 2 +- docs/platforms/nxplpc.rst | 22 ++++++++++---------- docs/platforms/ststm32.rst | 16 +++++++------- docs/platforms/timsp430.rst | 14 ++++++------- docs/platforms/titiva.rst | 6 +++--- 12 files changed, 95 insertions(+), 95 deletions(-) diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index 6215048c..e178058f 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -57,28 +57,28 @@ Adafruit - 2.5 Kb * - ``protrinket3`` - - `Pro Trinket 3V/12MHz (USB) `_ + - `Adafruit Pro Trinket 3V/12MHz (USB) `_ - ATMEGA328P - 12 MHz - 32 Kb - 2 Kb * - ``protrinket3ftdi`` - - `Pro Trinket 3V/12MHz (FTDI) `_ + - `Adafruit Pro Trinket 3V/12MHz (FTDI) `_ - ATMEGA328P - 16 MHz - 32 Kb - 2 Kb * - ``protrinket5`` - - `Pro Trinket 5V/16MHz (USB) `_ + - `Adafruit Pro Trinket 5V/16MHz (USB) `_ - ATMEGA328P - 16 MHz - 32 Kb - 2 Kb * - ``protrinket5ftdi`` - - `Pro Trinket 5V/16MHz (USB) `_ + - `Adafruit Pro Trinket 5V/16MHz (USB) `_ - ATMEGA328P - 16 MHz - 32 Kb @@ -112,7 +112,7 @@ Arduino - RAM * - ``LilyPadUSB`` - - `LilyPad Arduino USB `_ + - `Arduino LilyPad USB `_ - ATMEGA32U4 - 8 MHz - 32 Kb @@ -203,14 +203,14 @@ Arduino - 2.5 Kb * - ``lilypadatmega168`` - - `LilyPad Arduino ATmega168 `_ + - `Arduino LilyPad ATmega168 `_ - ATMEGA168 - 8 MHz - 16 Kb - 1 Kb * - ``lilypadatmega328`` - - `LilyPad Arduino ATmega328 `_ + - `Arduino LilyPad ATmega328 `_ - ATMEGA328P - 8 MHz - 32 Kb @@ -342,7 +342,7 @@ BitWizard - RAM * - ``raspduino`` - - `Raspduino `_ + - `BitWizard Raspduino `_ - ATMEGA328P - 16 MHz - 32 Kb @@ -362,28 +362,28 @@ Digistump - RAM * - ``digispark-pro`` - - `Digispark Pro (Default 16 MHz) `_ + - `Digistump Digispark Pro (Default 16 MHz) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-pro32`` - - `Digispark Pro (16 MHz) (32 byte buffer) `_ + - `Digistump Digispark Pro (16 MHz) (32 byte buffer) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-pro64`` - - `Digispark Pro (16 MHz) (64 byte buffer) `_ + - `Digistump Digispark Pro (16 MHz) (64 byte buffer) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-tiny`` - - `Digispark (Default - 16 MHz) `_ + - `Digistump Digispark (Default - 16 MHz) `_ - ATTINY85 - 16 MHz - 8 Kb diff --git a/docs/frameworks/cmsis.rst b/docs/frameworks/cmsis.rst index 2bdf474e..7824155e 100644 --- a/docs/frameworks/cmsis.rst +++ b/docs/frameworks/cmsis.rst @@ -41,21 +41,21 @@ ST - RAM * - ``disco_f303vc`` - - `STM32F3DISCOVERY `_ + - `ST STM32F3DISCOVERY `_ - STM32F303VCT6 - 72 MHz - 256 Kb - 48 Kb * - ``disco_f407vg`` - - `STM32F4DISCOVERY `_ + - `ST STM32F4DISCOVERY `_ - STM32F407VGT6 - 168 MHz - 1024 Kb - 128 Kb * - ``disco_l152rb`` - - `STM32LDISCOVERY `_ + - `ST STM32LDISCOVERY `_ - STM32L152RBT6 - 32 MHz - 128 Kb diff --git a/docs/frameworks/energia.rst b/docs/frameworks/energia.rst index 56826b10..0f2b4397 100644 --- a/docs/frameworks/energia.rst +++ b/docs/frameworks/energia.rst @@ -44,70 +44,70 @@ TI - RAM * - ``lplm4f120h5qr`` - - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - `TI LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ - LPLM4F120H5QR - 80 MHz - 256 Kb - 32 Kb * - ``lpmsp430f5529`` - - `LaunchPad w/ msp430f5529 (16MHz) `_ + - `TI LaunchPad w/ msp430f5529 (16MHz) `_ - MSP430F5529 - 16 MHz - 128 Kb - 1 Kb * - ``lpmsp430f5529_25`` - - `LaunchPad w/ msp430f5529 (25MHz) `_ + - `TI LaunchPad w/ msp430f5529 (25MHz) `_ - MSP430F5529 - 25 MHz - 128 Kb - 1 Kb * - ``lpmsp430fr5739`` - - `FraunchPad w/ msp430fr5739 `_ + - `TI FraunchPad w/ msp430fr5739 `_ - MSP430FR5739 - 16 MHz - 16 Kb - 1 Kb * - ``lpmsp430fr5969`` - - `LaunchPad w/ msp430fr5969 `_ + - `TI LaunchPad w/ msp430fr5969 `_ - MSP430FR5969 - 8 MHz - 64 Kb - 1 Kb * - ``lpmsp430g2231`` - - `LaunchPad w/ msp430g2231 (1 MHz) `_ + - `TI LaunchPad w/ msp430g2231 (1 MHz) `_ - MSP430G2231 - 1 MHz - 2 Kb - 0.125 Kb * - ``lpmsp430g2452`` - - `LaunchPad w/ msp430g2452 (16MHz) `_ + - `TI LaunchPad w/ msp430g2452 (16MHz) `_ - MSP430G2452 - 16 MHz - 8 Kb - 0.25 Kb * - ``lpmsp430g2553`` - - `LaunchPad w/ msp430g2553 (16MHz) `_ + - `TI LaunchPad w/ msp430g2553 (16MHz) `_ - MSP430G2553 - 16 MHz - 16 Kb - 0.5 Kb * - ``lptm4c1230c3pm`` - - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ - LPTM4C1230C3PM - 80 MHz - 256 Kb - 32 Kb * - ``lptm4c1294ncpdt`` - - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ - LPTM4C1294NCPDT - 120 MHz - 1024 Kb diff --git a/docs/frameworks/libopencm3.rst b/docs/frameworks/libopencm3.rst index be36dbd9..dfde004a 100644 --- a/docs/frameworks/libopencm3.rst +++ b/docs/frameworks/libopencm3.rst @@ -44,21 +44,21 @@ ST - RAM * - ``disco_f303vc`` - - `STM32F3DISCOVERY `_ + - `ST STM32F3DISCOVERY `_ - STM32F303VCT6 - 72 MHz - 256 Kb - 48 Kb * - ``disco_f407vg`` - - `STM32F4DISCOVERY `_ + - `ST STM32F4DISCOVERY `_ - STM32F407VGT6 - 168 MHz - 1024 Kb - 128 Kb * - ``disco_l152rb`` - - `STM32LDISCOVERY `_ + - `ST STM32LDISCOVERY `_ - STM32L152RBT6 - 32 MHz - 128 Kb @@ -78,21 +78,21 @@ TI - RAM * - ``lplm4f120h5qr`` - - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - `TI LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ - LPLM4F120H5QR - 80 MHz - 256 Kb - 32 Kb * - ``lptm4c1230c3pm`` - - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ - LPTM4C1230C3PM - 80 MHz - 256 Kb - 32 Kb * - ``lptm4c1294ncpdt`` - - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ - LPTM4C1294NCPDT - 120 MHz - 1024 Kb diff --git a/docs/frameworks/mbed.rst b/docs/frameworks/mbed.rst index 98436f12..3bea58b5 100644 --- a/docs/frameworks/mbed.rst +++ b/docs/frameworks/mbed.rst @@ -50,7 +50,7 @@ CQ Publishing - RAM * - ``lpc11u35_501`` - - `TG-LPC11U35-501 `_ + - `CQ Publishing TG-LPC11U35-501 `_ - LPC11U35 - 48 MHz - 64 Kb @@ -70,21 +70,21 @@ Embedded Artists - RAM * - ``lpc11u35`` - - `EA LPC11U35 QuickStart Board `_ + - `Embedded Artists LPC11U35 QuickStart Board `_ - LPC11U35 - 48 MHz - 64 Kb - 10 Kb * - ``lpc4088`` - - `EA LPC4088 QuickStart Board `_ + - `Embedded Artists LPC4088 QuickStart Board `_ - LPC4088 - 120 MHz - 512 Kb - 96 Kb * - ``lpc4088_dm`` - - `EA LPC4088 Display Module `_ + - `Embedded Artists LPC4088 Display Module `_ - LPC4088 - 120 MHz - 512 Kb @@ -186,7 +186,7 @@ NGX Technologies - RAM * - ``blueboard_lpc11u24`` - - `BlueBoard-LPC11U24 `_ + - `NGX Technologies BlueBoard-LPC11U24 `_ - LPC11U24 - 48 MHz - 32 Kb @@ -206,21 +206,21 @@ NXP - RAM * - ``lpc11u24`` - - `mbed LPC11U24 `_ + - `NXP mbed LPC11U24 `_ - LPC11U24 - 48 MHz - 32 Kb - 8 Kb * - ``lpc1549`` - - `LPCXpresso1549 `_ + - `NXP LPCXpresso1549 `_ - LPC1549 - 72 MHz - 256 Kb - 36 Kb * - ``lpc1768`` - - `mbed LPC1768 `_ + - `NXP mbed LPC1768 `_ - LPC1768 - 96 MHz - 512 Kb @@ -321,49 +321,49 @@ ST - RAM * - ``disco_f051r8`` - - `STM32F0DISCOVERY `_ + - `ST STM32F0DISCOVERY `_ - STM32F051R8T6 - 48 MHz - 64 Kb - 8 Kb * - ``disco_f100rb`` - - `STM32VLDISCOVERY `_ + - `ST STM32VLDISCOVERY `_ - STM32F100RBT6 - 24 MHz - 128 Kb - 8 Kb * - ``disco_f303vc`` - - `STM32F3DISCOVERY `_ + - `ST STM32F3DISCOVERY `_ - STM32F303VCT6 - 72 MHz - 256 Kb - 48 Kb * - ``disco_f334c8`` - - `32F3348DISCOVERY `_ + - `ST 32F3348DISCOVERY `_ - STM32F334C8T6 - 72 MHz - 64 Kb - 16 Kb * - ``disco_f401vc`` - - `32F401CDISCOVERY `_ + - `ST 32F401CDISCOVERY `_ - STM32F401VCT6 - 84 MHz - 256 Kb - 64 Kb * - ``disco_f407vg`` - - `STM32F4DISCOVERY `_ + - `ST STM32F4DISCOVERY `_ - STM32F407VGT6 - 168 MHz - 1024 Kb - 128 Kb * - ``disco_f429zi`` - - `32F429IDISCOVERY `_ + - `ST 32F429IDISCOVERY `_ - STM32F429ZIT6 - 180 MHz - 2048 Kb @@ -467,14 +467,14 @@ SeeedStudio - RAM * - ``seeedTinyBLE`` - - `Seeed Tiny BLE `_ + - `SeeedStudio Seeed Tiny BLE `_ - NRF51822 - 16 MHz - 256 Kb - 16 Kb * - ``seeeduinoArchPro`` - - `Seeeduino-Arch-Pro `_ + - `SeeedStudio Seeeduino-Arch-Pro `_ - LPC1768 - 96 MHz - 512 Kb @@ -494,7 +494,7 @@ Solder Splash Labs - RAM * - ``dipcortexm0`` - - `DipCortex M0 `_ + - `Solder Splash Labs DipCortex M0 `_ - LPC11U24 - 50 MHz - 32 Kb @@ -521,7 +521,7 @@ Switch Science - 16 Kb * - ``lpc1114fn28`` - - `mbed LPC1114FN28 `_ + - `Switch Science mbed LPC1114FN28 `_ - LPC1114FN28 - 48 MHz - 32 Kb diff --git a/docs/frameworks/spl.rst b/docs/frameworks/spl.rst index fa4e9cdc..64d91979 100644 --- a/docs/frameworks/spl.rst +++ b/docs/frameworks/spl.rst @@ -41,21 +41,21 @@ ST - RAM * - ``disco_f303vc`` - - `STM32F3DISCOVERY `_ + - `ST STM32F3DISCOVERY `_ - STM32F303VCT6 - 72 MHz - 256 Kb - 48 Kb * - ``disco_f407vg`` - - `STM32F4DISCOVERY `_ + - `ST STM32F4DISCOVERY `_ - STM32F407VGT6 - 168 MHz - 1024 Kb - 128 Kb * - ``disco_l152rb`` - - `STM32LDISCOVERY `_ + - `ST STM32LDISCOVERY `_ - STM32L152RBT6 - 32 MHz - 128 Kb diff --git a/docs/platforms/atmelavr.rst b/docs/platforms/atmelavr.rst index 600f4ebc..86f448bd 100644 --- a/docs/platforms/atmelavr.rst +++ b/docs/platforms/atmelavr.rst @@ -76,28 +76,28 @@ Adafruit - 2.5 Kb * - ``protrinket3`` - - `Pro Trinket 3V/12MHz (USB) `_ + - `Adafruit Pro Trinket 3V/12MHz (USB) `_ - ATMEGA328P - 12 MHz - 32 Kb - 2 Kb * - ``protrinket3ftdi`` - - `Pro Trinket 3V/12MHz (FTDI) `_ + - `Adafruit Pro Trinket 3V/12MHz (FTDI) `_ - ATMEGA328P - 16 MHz - 32 Kb - 2 Kb * - ``protrinket5`` - - `Pro Trinket 5V/16MHz (USB) `_ + - `Adafruit Pro Trinket 5V/16MHz (USB) `_ - ATMEGA328P - 16 MHz - 32 Kb - 2 Kb * - ``protrinket5ftdi`` - - `Pro Trinket 5V/16MHz (USB) `_ + - `Adafruit Pro Trinket 5V/16MHz (USB) `_ - ATMEGA328P - 16 MHz - 32 Kb @@ -131,7 +131,7 @@ Arduino - RAM * - ``LilyPadUSB`` - - `LilyPad Arduino USB `_ + - `Arduino LilyPad USB `_ - ATMEGA32U4 - 8 MHz - 32 Kb @@ -208,14 +208,14 @@ Arduino - 2.5 Kb * - ``lilypadatmega168`` - - `LilyPad Arduino ATmega168 `_ + - `Arduino LilyPad ATmega168 `_ - ATMEGA168 - 8 MHz - 16 Kb - 1 Kb * - ``lilypadatmega328`` - - `LilyPad Arduino ATmega328 `_ + - `Arduino LilyPad ATmega328 `_ - ATMEGA328P - 8 MHz - 32 Kb @@ -347,7 +347,7 @@ BitWizard - RAM * - ``raspduino`` - - `Raspduino `_ + - `BitWizard Raspduino `_ - ATMEGA328P - 16 MHz - 32 Kb @@ -367,28 +367,28 @@ Digistump - RAM * - ``digispark-pro`` - - `Digispark Pro (Default 16 MHz) `_ + - `Digistump Digispark Pro (Default 16 MHz) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-pro32`` - - `Digispark Pro (16 MHz) (32 byte buffer) `_ + - `Digistump Digispark Pro (16 MHz) (32 byte buffer) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-pro64`` - - `Digispark Pro (16 MHz) (64 byte buffer) `_ + - `Digistump Digispark Pro (16 MHz) (64 byte buffer) `_ - ATTINY167 - 16 MHz - 16 Kb - 0.5 Kb * - ``digispark-tiny`` - - `Digispark (Default - 16 MHz) `_ + - `Digistump Digispark (Default - 16 MHz) `_ - ATTINY85 - 16 MHz - 8 Kb diff --git a/docs/platforms/nordicnrf51.rst b/docs/platforms/nordicnrf51.rst index 90bf1ac9..6ae93a56 100644 --- a/docs/platforms/nordicnrf51.rst +++ b/docs/platforms/nordicnrf51.rst @@ -144,7 +144,7 @@ SeeedStudio - RAM * - ``seeedTinyBLE`` - - `Seeed Tiny BLE `_ + - `SeeedStudio Seeed Tiny BLE `_ - NRF51822 - 16 MHz - 256 Kb diff --git a/docs/platforms/nxplpc.rst b/docs/platforms/nxplpc.rst index 2bea9de5..1f2e402b 100644 --- a/docs/platforms/nxplpc.rst +++ b/docs/platforms/nxplpc.rst @@ -63,7 +63,7 @@ CQ Publishing - RAM * - ``lpc11u35_501`` - - `TG-LPC11U35-501 `_ + - `CQ Publishing TG-LPC11U35-501 `_ - LPC11U35 - 48 MHz - 64 Kb @@ -83,21 +83,21 @@ Embedded Artists - RAM * - ``lpc11u35`` - - `EA LPC11U35 QuickStart Board `_ + - `Embedded Artists LPC11U35 QuickStart Board `_ - LPC11U35 - 48 MHz - 64 Kb - 10 Kb * - ``lpc4088`` - - `EA LPC4088 QuickStart Board `_ + - `Embedded Artists LPC4088 QuickStart Board `_ - LPC4088 - 120 MHz - 512 Kb - 96 Kb * - ``lpc4088_dm`` - - `EA LPC4088 Display Module `_ + - `Embedded Artists LPC4088 Display Module `_ - LPC4088 - 120 MHz - 512 Kb @@ -117,7 +117,7 @@ NGX Technologies - RAM * - ``blueboard_lpc11u24`` - - `BlueBoard-LPC11U24 `_ + - `NGX Technologies BlueBoard-LPC11U24 `_ - LPC11U24 - 48 MHz - 32 Kb @@ -137,21 +137,21 @@ NXP - RAM * - ``lpc11u24`` - - `mbed LPC11U24 `_ + - `NXP mbed LPC11U24 `_ - LPC11U24 - 48 MHz - 32 Kb - 8 Kb * - ``lpc1549`` - - `LPCXpresso1549 `_ + - `NXP LPCXpresso1549 `_ - LPC1549 - 72 MHz - 256 Kb - 36 Kb * - ``lpc1768`` - - `mbed LPC1768 `_ + - `NXP mbed LPC1768 `_ - LPC1768 - 96 MHz - 512 Kb @@ -191,7 +191,7 @@ SeeedStudio - RAM * - ``seeeduinoArchPro`` - - `Seeeduino-Arch-Pro `_ + - `SeeedStudio Seeeduino-Arch-Pro `_ - LPC1768 - 96 MHz - 512 Kb @@ -211,7 +211,7 @@ Solder Splash Labs - RAM * - ``dipcortexm0`` - - `DipCortex M0 `_ + - `Solder Splash Labs DipCortex M0 `_ - LPC11U24 - 50 MHz - 32 Kb @@ -231,7 +231,7 @@ Switch Science - RAM * - ``lpc1114fn28`` - - `mbed LPC1114FN28 `_ + - `Switch Science mbed LPC1114FN28 `_ - LPC1114FN28 - 48 MHz - 32 Kb diff --git a/docs/platforms/ststm32.rst b/docs/platforms/ststm32.rst index 215d239c..4f2c5e40 100644 --- a/docs/platforms/ststm32.rst +++ b/docs/platforms/ststm32.rst @@ -87,56 +87,56 @@ ST - RAM * - ``disco_f051r8`` - - `STM32F0DISCOVERY `_ + - `ST STM32F0DISCOVERY `_ - STM32F051R8T6 - 48 MHz - 64 Kb - 8 Kb * - ``disco_f100rb`` - - `STM32VLDISCOVERY `_ + - `ST STM32VLDISCOVERY `_ - STM32F100RBT6 - 24 MHz - 128 Kb - 8 Kb * - ``disco_f303vc`` - - `STM32F3DISCOVERY `_ + - `ST STM32F3DISCOVERY `_ - STM32F303VCT6 - 72 MHz - 256 Kb - 48 Kb * - ``disco_f334c8`` - - `32F3348DISCOVERY `_ + - `ST 32F3348DISCOVERY `_ - STM32F334C8T6 - 72 MHz - 64 Kb - 16 Kb * - ``disco_f401vc`` - - `32F401CDISCOVERY `_ + - `ST 32F401CDISCOVERY `_ - STM32F401VCT6 - 84 MHz - 256 Kb - 64 Kb * - ``disco_f407vg`` - - `STM32F4DISCOVERY `_ + - `ST STM32F4DISCOVERY `_ - STM32F407VGT6 - 168 MHz - 1024 Kb - 128 Kb * - ``disco_f429zi`` - - `32F429IDISCOVERY `_ + - `ST 32F429IDISCOVERY `_ - STM32F429ZIT6 - 180 MHz - 2048 Kb - 256 Kb * - ``disco_l152rb`` - - `STM32LDISCOVERY `_ + - `ST STM32LDISCOVERY `_ - STM32L152RBT6 - 32 MHz - 128 Kb diff --git a/docs/platforms/timsp430.rst b/docs/platforms/timsp430.rst index 19102624..913f1970 100644 --- a/docs/platforms/timsp430.rst +++ b/docs/platforms/timsp430.rst @@ -92,49 +92,49 @@ TI - RAM * - ``lpmsp430f5529`` - - `LaunchPad w/ msp430f5529 (16MHz) `_ + - `TI LaunchPad w/ msp430f5529 (16MHz) `_ - MSP430F5529 - 16 MHz - 128 Kb - 1 Kb * - ``lpmsp430f5529_25`` - - `LaunchPad w/ msp430f5529 (25MHz) `_ + - `TI LaunchPad w/ msp430f5529 (25MHz) `_ - MSP430F5529 - 25 MHz - 128 Kb - 1 Kb * - ``lpmsp430fr5739`` - - `FraunchPad w/ msp430fr5739 `_ + - `TI FraunchPad w/ msp430fr5739 `_ - MSP430FR5739 - 16 MHz - 16 Kb - 1 Kb * - ``lpmsp430fr5969`` - - `LaunchPad w/ msp430fr5969 `_ + - `TI LaunchPad w/ msp430fr5969 `_ - MSP430FR5969 - 8 MHz - 64 Kb - 1 Kb * - ``lpmsp430g2231`` - - `LaunchPad w/ msp430g2231 (1 MHz) `_ + - `TI LaunchPad w/ msp430g2231 (1 MHz) `_ - MSP430G2231 - 1 MHz - 2 Kb - 0.125 Kb * - ``lpmsp430g2452`` - - `LaunchPad w/ msp430g2452 (16MHz) `_ + - `TI LaunchPad w/ msp430g2452 (16MHz) `_ - MSP430G2452 - 16 MHz - 8 Kb - 0.25 Kb * - ``lpmsp430g2553`` - - `LaunchPad w/ msp430g2553 (16MHz) `_ + - `TI LaunchPad w/ msp430g2553 (16MHz) `_ - MSP430G2553 - 16 MHz - 16 Kb diff --git a/docs/platforms/titiva.rst b/docs/platforms/titiva.rst index 2b02465f..0f98f8d7 100644 --- a/docs/platforms/titiva.rst +++ b/docs/platforms/titiva.rst @@ -75,21 +75,21 @@ TI - RAM * - ``lplm4f120h5qr`` - - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - `TI LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ - LPLM4F120H5QR - 80 MHz - 256 Kb - 32 Kb * - ``lptm4c1230c3pm`` - - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ - LPTM4C1230C3PM - 80 MHz - 256 Kb - 32 Kb * - ``lptm4c1294ncpdt`` - - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - `TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ - LPTM4C1294NCPDT - 120 MHz - 1024 Kb From 04964bcf3f0d1862cf129cd5c1240427addc835a Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:43:19 +0200 Subject: [PATCH 13/28] Extend list of platform examples --- docs/platforms/creating_platform.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index e1708ec3..e99ff3c1 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -265,9 +265,11 @@ base template of ``test-builder.py``. Please look into the examples with built-in scripts for the popular platforms: -* `atmelavr.py `_ -* `timsp430.py `_ -* `titiva.py `_ +* `baseavr.py `_ +* `basearm.py `_ +* `atmelavr.py `_ +* `timsp430.py `_ +* `ststm32.py `_ .. _platform_creating_installation: From ea9239f8c1d682e6df68e8e8841415006b92b1d8 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 11:47:32 +0200 Subject: [PATCH 14/28] Added support for new Arduino based boards by SparkFun, RepRap, Sanguino // Issue #127 #131 --- HISTORY.rst | 5 ++ docs/frameworks/arduino.rst | 130 ++++++++++++++++++++++++++++++++++++ docs/platforms/atmelavr.rst | 130 ++++++++++++++++++++++++++++++++++++ 3 files changed, 265 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index 35011b00..5e236041 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,6 +7,11 @@ Release History * Moved PlatformIO source code and repositories from Ivan Kravets's account to `PlatformIO Organisation `_ (`issue #138 `_) +* Added support for new Arduino based boards by *SparkFun, RepRap, Sanguino* to + `atmelavr `__ + platform + (`issue #127 `_, + `issue #131 `_) * Improved handling of multi-file ``*.ino/pde`` sketches (`issue #130 `_) diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index e178058f..1b4610b6 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -533,6 +533,26 @@ PanStamp - 32 Kb - 4 Kb +RepRap +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``reprap_rambo`` + - `RepRap RAMBo `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + SainSmart ~~~~~~~~~ @@ -560,6 +580,116 @@ SainSmart - 512 Kb - 32 Kb +Sanguino +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sanguino_atmega12848m`` + - `Sanguino ATmega1284p (8MHz) `_ + - ATMEGA1284P + - 8 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega1284m`` + - `Sanguino ATmega1284p (20MHz) `_ + - ATMEGA1284P + - 20 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega1284p`` + - `Sanguino ATmega1284p (16MHz) `_ + - ATMEGA1284P + - 16 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega644p`` + - `Sanguino ATmega644P `_ + - ATMEGA644P + - 16 MHz + - 64 Kb + - 4 Kb + +SparkFun +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sparkfun_fiov3`` + - `SparkFun Fio V3 3.3V/8MHz `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_makeymakey`` + - `SparkFun Makey Makey `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_megamini`` + - `SparkFun Mega Pro Mini 3.3V `_ + - ATMEGA2560 + - 8 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_megapro16MHz`` + - `SparkFun Mega Pro 5V/16MHz `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_megapro8MHz`` + - `SparkFun Mega Pro 3.3V/8MHz `_ + - ATMEGA2560 + - 8 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_promicro16`` + - `SparkFun Pro Micro 5V/16MHz `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_promicro8`` + - `SparkFun Pro Micro 3.3V/8MHz `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_redboard`` + - `SparkFun RedBoard `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + Teensy ~~~~~~ diff --git a/docs/platforms/atmelavr.rst b/docs/platforms/atmelavr.rst index 86f448bd..fbbf6cc0 100644 --- a/docs/platforms/atmelavr.rst +++ b/docs/platforms/atmelavr.rst @@ -523,3 +523,133 @@ PanStamp - 8 MHz - 32 Kb - 2 Kb + +RepRap +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``reprap_rambo`` + - `RepRap RAMBo `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + +Sanguino +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sanguino_atmega12848m`` + - `Sanguino ATmega1284p (8MHz) `_ + - ATMEGA1284P + - 8 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega1284m`` + - `Sanguino ATmega1284p (20MHz) `_ + - ATMEGA1284P + - 20 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega1284p`` + - `Sanguino ATmega1284p (16MHz) `_ + - ATMEGA1284P + - 16 MHz + - 128 Kb + - 16 Kb + + * - ``sanguino_atmega644p`` + - `Sanguino ATmega644P `_ + - ATMEGA644P + - 16 MHz + - 64 Kb + - 4 Kb + +SparkFun +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sparkfun_fiov3`` + - `SparkFun Fio V3 3.3V/8MHz `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_makeymakey`` + - `SparkFun Makey Makey `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_megamini`` + - `SparkFun Mega Pro Mini 3.3V `_ + - ATMEGA2560 + - 8 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_megapro16MHz`` + - `SparkFun Mega Pro 5V/16MHz `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_megapro8MHz`` + - `SparkFun Mega Pro 3.3V/8MHz `_ + - ATMEGA2560 + - 8 MHz + - 256 Kb + - 8 Kb + + * - ``sparkfun_promicro16`` + - `SparkFun Pro Micro 5V/16MHz `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_promicro8`` + - `SparkFun Pro Micro 3.3V/8MHz `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``sparkfun_redboard`` + - `SparkFun RedBoard `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb From 63925ce3cc34f9269ddb247d72697e8d48f8ee7f Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 12:15:17 +0200 Subject: [PATCH 15/28] Moved PlatformIO source code and repos from Ivan Kravets's account to PlatformIO Organisation --- README.rst | 8 ++++---- docs/index.rst | 2 +- docs/librarymanager/creating.rst | 2 +- platformio/maintenance.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 3724dd2b..75abe145 100644 --- a/README.rst +++ b/README.rst @@ -65,7 +65,7 @@ settings for most popular `Embedded Boards `_. * Ready for **Cloud Compiling** and **Continuous Integration** * Pre-built tool chains, frameworks for the popular `Hardware Platforms `_ -.. image:: https://raw.githubusercontent.com/ivankravets/platformio-web/develop/app/images/platformio-embedded-development.png +.. image:: https://raw.githubusercontent.com/platformio/platformio-web/develop/app/images/platformio-embedded-development.png :target: http://platformio.org :alt: PlatformIO Embedded Development Process @@ -76,13 +76,13 @@ platforms which allows you to organize and have up-to-date external libraries. * Friendly `Command-Line Interface `_ * Modern `Web 2.0 Library Search `_ -* Open Source `Library Registry API `_ +* Open Source `Library Registry API `_ * Library Crawler based on `library.json `_ specification * Library **dependency management** * Automatic library updating -.. image:: https://raw.githubusercontent.com/ivankravets/platformio-web/develop/app/images/platformio-library-manager.png +.. image:: https://raw.githubusercontent.com/platformio/platformio-web/develop/app/images/platformio-library-manager.png :target: http://platformio.org :alt: PlatformIO Library Manager Architecture @@ -98,7 +98,7 @@ cross-platform substitute for the classic *Make* utility. * Ability to share *built files in a cache* * Lookup for external libraries which are installed via `Library Manager `_ -.. image:: https://raw.githubusercontent.com/ivankravets/platformio-web/develop/app/images/platformio-scons-builder.png +.. image:: https://raw.githubusercontent.com/platformio/platformio-web/develop/app/images/platformio-scons-builder.png :target: http://platformio.org :alt: PlatformIO Code Builder Architecture diff --git a/docs/index.rst b/docs/index.rst index bacf22f1..a93d0c27 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,7 +6,7 @@ PlatformIO: A cross-platform code builder and the missing library manager `Website + Library Search `_ | `Project Examples `_ | -`Source Code `_ | +`Source Code `_ | `Issues `_ | `Blog `_ | `Twitter `_ diff --git a/docs/librarymanager/creating.rst b/docs/librarymanager/creating.rst index b72d8e70..1db24f56 100644 --- a/docs/librarymanager/creating.rst +++ b/docs/librarymanager/creating.rst @@ -15,7 +15,7 @@ Source Code Location -------------------- There are a several ways how to share your library with the whole world -(see `examples `_). +(see `examples `_). You can hold a lot of libraries (split into separated folders) inside one of the repository/archive. In this case please use :ref:`libjson_include` diff --git a/platformio/maintenance.py b/platformio/maintenance.py index 1a430a15..4a8da390 100644 --- a/platformio/maintenance.py +++ b/platformio/maintenance.py @@ -115,7 +115,7 @@ def after_upgrade(ctx): ) click.echo("- %s us a star on GitHub > %s" % ( click.style("give", fg="cyan"), - click.style("https://github.com/ivankravets/platformio", fg="cyan") + click.style("https://github.com/platformio/platformio", fg="cyan") )) click.secho("Thanks a lot!\n", fg="green") From b51a088230989506e2581649ee6093a8a9a86a7d Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 12:20:15 +0200 Subject: [PATCH 16/28] Add Boards Explorer to docs and README --- README.rst | 2 +- docs/index.rst | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 75abe145..56ff9205 100644 --- a/README.rst +++ b/README.rst @@ -33,7 +33,7 @@ and the missing library manager. * `Web 2.0 Library Search `_ * `Development Platforms `_ * `Frameworks `_ -* `Embedded Boards `_ +* `Embedded Boards Explorer `_ * `Library Manager `_ * `User Guide `_ * `IDE Integration `_ diff --git a/docs/index.rst b/docs/index.rst index a93d0c27..d48dd082 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -4,12 +4,14 @@ PlatformIO: A cross-platform code builder and the missing library manager .. image:: _static/platformio-logo.png :target: http://platformio.org -`Website + Library Search `_ | -`Project Examples `_ | -`Source Code `_ | -`Issues `_ | -`Blog `_ | -`Twitter `_ +* `Website `_ +* `Web 2.0 Library Search `_ | + `Embedded Boards Explorer `_ +* `Project Examples `_ +* `Source Code `_ | + `Issues `_ +* `Blog `_ | + `Twitter `_ You have no need to install any *IDE* or compile any tool chains. *PlatformIO* has pre-built different development platforms including: compiler, debugger, From fcd763eb7fc61e130c05ce4602e6f836745a60fd Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 12:48:55 +0200 Subject: [PATCH 17/28] Add supported platforms and frameworks to README and main doc page --- README.rst | 3 +++ docs/index.rst | 3 +++ 2 files changed, 6 insertions(+) diff --git a/README.rst b/README.rst index 56ff9205..a4b116b3 100644 --- a/README.rst +++ b/README.rst @@ -23,6 +23,9 @@ PlatformIO `Blog `_ | `Twitter `_ +*Atmel AVR & SAM, Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, +TI MSP430 & Tiva, Teensy, Arduino, mbed, libOpenCM3, etc.* + .. image:: https://raw.githubusercontent.com/platformio/platformio/develop/docs/_static/platformio-logo.png :target: http://platformio.org diff --git a/docs/index.rst b/docs/index.rst index d48dd082..c8706a02 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,9 @@ PlatformIO: A cross-platform code builder and the missing library manager ========================================================================= +*Atmel AVR & SAM, Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, +TI MSP430 & Tiva, Teensy, Arduino, mbed, libOpenCM3, etc.* + .. image:: _static/platformio-logo.png :target: http://platformio.org From 4567bcd1eafd7a1e46a6245bbb36cac651e8d3c3 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 13:22:39 +0200 Subject: [PATCH 18/28] Improve docs for IDE & PlatformIO --- docs/ide.rst | 64 +++++--------------------------------------- docs/ide/arduino.rst | 31 +++++++++++++++++++++ docs/ide/eclipse.rst | 35 ++++++++++++++++++++++++ docs/ide/energia.rst | 30 +++++++++++++++++++++ docs/ide/vim.rst | 46 +++++++++++++++++++++++++++++++ 5 files changed, 148 insertions(+), 58 deletions(-) create mode 100644 docs/ide/arduino.rst create mode 100644 docs/ide/eclipse.rst create mode 100644 docs/ide/energia.rst create mode 100644 docs/ide/vim.rst diff --git a/docs/ide.rst b/docs/ide.rst index af573259..61e39986 100644 --- a/docs/ide.rst +++ b/docs/ide.rst @@ -3,62 +3,10 @@ IDE Integration =============== -.. contents:: +.. toctree:: + :maxdepth: 2 -Arduino IDE ------------ - -.. image:: _static/ide-platformio-arduino.png - :target: http://www.ikravets.com/computer-life/platformio/2014/10/07/integration-of-platformio-library-manager-to-arduino-and-energia-ides - -* `Integration of PlatformIO library manager to Arduino IDE `_ - -Eclipse -------- - - -.. image:: _static/ide-platformio-eclipse.png - :target: http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using-eclipse-ideplatformio - -* `Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO `_ -* `More examples (TI MSP430, TI TIVA and etc) `_ - -Energia IDE ------------ - -.. image:: _static/ide-platformio-energia.png - :target: http://www.ikravets.com/computer-life/platformio/2014/10/07/integration-of-platformio-library-manager-to-arduino-and-energia-ides - -* `Integration of PlatformIO library manager to Energia IDE `_ - -VIM ---- - -.. image:: _static/ide-platformio-vim.png - -Recommended bundles: - -* Syntax highlight - `Arduino-syntax-file `_ -* Code Completion - `YouCompleteMe `_ (see configuration example by **Anthony Ford** `PlatformIO/YouCompleteMe Integration `_) -* Syntax checking - `Syntastic `_ - - - -Put to the project directory ``Makefile`` wrapper with contents: - -.. code-block:: make - - # Uncomment lines below if you have problems with $PATH - #SHELL := /bin/bash - #PATH := /usr/local/bin:$(PATH) - - all: - platformio run -t upload - - clean: - platformio run -t clean - - -Now, in VIM ``cd /path/to/this/project`` and press ``Ctrl+B`` or ``Cmd+B`` -(Mac). *PlatformIO* should compile your source code from the ``src`` directory, -make firmware and upload it. + ide/arduino + ide/eclipse + ide/energia + ide/vim \ No newline at end of file diff --git a/docs/ide/arduino.rst b/docs/ide/arduino.rst new file mode 100644 index 00000000..7cd3b3a5 --- /dev/null +++ b/docs/ide/arduino.rst @@ -0,0 +1,31 @@ +.. _ide_arduino: + +Arduino +======= + +The open-source `Arduino Software (IDE) `_ +makes it easy to write code and upload it to the board. It runs on *Windows, +Mac OS X, and Linux*. The environment is written in *Java* and based on +*Processing* and other open-source software. + +This software can be used with: + +* :ref:`platform_atmelavr` +* :ref:`platform_atmelsam` +* :ref:`framework_arduino` + +Refer to the `Arduino Getting Started `_ +page for Installation instructions. + +Integration +----------- + +More detailed information is located in PlatformIO blog: +`Integration of PlatformIO library manager to Arduino IDE `_. + + +Screenshot +---------- + +.. image:: ../_static/ide-platformio-arduino.png + :target: http://www.ikravets.com/computer-life/platformio/2014/10/07/integration-of-platformio-library-manager-to-arduino-and-energia-ides diff --git a/docs/ide/eclipse.rst b/docs/ide/eclipse.rst new file mode 100644 index 00000000..6fd8fae1 --- /dev/null +++ b/docs/ide/eclipse.rst @@ -0,0 +1,35 @@ +.. _ide_eclipse: + +Eclipse +======= + +The `Eclipse CDT (C/C++ Development Tooling) `_ +Project provides a fully functional C and C++ Integrated Development +Environment based on the Eclipse platform. Features include: support for +project creation and managed build for various toolchains, standard make +build, source navigation, various source knowledge tools, such as type +hierarchy, call graph, include browser, macro definition browser, code editor +with syntax highlighting, folding and hyperlink navigation, source code +refactoring and code generation, visual debugging tools, including memory, +registers, and disassembly viewers. + +This software can be used with: + +* all availalbe :ref:`platforms` +* all availalbe :ref:`frameworks` + +Refer to the `CDT Documentation `_ +page for more detailed information. + +Integration +----------- + +More detailed information is located in PlatformIO blog: `Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO `_. + +`More examples (TI MSP430, TI TIVA, etc.) `_ + +Screenshot +---------- + +.. image:: ../_static/ide-platformio-eclipse.png + :target: http://www.ikravets.com/computer-life/programming/2014/06/20/building-and-debugging-atmel-avr-arduino-based-project-using- eclipse-ideplatformio diff --git a/docs/ide/energia.rst b/docs/ide/energia.rst new file mode 100644 index 00000000..776da868 --- /dev/null +++ b/docs/ide/energia.rst @@ -0,0 +1,30 @@ +.. _ide_energia: + +Energia +======= + +The open-source `Energia Software (IDE) `_ +makes it easy to write code and upload it to the board. It runs on *Windows, +Mac OS X, and Linux*. The environment is written in *Java* and based on +*Processing* and other open-source software. + +This software can be used with: + +* :ref:`platform_timsp430` +* :ref:`platform_titiva` +* :ref:`framework_energia` + +Refer to the `Energia Getting Started `_ +page for Installation instructions. + +Integration +----------- + +More detailed information is located in PlatformIO blog: +`Integration of PlatformIO library manager to Energia IDE `_. + +Screenshot +----------- + +.. image:: ../_static/ide-platformio-energia.png + :target: http://www.ikravets.com/computer-life/platformio/2014/10/07/integration-of-platformio-library-manager-to-arduino-and-energia-ides diff --git a/docs/ide/vim.rst b/docs/ide/vim.rst new file mode 100644 index 00000000..1840e510 --- /dev/null +++ b/docs/ide/vim.rst @@ -0,0 +1,46 @@ +.. _ide_vim: + +VIM +=== + +`VIM `_ is an open-source, powerful and configurable text +editor. Vim is designed for use both from a command-line interface and as a +standalone application in a graphical user interface. + +This software can be used with: + +* all availalbe :ref:`platforms` +* all availalbe :ref:`frameworks` + +Integration +----------- + +Recommended bundles: + +* Syntax highlight - `Arduino-syntax-file `_ +* Code Completion - `YouCompleteMe `_ (see configuration example by **Anthony Ford** `PlatformIO/YouCompleteMe Integration `_) +* Syntax checking - `Syntastic `_ + +Put to the project directory ``Makefile`` wrapper with contents: + +.. code-block:: make + + # Uncomment lines below if you have problems with $PATH + #SHELL := /bin/bash + #PATH := /usr/local/bin:$(PATH) + + all: + platformio run -t upload + + clean: + platformio run -t clean + + +Now, in VIM ``cd /path/to/this/project`` and press ``Ctrl+B`` or ``Cmd+B`` +(Mac). *PlatformIO* should compile your source code from the ``src`` directory, +make firmware and upload it. + +Screenshot +---------- + +.. image:: ../_static/ide-platformio-vim.png From 0b0f312c24aa6a30cc4ac4720fdc8fb15f073c34 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 13:42:44 +0200 Subject: [PATCH 19/28] Add "Articles about us" page --- README.rst | 1 + docs/articles.rst | 16 ++++++++++++++++ docs/index.rst | 1 + 3 files changed, 18 insertions(+) create mode 100644 docs/articles.rst diff --git a/README.rst b/README.rst index a4b116b3..516606ed 100644 --- a/README.rst +++ b/README.rst @@ -40,6 +40,7 @@ and the missing library manager. * `Library Manager `_ * `User Guide `_ * `IDE Integration `_ +* `Articles about us `_ * `Release History `_ You have **no need** to install any *IDE* or compile any tool chains. *PlatformIO* diff --git a/docs/articles.rst b/docs/articles.rst new file mode 100644 index 00000000..de800f62 --- /dev/null +++ b/docs/articles.rst @@ -0,0 +1,16 @@ +.. _articles: + +Articles about us +================= + +.. note:: + If you've writeen article about PlatformIO and would like it listed on + this page, `please edit this page `_. + +Here are recent articles about PlatformIO: + +* March 23, 2015 - **Atmel** - `Cross-board and cross-vendor embedded development with PlatformIO `_ +* March 22, 2015 - **Mark VandeWettering** - `Discovered a new tool for embedded development: PlatformIO `_ +* October 7, 2014 - **Ivan Kravets** - `Integration of PlatformIO library manager to Arduino and Energia IDEs `_ +* June 20, 2014 - **Ivan Kravets** - `Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO `_ +* June 17, 2014 - **Ivan Kravets** - `How was PlatformIO born or why I love Python World `_ \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index c8706a02..2f46d604 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -68,4 +68,5 @@ Contents librarymanager/index userguide/index ide + articles history From f2092258640a868713db0565ed9a95f993a87a44 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 13:56:28 +0200 Subject: [PATCH 20/28] Fix broken link to Energia site --- docs/ide/energia.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ide/energia.rst b/docs/ide/energia.rst index 776da868..d047e2d0 100644 --- a/docs/ide/energia.rst +++ b/docs/ide/energia.rst @@ -14,7 +14,7 @@ This software can be used with: * :ref:`platform_titiva` * :ref:`framework_energia` -Refer to the `Energia Getting Started `_ +Refer to the `Energia Getting Started `_ page for Installation instructions. Integration From 51b73410b5fcc586f5d9d91119b04c929296e8b3 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 15:52:54 +0200 Subject: [PATCH 21/28] Add support for QinHeng Electronics HL-340 USB-Serial adapter --- scripts/99-platformio-udev.rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/99-platformio-udev.rules b/scripts/99-platformio-udev.rules index dabde7d5..c0614f2b 100644 --- a/scripts/99-platformio-udev.rules +++ b/scripts/99-platformio-udev.rules @@ -31,6 +31,9 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="066 # Prolific Technology, Inc. PL2303 Serial Port SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666" +# QinHeng Electronics HL-340 USB-Serial adapter +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666" + # ARDUINO UNO SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", MODE:="0666" From 3018113b43b61ef1d80fff5b82bb0634aaaa2b24 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 20:39:44 +0200 Subject: [PATCH 22/28] Update example with platforms list --- docs/userguide/cmd_list.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/userguide/cmd_list.rst b/docs/userguide/cmd_list.rst index 103c457b..1bc6b745 100644 --- a/docs/userguide/cmd_list.rst +++ b/docs/userguide/cmd_list.rst @@ -34,7 +34,10 @@ Examples $ platformio list atmelavr with packages: toolchain-atmelavr, tool-avrdude, framework-arduinoavr, tool-micronucleus atmelsam with packages: framework-arduinosam, ldscripts, toolchain-gccarmnoneeabi, tool-bossac - stm32 with packages: toolchain-gccarmnoneeabi, tool-stlink, framework-spl, framework-cmsis, framework-opencm3, ldscripts + freescalekinetis with packages: framework-mbed, toolchain-gccarmnoneeabi + nordicnrf51 with packages: framework-mbed, toolchain-gccarmnoneeabi + nxplpc with packages: framework-mbed, toolchain-gccarmnoneeabi + ststm32 with packages: framework-libopencm3, toolchain-gccarmnoneeabi, tool-stlink, framework-spl, framework-cmsis, framework-mbed, ldscripts teensy with packages: toolchain-atmelavr, ldscripts, framework-arduinoteensy, toolchain-gccarmnoneeabi, tool-teensy - timsp430 with packages: toolchain-timsp430, tool-mspdebug, framework-energiamsp430 - titiva with packages: ldscripts, toolchain-gccarmnoneeabi, tool-lm4flash, framework-opencm3, framework-energiativa + timsp430 with packages: toolchain-timsp430, tool-mspdebug, framework-energiamsp430, framework-arduinomsp430 + titiva with packages: ldscripts, framework-libopencm3, toolchain-gccarmnoneeabi, tool-lm4flash, framework-energiativa From 5f93b450ace68e586ebbe6b59003c83201c9e866 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Wed, 25 Mar 2015 20:43:30 +0200 Subject: [PATCH 23/28] Add integration instructions for Visual Studio and Sublime Text IDEs --- ...e-sublime-text-platformio-newproject-1.png | Bin 0 -> 24204 bytes ...e-sublime-text-platformio-newproject-2.png | Bin 0 -> 20432 bytes ...e-sublime-text-platformio-newproject-3.png | Bin 0 -> 31159 bytes ...e-sublime-text-platformio-newproject-4.png | Bin 0 -> 15704 bytes ...e-sublime-text-platformio-newproject-5.png | Bin 0 -> 42604 bytes .../ide-vs-platformio-newproject-2-1.png | Bin 0 -> 15362 bytes .../ide-vs-platformio-newproject-2.png | Bin 0 -> 14947 bytes .../ide-vs-platformio-newproject-3.png | Bin 0 -> 18009 bytes .../ide-vs-platformio-newproject-4.png | Bin 0 -> 19442 bytes .../ide-vs-platformio-newproject-5.png | Bin 0 -> 23428 bytes .../ide-vs-platformio-newproject-6.png | Bin 0 -> 20189 bytes .../ide-vs-platformio-newproject-7.png | Bin 0 -> 20186 bytes .../ide-vs-platformio-newproject-8.png | Bin 0 -> 83694 bytes docs/_static/ide-vs-platformio-newproject.png | Bin 0 -> 30628 bytes docs/ide.rst | 4 +- docs/ide/sublimetext.rst | 129 ++++++++++++++++++ docs/ide/visualstudio.rst | 108 +++++++++++++++ 17 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 docs/_static/ide-sublime-text-platformio-newproject-1.png create mode 100644 docs/_static/ide-sublime-text-platformio-newproject-2.png create mode 100644 docs/_static/ide-sublime-text-platformio-newproject-3.png create mode 100644 docs/_static/ide-sublime-text-platformio-newproject-4.png create mode 100644 docs/_static/ide-sublime-text-platformio-newproject-5.png create mode 100644 docs/_static/ide-vs-platformio-newproject-2-1.png create mode 100644 docs/_static/ide-vs-platformio-newproject-2.png create mode 100644 docs/_static/ide-vs-platformio-newproject-3.png create mode 100644 docs/_static/ide-vs-platformio-newproject-4.png create mode 100644 docs/_static/ide-vs-platformio-newproject-5.png create mode 100644 docs/_static/ide-vs-platformio-newproject-6.png create mode 100644 docs/_static/ide-vs-platformio-newproject-7.png create mode 100644 docs/_static/ide-vs-platformio-newproject-8.png create mode 100644 docs/_static/ide-vs-platformio-newproject.png create mode 100644 docs/ide/sublimetext.rst create mode 100644 docs/ide/visualstudio.rst diff --git a/docs/_static/ide-sublime-text-platformio-newproject-1.png b/docs/_static/ide-sublime-text-platformio-newproject-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6432124e49b2819502e2429a01b88c76a8fc9eb5 GIT binary patch literal 24204 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 az5nG?TzqAp=I)ydGSbu4&t;ucLK6UeRvUo; literal 0 HcmV?d00001 diff --git a/docs/_static/ide-sublime-text-platformio-newproject-2.png b/docs/_static/ide-sublime-text-platformio-newproject-2.png new file mode 100644 index 0000000000000000000000000000000000000000..45188c044698c3a0c6a972629d8ae069bfe737b9 GIT binary patch literal 20432 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 BQoH~F literal 0 HcmV?d00001 diff --git a/docs/_static/ide-sublime-text-platformio-newproject-3.png b/docs/_static/ide-sublime-text-platformio-newproject-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6f980c0fcdf66a2b08750bc81c1324a0b2eececa GIT binary patch literal 31159 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 L{an^LB{Ts5Hp$l? literal 0 HcmV?d00001 diff --git a/docs/_static/ide-sublime-text-platformio-newproject-4.png b/docs/_static/ide-sublime-text-platformio-newproject-4.png new file mode 100644 index 0000000000000000000000000000000000000000..aaee5561763897f03bf7d6aabd8a0a16448a8b53 GIT binary patch literal 15704 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 literal 0 HcmV?d00001 diff --git a/docs/_static/ide-sublime-text-platformio-newproject-5.png b/docs/_static/ide-sublime-text-platformio-newproject-5.png new file mode 100644 index 0000000000000000000000000000000000000000..8cffe1459807054683d5daf98253e82412a0dc40 GIT binary patch literal 42604 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 literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-2.png b/docs/_static/ide-vs-platformio-newproject-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3ccf136c5c4417fb75c7e8829356ccf5ec72de60 GIT binary patch literal 14947 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 literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-3.png b/docs/_static/ide-vs-platformio-newproject-3.png new file mode 100644 index 0000000000000000000000000000000000000000..763f8e053889d3914566a9356b83ac5928eb07db GIT binary patch literal 18009 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 IIVCg!0OB;)ivR!s literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-4.png b/docs/_static/ide-vs-platformio-newproject-4.png new file mode 100644 index 0000000000000000000000000000000000000000..78ebc60131b1f7124139e799d4908c9f749a76f2 GIT binary patch literal 19442 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 E0MUuoEC2ui literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-5.png b/docs/_static/ide-vs-platformio-newproject-5.png new file mode 100644 index 0000000000000000000000000000000000000000..bcae88e168df6bd03c3239170e2a1f42268bf213 GIT binary patch literal 23428 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 SWos_z*jZ0kKbLh*2~7Y=l-At< literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-6.png b/docs/_static/ide-vs-platformio-newproject-6.png new file mode 100644 index 0000000000000000000000000000000000000000..fb51d40f71546384a59faef38873dde55a47d023 GIT binary patch literal 20189 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 Bh;sk{ literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-7.png b/docs/_static/ide-vs-platformio-newproject-7.png new file mode 100644 index 0000000000000000000000000000000000000000..e5112405b10085091a400070610bff1ced1a8475 GIT binary patch literal 20186 zcmeAS@N?(olHy`uVBq!ia0y~yVBW^Sz%+q_iGhJZMXE4>fq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{>NpvlhO2OPDNi2PvV>j4IF|ug+WPI?z59PFU#)rfZ{F(q&(~EvCp~fgS^vMe{)5CBeNPuP5I@T0YP->X z6~UP*o|E`91w-Xe{h8#FGD*eLZi#D1t;T0>p^2W8R4Tppn=h8QwWVVfe`=kll9A^m z75}uZW0FT(V!K!T3V1eMMQO5%=ckls8!htXH*~Bz{`+p@VcX-g<0p0aOj0?ib*=Bj zK^x)cZ=+{`L^hS~|MW5a{_nl#?f%}}RR1*H{_EoVzc1d`vU2~P zTQ18j{!q~Eow9G6jZ*(&dHH_Tlgwg)U)`Raw8+1I2yD6T?wsAzeor?nJQt{c?2c-= zoW!ZQ!ijU{r(fH%H!8hj`DxYMIpyW;rtvkUZ}xpX?z}8yR#EOOvn7|-J}OS-RDuOdp4nJem<6nRJU6EO_l&!&* zqDY%}7tf=6fY9WqyNanhX6S!^@_^YnyL?hcO+~`oneY7zsE_H{_U__bkgju&xDP}uG=Mkhgom(=CU!EGJE;qoy%j=Z@&0@ z>bSjC`sE!@_oN(|F{8fZyLevDG1pHWb9`@a2bnE0ak})Z$4B#zKH5|3>%uqJ+3Q~2 zDV4|wSawdCd@N-9MAl@N*+S1R$o+hgzjU_zr%dIi7am!4^6?4U%(rPfJ+bD~uTP&= zYxNqJ>*u_>8B<@IxV-bk&-{tn^B!EQd|WEmcjECMhgr^(e#66bl8Wa#5m1S6aw@nK z*ck*WMpVMPPJl`mFK{suqX{YuCTY8ZijktFpc24yosRM+{r}JYyMjs<)6X7z1SjtQ zy7v7970*fj#}_Mo3Xl6M`P1Xf{#wsTD%l!Jn+-qb$4^o@Db;l%=ggnm(^Wh-wJ8}% z8~^{N>N#o6!j3b?P?c_yzW@DP`TLBG3Xz8wDNLR_vwnLwMCY4h)@d<CrJ}-@6GnVH~;@L|Nm$G`k$x&Kd%4NZ&D!RI?>+Ih41H&+V{U3zwi6L z*Y$st;LPQQ|G(9?v}ya~o0c5kdcRKd#=FiFFAvUpP_3Y}oIUzXd&h}A@>4BrqUzpW zuY0S0?awFu|DSq;iUOa!mzwBoSNFd9{`WUGH_QK8D6iFa?VMmG$C~+nZrnV;U;l}} z?V|mUmEZei)8*^beP;YP@%-?M+wz|M$J%cT{w%M1*M514W{1D6{hyQbg(p@Up}AxG zyOT%CCf;n6R(-d6zJKKtb-VvpuavqU>e~OK`oF5}4aJ^$e_YznTLk-Y_jC6}KF#Rc zvugIo_`3Jvo3HEJdBqg3%GOW&n$%((vh&y9KNscy23oxL|M$dyU)9%Fv+w_TCjbAV zJUC>W&+q>g{$J~?Mbn}a_cfKy|NL>h?#=N$p^3{k{PyEG<(!_eIRmPgZOf zoGz7A{(>{p`rDsx>h(`@l1;Z|{d>Fn;nmL%_xCWJU*EM*`p2h7Z*D$az38*XVbNvV zqn>o$vfX;JFokk;$***VD|3Z*ZXzlANnN2U7r2jp;!3&z}NV?_uu`5 zWBJ=x8&uV}>?>PY_~nGf_WWBD+wV_dK7H?7&%@WI^5#b#+vxJg?~ArSewXv-$yJ|k zp06`wc{HK_^5ge)-=**WaC`CdX#Ag}Uw&|ODb@e(nDhLxwA&NQ4SsJEkC)#H)O*(B zS(Wl;j(d2!e#;iws(b&7_wU^)C2juyn{MsbM>T%O*2l%ft##ji*XOW$&xztLS)~uN z<7MRE2)KXe%QM#3)4nf!z2^5_U%{EaJM;>-_h+$N?#Yl4otR&FOlQlp|Amu_Uq9br zs`y3r|JGg7_J1$i%QAi3zW?vrFBJ-3SS~dyYjpj2tNiJE?fvijzwdp|d$Qt5?fdF@ z!^GSZD}O70GDyGiPIi0U=6@3P$C>{>SbopG?A+qupE)g$9#TUez#Zb<-vKk)j##jezx;sQ~&wWPVN?gEt7lN z-kxln(*J15#HEkL?f?I*6y9u+z!4qqTl+ity20D;mo8o2QnT{ume0F7-x#$$es=8G z(et*4PnPMaPm;9@(lhdzF)#4NtmDfMhY5$xbvE82RJiwPVAMXFyYGr6IR9S0Rd}k( zAZU$@e!?#!U2$W9K7BrYHJ%jpHD|5g?-5@2>vjD9s;WPC-~YQB|2OnS|Tkul=;(L`TMOak+S-A)jSo}O`3+O zfiG9jk7r*}sbTWW^W%rPnU@Q4-nnhum_B2hN&7XM865rBv)!MaWA42n6SYuX*V5*E zW{GQANJ{m@r#zpvPTz`r|EVhFwaT-3H5%Fd%eiG&izli{-;j>$p1OJI^nVT(`z+k& z*ckGsrms1({{OG_?ZW@R`2YVh|NqbV?d^*4|0maf@^?Cadb<8`PRsZohs4`n|LMHo z5zFj4v0g^7a_3Z~T(;%%7rV_h{OwPE|JPqzabK^T-*xTf-V$DFVAAI~lfJtH&I`t!xR z=guYfE@e0}&ZFbSHcKDW$EZTyTxWfDmH{;d{$nl&vc+GS6$hkjfv*Y%17+*fr zXpx?^{zTZl9P#C|_Z@nD(m3(kwbnVa^lM*wzs$PUGUdZr+S#4f?Y-wEFoBeZ@V-l-YyLNq$Qu_3v;HHyY z$I41uV;iqGZ4Y+ty?r2)qqJCOy({D1Z@1U~m@ArmhWCsxU&ZkrZKcn3G1GU5YL>iB zTfa1&&nI%ut-1Tnm-e>IEBtpav+$(I-A(_TryH7<>8H(;j-0ESe0Tru6IqAStl!V+ zpKmpt_4(?P&+_N!3GJT#$4aPgmi0H8ZM!DbzICwJW3g+7!KC>c#VYOUp3g0>dpW&M z)8t;&>$TJMi9=}LMc zr4;1h`g)B?`tr(CT7J5Fg@0z;ljF2aer08%t7Bzz?$`5Y$5Nm4{%n|d!+4&)TsV)~ zv%~IY;xnzyZr@b=X!2U!;{2^0pEmBbIWaS?WoD_njUM*~>HQaz;;jXyX>H0kOiXyr z<>&YBecey{Uw8W!oq#kHwtso$Ixo9jLHbZ0*N(^-J2fT$@}wt<)?3cckDufJIlpYN zYsUGV7Td0`G@ET{o*Whz_43Bk3zczYI$1?$x8HwRHt}*|-j)ZCi(?-#IiHi7sT}N6 zB)qY>N~ZoxwvUhNoG3BLYbV^xo5Np7p5J1s`=?$h*7wzpXGWWrp6ZUjw&!a9>)!4s z!e+NO8vaSRQ*tD$KRfRI`COx!cz*KpneMJn zW|nsKE-Y7SyKnQ%FIm3k^Vu!kbJl)&HhcF;3tlnl%NC~BYk%K8$t-ATdn3ut1yaFT zh+b#AARL(XWL1d$P4RDcM9Q$?n)hzt*W2gyjAjRPu0CAr z`lRsjj%VlI`P>OzSHI}tyd9Up*}*l%EbZUh>ifr}b-(>va1Yv^iuwI^dehr;@7~)y zY$!jo1KcKB$M;=)VqpU;dcMoa)=$6lF81_NxLy7(X~J5CFJ{1%z?xg3`~SM6m@O1) z@6+u16DTL$=w=ClT|#? znylE`x%aYN^y+@bIE(qW^dJAv#;`-bi_52MO-Id?qrwj#8%}xisM{6XKviD~6$^Ax zJNY}%<=NyQ7rRrBIzN1@IMngyZGQdgf_QaLJ4e?PJ5ARoi*@F4$oDH5dEV<+GMYby zUtr?>e^TthgyZ=+~|J*5W_Z!qEUHSP~-M_=P+y5W*-}_(Zv8ZT~%ZyKUe{mmd{2YD)iK?*HFyb5}0RMeU?7NZV?cC-vXo z$APMTU90Aoxnh%FAHV09zf&Oh`M20Ry(bF){}6d-9c3eEC)eM3;_<(a=l`8Kzo(u* z`IT&O!MlCu5(>E{y@?Z?>3{07`;!U%|KHvJySrVfNG@)=>{H9fdfVN2ia)*Cz2*Kt zk6D|Ge>~CZcrSHsljW|v@gNh|_nuh4@7Mn}m*3Ote~N4JD-Gj z7rTZe+3(raqc?v(eZBPg ztDiTIp3dJ}Rap1!&8MqIZ`=0mxnXBhU1mC8ME*{&+Y?Lq|2O*o-gwwy^Yr=z_wq;Y z3z!SPeXgliD)PA0xiMW^DgT`k|Lf;VdiJfa-%z1cV-qJmu{n8#=tR#?diP4ie_nmM z`9tC^uJu!8j6Z%cP$gVCQJLS-Z?1Iw$*(_J zwmcWh^6nqK+adG4-(PUw%{KM!6ZilBeb3vHV)JR=_r2?92%Nc}napu-bMzcFp2d-u zdaaKio^wHBbLp8=zm-T1TSayxQsCLiem`{Pf{usK9;GIjO}Z z@%Hk&)w@p|-%+($_hnhhsU4?fMS?@-R@;5rsL6i(j!fnM<92(>#VZZ=*B*NB`tIUn z_a}u>=Rhf|$NA_cm7h!YoYwnvNlvIBhv#59&%v8#6dn2%OV6BISX=ATr`;pGX}8X@ zp4~0aO6zaxRh6|J`YN;QXN1eUv+dm{d?P^#>%F29`>};dH)mV?b&q|(_kX3C#J}tU z#ed$XAJ%){H2Nof?p1qIe*Vwt4JY2^d^{f;`bkf)^4xCc=TlZ}jcX zhhlF2Cl4Mg744W8T=%8T|I2O`)=w9$(;mG{6s~`_YEpUE3Bx^Y?&tOOoUWgHE1W#b zhtaBk^Kt8z$E#}=mrpG`KK1*(jEzU`Tc*5sdGb*6P5;isD|$uYT_@ZlL0*%ub?K{i zTK>af?%r&ddG${pos41U*kqnuG`HSObj-tCL_kJI*he^;rfYR8wJ-P>;V ziW$}}n|oa|IBsu;qACC7-*-E&ryk=KZo8=S^4QdN%Y}w%uPYdTD;4dUq^i2UZgFeJ zo!LsC0>Q=Mak+`%^6PfD@gF^VvG(u5yZ+a9s!L04Tg=u~`Yrd@vHs^1A39e>yqde^ zgvd&B>-J*Xef5HB{^??I)Bh{Xxt|yPe(o2s=v&|aJYT0(dA!5s=zY!dKEcYgeG8R* zrDuM6EhuQ|y?t@;u~#NXSLe3nmiV*e&k_A(Qg z$ba;Bbj_Pq|7)#Z-9P0i*DYHAz31?Scc(rY*QMVo(N6jEWZv|ddF0_+2Jgd0esW+{RBQ9(dbL_%1c^{NB5p{vSGXUoFyF<>iqZo2$%S&F{4p|LO~U?&7DD-}BWU zN-Ow2x%Ayh>7%{En-ib@{7_l<;?9nXN?zneYR`S%5TfyuTOZ4YdBAI&^uAa&pO z`n1@nhAsa8#oa%D?!75#_j|kDOV6_99cR>2qXl>V;MMtj_`(No_W3K6 zKI!)SPpLV(@BKzW%YRzh(I=i<4ggo5X}7yhl-ksZ&wLULsZT)yDwXz7JE8?=s=Rj> zoayf+I5SsUY4Vf58cLr%K_1DMnwa0-;WG(TwdT4$xjy}Qq)T7@sUn|aN}n!&ozd~f zy#Dic#RvcL|9_dk>_D~ip~iesQ#LU z&pe6xFDvHkzvC3Za`3BF@&8Q^em;Gz-i+3a=-09^YjxUUKQ<_o@{ygNP(gC z^=pZ&Hgc<^AaX&aOW*-*n2^n{(^G*34}vKg)mr?M>U$=QO7=CkNc# zdBSGPS?!j44_7_%J)dlJdRpuq+m{cMzxOW7t|*mcdhtuAdOz3V--|x%`}c6qYVjJ& z-@im>=qHzcyu5n*PcOgrI}cOuSIY9~R8LVdx@|TkhvC5AfRG1!kGxp~tSq30<& z5A##hpT0RKU$t$q|ITwc+a6q+CpCMz$*$i$*KEVZlU=NL{IjThUu;wJ=32&%HdU7A z!ffU1E4Nh4T76`v(%1F;F>xQh{yM&oX?J+&obO`#)i3VUg6x|EvTtfGgF|f>*Pi=3 zeulHHd9gJx^9^Uayx>~4_SnN;cbZ+Bc~&guR^^IY7Or0|Ty@Kr6DXhm_+j#Px5HWN zN}uknKa?SHw`SAtUz1OB*If@!DB7O>ZP&@`u1{=F%PsFXv&}bEnjv8RA}0Bw8``m- zB7enlxzED#)!(>|h-;M|+x$N6&o}ML=hJJyms)Ii69~%6 zA=?-kzG`ZHFg?a%Jkjjurxjb~3H+C}dA9Jx&(GbN-@j`enRDRB`X@*KDE{XanV6S6 z_v9a@XJywS<1Sego4Bo;sI#c|&AOdg>F1Na-`b{^ytug7r1im$d++*R_vY1z=DmK$ zz3(Ge%4NNI`LTa~7;OCPb?;s3{m)i1QQxXuQ?})5-DYU`B_cYb|AYkl`kQ~B_KHlr zxou?*GsCOkkOVuq$8KL`%{zB)JKACMSK0N!jrVOy?eqW6IAzALz|NKRne%K_rRWpO zw{7jPxf3=i&rMQJ?)!2P*C%=$?Tgawx6F8N*gseOPj*X9&azFlEctuCUiu@s0c$R^L0J|7^&%eubkCb&qkn zitxRA&C;;kGqCYw-`gbd%DeS<=SQ8~@l*fg<7DHhZcV>RR7M;ITmEl2Va7erdd>y*tz5{ms%jlc(+A-7Vj;y>E)S?S}(@9#7+vzxH&^ zS!VNRjDH38z25vkAjW=|X>|TlMLGTM`nSgOEf043`GEWgsxDXN$RCs_D}S7SZ}V#l zb=^YgGJ6j5;Ae(+z8qlw+#i*t{qvorLCJh2Q-=PDGh&{$1}#P7`puO-cT*)FLkOL(7=pL%&t z`uv|~{xLtEmA_}>twyVgSI*ZB1lhU{Gaqhze{Q-7Z~i$}E5&`D)3(33B(?u#_x6Bq z&raQ1I8}px{t3TLt`hfT?p}}YUc@w67Svn_zG>HF_~zZQ`v?Ainb_Y_AoI_BOZ{u} z`r>lGs7Gcx^Lr#8yC;8>{P|A$wg2f#4LQ3y2EO@+fAjTRzNXER^!&^Qk9}|UEloRg z;hp>Y4bN&`7$p`PUEq9p*S!9^|NR#WEx$~?|2w$;rrgZxvbJZ%Im$|tzpn)sGQT;F zZP+bc|Nq13cscohFX#XBtdMB>WTR+t&eQu&+u!*Uou9=@*grdzkTh$vOzndMcQ>@h?kM^A5jbe|Se& z>h;D-mAWv!;%EKW{)n|-Z9F~Ea`)U~|9dwqiWKG)$lbIpxO?t7ldaJn#?R*7|Kd7) z@|!FSTd)0mYkI!7IeE2>jnMOS&C0LRx`!qz8C9-FO0pln&zQI6NbZfl3TLVwJ%8%* zXU1%~*$J1u&raZ_D0Ojr9y(hxYpFbDBXO_I1>k~fTRA_SOf9dJXaNsgH*1kzkOg<0l zEtmFp+?fr@WuJdk_dE{Fj;;;p@}NIfa7nH*s{Gkevl~=ys0- z*RABHPGe|T?hDGPZ!5$rjqXjcS(YNW(;1TL#W;UN9bbG&h~dK)u)qBkljiw;sqYS|8`b|M;!gVc(NVMeU%N&)@qsjBAhilgsn}l|(Ty%rgUr z$MTLn2CR=dceL)YOpj|{I}2J{fXjcMY0Eb8GOX|ixe8K#K&l#8i3h2T-ayI)NG+pg z4M}KJ)pon<#J?sJ@8Fwk3|E$evWc1a#QCxNX5CIt7uUZooc4Lg*FHMi5!1Ix9^s;GG83OyPn{+@`qBqYe>5N|H&^2SedMwKo1+h`3qKZh>`}hF?7dNl%G53Y}!Gk@;f_-8ltAxIYysf7;Y)Bk(+B;m$ve_TLg^XSKizuF$JNmq8*T#00*_{7I&MPJ@~ zba1sm=Y$G@$% zkoeE=^@e4yp6#0p2yfTAJXyPD&&8dVy}5{(MJ@N=Dk!!8pSz=C=2=atpIgMIKTj7A zzib7mNxiZ+86rITZF~2g+dEBlk35>OJo)!4rS8)?NFnTRs&xF@=hYh%xp$@_^lTHI z7#~0Hykz;GP|@HsdkbCuom+i6{rU9u$N&3sZ*oLY_}EwQbM4`cbMvO{@OA0q{Qc*r z>%5&e7r?qro06rwPaJkD`n7QPpY%6LF?=$=3il@6`cja!IS^rvnfOHi%#IUv0qaW< zf_4u(Wb(IsXs$Yo2!(H%Zcjeu@s=xoM@muZd%Dl)Az~U|(36>MK@FkD@)P7LWcFYE z@v3syoXyX}H>UqgzP<;kjxrOU7|c*x`t!}2NB56e>%H7pRXA@_VNU$9{i(IDJ9MJ& zUqVFjTDK>sW`5dnbp5>dM@j^L?nBC(jxK$@-QDRg!`gRjp1q^v_O8okR$r;F`)Rdy z+nJbm6D6*l+)+_jX}5m!?9RiAH=9;IpHVDoTR8W~(bF&AC-e6|3ohSsa4#&bqiN3Px2x9i5)HJazr3Tv#w_xM(F-nV{k zb;Wr8#Op|nm7N_n#<|CzJv35#u(RH8%gvUZ#W#=0c1$#xAGT%rlIVM3hL&r#6|Y;l zw|d>-ba}Vs8_s1TBINcfy-#K7Jk#5ii|%}xtMtjJ*kJxPtBb2orz>vg`)}>5*Sq`H z@1k$-cCNFmHqqOW<5#>M;e+2@CpOw1J*C=q?A(+*bL+`Rt!{Q63VeQE|6I9W?boDN zohPd!a*HRPEta*Y{#2mxJOfeEoKyNF(c~T$So+U$PilPG%$>!n4{u<${p!!Zye!Qk zMXC2$cgovOG19iDB_I2qQ9kNtY>wpUFqeIESHG#YUS4hX;{`%oTS-1~&&8zk{I5PP zM8ul5l6={pxq0PxTheTiQgCa>nR&>HHs>NFsZs*zx<2`$KFj!=e!O_`k1GgQ-hQO_ z$@jm=3C@2Ert)hMp$X|qLmQSi^prlW7XP^3#eH7<(Rm-&ySeMFJM^Tpd-`d`H%Ad^ zRo3Onn}=6FSCoIc`ngnUTlbyK2=i|DpExb{$${gzv;VirHA+S25w+D@Wu^Y_;cIG2 zf9kM3TYW)nVl|?|%=s;7X?N$}+k8b;{=cZY6qMG#-@2nh^1Z9ylDkj8a8LcaBd#A| zYObNuK6hdyAMP5oJ~N^^QNE?f>tudz1YCv;8l3`=9gwe~uS* zUTP?RKJok4r#~M~v2lH}X@1O1c-!+Ei=gF?S6BZR$9nb6{P9TZb?5EF=hr`LU#eu( zZ-ht_nMy?&F_R~mGZk{2P3Dlh^dWT@d-AQQdCH%51^P*c%UKHSxQSF^`HM~b|K|L^ z!^`cy8vp-j|IgKKmqgQ>pWWfB&sD}-rrh7WxqJFX<9j`ZYIo0e)Fec`+4JsSS{YI; zaM|Ta_NT%Rw_=|dKFd>o{P*%S-6xHP4xcqqT>kT{`TyzJp9;Sm*n1-S=Jx>Q?0l7c zJ6%K$0fl0B{m1?P|L*_K|L@oO|Jz>NFW70VBw_UKUGDM9-wumk?D_Wn_{MZpE!Y45 zI=lGO$Bb{)6F18~t-Vh3wk6uP}h~C618~sG;`3&S>07@B0-x77yHqeOJ zXaqE#>>JGitTY+w8%DaIhwdY6TP$_S|81Cqxo$#zrlxOMq7APY~iVRPQtn$ z65HZ(f}1FDXzKsIzW(9!{a?!M?0$TX|G$0X^YiwIb1OD12NZuhJG^x^o9x5=B% zHCit3_3BrtusxCbW}eBHl=$_@cVnJE@qd0`mZ_inB=ayAwaT8t{}tN#vcehfbop&3 zm3&p0zOnk!?bu^0uUWonG|isVr;@*>!{-ynW3f-+^^0HhoNH9`H#_}T!gVPV$YQumUEM4ZWDdC{G$Ay zL)WKk+rOKTQ?lcqKF@b!o$K}`>*6M#&HO#j6`iS>$1ZlY`abD*BbcPee>d5 zv-$HXz4%!_wI$-F)&Fk&klOY3>gvF{&gZW+=e^vzTzlVEk4@8*j7}=^c&gs5iLpqZ zyHn8l%%r{3ENB0|;H)AQ-e-O;ZDqDkX8n(=nh$fAtj;XS5O+ST__D+>?d;#DF9cp5 zyO_*>(k(fit62K_d~-gZ+qFuYudmziTPJPvSO5LzYR(>RIvrl{%V@2*zi`<4+xs>@ zagMCEiH#`RQ!!}`IBb%4NDBKu^xJfEhGcu)hBIeR2h41L#Fe?+KuS5#EH}Bt#wJ?P zH(Kwpd0na3_Qi=Mo_~H;^2=>9+*SIwT`KbT1!2#^;tvnFcAr+?e4XkJD#m& z4S##JNqYV5#`Im)yB4OOulJkqL{oI4r`+SM-5=>->rLZ zd&=UYlFv)OnRcDC^;g+*B{{8EeOFrR+;qd;?l z{;$T!b6$|(%qJI*$r%4#U4E;4j~&7J$Nw*Gwo>s;AQhPx{NvP-@Gc2C`CPr$;@&-eej$h`Z+!o5FrCe3cY zlQg$>{i}D=)80$A%Wv&zU-JK0gj@Oimj^HVUf)@0Z|*rSL~!Pl%VupGk`B*M59w09 zxkSn6)GWF$+pE6o|W|JaC(%rL_O|v70w!0qd$ZQK!$~EG5R`mC;jrTsQ6MR1QvEj{K{*!f-_zk~z=hqihlrB54 zJLUcbuOn|CJ-v8ycK*4yCZ_kEOqj84+GDHyeUiJJkH2zx_|c~J`;utyvu7^19lQNf z%S?=sA;j5*E$>LD@~5z5HThYO3a-iAO71wD2G%eJ1gQQo%s-O74Py)Dxo&Rv=oc6plfX;%gYQNf9g(uJQoY)q0b#C}&fHqYim z-qz{5Pa3y;|FcB1eByE+NjV-*9rJr+H<5wbphtyIv`Y}!2!yVstZ`c4F|h}rZ~#N_z_$@VhijEnO&y?JNl zzV-95#-(M_zpWS zXC(ra3%$DLCF%$*U-$WiNqOI$*PPe4Z9eDhoqP8FJE*gdtW+|3737jKQ;4BJ8I*21 zPUI>mF*Cet>fpJzmnUW%OLhNp1~M?@^>x&!C>goAJTU{AUhe2(CnPATj7abDogF4Vw(K5}oWR-OG?{__$h_Vv66 z9zWiv^y#_X7h7)mUoo$8IRqt@`wf(?d*1Hd+;`&k#T0c$UE|GLiWP1?ab8&aJ7v3b zS!UtGpE{>YQ;oGI+V5tTvCMt4;$(S6miew3uW#<0boOh%&CAa9ybihV43+jj7v67g zQvYB0eWrm*HzZVMbjUD2*J6BX{QO&E%4W;|DlJ!!X?M@8DD5qFul%U~{6u=mV)eQ^ zPj1_9y<8{CSKof-O2tA38ykLsiQ#Y41ST2=87m#Xts<1aXZEj8_cj{K%&-l9grtkXa)yBMB z|Bgw)lV3ky6frUIpML-E-TQwoZWS}w=E>g`eBEJV%re<> zHP73fGx?8fm@@0$)Iy;SI~P9dFlEzl!hUUb`?*Ws66Qq3*o+KP4{L zc>de>q&qW1*HE^z^~LJOtIG=N?~SREJRASzg023PjaFGRt1|xX*=uDZyIE%MmT&PV z3m*Kam^oSB+T83q|Kg7uO2ioYoAqlRawpsI^)Wu=nEPDi4cT4Kd;aX? z->YtLhNpR>A;0RO$EizKmU_9Q^n`SuFg)S6d+*_bnho!KcpS?U`1XAc3a&2RdUodA zq73m$S3%?SXA+ZT_w}6j%&@b_ULPDFAtCo>=AOIr_-=88EYzNDZ~okQ+PTcFJ5Ch! zE#05do|g0`Qr6BO{*vJ8r|tTipL70vbXu5a@8#xFH$LXhuMZm!zs@hu>y;~2{n_|= z&d%cPfn{|Co%a~z1Qlh(e_DKC*nOgyNzZ!vnb}MQU5A}t{JnEy-mXV~em?k8kT`Xo ze{)CA#P+@u-u@ZA+BvN8f1oWK(EF~^%KP_+t+H|TyNk2G%+QXMwU9R` ze`nTpPElE3o$UEVi9G%)RXDr_5+={g8U5AfhsAY8r>3iLbZ! z@g-aA%4S)!ulm}OeS6_V*DW71lwQlu)UV5VZoKU3w8P6c?o|J`;9EDRd zE$!(y3yZT_|GRMSqms|TyWib1yLNxiq@OGPd{|Tacj}Rohx<9*Hid7FC@cQE({N6j z9Q%ieoyR+DjGtdAP3t|mV}?PQAOGiXo9=C?+#_T6?XBA5uP^gDz=d};^U~dZ zNo)O`H1D~iO9}%+!`>Ewng1+G``>h*$lT!$7TT?(RNe-v>k7hMo}2?!NDS|~I_^k< zYP`H#GsU0##@uw=hv(HROW|J{`cw_&~N~2XS zPqNn)^6mJzQg@+w^|aTl&wg&S+_GujY-Lc3^v+Z%LCgM$hC=5a7I4-DbKQAkBl~@4 zw~W5Mp65Y>T7o(@V13w>@|)_?EKl R2Xz4$JYD@<);T3K0RVkuMjHSC literal 0 HcmV?d00001 diff --git a/docs/_static/ide-vs-platformio-newproject-8.png b/docs/_static/ide-vs-platformio-newproject-8.png new file mode 100644 index 0000000000000000000000000000000000000000..708269ba468acf3f6c2350d14deb00a410c7a7eb GIT binary patch literal 83694 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¬NHr%xagt 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 Y9qabrdhtwuB`AJ9UHx3vIVCg!0OP<08~^|S literal 0 HcmV?d00001 diff --git a/docs/ide.rst b/docs/ide.rst index 61e39986..ba74ee60 100644 --- a/docs/ide.rst +++ b/docs/ide.rst @@ -9,4 +9,6 @@ IDE Integration ide/arduino ide/eclipse ide/energia - ide/vim \ No newline at end of file + ide/sublimetext + ide/vim + ide/visualstudio diff --git a/docs/ide/sublimetext.rst b/docs/ide/sublimetext.rst new file mode 100644 index 00000000..7e25f61c --- /dev/null +++ b/docs/ide/sublimetext.rst @@ -0,0 +1,129 @@ +.. _ide_sublimetext: + +Sublime Text +============ + +The `Sublime Text `_ is a cross-platform text and source code editor, with a Python application programming interface (API). Sublime Text is proprietary software. Its functionality is extendable with plugins. Most of the extending packages have free-software licenses and are community-built and maintained. Sublime Text lacks graphical setting dialogues and is entirely configured by editing text files. + +This software can be used with: + +* all availalbe :ref:`platforms` +* all availalbe :ref:`frameworks` + +Refer to the `Sublime Text Documentation `_ +page for more detailed information. + +.. contents:: + +Integration +----------- + +Initial configuration +^^^^^^^^^^^^^^^^^^^^^ + +First of all, we need to create "New Build System" with name "PlatformIO" +from ``Menu: Tools → Build System → New Build System`` and fill it like +described below: + +.. code-block:: bash + + { + "cmd": ["platformio", "run"], + "working_dir": "${project_path:${folder}}", + "variants": + [ + { + "name": "Clean", + "cmd": ["platformio", "run", "-t", "clean"] + }, + { + "name": "Upload", + "cmd": ["platformio", "run", "-t", "upload"] + } + ] + } + +Secondly, we need to select "PlatformIO" Build System from a list: + +.. image:: ../_static/ide-sublime-text-platformio-newproject-2.png + +After that, we can use the necessary commands from +``Menu: Tools → Command Palette`` or with ``Ctrl+Shift+P`` (Windows/Linux) +``Cmd+Shift+P`` (Mac) shortcut. + +.. image:: ../_static/ide-sublime-text-platformio-newproject-3.png + +Command Hotkeys +~~~~~~~~~~~~~~~ + +Sublime Text allows to bind own hotkey per command. Let's setup them +for PlatformIO commands using shortcut ``Menu: Preferences → Key-Bindings - User``: + +.. image:: ../_static/ide-sublime-text-platformio-newproject-4.png + +We are going to use these shortcuts: + +* ``F11`` for clean project +* ``F12`` for upload firmware to target device + +In this case, the final code will look like: + +.. code-block:: none + + [ + { "keys": ["f11"], "command": "build", "args": {"variant": "Clean"} }, + { "keys": ["f12"], "command": "build", "args": {"variant": "Upload"} } + ] + +First program in Sublime Text +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Simple "Blink" project will consist from two files: + +1. Main "C" source file named ``main.c`` must be located in the ``src`` directory. +Let's create new file named ``main.c`` using ``Menu: File → New File`` or shortcut ``Ctrl+N`` (Windows/Linux) ``Cmd+N`` (Mac) with the next contents: + +.. code-block:: c + + #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 + } + +2. Project Configuration File named ``platformio.ini`` must be located in the project root directory. +Copy the source code which is described below to it. + +.. code-block:: none + + # + # Project Configuration File + # + # A detailed documentation with the EXAMPLES is located here: + # http://docs.platformio.org/en/latest/projectconf.html + # + + # A sign `#` at the beginning of the line indicates a comment + # Comment lines are ignored. + + [env:arduino_uno] + platform = atmelavr + framework = arduino + board = uno + +Conclusion +---------- + +Taking everything into account, we can open project directory in Sublime Text using ``Menu: File → Open Folder`` and build it with shortcut ``Ctrl+B`` (Windows/Linux) or ``Cmd+B`` (Mac), clean project with shortcut ``F11`` and upload firmware to target with shortcut ``F12``. + +.. image:: ../_static/ide-sublime-text-platformio-newproject-5.png diff --git a/docs/ide/visualstudio.rst b/docs/ide/visualstudio.rst new file mode 100644 index 00000000..385f91da --- /dev/null +++ b/docs/ide/visualstudio.rst @@ -0,0 +1,108 @@ +.. _ide_visualstudio: + +Visual Studio +============= + +The `Microsoft Visual Studio `_ is an integrated development environment (IDE) from Microsoft. Visual Studio includes a code editor supporting IntelliSense (the code completion component) as well as code refactoring. + +This software can be used with: + +* all availalbe :ref:`platforms` +* all availalbe :ref:`frameworks` + +Refer to the `Visual Studio Documentation `_ +page for more detailed information. + +.. contents:: + +Integration +----------- + +Setup New Project +^^^^^^^^^^^^^^^^^ + +First of all, let's create new project from Visual Studio Start Page: ``Start → New Project`` or using ``Menu: File → New → Project``, then select project with ``Makefile`` type (``Visual C++ → General → Makefile Project``), fill ``Project name``, ``Solution name``, ``Location`` fields and press OK button. + +.. image:: ../_static/ide-vs-platformio-newproject.png + +Secondly, we need to configure project with PlatformIO source code builder: + +.. image:: ../_static/ide-vs-platformio-newproject-2.png + +If we want to use native AVR programming, we have to specify additional preprocessor symbol ("Preprocessor definitions" field) about your MCU. For example, an Arduino Uno is based on the ATmega328 MCU. In this case We will add new definition ``__AVR_ATmega328__``. + +.. image:: ../_static/ide-vs-platformio-newproject-2-1.png + +Release Configuration is the same as Debug, so on the next step we check "Same as Debug Configuration" and click "Finish" button. + +.. image:: ../_static/ide-vs-platformio-newproject-3.png + +Thirdly, we need to add directories with header files using project properties (right click on the project name or ``Alt-Enter`` shortcut) and add two directories to ``Configuration Properties → NMake → Include Search Path``: + +.. code-block:: none + + $(HOMEDRIVE)$(HOMEPATH)\.platformio\packages\toolchain-atmelavr\avr\include + $(HOMEDRIVE)$(HOMEPATH)\.platformio\packages\framework-arduinoavr\cores\arduino + +.. image:: ../_static/ide-vs-platformio-newproject-5.png + +First program in Visual Studio +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Simple "Blink" project will consist from two files: + +1. Main "C" source file named ``main.c`` must be located in the ``src`` directory. +Let's create new file named ``main.c`` using ``Menu: File → New File`` or shortcut ``Ctrl+N``: + +.. image:: ../_static/ide-vs-platformio-newproject-6.png + +Copy the source code which is described below to file ``main.c``. + +.. code-block:: c + + #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 + } + +2. Project Configuration File named ``platformio.ini`` must be located in the project root directory. + +.. image:: ../_static/ide-vs-platformio-newproject-7.png + +Copy the source code which is described below to it. + +.. code-block:: none + + # + # Project Configuration File + # + # A detailed documentation with the EXAMPLES is located here: + # http://docs.platformio.org/en/latest/projectconf.html + # + + # A sign `#` at the beginning of the line indicates a comment + # Comment lines are ignored. + + [env:arduino_uno] + platform = atmelavr + framework = arduino + board = uno + + +Conclusion +---------- + +Taking everything into account, we can build project with shortcut ``Ctrl+Shift+B`` or using ``Menu: Build → Build Solution``: + +.. image:: ../_static/ide-vs-platformio-newproject-8.png From f800b351f36753e6f448bdfcf36b9b76e6d5bbcd Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 25 Mar 2015 22:00:02 +0200 Subject: [PATCH 24/28] Fix wrong insertion of function prototypes converting *.ino/pde // Resolve #127 #140 --- HISTORY.rst | 6 ++ platformio/__init__.py | 2 +- platformio/builder/tools/platformio.py | 93 +++++++++++++++++++------- 3 files changed, 77 insertions(+), 24 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 5e236041..c515d89d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -12,8 +12,14 @@ Release History platform (`issue #127 `_, `issue #131 `_) +* Added integration instructions for `Visual Studio `_ + and `Sublime Text `_ IDEs * Improved handling of multi-file ``*.ino/pde`` sketches (`issue #130 `_) +* Fixed wrong insertion of function prototypes converting ``*.ino/pde`` + (`issue #137 `_, + `issue #140 `_) + 1.2.0 (2015-03-20) diff --git a/platformio/__init__.py b/platformio/__init__.py index aa4e62f4..a751cbc0 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -1,7 +1,7 @@ # Copyright (C) Ivan Kravets # See LICENSE for details. -VERSION = (1, 3, "0.dev0") +VERSION = (1, 3, "0.dev1") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 6f06bdef..9913c91a 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -273,7 +273,7 @@ def BuildDependentLibraries(env, src_dir): # pylint: disable=R0914 return libs -def ConvertInoToCpp(env): +class InoToCPPConverter(object): PROTOTYPE_RE = re.compile( r"""^( @@ -287,40 +287,87 @@ def ConvertInoToCpp(env): DETECTMAIN_RE = re.compile(r"void\s+(setup|loop)\s*\(", re.M | re.I) + STRIPCOMMENTS_RE = re.compile(r"(/\*.*?\*/|//[^\r\n]*$)", re.M | re.S) + + def __init__(self, nodes): + self.nodes = nodes + + def is_main_node(self, contents): + return self.DETECTMAIN_RE.search(contents) + + @staticmethod + def _replace_comments_callback(match): + if "\n" in match.group(1): + return "\n" * match.group(1).count("\n") + else: + return " " + + def append_prototypes(self, fname, contents, prototypes): + contents = self.STRIPCOMMENTS_RE.sub(self._replace_comments_callback, + contents) + result = [] + is_appended = False + linenum = 0 + for line in contents.splitlines(): + linenum += 1 + line = line.strip() + + if not is_appended and line and not line.startswith("#"): + is_appended = True + result.append("%s;" % ";\n".join(prototypes)) + result.append('#line %d "%s"' % (linenum, fname)) + + result.append(line) + + return result + + def convert(self): + prototypes = [] + data = [] + for node in self.nodes: + ino_contents = node.get_text_contents() + prototypes += self.PROTOTYPE_RE.findall(ino_contents) + + item = (basename(node.get_path()), ino_contents) + if self.is_main_node(ino_contents): + data = [item] + data + else: + data.append(item) + + if not data: + return None + + result = ["#include "] + is_first = True + + for name, contents in data: + if is_first and prototypes: + result += self.append_prototypes(name, contents, prototypes) + else: + result.append('#line 1 "%s"' % name) + result.append(contents) + is_first = False + + return "\n".join(result) + + +def ConvertInoToCpp(env): + def delete_tmpcpp_file(file_): remove(file_) - def is_main_ino(contents): - return DETECTMAIN_RE.search(contents) - ino_nodes = (env.Glob(join("$PROJECTSRC_DIR", "*.ino")) + env.Glob(join("$PROJECTSRC_DIR", "*.pde"))) - prototypes = [] - data = [] - for node in ino_nodes: - ino_contents = node.get_text_contents() - prototypes += PROTOTYPE_RE.findall(ino_contents) - item = (basename(node.get_path()), ino_contents) - if is_main_ino(ino_contents): - data = [item] + data - else: - data.append(item) + c = InoToCPPConverter(ino_nodes) + data = c.convert() if not data: return - # create new temporary C++ valid file tmpcpp_file = join(env.subst("$PROJECTSRC_DIR"), "piomain.cpp") with open(tmpcpp_file, "w") as f: - f.write("#include \n") - - if prototypes: - f.write("%s;" % ";\n".join(prototypes)) - - for name, contents in data: - f.write('\n#line 1 "%s"\n' % name) - f.write(contents) + f.write(data) atexit.register(delete_tmpcpp_file, tmpcpp_file) From 9b0a25a7153533ab6fbd12f778e274ebef7a2e27 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 27 Mar 2015 13:52:50 +0200 Subject: [PATCH 25/28] Explain uploading process for Digispark board with micronucleus bootloader --- platformio/builder/scripts/atmelavr.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index eacb925b..f221e5c4 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -25,6 +25,9 @@ def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621 if env.subst("$UPLOAD_SPEED"): env.Append(UPLOADERFLAGS=["-b", "$UPLOAD_SPEED"]) + if "micronucleus" in env['UPLOADER']: + print "Please unplug/plug device ..." + if not upload_options.get("require_upload_port", False): return From 646e00faa11ec9eafe827fc750044aac5f2d7143 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Fri, 27 Mar 2015 14:24:59 +0200 Subject: [PATCH 26/28] Automatically generate "Packages" block for "Creating platform" page // Resolve #139 --- docs/platforms/creating_platform.rst | 107 ++++++++++++++------------- scripts/docspregen.py | 39 ++++++++++ 2 files changed, 94 insertions(+), 52 deletions(-) diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index e99ff3c1..42555ffd 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -40,67 +40,70 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ - * - ``toolchain-atmelavr`` - - toolchain - - `avr-gcc `_, - `GDB `_, - `AVaRICE `_, - `SimulAVR `_ - * - ``toolchain-timsp430`` - - toolchain - - `msp-gcc `_, - `GDB `_ - * - ``tool-avrdude`` - - uploader - - `AVRDUDE `_ - * - ``tool-bossac`` - - uploader - - `BOSSA CLI `_ - * - ``tool-micronucleus`` - - uploader - - `Micronucleus `_ - * - ``tool-mspdebug`` - - uploader - - `MSPDebug `_ - * - ``tool-lm4flash`` - - uploader - - `Flash Programmer `_ - * - ``tool-stlink`` - - uploader - - `STLink `_ - * - ``tool-teensy`` - - uploader - - `Teensy Loader `_ + * - ``framework-arduinoavr`` - - - - `Arduino Wiring-based Framework (AVR Core, 1.6 branch) `_ + - `Arduino Wiring-based Framework (AVR Core, 1.6) `_ + + * - ``framework-arduinomsp430`` + - `Arduino Wiring-based Framework (MSP430 Core) `_ + * - ``framework-arduinosam`` - - - - `Arduino Wiring-based Framework (SAM Core, 1.6 branch) `_ + - `Arduino Wiring-based Framework (SAM Core, 1.6) `_ + * - ``framework-arduinoteensy`` - - - `Arduino Wiring-based Framework `_ - * - ``framework-energiamsp430`` - - - - `Energia Wiring-based Framework (MSP430 Core) `_ - * - ``framework-energiativa`` - - - - `Energia Wiring-based Framework (LM4F Core) `_ + * - ``framework-cmsis`` - - - `Vendor-independent hardware abstraction layer for the Cortex-M processor series `_ + + * - ``framework-energiamsp430`` + - `Energia Wiring-based Framework (MSP430 Core) `_ + + * - ``framework-energiativa`` + - `Energia Wiring-based Framework (LM4F Core) `_ + + * - ``framework-libopencm3`` + - `libOpenCM3 Framework `_ + + * - ``framework-mbed`` + - `mbed Framework `_ + * - ``framework-spl`` - - - `Standard Peripheral Library for STM32 MCUs `_ - * - ``framework-opencm3`` - - - - `libOpenCM3 Framework `_ + + * - ``ldscripts`` + - `Linker Scripts `_ + + * - ``tool-avrdude`` + - `AVRDUDE `_ + + * - ``tool-bossac`` + - `BOSSA CLI `_ + + * - ``tool-lm4flash`` + - `Flash Programmer `_ + + * - ``tool-micronucleus`` + - `Micronucleus `_ + + * - ``tool-mspdebug`` + - `MSPDebug `_ + + * - ``tool-stlink`` + - `ST-Link `_ + + * - ``tool-teensy`` + - `Teensy Loader `_ + + * - ``toolchain-atmelavr`` + - `avr-gcc `_, `GDB `_, `AVaRICE `_, `SimulAVR `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + + * - ``toolchain-timsp430`` + - `msp-gcc `_, `GDB `_ .. _platform_creating_manifest_file: diff --git a/scripts/docspregen.py b/scripts/docspregen.py index 86bb60d6..1c07ef65 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -244,7 +244,46 @@ def update_framework_docs(): f.write(generate_framework(name, data)) +def update_create_platform_doc(): + allpackages = get_packages() + lines = [] + lines.append(""".. _platform_creating_packages: + +Packages +-------- + +*PlatformIO* has pre-built packages for the most popular operation systems: +*Mac OS*, *Linux (+ARM)* and *Windows*. + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents""") + for type_, data in sorted(allpackages.iteritems()): + contitems = [ + "`%s <%s>`_" % (name, url) + for name, url in allpackages[type_] + ] + lines.append(""" + * - ``{type_}`` + - {contents}""".format( + type_=type_, + contents=", ".join(contitems))) + + with open(join(util.get_source_dir(), "..", "docs", "platforms", + "creating_platform.rst"), "r+") as fp: + content = fp.read() + fp.seek(0, 0) + fp.write( + content[:content.index(".. _platform_creating_packages:")] + + "\n".join(lines) + "\n\n" + + content[content.index(".. _platform_creating_manifest_file:"):] + ) + + def main(): + update_create_platform_doc() update_platform_docs() update_framework_docs() From 0053919f7fb6f3ef5e947fbd1df95769a9d66b94 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Fri, 27 Mar 2015 14:25:24 +0200 Subject: [PATCH 27/28] Assert error when board's platform mismatch --- platformio/builder/main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 797b0cd4..a68aceb9 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -14,8 +14,8 @@ except ImportError: from os.path import join from time import time -from SCons.Script import (DefaultEnvironment, SConscript, SConscriptChdir, - Variables) +from SCons.Script import (DefaultEnvironment, Exit, SConscript, + SConscriptChdir, Variables) from platformio.exception import UnknownBoard @@ -101,6 +101,13 @@ if "BOARD" in env: ) ) + if env['PLATFORM'] != env.get("BOARD_OPTIONS", {}).get("platform"): + Exit("Error: '%s' platform doesn't support this board. " + "Use '%s' platform instead." % ( + env['PLATFORM'], + env.get("BOARD_OPTIONS", {}).get("platform"))) + + if "IGNORE_LIBS" in env: env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")] From 5a0d57f50718ebbe02f9d67d2e435fe5f365b56e Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 27 Mar 2015 17:04:09 +0200 Subject: [PATCH 28/28] Version bump to 1.3.0 (issues #127 #128 #130 #131 #133 #136 #137 #138 #139 #140) --- HISTORY.rst | 6 +++--- platformio/__init__.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index c515d89d..aa9550ef 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,11 +1,11 @@ Release History =============== -1.3.0 (2015-??-??) +1.3.0 (2015-03-27) ------------------ -* Moved PlatformIO source code and repositories from Ivan Kravets's account - to `PlatformIO Organisation `_ +* Moved PlatformIO source code and repositories from `Ivan Kravets `_ + account to `PlatformIO Organisation `_ (`issue #138 `_) * Added support for new Arduino based boards by *SparkFun, RepRap, Sanguino* to `atmelavr `__ diff --git a/platformio/__init__.py b/platformio/__init__.py index a751cbc0..d8d3b7ba 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -1,7 +1,7 @@ # Copyright (C) Ivan Kravets # See LICENSE for details. -VERSION = (1, 3, "0.dev1") +VERSION = (1, 3, 0) __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio"