DecentralizedAmateurPagingNetwork / Core

The DAPNET Core is the core application of DAPNET, responsible for handling transmitter clients, clustering, and providing the REST API.
https://www.afu.rwth-aachen.de/projekte/funkruf-pager-pocsag/funkrufmaster-2-0-dapnet
42 stars 11 forks source link

Erweiterung auf Unterstützung von nur-nummerischen Empfängern #96

Open dh3wr opened 7 years ago

dh3wr commented 7 years ago

Daniel Fischaleck schreibt:

Hallo Ralf,

am Wochenende haben wir zum Spaß einen Scall Nummerik-Empfänger umgebaut und siehe da, er reagiert auch auf einen Ruf. Leider steht im Display nur Mist, da ja, nach meinen Infos, bei den Nummerik-Empfängern 4-bit Codeworte verwendet werden und nicht 7-bit wie bei den alphanummerischen. Gibt es Pläne, in naher Zukunft über das Dapnet auch echte nummerische Nachrichten versenden zu können? Das würde den Kreis der verwendbaren Empfänger deutlich erhöhen.

Was mir auch noch Gedanken macht: ich habe diverse Scall XT bzw. XTS. Sind diese auch brauchbar? Ein Umbau und Abgleich läuft ja ähnlich wie bei den Sykpern. Falls du keine Infos dazu hast, würden wir mal die Pionierarbeit übernehmen...

Viele Grüße, Daniel

dh3wr commented 7 years ago

Hallo Daniel,

Bis jetzt werden auf DAPNET-Seite nur alphanummersiche RX unterstützt. Mangels Besitz haben wir nummerische bisher außer Acht gelassen. Der UniPager sollte aber auch die Aussendung unterstützen. Man müsste also

  1. Die Eigenschaften einer RIC mit einem Flag "Nur Nummerisch" erweitern bei den Callsigns
  2. Die Eingabemaske entsprechend anpassen, dass ggf. nur Zahlen erlaubt werden, wenn eines der ausgewählten Callsigns eine RIC mit Flag hat

Grüße Ralf

Taronyu commented 7 years ago

Ich habe mal einen ersten Aufschlag implementiert. Ein Callsign hat jetzt die Option numeric, die standardmäßig auf false gesetzt wird. Wenn die auf true gesetzt ist, wird beim Erzeugen der Nachricht für diesen Pager das Feld FunctionalBits auf NUMERIC anstelle von ALPHANUM gesetzt, sofern der Text des Calls als eine Zahl darstellbar ist bzw. dem POSCSAG Protokoll entspricht (Regex-Pattern [-Uu\\d\\(\\) ]+). Der Text wird dann noch in Upper Case konvertiert.

Wenn die Nachricht nicht als NUMERIC darstellbar ist und an einen NUMERIC-only Callsign gesendet werden soll, wird das momentan nur mit einer Warnung im Core ignoriert. Es ist von der Struktur her an der Stelle keine geeignete Rückmeldung an den Aufrufer vorgesehen. Der Aufruf erfolgt im Rahmen des RPCListeners, da gibt es maximal ein BAD_REQUEST, was dann als Internal Server Error an den REST Client rausgehen könnte. In dem Fall würden dann auch gar keine Nachrichten versandt werden.

Eventuell kann man das mit einem Custom Validator später mal mit einer geeigneten Meldung abfangen. Momentan bekommt der Aufrufer das jedenfalls nicht mit, wenn eine Nachricht aus dem Grund nicht gesendet werden kann. An alle anderen Rufzeichen geht die Nachricht aber raus.

Taronyu commented 3 years ago

Das sollte besser am Pager gespeichert werden. Idee: es gibt ein isNumeric(), dass auf den zu sendenden Text aufgerufen wird. Wenn das true liefert, werden nur numeric-Pager des Callsigns betrachtet, ansonsten nur die alphanumeric-Pager. Mit den Änderungen im refactoring Branch sollte das relativ leicht umzusetzen sein. Müsste man vielleicht noch einen Pager-Typ SCALL anlegen.