Änderungen

Addon:lcd msg

3.774 Byte hinzugefügt, 16:03, 29. Apr. 2011
/* delete_msg.sh */
'''<group>'''
Setzt die Nachrichtengruppe. Nachrichten lassen sich gruppenweise aus dem Menü heraus löschen. Das Menü wird durch Druck auf die Menü-Taste während der Anzeige der Nachricht aufgerufen. Es erscheint die Meldung 'del <group>?' (wobei <group> die selbst definierte Gruppe ist), die man bestätigen oder verwerfen kann. Der Gruppenname darf nicht aus keine Sonderzeichen oder Leerzeichen bestehenenthalten.
'''<id>'''
Setzt die Nachrichtenid. Beim Schreiben einer neuen Nachricht wird die Nachricht mit der selben id innerhalb der selben Gruppe überschrieben, während Nachrichten mit anderen ids oder anderen Gruppen weiter bestehen. Weiterhin dient die id dazu, die Nachrichten zu sortieren (Gruppenübergreifend). Die id wird nirgendwo angezeigt und kann frei gewählt werden. Die id darf nicht aus keine Sonderzeichen oder Leerzeichen bestehenenthalten.
'''<priority>'''
Setzt die Nachrichtenpriorität. Ein kleinerer Wert hier entspricht der umgangssprachlich höheren Priorität. Ein größerer Wert bedeutet also, dass die Nachricht weniger wichtig ist. Es werden nur Nachrichten angezeigt, die die gleiche höchste Priorität besitzen. Beispiel:
*$m1hi1$Hallo Welt!
:&rArr;zeigt 1 Stunde lang den Text "Hallo Welt!" mit der Standard-Priorität 500 an.
*$m1h i2 p500$Test:&rArr;zeigt zusätzlich neben "Hallo Welt!" auch "Test" an. Die Angabe einer anderen id (wahlweise auch Gruppe) ist notwendig um nicht die vorherige Nachricht zu überschreiben.
*$m1m p400$Neue Mail!
:&rArr;zeigt eine Minute lang die Meldung "Neue Mail!" an. Während dieser Minute werden die anderen beiden Nachrichten nicht angezeigt! Nach Ablauf der Minute wird diese Meldung gelöscht, und es wird wieder im Wechsel "Hallo Welt!" und "Test" angezeigt.
Hiermit kann das Display resettet werden, falls es mal nicht reagiert.
===delete_msg.sh===
/etc/config/addons/lcd_msg/delete_msg.sh [-g[roup] <group>] [-i[d] <messageid>]
Löscht eine oder mehrere Nachrichten. Optional kann eine Gruppe und/oder eine Id angegeben werden, um das Löschen einzuschränken. Bei der Angabe einer Id ohne Gruppe werden alle Nachrichten mit dieser Id (von jeder Gruppe) gelöscht. (Vorsicht, hier muss zwischen dem -g/-i und der Bezeichnung ein Leerzeichen stehen, bei display_msg nicht! Ich gebe zu, nicht sehr intuitiv, müsste ich verbessern).
Beispiel:
*delete_msg.sh -g temp
:&rArr;Löscht alle Nachrichten der Gruppe temp
**Daemonizing beim Erstellen der Nachricht, dadurch reagiert das aufrufende ReGa-Script besser (CCU läuft runder)
**Bugfixes in der flash.tcl, Blinken konnte niedrige Beleuchtung zurück lassen
**Neues Feature: [[AddonPriorität ==Funktionsweise der zukünftigen Version==Entwicklungsbasis von MustangRocks und DocZoid für die weitere Entwicklung===Komponenten===Es gibt folgende Software-Komponenten:lcd msg*'''hss_lcd.ko''': Kernel-Treiber, basierend auf OpenSource, von MustangRocks weiterentwickelt, zur Ansteuerung des CCU-Displays und der LEDs und Tasten. Weiterentwickelte Version enthält zwei Kanäle, einen zur Kommunikation mit hss_lcd, und einen zur Kommunikation mit dem API.*'''hss_lcd''': Programm von eq-3, welches die HTML-Interpretation der Menüdateien enthält. Ruft die Menüdateien über den Webserver auf, so dass cgi-Scripte ausgeführt werden. Kann keine LEDs ansteuern, nur Text anzeigen.*'''hss_index.cgi''': Haupt-Menüdatei, welche bisher direkt den anzuzeigenden Text und einen autoswitch-timeout zurückgegeben haben, um ein refresh der angezeigten Daten zu erreichen. Die zukünftige Verwendung wird weiter unten beschrieben.*'''API''': Das API wird von MustangRocks als tcl-Datei (Name) bereitgestellt, um eine einfachere Kommunikation zwischen TCL-Programmen und der hss_lcd.ko zu ermöglichen.*'''ccu_lcd''': Daemon, welcher die Nachrichtenverwaltung übernimmt.===Initialisierung===*hss_lcd wird gestartet und ruft hss_index.cgi auf. *in hss_index.cgi wird zunächst der ccu_lcd daemon Prozess gestartet, und ein default-String (ccu_lcd Va.b) zur Anzeige an der CCU zurückgegeben, ohne refresh-timeout.*in ccu_lcd wird die init-Routine des API aufgerufen, und ein TCP-Listener-Socket geöffnet (Nachrichtenannahme)*im API wird die initialisierung von hss_lcd.ko weitergeführt*hss_lcd.ko schaltet auf den zweiten Kanal zur Anzeige der eigenen Nachrichten*ccu_lcd zeigt ggf. bestehende Nachrichten an===Ereignisse===*Neue Nachrichten werden durch Übertragung von TCP-Daten (Warum nicht UDP?) an ccu_lcd gemeldet. ccu_lcd verarbeitet daraufhin die Daten und hält sie für eine weitere Übermittlung an das API vor (vermutlich in Dateien).*Nachdem eine "showtime" von Nachrichten abgelaufen ist meldet sich hss_lcd.ko über das API beim ccu_lcd-Daemon. Dort können dann weitere Nachrichten übermittelt werden.*Tastendrücke werden von hss_lcd.ko abgefangen und über das API an ccu_lcd gemeldet. ccu_lcd kann dann entscheiden (über einen API-Aufruf), ob das alte Menü über den Standard-Kanal angezeigt werden soll. Langfristig müsste das alte Menü selbst dargestellt werden.===Fragen===#<Parameter>|warum nicht UDP statt TCP#Nachrichten in Dateien vorhalten hat den Vorteil, dass bei einem Neustart des Anzeigesystems alte Nachrichten wieder angezeigt werden können. Scheint mir (DocZoid) jedoch mehr Aufwand in der Programmierung, zumal ein Neustart des Anzeigesystem nicht notwendig sein sollte. Bei einem CCU-Neustart sind eh alle Nachrichten weg. Mal schauen inwieweit sich das alte Dateien-System übernehmen lässt.#Wie werden neue Nachrichten an hss_lcd.ko gesendet? Wenn nur eine Nachricht angezeigt wird sollte hss_lcd.ko nicht ständig pollen, ob es neue Nachrichten gibt: man hätte nicht viel zum alten System gewonnen. Grundsätzlich sollten neue Nachrichten immer ''sofort'' angezeigt werden (wenn die Priorität]]dies zulässt), und das Pollen muss minimiert werden, sprich ccu_lcd darf dem API nur eine showtime übergeben, wenn weitere Nachrichten angezeigt werden müssen.#Wer prüft auf den timeout einer Nachricht, insbesondere wenn es nur eine gibt und es kein Polling gibt?===Timeout-Überwachung===#LED- und Hintergrundbeleuchtungs-Timeouts werden von hss_lcd.ko überwacht#Bei Nachrichten-Timeouts muss die Datei / der Datensatz in ccu_lcd gelöscht werden. Wird ccu_lcd hier extern von hss_lcd.ko getriggert?===API-Beschreibung===
123
Bearbeitungen