diff --git a/.clang-format b/.clang-format
index d934c5cc5..eeed4bea7 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,70 +1,71 @@
-AlignTrailingComments : true
-AllowAllParametersOfDeclarationOnNextLine : true
-AllowShortBlocksOnASingleLine : false
-AllowShortFunctionsOnASingleLine : "None"
-AllowShortIfStatementsOnASingleLine : false
-AllowShortLoopsOnASingleLine : false
-AlwaysBreakBeforeMultilineStrings : true
-BasedOnStyle : "Google"
+#https://releases.llvm.org/5.0.2/tools/clang/docs/ClangFormatStyleOptions.html
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: false
+AllowShortFunctionsOnASingleLine: "Inline"
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakBeforeMultilineStrings: true
+BasedOnStyle: "Google"
#BinPackParameters : false
-BreakBeforeBinaryOperators : false
-BreakBeforeBraces : "Custom"
-BreakBeforeTernaryOperators : false
-ColumnLimit : 120
-ContinuationIndentWidth : 4
-DerivePointerAlignment : false
-DisableFormat : false
-IndentCaseLabels : true
-IndentWrappedFunctionNames : false
-IndentWidth : 4
-Language : "Cpp"
-MaxEmptyLinesToKeep : 1
-PointerBindsToType : false
-SpaceBeforeAssignmentOperators : true
-SpaceBeforeParens : "ControlStatements"
-SpacesBeforeTrailingComments : 1
-SpacesInCStyleCastParentheses : false
-SpacesInParentheses : false
-Standard : "Cpp03"
-TabWidth : 1
-UseTab : "Never"
-AccessModifierOffset : -4
-AlignAfterOpenBracket : "Align"
-AlignEscapedNewlines : "Left"
-AlignOperands : true
-AllowShortCaseLabelsOnASingleLine : false
-AllowShortFunctionsOnASingleLine : "Inline"
-AlwaysBreakAfterReturnType : "None"
-AlwaysBreakTemplateDeclarations : true
-BreakBeforeInheritanceComma : false
-BreakConstructorInitializers : "BeforeComma"
-CompactNamespaces : false
-ConstructorInitializerAllOnOneLineOrOnePerLine : false
-ConstructorInitializerIndentWidth : 0
-Cpp11BracedListStyle : false
-FixNamespaceComments : true
-NamespaceIndentation : "None"
-PointerAlignment : "Right"
-SortIncludes : true
-SortUsingDeclarations : true
-SpacesInAngles : false
-SpaceAfterCStyleCast : false
-SpaceInEmptyParentheses : false
-SpacesInSquareBrackets : false
+BreakBeforeBinaryOperators: false
+BreakBeforeBraces: "Custom"
+BreakBeforeTernaryOperators: false
+ColumnLimit: 120
+ContinuationIndentWidth: 4
+DerivePointerAlignment: false
+DisableFormat: false
+IndentCaseLabels: true
+IndentWrappedFunctionNames: false
+IndentWidth: 4
+Language: "Cpp"
+MaxEmptyLinesToKeep: 1
+PointerBindsToType: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: "ControlStatements"
+SpacesBeforeTrailingComments: 1
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+Standard: "Cpp03"
+TabWidth: 1
+UseTab: "Never"
+AccessModifierOffset: -4
+AlignAfterOpenBracket: "Align"
+AlignEscapedNewlines: "Left"
+AlignOperands: true
+AllowShortCaseLabelsOnASingleLine: false
+AlwaysBreakAfterReturnType: "None"
+AlwaysBreakTemplateDeclarations: true
+BreakBeforeInheritanceComma: false
+BreakConstructorInitializers: "BeforeComma"
+CompactNamespaces: false
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 0
+Cpp11BracedListStyle: false
+FixNamespaceComments: true
+NamespaceIndentation: "None"
+PointerAlignment: "Right"
+SortIncludes: true
+SortUsingDeclarations: true
+SpacesInAngles: false
+SpaceAfterCStyleCast: false
+SpaceInEmptyParentheses: false
+SpacesInSquareBrackets: false
KeepEmptyLinesAtTheStartOfBlocks: true
BraceWrapping:
- AfterClass: true
+ AfterClass: true
AfterControlStatement: true
- AfterEnum: true
- AfterFunction: true
- AfterNamespace: false
+ AfterEnum: true
+ AfterFunction: true
+ AfterNamespace: false
AfterObjCDeclaration: true
- AfterStruct: true
- AfterUnion: true
- BeforeCatch: true
- BeforeElse: true
+ AfterStruct: true
+ AfterUnion: true
+ BeforeCatch: true
+ BeforeElse: true
+#IncludeBlocks: "Preserve" # for future version of clang
IncludeCategories:
- - Regex: '^<' # system includes
- Priority: 10
- - Regex: '^"erpc_' # erpc public includes
- Priority: 1
+ - Regex: "^<" # system includes
+ Priority: 10
+ - Regex: '^"erpc_' # erpc public includes
+ Priority: 1
diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml
new file mode 100644
index 000000000..8c7729bae
--- /dev/null
+++ b/.github/workflows/clang-format.yml
@@ -0,0 +1,15 @@
+name: clang-format lint
+
+on: [push]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: DoozyX/clang-format-lint-action@v0.10
+ with:
+ source: '.'
+ exclude: 'test/common/gtest/gtest.h test/common/gtest/gtest.cpp erpcgen/src/cpptemplate/cpptempl.h erpcgen/src/cpptemplate/cpptempl.cpp erpcgen/src/cpptemplate/cpptempl_test.cpp'
+ clangFormatVersion: 10
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
new file mode 100644
index 000000000..9ca791ea4
--- /dev/null
+++ b/.github/workflows/greetings.yml
@@ -0,0 +1,13 @@
+name: Greetings
+
+on: [pull_request, issues]
+
+jobs:
+ greeting:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/first-interaction@v1
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ issue-message: 'Hi eRPC user. Thank you for your interest and welcome. We hope you will enjoy this framework well.'
+ pr-message: 'Hi eRPC user. Thank you for your PR. We are appreciating that and we will try to review it as soon as possible. We hope you are enjoying this framework so far.'
diff --git a/.travis.yml b/.travis.yml
index 2afb8843a..dcf702755 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,13 +7,13 @@ compiler:
os:
- linux
- osx
-osx_image: xcode8.3 # OS X 10.12
+osx_image: xcode10.3 # OS X 10.14
before_install:
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update -qq; fi
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get install python bison flex libboost-dev libboost-filesystem-dev libboost-system-dev python ; fi
- if [ $TRAVIS_OS_NAME == linux ]; then pyenv install 2.7.12 ; pyenv global 2.7.12; fi
- if [ $TRAVIS_OS_NAME == osx ]; then brew update; fi
-- if [ $TRAVIS_OS_NAME == osx ]; then brew install python bison flex && brew upgrade boost || true; fi
+- if [ $TRAVIS_OS_NAME == osx ]; then brew install python bison flex -v -f 2>&1 && brew upgrade boost || true; fi
- if [ $TRAVIS_OS_NAME == osx ]; then curl "https://bootstrap.pypa.io/get-pip.py" | sudo python; fi
install:
diff --git a/LICENSE b/LICENSE
index b6b0efa9a..a05f102ec 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
-Copyright (c) 2014-2016 Freescale Semiconductor, Inc.
-Copyright 2016-2018 NXP
+Copyright 2014-2016 Freescale Semiconductor, Inc.
+Copyright 2016-2020 NXP
All rights reserved.
SPDX-License-Identifier: BSD-3-Clause
diff --git a/README.md b/README.md
index fb243b6ad..31ab66619 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,8 @@ Client side usage:
void example_client(void) {
// Initialize client running over UART.
erpc_client_init(
- erpc_transport_cmsis_uart_init(UART0_NonBlocking_Driver);
+ erpc_transport_cmsis_uart_init(Driver_USART0),
+ erpc_mbf_dynamic_init());
// Now we can call the remote function to turn on the green LED.
set_led(kGreen, true);
@@ -43,7 +44,8 @@ void set_led(LEDName whichLed, bool onOrOff) {
void example_server(void) {
// Initialize server running over UART.
erpc_server_init(
- erpc_transport_uart_init(UART0_NonBlocking_Driver);
+ erpc_transport_cmsis_uart_init(Driver_USART0),
+ erpc_mbf_dynamic_init());
// Add the IO service.
erpc_add_service_to_server(create_IO_service());
@@ -61,9 +63,12 @@ Supported transports:
* NXP Kinetis SPI and DSPI
* POSIX and Windows serial port
* TCP/IP (mostly for testing)
-* [NXP RPMsg-Lite](https://github.com/NXPmicro/rpmsg-lite)
+* [NXP RPMsg-Lite / RPMsg TTY](https://github.com/NXPmicro/rpmsg-lite)
+* SPIdev Linux
+* USB CDC
+* NXP Messaging Unit
-eRPC is available with an unrestrictive BSD 3-clause license. See the LICENSE file for the full license text.
+eRPC is available with an unrestrictive BSD 3-clause license. See the [LICENSE file](https://github.com/EmbeddedRPC/erpc/blob/develop/LICENSE) for the full license text.
## Releases
@@ -71,10 +76,19 @@ eRPC is available with an unrestrictive BSD 3-clause license. See the LICENSE fi
## Documentation
-[Documentation](https://github.com/EmbeddedRPC/erpc/wiki) is in the `wiki` section. Commit sha in wiki repository: 7199a9c00fef4b952a6b05a8e3b0257f788e4eeb.
+[Documentation](https://github.com/EmbeddedRPC/erpc/wiki) is in the `wiki` section.
+
+[eRPC Infrastructure documentation](https://embeddedrpc.github.io/)
+
+## Examples
[Example IDL](examples/README.md) is available in the `examples/` folder.
+Plenty of eRPC multicore and multiprocessor examples can be also found in NXP MCUXpressoSDK packages. Visit [https://mcuxpresso.nxp.com](https://mcuxpresso.nxp.com) to configure, build and download these packages.
+To get the board list with multicore support (eRPC included) use filtering based on Middleware and search for 'multicore' string. Once the selected package with the multicore middleware is downloaded, see
+/boards//multicore_examples for eRPC multicore examples (RPMsg_Lite or Messaging Unit transports used) or
+/boards//multiprocessor_examples for eRPC multiprocessor examples (UART or SPI transports used).
+eRPC examples use 'erpc_' name prefix.
## Directories
@@ -88,12 +102,16 @@ eRPC is available with an unrestrictive BSD 3-clause license. See the LICENSE fi
`erpcgen` - Holds source code for erpcgen and makefiles or project files to build erpcgen on Windows, Linux, and OS X.
+`erpcsniffer` - Holds source code for erpcsniffer application.
+
`examples` - Several example IDL files.
`mk` - Contains common makefiles for building eRPC components.
`test` - Client/server tests. These tests verify the entire communications path from client to server and back.
+`utilities` - Holds utilities which bring additional benefit to eRPC apps developers.
+
## Building and installing
@@ -117,11 +135,11 @@ Steps are described in [`erpcgen/VisualStudio_v14/readme_erpcgen.txt`](erpcgen/V
Install these packages:
* bison: GNU yacc-compatible parser generator
* flex: A fast lexical analyzer generator
-* libboost-dev, libboost-filesystem-dev, libboost-system-dev: Boost C++ libraries (Linux needs to use libboost version 1.58.0)
+* libboost-dev, libboost-filesystem-dev, libboost-system-dev: Boost C++ libraries (Linux needs to use libboost version 1.65.0)
* make: the GNU version of the 'make' utility
* python: Python language interpreter (either 2.7 or 3.5+ work)
-* gcc-core: GNU Compiler Collection (C, OpenMP)
-* gcc-g++: GNU Compiler Collection (C++)
+* gcc-7: GNU C compiler (recommended version)
+* g++-7: GNU C++ compiler (recommended version)
Mandatory for case, when build for different architecture is needed
* gcc-multilib, g++-multilib
@@ -130,9 +148,9 @@ Mandatory for case, when build for different architecture is needed
#### Mac OS X
Install these packages with [homebrew](http://brew.sh/):
-* bison: GNU yacc-compatible parser generator
-* flex: A fast lexical analyzer generator
-* boost: Boost C++ libraries
+* bison: GNU yacc-compatible parser generator (version 3.7.3 is recommended)
+* flex: A fast lexical analyzer generator (version 2.6.4 is recommended)
+* boost: Boost C++ libraries (version 1.74 is recommended)
### Building
@@ -157,6 +175,8 @@ List of top level Makefile targets:
- `all`: build all of the above
- `install`: install liberpc.a, erpcgen, and include files
+eRPC code is validated with respect to the C++ 11 standard.
+
### Installing for Python
To install the Python infrastructure for eRPC, first change to the `erpc_python/` directory. Then run the setup.py script like this:
@@ -165,10 +185,11 @@ To install the Python infrastructure for eRPC, first change to the `erpc_python/
After installation, the `erpc` package is available via normal import statements. See the [erpc_python folder readme](erpc_python/readme.md) for more.
-## Code providing:
+## Code providing
Repository on Github contains two main branches. __Master__ and __develop__. Code is developed on __develop__ branch. Release version is created via merging __develop__ branch into __master__ branch.
---
-Copyright © 2014-2016 Freescale Semiconductor, Inc.
-Copyright © 2016-2017 NXP
+Copyright 2014-2016 Freescale Semiconductor, Inc.
+
+Copyright 2016-2020 NXP
diff --git a/doxygen/Doxyfile.erpc b/doxygen/Doxyfile.erpc
index a76e2af5c..0ff74c944 100644
--- a/doxygen/Doxyfile.erpc
+++ b/doxygen/Doxyfile.erpc
@@ -38,7 +38,7 @@ PROJECT_NAME = "eRPC API Reference"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = "Rev. 1.7.2"
+PROJECT_NUMBER = "Rev. 1.8.0"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doxygen/Doxyfile.erpcgen b/doxygen/Doxyfile.erpcgen
index c83ed08a9..e62412998 100644
--- a/doxygen/Doxyfile.erpcgen
+++ b/doxygen/Doxyfile.erpcgen
@@ -38,7 +38,7 @@ PROJECT_NAME = "eRPC Generator (erpcgen)"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = "Rev. 1.7.2"
+PROJECT_NUMBER = "Rev. 1.8.0"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doxygen/html_footer.html b/doxygen/html_footer.html
index 99eff856b..dd02cae32 100644
--- a/doxygen/html_footer.html
+++ b/doxygen/html_footer.html
@@ -3,14 +3,14 @@