All Projects → famez → J1939-Framework

famez / J1939-Framework

Licence: MIT license
Framework to work with J1939 Frames used in CAN bus in bus, car and trucks industries

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
HTML
75241 projects
CMake
9771 projects

Projects that are alternatives of or similar to J1939-Framework

Cize
🔌 Continuous integration with the simplest solution
Stars: ✭ 100 (-18.7%)
Mutual labels:  travis-ci, test
can2mqtt
Bidirectional CAN-Bus to MQTT-Bridge
Stars: ✭ 39 (-68.29%)
Mutual labels:  bus, can-bus
Buildbuddy
BuildBuddy is an open source Bazel build event viewer, result store, and remote cache.
Stars: ✭ 182 (+47.97%)
Mutual labels:  protobuf, test
travis-minikube
Run minikube on Travis CI
Stars: ✭ 89 (-27.64%)
Mutual labels:  travis-ci, test
arduino-ci-script
Bash script for continuous integration of Arduino projects
Stars: ✭ 25 (-79.67%)
Mutual labels:  travis-ci, test
dextool
Suite of C/C++ tooling built on LLVM/Clang
Stars: ✭ 81 (-34.15%)
Mutual labels:  test
pronto
Clojure support for protocol buffers
Stars: ✭ 66 (-46.34%)
Mutual labels:  protobuf
pygitrepo-project
A simplified, minimal but powerful Python Git Project development workflow CLI tools.
Stars: ✭ 32 (-73.98%)
Mutual labels:  travis-ci
mongo-db-go-protobuf-tutorial
Source code for "New official MongoDB Go Driver and Google Protobuf - making them work together" article
Stars: ✭ 18 (-85.37%)
Mutual labels:  protobuf
protobuf-decoder
JavaScript-based web UI to decode ad-hoc Protobuf data
Stars: ✭ 107 (-13.01%)
Mutual labels:  protobuf
floss
Unit-testing for those hard to reach places
Stars: ✭ 26 (-78.86%)
Mutual labels:  travis-ci
apache-flink-jdbc-streaming
Sample project for Apache Flink with Streaming Engine and JDBC Sink
Stars: ✭ 22 (-82.11%)
Mutual labels:  protobuf
ccheck
A command line tool for validating Kubernetes configs with rego
Stars: ✭ 63 (-48.78%)
Mutual labels:  test
jpa-unit
JUnit extension to test javax.persistence entities
Stars: ✭ 28 (-77.24%)
Mutual labels:  test
pynvme
builds your own tests.
Stars: ✭ 139 (+13.01%)
Mutual labels:  test
colorizzar
📗 -> 📘 Change color of png keep alpha channel in php!
Stars: ✭ 27 (-78.05%)
Mutual labels:  travis-ci
flipper
Search/Recommendation engine and metainformation server for fanfiction net
Stars: ✭ 29 (-76.42%)
Mutual labels:  protobuf
mine.js
🌏 A voxel engine built with JS/TS/RS. (formerly mc.js) (maybe mine.ts? or even mine.rs?)
Stars: ✭ 282 (+129.27%)
Mutual labels:  protobuf
phoenix.webui.framework
基于WebDriver的WebUI自动化测试框架
Stars: ✭ 118 (-4.07%)
Mutual labels:  test
travis-ci-tutorial-java
Just to learn how to use travis-ci in a java project!
Stars: ✭ 38 (-69.11%)
Mutual labels:  travis-ci

Travis Build Status

J1939-Framework

Framework to work with J1939 protocol.

J1939 protocol is a standard used in different systems compliant with CAN 2.0B specification.

The framework has been developed in C++ in a Linux distribution and compiled using the GNU toolchain. No dependencies are required for the compilation of any of the projects except from SocketCan compiled in the Linux Kernel.

What can you do with J1939-Framework

  • Save can frames from the Can Bus into recordings in TRC format with BinUtils/TRCDumper.
  • Play can frames from recordings in TRC format into the Can Bus with BinUtils/TRCPlayer.
  • Convert TRC files into pcap files readable by wireshark with BinUtils/TRCToCap.
  • Dissect pcap files with wireshark and the J1939 plugin dissector (wireshark/dissector).
  • Sniff frames from the Can Bus compliant with J1939 protocol with BinUtils/j1939Sniffer.
  • Decode raw J1939 data to human readable data with BinUtils/j1939Decoder.
  • Craft your own J1939 frames and send them to the Can Bus with BinUtils/j1939Sender. The functionality can be extended with the help of bash scripts located in Scripts (some examples are listed).
  • Visualize what is going on in the Can Bus with GUI_WEB. You will be able to craft, send and visualize the frames that are flowing in the Bus as well as visualizing graphics of their content (SPNs).
  • Discover J1939 devices with BinUtils/j1939AddressMapper.
  • Simulation of the Address Claim Process with BinUtils/j1939AddrClaim.

And of course, develop!!:

  • In CAN/ folder we can find a library in C++ (libCAN.so) with methods to generate and sniff can frames with support for PeakCan and SocketCan.
  • In J1939/ folder we can find a library in C++ (libJ1939.so) to easily manipulate J1939 frames and work with the J1939 protocol. Some features are: Support of BAM protocol. A factory class in charge of generating the J1939 frames. A database loaded by the factory located in Database/frames.json with a list of the most used Application Layer frames (including the FMS protocol). Coding/Decoding DM1 (Diagnosis), FMS1 (TTS), Request and Address Claim frames. Coding/Decoding of SPNs (String, status and numeric).

Installing and compiling

Installation:

Ubuntu 18.10 or higher

sudo apt-get install libgtest-dev protobuf-compiler libprotobuf-dev libncurses-dev libwebsockets cmake
cd /usr/src/gtest
sudo env "PATH=$PATH" cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib
git clone https://github.com/open-source-parsers/jsoncpp.git

 
cd jsoncpp
git checkout 863aa36165acfdbaf22447f4934f5adc327692a0
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON 
sudo make install
cd ~
git clone https://github.com/famez/J1939-Framework.git
cd J1939-Framework
cmake . 
cmake --build .
sudo make install

Usage with SocketCan:

To make SocketCan available in your system, you should execute the following commands:

sudo apt-get install can-utils

To enable the drivers if they not enabled by default:

sudo modprobe can
sudo modprobe vcan

To generate a virtual interface for test purposes.

sudo ip link add name vcan0 type vcan

To test over vcan0.

./Scripts/gear_level.sh vcan0 | j1939Sender --silent --file Scripts/define_frames.j1939
candump vcan0

TRCPlayer

alt text

Wireshark dissector

alt text

J1939GUI

alt text

alt text

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].