SIGNALESP icon indicating copy to clipboard operation
SIGNALESP copied to clipboard

WIP: Ethernet / Serial output via callback

Open sidey79 opened this issue 8 years ago • 8 comments

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

  • [x] callback in main program provided for normal output
  • [x] POC SignalDecoderClass

~~- [ ] 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

sidey79 avatar Sep 09 '17 17:09 sidey79

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

habeIchVergessen avatar Sep 10 '17 11:09 habeIchVergessen

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?

sidey79 avatar Sep 10 '17 15:09 sidey79

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

habeIchVergessen avatar Sep 10 '17 19:09 habeIchVergessen

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

sidey79 avatar Sep 10 '17 20:09 sidey79

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?

habeIchVergessen avatar Sep 10 '17 21:09 habeIchVergessen

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.

sidey79 avatar Sep 11 '17 07:09 sidey79

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:

  • fastdelegate soll Member-Funktionen von Objekten als callback maskieren (geht sonst nicht durch den Compiler)
  • eine Funktion ohne Parameter und mit return-Wert sind immer 2 Assembler-Aufrufe!

habeIchVergessen avatar Sep 11 '17 07:09 habeIchVergessen

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.

habeIchVergessen avatar Sep 15 '17 13:09 habeIchVergessen