Coder Social home page Coder Social logo

aldl's Introduction

## overview

this is a program designed to manage aldl datastreams from the 8192 baud series
of OBD-I GM ECMs under gnu/linux based operating systems, but best tested with
EE mask LT1 ecms.

## goals

* adaptable to any ecm that adheres to the standard 8192 baud aldl protocol
* low cpu use for low power devices such as raspberry pi and netbooks
* easy configuration that's easily adapted from other formats
* portable to at least ARM and x86
* highest throughput possible but with adjustable throttling
* highest connection stability and reconnect rate possible
* transparent and stupid simple api
* very easy to make plugins thread-safe
* fast and easy automatic datalogging to csv format
* simple ncurses interface for raspberry pi based dashboard

## instructions

to build and run it, you'll need to:

* install libftdi and libncurses.

if you run debian/ubuntu/whatever, then: apt-get install ncurses-dev libftdi-dev

* 'rmmod ftdi_sio'  or blacklist it.

this removes the the in-kernel ftdi driver.  this program uses libftdi for raw
access to the usb-serial adaptor, and will not work while ftdi_sio is loaded.

there is a script in extras/ that might help with debian-like systems

* make sure your user has permissions to read/write usb devices.

* configuration.  see below.

* run it! './aldl-ftdi'

by default, it only uses the ncurses display interface. the default modules
that run are also specified in aldl.conf.

if you want the datalogger and the display interface: ./aldl-ftdi datalogger

## configuration

the 'make install' command places config files in /etc/aldl by default..

they should be edited before running the program...

* aldl.conf: the root config file, specifies locations of the other config
files, as well as configures the serial driver, and a few timing options.
* lt1.conf: this is a sample definition file for an LT1 F-body or B-Body.
* datalogger.conf: configures the datalogger, including location and naming or
the logs themselves

the only thing you should have to change to get this program up and running on
an LT1 is identifying your ftdi device somehow in aldl.conf.

there are instructions at the bottom of this file on various ways to do that.
but briefly, if you run lsusb, and you find your device, it'll be like:

Bus 001 Device 003: ID 0424:ec00 Some FTDI Device

there is also a command, 'aldl-ftdi devices' which may give you more detailed
information about the ftdi devices on your system, or may not.  poorly tested.

then look in aldl.conf. there's a PORT= line. for this example, use one of the
following PORT strings:

PORT=i:0x424:0xEC00 (preferred)
PORT=D:001/003

check out config.h before compile if you're interested in 'tweaking' anything.

## contents

acquire.c:
  This object contains one event loop, that drives
  the data aquisition thread.  Maintaining connection
  statefulness and retrieving all data is done here.

aldlcomm.c:
  Most ALDL communications protocol functions are
  contained in this object.  Serial handlers that
  are not interface-specific are also contained here.
  No actual parsing of request replies are here,
  see aldldata.c.

aldldata.c:
  This object contains all of the functions used for
  structuring and parsing the ALDL data structures,
  including locking and serializing of record retr.

error.c:
  Error handing routines.

loadconfig.c:
  This object contains configuration file loading
  routines, all based around two symbols, the equals
  sign and the double quote.

main.c:
  Initialize everything, and spawn all threads.

serio-dummy.c:
  A dummy serial handler object that pretends to be
  a fake LT1 (EE) ECM and just send random garbage
  (00-FF) as a datastream.

serio-ftdi.c:
  Primary serial driver, uses libftdi for raw usb
  access to ftdi serial adaptors.  Reccommended.

useful.c:
  Useful but generic functions.

aldl-io.h:
  Include this file.  All useful functions are
  declared here.

aldl-types.h:
  All structure formats and enumerations that are
  useful are contained in this file.

config.h:
  Static #define's that apply to the entire program.

modules/*: various output modules which can be executed by main.c to actually
           do stuff with the data, incl. display and logging.

analyzer/*: a c-based offline log analyzer that parses groups of logs for blm
            cell trims, knock counts, wideband afr, etc. using thresholds to
            try to avoid bad data.

aldl's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.