polybassa/Wifly_Light — pull request #17 by tawarisch (2012-09-12 19:16:21+00:00)
Title: Pic18 master

So hier ist der ScriptCtrl. Eine Sache fällt mir gerade ein da der RingBuffer ja im eeprom liegt, ist er ja persistent. Am besten du rufst einmal ScriptCtrl_Clear() auf bevor du das erstemal startest, sonst liest er schrott aus dem eeprom. Beim mir wurde das eeprom ja im ram simuliert und war dementsprechend immer leer. Siehst du das wär noch was, dass ich das eeprom in ner datei simuliere.
Nagut jetzt mal zu den änderungen:
- Bis auf das sammeln der bytes aus dem RingBuf und zusammenführen zu einem led_cmd wird der Commandstorage komplett vom ScriptCtrl ersetzt. Diese letzte funktionalität muss natürlich auch noch verschoben werden.
- deine neuen kommandos(run, rtc, ...) sind zwar im code migriert aber von mir ungetestet und auch nicht im unittest
- hab noch schnell das g_UpdateLed so umgebaut, das es ein zähler ist immer wenn er > 0 ist wird nun das fading gemacht somit geht auch kein cycle mehr verloren
- führ mal "make test" aus sollte mit nur zwei fehlern durchlaufen
- ich hab einige TODOs im code. wir haben ne menge zum aufräumen! Insbesondere die nebenläufigkeit durch interrupts müssen wir überarbeiten. Z.B. g_CmdBuf.waitValue ist so ein Kandidat. der wird im interrupt decrementiert aber auch im "normalen" code gesetzt. Nun kann folgendes passieren: im normalen code wird der erste teil geschrieben. ein interrupt unterbricht das schreiben. führt das decrement durch und anschließend wird der zweite teil geschrieben. was dabei rauskommt kann irgendeine suppe sein. Auf solche stellen müssen wir aufpassen und mal ein wenig den code durchsuchen.
- brauchen wir wirklich die unterscheidung in hoch und niederprioren interrupt? wir sollten beide so schnell wie möglich machen und wenn wir uns die niederprioren sparen können vereinfachen wir auch das handling. diese interrupts sind quasi wie threads und wenn wir drei thread ebenen high low und normal code handlen müssen ist das komplexer als wenn wir quasi nur interruptthread und normalen thread synchronisieren müssen. Funktionsaufrufe sind meiner meinung nach tabu in einer interrupt service routine (isr) wenn wir die entfernen können wir uns glaub ich auch das speichern des zustands sparen (was momentan nen haufen warnings bei make pic wirft)