Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Ethernet / Serial output via callback #11

Open
wants to merge 4 commits into
base: dev-cc1101-cb
Choose a base branch
from

Conversation

sidey79
Copy link
Contributor

@sidey79 sidey79 commented Sep 9, 2017

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 normal output
  • 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

# Conflicts:
#	SIGNALESP/SIGNALESP.ino
#	src/_micro-api/libraries/signalDecoder/src/signalDecoder.cpp
# Conflicts:
#	SIGNALESP/SIGNALESP.ino
(cherry picked from commit 8c36432)

# Conflicts:
#	SIGNALESP/SIGNALESP.ino
#	SIGNALESP/cc1101.h
@sidey79 sidey79 self-assigned this Sep 9, 2017
@sidey79 sidey79 changed the title WIP: Ethernet / Serial Output via callback WIP: Ethernet / Serial output via callback Sep 9, 2017
@habeIchVergessen
Copy link

habeIchVergessen commented Sep 10, 2017

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

@sidey79
Copy link
Contributor Author

sidey79 commented Sep 10, 2017

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
Copy link

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

@sidey79
Copy link
Contributor Author

sidey79 commented Sep 10, 2017

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

@habeIchVergessen
Copy link

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
Copy link
Contributor Author

sidey79 commented Sep 11, 2017

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
Copy link

habeIchVergessen commented Sep 11, 2017

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
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants