Skip to content

Commit

Permalink
Release v1.0.1 (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
sanketgr authored Nov 3, 2022
1 parent d7c415e commit de5ee9c
Show file tree
Hide file tree
Showing 85 changed files with 4,084 additions and 2,076 deletions.
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ jobs:
- name: unit-test
run: |
cd build
# Exclude tests that require SocketCAN
CTEST_OUTPUT_ON_FAILURE=1 ctest
- name: upload-artifacts
Expand Down
19 changes: 17 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
# Change Log

## future release (TBD)
## v1.0.1 (Nov 3, 2022)
License Update:
* License changed from Amazon Software License 1.0 to Apache License Version 2.0

Security Updates:
* Update protcol buffer version used in customer build script to v3.21.7

Features:
* OBD module will automatic detect ECUs for both 11-bit and 29-bit. ECU address is no longer hardcoded.
* Support CAN-FD frames with up to 64 bytes
* Add an CustomDataSource for the IWave GPS module (NMEA output)
* iWave G26 TCU tutorial
* Renesas R-Car S4 setup guide

Bugfixes:
* Dont use SocketCAN hardware timestamp as default but software timestamp. Hardware timestamp not being a unix epoch timestamp leads to problems.
* Fix name of `persistencyUploadRetryIntervalMs` config. The dev guide wasn't including the `Ms` suffix and the code was mistakenly capitalizing the first letter.
* Don't use SocketCAN hardware timestamp as default but software timestamp. Hardware timestamp not being a unix epoch timestamp leads to problems.
* install-socketcan.sh checks now if can-isotp is already loaded.
* The not equal operator =! in expression is now working as expected
* Fix kernel timestamps in 32-bit systems

Improvements:
* Added Mac-user-friendly commands in quick demo
* Added an extra attribute, so that users can search vehicle in the FleetWise console
Expand Down
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

cmake_minimum_required(VERSION 3.10.2)

project(iotfleetwise VERSION 1.0.0)
project(iotfleetwise VERSION 1.0.1)

# AWS IoT FleetWise Edge uses C++14 for compatibility reasons with
# Automotive middlewares ( Adaptive AUTOSAR, ROS2)
Expand All @@ -26,6 +26,10 @@ option(FWE_TEST_CLANG_TIDY "Add clang-tidy test" ON)
option(FWE_TEST_CLANG_FORMAT "Add clang-format test" ON)
option(FWE_SECURITY_COMPILE_FLAGS "Add security related compile options" OFF)
option(FWE_IOT_SDK_SHARED_LIBS "Use AWS IoT Device SDK shared libs" OFF)
option(FWE_EXAMPLE_IWAVEGPS "Include the IWave GPS example for a custom data source" OFF)
if(FWE_EXAMPLE_IWAVEGPS)
add_compile_options("-DFWE_EXAMPLE_IWAVEGPS")
endif()

# Define the default build type
if(NOT CMAKE_BUILD_TYPE)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ AWS IoT FleetWise Edge depends on the following open source libraries. Refer to
* [cURL: v7.58.0](https://github.com/curl/curl)
* [GoogleTest version: release-1.10.0](https://github.com/google/googletest)
* [Benchmark version: 1.6.1](https://github.com/google/benchmark)
* [Protobuf version: 3.9.2](https://github.com/protocolbuffers/protobuf)
* [Protobuf version: 3.21.7](https://github.com/protocolbuffers/protobuf)
* [Boost version 1.65.1](https://github.com/boostorg/boost)
* [jsoncpp version 1.7.4](https://github.com/open-source-parsers/jsoncpp)
* [Snappy version: 1.1.7](https://github.com/google/snappy)
Expand Down
2 changes: 1 addition & 1 deletion THIRD-PARTY-LICENSES
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ https://github.com/eProsima/Fast-CDR.git

** github.com/google/googletest; version 1.10.0 --
https://github.com/google/googletest
** https://github.com/protocolbuffers/protobuf; version 3.9.2 --
** https://github.com/protocolbuffers/protobuf; version 3.21.7 --
https://github.com/protocolbuffers/protobuf

Copyright 2008, Google Inc.
Expand Down
3 changes: 2 additions & 1 deletion cmake/clang_tidy.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ if(FWE_TEST_CLANG_TIDY)
message(WARNING "FWE_TEST_CLANG_TIDY is ON but clang-tidy is not found!")
else()
add_test(NAME ClangTidyTest
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tools/code_check/clang-tidy-test.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}
COMMAND bash -c "python3 ${CMAKE_CURRENT_LIST_DIR}/../tools/code_check/compile_db_remove_test.py ${CMAKE_BINARY_DIR} \
&& run-clang-tidy-10 -header-filter=${CMAKE_CURRENT_SOURCE_DIR}/src/.* -p ${CMAKE_BINARY_DIR}/Testing/Temporary ${CMAKE_CURRENT_SOURCE_DIR}/src"
)
endif()
endif()
1 change: 1 addition & 0 deletions cmake/clang_tools.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ if(FWE_TEST_CLANG_FORMAT)

file(GLOB_RECURSE ALL_CXX_SOURCE_FILES
${PROJECT_SOURCE_DIR}/src/*.[ch]pp
${PROJECT_SOURCE_DIR}/src/*.h
)

if (CLANG_FORMAT)
Expand Down
3 changes: 3 additions & 0 deletions cmake/valgrind.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ function(add_valgrind_test BINARY)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind.supp)
set(VALGRIND_OPTIONS --suppressions=${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind.supp ${VALGRIND_OPTIONS})
endif()
if((${ARGC} GREATER 1) AND (EXISTS ${ARGV1}))
set(VALGRIND_OPTIONS --suppressions=${ARGV1} ${VALGRIND_OPTIONS})
endif()
add_test(NAME valgrind_${BINARY}
COMMAND ${VALGRIND_COMMAND} ${VALGRIND_OPTIONS} ./${BINARY} ${ARGN})
endif()
Expand Down
5 changes: 1 addition & 4 deletions configuration/static-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
{
"obdInterface": {
"interfaceName": "vcan0",
"requestMessageId": 2015,
"obdStandard": "J1979",
"useExtendedIds": false,
"hasTransmissionEcu": true,
"pidRequestIntervalSeconds": 0,
"dtcRequestIntervalSeconds": 0
},
Expand All @@ -39,7 +36,7 @@
"persistency": {
"persistencyPath": "/path/to/collection-scheme-and-data-persistency",
"persistencyPartitionMaxSize": 524288,
"persistencyUploadRetryInterval": 10000
"persistencyUploadRetryIntervalMs": 10000
},
"internalParameters": {
"readyToPublishDataBufferSize": 10000,
Expand Down
4 changes: 2 additions & 2 deletions docs/dev-guide/edge-agent-dev-guide-nxp-s32g.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ This section describes how to deploy AWS IoT FleetWise Edge Agent onto an NXP S3

```bash
cd ~/aws-iot-fleetwise-edge \
&& sudo -H ./tools/install-deps-cross.sh \
&& sudo -H ./tools/install-deps-cross-arm64.sh \
&& rm -rf build \
&& ./tools/build-fwe-cross.sh
&& ./tools/build-fwe-cross-arm64.sh
```

- **Internet Router with Ethernet** — The S32G-VNP-RDB2 must be connected to an internet router via an Ethernet cable for internet connectivity. It is beyond the scope of this document to describe how this is achieved, but one possibility is to use a WiFi to Ethernet bridge and a smartphone acting as an internet hotspot.
Expand Down
6 changes: 3 additions & 3 deletions docs/dev-guide/edge-agent-dev-guide-renesas-rcar-s4.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ This section describes how to deploy AWS IoT FleetWise Edge Agent onto an Renesa
CODENAME=$(grep UBUNTU_CODENAME /etc/os-release | cut -d'=' -f2 )
# update the ubuntu version to your host
sed -i "s/bionic/${CODENAME}/g" ./tools/arm64.list
sudo -H ./tools/install-deps-cross.sh \
sudo -H ./tools/install-deps-cross-arm64.sh \
&& rm -rf build \
&& ./tools/build-fwe-cross.sh
&& ./tools/build-fwe-cross-arm64.sh
```

- **Internet Router with Ethernet** — The R-Car S4 Spider board must be connected to an internet router via an Ethernet cable for internet connectivity. It is beyond the scope of this document to describe how this is achieved, but one possibility is to use a WiFi to Ethernet bridge and a smartphone acting as an internet hotspot.
Expand Down Expand Up @@ -91,7 +91,7 @@ screen /dev/xxxxx 1843200

## Provision AWS IoT Credentials

Run the following commands _on the development machine_ (after compiling AWS IoT FleetWise Edge Agent for ARM64 as explained above), to create an IoT Thing and provision credentials for it. The AWS IoT FleetWise Edge Agent binary and its configuration files will be packaged into a ZIP file ready to be deployed to the board.
Run the following commands _on the development machine_ (after compiling AWS IoT FleetWise Edge Agent for ARM64 as explained [above](#prerequisites)), to create an IoT Thing and provision credentials for it. The AWS IoT FleetWise Edge Agent binary and its configuration files will be packaged into a ZIP file ready to be deployed to the board.

```bash
mkdir -p ~/aws-iot-fleetwise-deploy && cd ~/aws-iot-fleetwise-deploy \
Expand Down
8 changes: 3 additions & 5 deletions docs/dev-guide/edge-agent-dev-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -1342,12 +1342,9 @@ Customers can set the System level logging severity externally via the software
| | type | Specifies if the interface carries CAN or OBD signals over this channel, this will be CAN for a CAN network interface | string |
| | timestampType | Defines which timestamp type should be used: Software, Hardware or Polling. Default is Software. | string |
| obdInterface | interfaceName | CAN Interface connected to OBD bus | string |
| | requestMessageId | CAN request message id used for querying OBD signals. Example, 7DF is used in J1979 | string |
| | obdStandard | OBD Standard (eg. J1979 or Enhanced (for advanced standards)) | string |
| | pidRequestIntervalSeconds | Interval used to schedule PID requests (in seconds) | integer |
| | dtcRequestIntervalSeconds | Interval used to schedule DTC requests (in seconds) | integer |
| | useExtendedIds | Flag to specify use of Extended CAN IDs on Tx and Rx. | boolean |
| | hasTransmissionEcu | specifies whether the vehicle has a Transmission ECU | boolean |
| | interfaceId | Every OBD signal decoder is associated with a OBD network interface using a unique Id | string |
| | type | Specifies if the interface carries CAN or OBD signals over this channel, this will be OBD for a OBD network interface | string |
| bufferSizes | dtcBufferSize | Max size of the buffer shared between data collection module (Collection Engine) and Vehicle Data Consumer. This is a single producer single consumer buffer. | integer |
Expand All @@ -1359,10 +1356,11 @@ Customers can set the System level logging severity externally via the software
| | canDecoderThreadIdleTimeMs | Sleep time for CAN decoder thread if no new data is available (in milliseconds) | integer |
| persistency | persistencyPath | Local storage path to persist Collection Scheme, decoder manifest and data snapshot | string |
| | persistencyPartitionMaxSize | Maximum size allocated for persistency (Bytes) | integer |
| | persistencyUploadRetryInterval | Interval to wait before retrying to upload persisted signal data (in milliseconds). After successfully uploading, the persisted signal data will be cleared. Only signal data that could not be uploaded will be persisted. (in milliseconds) | integer |
| | persistencyUploadRetryIntervalMs | Interval to wait before retrying to upload persisted signal data (in milliseconds). After successfully uploading, the persisted signal data will be cleared. Only signal data that could not be uploaded will be persisted. (in milliseconds) | integer |
| internalParameters | readyToPublishDataBufferSize | Size of the buffer used for storing ready to publish, filtered data | integer |
| | systemWideLogLevel | Sets logging level severity- Trace, Info, Warning, Error | string |
| | dataReductionProbabilityDisabled | Disables probability-based DDC (only for debug purpose) | boolean |
| | metricsCyclicPrintIntervalMs | Sets the interval in milliseconds how often the application metrics should be printed to stdout. Default 0 means never | string |
| publishToCloudParameters | maxPublishMessageCount | Maximum messages that can be published to the cloud in one payload | integer |
| | collectionSchemeManagementCheckinIntervalMs | Time interval between collection schemes checkins(in milliseconds) | integer |
| mqttConnection | endpointUrl | AWS account’s IoT device endpoint | string |
Expand All @@ -1389,7 +1387,7 @@ The device software has been designed to be deployed in a non safety relevant in
### Best Practices and recommendation
You can use the cmake build option, `FWE_SECURITY_COMPILE_FLAGS`, to enable security-related compile options when building the binary. Consult the compiler manual for the effect of each option in `./cmake/compiler_gcc.cmake`. This flag is already enabled in the default [native compilation script](./tools/build-fwe-native.sh) and [cross compilation script](./tools/build-fwe-cross.sh)
You can use the cmake build option, `FWE_SECURITY_COMPILE_FLAGS`, to enable security-related compile options when building the binary. Consult the compiler manual for the effect of each option in `./cmake/compiler_gcc.cmake`. This flag is already enabled in the default [native compilation script](./tools/build-fwe-native.sh) and [cross compilation script for ARM64](./tools/build-fwe-cross-arm64.sh)
Customers are encouraged to store key materials on hardware modules, such as hardware security module (HSM), Trusted Platform Modules (TPM), or other cryptographic elements.
A HSM is a removable or external device that can generate, store, and manage RSA keys used in asymmetric encryption. A TPM is a cryptographic processor present on most commercial PCs and servers.
Expand Down
Loading

0 comments on commit de5ee9c

Please sign in to comment.