Benutzer-Werkzeuge

Webseiten-Werkzeuge


addon_einbinden

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
addon_einbinden [2014/04/09 09:11] – [Baugruppen-Fähigkeiten (Features)] Michaeladdon_einbinden [2016/07/05 10:52] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 24: Zeile 24:
 **Da es sich "nur" um eine Konvention handelt, ist hier die Disziplin des Einzelnen gefordert!** **Da es sich "nur" um eine Konvention handelt, ist hier die Disziplin des Einzelnen gefordert!**
  
-Sollte in der Basis ein neues Flag verwendet werden, führen wir eine entsprechende Deklaration ein. Eine Doppelbenutzung durch ein AddOn, das der Konvention folgt, deckt der Compiler dann schnell auf.+Sollte in der Basis ein neues Flag verwendet werden, führen wir eine entsprechende Deklaration ein. Eine Doppelbenutzung durch ein AddOn, das der Konvention folgt, deckt der Compiler dann schnell auf. Sollte der Compiler eine Doppelbenutzung aufdecken, so kann man den 'konkurrierenden' Nutzer einfach ausfindig machen, wenn man vor //#error Port conflict A7// temporär ein //#define I_NEED_PORTA7 1234// setzt. Der Compiler zeigt dann die Stelle mit //previous define was here// an. 
 ===== AddOn-Hooks ===== ===== AddOn-Hooks =====
 Die Basissoftware enthält definierte "Hooks", um die Software der AddOns einzubinden. Die Basissoftware enthält definierte "Hooks", um die Software der AddOns einzubinden.
Zeile 69: Zeile 70:
 {{:codehilfe:oc_features_h.jpg|}} {{:codehilfe:oc_features_h.jpg|}}
 Dort werden sinnige Indices für die in ''bidib_message.h'' vorgegebenen Features definiert. Die Tabelle feature[] enthält den aktuellen Wert des Features und seine Grenzwerte (min/max). Für eine weitere Verarbeitung kann eine ''notify_function'' angegeben werden. (Im Beispiel gibt es keine.) Dort werden sinnige Indices für die in ''bidib_message.h'' vorgegebenen Features definiert. Die Tabelle feature[] enthält den aktuellen Wert des Features und seine Grenzwerte (min/max). Für eine weitere Verarbeitung kann eine ''notify_function'' angegeben werden. (Im Beispiel gibt es keine.)
 +
 +<WRAP center round info 80%>
 +Im Gegensatz zu CVs sind Features eineindeutige Standardobjekte und damit genehmigungspflichtig. D.h. eine CV kann man definieren, wie man lustig ist, ein Feature nicht. Das ist der Grund, weshalb nur die in bidib_messages.h abgesprochenen und standardisierten Werte erlaubt sind.</WRAP>
 +
 +Zum Lesen der Features stehen die zwei Funktionen aus der Header-Datei ''features.h'' zur Verfügung:
 +{{:codehilfe:oc_get_feature_index.jpg| }} Mit Hilfe dieser Funktion erhält man über die in ''bidib_messages.h'' vorgegebenen Features den Index auf die interne Tabelle. Ist das Feature ungültig bzw. steht es nicht in der tabelle, wird -1 geliefert, andererseits der Index.
 +
 +{{:codehilfe:oc_get_feature_index_value.jpg |}} Mit dem oben erhaltenen Index wird mit dieser Funktion der Wert des Features gelesen. Diese Funktion sollte nur aufgerufen werden, wenn der oben erhaltene Index größer oder gleich 0 ist.
 +
 +
 +Wenn ein Host-System eine Nachricht vom Typ: ''MSG_LC_CONFIG_SET'' abschickt, wird die Funktion ''config_sport_addon'' aufgerufen:
 +{{:codehilfe:oc_config_sport_addon.jpg|}}
 +Soll die Anfrage unterstützt werden, sind die entsprechenden Informationen des SPORT-Accessorys mit den übergebenen Informationen zu setzen und ''1'' zu liefern. Anderenfalls reicht die Rückgabe einer ''0''.
 +
 +Analog wird verfahren, wenn ein Host-System mit der Nachricht: ''MSG_LC_CONFIG_GET'' die SPORT-Eigenschaften anfordert, dann wird die Funktion ''addon_sport_query'' aufgerufen:
 +{{:codehilfe:oc_addon_sport_query.jpg|}}
 +Soll die Anfrage unterstützt werden, sind die angeforderten Angaben mit den entsprechenden Informationen des SPORT-Accessorys auszufüllen und ''1'' zu liefern. Anderenfalls reicht die Rückgabe einer ''0''.
 +
 ==== EEPROM (CV-Daten) ==== ==== EEPROM (CV-Daten) ====
 Die so genannten CV-Daten werden im EEPROM des Bausteins abgelegt. Für die Organisation im AddOn sind vier Dateien zuständig: Die so genannten CV-Daten werden im EEPROM des Bausteins abgelegt. Für die Organisation im AddOn sind vier Dateien zuständig:
Zeile 206: Zeile 225:
     - ''addon_cv_data.h'' Inhalte festlegen     - ''addon_cv_data.h'' Inhalte festlegen
     - ''addon_cv_features.h'' Fähigkeiten festlegen     - ''addon_cv_features.h'' Fähigkeiten festlegen
-  - In ''addon.c/h'' Initialisierung (inkl. Power-Up) und "Shutdown" sowie Neustart veranlassen+  - In ''addon.c'' Initialisierung (inkl. Power-Up) und "Shutdown" sowie Neustart veranlassen 
 +  - In ''addon.c'' Anfragen zu Features verwalten
   - In ''addon_tasklist.h'' Tasks definieren   - In ''addon_tasklist.h'' Tasks definieren
   - In ''addon.c'' "Schlusswort" und Makrofunktionen sowie gfls. Eingangsschalter für Makros initiieren   - In ''addon.c'' "Schlusswort" und Makrofunktionen sowie gfls. Eingangsschalter für Makros initiieren
addon_einbinden.1397027511.txt.gz · Zuletzt geändert: 2016/07/05 10:46 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki