mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 01:35:35 +03:00
Add support for read/write MAX7456 NVM for chars > 256
Add max7456Character_t, which represents the data for character a single MAX7456 character. Use max7456Character_t to read and pass character data around. Change max7456WriteNvm() to accept a 2-byte character address. Change MSP handler for MSP_OSD_CHAR_WRITE to accept 2 byte character addresses. To keep backwards compatibility, check wether the caller sent 55 or 56 bytes. Add max7456ReadNvm() to read a character from the MAX7456 NVM, which will eventually be used for font metadata.
This commit is contained in:
parent
c442a57875
commit
324a994042
3 changed files with 137 additions and 44 deletions
|
@ -2140,13 +2140,18 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
case MSP_OSD_CHAR_WRITE:
|
||||
#ifdef USE_MAX7456
|
||||
if (dataSize >= 55) {
|
||||
uint8_t font_data[64];
|
||||
const uint8_t addr = sbufReadU8(src);
|
||||
for (int i = 0; i < 54; i++) {
|
||||
font_data[i] = sbufReadU8(src);
|
||||
max7456Character_t chr;
|
||||
uint16_t addr;
|
||||
if (dataSize >= 56) {
|
||||
addr = sbufReadU16(src);
|
||||
} else {
|
||||
addr = sbufReadU8(src);
|
||||
}
|
||||
for (unsigned ii = 0; ii < sizeof(chr.data); ii++) {
|
||||
chr.data[ii] = sbufReadU8(src);
|
||||
}
|
||||
// !!TODO - replace this with a device independent implementation
|
||||
max7456WriteNvm(addr, font_data);
|
||||
max7456WriteNvm(addr, &chr);
|
||||
} else
|
||||
return MSP_RESULT_ERROR;
|
||||
#endif // USE_MAX7456
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue