BEEP-8 SDK 1.0.0
Loading...
Searching...
No Matches
hif.h
Go to the documentation of this file.
1
17#pragma once
18#ifdef __cplusplus
19extern "C" {
20#endif
21#include <b8/type.h>
22#include <b8/register.h>
23#include <stddef.h>
24
25/* Gamepad button status bits */
26#define B8_HIF_PAD_STATUS_START (1 << 0)
27#define B8_HIF_PAD_STATUS_SELECT (1 << 1)
28#define B8_HIF_PAD_STATUS_LEFT (1 << 2)
29#define B8_HIF_PAD_STATUS_UP (1 << 3)
30#define B8_HIF_PAD_STATUS_RIGHT (1 << 4)
31#define B8_HIF_PAD_STATUS_DOWN (1 << 5)
32#define B8_HIF_PAD_STATUS_BTN_A (1 << 6)
33#define B8_HIF_PAD_STATUS_BTN_B (1 << 7)
34
35/* Alias for button names */
36#define B8_HIF_PAD_STATUS_BTN_X B8_HIF_PAD_STATUS_BTN_A
37#define B8_HIF_PAD_STATUS_BTN_Z B8_HIF_PAD_STATUS_BTN_B
38
39#define B8_HIF_ADDR (0xffffa000)
40
74#define B8_HIF_PAD(n) _B8_REG(B8_HIF_ADDR + (n)*4)
75#define B8_HIF_PAD0 B8_HIF_PAD(0)
76#define B8_HIF_PAD1 B8_HIF_PAD(1)
77#define B8_HIF_PAD2 B8_HIF_PAD(2)
78#define B8_HIF_PAD3 B8_HIF_PAD(3)
79
80/* Touch and mouse control registers */
81#define B8_HIF_TOUCH_CTRL _B8_REG(B8_HIF_ADDR + 0x40)
82#define B8_HIF_TOUCH_CONNECT _B8_REG(B8_HIF_ADDR + 0x44)
83
84/* Keyboard input registers */
85#define B8_HIF_KB_ADDR (B8_HIF_ADDR + 0x20)
86#define B8_HIF_KB_RX _B8_REG(B8_HIF_KB_ADDR + 0x00)
87#define B8_HIF_KB_LEN _B8_REG(B8_HIF_KB_ADDR + 0x08)
88
89/* Keyboard status bits */
90#define B8_HIF_KB_STATUS _B8_REG(B8_HIF_KB_ADDR + 0x10)
91#define B8_HIF_KB_STATUS_ALT (1 << 0)
92#define B8_HIF_KB_STATUS_SHIFT (1 << 1)
93#define B8_HIF_KB_STATUS_META (1 << 2)
94#define B8_HIF_KB_STATUS_CONTROL (1 << 3)
95
96/* Keyboard special key codes */
97#define B8_HIF_KB_CODE_BACKSPACE (8)
98#define B8_HIF_KB_CODE_TAB (9)
99#define B8_HIF_KB_CODE_ENTER (10)
100#define B8_HIF_KB_CODE_ESCAPE (27)
101#define B8_HIF_KB_CODE_ARROW_LEFT (128)
102#define B8_HIF_KB_CODE_ARROW_RIGHT (129)
103#define B8_HIF_KB_CODE_ARROW_UP (130)
104#define B8_HIF_KB_CODE_ARROW_DOWN (131)
105
112typedef enum {
113 B8_HIF_EV_TOUCH_START = 0xf0,
114 B8_HIF_EV_TOUCH_MOVE,
115 B8_HIF_EV_TOUCH_CANCEL,
116 B8_HIF_EV_TOUCH_END,
117 B8_HIF_EV_MOUSE_DOWN,
118 B8_HIF_EV_MOUSE_MOVE,
119 B8_HIF_EV_MOUSE_UP,
120 B8_HIF_EV_MOUSE_HOVER_MOVE,
122
129typedef struct _b8HifEvent {
131 s16 xp;
132 s16 yp;
133 u8 identifier; //**< `identifier`: A unique identifier for the event (useful for tracking touch points). */
135
136#define B8_HIF_MAX_TOUCH_EVENTS (32)
137
147typedef struct _b8HifEvents {
148 size_t num;
149 b8HifEvent events[B8_HIF_MAX_TOUCH_EVENTS];
151
167extern int b8HifGetEvents(b8HifEvents* result);
168
198
199
225extern const b8HifMouseStatus* b8HifGetMouseStatus(void);
226
227#ifdef __cplusplus
228}
229#endif
230
struct _b8HifEvents b8HifEvents
Structure representing a collection of HIF events.
struct _b8HifEvent b8HifEvent
Structure representing a single HIF event.
struct _b8HifMouseStatus b8HifMouseStatus
Structure representing the current mouse or touch panel status.
const b8HifMouseStatus * b8HifGetMouseStatus(void)
Retrieve the current mouse or touch panel status.
Definition hif.c:164
int b8HifGetEvents(b8HifEvents *result)
Retrieve the current HIF events.
Definition hif.c:25
b8HifEventType
Enumeration of HIF event types.
Definition hif.h:112
Peripheral register map definitions for the BEEP-8 system.
Structure representing a single HIF event.
Definition hif.h:129
s16 yp
Definition hif.h:132
b8HifEventType type
Definition hif.h:130
s16 xp
Definition hif.h:131
Structure representing a collection of HIF events.
Definition hif.h:147
size_t num
Definition hif.h:148
b8HifEvent events[B8_HIF_MAX_TOUCH_EVENTS]
Definition hif.h:149
Structure representing the current mouse or touch panel status.
Definition hif.h:193
s16 mouse_y
Definition hif.h:195
s16 mouse_x
Definition hif.h:194
u8 is_dragging
Definition hif.h:196