-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
192 changed files
with
30,548 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
*.pyc | ||
.DS_Store | ||
.idea/ | ||
.vscode/ | ||
__pycache__/ | ||
build*/ | ||
compile_commands.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Change Log | ||
|
||
## v0.1.0 (November 29, 2021) | ||
https://s3.console.aws.amazon.com/s3/object/aws-iot-fleetwise?prefix=v0.1.0/aws-iot-fleetwise-edge.zip | ||
|
||
Features: | ||
* Initial preview release | ||
|
||
|
||
Bugfixes/Improvements: - N/A |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
|
||
cmake_minimum_required(VERSION 3.10.2) | ||
|
||
project(iotfleetwise VERSION 0.1.0) | ||
|
||
# Due to autosar rules, AWS IoT FleetWise Edge will use C++11 | ||
set(CMAKE_CXX_STANDARD 11) | ||
set(CMAKE_CXX_STANDARD_REQUIRED True) | ||
|
||
message(STATUS "Hello from the AWS IoT FleetWise build system!") | ||
|
||
# Print out the compile commands which is useful for IDEs | ||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | ||
|
||
# All AWS IoT FleetWise build and configure options are prefaced with an FWE_ to set | ||
# them apart from other build options. | ||
option(FWE_STATIC_LINK "Statically link external libs" OFF) | ||
option(FWE_CODE_COVERAGE "Enables code coverage" OFF) | ||
|
||
option(FWE_BUILD_DOC "Build documentation" ON) | ||
option(FWE_STRIP_SYMBOLS "Strips symbols from output binaries" OFF) | ||
option(FWE_FEATURE_CAMERA "Enable Camera Data Collection feature" OFF) | ||
|
||
option(FWE_SECURITY_COMPILE_FLAGS "Add security related compile options" OFF) | ||
|
||
# Define the default build type | ||
if(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE Release) | ||
endif() | ||
|
||
include(cmake/compiler_gcc.cmake) | ||
include(cmake/protobufs.cmake) | ||
if(FWE_FEATURE_CAMERA) | ||
add_compile_options("-DFWE_FEATURE_CAMERA") | ||
include(cmake/ddsidls.cmake) | ||
endif() | ||
include(cmake/snappy.cmake) | ||
|
||
|
||
|
||
|
||
if(FWE_BUILD_DOC) | ||
include(cmake/doxygen.cmake) | ||
endif() | ||
|
||
add_subdirectory(src) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
Amazon Software License 1.0 | ||
|
||
This Amazon Software License ("License") governs your use, reproduction, and | ||
distribution of the accompanying software as specified below. | ||
|
||
1. Definitions | ||
|
||
"Licensor" means any person or entity that distributes its Work. | ||
|
||
"Software" means the original work of authorship made available under this | ||
License. | ||
|
||
"Work" means the Software and any additions to or derivative works of the | ||
Software that are made available under this License. | ||
|
||
The terms "reproduce," "reproduction," "derivative works," and | ||
"distribution" have the meaning as provided under U.S. copyright law; | ||
provided, however, that for the purposes of this License, derivative works | ||
shall not include works that remain separable from, or merely link (or bind | ||
by name) to the interfaces of, the Work. | ||
|
||
Works, including the Software, are "made available" under this License by | ||
including in or with the Work either (a) a copyright notice referencing the | ||
applicability of this License to the Work, or (b) a copy of this License. | ||
|
||
2. License Grants | ||
|
||
2.1 Copyright Grant. Subject to the terms and conditions of this License, | ||
each Licensor grants to you a perpetual, worldwide, non-exclusive, | ||
royalty-free, copyright license to reproduce, prepare derivative works of, | ||
publicly display, publicly perform, sublicense and distribute its Work and | ||
any resulting derivative works in any form. | ||
|
||
2.2 Patent Grant. Subject to the terms and conditions of this License, each | ||
Licensor grants to you a perpetual, worldwide, non-exclusive, royalty-free | ||
patent license to make, have made, use, sell, offer for sale, import, and | ||
otherwise transfer its Work, in whole or in part. The foregoing license | ||
applies only to the patent claims licensable by Licensor that would be | ||
infringed by Licensor's Work (or portion thereof) individually and | ||
excluding any combinations with any other materials or technology. | ||
|
||
3. Limitations | ||
|
||
3.1 Redistribution. You may reproduce or distribute the Work only if | ||
(a) you do so under this License, (b) you include a complete copy of this | ||
License with your distribution, and (c) you retain without modification | ||
any copyright, patent, trademark, or attribution notices that are present | ||
in the Work. | ||
|
||
3.2 Derivative Works. You may specify that additional or different terms | ||
apply to the use, reproduction, and distribution of your derivative works | ||
of the Work ("Your Terms") only if (a) Your Terms provide that the use | ||
limitation in Section 3.3 applies to your derivative works, and (b) you | ||
identify the specific derivative works that are subject to Your Terms. | ||
Notwithstanding Your Terms, this License (including the redistribution | ||
requirements in Section 3.1) will continue to apply to the Work itself. | ||
|
||
3.3 Use Limitation. The Work and any derivative works thereof only may be | ||
used or intended for use with the web services, computing platforms or | ||
applications provided by Amazon.com, Inc. or its affiliates, including | ||
Amazon Web Services, Inc. | ||
|
||
3.4 Patent Claims. If you bring or threaten to bring a patent claim against | ||
any Licensor (including any claim, cross-claim or counterclaim in a | ||
lawsuit) to enforce any patents that you allege are infringed by any Work, | ||
then your rights under this License from such Licensor (including the | ||
grants in Sections 2.1 and 2.2) will terminate immediately. | ||
|
||
3.5 Trademarks. This License does not grant any rights to use any | ||
Licensor's or its affiliates' names, logos, or trademarks, except as | ||
necessary to reproduce the notices described in this License. | ||
|
||
3.6 Termination. If you violate any term of this License, then your rights | ||
under this License (including the grants in Sections 2.1 and 2.2) will | ||
terminate immediately. | ||
|
||
4. Disclaimer of Warranty. | ||
|
||
THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, | ||
EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF | ||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR | ||
NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER | ||
THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN | ||
IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU. | ||
|
||
5. Limitation of Liability. | ||
|
||
EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL | ||
THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE | ||
SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, | ||
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR | ||
RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK (INCLUDING | ||
BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, LOST PROFITS | ||
OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER COMM ERCIAL DAMAGES | ||
OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF | ||
SUCH DAMAGES. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
AWS IoT FleetWise | ||
Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
AWS IoT FleetWise Edge | ||
====================== | ||
|
||
AWS IoT FleetWise is a service that makes it easy for Automotive OEMs to collect, store, organize, and monitor data from vehicles at scale. AWS IoT FleetWise Edge provides C++ libraries that allow you to run the application on your vehicle. You can then use AWS IoT FleetWise's pre-configured analytic capabilities to process the collected data, gain insights about the vehicle's health and use the service’s visual interface to help diagnose and troubleshoot potential issues with your vehicles. Furthermore, AWS IoT FleetWise's capability to collect ECU data and store them on cloud databases enables you to utilize different AWS services (Analytics Services, ML, etc.) to develop novel use-cases that augment your existing vehicle functionality. | ||
|
||
In particular, AWS IoT FleetWise can leverage fleet data (Big Data) and enable you to develop use cases that create business value, for example: improve electric vehicle range estimation, optimized battery life charging, optimized vehicle routing, etc. AWS IoT FleetWise can be extended to utilize cloud computing capabilities for use-cases such as pet/child detection, Driver Monitoring System applications, Predictive Diagnostics, electric vehicle's battery cells outlier detection, etc. | ||
|
||
You can use the included sample C++ application to learn more about AWS IoT FleetWise Edge interfaces and to test interactions before integration. | ||
|
||
|
||
|
||
## AWS IoT FleetWise Architecture | ||
|
||
AWS IoT FleetWise is an AWS service that enables automakers to collect, store, organize, and monitor data from vehicles. Automakers need the ability to connect remotely to their fleet of vehicles and collect vehicle ECU/sensor data. AWS IoT FleetWise can be used by OEM engineers and data scientists to build vehicle models that can be used to build custom data collection schemes. These data collection schemes enables the OEM to optimize the data collection process by defining what signals to collect, how often to collect them, and most importantly the trigger conditions ("events") that enable the collection process. | ||
|
||
Customers can define the data collection schemes to trigger based on a schedule or on specific conditions such as, but not limited to: 1. Ambient temperature dropping to below 0 degree or 2. Vehicle crosses state lines or 3. Active diagnostic trouble codes. These conditions are sent to the vehicle through a set of documents called data collection schemes. In summary, AWS IoT FleetWise Edge collects the data of interest according to the data collection schemes and decoding rules as specified by the OEM on the [AWS IoT FleetWise Console](https://aws.amazon.com/iot-fleetwise/). | ||
|
||
The following diagram illustrates a high-level architecture of the system. | ||
|
||
|
||
|
||
|
||
|
||
<img src="./assets/iot-FleetWise-architecture.png" /> | ||
|
||
|
||
|
||
**AWS IoT FleetWise Edge receives two documents:** | ||
|
||
1. *Decoder Manifest* - this document describes how signals are collected from the vehicle, and will include details such as, but not limited to: Bus ID, network name, decoding information, etc. | ||
|
||
2. *Data Collection Schemes* - this document describes what signals to collect. It also describes the condition logic that defines the enablement of the trigger logic that allows these signals to be collected, for example, when Vehicle Speed > 100 km/Hr and Driver Seatbelt is Off and Ambient Temperature < 0 degree C. | ||
|
||
## AWS IoT FleetWise Edge Deployment & **Supported Platforms** | ||
|
||
AWS IoT FleetWise Edge functional flexibility and its use of dynamic memory allocation means that it cannot reside in the real-time safe vehicle ECUs. AWS IoT FleetWise Edge must also be connected to the internet and preferably has access to a “good” portion of vehicle ECU data. OEMs have the flexibility to decide where they can deploy AWS IoT FleetWise Edge binary. Possible options include (if present): | ||
|
||
1. Vehicle Gateway such as the [NXP S32G](https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/s32g-vehicle-network-processors/s32g2-processors-for-vehicle-networking:S32G2) | ||
2. Vehicle Head-Unit | ||
3. Vehicle’s High Performance Computer | ||
4. Telecommunication Control Unit | ||
|
||
|
||
|
||
AWS IoT FleetWise Edge was built and tested on 64-bit architectures. It has been tested on both ARM and X86 multicore based machines, with a Linux Kernel version of 5.4 and above. The kernel module for ISO-TP (can-isotp ) would need to be installed in addition for Kernels below 5.10. | ||
|
||
AWS IoT FleetWise Edge was also tested on an EC2 Instance with the following details: | ||
|
||
- **Platform**: Ubuntu | ||
- **Platform** **Details**: Linux/UNIX | ||
- **Server**: AmazonEC2 | ||
- **InstanceType**: c4.8xlarge | ||
- **AvailabilityZone**: us-east-1 | ||
- **Architecture**: x86_64 | ||
- **CpuOptions**: {'CoreCount': 18, 'ThreadsPerCore': 2} | ||
- **AMI name**: ubuntu-bionic-18.04-amd64-server-20210224 | ||
|
||
|
||
|
||
## AWS IoT FleetWise Client-Server Communication | ||
|
||
AWS IoT FleetWise Edge relies on [AWS IoT C++ Device SDK](https://github.com/aws/aws-iot-device-sdk-cpp-v2) to send and receive data from and to AWS IoT FleetWise Server. All data sent to AWS IoT is sent over an encrypted [TLS connection](https://docs.aws.amazon.com/iot/latest/developerguide/data-encryption.html) using MQTT, HTTPS, and WebSocket protocols, making it secure by default while in transit. AWS IoT FleetWise uses MQTT quality of service zero (QoS = 0). | ||
|
||
|
||
|
||
## Security | ||
|
||
See [SECURITY](./SECURITY.md) for more information | ||
|
||
|
||
|
||
## License Summary and Build Dependencies | ||
AWS IoT FleetWise Edge depends on the following open source libraries. Refer to the corresponding links for more information. | ||
|
||
* [AWS IoT Device SDK for C++ v2 version: v1.10.9](https://github.com/aws/aws-iot-device-sdk-cpp-v2) | ||
* [GoogleTest version: release-1.10.0](https://github.com/google/googletest) | ||
* [Protobuf version: 3.9.2](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) | ||
* [Fast-DDS version: 2.3.3](https://github.com/eProsima/Fast-DDS.git) | ||
* [Fast-CDR version: v1.0.21](https://github.com/eProsima/Fast-CDR.git) | ||
* [Foonathan memory vendor version: v1.1.0](https://github.com/eProsima/foonathan_memory_vendor.git) | ||
* [Foonathan memory version: v0.7](https://github.com/foonathan/memory) | ||
* [tinyxml2 version: 6.0.0](https://github.com/leethomason/tinyxml2.git) | ||
|
||
See [LICENSE](./LICENSE) for more information. | ||
|
||
|
||
|
||
## Getting Help | ||
|
||
[Contact AWS Support](https://aws.amazon.com/contact-us/) if you have any technical questions about AWS IoT FleetWise Edge. | ||
|
||
|
||
|
||
## Resources | ||
|
||
The following documents provide more information about AWS IoT FleetWise Edge. | ||
|
||
1. [Change Log](./CHANGELOG.md) provides a summary of feature enhancements, updates, and resolved and known issues. | ||
2. [AWS IoT FleetWise Edge Offboarding](./assets/AWS-IoTFleetWiseOffboarding.md) provides a summary of the steps needed on the Client side to off board from the service. | ||
|
||
For more information on the below topics please refer to [AWS_IoT_FleetWise_Edge_Agent_Developer_Guide.pdf](https://console.aws.amazon.com/s3/object/aws-iot-fleetwise?prefix=latest%2FAWS_IoT_FleetWise_Edge_Agent_Developer_Guide.pdf) | ||
|
||
* AWS IoT FleetWise Getting Started. | ||
* Deploy AWS IoT FleetWise demo. | ||
* AWS IoT FleetWise Edge Architecture. | ||
* AWS IoT FleetWise CloudFormation Quick Start Guide. | ||
* Running AWS IoT FleetWise Edge on the NXPS32G. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
## Reporting a Vulnerability | ||
|
||
If you discover a potential security issue in this project, we ask that you notify AWS/Amazon Security | ||
via our [vulnerability reporting page](https://aws.amazon.com/security/vulnerability-reporting/) or directly via email to aws-security@amazon.com. |
Oops, something went wrong.