diff options
Diffstat (limited to 'platforms/avr')
| -rw-r--r-- | platforms/avr/drivers/ws2812_bitbang.c | 4 | ||||
| -rw-r--r-- | platforms/avr/drivers/ws2812_i2c.c | 4 | ||||
| -rw-r--r-- | platforms/avr/platform.mk | 23 | 
3 files changed, 27 insertions, 4 deletions
| diff --git a/platforms/avr/drivers/ws2812_bitbang.c b/platforms/avr/drivers/ws2812_bitbang.c index aad10d86b0..116053591f 100644 --- a/platforms/avr/drivers/ws2812_bitbang.c +++ b/platforms/avr/drivers/ws2812_bitbang.c @@ -37,13 +37,13 @@  static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); -void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) {      DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN);      uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN);      uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN); -    ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(LED_TYPE), masklo, maskhi); +    ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(rgb_led_t), masklo, maskhi);      _delay_us(WS2812_TRST_US);  } diff --git a/platforms/avr/drivers/ws2812_i2c.c b/platforms/avr/drivers/ws2812_i2c.c index f4a2fbe0b3..f52a037b8e 100644 --- a/platforms/avr/drivers/ws2812_i2c.c +++ b/platforms/avr/drivers/ws2812_i2c.c @@ -18,12 +18,12 @@ void ws2812_init(void) {  }  // Setleds for standard RGB -void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) {      static bool s_init = false;      if (!s_init) {          ws2812_init();          s_init = true;      } -    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_I2C_TIMEOUT); +    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * leds, WS2812_I2C_TIMEOUT);  } diff --git a/platforms/avr/platform.mk b/platforms/avr/platform.mk index 09028d80af..aef449cadf 100644 --- a/platforms/avr/platform.mk +++ b/platforms/avr/platform.mk @@ -109,6 +109,29 @@ DEBUG_HOST = localhost  #============================================================================ +SIZE_MARGIN = 1024 + +check-size: +	$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | $(SED) -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) +	$(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi)) +	$(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE))) +	$(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) +	$(eval PERCENT_SIZE=$(shell expr $(CURRENT_SIZE) \* 100 / $(MAX_SIZE))) +	if [ $(MAX_SIZE) -gt 0 ] && [ $(CURRENT_SIZE) -gt 0 ]; then \ +		$(SILENT) || printf "$(MSG_CHECK_FILESIZE)" | $(AWK_CMD); \ +		if [ $(CURRENT_SIZE) -gt $(MAX_SIZE) ]; then \ +			$(REMOVE) $(TARGET).$(FIRMWARE_FORMAT); \ +			$(REMOVE) $(BUILD_DIR)/$(TARGET).{hex,bin,uf2}; \ +		    printf "\n * $(MSG_FILE_TOO_BIG)"; $(PRINT_ERROR_PLAIN); \ +		else \ +		    if [ $(FREE_SIZE) -lt $(SIZE_MARGIN) ]; then \ +			$(PRINT_WARNING_PLAIN); printf " * $(MSG_FILE_NEAR_LIMIT)"; \ +		    else \ +			$(PRINT_OK); $(SILENT) || printf " * $(MSG_FILE_JUST_RIGHT)"; \ +		    fi ; \ +		fi ; \ +	fi +  # Convert hex to bin.  bin: $(BUILD_DIR)/$(TARGET).hex  ifeq ($(BOOTLOADER),lufa-ms) | 
