diff --git a/Makefile b/Makefile index 1b11cb8..6d49bcc 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ S_FILES=funkey_prod_screens.c \ prodScreen_failScreen.c \ prodScreen_waitBattery.c \ prodScreen_displayTest.c \ +prodScreen_brightnessTest.c \ prodScreen_buttonsTest.c \ prodScreen_speakerTest.c \ prodScreen_ledTest.c \ diff --git a/funkey_prod_screens.c b/funkey_prod_screens.c index b480c9f..80539fc 100644 --- a/funkey_prod_screens.c +++ b/funkey_prod_screens.c @@ -19,6 +19,7 @@ static s_prod_test prod_tests[] = { {"FAIL", launch_prod_screen_fail, 0}, {"WAIT_BATTERY", launch_prod_screen_waitbattery, 0}, {"DISPLAY", launch_prod_screen_display, 0}, + {"BRIGHTNESS", launch_prod_screen_brightness, 0}, {"BUTTONS", launch_prod_screen_buttons, 0}, {"SPEAKER", launch_prod_screen_speaker, 0}, {"LED", launch_prod_screen_LED, 0}, diff --git a/funkey_prod_screens.h b/funkey_prod_screens.h index 264f160..2fe7130 100644 --- a/funkey_prod_screens.h +++ b/funkey_prod_screens.h @@ -9,6 +9,7 @@ #include "prodScreen_failScreen.h" #include "prodScreen_waitBattery.h" #include "prodScreen_displayTest.h" +#include "prodScreen_brightnessTest.h" #include "prodScreen_buttonsTest.h" #include "prodScreen_speakerTest.h" #include "prodScreen_ledTest.h" diff --git a/prodScreen_brightnessTest.c b/prodScreen_brightnessTest.c new file mode 100644 index 0000000..847d752 --- /dev/null +++ b/prodScreen_brightnessTest.c @@ -0,0 +1,110 @@ +#include "funkey_prod_screens.h" + + +/// -------------- FUNCTIONS IMPLEMENTATION -------------- +static int wait_event_loop(){ + + SDL_Event event; + int stop_menu_loop = 0; + int res = EXIT_FAILURE; + + /// -------- Main loop --------- + while (!stop_menu_loop) + { + /// -------- Handle Keyboard Events --------- + while (SDL_PollEvent(&event)) + switch(event.type) + { + case SDL_QUIT: + stop_menu_loop = 1; + break; + case SDL_KEYDOWN: + switch (event.key.keysym.sym) + { + + case SDLK_m: + stop_menu_loop = 1; + res = ERROR_MANUAL_FAIL; + break; + + case SDLK_n: + case SDLK_ESCAPE: + stop_menu_loop = 1; + res = 0; + break; + + default: + break; + } + } + + /* To inverstigate but with Buildroot, we need this: */ + SDL_Flip(hw_surface); + + /* Sleep for some time */ + SDL_Delay(SLEEP_PERIOD_MS); + } + + return res; +} + +int launch_prod_screen_brightness(int argc, char *argv[]){ + SDL_Surface *text_surface = NULL; + SDL_Rect text_pos; + + /* Fill screen white */ + SDL_FillRect(hw_surface, NULL, SDL_MapRGBA(hw_surface->format, bg_color.r, bg_color.g, bg_color.b, 0) ); + + /* Write Title */ + text_surface = TTF_RenderText_Shaded(font_title, "FunKey PCBA Tests", text_color, bg_color); + text_pos.x = SCREEN_HORIZONTAL_SIZE/2 - text_surface->w/2; + text_pos.y = Y_PADDING; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + + /* Write "SPEAKER ok ? */ + text_surface = TTF_RenderText_Shaded(font_title, "BRIGHTNESS OK ?", text_color, bg_color); + text_pos.x = SCREEN_HORIZONTAL_SIZE/2 - text_surface->w/2; + text_pos.y = SCREEN_VERTICAL_SIZE/2 - text_surface->h/2; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + + /* Write: + "Press + L=FAIL + */ + SDL_Color red_color={220,20,20}; + text_surface = TTF_RenderText_Shaded(font_info, "Press", red_color, bg_color); + text_pos.x = X_PADDING; + text_pos.y = SCREEN_VERTICAL_SIZE - Y_PADDING - 2*text_surface->h; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + text_surface = TTF_RenderText_Shaded(font_info, "L=FAIL", red_color, bg_color); + text_pos.x = X_PADDING; + text_pos.y = SCREEN_VERTICAL_SIZE - Y_PADDING - text_surface->h; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + + /* Write: + Press + R=OK" + */ + SDL_Color green_color={20,220,20}; + text_surface = TTF_RenderText_Shaded(font_info, "Press", green_color, bg_color); + text_pos.x = SCREEN_HORIZONTAL_SIZE - text_surface->w - X_PADDING; + text_pos.y = SCREEN_VERTICAL_SIZE - Y_PADDING - 2*text_surface->h; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + text_surface = TTF_RenderText_Shaded(font_info, "R=OK", green_color, bg_color); + text_pos.x = SCREEN_HORIZONTAL_SIZE - text_surface->w - X_PADDING; + text_pos.y = SCREEN_VERTICAL_SIZE - Y_PADDING - text_surface->h; + SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos); + SDL_FreeSurface(text_surface); + + /* Render screen */ + //SDL_Flip(hw_surface); + + /// + int res = wait_event_loop(); + return res; +} diff --git a/prodScreen_brightnessTest.h b/prodScreen_brightnessTest.h new file mode 100644 index 0000000..b2bc1cd --- /dev/null +++ b/prodScreen_brightnessTest.h @@ -0,0 +1,6 @@ +#ifndef __PROD_SCREEN_BRIGHTNESS__ +#define __PROD_SCREEN_BRIGHTNESS__ + +int launch_prod_screen_brightness(int argc, char *argv[]); + +#endif //__PROD_SCREEN_BRIGHTNESS__ \ No newline at end of file