Skip to content

Commit

Permalink
Release v0.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
hefroy committed Feb 8, 2022
1 parent 96a67df commit 8b1e13d
Show file tree
Hide file tree
Showing 192 changed files with 30,548 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.pyc
.DS_Store
.idea/
.vscode/
__pycache__/
build*/
compile_commands.json
10 changes: 10 additions & 0 deletions CHANGELOG.md
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
47 changes: 47 additions & 0 deletions CMakeLists.txt
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)
96 changes: 96 additions & 0 deletions LICENSE
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.
2 changes: 2 additions & 0 deletions NOTICE
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.
111 changes: 111 additions & 0 deletions README.md
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.

4 changes: 4 additions & 0 deletions SECURITY.md
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.
Loading

0 comments on commit 8b1e13d

Please sign in to comment.