fix warnings

This commit is contained in:
Mitchell Marino 2024-08-28 17:50:26 -05:00
parent afdbbeb233
commit 0b816aca68
10 changed files with 103 additions and 48 deletions

View File

@ -51,7 +51,7 @@ void stop_module_timer(void) {
is_module_playing = false; is_module_playing = false;
} }
void set_game_time(uint32_t new_time) { void set_game_time(int32_t new_time) {
if (new_time > 0) { if (new_time > 0) {
game_time_count_up = false; game_time_count_up = false;
game_time_left = new_time; game_time_left = new_time;
@ -62,8 +62,12 @@ void set_game_time(uint32_t new_time) {
write_game_time(game_time_left); write_game_time(game_time_left);
} }
uint32_t get_game_time() { int32_t get_game_time() {
return game_time_left; if (game_time_count_up) {
return -((int32_t) game_time_left);
} else {
return ((int32_t) game_time_left);
}
} }
void set_module_time(uint32_t new_time) { void set_module_time(uint32_t new_time) {

View File

@ -18,9 +18,9 @@ void start_module_timer(void);
void stop_module_timer(void); void stop_module_timer(void);
/// Sets the game time in ms /// Sets the game time in ms
void set_game_time(uint32_t new_time); void set_game_time(int32_t new_time);
/// Gets the current game time in ms /// Gets the current game time in ms
uint32_t get_game_time(); int32_t get_game_time();
/// Gets the current game time in ms /// Gets the current game time in ms
void time_penalty(uint32_t penalty); void time_penalty(uint32_t penalty);

View File

@ -79,7 +79,7 @@ void clear_wires_pressed_released_cut(void) {
button_released = false; button_released = false;
} }
void strike(char* reason) { void strike(const char* reason) {
ESP_LOGW("strike!", "%s", reason); ESP_LOGW("strike!", "%s", reason);
lcd_set_cursor(&lcd, 0, 3); lcd_set_cursor(&lcd, 0, 3);
lcd_print(&lcd, reason); lcd_print(&lcd, reason);

View File

@ -29,6 +29,6 @@ void clear_wires_pressed_released_cut(void);
void set_leds(uint8_t led_states); void set_leds(uint8_t led_states);
void strike(char* reason); void strike(const char* reason);
#endif /* WIRES_HPP */ #endif /* WIRES_HPP */

View File

@ -102,3 +102,39 @@ void do_star_codes(StarCodeHandler* star_codes, int star_codes_len) {
vTaskDelay(pdMS_TO_TICKS(10)); vTaskDelay(pdMS_TO_TICKS(10));
} }
} }
static lv_style_t game_results_style;
static lv_obj_t* game_results_label;
static char str_buf[10] = {0};
static char* write_time(uint32_t game_time) {
uint8_t hours = (game_time / (1000*60*60)) % 10;
uint8_t minutes = (game_time / (1000*60)) % 60;
uint8_t seconds = (game_time / (1000)) % 60;
sprintf(str_buf, "%d:%d:%d", hours, minutes, seconds);
return str_buf;
}
void display_game_results(void) {
if (xSemaphoreTake(xGuiSemaphore, portMAX_DELAY) == pdTRUE) {
lv_style_init(&game_results_style);
lv_style_set_text_color(&game_results_style, lv_color_white());
lv_style_set_bg_color(&game_results_style, lv_color_black());
lv_style_set_bg_opa(&game_results_style, LV_OPA_100);
lv_style_set_text_align(&game_results_style, LV_TEXT_ALIGN_CENTER);
game_results_label = lv_label_create(lv_scr_act());
lv_obj_add_flag(game_results_label, LV_OBJ_FLAG_HIDDEN);
lv_obj_align(game_results_label, LV_ALIGN_CENTER, 0, 0);
lv_obj_add_style(game_results_label, &game_results_style, LV_STATE_DEFAULT);
char buf[100] = {0};
char* time = write_time(get_game_time());
sprintf(buf, "Finished!\nTotal Time (w/ penalties): %s\nTotal Strikes: %ld", time, total_strikes);
lv_label_set_text(game_results_label, buf);
xSemaphoreGive(xGuiSemaphore);
}
}

View File

@ -8,10 +8,11 @@
#include "drivers/char_lcd.h" #include "drivers/char_lcd.h"
#include "drivers/leds.h" #include "drivers/leds.h"
#include "drivers/speaker.h" #include "drivers/speaker.h"
#include "drivers/tft.h"
struct StarCodeHandler { struct StarCodeHandler {
char* code; const char* code;
char* display_text; const char* display_text;
bool should_exit; bool should_exit;
void (*callback)(void); void (*callback)(void);
}; };
@ -23,5 +24,6 @@ struct StarCodeHandler {
void clean_bomb(void); void clean_bomb(void);
void poster_child_task(void* arg); void poster_child_task(void* arg);
void do_star_codes(StarCodeHandler* star_codes, int star_codes_len); void do_star_codes(StarCodeHandler* star_codes, int star_codes_len);
void display_game_results();
#endif /* HELPER_H */ #endif /* HELPER_H */

View File

@ -28,38 +28,6 @@ static const char *TAG = "main";
uint32_t initial_game_time = 60*60*1000; uint32_t initial_game_time = 60*60*1000;
uint32_t skip_to_step = 0; uint32_t skip_to_step = 0;
static void print_bin(char* out_str, uint8_t n) {
out_str[0] = ((n & 0b1000) ? '1' : '0');
out_str[1] = ((n & 0b0100) ? '1' : '0');
out_str[2] = ((n & 0b0010) ? '1' : '0');
out_str[3] = ((n & 0b0001) ? '1' : '0');
}
static void debug_switches() {
uint8_t switch_state = 0;
uint8_t button_state = 0;
char buff[5] = {0};
while (1) {
uint8_t new_button_state = get_button_state();
if (new_button_state != button_state) {
button_state = new_button_state;
print_bin(buff, button_state);
ESP_LOGI("main", "b: 0b%s", buff);
}
uint8_t new_switch_state = get_switch_state();
if (new_switch_state != switch_state) {
switch_state = new_switch_state;
print_bin(buff, switch_state);
ESP_LOGI("main", "s: 0b%s", buff);
}
vTaskDelay(pdMS_TO_TICKS(10));
}
}
extern "C" void app_main(void) { extern "C" void app_main(void) {
printf("app_main\n"); printf("app_main\n");
@ -95,5 +63,7 @@ extern "C" void app_main(void) {
stop_game_timer(); stop_game_timer();
ESP_LOGI(TAG, "Bomb has been diffused. Counter-Terrorists win."); ESP_LOGI(TAG, "Bomb has been diffused. Counter-Terrorists win.");
ESP_ERROR_CHECK_WITHOUT_ABORT(play_raw("/sdcard/diffused.pcm")); ESP_ERROR_CHECK_WITHOUT_ABORT(play_raw("/sdcard/diffused.pcm"));
display_game_results();
} }

View File

@ -19,6 +19,7 @@ static void try_step4(void) { clean_bomb(); step4(); }
static void try_step5(void) { clean_bomb(); step5(); } static void try_step5(void) { clean_bomb(); step5(); }
static void try_step6(void) { clean_bomb(); step6(); } static void try_step6(void) { clean_bomb(); step6(); }
static void issue_strike(void) { strike("Strike Issued"); } static void issue_strike(void) { strike("Strike Issued"); }
static void debug_switches(void);
/// Wait for "*9819" /// Wait for "*9819"
void step0(void) { void step0(void) {
@ -43,6 +44,12 @@ void step0(void) {
.should_exit = false, .should_exit = false,
.callback = set_game_time, .callback = set_game_time,
}, },
{
.code = "*598623",
.display_text = "Debug Switches",
.should_exit = false,
.callback = debug_switches,
},
{ {
.code = "*59871", .code = "*59871",
.display_text = "Try Step 1", .display_text = "Try Step 1",
@ -232,3 +239,43 @@ static void set_game_time(void) {
vTaskDelay(pdMS_TO_TICKS(10)); vTaskDelay(pdMS_TO_TICKS(10));
} }
} }
static void print_bin(char* out_str, uint8_t n) {
out_str[0] = ((n & 0b1000) ? '1' : '0');
out_str[1] = ((n & 0b0100) ? '1' : '0');
out_str[2] = ((n & 0b0010) ? '1' : '0');
out_str[3] = ((n & 0b0001) ? '1' : '0');
}
static void debug_switches(void) {
clean_bomb();
uint8_t switch_state = 0;
uint8_t button_state = 0;
char buff[5] = {0};
KeypadKey key;
while (1) {
uint8_t new_button_state = get_button_state();
if (new_button_state != button_state) {
button_state = new_button_state;
print_bin(buff, button_state);
ESP_LOGI("main", "b: 0b%s", buff);
}
uint8_t new_switch_state = get_switch_state();
if (new_switch_state != switch_state) {
switch_state = new_switch_state;
print_bin(buff, switch_state);
ESP_LOGI("main", "s: 0b%s", buff);
}
if (get_pressed_keypad(&key) && key == KeypadKey::pound) {
return;
}
vTaskDelay(pdMS_TO_TICKS(10));
}
}

View File

@ -90,8 +90,7 @@ void step2(void) {
int solved_times = 0; int solved_times = 0;
new_puzzle(); new_puzzle();
int strike_time = xTaskGetTickCount(); int strike_time = 0;
bool striked = false;
while(solved_times < NUM_SOLVES) { while(solved_times < NUM_SOLVES) {
// for every bit in the answer- // for every bit in the answer-
set_module_sseg_raw(display_map); set_module_sseg_raw(display_map);
@ -111,13 +110,12 @@ void step2(void) {
} }
} else { } else {
strike_time = xTaskGetTickCount(); strike_time = xTaskGetTickCount();
striked = true;
strike("Incorrect Character!"); strike("Incorrect Character!");
} }
} }
if (xTaskGetTickCount() - strike_time > pdMS_TO_TICKS(5000)) { if (strike_time != 0 && xTaskGetTickCount() - strike_time > pdMS_TO_TICKS(5000)) {
striked = false; strike_time = 0;
lcd_clear(&lcd); lcd_clear(&lcd);
} }
vTaskDelay(pdMS_TO_TICKS(10)); vTaskDelay(pdMS_TO_TICKS(10));

View File

@ -386,8 +386,6 @@ void step5(void) {
int buttons_pressed = 0; int buttons_pressed = 0;
ButtonKey button; ButtonKey button;
KeypadKey key;
while (1) { while (1) {
if (get_pressed_button(&button)) { if (get_pressed_button(&button)) {
buttons_pressed++; buttons_pressed++;