4141#include "drivers/accgyro/accgyro.h"
4242#include "drivers/bus_i2c.h"
4343#include "drivers/compass/compass.h"
44- #include "drivers/max7456.h"
45- #include "drivers/max7456_symbols.h"
44+ #include "drivers/display.h"
45+ #include "drivers/osd.h"
46+ #include "drivers/osd_symbols.h"
4647#include "drivers/pwm_mapping.h"
4748#include "drivers/sdcard.h"
4849#include "drivers/serial.h"
@@ -315,7 +316,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
315316 // 0 = no OSD
316317 // 1 = OSD slave (not supported in INAV)
317318 // 2 = OSD chip on board
318- #if defined(USE_OSD ) && defined( USE_MAX7456 )
319+ #if defined(USE_OSD )
319320 sbufWriteU8 (dst , 2 );
320321#else
321322 sbufWriteU8 (dst , 0 );
@@ -1020,13 +1021,9 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
10201021
10211022 case MSP_OSD_CONFIG :
10221023#ifdef USE_OSD
1023- sbufWriteU8 (dst , 1 ); // OSD supported
1024+ sbufWriteU8 (dst , OSD_DRIVER_MAX7456 ); // OSD supported
10241025 // send video system (AUTO/PAL/NTSC)
1025- #ifdef USE_MAX7456
10261026 sbufWriteU8 (dst , osdConfig ()-> video_system );
1027- #else
1028- sbufWriteU8 (dst , 0 );
1029- #endif
10301027 sbufWriteU8 (dst , osdConfig ()-> units );
10311028 sbufWriteU8 (dst , osdConfig ()-> rssi_alarm );
10321029 sbufWriteU16 (dst , currentBatteryProfile -> capacity .warning );
@@ -1038,7 +1035,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
10381035 sbufWriteU16 (dst , osdConfig ()-> item_pos [0 ][i ]);
10391036 }
10401037#else
1041- sbufWriteU8 (dst , 0 ); // OSD not supported
1038+ sbufWriteU8 (dst , OSD_DRIVER_NONE ); // OSD not supported
10421039#endif
10431040 break ;
10441041
@@ -2234,11 +2231,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
22342231 // set all the other settings
22352232 if ((int8_t )tmp_u8 == -1 ) {
22362233 if (dataSize >= 10 ) {
2237- #ifdef USE_MAX7456
22382234 osdConfigMutable ()-> video_system = sbufReadU8 (src );
2239- #else
2240- sbufReadU8 (src ); // Skip video system
2241- #endif
22422235 osdConfigMutable ()-> units = sbufReadU8 (src );
22432236 osdConfigMutable ()-> rssi_alarm = sbufReadU8 (src );
22442237 currentBatteryProfileMutable -> capacity .warning = sbufReadU16 (src );
@@ -2264,23 +2257,26 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
22642257 break ;
22652258
22662259 case MSP_OSD_CHAR_WRITE :
2267- #ifdef USE_MAX7456
22682260 if (dataSize >= 55 ) {
2269- max7456Character_t chr ;
2261+ osdCharacter_t chr ;
22702262 uint16_t addr ;
22712263 if (dataSize >= 56 ) {
2264+ // 16 bit character address
22722265 addr = sbufReadU16 (src );
22732266 } else {
2267+ // 8 bit character address, for backwards compatibility
22742268 addr = sbufReadU8 (src );
22752269 }
22762270 for (unsigned ii = 0 ; ii < sizeof (chr .data ); ii ++ ) {
22772271 chr .data [ii ] = sbufReadU8 (src );
22782272 }
2279- // !!TODO - replace this with a device independent implementation
2280- max7456WriteNvm (addr , & chr );
2281- } else
2273+ displayPort_t * osdDisplayPort = osdGetDisplayPort ();
2274+ if (osdDisplayPort ) {
2275+ displayWriteFontCharacter (osdDisplayPort , addr , & chr );
2276+ }
2277+ } else {
22822278 return MSP_RESULT_ERROR ;
2283- #endif // USE_MAX7456
2279+ }
22842280 break ;
22852281#endif // USE_OSD
22862282
0 commit comments