/* globals */
-extern QueueHandle_t gt_btnq;
+QueueHandle_t gt_btnq;
static struct gt_btn_msg_t btn_evts[10] = {
};
button_handle_t gpio_btn[5] = {NULL, NULL, NULL, NULL, NULL};
+
+ /* create queue */
+ gt_btnq = xQueueCreate(EVENT_Q_SIZE, sizeof(struct gt_btn_msg_t*));
+
/* create buttons */
for (i = 0; i < NUM_BUTTONS; ++i) {
ESP_ERROR_CHECK(iot_button_new_gpio_device(
struct gt_btn_msg_t *msg = (struct gt_btn_msg_t*) user_data;
ESP_LOGI(TAG, "Button pressed");
ESP_LOGI(TAG, "The selected event: %d; and event %d", msg->btn, msg->evt);
+ xQueueSendToBackFromISR(gt_btnq, (void *) &user_data, NULL);
}
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"
#include "driver/uart.h"
+#include "iot_button.h"
#include "Goldelox_const4D.h"
#include "goldeloxSerial.h"
#include "esp_system.h"
#include "task_lcd.h"
+#include "task_button.h"
#include "pins.h"
const uart_port_t uart_num = UART_NUM_1;
gl_txt_FGcolour(disp, DARKGREEN);
gl_txt_BGcolour(disp, ALICEBLUE);
while (1) {
+ struct gt_btn_msg_t *btnmsg;
time_t tm = time(NULL);
char txt[12];
// snprintf(txt, 10, "%lld", (long long) tm);
BLACK);
lcd_clock_draw_hand(disp, tm % (60 * 60 * 12),
(60 * 60 * 12), CLOCKSCR_TIMEHDHR, BLACK);
+ while (xQueueReceive(gt_btnq, (void *) &btnmsg, 0) == pdPASS) {
+ if (btnmsg->btn == GT_BTN_WHITE
+ && btnmsg->evt == BUTTON_SINGLE_CLICK) {
+ return;
+ }
+ }
vTaskDelay(pdMS_TO_TICKS(500));
}
}
void lcd_homepage_loop(gl_display_t *disp) {
uint8_t num_rows = 3;
- uint8_t num_cols = 2;
+ uint8_t num_cols = 3;
uint8_t num_padd = APPSCR_PAD;
+ lcd_clock_loop(disp);
+
gl_gfx_BGcolour(disp, BLACK);
gl_gfx_Cls(disp);
WHITE);
}
}
- lcd_clock_loop(disp);
while(1)
vTaskDelay(pdMS_TO_TICKS(1000));
}