Anpassung 16bit offset
This commit is contained in:
parent
802ab858e1
commit
24b349de26
@ -110,6 +110,8 @@ Die GUI nutzt derzeit vor allem `STATIC`, `BLINK`, `PULSE` und `COLOR_CYCLE`.
|
|||||||
|
|
||||||
Config und Makros liegen in getrennten reservierten NVM-Bereichen.
|
Config und Makros liegen in getrennten reservierten NVM-Bereichen.
|
||||||
|
|
||||||
|
Beim Serial-Dump der Config werden 124 Chunks zu je 6 Nutzbytes uebertragen. Implementierungen muessen den daraus berechneten Byte-Offset mindestens 16 Bit breit halten, weil Profil 2 und 3 hinter Byte 255 liegen.
|
||||||
|
|
||||||
## Werksreset
|
## Werksreset
|
||||||
|
|
||||||
Die Firmware hat einen eingebauten Recovery-Pfad:
|
Die Firmware hat einen eingebauten Recovery-Pfad:
|
||||||
|
|||||||
@ -79,6 +79,8 @@ Config: ceil(740 / 6) = 124 Chunks
|
|||||||
Makros: ceil(512 / 6) = 86 Chunks
|
Makros: ceil(512 / 6) = 86 Chunks
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Wichtig fuer Implementierungen: Der Byte-Offset eines Chunks muss mindestens 16 Bit breit sein. Bei der Config liegt der Offset ab Chunk 43 ueber 255 Byte; ein 8-Bit-Offset wuerde ueberlaufen und spaetere Profilbereiche falsch dumpen.
|
||||||
|
|
||||||
## Transferablauf
|
## Transferablauf
|
||||||
|
|
||||||
### PC -> Board
|
### PC -> Board
|
||||||
|
|||||||
@ -245,7 +245,7 @@ void CMainController::poll_vendor()
|
|||||||
uint8_t p[SERIAL_PKT_SIZE] = {};
|
uint8_t p[SERIAL_PKT_SIZE] = {};
|
||||||
p[0] = USB_EVT_CONFIG_DATA;
|
p[0] = USB_EVT_CONFIG_DATA;
|
||||||
p[1] = i;
|
p[1] = i;
|
||||||
uint8_t offset = i * payload;
|
uint16_t offset = (uint16_t)i * payload;
|
||||||
for (uint8_t b = 0; b < payload; b++) {
|
for (uint8_t b = 0; b < payload; b++) {
|
||||||
if (offset + b < sz) p[2 + b] = raw[offset + b];
|
if (offset + b < sz) p[2 + b] = raw[offset + b];
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user