diff options
Diffstat (limited to 'arm7/lib')
-rw-r--r-- | arm7/lib/include/OS_alarm.h | 3 | ||||
-rw-r--r-- | arm7/lib/include/pad.h | 8 | ||||
-rw-r--r-- | arm7/lib/src/PAD_xyButton.c | 24 |
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; + } +} |