Hallo Zusammen,
ich versuche den Atmel LW Mesh Stack ans laufen zu bekommen und zu
verstehen was da passiert, aber eine Stelle macht mich stutzig,
vielleicht kann mir jemand weiterhelfen.
1 | /*************************************************************************//**
|
2 | *****************************************************************************/
|
3 | static void appSendMessage(uint8_t *data, uint8_t size)
|
4 | {
|
5 | uint8_t cs = 0;
|
6 |
|
7 | HAL_UartWriteByte(0x10);
|
8 | HAL_UartWriteByte(0x02);
|
9 |
|
10 | for (uint8_t i = 0; i < size; i++)
|
11 | {
|
12 | if (data[i] == 0x10)
|
13 | {
|
14 | HAL_UartWriteByte(0x10);
|
15 | cs += 0x10;
|
16 | }
|
17 | HAL_UartWriteByte(data[i]);
|
18 | cs += data[i];
|
19 | }
|
20 |
|
21 | HAL_UartWriteByte(0x10);
|
22 | HAL_UartWriteByte(0x03);
|
23 | cs += 0x10 + 0x02 + 0x10 + 0x03;
|
24 |
|
25 | HAL_UartWriteByte(cs);
|
26 | }
|
27 |
|
28 | /*************************************************************************//**
|
29 | *****************************************************************************/
|
die Frage wäre ob ichs richtig sehe, dass die 0x10 zweimal gesendet
wird, wenn es im Array vorkommt? Und warum macht man das?
cs ist die Checksumme, wie auch immer da die Checksumme berechnet wird.
XOR ists glaub ich nicht?! Ich versuche zu verstehen, warum die 0x10
über UART zweimal gesendet wird. Ist das, damit der Parser auf der PC
Seite die 0x10 auch als 0x10 deutet? Wäre plausibel, da 0x10 auch ein
Synczeichen zu sein scheint?! Kann das jemand bestätigen?
Besten Dank
Gruß Spice