RigControl (Technik)

Einige Anmerkungen zur technischen Umsetzung der App sowie der verwendeten externen Libraries.

Technisch ist diese App recht unspektakulär. Allerdings verwende ich Googles aktuellste Komponenten und sammle so weitere Erfahrungen im Einsatz mit ihnen:
Das ConstraintLayout ist zwar noch nicht die Produktionsversion, aber auch die frische erste Beta funktioniert prächtig nachdem auch die Alpha-Versionen bei mir ohne Probleme liefen. RecyclerViews haben bei mir jetzt die ListViews verdrängt, nachdem ich einen generischen Adapter (-> MultiselectAdapter) geschrieben habe, der die ListViews mit Cursors und ArrayLists als Datenquellen verheiratet und auch den Actionmode den ich bei den ListViews zu schätzen gelernt habe, jetzt auch den RecyclerViews zur Verfügung stellt. Das alles gepaart mit der Databinding-Library die zum Einen den Codeaufwand reduziert und zum Anderen auch das MVVP Pattern stark begünstigt was der Code-Qualität bestimmt nicht abträglich ist. ;-)

Bei der Anbindung der Transceiver gibt es ja wohl unzählige Kombinationsmöglichkeiten. Ich kann natürlich nicht alle Kombinationen testen - dazu fehlt mir die Hardware (und auch die Zeit ;-) ). Die Übertragungart (Bluetooth oder USB) ist unabhängig vom Transceiver-Modell so daß eigentlich jeder von der App unterstützte Transceiver auf beiden Übertragungsarten funktionieren sollte sobald man ein geeignetes Interface dazwischen schaltet.

Für die Anbindung über Bluetooth benötige ich nur das SPP-Protokoll bei der Bluetooth-Verbindung. Alle Bluetooth-Interfaces, die dieses Protokoll unterstützen sollten also einsetzbar sein.

Zu den Libraries:

Für die USB-Anbindung greife ich auf die USBSerial Library von Felipe Herranz zurück. Sie wird aktuell wohl noch gepflegt, ist im Zweifel auch als Quellcode zu bekommen und unterstützt die gängigen USB-seriell Wandlerchips. (Zumindest die bei mir auftauchenden FTDI aus dem SB-2000 und CP2102 aus dem TH-D72). Die Baudrate habe ich erst einmal fest auf 9600 Baud programmiert.

ACRA verwende ich, wie in allen meinen Projekten für die Fehlerverwaltung falls die App mal abstürztt

OKIO wurde aus OKHTTP abgespalten. Das Konzept dieser Familie von Libraries gefällt mir aber sehr, so daß ich mehr mit diesen Komponenten machen will. Hier verwende ich OKIO für die Kommunikation mit den Transceivern. Seine gepufferte Kommunikation und das flexible Auslesen von Werten unterschiedlichster Typen aus den Puffern machen es zur Library der Wahl für mich.

OpenCSV wird für den Im- und Export der Werte verwendet.

ACRA  http://www.acra.ch  
OKio  https://github.com/square/okio  
OpenCSV  http://opencsv.sourceforge.net/  
USBSerial https://github.com/felHR85/UsbSerial