Pagermon pro Linux
Pokud se vám dostane do ruky taková malá krabička od firmy Conrad Electronic
s názvem RDS Manager, nevyhazujte ji. Dají se s ní dělat zajímavé věci. Například
monitorovat přenosy pagingové služby radiooperátor.
Radiooperátorové pakety jsou vysílané jako doprovodná RDS informace stanicí
Českého rozhlasu Radiožurnál.
Několik informací k implementaci kernel driveru pro RDS dekodér
Vzhledem k tomu, že data z RDS dekodéru lezou synchronně s hodinovým signálem
dekodéru, nelze pro příjem dat počítadlem typu PC použít seriové porty UART
v režimu asynchroního příjmu. Proto byly využity pomocné signály seriového
portu a driver funguje v režimu "probuď se při změně stavu modemu".
Takto má driver možnost reagovat na vzestupnou hranu hodin z RDS dekodéru.
Driver ukládá přijaté bity do kruhového bufferu. Pokud nějaký proces otevře
toto zařízení, driver mu přidělí vlastní ukazovátko do tohoto bufferu.
Takto může číst několik procesů ze stejného RDS přijímače.
Vzhledem k tomu, že přesné informace k implementaci low-level RDS protokolu
jsem nesehnal, neumím spočítat CRC a případně opravovat chyby. Driver
tedy CRC součty ignoruje. Synchronizuje se na známou sekvenci z vysílání
Radiožurnálu, což je 0x8cbe65. Vzhledem k tomu, že občas může dojít k vypadnutí
interruptu (děkujeme tvůrcům IBM PC za zmršenou architekturu), je třeba
driver resynchronizovat. Proto je v driveru zadělán watchdog, který zajistí
resynchronizaci.
Připojení RDS dekodéru k PC
Připojení je jednoduché. Propojíte zemně, na DSR připojíte hodiny
a na CTS data z RDS dekodéru.
Program Pagermon
Program Pagermon je konečný zobrazovač pagerového provozu. Pro jeho provoz
je třeba vytvořit speciální znakový soubor /dev/rds s hlavním číslem zařízení 59
a vedlejším číslem zařízení 0. Toto vytvoří skript make_rds_spec_file.
Dále je třeba zavést rds driver do jádra systému. To zařídí skript rdson.
Oba skripty je třeba pouštět uživatelem root.
Nyní už může kdokoliv pustit program Pagermon.
Kompilace programů
Rozbalte balík a spusťte make.
Případná vylepšení
Jak už bylo řečeno, informace jsou sporé. Pokud někdo zjistíte přesnější informace
o výpočtu CRCu a synchronizaci, budu vděčný. Ještě lépe, pokud to rovnou naprogramujete
do RDS driveru.