Updated Readme with actual UART Protocol
This commit is contained in:
parent
3b560799af
commit
1c9120a197
119
readme.md
119
readme.md
@ -2,54 +2,103 @@
|
|||||||
|
|
||||||
## Struktur einer Nachricht
|
## Struktur einer Nachricht
|
||||||
|
|
||||||
0xAA = Startbyte
|
- Control Bytes:
|
||||||
checksum = XOR über alle Bytes (ohne Startbyte und Checksum-Byte)
|
- 0xAA = Startbyte
|
||||||
|
- 0xBB = EscapeByte
|
||||||
|
- 0xCC = EndByte
|
||||||
|
|
||||||
## Nachrichtenaufbau (Message Frame)
|
checksum = XOR über alle Bytes (ohne Control Bytes und Checksum-Byte)
|
||||||
|
|
||||||
[ Startbyte ] [ Length ] [ CommandPage ] [ Payload (variabel) ] [ Checksum ]
|
Command, Payload und Checksum werden Escaped sollten sie einem Control Byte ensteprechend
|
||||||
|
[ Startbyte ] [ Command ] [ Payload (variabel) ] [ Checksum ] [ Endbyte ]
|
||||||
|
|
||||||
### Felder im Detail:
|
### Felder im Detail:
|
||||||
|
|
||||||
- **Length** (`uint8_t`):
|
- **Command** (`uint8_t`):
|
||||||
Gibt die Gesamtlänge der Nachricht **ab `CommandPage` bis einschließlich `Payload`** an.
|
Gibt an, welcher Nachrichtentyp gesendet wird.
|
||||||
|
|
||||||
- **CommandPage** (`uint8_t`):
|
|
||||||
Gibt an, welcher Nachrichtentyp oder Befehl gesendet wird.
|
|
||||||
|
|
||||||
- **Payload** (`variabel`):
|
- **Payload** (`variabel`):
|
||||||
Datenfeld mit variabler Länge, abhängig vom `CommandPage`.
|
Datenfeld mit variabler Länge, abhängig vom `Command`.
|
||||||
|
|
||||||
- **Checksum** (`uint8_t`):
|
- **Checksum** (`uint8_t`):
|
||||||
XOR über alle Bytes ab `Length` bis einschließlich `Payload`.
|
XOR über aller Bytes von `Command` und `Payload`.
|
||||||
|
|
||||||
### Nachrichten von PC zu ESP:
|
|
||||||
|
|
||||||
clientid: 0x00 für master, 0xFF für broadcast, ansonsten 0xA0-0xB3 // 19 Clients
|
|
||||||
|
|
||||||
### RequestPing 0xE1
|
|
||||||
Payload: byte: clientid
|
|
||||||
### RequestInfo 0xE2
|
|
||||||
Payload: byte: clientid
|
|
||||||
### RequestRestart 0xE3
|
|
||||||
Payload: byte: clientid
|
|
||||||
### PrepareFirmwareUpdate 0xF1
|
|
||||||
Payload: none
|
|
||||||
### FirmwareUpdateLine 0xF2
|
|
||||||
Payload: firmware line 240Bytes MAX
|
|
||||||
### ExecuteFirmwareUpdate 0xF3
|
|
||||||
Payload: none
|
|
||||||
|
|
||||||
### Nachrichten von ESP zu PC:
|
|
||||||
|
|
||||||
|
|
||||||
|
### Messages
|
||||||
|
|
||||||
---
|
Command:
|
||||||
|
- UART_ECHO = 0x01
|
||||||
|
- UART_VERSION = 0x02
|
||||||
|
- UART_CLIENT_INFO = 0x03
|
||||||
|
|
||||||
|
Grundlegend sind alle Zahlenwerte im LittleEndian format!
|
||||||
|
|
||||||
|
#### UART_ECHO:
|
||||||
|
Send Message: AA 01 01 CC
|
||||||
|
Message Received: AA 01 01 CC
|
||||||
|
|
||||||
|
Sendet zurück was geschickt wird.
|
||||||
|
|
||||||
|
#### UART_VERSION:
|
||||||
|
|
||||||
|
Offset Länge (Bytes) Bezeichnung Beschreibung
|
||||||
|
0 2 Version Software Version
|
||||||
|
2 7 BuildHash Git Hash
|
||||||
|
|
||||||
|
Send Message: AA 02 02 CC
|
||||||
|
Message Received: AA 02 01 00 33 62 35 36 30 37 39 6F CC
|
||||||
|
┌─────────────────────┐
|
||||||
|
| Version | Buildhash |
|
||||||
|
| 1 | 3b56079 |
|
||||||
|
└─────────────────────┘
|
||||||
|
|
||||||
|
Sendet die Version und den Buildhash vom Master zurück.
|
||||||
|
|
||||||
|
#### UART_CLIENT_INFO:
|
||||||
|
|
||||||
|
Das erste Datenbyte nach dem Commando gibt an wie viele Client Infos in dieser Nachricht vorhanden sind.
|
||||||
|
|
||||||
|
Danach teilt sich ein Eintrag wie Folgt auf:
|
||||||
|
Offset Länge (Bytes) Bezeichnung Beschreibung
|
||||||
|
0 1 Client ID Eindeutige ID des Clients.
|
||||||
|
1 1 Ist verfügbar Boolean-Wert (0 = nein, 1 = ja), ob der Client verfügbar ist.
|
||||||
|
2 1 Slot genutzt Boolean-Wert (0 = nein, 1 = ja), ob der Slot belegt ist.
|
||||||
|
3 6 MAC-Adresse Die Hardware-Adresse des Clients.
|
||||||
|
9 4 Letzter Ping Zeit in Millisekunden seit dem letzten Ping.
|
||||||
|
13 4 Letzter erfolgreicher Ping Zeit in Millisekunden seit dem letzten erfolgreichen Ping.
|
||||||
|
17 2 Version Versionsnummer des Clients.
|
||||||
|
|
||||||
|
##### Ein Client
|
||||||
|
Send Message: AA 03 03 CC
|
||||||
|
Message Received: AA 03 01 00 01 01 50 78 7D 18 89 F8 34 00 00 00 61 1F 00 00 02 00 76 CC
|
||||||
|
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
| Client ID | Verfügbar | Genutzt | MAC-Adresse | Last Ping | Letzter Erfolg Ping | Version |
|
||||||
|
| 0 | 1 | 1 | 50:78:7D:18:89:F8 | 52 | 8033 | 2 |
|
||||||
|
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
##### Zwei Clients
|
||||||
|
Send Message: AA 03 03 CC
|
||||||
|
Message Received: AA 03 02 00 01 01 50 78 7D 18 89 F8 22 00 00 00 F4 2A 01 00 02 00 01 01 01 50 78 7D 18 0C B4 10 00 00 00 F1 2A 01 00 02 00 FE CC
|
||||||
|
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
| Client ID | Verfügbar | Genutzt | MAC-Adresse | Last Ping | Letzter Erfolg Ping | Version |
|
||||||
|
| 0 | 1 | 1 | 50:78:7D:18:89:F8 | 34 | 76532 | 2 |
|
||||||
|
| 1 | 1 | 1 | 50:78:7D:18:C:B4 | 16 | 76529 | 2 |
|
||||||
|
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
#### UART_CLIENT_INPUT:
|
||||||
|
|
||||||
|
Die Identifizierung wird hier anhand der vorher gesendeten ClientID gemacht also muss einmal vorher `UART_CLIENT_INFO` aufgerufen werden.
|
||||||
|
|
||||||
|
Das erste Datenbyte nach dem Commando gibt an wie viele Client Infos in dieser Nachricht vorhanden sind.
|
||||||
|
|
||||||
|
Danach teilt sich ein Eintrag wie Folgt auf:
|
||||||
|
Offset Länge (Bytes) Bezeichnung Beschreibung
|
||||||
|
0 1 Client ID Eindeutige ID des Clients.
|
||||||
|
1 4 LageX Float Wert von der X Lage.
|
||||||
|
5 4 LageY Float Wert von der Y Lage.
|
||||||
|
9 4 LageZ Float Wert von der Z Lage.
|
||||||
|
13 4 InputMaske Int32 Wert der als Bitmaske genutzt wird um bis zu 32 Boolische Werte anzugeben.
|
||||||
|
|
||||||
# Roadmap
|
|
||||||
- [ ] SEND STATUS OF DEVICE OVER UART
|
|
||||||
- [ ] CONFIGURE PEERS OVER MASTER
|
|
||||||
- [ ] SAVE PIN CONFIG ON PEERS
|
|
||||||
|
|
||||||
# Machbarkeits-Studie
|
# Machbarkeits-Studie
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user