1 /*---------------------------------------------------------------------------*
2 
3   Copyright (C) Nintendo.  All rights reserved.
4 
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law.  They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10 
11  *---------------------------------------------------------------------------*/
12 /*
13  * Process Switch Driver Defines, Types, and Prototypes
14  * Created by Charles Berger, April 27, 2012
15  */
16 #ifndef __PROC_UI__
17 #define __PROC_UI__
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 typedef enum
24 {
25     PROCUI_STATUS_FOREGROUND,
26     PROCUI_STATUS_BACKGROUND,
27     PROCUI_STATUS_RELEASING,
28 
29     PROCUI_STATUS_EXIT,
30 
31 } ProcUIStatus;
32 
33 typedef enum
34 {
35     PROCUI_MESSAGE_ACQUIRE = 0,
36     PROCUI_MESSAGE_RELEASE,
37     PROCUI_MESSAGE_EXIT,
38     PROCUI_MESSAGE_NETIO_START,
39     PROCUI_MESSAGE_NETIO_STOP,
40     PROCUI_MESSAGE_HBDENIED,
41 
42     PROCUI_NUM_MESSAGES
43 } ProcUIMessage;
44 
45 #define PROCUI_STATUS_INVALID_HEAP  -1
46 #define PROCUI_STATUS_OK            0
47 
48 typedef void (*ProcUISaveCallbackFunction)(void);
49 typedef u32 (*ProcUISaveCallbackFunctionEx)(void*);
50 void ProcUISetSaveCallback(ProcUISaveCallbackFunctionEx func, void* data);
51 
52 void ProcUIInit(ProcUISaveCallbackFunction func);
53 void ProcUIInitEx(ProcUISaveCallbackFunctionEx func, void* data);
54 void ProcUIShutdown(void);
55 
56 BOOL ProcUIIsRunning(void);
57 BOOL ProcUIInForeground(void);
58 BOOL ProcUIInShutdown(void);
59 
60 ProcUIStatus ProcUISubProcessMessages(BOOL block);
61 ProcUIStatus ProcUIProcessMessages(BOOL block);
62 
63 void ProcUISetMEM1Storage(void* data, u32 size);
64 void ProcUISetBucketStorage(void* data, u32 size);
65 
66 typedef u32 (*ProcUICallbackFunction)(void*);
67 
68 void ProcUISetCallbackStackSize(u32 size);
69 
70 void ProcUIClearExitCallbacks(void);
71 void ProcUIClearCallbacks(void);
72 
73 void ProcUIDrawDoneRelease(void);
74 
75 void ProcUIRegisterCallback(ProcUIMessage message, ProcUICallbackFunction func, void* data, s32 priority);
76 void ProcUIRegisterCallbackCore(ProcUIMessage message, ProcUICallbackFunction func, void* data, s32 priority, int core);
77 
78 void ProcUIRegisterBackgroundCallback(ProcUICallbackFunction func, void* data, OSTime ticksToDelay);
79 
80 u32 ProcUICalcMemorySize(u32 numCallbacks);
81 s32 ProcUISetMemoryPool(void* pMemory, u32 sizeInBytes);
82 
83 #ifdef __cplusplus
84 }
85 #endif
86 
87 #endif  // __PROC_UI__
88