Skip to content

Commit

Permalink
add power button, remove unused dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
gebeto committed Jan 15, 2023
1 parent 6aacdc0 commit 7080c29
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 26 deletions.
35 changes: 17 additions & 18 deletions xbox_controller.c
Expand Up @@ -6,12 +6,13 @@
enum XboxControllerSubmenuIndex
{
XboxControllerSubmenuIndexXboxOne,
XboxControllerSubmenuIndexPower
};

uint32_t usb_hid_exit_confirm_view(void *context)
{
UNUSED(context);
return UsbHidViewExitConfirm;
return UsbHidViewSubmenu;
}

uint32_t usb_hid_exit(void *context)
Expand All @@ -29,6 +30,16 @@ void usb_hid_submenu_callback(void *context, uint32_t index)
app->view_id = UsbHidViewXboxController;
view_dispatcher_switch_to_view(app->view_dispatcher, UsbHidViewXboxController);
}
else if (index == XboxControllerSubmenuIndexPower)
{
InfraredMessage *message = malloc(sizeof(InfraredMessage));
message->protocol = InfraredProtocolNECext;
message->address = 0xD880;
message->command = 0xD02F;
message->repeat = false;
infrared_send(message, 2);
free(message);
}
}

void usb_hid_dialog_callback(DialogExResult result, void *context)
Expand Down Expand Up @@ -66,23 +77,13 @@ XboxController *xbox_controller_app_alloc()

submenu_add_item(
app->submenu, "Xbox One", XboxControllerSubmenuIndexXboxOne, usb_hid_submenu_callback, app);
submenu_add_item(
app->submenu, "Power", XboxControllerSubmenuIndexPower, usb_hid_submenu_callback, app);
view_set_previous_callback(submenu_get_view(app->submenu), usb_hid_exit);
view_dispatcher_add_view(
app->view_dispatcher, UsbHidViewSubmenu, submenu_get_view(app->submenu));

// Dialog view
app->dialog = dialog_ex_alloc();
// view_set_orientation(dialog_ex_get_view(app->dialog), ViewOrientationVertical);
dialog_ex_set_result_callback(app->dialog, usb_hid_dialog_callback);
dialog_ex_set_context(app->dialog, app);
dialog_ex_set_left_button_text(app->dialog, "Exit");
dialog_ex_set_right_button_text(app->dialog, "Stay");
dialog_ex_set_center_button_text(app->dialog, "Menu");
dialog_ex_set_header(app->dialog, "Close Current App?", 16, 12, AlignLeft, AlignTop);
view_dispatcher_add_view(
app->view_dispatcher, UsbHidViewExitConfirm, dialog_ex_get_view(app->dialog));

// Dirpad view
// Xbox Controller View
app->xbox_controller_view = xbox_controller_view_alloc();
view_set_previous_callback(
xbox_controller_view_get_view(app->xbox_controller_view), usb_hid_exit_confirm_view);
Expand All @@ -91,8 +92,8 @@ XboxController *xbox_controller_app_alloc()
UsbHidViewXboxController,
xbox_controller_view_get_view(app->xbox_controller_view));

// TODO switch to menu after Media is done
app->view_id = UsbHidViewXboxController;
// Switch to Xbox Controller by default
app->view_id = UsbHidViewSubmenu;
view_dispatcher_switch_to_view(app->view_dispatcher, app->view_id);

return app;
Expand All @@ -108,8 +109,6 @@ void xbox_controller_app_free(XboxController *app)
// Free views
view_dispatcher_remove_view(app->view_dispatcher, UsbHidViewSubmenu);
submenu_free(app->submenu);
view_dispatcher_remove_view(app->view_dispatcher, UsbHidViewExitConfirm);
dialog_ex_free(app->dialog);
view_dispatcher_remove_view(app->view_dispatcher, UsbHidViewXboxController);
xbox_controller_view_free(app->xbox_controller_view);
view_dispatcher_free(app->view_dispatcher);
Expand Down
19 changes: 11 additions & 8 deletions xbox_controller.h
Expand Up @@ -9,22 +9,25 @@

#include <gui/modules/submenu.h>
#include <infrared_worker.h>
#include <infrared_transmit.h>
#include <gui/modules/dialog_ex.h>
#include "views/xbox_controller_view.h"

// this should be used as global state
// we can store different things here
typedef struct {
Gui* gui;
NotificationApp* notifications;
ViewDispatcher* view_dispatcher;
Submenu* submenu;
DialogEx* dialog;
XboxControllerView* xbox_controller_view;
typedef struct
{
Gui *gui;
NotificationApp *notifications;
ViewDispatcher *view_dispatcher;
Submenu *submenu;
DialogEx *dialog;
XboxControllerView *xbox_controller_view;
uint32_t view_id;
} XboxController;

typedef enum {
typedef enum
{
UsbHidViewSubmenu,
UsbHidViewXboxController,
UsbHidViewExitConfirm,
Expand Down

0 comments on commit 7080c29

Please sign in to comment.