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.