Skip to content
Snippets Groups Projects
Select Git revision
  • a9557d20c548f32ecbf0230cb4da71ee3e60672d
  • master default
  • wink/trng
  • patch-3
  • patch-2
  • patch-1
  • micro-modules
  • color-2
  • color-html-3
  • color-html-2
  • color-html
  • ch3/api-speed-eval2
  • rahix/bma
  • freertos-btle
  • schneider/mp-for-old-bl
  • ch3/leds-api
  • ch3/genapi-refactor
  • ch3/dual-core
  • dualcore
19 results

FreeRTOS_ARP.c

Blame
  • Forked from card10 / firmware
    Source project has a limited visibility.
    bootloader-display.c 2.02 KiB
    #include "bootloader.h"
    /* Autogenerated */
    #include "splash-screen.h"
    #include "card10-version.h"
    
    #include "gfx.h"
    #include "display.h"
    
    /*
     * "Decompress" splash-screen image.  The algorithm works as follows:
     *
     * Each byte encodes up to 127 pixels in either white or black.  The most
     * significant bit determines the color, the remaining 7 bits determine the
     * amount.
     */
    static void bootloader_display_splash(void)
    {
    	int idx = 0;
    
    	Color white = gfx_color(&display_screen, WHITE);
    	Color black = gfx_color(&display_screen, BLACK);
    	for (int i = 0; i < sizeof(splash); i++) {
    		Color color    = (splash[i] & 0x80) ? white : black;
    		uint8_t length = splash[i] & 0x7f;
    
    		for (int j = 0; j < length; j++) {
    			uint16_t x = idx % 160;
    			uint16_t y = idx / 160;
    			gfx_setpixel(&display_screen, x, y, color);
    			idx++;
    		}
    	}
    
    	gfx_update(&display_screen);
    }
    
    /*
     * Initialize the display.
     */
    void bootloader_display_init(void)
    {
    	bootloader_display_splash();
    }
    
    /*
     * Show the bootloader version on the display.
     */
    void bootloader_display_header(void)
    {
    	gfx_clear(&display_screen);
    
    	Color white = gfx_color(&display_screen, WHITE);
    	bootloader_display_line(0, "Bootloader", white);
    	bootloader_display_line(1, __DATE__, white);
    	bootloader_display_line(2, CARD10_VERSION, white);
    }
    
    void bootloader_display_error(char *errtype, char *line1, char *line2)
    {
    	gfx_clear(&display_screen);
    
    	Color red    = gfx_color(&display_screen, RED);
    	Color yellow = gfx_color(&display_screen, YELLOW);
    	Color white  = gfx_color(&display_screen, WHITE);
    
    	bootloader_display_line(0, "[FATAL ERROR]", red);
    	bootloader_display_line(1, errtype, yellow);
    	bootloader_display_line(2, CARD10_VERSION, white);
    	bootloader_display_line(3, line1, white);
    	bootloader_display_line(4, line2, white);