summaryrefslogtreecommitdiff
path: root/arm7/lib
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/lib')
-rw-r--r--arm7/lib/include/OS_alarm.h3
-rw-r--r--arm7/lib/include/pad.h8
-rw-r--r--arm7/lib/src/PAD_xyButton.c24
3 files changed, 35 insertions, 0 deletions
diff --git a/arm7/lib/include/OS_alarm.h b/arm7/lib/include/OS_alarm.h
index 8ae89e97..a4566348 100644
--- a/arm7/lib/include/OS_alarm.h
+++ b/arm7/lib/include/OS_alarm.h
@@ -1,9 +1,12 @@
#ifndef POKEDIAMOND_ARM7_OS_ALARM_H
#define POKEDIAMOND_ARM7_OS_ALARM_H
+#include "OS_thread.h"
#include "nitro/OS_alarm_shared.h"
void OS_CreateAlarm(OSAlarm *alarm);
+BOOL OS_IsAlarmAvailable(void);
void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg);
+void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg);
#endif //POKEDIAMOND_ARM7_OS_ALARM_H
diff --git a/arm7/lib/include/pad.h b/arm7/lib/include/pad.h
new file mode 100644
index 00000000..8591bf7b
--- /dev/null
+++ b/arm7/lib/include/pad.h
@@ -0,0 +1,8 @@
+#ifndef POKEDIAMOND_PAD_H
+#define POKEDIAMOND_PAD_H
+
+#include "nitro/types.h"
+
+BOOL PAD_InitXYButton(void);
+
+#endif
diff --git a/arm7/lib/src/PAD_xyButton.c b/arm7/lib/src/PAD_xyButton.c
new file mode 100644
index 00000000..ed4e7c05
--- /dev/null
+++ b/arm7/lib/src/PAD_xyButton.c
@@ -0,0 +1,24 @@
+#include "function_target.h"
+#include "OS_alarm.h"
+#include "OS_tick.h"
+#include "pad.h"
+
+static BOOL PADi_XYButtonAvailable;
+static OSAlarm PADi_Alarm;
+
+extern void FUN_037FB92C(void);
+
+ARM_FUNC BOOL PAD_InitXYButton(void) {
+ OSTick tick;
+ if (!OS_IsTickAvailable() || !OS_IsAlarmAvailable())
+ return FALSE;
+ else if (PADi_XYButtonAvailable)
+ return FALSE;
+ else {
+ OS_CreateAlarm(&PADi_Alarm);
+ tick = OS_GetTick();
+ OS_SetPeriodicAlarm(&PADi_Alarm, tick + 0x82e, 0x82e, (OSAlarmHandler)FUN_037FB92C, NULL);
+ PADi_XYButtonAvailable = TRUE;
+ return TRUE;
+ }
+}