notes.md 4.2 KB

Popufare Notes

This is a scratch space to write down some notes about the system.

See PopuFare-Documentation.md for a more thorough explanation.

  • Location:
  • Description:
  • Mailboxes:
  • Server Connections:

There is a central server that maintains a database of passes, vehicle positions and administrator logins. Each deployed bus unit has a collection of processes that maintain a local copy of the database and communicate back to the central server to both push updates and receive updates.

The bus units (BU) have a local communication pub/sub system. The BUs also have various processes connected to the central servers maintenance processes via an SSH tunnel through various ports.

BU Mailboxes

MAILBOX_BILLING_LOG MAILBOX_BILL_STATUS MAILBOX_BROADCAST MAILBOX_DRIVER_NOTIFY MAILBOX_DRIVER_STATUS
MAILBOX_ERROR MAILBOX_EXIT MAILBOX_FLUSH_PASSES MAILBOX_GPS_STATUS MAILBOX_HELLO
MAILBOX_HUP MAILBOX_NAME_MAX MAILBOX_NEXT_STOP MAILBOX_PADDLE_ACK MAILBOX_PASS_STATUS
MAILBOX_PING MAILBOX_PIU_MESSAGE MAILBOX_PONG MAILBOX_PREV_STOP MAILBOX_RULE_CALL
MAILBOX_SET_PADDLE MAILBOX_STATUS_REQUEST MAILBOX_STOP_STATUS MAILBOX_SUBSCRIBE MAILBOX_TOKEN_MAG
MAILBOX_TOKEN_RFID MAILBOX_UNSUBSCRIBE MAILBOX_UPDATE_PASSES MAILBOX_VAULT_DROP MAILBOX_WIRETAP

The 'system' mailboxes are:

  • MAILBOX_GPS_STATUS
  • MAILBOX_STOP_STATUS
  • MAILBOX_DRIVER_STATUS
  • MAILBOX_PASS_STATUS
  • MAILBOX_BILL_STATUS
  • MAILBOX_EXIT
  • MAILBOX_HUP
  • MAILBOX_PING

BU Peripheral Management

The linux board communicates through the serial channels to microcontrollers that control the various peripherals.

There are four (4) serial communication lines:

  • CONSOLE_PORT - for direct console output
  • DRIVER_UI_PORT - communication to the microcontroller managing the touchscreen, GPS, vault, clock
  • PASSENGER_UI_PORT - communication to the microcontroller manaing the PIU LCD, RFID, magstripe
  • MODEM_PORT - ppp connection to the GPRS modem for connectivity

The only BU processes that are in 'direct' communication with the peripherals are the diu_minder and the piu_minder, both managing the appropriate peripherals listed above.

Once an event is detected (for example, a magstripe read), the appropriate process can send a message to the mailboxes that need it for processing.

ipc_server

  • Location: commhub/
  • Description: A pub/sub message intermediary that takes care of message subscriptions and dispatch

piu_minder

  • Location: PIU/
  • Description: Communicates with the Passenger Interface Unit (PIU) to display messages, beep and get messages from the PIU such as magstripe swipes or RFID reads

diu_minder

  • Location: DIU/
  • Description: Screen updates, paddle stop advancement, driver login

avls

  • Location: avls/
  • Description: GPS messages
  • Mailboxes: MAILBOX_STATUS_REQUEST
  • Server Connections: avls_server (port 2857)

paddlemgr

  • Location: avls/
  • Description: Paddle maintenance while driving

billdb

  • Location: billdb/
  • Description: Communicates with the server to update pass information

passdb

  • Location: passdb/
  • Description: Updates local pass database with local pass updates as well as pass updates received from server

passdb loads the scheme rules file (rules.scm), the RFID patterns file (xx)

scripts

There are also a variety of scripts that run to keep track of all the services that are running on the BU.

update_loop.sh

  • Location: client_scripts/
  • Description: starts client_supervisor, downloads 'firmware' updates and configuration

ppp-dialer.sh

  • Location: ppp-dialer/etc/ppp/
  • Description: setup GPRS modem, create SSH tunnel back to central server

Notes

Testing:

(from SO)

socat -d -d pty,raw,echo=0,link=/tmp/ttyTEST0 pty,raw,echo=0,link=/tmp/ttyTEST1