#include "STWButtonController.hpp"

#include "main.h"
#include "tx_api.h"
#include "ui.h"

void STWButtonController::init() {}

bool STWButtonController::sample(uint8_t &key) {
  ButtonMessage msg;
  if (tx_queue_receive(&gui_button_queue, &msg, TX_NO_WAIT) == TX_SUCCESS) {
    switch (msg.kind) {
    case UMK_BTN_RELEASED:
      key = KEY_BTN1 + msg.number;
      break;
    case UMK_ENC_CW: {
      if (msg.number == 0) {
        key = KEY_ENC1_CW;
      } else {
        key = KEY_ENC2_CW;
      }
      break;
    }
    case UMK_ENC_CCW:
      if (msg.number == 0) {
        key = KEY_ENC1_CCW;
      } else {
        key = KEY_ENC2_CCW;
      }
    }
    return true;
  }

  return false;
}