Gast
#3211222
Morgen, ich habe hier zum wiederholten Male das selbe Problem. Mir fällt da keine elegante Lösung ein, aber vielleicht wisst ihr ja was. Ich habe eine Sendefunktion die einen Zeiger auf Daten und eine Längenangabe erwartet. void senden(uint8_t *src, uint8_t length); Ob das jetzt UART, Ethernet, SPI oder sonstwas ist spielt erstmal keine Rolle. Eine Applikation möchte Nutzdaten senden. Allerdings gehören diese noch in ein Protokoll verpackt. Je nach Medium meinetwegen eine Längenangabe, SOF oder Empfängeradresse. D.h. ich muss die Nutzdaten die ich bekomme um einen Header (und manchmal auch Trailer) erweitern. Das heißt aber für mich als "Protokollschicht" dass ich erstmal alle Daten, die mir die Applikation gibt in einen temporären Buffer kopieren muss. Der Buffer ist um den Protokolloverhead größer zu wählen als die Nutzdaten. Auf einem uC läuft das wohl auf einen globalen Puffer der Form "uint8_t tmpBuf[MAX_FRAME_SIZE]" hinaus. Also kommt zur Kopierarbeit noch ein permanenter RAM-Verbrauch hinzu. Die Ressourcen (RAM + Rechenzeit) hab ich zwar noch locker über. Aber mir gehts darum, diese Problemstellung in Zukunft geschickter zu lösen als bisher immer. Wie würdet ihr das lösen? Viele Grüße, Karlo