mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Add standard pin-names validation script & tests
							parent
							
								
									500ddf596a
								
							
						
					
					
						commit
						885cdef5f7
					
				| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
^hal/storage_abstraction
 | 
			
		||||
^hal/tests/TESTS/mbed_hal/trng/pithy
 | 
			
		||||
^hal/tests/TESTS/mbed_hal/trng/pithy
 | 
			
		||||
^hal/tests/TESTS/pin_names/test_files
 | 
			
		||||
^platform/cxxsupport
 | 
			
		||||
^platform/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV
 | 
			
		||||
^platform/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								.travis.yml
								
								
								
								
							
							
						
						
									
										22
									
								
								.travis.yml
								
								
								
								
							| 
						 | 
				
			
			@ -321,3 +321,25 @@ matrix:
 | 
			
		|||
            CFLAGS+="-DLFS_NO_ASSERT -DLFS_NO_DEBUG -DLFS_NO_WARN -DLFS_NO_ERROR"
 | 
			
		||||
            | tee sizes
 | 
			
		||||
        - ccache -s
 | 
			
		||||
    - <<: extended-pinvalidate
 | 
			
		||||
      stage: "Extended"
 | 
			
		||||
      name: "pinvalidate"
 | 
			
		||||
      env: NAME=pinvalidate
 | 
			
		||||
      language: python
 | 
			
		||||
      python: 3.7
 | 
			
		||||
      install:
 | 
			
		||||
        # Install python modules
 | 
			
		||||
        - python -m pip install --upgrade pip==18.1
 | 
			
		||||
        - python -m pip install --upgrade setuptools==40.4.3
 | 
			
		||||
        - pip install tabulate argparse
 | 
			
		||||
        - pip list --verbose
 | 
			
		||||
        # Fetch remaining information needed for branch comparison
 | 
			
		||||
        - git fetch --all --unshallow --tags
 | 
			
		||||
        - git fetch origin "${TRAVIS_BRANCH}"
 | 
			
		||||
      script:
 | 
			
		||||
        - >-
 | 
			
		||||
          git diff --name-only --diff-filter=d FETCH_HEAD..HEAD \
 | 
			
		||||
            | ( grep '.*[\\|\/]PinNames.h$' || true ) \
 | 
			
		||||
            | while read file; do python ./hal/tests/TESTS/pin_names/pinvalidate.py -vfp "${file}"; done
 | 
			
		||||
        - git diff --exit-code --diff-filter=d --color
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ static const PinList ff_arduino_uno_list = {
 | 
			
		|||
    ff_arduino_uno_pins
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static_assert(sizeof(ff_arduino_pins) / sizeof(ff_arduino_pins[0]) == sizeof(ff_arduino_names) / sizeof(ff_arduino_names[0]),
 | 
			
		||||
static_assert(sizeof(ff_arduino_uno_pins) / sizeof(ff_arduino_uno_pins[0]) == sizeof(ff_arduino_uno_names) / sizeof(ff_arduino_uno_names[0]),
 | 
			
		||||
              "Arrays must have the same length");
 | 
			
		||||
 | 
			
		||||
const PinList *pinmap_ff_arduino_uno_pins()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +0,0 @@
 | 
			
		|||
# Copyright (c) 2020 ARM Limited. All rights reserved.
 | 
			
		||||
# SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 3.19.0 FATAL_ERROR)
 | 
			
		||||
 | 
			
		||||
set(MBED_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../.. CACHE INTERNAL "")
 | 
			
		||||
set(TEST_TARGET mbed-hal-gpio)
 | 
			
		||||
 | 
			
		||||
include(${MBED_PATH}/tools/cmake/mbed_greentea.cmake)
 | 
			
		||||
 | 
			
		||||
project(${TEST_TARGET})
 | 
			
		||||
 | 
			
		||||
mbed_greentea_add_test(TEST_NAME ${TEST_TARGET})
 | 
			
		||||
| 
						 | 
				
			
			@ -24,14 +24,10 @@
 | 
			
		|||
Requirements specified in docs/design-documents/hal/0005-pin-names-Arduino-Uno-standard.md
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if !(defined (TARGET_FF_ARDUINO) || (TARGET_FF_ARDUINO_UNO))
 | 
			
		||||
#if !(defined (TARGET_FF_ARDUINO_UNO))
 | 
			
		||||
#error [NOT_SUPPORTED] Test needs Arduino Uno form factor
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#if defined (TARGET_FF_ARDUINO)
 | 
			
		||||
#warning ARDUINO form factor should not be used any more => use ARDUINO_UNO
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
using namespace utest::v1;
 | 
			
		||||
 | 
			
		||||
template <PinName TestedPin>
 | 
			
		||||
| 
						 | 
				
			
			@ -190,8 +186,6 @@ void I2C_test()
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    I2C i2c(SDA_pin, SCL_pin);
 | 
			
		||||
    // Basic API call
 | 
			
		||||
    i2c.read(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,875 @@
 | 
			
		|||
"""
 | 
			
		||||
Copyright (c) 2020 ARM Limited
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import json
 | 
			
		||||
import pathlib
 | 
			
		||||
import hashlib
 | 
			
		||||
import re
 | 
			
		||||
import sys
 | 
			
		||||
from tabulate import tabulate
 | 
			
		||||
from itertools import chain
 | 
			
		||||
from enum import Enum
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ReturnCode(Enum):
 | 
			
		||||
    """Return codes."""
 | 
			
		||||
 | 
			
		||||
    SUCCESS = 0
 | 
			
		||||
    ERROR = 1
 | 
			
		||||
    INVALID_OPTIONS = 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestCaseError(Exception):
 | 
			
		||||
    """An exception for test case failure."""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ArgumentParserWithDefaultHelp(argparse.ArgumentParser):
 | 
			
		||||
    """Subclass that always shows the help message on invalid arguments."""
 | 
			
		||||
 | 
			
		||||
    def error(self, message):
 | 
			
		||||
        """Error handler."""
 | 
			
		||||
        sys.stderr.write("error: {}\n".format(message))
 | 
			
		||||
        self.print_help()
 | 
			
		||||
        raise SystemExit(ReturnCode.INVALID_OPTIONS.value)
 | 
			
		||||
 | 
			
		||||
def find_target_by_path(target_path):
 | 
			
		||||
    """Find a target by path."""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
 | 
			
		||||
    targets = dict()
 | 
			
		||||
 | 
			
		||||
    with open(target_path) as pin_names_file:
 | 
			
		||||
        pin_names_file_content = pin_names_file.read()
 | 
			
		||||
    
 | 
			
		||||
    target_list_match = re.search(
 | 
			
		||||
        "\/* MBED TARGET LIST: ([0-9A-Z_,* \n]+)*\/",
 | 
			
		||||
        pin_names_file_content
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    target_list = []
 | 
			
		||||
    if target_list_match:
 | 
			
		||||
        target_list = list(
 | 
			
		||||
            re.findall(
 | 
			
		||||
                r"([0-9A-Z_]{3,})",
 | 
			
		||||
                target_list_match.group(1),
 | 
			
		||||
                re.MULTILINE,
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    
 | 
			
		||||
    if not target_list:
 | 
			
		||||
        print("WARNING: MBED TARGET LIST marker invalid or not found in file " + target_path)
 | 
			
		||||
        print("Target could not be determined. Only the generic test suite will run. You can manually specify additional suites.")
 | 
			
		||||
 | 
			
		||||
    with (
 | 
			
		||||
        mbed_os_root.joinpath("targets", "targets.json")
 | 
			
		||||
    ).open() as targets_json_file:
 | 
			
		||||
        target_data = json.load(targets_json_file)
 | 
			
		||||
 | 
			
		||||
        # find target in targets.json
 | 
			
		||||
        for target in target_data:
 | 
			
		||||
            if "public" in target_data[target]:
 | 
			
		||||
                if not target_data[target]["public"]:
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
            if target in target_list:
 | 
			
		||||
                targets[target] = target_path
 | 
			
		||||
 | 
			
		||||
    if len(targets) == 0:
 | 
			
		||||
        targets[target_path] = target_path
 | 
			
		||||
 | 
			
		||||
    return targets
 | 
			
		||||
 | 
			
		||||
def find_target_by_name(target_name=""):
 | 
			
		||||
    """Find a target by name."""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
    
 | 
			
		||||
    targets = dict()
 | 
			
		||||
 | 
			
		||||
    for f in mbed_os_root.joinpath('targets').rglob("PinNames.h"):
 | 
			
		||||
        with open(f) as pin_names_file:
 | 
			
		||||
            pin_names_file_content = pin_names_file.read()
 | 
			
		||||
        
 | 
			
		||||
        target_list_match = re.search(
 | 
			
		||||
            "\/* MBED TARGET LIST: ([0-9A-Z_,* \n]+)*\/",
 | 
			
		||||
            pin_names_file_content
 | 
			
		||||
        )
 | 
			
		||||
        
 | 
			
		||||
        target_list = []
 | 
			
		||||
        if target_list_match:
 | 
			
		||||
            target_list = list(
 | 
			
		||||
                re.findall(
 | 
			
		||||
                    r"([0-9A-Z_]{3,})",
 | 
			
		||||
                    target_list_match.group(1),
 | 
			
		||||
                    re.MULTILINE,
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        if target_name:
 | 
			
		||||
            if target_name in target_list:
 | 
			
		||||
                targets[target_name] = f
 | 
			
		||||
                break
 | 
			
		||||
        else:
 | 
			
		||||
            for target in target_list:
 | 
			
		||||
                targets[target] = f
 | 
			
		||||
    
 | 
			
		||||
    return targets
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_markers(test_mode=False):
 | 
			
		||||
    """Validate markers in PinNames.h files"""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
 | 
			
		||||
    errors = []
 | 
			
		||||
 | 
			
		||||
    with (
 | 
			
		||||
        mbed_os_root.joinpath("targets", "targets.json")
 | 
			
		||||
    ).open() as targets_json_file:
 | 
			
		||||
        targets_json = json.load(targets_json_file)
 | 
			
		||||
 | 
			
		||||
    if test_mode:
 | 
			
		||||
        search_dir = pathlib.Path(__file__).parent.joinpath('test_files').absolute()
 | 
			
		||||
    else:
 | 
			
		||||
        search_dir = mbed_os_root.joinpath('targets')
 | 
			
		||||
 | 
			
		||||
    for f in search_dir.rglob("PinNames.h"):
 | 
			
		||||
        with open(f) as pin_names_file:
 | 
			
		||||
            pin_names_file_content = pin_names_file.read()
 | 
			
		||||
        
 | 
			
		||||
        target_list_match = re.search(
 | 
			
		||||
            "\/* MBED TARGET LIST: ([0-9A-Z_,* \n]+)*\/",
 | 
			
		||||
            pin_names_file_content
 | 
			
		||||
        )
 | 
			
		||||
        
 | 
			
		||||
        marker_target_list = []
 | 
			
		||||
        if target_list_match:
 | 
			
		||||
            marker_target_list = list(
 | 
			
		||||
                re.findall(
 | 
			
		||||
                    r"([0-9A-Z_]{3,})",
 | 
			
		||||
                    target_list_match.group(1),
 | 
			
		||||
                    re.MULTILINE,
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        
 | 
			
		||||
        if not marker_target_list:
 | 
			
		||||
            print("WARNING: MBED TARGET LIST marker invalid or not found in file " + str(f))
 | 
			
		||||
            errors.append({ "file": str(f), "error": "marker invalid or not found"})
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        for target in marker_target_list:
 | 
			
		||||
            target_is_valid = False
 | 
			
		||||
            if target in targets_json:
 | 
			
		||||
                target_is_valid = True
 | 
			
		||||
                if "public" in targets_json[target]:
 | 
			
		||||
                    if targets_json[target]["public"] == False:
 | 
			
		||||
                        target_is_valid = False
 | 
			
		||||
            if not target_is_valid:
 | 
			
		||||
                print("WARNING: MBED TARGET LIST in file " + str(f) + " includes target '" + target + "' which doesn't exist in targets.json or is not public")
 | 
			
		||||
                errors.append({ "file": str(f), "error": "target not found"})
 | 
			
		||||
    
 | 
			
		||||
    return errors
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_duplicate_pinnames_files(test_mode=False):
 | 
			
		||||
    """Check for duplicate PinNames.h files"""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
 | 
			
		||||
    errors = []
 | 
			
		||||
    
 | 
			
		||||
    file_hash_dict = dict()
 | 
			
		||||
 | 
			
		||||
    if test_mode:
 | 
			
		||||
        search_dir = pathlib.Path(__file__).parent.joinpath('test_files').absolute()
 | 
			
		||||
    else:
 | 
			
		||||
        search_dir = mbed_os_root.joinpath('targets')
 | 
			
		||||
 | 
			
		||||
    for f in search_dir.rglob("PinNames.h"):
 | 
			
		||||
        with open(f) as pin_names_file:
 | 
			
		||||
            pin_names_file_content = pin_names_file.read()
 | 
			
		||||
        file_hash_dict[str(f)] = hashlib.md5(pin_names_file_content.encode('utf-8')).hexdigest()
 | 
			
		||||
    
 | 
			
		||||
    rev_dict = {} 
 | 
			
		||||
    for key, value in file_hash_dict.items(): 
 | 
			
		||||
        rev_dict.setdefault(value, set()).add(key) 
 | 
			
		||||
    duplicates = [key for key, values in rev_dict.items() 
 | 
			
		||||
                                if len(values) > 1] 
 | 
			
		||||
    
 | 
			
		||||
    for duplicate in duplicates:
 | 
			
		||||
        print("WARNING: Duplicate files")
 | 
			
		||||
        for file_path, file_hash in file_hash_dict.items():
 | 
			
		||||
            if file_hash == duplicate:
 | 
			
		||||
                errors.append({ "file": file_path, "error": "duplicate file"})
 | 
			
		||||
                print("\t" + file_path)
 | 
			
		||||
    
 | 
			
		||||
    return errors
 | 
			
		||||
 | 
			
		||||
def check_duplicate_markers(test_mode=False):
 | 
			
		||||
    """Check target markers in PinNames.h files for duplicates."""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
 | 
			
		||||
    errors = []
 | 
			
		||||
 | 
			
		||||
    markers = dict()
 | 
			
		||||
    
 | 
			
		||||
    if test_mode:
 | 
			
		||||
        search_dir = pathlib.Path(__file__).parent.joinpath('test_files').absolute()
 | 
			
		||||
    else:
 | 
			
		||||
        search_dir = mbed_os_root.joinpath('targets')
 | 
			
		||||
 | 
			
		||||
    for f in search_dir.rglob("PinNames.h"):
 | 
			
		||||
        with open(f) as pin_names_file:
 | 
			
		||||
            pin_names_file_content = pin_names_file.read()
 | 
			
		||||
        
 | 
			
		||||
        target_list_match = re.search(
 | 
			
		||||
            "\/* MBED TARGET LIST: ([0-9A-Z_,* \n]+)*\/",
 | 
			
		||||
            pin_names_file_content
 | 
			
		||||
        )
 | 
			
		||||
        
 | 
			
		||||
        marker_target_list = []
 | 
			
		||||
        if target_list_match:
 | 
			
		||||
            marker_target_list = list(
 | 
			
		||||
                re.findall(
 | 
			
		||||
                    r"([0-9A-Z_]{3,})",
 | 
			
		||||
                    target_list_match.group(1),
 | 
			
		||||
                    re.MULTILINE,
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        
 | 
			
		||||
        for target in marker_target_list:
 | 
			
		||||
            if target in markers:
 | 
			
		||||
                print("WARNING: target duplicate in " + str(f) + ", " + target + " first listed in " + markers[target])
 | 
			
		||||
                errors.append({ "file": str(f), "error": "duplicate marker"})
 | 
			
		||||
            else:
 | 
			
		||||
                markers[target] = str(f)
 | 
			
		||||
 | 
			
		||||
    return errors
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def target_has_arduino_form_factor(target_name):
 | 
			
		||||
    """Check if the target has the Arduino form factor."""
 | 
			
		||||
    mbed_os_root = pathlib.Path(__file__).absolute().parents[4]
 | 
			
		||||
 | 
			
		||||
    with (
 | 
			
		||||
        mbed_os_root.joinpath("targets", "targets.json")
 | 
			
		||||
    ).open() as targets_json_file:
 | 
			
		||||
        target_data = json.load(targets_json_file)
 | 
			
		||||
 | 
			
		||||
    if target_name in target_data:
 | 
			
		||||
        if "supported_form_factors" in target_data[target_name]:
 | 
			
		||||
            form_factors = target_data[target_name]["supported_form_factors"]
 | 
			
		||||
            if "ARDUINO_UNO" in form_factors:
 | 
			
		||||
                return True
 | 
			
		||||
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def pin_name_to_dict(pin_name_file_content):
 | 
			
		||||
    pin_name_enum_dict = dict()
 | 
			
		||||
    pin_name_enum_match = re.search(
 | 
			
		||||
        "typedef enum {\n([^}]*)\n} PinName;", pin_name_file_content
 | 
			
		||||
    )
 | 
			
		||||
    if pin_name_enum_match:
 | 
			
		||||
        pin_name_enum_body = pin_name_enum_match.group(1)
 | 
			
		||||
        pin_name_enum_dict = dict(
 | 
			
		||||
            re.findall(
 | 
			
		||||
                r"^\s*([a-zA-Z0-9_]+)\s*=\s*([a-zA-Z0-9_]+)",
 | 
			
		||||
                pin_name_enum_body,
 | 
			
		||||
                re.MULTILINE,
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    pin_name_define_dict = dict(
 | 
			
		||||
        re.findall(
 | 
			
		||||
            r"^#define\s+([a-zA-Z0-9_]+)\s+([a-zA-Z0-9_]+)",
 | 
			
		||||
            pin_name_file_content,
 | 
			
		||||
            re.MULTILINE,
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    return {**pin_name_enum_dict, **pin_name_define_dict}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def identity_assignment_check(pin_name_dict):
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
    for key, val in pin_name_dict.items():
 | 
			
		||||
        if val == key:
 | 
			
		||||
            message = "cannot assign value to itself"
 | 
			
		||||
            invalid_items.append({"key": key, "val": val, "message": message})
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def nc_assignment_check(pin_name_dict):
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
    for key, val in pin_name_dict.items():
 | 
			
		||||
        if re.match(r"^((LED|BUTTON)\d*|USBTX|USBRX)$", key):
 | 
			
		||||
            if val == "NC":
 | 
			
		||||
                message = "cannot be NC"
 | 
			
		||||
                invalid_items.append(
 | 
			
		||||
                    {"key": key, "val": val, "message": message}
 | 
			
		||||
                )
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def duplicate_assignment_check(pin_name_dict):
 | 
			
		||||
    used_pins = []
 | 
			
		||||
    used_pins_friendly = []
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
 | 
			
		||||
    for key, val in pin_name_dict.items():
 | 
			
		||||
        if re.match(r"^((LED|BUTTON)\d*|USBTX|USBRX)$", key):
 | 
			
		||||
            if val == "NC":
 | 
			
		||||
                continue
 | 
			
		||||
            # resolve to literal
 | 
			
		||||
            realval = val
 | 
			
		||||
            depth = 0
 | 
			
		||||
            while not re.match(
 | 
			
		||||
                "(0x[0-9a-fA-F]+|[1-9][0-9]*|0[1-7][0-7]+|0b[01]+)[uUlL]{0,2}",
 | 
			
		||||
                realval,
 | 
			
		||||
            ):
 | 
			
		||||
                try:
 | 
			
		||||
                    realval = pin_name_dict[realval]
 | 
			
		||||
                    depth += 1
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    break
 | 
			
		||||
                if depth > 10:
 | 
			
		||||
                    break
 | 
			
		||||
 | 
			
		||||
            if realval in used_pins:
 | 
			
		||||
                message = (
 | 
			
		||||
                    "already assigned to "
 | 
			
		||||
                    + used_pins_friendly[used_pins.index(realval)]
 | 
			
		||||
                )
 | 
			
		||||
                invalid_items.append(
 | 
			
		||||
                    {"key": key, "val": val, "message": message}
 | 
			
		||||
                )
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            used_pins.append(realval)
 | 
			
		||||
            used_pins_friendly.append(key + " = " + val)
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def arduino_duplicate_assignment_check(pin_name_dict):
 | 
			
		||||
    used_pins = []
 | 
			
		||||
    used_pins_friendly = []
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
 | 
			
		||||
    for key, val in pin_name_dict.items():
 | 
			
		||||
        if re.match(r"^ARDUINO_UNO_[AD]\d+$", key):
 | 
			
		||||
            if val == "NC":
 | 
			
		||||
                continue
 | 
			
		||||
            # resolve to literal
 | 
			
		||||
            realval = val
 | 
			
		||||
            depth = 0
 | 
			
		||||
            while not re.match(
 | 
			
		||||
                "(0x[0-9a-fA-F]+|[1-9][0-9]*|0[1-7][0-7]+|0b[01]+)[uUlL]{0,2}",
 | 
			
		||||
                realval,
 | 
			
		||||
            ):
 | 
			
		||||
                try:
 | 
			
		||||
                    realval = pin_name_dict[realval]
 | 
			
		||||
                    depth += 1
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    break
 | 
			
		||||
                if depth > 10:
 | 
			
		||||
                    break
 | 
			
		||||
 | 
			
		||||
            if realval in used_pins:
 | 
			
		||||
                message = (
 | 
			
		||||
                    "already assigned to "
 | 
			
		||||
                    + used_pins_friendly[used_pins.index(realval)]
 | 
			
		||||
                )
 | 
			
		||||
                invalid_items.append(
 | 
			
		||||
                    {"key": key, "val": val, "message": message}
 | 
			
		||||
                )
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            used_pins.append(realval)
 | 
			
		||||
            used_pins_friendly.append(key + " = " + val)
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def arduino_existence_check(pin_name_dict):
 | 
			
		||||
    analog_pins = (f"ARDUINO_UNO_A{i}" for i in range(6))
 | 
			
		||||
    digital_pins = (f"ARDUINO_UNO_D{i}" for i in range(16))
 | 
			
		||||
 | 
			
		||||
    return [
 | 
			
		||||
        {"key": pin, "val": "", "message": pin + " not defined"}
 | 
			
		||||
        for pin in chain(analog_pins, digital_pins)
 | 
			
		||||
        if pin not in pin_name_dict
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def arduino_nc_assignment_check(pin_name_dict):
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
    for key, val in pin_name_dict.items():
 | 
			
		||||
        if re.match(r"^ARDUINO_UNO_[AD]\d+$", key):
 | 
			
		||||
            if val == "NC":
 | 
			
		||||
                message = "cannot be NC"
 | 
			
		||||
                invalid_items.append(
 | 
			
		||||
                    {"key": key, "val": val, "message": message}
 | 
			
		||||
                )
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def legacy_assignment_check(pin_name_content):
 | 
			
		||||
    invalid_items = []
 | 
			
		||||
    legacy_assignments = dict(
 | 
			
		||||
        re.findall(
 | 
			
		||||
            r"^\s*((?:LED|BUTTON)\d*)\s*=\s*([a-zA-Z0-9_]+)",
 | 
			
		||||
            pin_name_content,
 | 
			
		||||
            re.MULTILINE,
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    for key, val in legacy_assignments.items():
 | 
			
		||||
        message = "legacy assignment; LEDs and BUTTONs must be #define'd"
 | 
			
		||||
        invalid_items.append({"key": key, "val": val, "message": message})
 | 
			
		||||
    return invalid_items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def print_summary(report):
 | 
			
		||||
    targets = set([case["platform_name"] for case in report])
 | 
			
		||||
 | 
			
		||||
    table = []
 | 
			
		||||
    for target in targets:
 | 
			
		||||
        error_count = 0
 | 
			
		||||
 | 
			
		||||
        for case in report:
 | 
			
		||||
            if (
 | 
			
		||||
                case["platform_name"] == target
 | 
			
		||||
                and case["result"] == "FAILED"
 | 
			
		||||
            ):
 | 
			
		||||
                error_count += 1
 | 
			
		||||
 | 
			
		||||
        table.append(
 | 
			
		||||
            [target, "FAILED" if error_count else "PASSED", error_count]
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    return tabulate(
 | 
			
		||||
        table,
 | 
			
		||||
        headers=["Platform name", "Result", "Error count"],
 | 
			
		||||
        tablefmt="grid",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def print_suite_summary(report):
 | 
			
		||||
    targets = set([case["platform_name"] for case in report])
 | 
			
		||||
 | 
			
		||||
    table = []
 | 
			
		||||
    for target in targets:
 | 
			
		||||
        suites = set([
 | 
			
		||||
            case["suite_name"]
 | 
			
		||||
            for case in report
 | 
			
		||||
            if case["platform_name"] == target
 | 
			
		||||
        ])
 | 
			
		||||
 | 
			
		||||
        for suite in suites:
 | 
			
		||||
            result = "PASSED"
 | 
			
		||||
            error_count = 0
 | 
			
		||||
            for case in report:
 | 
			
		||||
                if case["platform_name"] != target:
 | 
			
		||||
                    continue
 | 
			
		||||
                if case["suite_name"] != suite:
 | 
			
		||||
                    continue
 | 
			
		||||
                if case["result"] == "FAILED":
 | 
			
		||||
                    result = "FAILED"
 | 
			
		||||
                    error_count += 1
 | 
			
		||||
            table.append([target, suite, result, error_count])
 | 
			
		||||
 | 
			
		||||
    return tabulate(
 | 
			
		||||
        table,
 | 
			
		||||
        headers=["Platform name", "Test suite", "Result", "Error count"],
 | 
			
		||||
        tablefmt="grid",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def print_report(report, print_error_detail, tablefmt="grid"):
 | 
			
		||||
    table = []
 | 
			
		||||
    for case in report:
 | 
			
		||||
        errors_str = []
 | 
			
		||||
        for error in case["errors"]:
 | 
			
		||||
            errors_str.append("\n")
 | 
			
		||||
            if error["key"]:
 | 
			
		||||
                errors_str.append(error["key"])
 | 
			
		||||
            if error["val"]:
 | 
			
		||||
                errors_str.append(" = ")
 | 
			
		||||
                errors_str.append(error["val"])
 | 
			
		||||
            if error["message"]:
 | 
			
		||||
                errors_str.append(" <-- ")
 | 
			
		||||
                errors_str.append(error["message"])
 | 
			
		||||
 | 
			
		||||
        if not errors_str:
 | 
			
		||||
            errors_str = "None"
 | 
			
		||||
 | 
			
		||||
        if print_error_detail:
 | 
			
		||||
            table.append(
 | 
			
		||||
                (
 | 
			
		||||
                    case["platform_name"],
 | 
			
		||||
                    case["suite_name"],
 | 
			
		||||
                    case["case_name"],
 | 
			
		||||
                    case["result"],
 | 
			
		||||
                    len(case["errors"]),
 | 
			
		||||
                    "None" if not errors_str else "".join(errors_str).lstrip(),
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            table.append(
 | 
			
		||||
                (
 | 
			
		||||
                    case["platform_name"],
 | 
			
		||||
                    case["suite_name"],
 | 
			
		||||
                    case["case_name"],
 | 
			
		||||
                    case["result"],
 | 
			
		||||
                    len(case["errors"]),
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
    return tabulate(
 | 
			
		||||
        table,
 | 
			
		||||
        headers=[
 | 
			
		||||
            "Platform name",
 | 
			
		||||
            "Test suite",
 | 
			
		||||
            "Test case",
 | 
			
		||||
            "Result",
 | 
			
		||||
            "Error count",
 | 
			
		||||
            "Errors",
 | 
			
		||||
        ],
 | 
			
		||||
        tablefmt=tablefmt,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def print_pretty_html_report(report):
 | 
			
		||||
    output = []
 | 
			
		||||
    output.append("<html><head><style>table, td, tr { border: 2px solid black; border-collapse: collapse; padding: 5px; font-family: Helvetica, serif; }</style></head>")
 | 
			
		||||
    output.append('<body><p><button onclick=\'e=document.getElementsByTagName("details");for(var i=0;i<e.length;i++){e[i].setAttribute("open","true")};\'>Expand all errors</button></p><table>')
 | 
			
		||||
    output.append("<tr><th>Platform name</th><th>Test suite</th><th>Test case</th><th>Result</th><th>Error count</th><th>Errors</th></tr>")
 | 
			
		||||
 | 
			
		||||
    for case in report:
 | 
			
		||||
        output.append("<tr>")
 | 
			
		||||
 | 
			
		||||
        if case["errors"]:
 | 
			
		||||
            error_details = ["<details><summary>View errors</summary><table>"]
 | 
			
		||||
            for error in case["errors"]:
 | 
			
		||||
                error_details.append("<tr>")
 | 
			
		||||
                if error["key"]:
 | 
			
		||||
                    error_details.append("<td>")
 | 
			
		||||
                    error_details.append(error["key"])
 | 
			
		||||
                    error_details.append("</td>")
 | 
			
		||||
                if error["val"]:
 | 
			
		||||
                    error_details.append("<td>")
 | 
			
		||||
                    error_details.append(error["val"])
 | 
			
		||||
                    error_details.append("</td>")
 | 
			
		||||
                if error["message"]:
 | 
			
		||||
                    error_details.append("<td>")
 | 
			
		||||
                    error_details.append(error["message"])
 | 
			
		||||
                    error_details.append("</td>")
 | 
			
		||||
                error_details.append("</tr>")
 | 
			
		||||
            error_details.append("</table></details>")
 | 
			
		||||
        else:
 | 
			
		||||
            error_details = []
 | 
			
		||||
 | 
			
		||||
        output.append("<td>")
 | 
			
		||||
        output.append(case["platform_name"])
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
        output.append("<td>")
 | 
			
		||||
        output.append(case["suite_name"])
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
        output.append("<td>")
 | 
			
		||||
        output.append(case["case_name"])
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
 | 
			
		||||
        if case["result"] == "PASSED":
 | 
			
		||||
            color = "green"
 | 
			
		||||
            count_color = "black"
 | 
			
		||||
        else:
 | 
			
		||||
            color = "red"
 | 
			
		||||
            count_color = "red"
 | 
			
		||||
 | 
			
		||||
        output.append("<td style='color:")
 | 
			
		||||
        output.append(color)
 | 
			
		||||
        output.append("'>")
 | 
			
		||||
        output.append(case["result"])
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
        
 | 
			
		||||
        output.append("<td style='color:")
 | 
			
		||||
        output.append(count_color)
 | 
			
		||||
        output.append("'>")
 | 
			
		||||
        output.append(str(len(case["errors"])))
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
        
 | 
			
		||||
        output.append("<td>")
 | 
			
		||||
        output.extend(error_details)
 | 
			
		||||
        output.append("</td>")
 | 
			
		||||
 | 
			
		||||
        output.append("</tr>")
 | 
			
		||||
 | 
			
		||||
    output.append("</table></body></table>")
 | 
			
		||||
 | 
			
		||||
    return "".join(output)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def has_passed_all_test_cases(report):
 | 
			
		||||
    """Check that all test cases passed."""
 | 
			
		||||
    for case in report:
 | 
			
		||||
        if case["result"] == "FAILED":
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
    return True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
test_cases = [
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "generic",
 | 
			
		||||
        "case_name": "identity",
 | 
			
		||||
        "case_function": identity_assignment_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "generic",
 | 
			
		||||
        "case_name": "nc",
 | 
			
		||||
        "case_function": nc_assignment_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "generic",
 | 
			
		||||
        "case_name": "duplicate",
 | 
			
		||||
        "case_function": duplicate_assignment_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "generic",
 | 
			
		||||
        "case_name": "legacy",
 | 
			
		||||
        "case_function": legacy_assignment_check,
 | 
			
		||||
        "case_input": "content",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "arduino_uno",
 | 
			
		||||
        "case_name": "duplicate",
 | 
			
		||||
        "case_function": arduino_duplicate_assignment_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "arduino_uno",
 | 
			
		||||
        "case_name": "existence",
 | 
			
		||||
        "case_function": arduino_existence_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "suite_name": "arduino_uno",
 | 
			
		||||
        "case_name": "nc",
 | 
			
		||||
        "case_function": arduino_nc_assignment_check,
 | 
			
		||||
        "case_input": "dict",
 | 
			
		||||
    },
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def validate_pin_names(args):
 | 
			
		||||
    """Entry point for validating the Pin names."""
 | 
			
		||||
    suites = []
 | 
			
		||||
    if args.suite_names:
 | 
			
		||||
        suites = args.suite_names.split(",")
 | 
			
		||||
 | 
			
		||||
    targets = dict()
 | 
			
		||||
    if args.paths:
 | 
			
		||||
        paths = args.paths.split(",")
 | 
			
		||||
        for path in paths:
 | 
			
		||||
            targets = {**targets, **find_target_by_path(path)}
 | 
			
		||||
    elif args.targets:
 | 
			
		||||
        target_names = args.targets.split(",")
 | 
			
		||||
        for target_name in target_names:
 | 
			
		||||
            targets = {**targets, **find_target_by_name(target_name)}
 | 
			
		||||
    elif args.all:
 | 
			
		||||
        targets = find_target_by_name()
 | 
			
		||||
    elif args.check_markers:
 | 
			
		||||
        check_markers()
 | 
			
		||||
        check_duplicate_pinnames_files()
 | 
			
		||||
        check_duplicate_markers()
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    report = []
 | 
			
		||||
    for target, path in targets.items():
 | 
			
		||||
        pin_name_content = open(path).read()
 | 
			
		||||
 | 
			
		||||
        pin_name_dict = pin_name_to_dict(pin_name_content)
 | 
			
		||||
 | 
			
		||||
        arduino_support = target_has_arduino_form_factor(target)
 | 
			
		||||
 | 
			
		||||
        for case in test_cases:
 | 
			
		||||
            if suites:
 | 
			
		||||
                if case["suite_name"] not in suites:
 | 
			
		||||
                    continue
 | 
			
		||||
            else:
 | 
			
		||||
                if not arduino_support and case["suite_name"] == "arduino_uno":
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
            if case["case_input"] == "dict":
 | 
			
		||||
                case_input = pin_name_dict
 | 
			
		||||
            elif case["case_input"] == "content":
 | 
			
		||||
                case_input = pin_name_content
 | 
			
		||||
 | 
			
		||||
            case_output = case["case_function"](case_input)
 | 
			
		||||
 | 
			
		||||
            case_result = "FAILED" if case_output else "PASSED"
 | 
			
		||||
 | 
			
		||||
            platform_name = target
 | 
			
		||||
            if not args.full_name and args.output_format == "prettytext":
 | 
			
		||||
                if len(platform_name) > 40:
 | 
			
		||||
                    platform_name = "..." + platform_name[-40:]
 | 
			
		||||
 | 
			
		||||
            report.append(
 | 
			
		||||
                {
 | 
			
		||||
                    "platform_name": platform_name,
 | 
			
		||||
                    "suite_name": case["suite_name"],
 | 
			
		||||
                    "case_name": case["case_name"],
 | 
			
		||||
                    "result": case_result,
 | 
			
		||||
                    "errors": case_output,
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
    generate_output(report, args.output_format, args.verbose, args.output_file)
 | 
			
		||||
 | 
			
		||||
    if not has_passed_all_test_cases(report):
 | 
			
		||||
        raise TestCaseError("One or more test cases failed")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def generate_output(report, output_format, verbosity, output_file):
 | 
			
		||||
    """Generate the output."""
 | 
			
		||||
    if output_format == "json":
 | 
			
		||||
        output = json.dumps(report)
 | 
			
		||||
    elif output_format == "html":
 | 
			
		||||
        output = print_pretty_html_report(report)
 | 
			
		||||
    else:
 | 
			
		||||
        if verbosity == 0:
 | 
			
		||||
            output = print_summary(report)
 | 
			
		||||
        elif verbosity == 1:
 | 
			
		||||
            output = print_suite_summary(report)
 | 
			
		||||
        elif verbosity == 2:
 | 
			
		||||
            output = print_report(report, False)
 | 
			
		||||
        elif verbosity > 2:
 | 
			
		||||
            output = print_report(report, True)
 | 
			
		||||
 | 
			
		||||
    if output_file:
 | 
			
		||||
        with open(output_file, "w") as out_file:
 | 
			
		||||
            out_file.write(output)
 | 
			
		||||
    else:
 | 
			
		||||
        print(output)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_args():
 | 
			
		||||
    """Parse the command line args."""
 | 
			
		||||
    parser = ArgumentParserWithDefaultHelp(
 | 
			
		||||
        description="Pin names validation",
 | 
			
		||||
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-n",
 | 
			
		||||
        "--suite_names",
 | 
			
		||||
        help="Run specific test suite. Use comma to seperate multiple suites.",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-v",
 | 
			
		||||
        "--verbose",
 | 
			
		||||
        action="count",
 | 
			
		||||
        default=0,
 | 
			
		||||
        help=(
 | 
			
		||||
            "Verbosity of the report (none to -vvv)."
 | 
			
		||||
            " Only applies for 'prettytext' output format."
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-f",
 | 
			
		||||
        "--full_name",
 | 
			
		||||
        action="store_true",
 | 
			
		||||
        help=(
 | 
			
		||||
            "Don't truncate long platform names in"
 | 
			
		||||
            " human-readable output formats"
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-o",
 | 
			
		||||
        "--output_format",
 | 
			
		||||
        default="prettytext",
 | 
			
		||||
        help="Set the output format: prettytext (default), json or html",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-w",
 | 
			
		||||
        "--output_file",
 | 
			
		||||
        help="File to write output to, instead of printing to stdout",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    group = parser.add_mutually_exclusive_group(required=True)
 | 
			
		||||
 | 
			
		||||
    group.add_argument(
 | 
			
		||||
        "-t",
 | 
			
		||||
        "--targets",
 | 
			
		||||
        help=(
 | 
			
		||||
            "Target name. Use comma to seperate multiple targets."
 | 
			
		||||
            "THIS FEATURE IS EXPERIMENTAL!"
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    group.add_argument(
 | 
			
		||||
        "-p",
 | 
			
		||||
        "--paths",
 | 
			
		||||
        help="Path to PinNames.h file. Use comma to seperate multiple paths.",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    group.add_argument(
 | 
			
		||||
        "-a", "--all", action="store_true", help="Run tests on all targets."
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    group.add_argument(
 | 
			
		||||
        "-m",
 | 
			
		||||
        "--check-markers",
 | 
			
		||||
        action="store_true",
 | 
			
		||||
        help="Check all PinNames.h for the MBED TARGET LIST marker."
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.set_defaults(func=validate_pin_names)
 | 
			
		||||
 | 
			
		||||
    args_namespace = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    # We want to fail gracefully, with a consistent
 | 
			
		||||
    # help message, in the no argument case.
 | 
			
		||||
    # So here's an obligatory hasattr hack.
 | 
			
		||||
    if not hasattr(args_namespace, "func"):
 | 
			
		||||
        parser.error("No arguments given!")
 | 
			
		||||
    else:
 | 
			
		||||
        return args_namespace
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def run_pin_validate():
 | 
			
		||||
    """Application main algorithm."""
 | 
			
		||||
    args = parse_args()
 | 
			
		||||
    args.func(args)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _main():
 | 
			
		||||
    """Run pinvalidate."""
 | 
			
		||||
    try:
 | 
			
		||||
        run_pin_validate()
 | 
			
		||||
    except Exception as error:
 | 
			
		||||
        print(error)
 | 
			
		||||
        return ReturnCode.ERROR.value
 | 
			
		||||
    else:
 | 
			
		||||
        return ReturnCode.SUCCESS.value
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    sys.exit(_main())
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,205 @@
 | 
			
		|||
"""
 | 
			
		||||
Copyright (c) 2020 ARM Limited
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import pytest
 | 
			
		||||
from pinvalidate import *
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def pin_name_content():
 | 
			
		||||
    pin_name_file = open("./test_files/PinNames_test.h")
 | 
			
		||||
    return pin_name_file.read()
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def pin_name_dict(pin_name_content):
 | 
			
		||||
    return pin_name_to_dict(pin_name_content)
 | 
			
		||||
 | 
			
		||||
def test_marker_check():
 | 
			
		||||
    expect = [
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/nonexistent_target/PinNames.h', 'error': 'target not found'},
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/misformatted_marker/PinNames.h', 'error': 'marker invalid or not found'},
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/missing_marker/PinNames.h', 'error': 'marker invalid or not found'}
 | 
			
		||||
    ]
 | 
			
		||||
    
 | 
			
		||||
    assert check_markers(test_mode=True) == expect
 | 
			
		||||
 | 
			
		||||
def test_duplicate_pinnames_files_check():
 | 
			
		||||
    expect = [
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/PinNames.h', 'error': 'duplicate file'},
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/duplicate_marker/PinNames.h', 'error': 'duplicate file'}
 | 
			
		||||
    ]
 | 
			
		||||
    
 | 
			
		||||
    assert check_duplicate_pinnames_files(test_mode=True) == expect
 | 
			
		||||
 | 
			
		||||
def test_duplicate_markers_check():
 | 
			
		||||
    expect = [
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/duplicate_file/PinNames.h', 'error': 'duplicate marker'},
 | 
			
		||||
        {'file': '/Users/geopsi01/Development/mbed-os/hal/tests/TESTS/pin_names/test_files/duplicate_marker/PinNames.h', 'error': 'duplicate marker'}
 | 
			
		||||
    ]
 | 
			
		||||
    
 | 
			
		||||
    assert check_duplicate_markers(test_mode=True) == expect
 | 
			
		||||
 | 
			
		||||
def test_pin_name_to_dict(pin_name_dict):
 | 
			
		||||
    expect = {
 | 
			
		||||
        "PA_0": "0x00",
 | 
			
		||||
        "PA_1": "0x01",
 | 
			
		||||
        "PA_2": "0x02",
 | 
			
		||||
        "PA_3": "0x03",
 | 
			
		||||
        "PA_4": "0x04",
 | 
			
		||||
        "PA_5": "0x05",
 | 
			
		||||
        "PA_6": "0x06",
 | 
			
		||||
        "PA_7": "0x07",
 | 
			
		||||
        "PA_8": "0x08",
 | 
			
		||||
        "PA_9": "0x09",
 | 
			
		||||
        "PA_10": "0x0A",
 | 
			
		||||
        "PA_11": "0x0B",
 | 
			
		||||
        "PA_12": "0x0C",
 | 
			
		||||
        "PA_13": "0x0D",
 | 
			
		||||
        "PA_14": "0x0E",
 | 
			
		||||
        "PA_15": "0x0F",
 | 
			
		||||
        "PB_0": "0x10",
 | 
			
		||||
        "PB_1": "0x11",
 | 
			
		||||
        "PB_2": "0x12",
 | 
			
		||||
        "PB_3": "0x13",
 | 
			
		||||
        "PB_4": "0x14",
 | 
			
		||||
        "PB_5": "0x15",
 | 
			
		||||
        "PB_6": "0x16",
 | 
			
		||||
        "PB_7": "0x17",
 | 
			
		||||
        "PB_8": "0x18",
 | 
			
		||||
        "PB_9": "0x19",
 | 
			
		||||
        "PB_10": "0x1A",
 | 
			
		||||
        "PB_11": "0x1B",
 | 
			
		||||
        "PB_12": "0x1C",
 | 
			
		||||
        "PB_13": "0x1D",
 | 
			
		||||
        "PB_14": "0x1E",
 | 
			
		||||
        "PB_15": "0x1F",
 | 
			
		||||
        "PC_0": "0x20",
 | 
			
		||||
        "PC_1": "0x21",
 | 
			
		||||
        "PC_2": "0x22",
 | 
			
		||||
        "PC_3": "0x23",
 | 
			
		||||
        "PC_4": "0x24",
 | 
			
		||||
        "PC_5": "0x25",
 | 
			
		||||
        "PC_6": "0x26",
 | 
			
		||||
        "PC_7": "0x27",
 | 
			
		||||
        "PC_8": "0x28",
 | 
			
		||||
        "PC_9": "0x29",
 | 
			
		||||
        "PC_10": "0x2A",
 | 
			
		||||
        "PC_11": "0x2B",
 | 
			
		||||
        "PC_12": "0x2C",
 | 
			
		||||
        "PC_13": "0x2D",
 | 
			
		||||
        "PC_14": "0x2E",
 | 
			
		||||
        "PC_15": "0x2F",
 | 
			
		||||
        "PD_0": "0x30",
 | 
			
		||||
        "PD_1": "0x31",
 | 
			
		||||
        "PD_2": "0x32",
 | 
			
		||||
        "PD_3": "0x33",
 | 
			
		||||
        "PD_4": "0x34",
 | 
			
		||||
        "PD_5": "0x35",
 | 
			
		||||
        "PD_6": "0x36",
 | 
			
		||||
        "PD_7": "0x37",
 | 
			
		||||
        "PD_8": "0x38",
 | 
			
		||||
        "PD_9": "0x39",
 | 
			
		||||
        "PD_10": "0x3A",
 | 
			
		||||
        "PD_11": "0x3B",
 | 
			
		||||
        "PD_12": "0x3C",
 | 
			
		||||
        "PD_13": "0x3D",
 | 
			
		||||
        "PD_14": "0x3E",
 | 
			
		||||
        "PD_15": "0x3F",
 | 
			
		||||
        "ARDUINO_UNO_A0": "PC_5",
 | 
			
		||||
        "ARDUINO_UNO_A1": "PC_4",
 | 
			
		||||
        "ARDUINO_UNO_A2": "PC_3",
 | 
			
		||||
        "ARDUINO_UNO_A3": "PC_2",
 | 
			
		||||
        "ARDUINO_UNO_A4": "PC_1",
 | 
			
		||||
        "ARDUINO_UNO_A5": "PC_0",
 | 
			
		||||
        "ARDUINO_UNO_D0": "PA_1",
 | 
			
		||||
        "ARDUINO_UNO_D1": "PA_0",
 | 
			
		||||
        "ARDUINO_UNO_D2": "PD_14",
 | 
			
		||||
        "ARDUINO_UNO_D3": "PB_0",
 | 
			
		||||
        "ARDUINO_UNO_D4": "PA_3",
 | 
			
		||||
        "ARDUINO_UNO_D5": "PB_4",
 | 
			
		||||
        "ARDUINO_UNO_D6": "PB_1",
 | 
			
		||||
        "ARDUINO_UNO_D8": "PB_1",
 | 
			
		||||
        "ARDUINO_UNO_D9": "PA_15",
 | 
			
		||||
        "ARDUINO_UNO_D10": "PA_2",
 | 
			
		||||
        "ARDUINO_UNO_D11": "NC",
 | 
			
		||||
        "ARDUINO_UNO_D12": "PA_6",
 | 
			
		||||
        "ARDUINO_UNO_D13": "PA_5",
 | 
			
		||||
        "ARDUINO_UNO_D14": "PB_9",
 | 
			
		||||
        "ARDUINO_UNO_D15": "PB_8",
 | 
			
		||||
        "USBTX": "PB_6",
 | 
			
		||||
        "USBRX": "PB_7",
 | 
			
		||||
        "LED1": "PA_5",
 | 
			
		||||
        "BUTTON1": "PC_2",
 | 
			
		||||
        "LED2": "PB_14",
 | 
			
		||||
        "LED3": "PC_9",
 | 
			
		||||
        "BUTTON2": "PC_13",
 | 
			
		||||
        "LED4": "LED3",
 | 
			
		||||
        "LED5": "PC_9",
 | 
			
		||||
        "LED6": "LED6",
 | 
			
		||||
        "LED7": "NC",
 | 
			
		||||
        "BUTTON3": "PC_13",
 | 
			
		||||
        "BUTTON4": "BUTTON1",
 | 
			
		||||
        "BUTTON5": "NC",
 | 
			
		||||
        "BUTTON6": "BUTTON6",
 | 
			
		||||
    }
 | 
			
		||||
    assert pin_name_dict == expect
 | 
			
		||||
 | 
			
		||||
def test_identity_assignment_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'LED6', 'val': 'LED6', 'message': 'cannot assign value to itself'},
 | 
			
		||||
        {'key': 'BUTTON6', 'val': 'BUTTON6', 'message': 'cannot assign value to itself'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert identity_assignment_check(pin_name_dict) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_nc_assignment_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'LED7','message': 'cannot be NC','val': 'NC'},
 | 
			
		||||
        {'key': 'BUTTON5','message': 'cannot be NC','val': 'NC'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert nc_assignment_check(pin_name_dict) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_duplicate_assignment_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'LED4', 'val': 'LED3', 'message': 'already assigned to LED3 = PC_9'},
 | 
			
		||||
        {'key': 'LED5', 'val': 'PC_9', 'message': 'already assigned to LED3 = PC_9'},
 | 
			
		||||
        {'key': 'BUTTON3', 'val': 'PC_13', 'message': 'already assigned to BUTTON2 = PC_13'},
 | 
			
		||||
        {'key': 'BUTTON4', 'val': 'BUTTON1', 'message': 'already assigned to BUTTON1 = PC_2'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert duplicate_assignment_check(pin_name_dict) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_legacy_assignment_check(pin_name_content):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'LED1', 'val': 'PA_5', 'message': 'legacy assignment; LEDs and BUTTONs must be #define\'d'},
 | 
			
		||||
        {'key': 'BUTTON1', 'val': 'PC_2', 'message': 'legacy assignment; LEDs and BUTTONs must be #define\'d'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert legacy_assignment_check(pin_name_content) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_arduino_duplicate_assignment_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'ARDUINO_UNO_D8', 'val': 'PB_1', 'message': 'already assigned to ARDUINO_UNO_D6 = PB_1'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert arduino_duplicate_assignment_check(pin_name_dict) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_arduino_existence_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'ARDUINO_UNO_D7', 'val': '', 'message': 'ARDUINO_UNO_D7 not defined'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert arduino_existence_check(pin_name_dict) == expected_errors
 | 
			
		||||
 | 
			
		||||
def test_arduino_nc_assignment_check(pin_name_dict):
 | 
			
		||||
    expected_errors = [
 | 
			
		||||
        {'key': 'ARDUINO_UNO_D11', 'val': 'NC', 'message': 'cannot be NC'},
 | 
			
		||||
    ]
 | 
			
		||||
    assert arduino_nc_assignment_check(pin_name_dict) == expected_errors
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC1768 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,148 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2020 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
#include "PinNamesTypes.h"
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // valid pin definitions
 | 
			
		||||
    PA_0  = 0x00,
 | 
			
		||||
    PA_1  = 0x01,
 | 
			
		||||
    PA_2  = 0x02,
 | 
			
		||||
    PA_3  = 0x03,
 | 
			
		||||
    PA_4  = 0x04,
 | 
			
		||||
    PA_5  = 0x05,
 | 
			
		||||
    PA_6  = 0x06,
 | 
			
		||||
    PA_7  = 0x07,
 | 
			
		||||
    PA_8  = 0x08,
 | 
			
		||||
    PA_9  = 0x09,
 | 
			
		||||
    PA_10 = 0x0A,
 | 
			
		||||
    PA_11 = 0x0B,
 | 
			
		||||
    PA_12 = 0x0C,
 | 
			
		||||
    PA_13 = 0x0D,
 | 
			
		||||
    PA_14 = 0x0E,
 | 
			
		||||
    PA_15 = 0x0F,
 | 
			
		||||
 | 
			
		||||
    // valid pin definitions
 | 
			
		||||
    PB_0  = 0x10,
 | 
			
		||||
    PB_1  = 0x11,
 | 
			
		||||
    PB_2  = 0x12,
 | 
			
		||||
    PB_3  = 0x13,
 | 
			
		||||
    PB_4  = 0x14,
 | 
			
		||||
    PB_5  = 0x15,
 | 
			
		||||
    PB_6  = 0x16,
 | 
			
		||||
    PB_7  = 0x17,
 | 
			
		||||
    PB_8  = 0x18,
 | 
			
		||||
    PB_9  = 0x19,
 | 
			
		||||
    PB_10 = 0x1A,
 | 
			
		||||
    PB_11 = 0x1B,
 | 
			
		||||
    PB_12 = 0x1C,
 | 
			
		||||
    PB_13 = 0x1D,
 | 
			
		||||
    PB_14 = 0x1E,
 | 
			
		||||
    PB_15 = 0x1F,
 | 
			
		||||
 | 
			
		||||
    // valid pin definitions
 | 
			
		||||
    PC_0  = 0x20,
 | 
			
		||||
    PC_1  = 0x21,
 | 
			
		||||
    PC_2  = 0x22,
 | 
			
		||||
    PC_3  = 0x23,
 | 
			
		||||
    PC_4  = 0x24,
 | 
			
		||||
    PC_5  = 0x25,
 | 
			
		||||
    PC_6  = 0x26,
 | 
			
		||||
    PC_7  = 0x27,
 | 
			
		||||
    PC_8  = 0x28,
 | 
			
		||||
    PC_9  = 0x29,
 | 
			
		||||
    PC_10 = 0x2A,
 | 
			
		||||
    PC_11 = 0x2B,
 | 
			
		||||
    PC_12 = 0x2C,
 | 
			
		||||
    PC_13 = 0x2D,
 | 
			
		||||
    PC_14 = 0x2E,
 | 
			
		||||
    PC_15 = 0x2F,
 | 
			
		||||
 | 
			
		||||
    // valid pin definitions
 | 
			
		||||
    PD_0  = 0x30,
 | 
			
		||||
    PD_1  = 0x31,
 | 
			
		||||
    PD_2  = 0x32,
 | 
			
		||||
    PD_3  = 0x33,
 | 
			
		||||
    PD_4  = 0x34,
 | 
			
		||||
    PD_5  = 0x35,
 | 
			
		||||
    PD_6  = 0x36,
 | 
			
		||||
    PD_7  = 0x37,
 | 
			
		||||
    PD_8  = 0x38,
 | 
			
		||||
    PD_9  = 0x39,
 | 
			
		||||
    PD_10 = 0x3A,
 | 
			
		||||
    PD_11 = 0x3B,
 | 
			
		||||
    PD_12 = 0x3C,
 | 
			
		||||
    PD_13 = 0x3D,
 | 
			
		||||
    PD_14 = 0x3E,
 | 
			
		||||
    PD_15 = 0x3F,
 | 
			
		||||
 | 
			
		||||
    // valid (except D7, D8) Arduino Uno(Rev3) header pin definitions
 | 
			
		||||
    ARDUINO_UNO_A0   = PC_5,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_A1   = PC_4,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_A2   = PC_3,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_A3   = PC_2,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_A4   = PC_1,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_A5   = PC_0,  // ADC / GPIO
 | 
			
		||||
    ARDUINO_UNO_D0   = PA_1,  // UART RX / GPIO
 | 
			
		||||
    ARDUINO_UNO_D1   = PA_0,  // UART RX / GPIO
 | 
			
		||||
    ARDUINO_UNO_D2   = PD_14, // GPIO
 | 
			
		||||
    ARDUINO_UNO_D3   = PB_0,  // PWM / GPIO
 | 
			
		||||
    ARDUINO_UNO_D4   = PA_3,  // GPIO
 | 
			
		||||
    ARDUINO_UNO_D5   = PB_4,  // PWM / GPIO
 | 
			
		||||
    ARDUINO_UNO_D6   = PB_1,  // PWM / GPIO
 | 
			
		||||
    //ARDUINO_UNO_D7   = PA_4,// invalid - missing definition (GPIO)
 | 
			
		||||
    ARDUINO_UNO_D8   = PB_1,  // invalid - duplicate pin (GPIO)
 | 
			
		||||
    ARDUINO_UNO_D9   = PA_15, // PWM / GPIO
 | 
			
		||||
    ARDUINO_UNO_D10  = PA_2,  // SPI CS   / PWM / GPIO
 | 
			
		||||
    ARDUINO_UNO_D11  = NC,    // invalid - NC assignment
 | 
			
		||||
    ARDUINO_UNO_D12  = PA_6,  // SPI MISO / PWM / GPIO
 | 
			
		||||
    ARDUINO_UNO_D13  = PA_5,  // SPI SCK / GPIO
 | 
			
		||||
    ARDUINO_UNO_D14  = PB_9,  // I2C SDA / GPIO
 | 
			
		||||
    ARDUINO_UNO_D15  = PB_8,  // I2C SCL / GPIO
 | 
			
		||||
 | 
			
		||||
    // valid STDIO definitions for console print
 | 
			
		||||
    USBTX   = PB_6,
 | 
			
		||||
    USBRX   = PB_7,
 | 
			
		||||
 | 
			
		||||
    // invalid legacy LED/BUTTON definitions
 | 
			
		||||
    // these should be a #define, not in an enum
 | 
			
		||||
    LED1    = PA_5,
 | 
			
		||||
    BUTTON1 = PC_2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
// valid standardized LED and button definitions
 | 
			
		||||
#define LED2    PB_14
 | 
			
		||||
#define LED3    PC_9
 | 
			
		||||
#define BUTTON2 PC_13
 | 
			
		||||
 | 
			
		||||
// invalid LED definitions
 | 
			
		||||
#define LED4    LED3        // duplicate
 | 
			
		||||
#define LED5    PC_9        // duplicate
 | 
			
		||||
#define LED6    LED6        // identity
 | 
			
		||||
#define LED7    NC          // NC
 | 
			
		||||
 | 
			
		||||
// invalid button definitions
 | 
			
		||||
#define BUTTON3 PC_13       // duplicate
 | 
			
		||||
#define BUTTON4 BUTTON1     // duplicate
 | 
			
		||||
#define BUTTON5 NC          // NC
 | 
			
		||||
#define BUTTON6 BUTTON6     // identity
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K64F, LPC1768 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC1768 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST LPC1768 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,147 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2006-2013 ARM Limited
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K67F */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
#define PORT_SHIFT  5
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    // LPC Pin Names
 | 
			
		||||
    P0_0 = LPC_GPIO0_BASE,
 | 
			
		||||
          P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31,
 | 
			
		||||
    P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
 | 
			
		||||
    P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31,
 | 
			
		||||
    P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31,
 | 
			
		||||
    P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31,
 | 
			
		||||
 | 
			
		||||
    // mbed DIP Pin Names
 | 
			
		||||
    p5 = P0_9,
 | 
			
		||||
    p6 = P0_8,
 | 
			
		||||
    p7 = P0_7,
 | 
			
		||||
    p8 = P0_6,
 | 
			
		||||
    p9 = P0_0,
 | 
			
		||||
    p10 = P0_1,
 | 
			
		||||
    p11 = P0_18,
 | 
			
		||||
    p12 = P0_17,
 | 
			
		||||
    p13 = P0_15,
 | 
			
		||||
    p14 = P0_16,
 | 
			
		||||
    p15 = P0_23,
 | 
			
		||||
    p16 = P0_24,
 | 
			
		||||
    p17 = P0_25,
 | 
			
		||||
    p18 = P0_26,
 | 
			
		||||
    p19 = P1_30,
 | 
			
		||||
    p20 = P1_31,
 | 
			
		||||
    p21 = P2_5,
 | 
			
		||||
    p22 = P2_4,
 | 
			
		||||
    p23 = P2_3,
 | 
			
		||||
    p24 = P2_2,
 | 
			
		||||
    p25 = P2_1,
 | 
			
		||||
    p26 = P2_0,
 | 
			
		||||
    p27 = P0_11,
 | 
			
		||||
    p28 = P0_10,
 | 
			
		||||
    p29 = P0_5,
 | 
			
		||||
    p30 = P0_4,
 | 
			
		||||
 | 
			
		||||
    // Other mbed Pin Names
 | 
			
		||||
#ifdef MCB1700
 | 
			
		||||
    LED1 = P1_28,
 | 
			
		||||
    LED2 = P1_29,
 | 
			
		||||
    LED3 = P1_31,
 | 
			
		||||
    LED4 = P2_2,
 | 
			
		||||
#else
 | 
			
		||||
    LED1 = P1_18,
 | 
			
		||||
    LED2 = P1_20,
 | 
			
		||||
    LED3 = P1_21,
 | 
			
		||||
    LED4 = P1_23,
 | 
			
		||||
#endif
 | 
			
		||||
    USBTX = P0_2,
 | 
			
		||||
    USBRX = P0_3,
 | 
			
		||||
 | 
			
		||||
    // Arch Pro Pin Names
 | 
			
		||||
    D0 = P4_29,
 | 
			
		||||
    D1 = P4_28,
 | 
			
		||||
    D2 = P0_4,
 | 
			
		||||
    D3 = P0_5,
 | 
			
		||||
    D4 = P2_2,
 | 
			
		||||
    D5 = P2_3,
 | 
			
		||||
    D6 = P2_4,
 | 
			
		||||
    D7 = P2_5,
 | 
			
		||||
    D8 = P0_0,
 | 
			
		||||
    D9 = P0_1,
 | 
			
		||||
    D10 = P0_6,
 | 
			
		||||
    D11 = P0_9,
 | 
			
		||||
    D12 = P0_8,
 | 
			
		||||
    D13 = P0_7,
 | 
			
		||||
    D14 = P0_27,
 | 
			
		||||
    D15 = P0_28,
 | 
			
		||||
 | 
			
		||||
    A0 = P0_23,
 | 
			
		||||
    A1 = P0_24,
 | 
			
		||||
    A2 = P0_25,
 | 
			
		||||
    A3 = P0_26,
 | 
			
		||||
    A4 = P1_30,
 | 
			
		||||
    A5 = P1_31,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF,
 | 
			
		||||
 | 
			
		||||
    I2C_SCL0 = NC,
 | 
			
		||||
    I2C_SDA0 = NC,
 | 
			
		||||
    I2C_SCL1 = p10,
 | 
			
		||||
    I2C_SDA1 = p9,
 | 
			
		||||
    I2C_SCL2 = P0_11, // pin used by application board
 | 
			
		||||
    I2C_SDA2 = P0_10, // pin used by application board
 | 
			
		||||
    I2C_SCL = I2C_SCL2,
 | 
			
		||||
    I2C_SDA = I2C_SDA2,
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullUp = 0,
 | 
			
		||||
    PullDown = 3,
 | 
			
		||||
    PullNone = 2,
 | 
			
		||||
    Repeater = 1,
 | 
			
		||||
    OpenDrain = 4,
 | 
			
		||||
    PullDefault = PullDown
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
// version of PINCON_TypeDef using register arrays
 | 
			
		||||
typedef struct {
 | 
			
		||||
  __IO uint32_t PINSEL[11];
 | 
			
		||||
       uint32_t RESERVED0[5];
 | 
			
		||||
  __IO uint32_t PINMODE[10];
 | 
			
		||||
  __IO uint32_t PINMODE_OD[5];
 | 
			
		||||
} PINCONARRAY_TypeDef;
 | 
			
		||||
 | 
			
		||||
#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +56,12 @@
 | 
			
		|||
             "SPI_CLK":  "PTD5",
 | 
			
		||||
             "SPI_CS":   "PTD4"
 | 
			
		||||
        },
 | 
			
		||||
        "K64F": {
 | 
			
		||||
            "SPI_CS": "SPI_CS",
 | 
			
		||||
            "SPI_MOSI": "SPI_MOSI",
 | 
			
		||||
            "SPI_MISO": "SPI_MISO",
 | 
			
		||||
            "SPI_CLK": "SPI_SCK"
 | 
			
		||||
        },
 | 
			
		||||
        "K66F": {
 | 
			
		||||
             "SPI_MOSI": "PTE3",
 | 
			
		||||
             "SPI_MISO": "PTE1",
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +127,12 @@
 | 
			
		|||
            "SPI_MISO": "PC_2",
 | 
			
		||||
            "SPI_CLK":  "PB_10",
 | 
			
		||||
            "SPI_CS":   "PE_2"
 | 
			
		||||
        },
 | 
			
		||||
        "WIO_BG96": {
 | 
			
		||||
          "SPI_CS": "SPI_CS",
 | 
			
		||||
          "SPI_MOSI": "SPI_MOSI",
 | 
			
		||||
          "SPI_MISO": "SPI_MISO",
 | 
			
		||||
          "SPI_CLK": "SPI_SCK"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,11 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: FVP_MPS2_M0, FVP_MPS2_M0P, FVP_MPS2_M3, FVP_MPS2_M4, 
 | 
			
		||||
 * FVP_MPS2_M7
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARM_CM3DS_MPS2 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,11 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARM_MPS2_M0, ARM_MPS2_M0P, ARM_MPS2_M3, ARM_MPS2_M4, 
 | 
			
		||||
 * ARM_MPS2_M7
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARM_MUSCA_B1, ARM_MUSCA_B1_NS */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARM_MUSCA_S1, ARM_MUSCA_S1_NS */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS_ATP */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS_DK */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS_MODULE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS_NANO */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_ARTEMIS_THING_PLUS*/
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_EDGE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,9 @@
 | 
			
		|||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SFE_EDGE2 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,8 @@
 | 
			
		|||
 * POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: EV_COG_AD3029LZ */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,8 @@
 | 
			
		|||
 * POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: EV_COG_AD4050LZ */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,12 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: CY8CPROTO_062_4343W, CY8CKIT_062S2_43012,
 | 
			
		||||
 * CY8CPROTO_062S3_4343W, CY8CKIT_062_WIFI_BT, CY8CKIT_062_BLE,
 | 
			
		||||
 * CYW9P62S1_43438EVB_01, CYW9P62S1_43012EVB_01, CY8CKIT064B0S2_4343W,
 | 
			
		||||
 * CYTFM_064B0S2_4343W, CYSBSYSKIT_01
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: KL25Z */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: KL46Z */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K66F */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K82F */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: KL43Z */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: KW41Z */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K22F */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: K64F */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: HEXIWEAR */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SDT64B */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: GD32_F307VG */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: GD32_F450ZI */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MAX32620FTHR */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SDT32620B */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MAX32625MBED */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,9 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MAX32625PICO */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SDT32625B */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MAX32630FTHR */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,8 @@
 | 
			
		|||
 * 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NRF52_DK */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,8 @@
 | 
			
		|||
 * 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SDT52832B */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARDUINO_NANO33BLE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: EP_AGORA */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: EP_ATLAS */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,8 @@
 | 
			
		|||
 * 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NRF52840_DK */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_IOT_M252 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,8 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_IOT_M263A */
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_PFM_M453 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_IOT_M487 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,8 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_PFM_M487 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_PFM_NANO130 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUMAKER_PFM_NUC472 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC1114 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARCH_PRO */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC1768 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC54114 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: FF_LPC546XX */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: LPC546XX */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MIMXRT1050_EVK */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: GR_LYCHEE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: RZ_A1H */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: GR_MANGO */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F070RB */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F072RB */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F091RC */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F103RB */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F207ZG */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F303K8 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F303RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F303ZE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F401RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,9 @@
 | 
			
		|||
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: ARCH_MAX */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,9 @@
 | 
			
		|||
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MTS_DRAGONFLY_F411RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,9 @@
 | 
			
		|||
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MTS_MDOT_F411RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F411RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F412ZG */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: WIO_EMW3166 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: DISCO_F413ZH */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,9 @@
 | 
			
		|||
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: MTS_DRAGONFLY_F413RH */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST:  NUCLEO_F413ZH */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: DISCO_F429ZI */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F429ZI */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F439ZI */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: WIO_3G */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: WIO_BG96 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F446RE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: NUCLEO_F446ZE */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: DISCO_F469NI */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: SDP_K1 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* MBED TARGET LIST: DISCO_F746NG */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue