1 /*---------------------------------------------------------------------------*
2   Project:  Wii Connect 24 API demos
3   File:     Schedule.c
4 
5   Copyright 2006 Nintendo. 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   $Log: Schedule.c,v $
14   Revision 1.2  2007/10/26 08:05:57  seiki_masashi
15   Support for REXDEMOGetAnyMixedPadTrigger.
16 
17   Revision 1.1  2006/09/27 08:56:17  torigoe_nobutaka
18   Moved from nwc24demo/src.
19 
20   Revision 1.9  2006/09/19 07:56:29  terui
21   Added feature for executing NWC24TrySuspendScheduler().
22 
23   Revision 1.8  2006/09/05 10:57:10  yosizaki
24   Changed to use demos/share.
25 
26   Revision 1.7  2006/08/30 13:40:03  terui
27   Supported REXDEMO library once again.
28 
29   Revision 1.6  2006/08/30 10:28:38  terui
30   Added support for REXDEMO library.
31 
32   Revision 1.5  2006/08/25 04:26:48  terui
33   Deleted demo functions that require network settings.
34 
35   Revision 1.4  2006/08/24 12:34:17  terui
36   Added a feature for changing network settings and cleaned up code for debugging.
37 
38   Revision 1.3  2006/08/24 09:32:11  terui
39   Standardized on-screen display format with other demos.
40 
41   Revision 1.2  2006/08/14 14:39:50  yasu
42   Suppressed return value ignored warnings.
43 
44   Revision 1.1  2006/07/18 08:51:45  terui
45   Initial upload
46 
47   $NoKeywords: $
48  *---------------------------------------------------------------------------*/
49 
50 #include "rexdemo/graphic.h"
51 #include "rexdemo/demokpad.h"
52 #include <revolution/nwc24/NWC24Schedule.h>
53 
54 /*---------------------------------------------------------------------------*
55     Function Prototype
56  *---------------------------------------------------------------------------*/
57 static void     ReportUsage( void );
58 
59 
60 /*===========================================================================*/
61 
62 /*---------------------------------------------------------------------------*
63   Name        : Main
64   Description : Entry point at time of program start.
65   Arguments   : None
66   Returns     : int  -  Returns the result of the process.
67  *---------------------------------------------------------------------------*/
68 int
main(void)69 main( void )
70 {
71     REXDEMOKPadInit();
72     REXDEMOInitScreen(FALSE);
73     ReportUsage();
74 
75     while( TRUE )
76     {
77         REXDEMOKPadRead();
78 
79         /* (1) button */
80         if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_1 | (PAD_BUTTON_X << 16)) )
81         {
82             s32     result  = NWC24SuspendScheduler();
83 
84             if( result >= 0 )
85             {
86                 REXDEMOReport( "NWC24SuspendScheduler() success (%d)\n", result );
87             }
88             else
89             {
90                 REXDEMOError( "NWC24SuspendScheduler() failure (%d)\n", result );
91             }
92         }
93 
94         /* (2) button */
95         if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_2 | (PAD_BUTTON_Y << 16)) )
96         {
97             s32     result  = NWC24ResumeScheduler();
98 
99             if( result >= 0 )
100             {
101                 REXDEMOReport( "NWC24ResumeScheduler() success (%d)\n", result );
102             }
103             else
104             {
105                 REXDEMOError( "NWC24ResumeScheduler() failure (%d)\n", result );
106             }
107         }
108 
109         /* (A) button */
110         if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_A | (PAD_BUTTON_A << 16)) )
111         {
112             s32     result  = NWC24TrySuspendScheduler();
113 
114             if( result >= 0 )
115             {
116                 REXDEMOReport( "NWC24TrySuspendScheduler() success (%d)\n", result );
117             }
118             else
119             {
120                 REXDEMOError( "NWC24TrySuspendScheduler() failure (%d)\n", result );
121             }
122         }
123 
124         /* (cross) button */
125         if( REXDEMOGetAnyMixedPadTrigger() &
126             ( KPAD_BUTTON_UP | KPAD_BUTTON_DOWN | KPAD_BUTTON_LEFT | KPAD_BUTTON_RIGHT
127               | (PAD_BUTTON_UP << 16) | (PAD_BUTTON_DOWN << 16) | (PAD_BUTTON_LEFT << 16) | (PAD_BUTTON_RIGHT << 16)) )
128         {
129             u32         mailSpan;
130             u32         downloadSpan;
131             NWC24Err    result;
132 
133             result  = NWC24GetScheduleSpan( &mailSpan, &downloadSpan );
134             if( result == NWC24_OK )
135             {
136                 REXDEMOReport( "NWC24GetScheduleSpan() success\n" );
137 
138                 /* (up) button */
139                 if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_UP | (PAD_BUTTON_UP << 16)) )
140                 {
141                     mailSpan ++;
142                 }
143                 /* (down) button */
144                 if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_DOWN | (PAD_BUTTON_DOWN << 16)) )
145                 {
146                     mailSpan --;
147                 }
148                 /* (left) button */
149                 if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_LEFT | (PAD_BUTTON_LEFT << 16)) )
150                 {
151                     downloadSpan --;
152                 }
153                 /* (right) button */
154                 if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_RIGHT | (PAD_BUTTON_RIGHT << 16)) )
155                 {
156                     downloadSpan ++;
157                 }
158                 result  = NWC24SetScheduleSpan( mailSpan, downloadSpan );
159                 if( result == NWC24_OK )
160                 {
161                     REXDEMOReport( "NWC24SetScheduleSpan() success\n" );
162                     if( mailSpan > 0 )
163                     {
164                         REXDEMOReport( " Automatic checking mail span: %d %s\n",
165                             mailSpan, ( mailSpan > 1 ? "minutes" : "minute" ) );
166                     }
167                     else
168                     {
169                         REXDEMOWarning( " Doesn't check mail automatically\n" );
170                     }
171                     if( downloadSpan > 0 )
172                     {
173                         REXDEMOReport( " Automatic downloading span: %d %s\n",
174                             downloadSpan, ( downloadSpan > 1 ? "minutes" : "minute" ) );
175                     }
176                     else
177                     {
178                         REXDEMOWarning( " Doesn't download automatically\n" );
179                     }
180                 }
181                 else
182                 {
183                     REXDEMOError( "NWC24SetScheduleSpan() failure (%d)\n", result );
184                 }
185             }
186             else
187             {
188                 REXDEMOError( "NWC24GetScheduleSpan() failure (%d)\n", result );
189             }
190         }
191 
192         /* (home) button */
193         if( REXDEMOGetAnyMixedPadTrigger() & (KPAD_BUTTON_HOME | (PAD_BUTTON_START << 16)) )
194         {
195             ReportUsage();
196         }
197 
198         /* Waiting for rendering & V-blank */
199         REXDEMOWaitRetrace();
200     }
201 
202     OSHalt( "End of demo\n" );
203     return 0;
204 }
205 
206 /*---------------------------------------------------------------------------*
207   Name        : ReportUsage
208   Description : Outputs how to operate the demo program.
209   Arguments   : None
210   Returns     : None
211  *---------------------------------------------------------------------------*/
212 static void
ReportUsage(void)213 ReportUsage( void )
214 {
215     REXDEMOUsage( "----------------------------------------\n" );
216     REXDEMOUsage( " NWC24 schedule demo\n" );
217     REXDEMOUsage( " ---- Usage ----\n" );
218     REXDEMOUsage( "  (1) : Suspend scheduler\n" );
219     REXDEMOUsage( "  (2) : Resume scheduler\n" );
220     REXDEMOUsage( "  (A) : TrySuspend scheduler\n" );
221     REXDEMOUsage( "  (U) : Increment mail check span\n" );
222     REXDEMOUsage( "  (D) : Decrement mail check span\n" );
223     REXDEMOUsage( "  (L) : Decrement download span\n" );
224     REXDEMOUsage( "  (R) : Increment download span\n" );
225     REXDEMOUsage( "----------------------------------------\n" );
226 }
227 
228 
229 /*---------------------------------------------------------------------------*
230   End of file
231  *---------------------------------------------------------------------------*/
232