From e9868c4e378cddf9e9239b954c4182b7b6ffe4c3 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 16 Jun 2016 19:16:31 -0700 Subject: [PATCH] namespace a few vars add some #defines for clarity --- src/main/config/config.c | 3 ++- src/main/drivers/max7456.c | 38 ++++++++++++++++++-------------------- src/main/drivers/max7456.h | 30 +++++++++++++++++++++++++++++- src/main/io/osd.c | 2 +- src/main/io/osd.h | 3 ++- src/main/io/serial_cli.c | 2 +- src/main/io/serial_msp.c | 2 +- 7 files changed, 54 insertions(+), 26 deletions(-) diff --git a/src/main/config/config.c b/src/main/config/config.c index 3d39672e5..137cdf3b0 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -38,6 +38,7 @@ #include "drivers/serial.h" #include "drivers/gyro_sync.h" #include "drivers/pwm_output.h" +#include "drivers/max7456.h" #include "sensors/sensors.h" #include "sensors/gyro.h" @@ -421,7 +422,7 @@ static void resetConf(void) #ifdef OSD featureSet(FEATURE_OSD); - masterConfig.osdProfile.system = 0; + masterConfig.osdProfile.video_system = AUTO; masterConfig.osdProfile.item_pos[OSD_MAIN_BATT_VOLTAGE] = -29; masterConfig.osdProfile.item_pos[OSD_RSSI_VALUE] = -59; masterConfig.osdProfile.item_pos[OSD_TIMER] = -39; diff --git a/src/main/drivers/max7456.c b/src/main/drivers/max7456.c index 2911b6894..497fd6289 100644 --- a/src/main/drivers/max7456.c +++ b/src/main/drivers/max7456.c @@ -31,20 +31,18 @@ #include "drivers/system.h" #include "max7456.h" +#include "max7456_symbols.h" #define DISABLE_MAX7456 IOHi(max7456CsPin) #define ENABLE_MAX7456 IOLo(max7456CsPin) static IO_t max7456CsPin = IO_NONE; -/** PAL or NTSC, value is number of chars total */ -#define VIDEO_BUFFER_CHARS_NTSC 390 -#define VIDEO_BUFFER_CHARS_PAL 480 uint16_t max_screen_size; uint8_t video_signal_type = 0; uint8_t max7456_lock = 0; -char screen[VIDEO_BUFFER_CHARS_PAL]; +char max7456_screen[VIDEO_BUFFER_CHARS_PAL]; uint8_t max7456_send(uint8_t add, uint8_t data) { @@ -53,11 +51,11 @@ uint8_t max7456_send(uint8_t add, uint8_t data) { } -void max7456_init(uint8_t system) { +void max7456_init(uint8_t video_system) { uint8_t max_screen_rows; uint8_t srdata = 0; uint16_t x; - char buf[30]; + char buf[LINE]; #ifdef MAX7456_SPI_CS_PIN max7456CsPin = IOGetByTag(IO_TAG(MAX7456_SPI_CS_PIN)); @@ -83,21 +81,21 @@ void max7456_init(uint8_t system) { } // Override detected type: 0-AUTO, 1-PAL, 2-NTSC - switch(system) { - case 1: + switch(video_system) { + case PAL: video_signal_type = VIDEO_MODE_PAL; break; - case 2: + case NTSC: video_signal_type = VIDEO_MODE_NTSC; break; } if (video_signal_type) { //PAL max_screen_size = VIDEO_BUFFER_CHARS_PAL; - max_screen_rows = 16; + max_screen_rows = VIDEO_LINES_PAL; } else { // NTSC max_screen_size = VIDEO_BUFFER_CHARS_NTSC; - max_screen_rows = 13; + max_screen_rows = VIDEO_LINES_NTSC; } // set all rows to same charactor black/white level @@ -114,13 +112,13 @@ void max7456_init(uint8_t system) { x = 160; for (int i = 1; i < 5; i++) { for (int j = 3; j < 27; j++) - screen[i * 30 + j] = (char)x++; + max7456_screen[i * LINE + j] = (char)x++; } tfp_sprintf(buf, "BF VERSION: %s", FC_VERSION_STRING); - max7456_write_string(buf, 5*30+5); - max7456_write_string("MENU: THRT MID", 6*30+7); - max7456_write_string("YAW RIGHT", 7*30+13); - max7456_write_string("PITCH UP", 8*30+13); + max7456_write_string(buf, LINE06+5); + max7456_write_string("MENU: THRT MID", LINE07+7); + max7456_write_string("YAW RIGHT", LINE08+13); + max7456_write_string("PITCH UP", LINE09+13); max7456_draw_screen(); } @@ -144,8 +142,8 @@ void max7456_draw_screen(void) { for (xx = 0; xx < max_screen_size; ++xx) { max7456_send(MAX7456ADD_DMAH, xx>>8); max7456_send(MAX7456ADD_DMAL, xx); - max7456_send(MAX7456ADD_DMDI, screen[xx]); - screen[xx] = ' '; + max7456_send(MAX7456ADD_DMDI, max7456_screen[xx]); + max7456_screen[xx] = ' '; } DISABLE_MAX7456; } @@ -159,8 +157,8 @@ void max7456_draw_screen_fast(void) { max7456_send(MAX7456ADD_DMAL, 0); max7456_send(MAX7456ADD_DMM, 1); for (xx = 0; xx < max_screen_size; ++xx) { - max7456_send(MAX7456ADD_DMDI, screen[xx]); - screen[xx] = ' '; + max7456_send(MAX7456ADD_DMDI, max7456_screen[xx]); + max7456_screen[xx] = ' '; } max7456_send(MAX7456ADD_DMDI, 0xFF); max7456_send(MAX7456ADD_DMM, 0); diff --git a/src/main/drivers/max7456.h b/src/main/drivers/max7456.h index 86bd4dd1e..d14d0c0dd 100644 --- a/src/main/drivers/max7456.h +++ b/src/main/drivers/max7456.h @@ -114,8 +114,36 @@ #define WRITE_NVR 0xA0 #define STATUS_REG_NVR_BUSY 0x20 +/** Line multiples, for convenience & one less op at runtime **/ +#define LINE 30 +#define LINE01 0 +#define LINE02 30 +#define LINE03 60 +#define LINE04 90 +#define LINE05 120 +#define LINE06 150 +#define LINE07 180 +#define LINE08 210 +#define LINE09 240 +#define LINE10 270 +#define LINE11 300 +#define LINE12 330 +#define LINE13 360 +#define LINE14 390 +#define LINE15 420 +#define LINE16 450 + + +/** PAL or NTSC, value is number of chars total */ +#define VIDEO_BUFFER_CHARS_NTSC 390 +#define VIDEO_BUFFER_CHARS_PAL 480 +#define VIDEO_LINES_NTSC 13 +#define VIDEO_LINES_PAL 16 + +enum VIDEO_TYPES { AUTO = 0, PAL, NTSC }; + extern uint16_t max_screen_size; -char screen[480]; +char max7456_screen[VIDEO_BUFFER_CHARS_PAL]; void max7456_init(uint8_t system); diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 16a3ec96c..2236fabe6 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -714,7 +714,7 @@ void osdInit(void) rtc6705_soft_spi_set_channel(vtx_freq[current_vtx_channel]); rtc6705_soft_spi_set_rf_power(masterConfig.vtx_power); #endif - max7456_init(masterConfig.osdProfile.system); + max7456_init(masterConfig.osdProfile.video_system); } diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 688a0872f..a1f71e586 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -53,7 +53,8 @@ typedef enum { typedef struct { - uint8_t system; + // AUTO / PAL / NTSC in VIDEO_TYPES enum + uint8_t video_system; int16_t item_pos[OSD_MAX_ITEMS]; } osd_profile; diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index e8d5ae937..e08e93228 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -809,7 +809,7 @@ const clivalue_t valueTable[] = { { "vtx_power", VAR_UINT8 | MASTER_VALUE, &masterConfig.vtx_power, .config.minmax = { 0, 1 } }, #endif #ifdef OSD - { "osd_system", VAR_UINT8 | MASTER_VALUE, &masterConfig.osdProfile.system, .config.minmax = { 0, 2 } }, + { "osd_video_system", VAR_UINT8 | MASTER_VALUE, &masterConfig.osdProfile.video_system, .config.minmax = { 0, 2 } }, { "osd_main_voltage_pos", VAR_INT16 | MASTER_VALUE, &masterConfig.osdProfile.item_pos[OSD_MAIN_BATT_VOLTAGE], .config.minmax = { -480, 480 } }, { "osd_rssi_pos", VAR_INT16 | MASTER_VALUE, &masterConfig.osdProfile.item_pos[OSD_RSSI_VALUE], .config.minmax = { -480, 480 } }, { "osd_timer_pos", VAR_INT16 | MASTER_VALUE, &masterConfig.osdProfile.item_pos[OSD_TIMER], .config.minmax = { -480, 480 } }, diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index fe3d2cf8e..f1a5e8d31 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -1524,7 +1524,7 @@ static bool processInCommand(void) #endif #ifdef OSD case MSP_SET_OSD_CONFIG: - masterConfig.osdProfile.system = read8(); + masterConfig.osdProfile.video_system = read8(); for (i = 0; i < OSD_MAX_ITEMS; i++) masterConfig.osdProfile.item_pos[i] = read16(); break;