RFD-FHEM / SIGNALESP

SIGNALduino direclty on ESP8266
GNU General Public License v3.0
15 stars 8 forks source link

WIP: Ethernet / Serial output via callback #11

Open sidey79 opened 7 years ago

sidey79 commented 7 years ago

Implement the Output from the classes via a callback solution to allow the main program to control the output.

- [ ] callback in main program provided for debug output - [ ] SignalDecoderClass Debug & normal output via callback - [ ] Bitstore Class Debug & normal output via callback

Hier ist der aktuelle Stand der Entwicklung

@habeIchVergessen

habeIchVergessen commented 7 years ago

ich habe mal meine Vorstellung commited. ich würde gern signalDecoder komplett von der Ausgabe unabhängig machen wollen.

sidey79 commented 7 years ago

okay, sollten alle Return variablen mit size_t deklarieren, dann passt es zu den Ausgaben aus der Stream Klasse.

Was hast Du gegen den fastdelegate function pointer?

habeIchVergessen commented 7 years ago

typedef gefällt mir besser (Funktion + Parameter sind fix). für size_t gibt es bereits ein commit

sidey79 commented 7 years ago

Was ist mit der Geschwindigkeit und der code größe? Hast Du das mal verglichen?

habeIchVergessen commented 7 years ago

typedef sollte nur für den Compiler ein Unterschied machen. Laufzeitunterschiede würde ich nicht erwarten. Wie willst du die den messen? 100 Aufrufe und dann mitteln?

sidey79 commented 7 years ago

Mit fastdelegate wird es auf 2 Assembler Befehle reduziert. Da ich das schon für die RSSI Callback verwende, lasse ich es einfach dabei, da es gut funktioniert.

habeIchVergessen commented 7 years ago

typedef fastdelegate::FastDelegate2<const uint8_t*, uint8_t, size_t> Func2pRetuint8t; Name und Return-Wert sind nicht stimmig. uint8_t als Länge ist auch zweifelhaft (String länger als 255?). Beim Schreiben in den Socket machen ein paar Assembleranweisungen wahrscheinlich keinen Unterschied. Vermutlich wird fastdelegate außer gesteigerter Komplexität nichts bewirken.

PS:

habeIchVergessen commented 7 years ago

ich habe mal einen Entwurf für eine buffer-Implementierung committed. Leider ist MSG_END keine gute Idee als Indikator für das Senden, da dass abschließende newline fehlt.