Armando47/Software
Modem
lo strato modem va dalle porte fisiche (l'ADC, il DAC e i GPIO) al flusso di simboli discriminati
Modalita GPIO
Armando ha 8 GPIO che possono lavorare nelle seguenti modalita'
R/C
- http://www.aerodesign.de/peter/2000/PCM/PCM_PPM_eng.html
- http://www.pololu.com/blog/17/servo-control-interface-in-detail
CH | porta | descrizione |
---|---|---|
1 | GPIO0 | |
2 | GPIO0 | |
3 | ANALOG0/PWM0 | |
4 | ANALOG1/PWM1 | |
5 | ANALOG2/PWM2 | |
6 | ANALOG3/PWM3 | |
7 | ||
8 |
GPIO0 e GPIO1 sono ingressi logici
ANALOG0 - ANALOG3 sono ingressi analogici (0-vdd)
armando va in trasmissione (setta PTT_OUT alto) quando lo stato degli input cambia.
il protocollo di trasporto e' arNet
in Rx:
dai pin PWM0-3 esce un segnale pwm in standard analog servo r/c. dai pin GPIO0-1 esce un livello logico
- frequenza: 50 Hz
- 0 duty cycle: 1.25 ms
- 512 duty cycle: 1.50 ms
- 1023 duty cycle: 1.75 ms
- VLo: Vss
- VHi: Vdd
Phy
lo strato di PHY va dal discriminatore di simbolo al buffer dei dati
sono supportate 4 modalita' phy:
- raw (il byte in ingresso, troncato ai bit_per_simbolo, viene direttamente encodato in un simbolo)
- ArPhy
- Morse
- #APRS
Net
Protocolli
armando e' in grado di parlare differenti protocolli
APRS
Automatic Packet Reporting System, e' un sistema di localizzazione a pacchetti che usa un protocollo AX.25 in modalita senza connessione su una modulazione afsk Bell 202 a 1200 bps
sarebbero utili 3 modalita APRS
- client, che riceve dalla UART stringhe NMEA e le trasmette in aprs
- digipeater, che ritrasmette i messaggi APRS ricevuti
- gateway, che manda via UART i messaggi APRS ricevuti
Qui c'è vita morte e miracoli dell'aprs, con relative specifiche:
la prima reference: ftp://ftp.tapr.org/aprssig/aprsspec/spec/aprs101/APRS101.pdf
sw da cui è possibile attingere: http://info.aprs.net/index.php?title=Software
Per fortuna ci sono delle bellissime librerie in c++
- http://sourceforge.net/projects/libaprs/
- http://sourceforge.net/projects/ax25/
- https://code.google.com/p/trackuino/ (solo invio) c'e' una versione in gcc-C, progetto vivo
- nei file trackuino-firmware-1.4/trackuino/ax25.cpp e trackuino-firmware-1.4/trackuino/aprs.cpp sembra esserci quel che serve
- https://sites.google.com/site/ki4mcw/Home/arduino-tnc (solo ricezione)
- http://aprsdroid.org/ (invia e riceve, codice utilizzabile?) AGH! e' scritto in SCALA.. mi sa di no
lib NMEA:
arNet
armando implementa la suite arPhy-ArNet
ANI
client e server Push-To-Talk ID e selective calling.
tipi di ANI
- Motorola’s MDC-1200
- Kenwood’s FleetSync
- Harris’ G-Star (aka GE-Star)
- DTMF
- 5-Tone
letture:
Morse
generatore OTP
dato che abbiamo un rtc l'apparato potrebbe fare da one time password generator. usiamo la chiave come seme? che implementazioni ci sono?
letteratura:
- https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm
- https://otpd.googlecode.com/svn-history/r77/trunk/cardops/totp.c
- https://www.yubico.com/products/yubikey-hardware/yubikey/
- https://code.google.com/p/yubikey-personalization/
stringa di configurazione
la configurazione dell'apparato deovrebbe essere importabile ed esportabile come una stringa esadecimale
anche la chiave crittografica sara una stringa di 32/48/64 caratteri esadecimali
PIN/PUC
quando il device andra in sleep sara necessario un pin di 4 caratteri per risvegliarlo
dopo 5 tentativi sbagliati, il device dimentica la chiave crittografica.
Crittazione
Se vogliamo usare AES, questo potrebbe fare al caso nostro: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en027644