small code cleanup
This commit is contained in:
		
							parent
							
								
									b27fb216ef
								
							
						
					
					
						commit
						52f671c23e
					
				
					 3 changed files with 212 additions and 578 deletions
				
			
		|  | @ -1,385 +0,0 @@ | ||||||
| flabbergast's TMK/ChibiOS port |  | ||||||
| ============================== |  | ||||||
| 2015/10/16 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Build |  | ||||||
| ----- |  | ||||||
| $ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git |  | ||||||
| 
 |  | ||||||
| $ cd tmk_keyboard |  | ||||||
| $ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios |  | ||||||
| or |  | ||||||
| $ cd tmk_keyboard/tmk_core/tool/chibios |  | ||||||
| $ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios |  | ||||||
| 
 |  | ||||||
| $ cd tmk_keyboard/keyboard/infinity_chibios |  | ||||||
| $ make |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Chibios Configuration |  | ||||||
| --------------------- |  | ||||||
| halconf.h: for HAL configuration |  | ||||||
|     placed in project directory |  | ||||||
|     read in chibios/os/hal/hal.mk |  | ||||||
|     included in chibios/os/hal/include/hal.h |  | ||||||
| mcuconf.h: for MCU configuration |  | ||||||
|     placed in project directory |  | ||||||
|     included in halconf.h |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Chibios Term |  | ||||||
| ------------ |  | ||||||
| PAL = Port Abstraction Layer |  | ||||||
|     palWritePad |  | ||||||
|     palReadPad |  | ||||||
|     palSetPad |  | ||||||
|     chibios/os/hal/include/pal.h |  | ||||||
| 
 |  | ||||||
| LLD = Low Level Driver |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Makefile |  | ||||||
| -------- |  | ||||||
|     #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) |  | ||||||
|     MCU_FAMILY = KINETIS |  | ||||||
|     MCU_SERIES = KL2x |  | ||||||
| 
 |  | ||||||
|     # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ |  | ||||||
|     #   or <this_dir>/ld/ |  | ||||||
|     MCU_LDSCRIPT = MKL26Z64 |  | ||||||
| 
 |  | ||||||
|     #  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/ |  | ||||||
|     MCU_STARTUP = kl2x |  | ||||||
| 
 |  | ||||||
|     # Board: it should exist either in <chibios>/os/hal/boards/ |  | ||||||
|     #  or <this_dir>/boards |  | ||||||
|     BOARD = PJRC_TEENSY_LC |  | ||||||
| 
 |  | ||||||
|     MCU  = cortex-m0 |  | ||||||
| 
 |  | ||||||
|     # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 |  | ||||||
|     ARMV = 6 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| halconf.h |  | ||||||
| --------- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| mcuconf.h |  | ||||||
| --------- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| chconf.h |  | ||||||
| -------- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ld script |  | ||||||
| --------- |  | ||||||
| --- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld     2015-10-15 09:08:58.732904304 +0900 |  | ||||||
| +++ ld/MKL26Z64.ld      2015-10-15 08:48:06.430215496 +0900 |  | ||||||
| @@ -27,7 +27,8 @@ |  | ||||||
|  { |  | ||||||
|    flash0   :  org = 0x00000000,  len = 0xc0 |  | ||||||
|    flashcfg :  org = 0x00000400,  len = 0x10 |  | ||||||
| -  flash    :  org = 0x00000410,  len = 64k - 0x410 |  | ||||||
| +  flash    :  org = 0x00000410,  len = 62k - 0x410 |  | ||||||
| +  eeprom_emu : org = 0x0000F800, len = 2k |  | ||||||
|    ram      :  org = 0x1FFFF800,  len = 8k |  | ||||||
|  } |  | ||||||
| 
 |  | ||||||
| @@ -35,6 +36,10 @@ |  | ||||||
|  __ram_size__            = LENGTH(ram); |  | ||||||
|  __ram_end__             = __ram_start__ + __ram_size__; |  | ||||||
| 
 |  | ||||||
| +__eeprom_workarea_start__ = ORIGIN(eeprom_emu); |  | ||||||
| +__eeprom_workarea_size__  = LENGTH(eeprom_emu); |  | ||||||
| +__eeprom_workarea_end__   = __eeprom_workarea_start__ + __eeprom_workarea_size__; |  | ||||||
| + |  | ||||||
|  SECTIONS |  | ||||||
|  { |  | ||||||
|    . = 0; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Configuration/Startup for Infinity 60% |  | ||||||
| -------------------------------------- |  | ||||||
| Configuration: |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Clock: |  | ||||||
| Inifinity    |  | ||||||
|     FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz |  | ||||||
|     Clock dividor: |  | ||||||
|     SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock |  | ||||||
|     SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock |  | ||||||
|     SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock |  | ||||||
|     Internal reference clock: |  | ||||||
|     MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL |  | ||||||
|     MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable |  | ||||||
|     FLL multipilication: |  | ||||||
|     MCG_C4[DMX32] = 1 |  | ||||||
|     MCG_C4[DRST_DRS] = 01   FLL factor 1464 * 32.768kHz = 48MHz |  | ||||||
| 
 |  | ||||||
| chibios/os/hal/ports/KINETIS/K20x/hal_lld.c |  | ||||||
|     k20x_clock_init(): called in __early_init() defined in board.c |  | ||||||
|         disable watchdog and configure clock |  | ||||||
| 
 |  | ||||||
|         configurable macros: |  | ||||||
|         KINETIS_NO_INIT: whether init or not |  | ||||||
|         KINETIS_MCG_MODE: clock mode    |  | ||||||
|             KINETIS_MCG_MODE_FEI |  | ||||||
|             KINETIS_MCG_MODE_PEE |  | ||||||
|                 hal/ports/KINETIS/K20x/hal_lld.h |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h |  | ||||||
|     PALConfig pal_default_config |  | ||||||
|     boardInit() |  | ||||||
|     __early_init() |  | ||||||
|     macro definitions for board infos, freq and mcu type |  | ||||||
| 
 |  | ||||||
| chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c |  | ||||||
| 
 |  | ||||||
| USB |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Startup |  | ||||||
| ------- |  | ||||||
|     common/ports/ARMCMx/GCC/crt0_v[67]m.s |  | ||||||
|         Reset_Handler: startup code |  | ||||||
|     common/ports/ARMCMx/GCC/crt1.c |  | ||||||
|         __core_init(): weak |  | ||||||
|         __early_init(): weak |  | ||||||
|         __late_init(): weak |  | ||||||
|         __default_exit(): weak |  | ||||||
|             called from Reset_Handler of crt0 |  | ||||||
|     common/ports/ARMCMx/GCC/vector.c |  | ||||||
|     common/ports/ARMCMx/GCC/ld/*.ld |  | ||||||
| 
 |  | ||||||
| chibios/os/common/ports/ARMCMx/compilers/GCC/ |  | ||||||
| ├── crt0_v6m.s |  | ||||||
| ├── crt0_v7m.s |  | ||||||
| ├── crt1.c |  | ||||||
| ├── ld |  | ||||||
| │   ├── MK20DX128BLDR3.ld |  | ||||||
| │   ├── MK20DX128BLDR4.ld |  | ||||||
| │   ├── MK20DX128.ld |  | ||||||
| │   ├── MK20DX256.ld |  | ||||||
| │   ├── MKL25Z128.ld |  | ||||||
| │   ├── MKL26Z128.ld |  | ||||||
| │   ├── MKL26Z64.ld |  | ||||||
| │   └── STM32L476xG.ld |  | ||||||
| ├── mk |  | ||||||
| │   ├── startup_k20x5.mk |  | ||||||
| │   ├── startup_k20x7.mk |  | ||||||
| │   ├── startup_k20x.mk |  | ||||||
| │   ├── startup_kl2x.mk |  | ||||||
| │   └── startup_stm32l4xx.mk |  | ||||||
| ├── rules.ld |  | ||||||
| ├── rules.mk |  | ||||||
| └── vectors.c |  | ||||||
| 
 |  | ||||||
| chibios/os/hal/ |  | ||||||
| ├── boards |  | ||||||
| │   ├── FREESCALE_FREEDOM_K20D50M |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── MCHCK_K20 |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── PJRC_TEENSY_3 |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── PJRC_TEENSY_3_1 |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── PJRC_TEENSY_LC |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── readme.txt |  | ||||||
| │   ├── simulator |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   └── board.mk |  | ||||||
| │   ├── ST_NUCLEO_F030R8 |  | ||||||
| │   │   ├── board.c |  | ||||||
| │   │   ├── board.h |  | ||||||
| │   │   ├── board.mk |  | ||||||
| │   │   └── cfg |  | ||||||
| │   │       └── board.chcfg |  | ||||||
| ├── hal.mk |  | ||||||
| ├── include |  | ||||||
| │   ├── adc.h |  | ||||||
| │   ├── can.h |  | ||||||
| │   ├── dac.h |  | ||||||
| │   ├── ext.h |  | ||||||
| │   ├── gpt.h |  | ||||||
| │   ├── hal_channels.h |  | ||||||
| │   ├── hal_files.h |  | ||||||
| │   ├── hal.h |  | ||||||
| │   ├── hal_ioblock.h |  | ||||||
| │   ├── hal_mmcsd.h |  | ||||||
| │   ├── hal_queues.h |  | ||||||
| │   ├── hal_streams.h |  | ||||||
| │   ├── i2c.h |  | ||||||
| │   ├── i2s.h |  | ||||||
| │   ├── icu.h |  | ||||||
| │   ├── mac.h |  | ||||||
| │   ├── mii.h |  | ||||||
| │   ├── mmc_spi.h |  | ||||||
| │   ├── pal.h |  | ||||||
| │   ├── pwm.h |  | ||||||
| │   ├── rtc.h |  | ||||||
| │   ├── sdc.h |  | ||||||
| │   ├── serial.h |  | ||||||
| │   ├── serial_usb.h |  | ||||||
| │   ├── spi.h |  | ||||||
| │   ├── st.h |  | ||||||
| │   ├── uart.h |  | ||||||
| │   └── usb.h |  | ||||||
| ├── lib |  | ||||||
| │   └── streams |  | ||||||
| │       ├── chprintf.c |  | ||||||
| │       ├── chprintf.h |  | ||||||
| │       ├── memstreams.c |  | ||||||
| │       ├── memstreams.h |  | ||||||
| │       ├── nullstreams.c |  | ||||||
| │       └── nullstreams.h |  | ||||||
| ├── osal |  | ||||||
| │   ├── nil |  | ||||||
| │   │   ├── osal.c |  | ||||||
| │   │   ├── osal.h |  | ||||||
| │   │   └── osal.mk |  | ||||||
| │   ├── os-less |  | ||||||
| │   │   └── ARMCMx |  | ||||||
| │   │       ├── osal.c |  | ||||||
| │   │       ├── osal.h |  | ||||||
| │   │       └── osal.mk |  | ||||||
| │   └── rt |  | ||||||
| │       ├── osal.c |  | ||||||
| │       ├── osal.h |  | ||||||
| │       └── osal.mk |  | ||||||
| ├── ports |  | ||||||
| │   ├── AVR |  | ||||||
| │   ├── common |  | ||||||
| │   │   └── ARMCMx |  | ||||||
| │   │       ├── mpu.h |  | ||||||
| │   │       ├── nvic.c |  | ||||||
| │   │       └── nvic.h |  | ||||||
| │   ├── KINETIS |  | ||||||
| │   │   ├── K20x |  | ||||||
| │   │   │   ├── hal_lld.c |  | ||||||
| │   │   │   ├── hal_lld.h |  | ||||||
| │   │   │   ├── kinetis_registry.h |  | ||||||
| │   │   │   ├── platform.dox |  | ||||||
| │   │   │   ├── platform.mk |  | ||||||
| │   │   │   ├── pwm_lld.c |  | ||||||
| │   │   │   ├── pwm_lld.h |  | ||||||
| │   │   │   ├── spi_lld.c |  | ||||||
| │   │   │   └── spi_lld.h |  | ||||||
| │   │   ├── KL2x |  | ||||||
| │   │   │   ├── hal_lld.c |  | ||||||
| │   │   │   ├── hal_lld.h |  | ||||||
| │   │   │   ├── kinetis_registry.h |  | ||||||
| │   │   │   ├── platform.mk |  | ||||||
| │   │   │   ├── pwm_lld.c |  | ||||||
| │   │   │   └── pwm_lld.h |  | ||||||
| │   │   ├── LLD |  | ||||||
| │   │   │   ├── adc_lld.c |  | ||||||
| │   │   │   ├── adc_lld.h |  | ||||||
| │   │   │   ├── ext_lld.c |  | ||||||
| │   │   │   ├── ext_lld.h |  | ||||||
| │   │   │   ├── gpt_lld.c |  | ||||||
| │   │   │   ├── gpt_lld.h |  | ||||||
| │   │   │   ├── i2c_lld.c |  | ||||||
| │   │   │   ├── i2c_lld.h |  | ||||||
| │   │   │   ├── pal_lld.c |  | ||||||
| │   │   │   ├── pal_lld.h |  | ||||||
| │   │   │   ├── serial_lld.c |  | ||||||
| │   │   │   ├── serial_lld.h |  | ||||||
| │   │   │   ├── st_lld.c |  | ||||||
| │   │   │   ├── st_lld.h |  | ||||||
| │   │   │   ├── usb_lld.c |  | ||||||
| │   │   │   └── usb_lld.h |  | ||||||
| │   │   └── README.md |  | ||||||
| │   ├── LPC |  | ||||||
| │   ├── simulator |  | ||||||
| │   └── STM32 |  | ||||||
| ├── src |  | ||||||
| │   ├── adc.c |  | ||||||
| │   ├── can.c |  | ||||||
| │   ├── dac.c |  | ||||||
| │   ├── ext.c |  | ||||||
| │   ├── gpt.c |  | ||||||
| │   ├── hal.c |  | ||||||
| │   ├── hal_mmcsd.c |  | ||||||
| │   ├── hal_queues.c |  | ||||||
| │   ├── i2c.c |  | ||||||
| │   ├── i2s.c |  | ||||||
| │   ├── icu.c |  | ||||||
| │   ├── mac.c |  | ||||||
| │   ├── mmc_spi.c |  | ||||||
| │   ├── pal.c |  | ||||||
| │   ├── pwm.c |  | ||||||
| │   ├── rtc.c |  | ||||||
| │   ├── sdc.c |  | ||||||
| │   ├── serial.c |  | ||||||
| │   ├── serial_usb.c |  | ||||||
| │   ├── spi.c |  | ||||||
| │   ├── st.c |  | ||||||
| │   ├── uart.c |  | ||||||
| │   └── usb.c |  | ||||||
| └── templates |  | ||||||
|     ├── adc_lld.c |  | ||||||
|     ├── adc_lld.h |  | ||||||
|     ├── can_lld.c |  | ||||||
|     ├── can_lld.h |  | ||||||
|     ├── dac_lld.c |  | ||||||
|     ├── dac_lld.h |  | ||||||
|     ├── ext_lld.c |  | ||||||
|     ├── ext_lld.h |  | ||||||
|     ├── gpt_lld.c |  | ||||||
|     ├── gpt_lld.h |  | ||||||
|     ├── halconf.h |  | ||||||
|     ├── hal_lld.c |  | ||||||
|     ├── hal_lld.h |  | ||||||
|     ├── i2c_lld.c |  | ||||||
|     ├── i2c_lld.h |  | ||||||
|     ├── i2s_lld.c |  | ||||||
|     ├── i2s_lld.h |  | ||||||
|     ├── icu_lld.c |  | ||||||
|     ├── icu_lld.h |  | ||||||
|     ├── mac_lld.c |  | ||||||
|     ├── mac_lld.h |  | ||||||
|     ├── mcuconf.h |  | ||||||
|     ├── osal |  | ||||||
|     │   ├── osal.c |  | ||||||
|     │   ├── osal.h |  | ||||||
|     │   └── osal.mk |  | ||||||
|     ├── pal_lld.c |  | ||||||
|     ├── pal_lld.h |  | ||||||
|     ├── platform.mk |  | ||||||
|     ├── pwm_lld.c |  | ||||||
|     ├── pwm_lld.h |  | ||||||
|     ├── rtc_lld.c |  | ||||||
|     ├── rtc_lld.h |  | ||||||
|     ├── sdc_lld.c |  | ||||||
|     ├── sdc_lld.h |  | ||||||
|     ├── serial_lld.c |  | ||||||
|     ├── serial_lld.h |  | ||||||
|     ├── spi_lld.c |  | ||||||
|     ├── spi_lld.h |  | ||||||
|     ├── st_lld.c |  | ||||||
|     ├── st_lld.h |  | ||||||
|     ├── uart_lld.c |  | ||||||
|     ├── uart_lld.h |  | ||||||
|     ├── usb_lld.c |  | ||||||
|     └── usb_lld.h |  | ||||||
|  | @ -72,8 +72,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
| #define BREATHE_LED_ADDRESS CAPS_LOCK_LED_ADDRESS | #define BREATHE_LED_ADDRESS CAPS_LOCK_LED_ADDRESS | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define DEBUG_ENABLED 1 |  | ||||||
| 
 |  | ||||||
| /* =================
 | /* =================
 | ||||||
|  * ChibiOS I2C setup |  * ChibiOS I2C setup | ||||||
|  * ================= */ |  * ================= */ | ||||||
|  | @ -145,7 +143,6 @@ void is31_init(void) { | ||||||
|   __builtin_memset(full_page,0,0xB4+1); |   __builtin_memset(full_page,0,0xB4+1); | ||||||
|   // zero function page, all registers (assuming full_page is all zeroes)
 |   // zero function page, all registers (assuming full_page is all zeroes)
 | ||||||
|   is31_write_data(IS31_FUNCTIONREG, full_page, 0xD + 1); |   is31_write_data(IS31_FUNCTIONREG, full_page, 0xD + 1); | ||||||
|   // disable hardware shutdown
 |  | ||||||
|   palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); |   palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|   palSetPad(GPIOB, 16); |   palSetPad(GPIOB, 16); | ||||||
|   chThdSleepMilliseconds(10); |   chThdSleepMilliseconds(10); | ||||||
|  | @ -182,7 +179,7 @@ static THD_FUNCTION(LEDthread, arg) { | ||||||
|   uint8_t pwm_step_status, page_status; |   uint8_t pwm_step_status, page_status; | ||||||
| 
 | 
 | ||||||
|   //mailbox variables
 |   //mailbox variables
 | ||||||
|   uint8_t temp, msg_type, msg_led; |   uint8_t temp, msg_type, msg_pin, msg_col, msg_led; | ||||||
|   msg_t msg; |   msg_t msg; | ||||||
| 
 | 
 | ||||||
| /*  //control register variables
 | /*  //control register variables
 | ||||||
|  | @ -199,14 +196,17 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
|     // (messages are queued (up to LED_MAILBOX_NUM_MSGS) if they can't
 |     // (messages are queued (up to LED_MAILBOX_NUM_MSGS) if they can't
 | ||||||
|     //  be processed right away)
 |     //  be processed right away)
 | ||||||
|     chMBFetch(&led_mailbox, &msg, TIME_INFINITE); |     chMBFetch(&led_mailbox, &msg, TIME_INFINITE); | ||||||
|     msg_type = (msg >> 8) & 0xFF; //first byte is msg type
 |     msg_col = (msg >> 24) & 0xFF;//if needed
 | ||||||
|     msg_led = (msg) & 0xFF; //second byte is action information
 |     msg_pin = (msg >> 16) & 0XFF;//if needed (SET_FULL_ROW)
 | ||||||
|  |     msg_type = (msg >> 8) & 0xFF; //second byte is msg type
 | ||||||
|  |     msg_led = (msg) & 0xFF; //first byte is action information
 | ||||||
| 
 | 
 | ||||||
|     xprintf("--------------------\n"); |     xprintf("--------------------\n"); | ||||||
|             chThdSleepMilliseconds(10); |  | ||||||
|     xprintf("mailbox fetch\nmsg: %X\n", msg); |     xprintf("mailbox fetch\nmsg: %X\n", msg); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(20); | ||||||
|     xprintf("type: %X - led: %X\n", msg_type, msg_led);  |     xprintf("type: %X - pin: %X\n", msg_type, msg_pin);  | ||||||
|  |             chThdSleepMilliseconds(20); | ||||||
|  |     xprintf("col: %X - led: %X\n", msg_col, msg_led);  | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
| 
 | 
 | ||||||
|     switch (msg_type){ |     switch (msg_type){ | ||||||
|  | @ -214,8 +214,12 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
|       //TODO: lighting key led on keypress
 |       //TODO: lighting key led on keypress
 | ||||||
|       break; |       break; | ||||||
|        |        | ||||||
|       //TODO: BLINK_ON/OFF_LED
 |       case SET_FULL_ROW: | ||||||
|         break; |       //write full byte to pin address, msg_pin = pin #, msg_led = byte to write
 | ||||||
|  |       //writes only to current page
 | ||||||
|  |       xprintf("SET_FULL_ROW\n"); | ||||||
|  |         write_led_byte(page_status,msg_pin,msg_led); | ||||||
|  |       break; | ||||||
| 
 | 
 | ||||||
|       case OFF_LED:       |       case OFF_LED:       | ||||||
|       //on/off/toggle single led, msg_led = row/col of led
 |       //on/off/toggle single led, msg_led = row/col of led
 | ||||||
|  | @ -255,6 +259,7 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|         set_led_bit(7, control_register_word, msg_led, 6); |         set_led_bit(7, control_register_word, msg_led, 6); | ||||||
|         is31_write_data (7, control_register_word, 0x02); |         is31_write_data (7, control_register_word, 0x02); | ||||||
|  |         break; | ||||||
| 
 | 
 | ||||||
|       case TOGGLE_ALL: |       case TOGGLE_ALL: | ||||||
|     xprintf("TOGGLE_ALL: %d\n", msg_led); |     xprintf("TOGGLE_ALL: %d\n", msg_led); | ||||||
|  | @ -272,17 +277,12 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
| 
 | 
 | ||||||
|         if (page_status > 0) { |         if (page_status > 0) { | ||||||
|           is31_write_register(IS31_FUNCTIONREG, IS31_REG_PICTDISP, 0); |           is31_write_register(IS31_FUNCTIONREG, IS31_REG_PICTDISP, 0); | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         //maintain lock leds
 |           page_status=0; | ||||||
|         if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) { |  | ||||||
|           set_lock_leds(USB_LED_NUM_LOCK, 1); |  | ||||||
|         } |  | ||||||
|         if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { |  | ||||||
|           set_lock_leds(USB_LED_CAPS_LOCK, 1); |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         page_status=0; |           //maintain lock leds
 | ||||||
|  |           led_set(host_keyboard_leds()); | ||||||
|  |         } | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|       case TOGGLE_BACKLIGHT: |       case TOGGLE_BACKLIGHT: | ||||||
|  | @ -306,81 +306,75 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
| 
 | 
 | ||||||
|       case DISPLAY_PAGE://show single layer indicator or full map of layer
 |       case DISPLAY_PAGE://show single layer indicator or full map of layer
 | ||||||
|         //msg_led = page to toggle on
 |         //msg_led = page to toggle on
 | ||||||
|       xprintf("DISPLAY_PAGE"); |       xprintf("DISPLAY_PAGE\n"); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|         if (page_status != msg_led) { |         if (page_status != msg_led) { | ||||||
|       xprintf(" - new page\n"); |       xprintf(" - new page\n"); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|           is31_write_register(IS31_FUNCTIONREG, IS31_REG_PICTDISP, msg_led); |           is31_write_register(IS31_FUNCTIONREG, IS31_REG_PICTDISP, msg_led); | ||||||
|  |           page_status = msg_led; | ||||||
|  | 
 | ||||||
|  |           //maintain lock leds
 | ||||||
|  |           led_set(host_keyboard_leds()); | ||||||
|         } |         } | ||||||
|         page_status = msg_led; |  | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|       case RESET_PAGE: |       case RESET_PAGE: | ||||||
|  |       //led_msg = page to reset
 | ||||||
|       xprintf("RESET_PAGE\n"); |       xprintf("RESET_PAGE\n"); | ||||||
|             chThdSleepMilliseconds(10); |       chThdSleepMilliseconds(10); | ||||||
|         //led_msg = page to reset
 |  | ||||||
|         led_control_reg[0] = 0; |         led_control_reg[0] = 0; | ||||||
|         __builtin_memset(led_control_reg+1, 0, 0x12); |         __builtin_memset(led_control_reg+1, 0, 0x12); | ||||||
|         is31_write_data(msg_led, led_control_reg, 0x13); |         is31_write_data(msg_led, led_control_reg, 0x13); | ||||||
| 
 |  | ||||||
|         //maintain lock leds
 |  | ||||||
|         if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) { |  | ||||||
|           set_lock_leds(USB_LED_NUM_LOCK, 1); |  | ||||||
|         } |  | ||||||
|         if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { |  | ||||||
|           set_lock_leds(USB_LED_CAPS_LOCK, 1); |  | ||||||
|         } |  | ||||||
|         break; |         break; | ||||||
|          |          | ||||||
|       case TOGGLE_NUM_LOCK: |       case TOGGLE_NUM_LOCK: | ||||||
|         //msg_led = 0 or 1, off/on
 |         //msg_led = 0 or 1, off/on
 | ||||||
|     xprintf("NUMLOCK: %d\n", msg_led); |     xprintf("NUMLOCK: %d\n", msg_led); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|         set_lock_leds(NUM_LOCK_LED_ADDRESS, msg_led); |         set_lock_leds(NUM_LOCK_LED_ADDRESS, msg_led, page_status); | ||||||
|         break; |         break; | ||||||
|        |        | ||||||
|       case TOGGLE_CAPS_LOCK: |       case TOGGLE_CAPS_LOCK: | ||||||
|     xprintf("CAPSLOCK: %d\n", msg_led); |     xprintf("CAPSLOCK: %d\n", msg_led); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|         //msg_led = 0 or 1, off/on
 |         //msg_led = 0 or 1, off/on
 | ||||||
|         set_lock_leds(CAPS_LOCK_LED_ADDRESS, msg_led); |         set_lock_leds(CAPS_LOCK_LED_ADDRESS, msg_led, page_status); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|       //TODO: MODE_BREATH
 |       //TODO: MODE_BREATH
 | ||||||
|       case MODE_BREATH: | 
 | ||||||
|         break; |  | ||||||
|       case STEP_BRIGHTNESS: |       case STEP_BRIGHTNESS: | ||||||
|       xprintf("STEP_BACKLIGHT\n"); |       xprintf("STEP_BACKLIGHT\n"); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|         //led_msg = step pwm up or down
 |         //led_msg = step pwm up or down
 | ||||||
|       switch (msg_led) { |         switch (msg_led) { | ||||||
|         case 0: |           case 0: | ||||||
|           if (pwm_step_status == 0) { |             if (pwm_step_status == 0) { | ||||||
|             pwm_step_status = 4; |               pwm_step_status = 4; | ||||||
|           } else { |             } else { | ||||||
|             pwm_step_status--; |               pwm_step_status--; | ||||||
|           } |             } | ||||||
|           break; |             break; | ||||||
|          |            | ||||||
|         case 1: |           case 1: | ||||||
|           if (pwm_step_status == 4) { |             if (pwm_step_status == 4) { | ||||||
|             pwm_step_status = 0; |               pwm_step_status = 0; | ||||||
|           } else { |             } else { | ||||||
|             pwm_step_status++; |               pwm_step_status++; | ||||||
|           } |             } | ||||||
|           break; |             break; | ||||||
|       } |         } | ||||||
| 
 | 
 | ||||||
|       //populate 8 byte rows to write on each pin
 |         //populate 8 byte rows to write on each pin
 | ||||||
|       //first byte is register address, every 0x10 9 bytes are A-register pwm pins
 |         //first byte is register address, every 0x10 9 bytes are A-register pwm pins
 | ||||||
|       __builtin_memset(pwm_register_array+1, pwm_levels[pwm_step_status], 8); |         __builtin_memset(pwm_register_array+1, pwm_levels[pwm_step_status], 8); | ||||||
| 
 | 
 | ||||||
|       for(i=0; i<8; i++) { |         for(i=0; i<8; i++) { | ||||||
|         pwm_register_array[0] = 0x24 + (i * 0x10); |           pwm_register_array[0] = 0x24 + (i * 0x10); | ||||||
|         is31_write_data(0,pwm_register_array,9); |           is31_write_data(0,pwm_register_array,9); | ||||||
|       } |         } | ||||||
|       break; |         break; | ||||||
| 
 | 
 | ||||||
| /*    case LED_MSG_SLEEP_LED_ON:
 | /*    case LED_MSG_SLEEP_LED_ON:
 | ||||||
|       // save current settings
 |       // save current settings
 | ||||||
|  | @ -415,103 +409,104 @@ page_status = 0; //start frame 0 (all off/on) | ||||||
|       xprintf("--------------------\n"); |       xprintf("--------------------\n"); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|     } |     } | ||||||
| #if DEBUG_ENABLED |   } | ||||||
|     uint8_t j; | } | ||||||
|     uint8_t pages[3]={0x00, 0x07}; |  | ||||||
|     //debugging code - print full led/blink/pwm registers on each frame
 |  | ||||||
|           xprintf("----layer state----: %X\n", layer_state); |  | ||||||
|       for(i=0;i<2;i++) { |  | ||||||
|           xprintf("page: %d\n", pages[i]); |  | ||||||
|             chThdSleepMilliseconds(2); |  | ||||||
|         for(j=0;j<0x24;j++){ |  | ||||||
|           if(j > 0 && j % 9 == 0){ |  | ||||||
|             xprintf("\n"); |  | ||||||
|           } |  | ||||||
|           switch (j) { |  | ||||||
|             case 0: |  | ||||||
|               xprintf("\n--on-off--\n"); |  | ||||||
|               chThdSleepMilliseconds(2); |  | ||||||
|               break; |  | ||||||
|             case 0x12: |  | ||||||
|               xprintf("\n--blink--\n"); |  | ||||||
|               chThdSleepMilliseconds(2); |  | ||||||
|               break; |  | ||||||
|             } |  | ||||||
|           is31_read_register(pages[i],j,&temp); |  | ||||||
|           xprintf("%02X, ", temp); |  | ||||||
|           chThdSleepMilliseconds(2); |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         xprintf("\n--pwm--\n"); | /* ==============================
 | ||||||
|         chThdSleepMilliseconds(2); |  *    debug function | ||||||
|         for(j=0x24;j<0xB4;j++) { |  * ============================== */ | ||||||
|           is31_read_register(pages[i],j,&temp); | void print_debug(uint8_t page) { | ||||||
|           xprintf("%02X, ", temp); |   uint8_t j, debug_temp; | ||||||
|           chThdSleepMilliseconds(2); |   //debugging code - print full led/blink/pwm registers on each frame
 | ||||||
|           if(j > 0x24 && (j-4) % 8 == 0){ |   xprintf("----layer state----: %X\n", layer_state); | ||||||
|             xprintf("\n"); |   xprintf("page: %d\n", page); | ||||||
|           } |   chThdSleepMilliseconds(10); | ||||||
|         } |   for(j=0;j<0x24;j++){ | ||||||
|         xprintf("\n"); |     if(j > 0 && j % 9 == 0){ | ||||||
|       } |       xprintf("\n"); | ||||||
| 
 |     } | ||||||
|     //Function Register
 |     switch (j) { | ||||||
|     xprintf("\n--FUNCTION--\n"); |       case 0: | ||||||
|     chThdSleepMilliseconds(2); |         xprintf("\n--on-off--\n"); | ||||||
|     for(j=0;j<0x0D;j++) { |         chThdSleepMilliseconds(10); | ||||||
|       is31_read_register(0x0B,j,&temp); |         break; | ||||||
|       switch(j) { |       case 0x12: | ||||||
|         case 0: |         xprintf("\n--blink--\n"); | ||||||
|           xprintf("Config %02X", temp); |         chThdSleepMilliseconds(10); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       } | ||||||
|         case 1: |     is31_read_register(page,j,&debug_temp); | ||||||
|           xprintf(" - Pict %02X\n", temp); |     xprintf("%02X, ", debug_temp); | ||||||
|           chThdSleepMilliseconds(2); |     chThdSleepMilliseconds(10); | ||||||
|           break; |   } | ||||||
|         case 2: | 
 | ||||||
|           xprintf("Auto1 %02X", temp); |   xprintf("\n--pwm--\n"); | ||||||
|           chThdSleepMilliseconds(2); |   chThdSleepMilliseconds(10); | ||||||
|           break; |   for(j=0x24;j<0xB4;j++) { | ||||||
|         case 3: |     is31_read_register(page,j,&debug_temp); | ||||||
|           xprintf(" - Auto2 %02X\n", temp); |     xprintf("%02X, ", debug_temp); | ||||||
|           chThdSleepMilliseconds(2); |     chThdSleepMilliseconds(10); | ||||||
|           break; |     if(j > 0x24 && (j-3) % 8 == 0){ | ||||||
|         case 5: |       xprintf("\n"); | ||||||
|           xprintf("Disp %02X", temp); |     } | ||||||
|           chThdSleepMilliseconds(2); |   } | ||||||
|           break; |   xprintf("\n"); | ||||||
|         case 6: | 
 | ||||||
|           xprintf(" - Audio %02X\n", temp); |   //Function Register
 | ||||||
|           chThdSleepMilliseconds(2); |   xprintf("\n--FUNCTION--\n"); | ||||||
|           break; |   chThdSleepMilliseconds(10); | ||||||
|         case 7: |   for(j=0;j<0x0D;j++) { | ||||||
|           xprintf("Frame %02X", temp); |     is31_read_register(0x0B,j,&debug_temp); | ||||||
|           chThdSleepMilliseconds(2); |     switch(j) { | ||||||
|           break; |       case 0: | ||||||
|         case 8: |         xprintf("Config %02X", debug_temp); | ||||||
|           xprintf(" - Breath1 %02X\n", temp); |         chThdSleepMilliseconds(2); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       case 1: | ||||||
|         case 9: |         xprintf(" - Pict %02X\n", debug_temp); | ||||||
|           xprintf("Breath2 %02X - ", temp); |         chThdSleepMilliseconds(2); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       case 2: | ||||||
|         case 10: |         xprintf("Auto1 %02X", debug_temp); | ||||||
|           xprintf(" - Shut %02X\n", temp); |         chThdSleepMilliseconds(2); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       case 3: | ||||||
|         case 11: |         xprintf(" - Auto2 %02X\n", debug_temp); | ||||||
|           xprintf("AGC %02X", temp); |         chThdSleepMilliseconds(2); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       case 5: | ||||||
|         case 12: |         xprintf("Disp %02X", debug_temp); | ||||||
|           xprintf(" - ADC %02X\n", temp); |         chThdSleepMilliseconds(2); | ||||||
|           chThdSleepMilliseconds(2); |         break; | ||||||
|           break; |       case 6: | ||||||
|       } |         xprintf(" - Audio %02X\n", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 7: | ||||||
|  |         xprintf("Frame %02X", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 8: | ||||||
|  |         xprintf(" - Breath1 %02X\n", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 9: | ||||||
|  |         xprintf("Breath2 %02X - ", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 10: | ||||||
|  |         xprintf(" - Shut %02X\n", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 11: | ||||||
|  |         xprintf("AGC %02X", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|  |       case 12: | ||||||
|  |         xprintf(" - ADC %02X\n", debug_temp); | ||||||
|  |         chThdSleepMilliseconds(2); | ||||||
|  |         break; | ||||||
|     } |     } | ||||||
| #endif |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -523,7 +518,7 @@ void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint | ||||||
|   //returns 2 bytes led control register address and byte to write
 |   //returns 2 bytes led control register address and byte to write
 | ||||||
|   //0 - bit off, 1 - bit on, 2 - toggle bit
 |   //0 - bit off, 1 - bit on, 2 - toggle bit
 | ||||||
| 
 | 
 | ||||||
|   uint8_t control_reg_addr, column_bit, column_byte, temp, blink_on; |   uint8_t control_reg_addr, column_bit, column_byte, bit_temp, blink_on; | ||||||
| 
 | 
 | ||||||
|   //check for valid led address
 |   //check for valid led address
 | ||||||
|   if (led_addr < 0 || led_addr > 87 || led_addr % 10 > 8) { |   if (led_addr < 0 || led_addr > 87 || led_addr % 10 > 8) { | ||||||
|  | @ -541,18 +536,28 @@ void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint | ||||||
|   //first byte is led control register address 0x00
 |   //first byte is led control register address 0x00
 | ||||||
|   //msg_led tens column is pin#, ones column is bit position in 8-bit mask
 |   //msg_led tens column is pin#, ones column is bit position in 8-bit mask
 | ||||||
|   control_reg_addr = ((led_addr / 10) % 10 - 1 ) * 0x02;// A-register is every other byte
 |   control_reg_addr = ((led_addr / 10) % 10 - 1 ) * 0x02;// A-register is every other byte
 | ||||||
|     xprintf("pre-reg_addr: %X\n", control_reg_addr); |     xprintf("pre-reg_addr: %2X\n", control_reg_addr); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|   control_reg_addr += blink_on == 1 ? 0x12 : 0x00;//shift 12 bytes to blink register
 |   control_reg_addr += blink_on == 1 ? 0x12 : 0x00;//shift 12 bytes to blink register
 | ||||||
|     xprintf("blink-reg_addr: %X\n", control_reg_addr); |     xprintf("blink-reg_addr: %2X\n", control_reg_addr); | ||||||
|  |             chThdSleepMilliseconds(10); | ||||||
|  |     xprintf("page: %2X\n", page); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |   is31_read_register(page, 0x06, &bit_temp);//maintain status of leds on this byte
 | ||||||
|  |     xprintf("reg 06: %2X\n", bit_temp); | ||||||
|  |   is31_read_register(page, 0x17, &bit_temp);//maintain status of leds on this byte
 | ||||||
|  |     xprintf("reg 17: %2X\n", bit_temp); | ||||||
|  |   is31_read_register(page, 0x18, &bit_temp);//maintain status of leds on this byte
 | ||||||
|  |     xprintf("reg 18: %2X\n", bit_temp); | ||||||
|  |   is31_read_register(page, 0x19, &bit_temp);//maintain status of leds on this byte
 | ||||||
|  |     xprintf("reg 19: %2X\n", bit_temp); | ||||||
|  |   is31_read_register(page, control_reg_addr, &bit_temp);//maintain status of leds on this byte
 | ||||||
|   column_bit = 1<<(led_addr % 10 - 1); |   column_bit = 1<<(led_addr % 10 - 1); | ||||||
|  |   column_byte = bit_temp; | ||||||
| 
 | 
 | ||||||
|   is31_read_register(page, control_reg_addr, &temp);//maintain status of leds on this byte
 |     xprintf("column_byte read: %2X\n", column_byte); | ||||||
|   column_byte = temp; |  | ||||||
| 
 |  | ||||||
|     xprintf("column_byte read: %X\n", column_byte); |  | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
|   switch(action) { |   switch(action) { | ||||||
|     case 0: |     case 0: | ||||||
|  | @ -565,7 +570,7 @@ void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint | ||||||
|       column_byte ^= column_bit; |       column_byte ^= column_bit; | ||||||
|       break; |       break; | ||||||
|   } |   } | ||||||
|     xprintf("column_byte write: %X\n", column_byte); |     xprintf("column_byte write: %2X\n", column_byte); | ||||||
|             chThdSleepMilliseconds(10); |             chThdSleepMilliseconds(10); | ||||||
| 
 | 
 | ||||||
|   //return word to be written in register
 |   //return word to be written in register
 | ||||||
|  | @ -574,47 +579,59 @@ void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void write_led_byte (uint8_t page, uint8_t row, uint8_t led_byte) { | void write_led_byte (uint8_t page, uint8_t row, uint8_t led_byte) { | ||||||
|   uint8_t led_control_word[2] = {0};//register address and led on/off mask
 |   uint8_t led_control_word[2] = {0};//register address and on/off byte
 | ||||||
| 
 | 
 | ||||||
|   led_control_word[0] = (row - 1 ) * 0x02;// A-register is every other byte
 |   led_control_word[0] = (row - 1 ) * 0x02;// A-register is every other byte
 | ||||||
|   led_control_word[1] = led_byte;// A-register is every other byte
 |   led_control_word[1] = led_byte; | ||||||
|   is31_write_data(page, led_control_word, 0x13); |   is31_write_data(page, led_control_word, 0x02); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void write_led_page (uint8_t page, uint8_t *user_led_array, uint8_t led_count) { | void write_led_page (uint8_t page, uint8_t *user_led_array, uint8_t led_count) { | ||||||
|   uint8_t i; |   uint8_t i; | ||||||
|   uint8_t pin, col; |   uint8_t pin, col; | ||||||
|   uint8_t led_control_register[0x13] = {0};//led control register start address + 0x12 bytes
 |   uint8_t led_control_register[0x13] = {0};//control register start address + 0x12 bytes
 | ||||||
| 
 | 
 | ||||||
|   __builtin_memset(led_control_register,0,13); |   __builtin_memset(led_control_register,0,13); | ||||||
| 
 | 
 | ||||||
|   for(i=0;i<led_count;i++){ |   for(i=0;i<led_count;i++){ | ||||||
|     pin = ((user_led_array[i] / 10) % 10 - 1 ) * 2 + 1;// 1 byte shift for led register 0x00 address
 |     // 1 byte shift for led register 0x00 address
 | ||||||
|  |     pin = ((user_led_array[i] / 10) % 10 - 1 ) * 2 + 1; | ||||||
|     col = user_led_array[i] % 10 - 1; |     col = user_led_array[i] % 10 - 1; | ||||||
|      |  | ||||||
|     led_control_register[pin] |= 1<<(col); |     led_control_register[pin] |= 1<<(col); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   is31_write_data(page, led_control_register, 0x13); |   is31_write_data(page, led_control_register, 0x13); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void set_lock_leds(uint8_t led_addr, uint8_t led_action) { | void set_lock_leds(uint8_t led_addr, uint8_t led_action, uint8_t page) { | ||||||
|   uint8_t page, temp; |   uint8_t lock_temp; | ||||||
|   uint8_t led_control_word[2] = {0}; |   uint8_t led_control_word[2] = {0}; | ||||||
| 
 | 
 | ||||||
|   //blink if all leds are on
 |     xprintf("---set lock---\n"); | ||||||
|   //is31_read_register(0, 0x00, &temp);
 |             chThdSleepMilliseconds(10); | ||||||
|   //if (temp != 0x00) {
 |  | ||||||
|   //  set_led_bit(0,led_control_word,led_addr,(led_action | (1<<2))); //set blink bit
 |  | ||||||
|   //} else {
 |  | ||||||
|   //  set_led_bit(0,led_control_word,led_addr,led_action);
 |  | ||||||
|   //}
 |  | ||||||
|   //is31_write_data(0, led_control_word, 0x02);
 |  | ||||||
| 
 | 
 | ||||||
|   for(page=1; page<8; page++) { |   //blink if all leds are on
 | ||||||
|     set_led_bit(page,led_control_word,led_addr,led_action); |   if (page == 0) { | ||||||
|     is31_write_data(page, led_control_word, 0x02); |     is31_read_register(0, 0x00, &lock_temp); | ||||||
|  |     xprintf("AllOnReg: %2X\n", lock_temp); | ||||||
|  |     chThdSleepMilliseconds(10); | ||||||
|  |     if (lock_temp == 0xFF) { | ||||||
|  |       xprintf("AllOntrue\n"); | ||||||
|  |       chThdSleepMilliseconds(10); | ||||||
|  |       led_action |= (1<<2); //set blink bit
 | ||||||
|  |     } else { | ||||||
|  |       xprintf("AllOnfalse\n"); | ||||||
|  |       chThdSleepMilliseconds(10); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   set_led_bit(page,led_control_word,led_addr,led_action); | ||||||
|  | 
 | ||||||
|  |   xprintf("led_word: %2X", led_control_word[0]); | ||||||
|  |   xprintf("%X\n", led_control_word[1]); | ||||||
|  |   chThdSleepMilliseconds(10); | ||||||
|  | 
 | ||||||
|  |   is31_write_data(page, led_control_word, 0x02); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* =====================
 | /* =====================
 | ||||||
|  | @ -639,11 +656,11 @@ void led_controller_init(void) { | ||||||
|   /* initialise IS31 chip */ |   /* initialise IS31 chip */ | ||||||
|   is31_init(); |   is31_init(); | ||||||
| 
 | 
 | ||||||
|   //set Display Option Register so all pwm intensity is controlled from Frame 0
 |   //set Display Option Register so all pwm intensity is controlled from page 0
 | ||||||
|   //enable blink and set blink period to 0.27s x rate
 |   //enable blink and set blink period to 0.27s x rate
 | ||||||
|   is31_write_register(IS31_FUNCTIONREG, IS31_REG_DISPLAYOPT, IS31_REG_DISPLAYOPT_INTENSITY_SAME + S31_REG_DISPLAYOPT_BLINK_ENABLE + 5); |   is31_write_register(IS31_FUNCTIONREG, IS31_REG_DISPLAYOPT, IS31_REG_DISPLAYOPT_INTENSITY_SAME + IS31_REG_DISPLAYOPT_BLINK_ENABLE + 4); | ||||||
| 
 | 
 | ||||||
|   /* set full pwm on Frame 1 */ |   /* set full pwm on page 1 */ | ||||||
|   pwm_register_array[0] = 0; |   pwm_register_array[0] = 0; | ||||||
|   __builtin_memset(pwm_register_array+1, 0xFF, 8); |   __builtin_memset(pwm_register_array+1, 0xFF, 8); | ||||||
|   for(i=0; i<8; i++) { |   for(i=0; i<8; i++) { | ||||||
|  |  | ||||||
|  | @ -31,6 +31,7 @@ msg_t is31_read_register(uint8_t page, uint8_t reg, uint8_t *result); | ||||||
|  * ============================*/ |  * ============================*/ | ||||||
| 
 | 
 | ||||||
| void led_controller_init(void); | void led_controller_init(void); | ||||||
|  | void print_debug (uint8_t page); | ||||||
| 
 | 
 | ||||||
| #define CAPS_LOCK_LED_ADDRESS 46 //pin matrix location
 | #define CAPS_LOCK_LED_ADDRESS 46 //pin matrix location
 | ||||||
| #define NUM_LOCK_LED_ADDRESS 85 | #define NUM_LOCK_LED_ADDRESS 85 | ||||||
|  | @ -58,7 +59,7 @@ void led_controller_init(void); | ||||||
| 
 | 
 | ||||||
| #define IS31_REG_DISPLAYOPT 0x05 | #define IS31_REG_DISPLAYOPT 0x05 | ||||||
| #define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
 | #define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
 | ||||||
| #define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8 | #define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x08 | ||||||
| // D2:D0 bits blink period time (*0.27s)
 | // D2:D0 bits blink period time (*0.27s)
 | ||||||
| 
 | 
 | ||||||
| #define IS31_REG_AUDIOSYNC 0x06 | #define IS31_REG_AUDIOSYNC 0x06 | ||||||
|  | @ -86,32 +87,33 @@ void led_controller_init(void); | ||||||
| #define IS31_TIMEOUT 10000 // needs to be long enough to write a whole page
 | #define IS31_TIMEOUT 10000 // needs to be long enough to write a whole page
 | ||||||
| 
 | 
 | ||||||
| /* ========================================
 | /* ========================================
 | ||||||
|  * LED Thread related functions/definitions |  * LED Thread related items | ||||||
|  * ========================================*/ |  * ========================================*/ | ||||||
| 
 | 
 | ||||||
| extern mailbox_t led_mailbox; | extern mailbox_t led_mailbox; | ||||||
| 
 | 
 | ||||||
| void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint8_t action); | void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint8_t action); | ||||||
| void set_lock_leds (uint8_t led_addr, uint8_t led_action); | void set_lock_leds (uint8_t led_addr, uint8_t led_action, uint8_t page); | ||||||
| void write_led_byte (uint8_t page, uint8_t row, uint8_t led_byte); | void write_led_byte (uint8_t page, uint8_t row, uint8_t led_byte); | ||||||
| void write_led_page (uint8_t page, uint8_t *led_array, uint8_t led_count); | void write_led_page (uint8_t page, uint8_t *led_array, uint8_t led_count); | ||||||
| 
 | 
 | ||||||
| // constants for signaling the LED controller thread
 | // constants for signaling the LED controller thread
 | ||||||
| enum led_msg_t { | enum led_msg_t { | ||||||
|     KEY_LIGHT, |     KEY_LIGHT, | ||||||
|     BLINK_OFF_LED, |     SET_FULL_ROW, | ||||||
|     BLINK_ON_LED, |  | ||||||
|     BLINK_TOGGLE_LED, |  | ||||||
|     OFF_LED, |     OFF_LED, | ||||||
|     ON_LED, |     ON_LED, | ||||||
|     TOGGLE_LED, |     TOGGLE_LED, | ||||||
|  |     BLINK_OFF_LED, | ||||||
|  |     BLINK_ON_LED, | ||||||
|  |     BLINK_TOGGLE_LED, | ||||||
|     TOGGLE_ALL, |     TOGGLE_ALL, | ||||||
|     TOGGLE_BACKLIGHT, |     TOGGLE_BACKLIGHT, | ||||||
|     DISPLAY_PAGE, |     DISPLAY_PAGE, | ||||||
|     RESET_PAGE, |     RESET_PAGE, | ||||||
|     TOGGLE_NUM_LOCK, |     TOGGLE_NUM_LOCK, | ||||||
|     TOGGLE_CAPS_LOCK, |     TOGGLE_CAPS_LOCK, | ||||||
|     MODE_BREATH, |     TOGGLE_BREATH, | ||||||
|     STEP_BRIGHTNESS |     STEP_BRIGHTNESS | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 jpetermans
						jpetermans