1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: applet.h 4 5 Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 48673 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_SAMPLE_DEMOS_DEMO1_APPLET_H_ 17 #define NN_SAMPLE_DEMOS_DEMO1_APPLET_H_ 18 19 #include <nn/os.h> 20 #include <nn/applet.h> 21 22 class TransitionHandler 23 { 24 public: 25 typedef void (*TRANSITION_CALLBACK)(); 26 public: TransitionHandler()27 TransitionHandler() {} ~TransitionHandler()28 ~TransitionHandler() {} 29 30 /* Please see man pages for details 31 32 33 */ 34 static void Initialize(); 35 /* Please see man pages for details 36 37 */ 38 static void Finalize(); 39 /* Please see man pages for details 40 41 */ 42 static void EnableSleep(); 43 /* Please see man pages for details 44 45 */ 46 static void DisableSleep(); 47 /* Please see man pages for details 48 49 50 */ 51 static void Process(); 52 /* Please see man pages for details 53 54 */ 55 static bool IsExitRequired(); 56 /* Please see man pages for details 57 58 */ 59 static void Lock(); 60 /* Please see man pages for details 61 62 */ 63 static bool TryLock(); 64 /* Please see man pages for details 65 66 */ 67 static void Unlock(); 68 /* Please see man pages for details 69 70 */ 71 static void LockForSleep(); 72 /* Please see man pages for details 73 74 */ 75 static bool TryLockForSleep(); 76 /* Please see man pages for details 77 78 */ 79 static void UnlockForSleep(); 80 81 82 /* Please see man pages for details 83 84 */ SetPrepareSleepCallback(TRANSITION_CALLBACK f)85 static void SetPrepareSleepCallback(TRANSITION_CALLBACK f) { s_PrepareSleepCallback = f; } 86 87 /* Please see man pages for details 88 89 */ SetAfterSleepCallback(TRANSITION_CALLBACK f)90 static void SetAfterSleepCallback(TRANSITION_CALLBACK f) { s_AfterSleepCallback = f; } 91 92 /* Please see man pages for details 93 94 */ SetPrepareHomeButtonCallback(TRANSITION_CALLBACK f)95 static void SetPrepareHomeButtonCallback(TRANSITION_CALLBACK f) { s_PrepareHomeButtonCallback = f; } 96 97 /* Please see man pages for details 98 99 */ SetAfterHomeButtonCallback(TRANSITION_CALLBACK f)100 static void SetAfterHomeButtonCallback(TRANSITION_CALLBACK f) { s_AfterHomeButtonCallback = f; } 101 102 /* Please see man pages for details 103 104 */ SetPreparePowerButtonCallback(TRANSITION_CALLBACK f)105 static void SetPreparePowerButtonCallback(TRANSITION_CALLBACK f) { s_PreparePowerButtonCallback = f; } 106 107 private: 108 /* Please see man pages for details 109 110 */ 111 static AppletQueryReply SleepQueryCallback( uptr arg ); 112 /* Please see man pages for details 113 114 */ 115 static void AwakeCallback( uptr arg ); 116 117 private: 118 static bool s_IsExitRequired; 119 120 // Flag to enable LCD after waiting for one-frame worth of rendering after recovering from sleep 121 static volatile bool s_IsAfterWakeUp; 122 123 // Event used for Sleep Mode 124 static nn::os::LightEvent s_AwakeEvent; 125 126 // CriticalSection used for mutual exclusion related to transitions and Sleep Mode 127 static nn::os::CriticalSection s_CriticalSection; 128 static nn::os::CriticalSection s_CriticalSectionForSleep; 129 130 // Process before sleep transition 131 static TRANSITION_CALLBACK s_PrepareSleepCallback; 132 // Process after recovery from sleep 133 static TRANSITION_CALLBACK s_AfterSleepCallback; 134 135 // Process before HOME Menu transition 136 static TRANSITION_CALLBACK s_PrepareHomeButtonCallback; 137 // Process after return from HOME Menu. 138 static TRANSITION_CALLBACK s_AfterHomeButtonCallback; 139 140 // Process before display of POWER Menu 141 static TRANSITION_CALLBACK s_PreparePowerButtonCallback; 142 }; 143 144 #endif // NN_SAMPLE_DEMOS_DEMO1_APPLET_H_ 145