From 5bdd8f8994ed99b103d29b990230bdbac8d2a70e Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 11 Mar 2013 13:47:16 +0000 Subject: [PATCH] [X9D] Top bar --- src/general_menus.cpp | 2 +- src/icons.lbm | 4 +- src/icons.png | Bin 742 -> 731 bytes src/lcd.cpp | 32 ++++-------- src/lcd.h | 37 +++++++++++--- src/main_views.cpp | 106 +++++++++++++++++++++++++++++++++++----- src/open9x.h | 2 +- src/simpgmspace.cpp | 45 ++++++++--------- src/simu.cpp | 33 +++---------- src/x9d/hal.h | 2 + src/x9d/keys_driver.cpp | 7 ++- 11 files changed, 174 insertions(+), 96 deletions(-) diff --git a/src/general_menus.cpp b/src/general_menus.cpp index 137c2fb68..b1fe31c18 100644 --- a/src/general_menus.cpp +++ b/src/general_menus.cpp @@ -231,7 +231,7 @@ void menuGeneralSetup(uint8_t event) break; #endif -#if defined(BATTGRAPH) +#if defined(BATTGRAPH) || defined(PCBX9D) case ITEM_SETUP_BATT_RANGE: lcd_putsLeft(y, PSTR("Battery Range")); lcd_putc(g_eeGeneral.vBatMin >= 10 ? RADIO_SETUP_2ND_COLUMN+2*FW+FWNUM-1 : RADIO_SETUP_2ND_COLUMN+2*FW+FWNUM-FW/2, y, '-'); diff --git a/src/icons.lbm b/src/icons.lbm index 42c36f905..c259a31de 100644 --- a/src/icons.lbm +++ b/src/icons.lbm @@ -1,2 +1,2 @@ -48,8, -0x1d,0xe3,0xe3,0x1c,0x1c,0xdd,0xdd,0x3e,0xea,0x23,0x6b,0xb6,0xa1,0x9f,0xbf,0xc0,0xf9,0xef,0xff,0xe8,0xa1,0x9f,0xbf,0xc0,0xea,0x23,0x6b,0xb6,0x1c,0xdd,0xdd,0x3e,0x1d,0xe3,0xe3,0x1c,0x39,0xff,0xff,0x38,0x39,0xbb,0xbb,0x7c,0x7c,0x7d,0x7d,0xfe,0xfe,0xff,0xff,0xfe,0x29,0xd7,0xff,0x00,0x29,0xef,0xef,0x38,0xfe,0x93,0xff,0x92,0x7c,0x45,0x7d,0xc6,0x39,0xbb,0xbb,0x7c,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xff,0x41,0x41,0x41,0xff,0x7d,0x7d,0x7d,0xff,0x7d,0x7d,0x7d,0xff,0x7d,0x7d,0x7d,0xfd,0x7b,0x7b,0x79,0xfb,0x47,0x47,0x43,0xff,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xeb,0x6b,0x6b,0x6b,0xe3,0x7f,0x77,0x63,0xeb,0x5d,0x41,0x41,0xd5,0x55,0x55,0x55,0xeb,0x6b,0x6b,0x6b,0xff,0x7f,0x7f,0x7f,0xff,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xfb,0x47,0x47,0x43,0xff,0x7b,0x7b,0x7b,0xdb,0x67,0x67,0x43,0xff,0x5f,0x5f,0x5f,0xff,0x59,0x59,0x59,0xdd,0x67,0x63,0x41,0xff,0x79,0x79,0x79,0xff,0xff,0xff,0xff, +49,8, +0x1d,0xe3,0xe3,0x1c,0x1c,0xdd,0xdd,0x3e,0xea,0x23,0x6b,0xb6,0xa1,0x9f,0xbf,0xc0,0xf9,0xef,0xff,0xe8,0xa1,0x9f,0xbf,0xc0,0xea,0x23,0x6b,0xb6,0x1c,0xdd,0xdd,0x3e,0x1d,0xe3,0xe3,0x1c,0x39,0xff,0xff,0x38,0x39,0xbb,0xbb,0x7c,0x7c,0x7d,0x7d,0xfe,0xfe,0xff,0xff,0xfe,0x29,0xd7,0xff,0x00,0x29,0xef,0xef,0x38,0xfe,0x93,0xff,0x92,0x7c,0x45,0x7d,0xc6,0x39,0xbb,0xbb,0x7c,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xff,0x41,0x41,0x41,0xff,0x7d,0x7d,0x7d,0xff,0x7d,0x7d,0x7d,0xff,0x7d,0x7d,0x7d,0xff,0x7d,0x7d,0x7d,0xfd,0x7b,0x7b,0x79,0xfb,0x47,0x47,0x43,0xff,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xff,0x7f,0x7f,0x7f,0xe3,0x7f,0x77,0x63,0xdd,0x7f,0x63,0x41,0xdd,0x7f,0x41,0x41,0xdd,0x7f,0x63,0x41,0xe3,0x7f,0x77,0x63,0xff,0x7f,0x7f,0x7f,0xff,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x7f,0xfb,0x47,0x47,0x43,0xff,0x7b,0x7b,0x7b,0xdb,0x67,0x67,0x43,0xff,0x5f,0x5f,0x5f,0xff,0x59,0x59,0x59,0xdd,0x67,0x63,0x41,0xff,0x79,0x79,0x79,0xff,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff, diff --git a/src/icons.png b/src/icons.png index f9ee6f30743aad996a242eb494920cd2248220c7..ac417ca234e15313cb8db2601d235f5729f47cc7 100644 GIT binary patch delta 645 zcmV;00($-C1=|H7iBL{Q4GJ0x0000DNk~Le0000n000082nGNE08r@{d66MM2nz}; zA;nuTVUcJke>O=(K~y-)#gnm0D?t>7zsUw-R(8S0Mu?4861Eod02V&Mc485*6SwyT zb`dQkAmel^zDEjM$#!d_VHybp3^)o|=T^JAM!gmn?hl6<4&RwM{~1P{oSfK3qruYB z63@@ilyY5{mzNjb-rlO*XYM0&czDSFQls5&GairWfA{lqK4Jf6^^BkqruNu}`b9#D;*81HIg5yvrEmf?9Gd7cx;F#y(DthJmuO{%i9ee>I=a7jnblkXEaOwU$<^#c(+MRb4sw zN`t|`Mp0w|dwqRfTcaqlgTcT8wMf&nTFZSI)9G}9|0%DOvU#3crPPmgQcA0}wpwc| zrK~aH?Ci`sj)UiU+}_@jBnd}HM+8B@Y&N4P3Ovsv%QBKA0pQ}|0wDyh>k@`x^?&}C zPntpq0B&w>I6prJAW0Gq4i4Db+Cm7yY&K(abF*qz2!RlyGO)3+0l;)R<>~3^+sl04 fXJuvOpL2fz)W%le32|1?B}IiBL{Q4GJ0x0000DNk~Le0000m000082nGNE0KY4IN0A{v2nY`~ zH}SC7>XB$De?dt^K~y-)#gn~CD?u2BpV>`eR%THI8zE`5l3?u}Sa=27iABIp+}<15 zMPeZV8Os%WFTz%`om#A63T+ay;H1cAP9eKwHOeUtoCiMU@12?V`-Tx07Z=uX99C9V z`1tss#Pd9+(<$@$yqf!}ThyGMp7K9%n$0G|;gD{(e~a(?G#U+j->2K{G8_(RHk-Jv z%c4$7`At)jWmy$kYi@3Cel?I~8RPNzuMKOh>GgVOtv?e;)08NR2*VI#44&s2tUJv|Xc5dhX&thFRbLKH#ryj^N+|$}qF{f2pQ0!LXt=HmK&R7THk)yLe2h|xPNxHa>$)5r9n}t9 zU0o#z0+J*lNfLq}__1P}o10a&N`w$dDS3H$;qC2>$z+1#I0zxI*4DHK2M4t?TCEnZ zudlRPtNJ| z?=zpzznNdQw=8N!zu&iE7+S#I-QCsNFbr+K-?u<5k|e3xvR}q%H2S7rHdjWLWp+Fs z|F~Z6RZ3Z{wbfc%rBt;pE-x>w>$*rOd3<~%j$_Ww&e+@ABhPb+qCiSXnx@2Y48ZmE zS~WrlJkKKtg6hBg4;n%U03IG5xVpLmAdX{BPEOd}-9-pNp6BfB>{LdD5C|bE^V{3o q0E|W>CX>n1i+tZ_eSQ6(>;3@pOkV=0; i--) { uint8_t b = pgm_read_byte(q--); @@ -199,7 +183,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } else if (flags & TINSIZE) { q = &font_3x5[((uint16_t)c-0x2D)*3+2]; - uint8_t ym8 = (y % 8); + uint8_t ym8 = (y & 0x07); p += 3; for (int8_t i=3; i>=0; i--) { uint8_t b = (i!=3 ? pgm_read_byte(q--) : 0); @@ -224,7 +208,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) condense=1; } - uint8_t ym8 = (y % 8); + uint8_t ym8 = (y & 0x07); p += 5; for (int8_t i=5; i>=0; i--) { uint8_t b = (i!=5 ? pgm_read_byte(q--) : 0); @@ -482,6 +466,10 @@ void lcd_mask(uint8_t *p, uint8_t mask, LcdFlags att) { ASSERT_IN_DISPLAY(p); + if ((att&FILL_WHITE) && ((*p&mask) || (*(p+DISPLAY_PLAN_SIZE)&mask) || (*(p+2*DISPLAY_PLAN_SIZE)&mask) || (*(p+3*DISPLAY_PLAN_SIZE)&mask))) { + return; + } + if (!(att & GREY(1))) { if (att & FORCE) *p |= mask; @@ -579,7 +567,7 @@ void lcd_vlineStip(xcoord_t x, int8_t y, int8_t h, uint8_t pat) pat = ~pat; uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; - y = y % 8; + y = (y & 0x07); if (y) { ASSERT_IN_DISPLAY(p); *p ^= ~(BITMASK(y)-1) & pat; @@ -612,7 +600,7 @@ void lcd_vlineStip(xcoord_t x, int8_t y, int8_t h, uint8_t pat, LcdFlags att) pat = ~pat; uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; - y = y % 8; + y = (y & 0x07); if (y) { ASSERT_IN_DISPLAY(p); uint8_t msk = ~(BITMASK(y)-1); diff --git a/src/lcd.h b/src/lcd.h index 68d98b3cc..bd837c0a6 100644 --- a/src/lcd.h +++ b/src/lcd.h @@ -107,6 +107,9 @@ #define FORCE 0x02 #define ERASE 0x04 #define ROUND 0x08 +#if defined(PCBX9D) + #define FILL_WHITE 0x10 +#endif /* switches flags */ #define SWCONDENSED 0x20 /* means that THRm will be displayed as THR */ @@ -115,17 +118,18 @@ #define NO_UNIT 0x40 #if defined(CPUARM) -#define MIDSIZE 0x0100 -#define SMLSIZE 0x0200 -#define TINSIZE 0x0400 + #define MIDSIZE 0x0100 + #define SMLSIZE 0x0200 + #define TINSIZE 0x0400 #else -#define MIDSIZE DBLSIZE -#define SMLSIZE 0x00 -#define TINSIZE 0x00 + #define MIDSIZE DBLSIZE + #define SMLSIZE 0x00 + #define TINSIZE 0x00 #endif #if defined(PCBX9D) #define GREY(x) ((x) * 0x1000) +#define GREY_DEFAULT GREY(8) #define GREY_MASK(x) ((x) & 0xF000) #endif @@ -234,7 +238,8 @@ void lcdDrawTelemetryTopBar(); lcd_vline(x+5, y+8, 2); extern void lcd_img(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t idx, LcdFlags att=0); -extern void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img); +extern void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t offset=0, uint8_t width=0); +#define LCD_ICON(x, y, icon) lcd_bmp(x, y, icons, icon) extern void lcdSetRefVolt(unsigned char val); extern void lcdInit(); extern void lcd_clear(); @@ -253,5 +258,23 @@ extern bool lcd_refresh; extern uint8_t lcd_buf[DISPLAY_BUF_SIZE]; #endif +#define LCD_BYTE_FILTER_PLAN(p, keep, add) *(p) = (*(p) & (keep)) | (add) + +#if defined(PCBX9D) +#define LCD_BYTE_FILTER(p, keep, add) \ + do { \ + if (!(flags & GREY(1))) \ + LCD_BYTE_FILTER_PLAN(p, keep, add); \ + if (!(flags & GREY(2))) \ + LCD_BYTE_FILTER_PLAN((p+DISPLAY_PLAN_SIZE), keep, add); \ + if (!(flags & GREY(4))) \ + LCD_BYTE_FILTER_PLAN((p+2*DISPLAY_PLAN_SIZE), keep, add); \ + if (!(flags & GREY(8))) \ + LCD_BYTE_FILTER_PLAN((p+3*DISPLAY_PLAN_SIZE), keep, add); \ + } while (0) +#else +#define LCD_BYTE_FILTER(p, keep, add) LCD_BYTE_FILTER_PLAN(p, keep, add) +#endif + #endif /*eof*/ diff --git a/src/main_views.cpp b/src/main_views.cpp index ee6d8a4d3..84990e780 100644 --- a/src/main_views.cpp +++ b/src/main_views.cpp @@ -43,7 +43,8 @@ #define LBOX_CENTERY (LCD_H-BOX_WIDTH/2-10) #define RBOX_CENTERX (LCD_W-LBOX_CENTERX) #define RBOX_CENTERY LBOX_CENTERY -#define MODELNAME_X (13) +#define MODELNAME_X (15) +#define MODELNAME_Y (10) #define VBATT_X (MODELNAME_X+26) #define VBATT_Y (FH+3) #define VBATTUNIT_X (VBATT_X-2) @@ -54,8 +55,8 @@ #define PHASE_Y (3*FH) #define PHASE_FLAGS (0) #define TIMERS_X 144 -#define TIMER1_Y 0 -#define TIMER2_Y VBATT_Y +#define TIMER1_Y 20 +#define TIMER2_Y 45 #define TIMERS_R 192 #define REBOOT_X (LCD_W-FW) #define VSWITCH_X(i) (((i>=NUM_CSW*3/4) ? BITMAP_X+28 : ((i>=NUM_CSW/2) ? BITMAP_X+25 : ((i>=NUM_CSW/4) ? 21 : 18))) + 3*i) @@ -73,6 +74,7 @@ #define RBOX_CENTERX (3*LCD_W/4 - 10) #define RBOX_CENTERY LBOX_CENTERY #define MODELNAME_X (2*FW-2) +#define MODELNAME_Y (0) #define PHASE_X (6*FW) #define PHASE_Y (2*FH) #define PHASE_FLAGS 0 @@ -98,6 +100,16 @@ const pm_uchar x9d_logo[] PROGMEM = { #include "x9d_logo.lbm" }; + + const pm_uchar icons[] PROGMEM = { + #include "icons.lbm" + }; + + #define ICON_RSSI 0, 9 + #define ICON_SPEAKER 9, 9 + #define ICON_SD 18, 11 + #define ICON_LOGS 28, 11 + #define ICON_TRAINER 38, 11 #endif void drawPotsBars() @@ -173,7 +185,7 @@ void displayTrims(uint8_t phase) } } -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) void displaySliders() { for (uint8_t i=NUM_STICKS; i= 212 @@ -195,7 +271,7 @@ void displayTimers() // Main timer if (g_model.timers[0].mode) { putsTime(TIMERS_X, TIMER1_Y, s_timerVal[0], MIDSIZE|LEFT, MIDSIZE|LEFT); - putsTmrMode(TIMERS_X-16, TIMER1_Y+5, g_model.timers[0].mode, SWCONDENSED|SMLSIZE); + putsTmrMode(TIMERS_X, TIMER1_Y-6, g_model.timers[0].mode, SWCONDENSED|SMLSIZE); if (g_model.timers[0].persistent) lcd_putcAtt(TIMERS_R, TIMER1_Y+1, 'P', SMLSIZE); if (s_timerVal[0] < 0) lcd_hline(TIMERS_X-6, TIMER1_Y+2, 4); } @@ -203,7 +279,7 @@ void displayTimers() // Second timer if (g_model.timers[1].mode) { putsTime(TIMERS_X, TIMER2_Y, s_timerVal[1], MIDSIZE|LEFT, MIDSIZE|LEFT); - putsTmrMode(TIMERS_X-16, TIMER2_Y+5, g_model.timers[1].mode, SWCONDENSED|SMLSIZE); + putsTmrMode(TIMERS_X, TIMER2_Y-6, g_model.timers[1].mode, SWCONDENSED|SMLSIZE); if (g_model.timers[1].persistent) lcd_putcAtt(TIMERS_R, TIMER2_Y+1, 'P', SMLSIZE); if (s_timerVal[1] < 0) lcd_hline(TIMERS_X-6, TIMER2_Y+2, 4); } @@ -443,28 +519,31 @@ void menuMainView(uint8_t event) lcd_putsnAtt(PHASE_X, PHASE_Y, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR|PHASE_FLAGS); // Model Name - putsModelName(MODELNAME_X, 0*FH, g_model.name, g_eeGeneral.currModel, BIGSIZE); + putsModelName(MODELNAME_X, MODELNAME_Y, g_model.name, g_eeGeneral.currModel, BIGSIZE); +#if !defined(PCBX9D) // Main Voltage (or alarm if any) displayVoltageOrAlarm(); // Timers displayTimers(); +#endif // Trims sliders displayTrims(phase); } -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) + // Top bar + displayTopBar(); + // Sliders (Pots / Sliders) displaySliders(); -#if defined(PCBX9D) if (modelBitmapLoaded == NULL) lcd_bmp(BITMAP_X, BITMAP_Y, modelBitmap); else lcd_bmp(BITMAP_X, BITMAP_Y, x9d_logo); -#endif // Switches for (uint8_t i=0; i<8; i++) { @@ -489,10 +568,13 @@ void menuMainView(uint8_t event) break; } } - putsSwitches((g_eeGeneral.view == VIEW_SWITCHES) ? (i<4 ? 3*FW+2 : 8*FW-1) : (i<4 ? 8*FW+3 : 24*FW+1), (i%4)*FH+3*FH, sw, 0); + putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (i<4 ? 8*FW+3 : 24*FW+1) : (i<4 ? 3*FW+2 : 8*FW-1), (i%4)*FH+3*FH, sw, 0); } - if (g_eeGeneral.view == VIEW_INPUTS) { + if (g_eeGeneral.view == VIEW_TIMERS) { + displayTimers(); + } + else if (g_eeGeneral.view == VIEW_INPUTS) { // Sticks doMainScreenGraphics(); } diff --git a/src/open9x.h b/src/open9x.h index b850c719e..152537beb 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -68,7 +68,7 @@ #define IF_CPUARM(x) #endif -#if defined(BATTGRAPH) +#if defined(BATTGRAPH) || defined(PCBX9D) #define IF_BATTGRAPH(x) x, #else #define IF_BATTGRAPH(x) diff --git a/src/simpgmspace.cpp b/src/simpgmspace.cpp index 0b1a0a54c..5168fc88c 100644 --- a/src/simpgmspace.cpp +++ b/src/simpgmspace.cpp @@ -46,7 +46,7 @@ uint16_t dummyport16; const char *eepromFile = NULL; FILE *fp = NULL; -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) uint32_t Peri1_frequency ; uint32_t Peri2_frequency ; GPIO_TypeDef gpioa; @@ -77,12 +77,18 @@ extern const char* eeprom_buffer_data; uint8_t eeprom[EESIZE]; sem_t *eeprom_write_sem; - #if defined(CPUARM) +#if defined(PCBX9D) +#define SWITCH_CASE(swtch, pin, mask) \ + case swtch: \ + if (state) pin &= ~(mask); else pin |= (mask); \ + break; +#else #define SWITCH_CASE(swtch, pin, mask) \ case swtch: \ if (state) pin |= (mask); else pin &= ~(mask); \ break; +#endif #define SWITCH_3_CASE(swtch, pin1, pin2, mask1, mask2) \ case swtch: \ if (state < 0) pin1 &= ~(mask1); else pin1 |= (mask1); \ @@ -115,11 +121,7 @@ void simuSetKey(uint8_t key, bool state) switch (key) { KEY_CASE(KEY_MENU, GPIO_BUTTON_MENU, PIN_BUTTON_MENU) KEY_CASE(KEY_EXIT, GPIO_BUTTON_EXIT, PIN_BUTTON_EXIT) -#if defined(PCBACT) - KEY_CASE(KEY_CLR, GPIO_BUTTON_CLR, PIN_BUTTON_CLR) - KEY_CASE(KEY_PAGE, GPIO_BUTTON_PAGE, PIN_BUTTON_PAGE) - KEY_CASE(BTN_REa, GPIO_BUTTON_ENTER, PIN_BUTTON_ENTER) -#elif defined(PCBX9D) +#if defined(PCBX9D) KEY_CASE(KEY_ENTER, GPIO_BUTTON_ENTER, PIN_BUTTON_ENTER) KEY_CASE(KEY_PAGE, GPIO_BUTTON_PAGE, PIN_BUTTON_PAGE) KEY_CASE(KEY_MINUS, GPIO_BUTTON_MINUS, PIN_BUTTON_MINUS) @@ -160,16 +162,15 @@ void simuSetSwitch(uint8_t swtch, int8_t state) { // printf("swtch=%d state=%d\n", swtch, state); fflush(stdout); switch (swtch) { -#if defined(PCBACT) -#elif defined(PCBX9D) - SWITCH_3_CASE(0, GPIOB->IDR, GPIOE->IDR, PIN_SW_A_H, PIN_SW_A_L) - SWITCH_3_CASE(1, GPIOB->IDR, GPIOB->IDR, PIN_SW_B_H, PIN_SW_B_L) - SWITCH_3_CASE(2, GPIOB->IDR, GPIOE->IDR, PIN_SW_C_H, PIN_SW_C_L) - SWITCH_3_CASE(3, GPIOE->IDR, GPIOE->IDR, PIN_SW_D_H, PIN_SW_D_L) - SWITCH_3_CASE(4, GPIOB->IDR, GPIOB->IDR, PIN_SW_E_H, PIN_SW_E_L) - SWITCH_CASE(5, GPIOE->IDR, PIN_SW_F) - SWITCH_3_CASE(6, GPIOA->IDR, GPIOB->IDR, PIN_SW_G_H, PIN_SW_G_L) - SWITCH_CASE(7, GPIOE->IDR, PIN_SW_H) +#if defined(PCBX9D) + SWITCH_3_CASE(0, GPIO_PIN_SW_A_L, GPIO_PIN_SW_A_H, PIN_SW_A_L, PIN_SW_A_H) + SWITCH_3_CASE(1, GPIO_PIN_SW_B_L, GPIO_PIN_SW_B_H, PIN_SW_B_L, PIN_SW_B_H) + SWITCH_3_CASE(2, GPIO_PIN_SW_C_L, GPIO_PIN_SW_C_H, PIN_SW_C_L, PIN_SW_C_H) + SWITCH_3_CASE(3, GPIO_PIN_SW_D_L, GPIO_PIN_SW_D_H, PIN_SW_D_L, PIN_SW_D_H) + SWITCH_3_CASE(4, GPIO_PIN_SW_E_H, GPIO_PIN_SW_E_L, PIN_SW_E_H, PIN_SW_E_L) + SWITCH_CASE(5, GPIO_PIN_SW_F, PIN_SW_F) + SWITCH_3_CASE(6, GPIO_PIN_SW_G_L, GPIO_PIN_SW_G_H, PIN_SW_G_L, PIN_SW_G_H) + SWITCH_CASE(7, GPIO_PIN_SW_H, PIN_SW_H) #elif defined(PCBSKY9X) SWITCH_CASE(0, PIOC->PIO_PDSR, 1<<20) SWITCH_CASE(1, PIOA->PIO_PDSR, 1<<15) @@ -211,7 +212,7 @@ uint16_t getTmr16KHz() return get_tmr10ms() * 160; } -#if !defined(PCBX9D) && !defined(PCBACT) +#if !defined(PCBX9D) bool eeprom_thread_running = true; void *eeprom_write_function(void *) { @@ -342,7 +343,7 @@ void StartEepromThread(const char *filename) sem_init(eeprom_write_sem, 0, 0); #endif -#if !defined(PCBX9D) && !defined(PCBACT) +#if !defined(PCBX9D) eeprom_thread_running = true; assert(!pthread_create(&eeprom_thread_pid, NULL, &eeprom_write_function, NULL)); #endif @@ -350,14 +351,14 @@ void StartEepromThread(const char *filename) void StopEepromThread() { -#if !defined(PCBX9D) && !defined(PCBACT) +#if !defined(PCBX9D) eeprom_thread_running = false; sem_post(eeprom_write_sem); pthread_join(eeprom_thread_pid, NULL); #endif } -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) void eeprom_read_block (void *pointer_ram, uint16_t pointer_eeprom, size_t size) #else void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t size) @@ -375,7 +376,7 @@ void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t si } } -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t size) { assert(size); diff --git a/src/simu.cpp b/src/simu.cpp index ea1cbc01f..ba6303ce9 100644 --- a/src/simu.cpp +++ b/src/simu.cpp @@ -236,13 +236,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) if(hasFocus()) { static int keys1[]={ -#if defined(PCBACT) - KEY_Page_Up, KEY_MENU, - KEY_BackSpace, KEY_EXIT, - KEY_Page_Down, KEY_PAGE, - KEY_Clear, KEY_CLR, - KEY_Return, BTN_REa, -#elif defined(PCBX9D) +#if defined(PCBX9D) KEY_Page_Up, KEY_MENU, KEY_Page_Down, KEY_PAGE, KEY_Return, KEY_ENTER, @@ -276,22 +270,6 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) simuSetKey(keys1[i+1], getApp()->getKeyState(keys1[i])); } -#if defined(PCBACT) - static bool rotencState = false; - if (rotencState) { - if (!getApp()->getKeyState(KEY_Right) && !getApp()->getKeyState(KEY_Left)) - rotencState = false; - } - else if (getApp()->getKeyState(KEY_Right)) { - g_rotenc[0] -= 1; - rotencState = true; - } - else if (getApp()->getKeyState(KEY_Left)) { - g_rotenc[0] += 1; - rotencState = true; - } -#endif - #ifdef __APPLE__ // gruvin: Can't use Function keys on the Mac -- too many other app conflicts. // The ordering of these keys, Q/W,E/R,T/Y,U/I matches the on screen @@ -335,7 +313,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) } \ simuSetSwitch(swtch, state_##swtch-states); -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) SWITCH_KEY(A, 0, 3); SWITCH_KEY(B, 1, 3); SWITCH_KEY(C, 2, 3); @@ -361,7 +339,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) return 0; } -#if defined(PCBX9D) || defined(PCBACT) +#if defined(PCBX9D) #define BL_COLOR FXRGB(47,123,227) #else #define BL_COLOR FXRGB(150,200,152) @@ -463,6 +441,11 @@ int main(int argc,char **argv) StartEepromThread(argc >= 2 ? argv[1] : "eeprom.bin"); StartMainThread(); +#if defined(PCBX9D) + simuSetSwitch(0, 0); + simuSetSwitch(1, 0); +#endif + return application.run(); } diff --git a/src/x9d/hal.h b/src/x9d/hal.h index b2a2f1961..1c4a98545 100644 --- a/src/x9d/hal.h +++ b/src/x9d/hal.h @@ -53,6 +53,8 @@ #define PIN_SW_F GPIO_Pin_14 //PE.14 #endif +#define GPIO_PIN_SW_E_L GPIOB->IDR +#define GPIO_PIN_SW_E_H GPIOB->IDR #define PIN_SW_E_L GPIO_Pin_3 //PB.03 #define PIN_SW_E_H GPIO_Pin_4 //PB.04 diff --git a/src/x9d/keys_driver.cpp b/src/x9d/keys_driver.cpp index 4cdc45581..5ab40590e 100644 --- a/src/x9d/keys_driver.cpp +++ b/src/x9d/keys_driver.cpp @@ -119,7 +119,6 @@ void readKeysAndTrims() bool switchState(EnumKeys enuk) { - register uint32_t b = GPIOB->IDR; register uint32_t xxx = 0; if (enuk < (int) DIM(keys)) return keys[enuk].state() ? 1 : 0; @@ -178,13 +177,13 @@ bool switchState(EnumKeys enuk) break; case SW_SE0: - xxx = (~b & PIN_SW_E_H) && (b & PIN_SW_E_L); + xxx = (~GPIO_PIN_SW_E_H & PIN_SW_E_H) && (GPIO_PIN_SW_E_L & PIN_SW_E_L); break; case SW_SE1: - xxx = (b & PIN_SW_E_H) && (b & PIN_SW_E_L); + xxx = (GPIO_PIN_SW_E_H & PIN_SW_E_H) && (GPIO_PIN_SW_E_L & PIN_SW_E_L); break; case SW_SE2: - xxx = (b & PIN_SW_E_H) && (~b & PIN_SW_E_L); + xxx = (GPIO_PIN_SW_E_H & PIN_SW_E_H) && (~GPIO_PIN_SW_E_L & PIN_SW_E_L); break; case SW_SF0: