Hallo zusammen
Ich würde gerne Daten mittels eines Strukts verarbeiten.
1 | struct ALDP_t_class
|
2 | {
|
3 | uint8_t aldp_hdr_byte_1;
|
4 | uint8_t aldp_hdr_byte_2;
|
5 | uint8_t aldp_payload[];
|
6 | };
|
7 |
|
8 | struct SLDP_t_class
|
9 | {
|
10 | uint8_t sldp_size;
|
11 | uint8_t *sldp_payload;
|
12 | uint8_t sldp_crc8;
|
13 | };
|
Dazu habe ich folgende Strukte.
Nun ist mein Problem folgendes:
Beim sldp Strukt ist die Payload in der Mitte, dies ist ungünstig, da
ich dadurch sowas nicht machen kann:
1 | SLDP_Paket = (struct SLDP_t_class *)&BufferPointer[0];
|
Denn die Länge der Payload von SLDP kann variabel sein.
Natürlich müsste ich für obige Zuweisung sldp_payload von * zu
sldp_payload[] ändern. Jedoch ändert dies ja nichts daran, dass der
Compiler nicht mehr weiss, wo die sldp_crc8 kommt.
Eine Möglichkeit wäre die payload ans Ende zu setzen, und die crc8 nach
sldp_size anzugliedern. Dies erschwert dann aber die crc8 kalkulation
etwas.
Gibt es hier einen "Trick77" womit man sowas elegant lösen kann?
Danke schonmal