Skip to content

Commit

Permalink
Release v.1.1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
hefroy committed Feb 15, 2024
1 parent a0bc7ef commit f4e8595
Show file tree
Hide file tree
Showing 125 changed files with 2,404 additions and 3,370 deletions.
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Change Log

## v1.1.1 (2024-02-12)

Bug fixes:

- Fixed possible segfaults at startup triggered by bad configuration.
- Fixed periodic upload trigger for heartbeat campaigns, that previously was only triggered by
further data reception.

Improvements:

- Improve error output for bad configuration, to indicate where an option is missing or incorrect.
- Upgraded GitHub actions to support Node v20, as Node v16 is now EOL.
- Fixed some Coverity check regressions.
- Removed unsupported 'Geohash' feature.
- Corrected cleanup instructions in guides.
- Build Boost from source with `-fPIC` to enable linkage in a shared library.

## v1.1.0 (2023-11-26)

Features:
Expand Down
28 changes: 8 additions & 20 deletions 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.1.0)
project(iotfleetwise VERSION 1.1.1)

# FWE uses C++14 for compatibility reasons with Automotive middlewares (Adaptive AUTOSAR, ROS2)
# Note: When built with FWE_FEATURE_ROS2, colcon will override these settings
Expand All @@ -25,10 +25,10 @@ option(FWE_SECURITY_COMPILE_FLAGS "Add security related compile options" OFF)
option(FWE_AWS_SDK_SHARED_LIBS "Use AWS SDK shared libs. Needs to be set to the same value of BUILD_SHARED_LIBS that the SDK was compiled with." OFF)
option(FWE_AWS_SDK_EXTRA_LIBS "Extra libs required to link with the AWS SDK. When FWE_STATIC_LINK is ON, setting this to ON will automatically find the standard libs. Can be a space-separated list of libs." ON)
option(FWE_FEATURE_GREENGRASSV2 "Enable Greengrass connection module" OFF)
option(FWE_FEATURE_CUSTOM_DATA_SOURCE "Include the custom data source interface" OFF)
option(FWE_FEATURE_IWAVE_GPS "Include the IWave GPS example for a custom data source" OFF)
option(FWE_FEATURE_EXTERNAL_GPS "Include the external GPS example for a custom data source" OFF)
option(FWE_FEATURE_AAOS_VHAL "Include the Android Automotive VHAL example for a custom data source" OFF)
option(FWE_FEATURE_CUSTOM_DATA_SOURCE "Include the custom data source interface, which uses CAN signals to model arbitary signal sources" OFF)
option(FWE_FEATURE_IWAVE_GPS "Include the IWave GPS example for a custom data source (implies FWE_FEATURE_CUSTOM_DATA_SOURCE)" OFF)
option(FWE_FEATURE_EXTERNAL_GPS "Include the external GPS example for a custom data source (implies FWE_FEATURE_CUSTOM_DATA_SOURCE)" OFF)
option(FWE_FEATURE_AAOS_VHAL "Include the Android Automotive VHAL example for a custom data source (implies FWE_FEATURE_CUSTOM_DATA_SOURCE)" OFF)
option(FWE_FEATURE_VISION_SYSTEM_DATA "Include support for vision-system-data sources" OFF)
option(FWE_FEATURE_ROS2 "Include support for ROS2 as a vision-system-data source. Implies FWE_FEATURE_VISION_SYSTEM_DATA." OFF)
option(FWE_BUILD_EXECUTABLE "Build the executable, otherwise build a library" ON)
Expand Down Expand Up @@ -95,13 +95,14 @@ configure_file(src/IoTFleetWiseVersion.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/IoTFle

# Protobuf
find_package(Protobuf REQUIRED)
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS
set(PROTO_FILES
interfaces/protobuf/schemas/cloudToEdge/common_types.proto
interfaces/protobuf/schemas/cloudToEdge/collection_schemes.proto
interfaces/protobuf/schemas/cloudToEdge/decoder_manifest.proto
interfaces/protobuf/schemas/edgeToCloud/checkin.proto
interfaces/protobuf/schemas/edgeToCloud/vehicle_data.proto
)
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})
add_library(fwe-proto OBJECT
${PROTO_SRCS}
${PROTO_HDRS}
Expand Down Expand Up @@ -131,35 +132,25 @@ set(HEADER_FILES
src/CollectionInspectionWorkerThread.h
src/CollectionSchemeIngestion.h
src/CollectionSchemeIngestionList.h
src/CollectionSchemeManagementListener.h
src/CollectionSchemeManager.h
src/ConsoleLogger.h
src/CPUUsageInfo.h
src/DataReduction.h
src/DataSenderManager.h
src/DataSenderManagerWorkerThread.h
src/DataSenderProtoWriter.h
src/DecoderManifestIngestion.h
src/EnumUtility.h
src/EventTypes.h
src/ExternalCANDataSource.h
src/GeohashFunctionNode.h
src/Geohash.h
src/GeohashInfo.h
src/IActiveCollectionSchemesListener.h
src/IActiveConditionProcessor.h
src/IActiveDecoderDictionaryListener.h
src/ICollectionScheme.h
src/ICollectionSchemeList.h
src/ICollectionSchemeManager.h
src/IConnectionTypes.h
src/IConnectivityChannel.h
src/IConnectivityModule.h
src/IDataReadyToPublishListener.h
src/IDecoderDictionary.h
src/IDecoderManifest.h
src/ILogger.h
src/InspectionEventListener.h
src/IoTFleetWiseConfig.h
src/IoTFleetWiseEngine.h
src/IoTFleetWiseVersion.h
Expand Down Expand Up @@ -219,8 +210,6 @@ set(SRC_FILES
src/DecoderDictionaryExtractor.cpp
src/DecoderManifestIngestion.cpp
src/ExternalCANDataSource.cpp
src/Geohash.cpp
src/GeohashFunctionNode.cpp
src/InspectionMatrixExtractor.cpp
src/IoTFleetWiseConfig.cpp
src/IoTFleetWiseEngine.cpp
Expand Down Expand Up @@ -260,8 +249,6 @@ set(TEST_FILES
test/unit/DataSenderProtoWriterTest.cpp
test/unit/DecoderDictionaryExtractorTest.cpp
test/unit/ExternalCANDataSourceTest.cpp
test/unit/GeohashFunctionNodeTest.cpp
test/unit/GeohashTest.cpp
test/unit/InspectionMatrixExtractorTest.cpp
test/unit/IoTFleetWiseConfigTest.cpp
test/unit/IoTFleetWiseEngineTest.cpp
Expand Down Expand Up @@ -564,6 +551,7 @@ if(${BUILD_TESTING})
src/ClockHandler.cpp
src/RawDataManager.cpp
src/ConsoleLogger.cpp
src/IoTFleetWiseConfig.cpp
test/unit/support/main.cpp
)
target_include_directories(ROS2DataSourceTest PUBLIC
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ information.
- [GoogleTest: v1.10.0](https://github.com/google/googletest)
- [Google Benchmark: v1.6.1](https://github.com/google/benchmark)
- [Protobuf: v3.21.12](https://github.com/protocolbuffers/protobuf)
- [Boost: v1.71.1](https://github.com/boostorg/boost)
- [Boost: v1.78.0](https://github.com/boostorg/boost)
- [JsonCpp: v1.9.5](https://github.com/open-source-parsers/jsoncpp)
- [Snappy: v1.1.8](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 @@ -248,7 +248,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------

** Boost: v1.71.1 - https://github.com/boostorg/boost
** Boost: v1.78.0 - https://github.com/boostorg/boost

Boost Software License - Version 1.0 - August 17th, 2003

Expand Down
1 change: 1 addition & 0 deletions cmake/doxygen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ if(DOXYGEN_FOUND)
set(DOXYGEN_TOC_INCLUDE_HEADINGS 5)
set(DOXYGEN_UML_LOOK YES)
set(DOXYGEN_EXCLUDE_PATTERNS "*.md")
set(DOXYGEN_DOT_GRAPH_MAX_NODES 100)

foreach(directive FWE_FEATURE_VISION_SYSTEM_DATA FWE_FEATURE_ROS2)
if(${directive})
Expand Down
1 change: 0 additions & 1 deletion configuration/static-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"internalParameters": {
"readyToPublishDataBufferSize": 10000,
"systemWideLogLevel": "Trace",
"dataReductionProbabilityDisabled": false,
"maximumAwsSdkHeapMemoryBytes": 10000000
},
"publishToCloudParameters": {
Expand Down
11 changes: 5 additions & 6 deletions docs/custom-data-source.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,11 @@ if(mIWaveGpsSource->init(
mIWaveGpsSource->connect()
)
{
if ( !mCollectionSchemeManagerPtr->subscribeListener(
static_cast<IActiveDecoderDictionaryListener *>( mIWaveGpsSource.get() ) ) )
{
FWE_LOG_ERROR(" Failed to register the IWaveGps to the CollectionScheme Manager");
return false;
}
mCollectionSchemeManagerPtr->subscribeToActiveDecoderDictionaryChange(
std::bind( &IWaveGpsSource::onChangeOfActiveDictionary,
mIWaveGpsSource.get(),
std::placeholders::_1,
std::placeholders::_2 ) );
mIWaveGpsSource->start();
}
```
Expand Down
23 changes: 13 additions & 10 deletions docs/dev-guide/edge-agent-dev-guide-nxp-s32g.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,17 @@ mkdir -p ~/aws-iot-fleetwise-deploy \
## Clean up
Run the following _on the development machine_ to clean up resources created by the `provision.sh`
and `demo.sh` scripts. **Note:** The Amazon Timestream resources are not deleted.
1. Run the following _on the development machine_ to clean up resources created by the
`provision.sh` and `demo.sh` scripts. **Note:** The Amazon Timestream resources are not deleted.
```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-s32g \
--region us-east-1 \
--only-clean-up
```
```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& ./clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-s32g \
--region us-east-1 \
--only-clean-up
```
1. Delete the CloudFormation stack for your development machine, which by default is called `fwdev`:
https://us-east-1.console.aws.amazon.com/cloudformation/home
23 changes: 13 additions & 10 deletions docs/dev-guide/edge-agent-dev-guide-renesas-rcar-s4.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,17 @@ mkdir -p ~/aws-iot-fleetwise-deploy \

## Clean up

Run the following _on the development machine_ to clean up resources created by the `provision.sh`
and `demo.sh` scripts. **Note:** The Amazon Timestream resources are not deleted.
1. Run the following _on the development machine_ to clean up resources created by the
`provision.sh` and `demo.sh` scripts. **Note:** The Amazon Timestream resources are not deleted.

```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-rcars4 \
--region us-east-1 \
--only-clean-up
```
```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& ./clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-rcars4 \
--region us-east-1 \
--only-clean-up
```

1. Delete the CloudFormation stack for your development machine, which by default is called `fwdev`:
https://us-east-1.console.aws.amazon.com/cloudformation/home
100 changes: 48 additions & 52 deletions docs/dev-guide/edge-agent-dev-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,18 +228,16 @@ collect data from it.

## Clean up resources

Copy and paste the following commands to AWS CloudShell to clean up resources created by the
`provision.sh` and `demo.sh` scripts. **Note:** The Amazon Timestream and S3 resources are not
deleted.

```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo \
--region us-east-1 \
--only-clean-up
```
1. Copy and paste the following commands to AWS CloudShell to clean up resources created by the
`demo.sh` script. **Note:** The Amazon Timestream and S3 resources are not deleted.

```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& ./clean-up.sh
```

1. Delete the CloudFormation stack created earlier, which by default is called `fwdemo`:
https://us-east-1.console.aws.amazon.com/cloudformation/home

# Getting started guide

Expand Down Expand Up @@ -541,17 +539,21 @@ collect data from it.

### Clean up

Run the following _on the development machine_ to clean up resources created by the `provision.sh`
and `demo.sh` scripts. **Note:** The Amazon Timestream and S3 resources are not deleted.
1. Run the following _on the development machine_ to clean up resources created by the
`provision.sh` and `demo.sh` scripts. **Note:** The Amazon Timestream and S3 resources are not
deleted.

```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-ec2 \
--region us-east-1 \
--only-clean-up
```
```bash
cd ~/aws-iot-fleetwise-edge/tools/cloud \
&& ./clean-up.sh \
&& ../provision.sh \
--vehicle-name fwdemo-ec2 \
--region us-east-1 \
--only-clean-up
```

1. Delete the CloudFormation stack for your development machine, which by default is called `fwdev`:
https://us-east-1.console.aws.amazon.com/cloudformation/home

## Getting started on a NXP S32G board

Expand Down Expand Up @@ -777,7 +779,6 @@ DataSenderManagerWorkerThread
DataSenderProtoWriter
DecoderDictionaryExtractor
DecoderManifestIngestion
Geohash
InspectionMatrixExtractor
OBDDataDecoder
RawDataManager
Expand Down Expand Up @@ -815,7 +816,6 @@ CANDataSource
CollectionInspectionEngine
CollectionInspectionWorkerThread
ExternalCANDataSource
GeohashFunctionNode
OBDOverCANECU
OBDOverCANModule
ROS2DataSource
Expand Down Expand Up @@ -929,46 +929,43 @@ FWE implements a concurrent and event-based multithreading system.

## Data Models

FWE defines four schemas that describe the communication with the Cloud Control and Data Plane
services.
FWE defines schemas that describe the communication with the Cloud Control and Data Plane services.

All the payloads exchanged between FWE and the cloud services are serialized in a Protobuff format.
All the payloads exchanged between FWE and the cloud services are serialized in a Protobuf format.

### Device to Cloud communication

FWE sends two artifacts with the Cloud services:

**Check-in Information**
FWE sends the following artifacts to the Cloud services:

This check-in information consists of data collection schemes and decoder manifest Amazon Resource
Name (ARN) that are active in FWE at a given time point. This check-in message is send regularly at
a configurable frequency to the cloud services. Refer to
[checkin.proto](../../interfaces/protobuf/schemas/edgeToCloud/checkin.proto).
- **Check-in Information:** This check-in information consists of data collection schemes and
decoder manifest Amazon Resource Name (ARN) that are active in FWE at a given time point. This
check-in message is send regularly at a configurable frequency to the cloud services. Refer to
[checkin.proto](../../interfaces/protobuf/schemas/edgeToCloud/checkin.proto).

**Data Snapshot Information**
- **Data Snapshot Information**

**_Telemetry Data_** This message is sent conditionally to the cloud data plane services once one or
more inspection rule is met. For telemetry data such as CAN data, FWE sends it in an MQTT packet to
the cloud. Refer to
[vehicle_data.proto](../../interfaces/protobuf/schemas/edgeToCloud/vehicle_data.proto).
- **Telemetry Data:** This message is sent conditionally to the cloud data plane services once one
or more inspection rule is met. For telemetry data such as CAN data, FWE sends it in an MQTT
packet to the cloud. Refer to
[vehicle_data.proto](../../interfaces/protobuf/schemas/edgeToCloud/vehicle_data.proto).

**_Vision System Data_** In Vision System data use case, FWE serializes each ROS2 message into CDR
format and packed them in Amazon ION file format and directly upload to S3. Refer to
[vision_system_data.isl](../../interfaces/protobuf/schemas/edgeToCloud/vision_system_data.isl).
- **Vision System Data:** In Vision System data use case, FWE serializes each ROS2 message into
CDR format and packed them in Amazon ION file format and directly upload to S3. Refer to
[vision_system_data.isl](../../interfaces/protobuf/schemas/edgeToCloud/vision_system_data.isl).

### Cloud to Device communication

The Cloud Control plane services publish to FWE dedicated MQTT Topic the following two artifacts:
The Cloud Control plane services publish to FWE dedicated MQTT Topic the following artifacts:

**Decoder Manifest:** This artifact describes the Vehicle Network Interfaces that the user defined.
The description includes the semantics of each of the Network interface traffic to be inspected
including the signal decoding rules. Refer to
[decoder_manifest.proto](../../interfaces/protobuf/schemas/cloudToEdge/decoder_manifest.proto).
- **Decoder Manifest:** This artifact describes the Vehicle Network Interfaces that the user
defined. The description includes the semantics of each of the Network interface traffic to be
inspected including the signal decoding rules. Refer to
[decoder_manifest.proto](../../interfaces/protobuf/schemas/cloudToEdge/decoder_manifest.proto).

**Collection Scheme:** This artifact describes effectively the inspection rules, that FWE will apply
on the network traffic it receives. Using the decoder manifest, the Inspection module will apply the
rules defined in the collection schemes to generate data snapshots. Refer to
[collection_schemes.proto](../../interfaces/protobuf/schemas/cloudToEdge/collection_schemes.proto).
- **Collection Scheme:** This artifact describes effectively the inspection rules, that FWE will
apply on the network traffic it receives. Using the decoder manifest, the Inspection module will
apply the rules defined in the collection schemes to generate data snapshots. Refer to
[collection_schemes.proto](../../interfaces/protobuf/schemas/cloudToEdge/collection_schemes.proto).

## Data Persistency

Expand Down Expand Up @@ -1063,7 +1060,6 @@ described below in the configuration section. Each log entry includes the follow
| | systemWideLogLevel | Sets logging level severity: `Trace`, `Info`, `Warning`, `Error` | string |
| | logColor | Whether logs should be colored: `Auto`, `Yes`, `No`. Default to `Auto`, meaning FWE will try to detect whether colored output is supported (for example when connected to a tty) | string |
| | maximumAwsSdkHeapMemoryBytes | The maximum size of AWS SDK heap memory | integer |
| | 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 |
Expand Down
Loading

0 comments on commit f4e8595

Please sign in to comment.