diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index b5784935..024431da 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -4,6 +4,8 @@ Framework ``arduino`` ===================== Arduino Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. +For more detailed information please visit `vendor site `_. + .. contents:: Boards diff --git a/docs/frameworks/cmsis.rst b/docs/frameworks/cmsis.rst index 2af8b34c..1fda61fc 100644 --- a/docs/frameworks/cmsis.rst +++ b/docs/frameworks/cmsis.rst @@ -4,6 +4,8 @@ Framework ``cmsis`` =================== The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. +For more detailed information please visit `vendor site `_. + .. contents:: Boards diff --git a/docs/frameworks/energia.rst b/docs/frameworks/energia.rst index a864e7a9..0284ab8c 100644 --- a/docs/frameworks/energia.rst +++ b/docs/frameworks/energia.rst @@ -4,6 +4,8 @@ Framework ``energia`` ===================== Energia framework enables pretty much anyone to start easily creating microcontroller-based projects and applications. Its easy-to-use libraries and functions provide developers of all experience levels to start blinking LEDs, buzzing buzzers and sensing sensors more quickly than ever before. +For more detailed information please visit `vendor site `_. + .. contents:: Boards diff --git a/docs/frameworks/mbed.rst b/docs/frameworks/mbed.rst index 1bf010c6..c70b5ee5 100644 --- a/docs/frameworks/mbed.rst +++ b/docs/frameworks/mbed.rst @@ -4,6 +4,8 @@ Framework ``mbed`` ================== The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. +For more detailed information please visit `vendor site `_. + .. contents:: Boards diff --git a/docs/frameworks/opencm3.rst b/docs/frameworks/opencm3.rst index e8b54fb1..a38e646c 100644 --- a/docs/frameworks/opencm3.rst +++ b/docs/frameworks/opencm3.rst @@ -2,7 +2,9 @@ Framework ``opencm3`` ===================== -The libopencm3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. +The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. + +For more detailed information please visit `vendor site `_. .. contents:: diff --git a/docs/frameworks/spl.rst b/docs/frameworks/spl.rst index 47946970..1bcf0576 100644 --- a/docs/frameworks/spl.rst +++ b/docs/frameworks/spl.rst @@ -4,6 +4,8 @@ Framework ``spl`` ================= The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. +For more detailed information please visit `vendor site `_. + .. contents:: Boards diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index ba3871bc..f9e5e741 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -2,6 +2,8 @@ # See LICENSE for details. """ +Arduino + Arduino Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. diff --git a/platformio/builder/scripts/frameworks/cmsis.py b/platformio/builder/scripts/frameworks/cmsis.py index 1b9c0236..6410c10f 100644 --- a/platformio/builder/scripts/frameworks/cmsis.py +++ b/platformio/builder/scripts/frameworks/cmsis.py @@ -2,6 +2,8 @@ # See LICENSE for details. """ +CMSIS + The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and diff --git a/platformio/builder/scripts/frameworks/energia.py b/platformio/builder/scripts/frameworks/energia.py index d240aa6a..67b4cc10 100644 --- a/platformio/builder/scripts/frameworks/energia.py +++ b/platformio/builder/scripts/frameworks/energia.py @@ -2,6 +2,8 @@ # See LICENSE for details. """ +Energia + Energia framework enables pretty much anyone to start easily creating microcontroller-based projects and applications. Its easy-to-use libraries and functions provide developers of all experience levels to start diff --git a/platformio/builder/scripts/frameworks/libopencm3.py b/platformio/builder/scripts/frameworks/libopencm3.py index b28be5cf..a0336e77 100644 --- a/platformio/builder/scripts/frameworks/libopencm3.py +++ b/platformio/builder/scripts/frameworks/libopencm3.py @@ -2,7 +2,9 @@ # See LICENSE for details. """ -The libopencm3 framework aims to create a free/libre/open-source +libOpenCM3 + +The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. diff --git a/platformio/builder/scripts/frameworks/mbed.py b/platformio/builder/scripts/frameworks/mbed.py index fec239f4..a53eeb0e 100644 --- a/platformio/builder/scripts/frameworks/mbed.py +++ b/platformio/builder/scripts/frameworks/mbed.py @@ -2,6 +2,8 @@ # See LICENSE for details. """ +mbed + The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, diff --git a/platformio/builder/scripts/frameworks/spl.py b/platformio/builder/scripts/frameworks/spl.py index 21394b82..fb7abbbb 100644 --- a/platformio/builder/scripts/frameworks/spl.py +++ b/platformio/builder/scripts/frameworks/spl.py @@ -2,6 +2,8 @@ # See LICENSE for details. """ +SPL + The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal diff --git a/platformio/commands/search.py b/platformio/commands/search.py index e46e0bb0..d3b7d69a 100644 --- a/platformio/commands/search.py +++ b/platformio/commands/search.py @@ -18,18 +18,18 @@ def cli(query, json_output): platforms.sort() for platform in platforms: p = PlatformFactory.newPlatform(platform) - name = p.get_name() + type_ = p.get_type() description = p.get_description() if query == "all": query = "" - search_data = "%s %s %s" % (name, description, p.get_packages()) + search_data = "%s %s %s" % (type_, description, p.get_packages()) if query and query.lower() not in search_data.lower(): continue data.append({ - "name": name, + "type": type_, "description": description, "packages": p.get_packages() }) @@ -38,9 +38,9 @@ def cli(query, json_output): click.echo(json.dumps(data)) else: for item in data: - click.secho(item['name'], fg="cyan", nl=False) + click.secho(item['type'], fg="cyan", nl=False) click.echo(" (available packages: %s)" % ", ".join( p.get_packages().keys())) - click.secho("-" * len(item['name']), fg="cyan") + click.secho("-" * len(item['type']), fg="cyan") click.echo(item['description']) click.echo() diff --git a/platformio/commands/show.py b/platformio/commands/show.py index ae9106f2..f0913ff9 100644 --- a/platformio/commands/show.py +++ b/platformio/commands/show.py @@ -30,7 +30,7 @@ def cli(ctx, platform): p = PlatformFactory.newPlatform(platform) click.echo("{name:<20} - {description} [ {url} ]".format( - name=click.style(p.get_name(), fg="cyan"), + name=click.style(p.get_type(), fg="cyan"), description=p.get_description(), url=p.get_vendor_url())) installed_packages = PackageManager.get_installed() diff --git a/platformio/platforms/atmelavr.py b/platformio/platforms/atmelavr.py index 6ca3e0f4..9c7bc243 100644 --- a/platformio/platforms/atmelavr.py +++ b/platformio/platforms/atmelavr.py @@ -37,6 +37,9 @@ class AtmelavrPlatform(BasePlatform): } } + def get_name(self): + return "Atmel AVR" + def on_run_err(self, line): # pylint: disable=R0201 # fix STDERR "flash written" for avrdude if "avrdude" in line: diff --git a/platformio/platforms/atmelsam.py b/platformio/platforms/atmelsam.py index aacb03a1..e11d98a4 100644 --- a/platformio/platforms/atmelsam.py +++ b/platformio/platforms/atmelsam.py @@ -34,3 +34,6 @@ class AtmelsamPlatform(BasePlatform): "default": True } } + + def get_name(self): + return "Atmel SAM" diff --git a/platformio/platforms/base.py b/platformio/platforms/base.py index b09301fb..02e0ebb6 100644 --- a/platformio/platforms/base.py +++ b/platformio/platforms/base.py @@ -100,17 +100,17 @@ def get_packages(): class PlatformFactory(object): @staticmethod - def get_clsname(name): - return "%sPlatform" % name.title() + def get_clsname(type_): + return "%sPlatform" % type_.title() @staticmethod - def load_module(name, path): + def load_module(type_, path): module = None try: module = load_source( - "platformio.platforms.%s" % name, path) + "platformio.platforms.%s" % type_, path) except ImportError: - raise exception.UnknownPlatform(name) + raise exception.UnknownPlatform(type_) return module @classmethod @@ -123,15 +123,15 @@ class PlatformFactory(object): for p in listdir(pdir): if p in ("__init__.py", "base.py") or not p.endswith(".py"): continue - name = p[:-3] + type_ = p[:-3] path = join(pdir, p) try: isplatform = hasattr( - cls.load_module(name, path), - cls.get_clsname(name) + cls.load_module(type_, path), + cls.get_clsname(type_) ) if isplatform: - platforms[name] = path + platforms[type_] = path except exception.UnknownPlatform: pass @@ -139,20 +139,20 @@ class PlatformFactory(object): return platforms installed_platforms = {} - for name in get_state_item("installed_platforms", []): - if name in platforms: - installed_platforms[name] = platforms[name] + for type_ in get_state_item("installed_platforms", []): + if type_ in platforms: + installed_platforms[type_] = platforms[type_] return installed_platforms @classmethod - def newPlatform(cls, name): + def newPlatform(cls, type_): platforms = cls.get_platforms() - if name not in platforms: - raise exception.UnknownPlatform(name) + if type_ not in platforms: + raise exception.UnknownPlatform(type_) _instance = getattr( - cls.load_module(name, platforms[name]), - cls.get_clsname(name) + cls.load_module(type_, platforms[type_]), + cls.get_clsname(type_) )() assert isinstance(_instance, BasePlatform) return _instance @@ -166,12 +166,15 @@ class BasePlatform(object): def __init__(self): self._found_error = False - def get_name(self): + def get_type(self): return self.__class__.__name__[:-8].lower() + def get_name(self): + return self.get_type().title() + def get_build_script(self): builtin = join(util.get_source_dir(), "builder", "scripts", "%s.py" % - self.get_name()) + self.get_type()) if isfile(builtin): return builtin raise NotImplementedError() @@ -235,14 +238,14 @@ class BasePlatform(object): # register installed platform data = get_state_item("installed_platforms", []) - if self.get_name() not in data: - data.append(self.get_name()) + if self.get_type() not in data: + data.append(self.get_type()) set_state_item("installed_platforms", data) return len(requirements) def uninstall(self): - platform = self.get_name() + platform = self.get_type() installed_platforms = PlatformFactory.get_platforms( installed=True).keys() @@ -286,8 +289,8 @@ class BasePlatform(object): installed=True).keys() installed_packages = PackageManager.get_installed() - if self.get_name() not in installed_platforms: - raise exception.PlatformNotInstalledYet(self.get_name()) + if self.get_type() not in installed_platforms: + raise exception.PlatformNotInstalledYet(self.get_type()) if "clean" in targets: targets.remove("clean") diff --git a/platformio/platforms/freescalekinetis.py b/platformio/platforms/freescalekinetis.py index 61106fea..56239f17 100644 --- a/platformio/platforms/freescalekinetis.py +++ b/platformio/platforms/freescalekinetis.py @@ -26,3 +26,6 @@ class FreescalekinetisPlatform(BasePlatform): "default": True } } + + def get_name(self): + return "Freescale Kinetis" diff --git a/platformio/platforms/nordicnrf51.py b/platformio/platforms/nordicnrf51.py index 975b4ce4..e3a09a0d 100644 --- a/platformio/platforms/nordicnrf51.py +++ b/platformio/platforms/nordicnrf51.py @@ -28,3 +28,6 @@ class Nordicnrf51Platform(BasePlatform): "default": True } } + + def get_name(self): + return "Nordic nRF51" diff --git a/platformio/platforms/nxplpc.py b/platformio/platforms/nxplpc.py index 4da1334f..b165731f 100644 --- a/platformio/platforms/nxplpc.py +++ b/platformio/platforms/nxplpc.py @@ -28,3 +28,6 @@ class NxplpcPlatform(BasePlatform): "default": True } } + + def get_name(self): + return "NXP LPC" diff --git a/platformio/platforms/ststm32.py b/platformio/platforms/ststm32.py index f2a998e2..45c029a9 100644 --- a/platformio/platforms/ststm32.py +++ b/platformio/platforms/ststm32.py @@ -49,3 +49,6 @@ class Ststm32Platform(BasePlatform): "default": True } } + + def get_name(self): + return "ST STM32" diff --git a/platformio/platforms/teensy.py b/platformio/platforms/teensy.py index 648c1c3f..cc79c3ee 100644 --- a/platformio/platforms/teensy.py +++ b/platformio/platforms/teensy.py @@ -41,6 +41,9 @@ class TeensyPlatform(BasePlatform): } } + def get_name(self): + return "Teensy" + def run(self, variables, targets): for v in variables: if "BOARD=" not in v: diff --git a/platformio/platforms/timsp430.py b/platformio/platforms/timsp430.py index a15b5fd1..48fe652e 100644 --- a/platformio/platforms/timsp430.py +++ b/platformio/platforms/timsp430.py @@ -31,3 +31,6 @@ class Timsp430Platform(BasePlatform): "default": True } } + + def get_name(self): + return "TI MSP430" diff --git a/platformio/platforms/titiva.py b/platformio/platforms/titiva.py index 143a4249..ffb7e58b 100644 --- a/platformio/platforms/titiva.py +++ b/platformio/platforms/titiva.py @@ -39,3 +39,6 @@ class TitivaPlatform(BasePlatform): "default": True } } + + def get_name(self): + return "TI TIVA" diff --git a/platformio/util.py b/platformio/util.py index 95e7a623..f536bf24 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -284,10 +284,11 @@ def get_frameworks(type_=None): _doc_start = fcontent.index('"""') + 3 fdoc = fcontent[ _doc_start:fcontent.index('"""', _doc_start)].strip() - description = " ".join(fdoc.split("\n")[:-2]) + doclines = [l.strip() for l in fdoc.splitlines() if l.strip()] frameworks[_type] = { - "description": description, - "url": fdoc.split("\n")[-1].strip(), + "name": doclines[0], + "description": " ".join(doclines[1:-1]), + "url": doclines[-1], "script": script_path } get_frameworks._cache = frameworks # pylint: disable=W0212 diff --git a/scripts/docspregen.py b/scripts/docspregen.py index 71e1009a..9b223b8b 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -103,7 +103,6 @@ def generate_platform(name): lines.append(""" For more detailed information please visit `vendor site <%s>`_.""" % p.get_vendor_url()) - lines.append(""" .. contents::""") lines.append(""" @@ -146,18 +145,21 @@ def update_platform_docs(): f.write(generate_platform(name)) -def generate_framework(name, data): - print "Processing framework: %s" % name +def generate_framework(type_, data): + print "Processing framework: %s" % type_ lines = [] - lines.append(".. _framework_%s:" % name) + lines.append(".. _framework_%s:" % type_) lines.append("") - _title = "Framework ``%s``" % name + _title = "Framework ``%s``" % type_ lines.append(_title) lines.append("=" * len(_title)) lines.append(data['description']) lines.append(""" +For more detailed information please visit `vendor site <%s>`_.""" % + data['url']) + lines.append(""" .. contents:: Boards @@ -173,7 +175,7 @@ Boards for board, data in util.get_boards().items(): frameworks = data['frameworks'] vendor = data['vendor'] - if name in frameworks: + if type_ in frameworks: if vendor in vendors: vendors[vendor].append({board: data}) else: diff --git a/tests/commands/test_boards.py b/tests/commands/test_boards.py index dfeef591..4a96d2e5 100644 --- a/tests/commands/test_boards.py +++ b/tests/commands/test_boards.py @@ -34,9 +34,9 @@ def test_board_options(platformio_setup, clirunner, validate_cliresult): search_result = json.loads(result.output) assert isinstance(search_result, list) assert len(search_result) - platforms = [item['name'] for item in search_result] + platforms = [item['type'] for item in search_result] - for name, opts in util.get_boards().iteritems(): + for _, opts in util.get_boards().iteritems(): assert required_opts.issubset(set(opts)) assert opts['platform'] in platforms diff --git a/tests/commands/test_search.py b/tests/commands/test_search.py index 8864d7b9..4179f1b2 100644 --- a/tests/commands/test_search.py +++ b/tests/commands/test_search.py @@ -12,7 +12,7 @@ def test_search_json_output(clirunner, validate_cliresult): search_result = json.loads(result.output) assert isinstance(search_result, list) assert len(search_result) - platforms = [item['name'] for item in search_result] + platforms = [item['type'] for item in search_result] assert "atmelsam" in platforms