1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - ENV - demos - env-1
3   File:     main.c
4 
5   Copyright 2007 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   $Date:: 2007-11-15#$
14   $Rev: 2414 $
15   $Author: hatamoto_minoru $
16  *---------------------------------------------------------------------------*/
17 #include <nitro.h>
18 #include <string.h>
19 
20 //================================================================================
21 //---- resource set 1
22 ENVResource myResources1[] = {
23     "testClass.member", ENV_U32(777),
24 
25     //---- end mark
26     ENV_RESOURCE_END
27 };
28 
29 //---- resource set 2
30 ENVResource myResources2[] = {
31     "test.U64_1", ENV_U64(30),
32     "test.U64_2", ENV_U64(-30),
33     "test.U64_3", ENV_U64(0xf2345f67abcd00e0),
34 
35     "test.S64_1", ENV_S64(30),
36     "test.S64_2", ENV_S64(-30),
37     "test.S64_3", ENV_S64(0xf2345f67abcd00e0),
38 
39     "test.s1", ENV_STRING("abcdef"),
40     "test.s2", ENV_STRING("\0\0\0"),
41 
42     "test.b1", ENV_BINARY("abcdef"),
43     "test.b2", ENV_BINARY("\0\0\0"),
44 
45     "TESTPREFIX.STR_1", ENV_STRING("www.nintendo.co.jp"),
46     "TESTPREFIX.BIN_1", ENV_BINARY("test@nintendo.co.jp\0"),
47 
48     "TESTPREFIX.U32_1", ENV_U32(1),
49     "TESTPREFIX.U32_2", ENV_U32(0x12345),
50     "TESTPREFIX.U32_3", ENV_U32(0xfedcba98),
51     "TESTPREFIX.U32_4", ENV_U32(0x80000000),
52 
53     "TESTPREFIX.S32_1", ENV_S32(12345),
54     "TESTPREFIX.S32_2", ENV_S32(-8000),
55     "TESTPREFIX.S32_3", ENV_S32(3000000000),
56     "TESTPREFIX.S32_4", ENV_S32(-3000000000),
57 
58     "TESTPREFIX.U16_1", ENV_U16(1000),
59     "TESTPREFIX.U16_2", ENV_U16(-1234),
60     "TESTPREFIX.U16_3", ENV_U16(65536),
61     "TESTPREFIX.U16_4", ENV_U16(65537),
62 
63     "TESTPREFIX.S16_1", ENV_S16(1000),
64     "TESTPREFIX.S16_2", ENV_S16(-1234),
65     "TESTPREFIX.S16_3", ENV_S16(65536),
66     "TESTPREFIX.S16_4", ENV_S16(65537),
67 
68     "TESTPREFIX.BOOL_1", ENV_BOOL(TRUE),
69     "TESTPREFIX.BOOL_2", ENV_BOOL(FALSE),
70     "TESTPREFIX.BOOL_3", ENV_BOOL(1234),
71 
72     "class1.member1", ENV_U32(0),
73     "class2.member1", ENV_U32(0),
74     "class3.member1", ENV_U32(0),
75     "class4.member11", ENV_U32(0),
76     "class5.member1.1", ENV_U32(0),
77     "class6.member2.member1", ENV_U32(0),
78 
79     //---- end mark
80     ENV_RESOURCE_END
81 };
82 
83 ENVResource *resourceArray[] = {
84     myResources1, myResources2, NULL
85 };
86 
87 /*---------------------------------------------------------------------------*
88   Name:         NitroMain
89 
90   Description:  main
91 
92   Arguments:    None
93 
94   Returns:      None
95  *---------------------------------------------------------------------------*/
NitroMain(void)96 void NitroMain(void)
97 {
98     OS_Init();
99     OS_InitThread();
100 
101     //---- declaration of using ENV system
102     ENV_Init();
103     ENV_AppendResourceSet(myResources2);
104 
105     //---- DEMO 1 : search resources whose class is 'test'
106     OS_Printf("==== search resources whose class is 'test'\n");
107     {
108         ENVResourceIter iter;
109         ENVResource *res;
110 
111         ENV_InitIter(&iter);
112 
113         while ((res = ENV_SearchByClass(&iter, "test")) != 0)
114         {
115             OS_Printf("found [%s]\n", res->name);
116         }
117     }
118 
119     //---- DEMO 2 : search resources whose member is 'member1'
120     OS_Printf("\n==== search resources whose member is 'member1'\n");
121     {
122         ENVResourceIter iter;
123         ENVResource *res;
124 
125         ENV_InitIter(&iter);
126 
127         while ((res = ENV_SearchByMember(&iter, "member1")) != 0)
128         {
129             OS_Printf("found [%s]\n", res->name);
130         }
131     }
132 
133     //---- DEMO 3 : search resources whose type is u32
134     OS_Printf("\n==== search resources whose type is u32\n");
135     {
136         ENVResourceIter iter;
137         ENVResource *res;
138 
139         ENV_InitIter(&iter);
140 
141         while ((res = ENV_SearchByType(&iter, ENV_RESTYPE_U32)) != 0)
142         {
143             OS_Printf("found [%s]\n", res->name);
144         }
145     }
146 
147     //---- DEMO 4 : search resources whose name contains 'member'
148     OS_Printf("\n==== search resources whose name contains 'member'\n");
149     {
150         ENVResourceIter iter;
151         ENVResource *res;
152 
153         ENV_InitIter(&iter);
154 
155         while ((res = ENV_SearchByPartialName(&iter, "member")) != 0)
156         {
157             OS_Printf("found [%s]\n", res->name);
158         }
159     }
160 
161     //---- DEMO 5 : show difference of string data and binary data.
162     OS_Printf("\n==== show difference of string data and binary data\n");
163     OS_Printf("- sizeof(\"abcdef\")       = %d\n", sizeof("abcdef"));
164     OS_Printf("- strlen(\"abcdef\")       = %d\n", strlen("abcdef"));
165     OS_Printf("- ENV_GetSize(\"test.s1\") = %d\n", ENV_GetSize("test.s1"));
166     OS_Printf("- ENV_GetSize(\"test.b1\") = %d\n", ENV_GetSize("test.b1"));
167     OS_Printf("\n");
168 
169     OS_Printf("- sizeof(\"\\0\\0\\0\")       = %d\n", sizeof("\0\0\0"));
170     OS_Printf("- strlen(\"\\0\\0\\0\")       = %d\n", strlen("\0\0\0"));
171     OS_Printf("- ENV_GetSize(\"test.s2\") = %d\n", ENV_GetSize("test.s2"));
172     OS_Printf("- ENV_GetSize(\"test.b2\") = %d\n", ENV_GetSize("test.b2"));
173     OS_Printf("\n");
174 
175     //---- DEMO 6 : get 64 bit value
176     OS_Printf("\n==== get 64 bit value\n");
177     {
178         u64     retVal;
179         (void)ENV_GetU64("test.U64_1", &retVal);
180         OS_Printf("ENV_GetU64(\"test.U64_1\") = [%llx]\n", retVal);
181         (void)ENV_GetU64("test.U64_2", &retVal);
182         OS_Printf("ENV_GetU64(\"test.U64_2\") = [%llx]\n", retVal);
183         (void)ENV_GetU64("test.U64_3", &retVal);
184         OS_Printf("ENV_GetU64(\"test.U64_3\") = [%llx]\n", retVal);
185         (void)ENV_GetU64("test.U64_4", &retVal);
186         OS_Printf("ENV_GetU64(\"test.U64_4\") = [%llx]\n", retVal);
187         OS_Printf("\n");
188     }
189 
190     {
191         s64     retVal;
192         (void)ENV_GetS64("test.S64_1", &retVal);
193         OS_Printf("ENV_GetS64(\"test.S64_1\") = [%lld]\n", retVal);
194         (void)ENV_GetS64("test.S64_2", &retVal);
195         OS_Printf("ENV_GetS64(\"test.S64_2\") = [%lld]\n", retVal);
196         (void)ENV_GetS64("test.S64_3", &retVal);
197         OS_Printf("ENV_GetS64(\"test.S64_3\") = [%lld]\n", retVal);
198         (void)ENV_GetS64("test.S64_4", &retVal);
199         OS_Printf("ENV_GetS64(\"test.S64_4\") = [%lld]\n", retVal);
200         OS_Printf("\n");
201     }
202 
203     //---- DEMO 7 : omit class name
204     OS_Printf("\n==== omit class name\n");
205     ENV_SetClass("TESTPREFIX");
206     {
207         char   *retVal1;
208         void   *retVal2;
209         (void)ENV_GetString(".STR_1", &retVal1);
210         OS_Printf("ENV_String(\".STR_1\") = [%s]\n", retVal1);
211         (void)ENV_GetBinary(".BIN_1", &retVal2);
212         OS_Printf("ENV_Binary(\".BIN_1\") = [%s]\n", retVal2);
213         OS_Printf("\n");
214     }
215 
216     {
217         u32     retVal;
218         (void)ENV_GetU32(".U32_1", &retVal);
219         OS_Printf("ENV_GetU32(\".U32_1\") = [%x]\n", retVal);
220         (void)ENV_GetU32(".U32_2", &retVal);
221         OS_Printf("ENV_GetU32(\".U32_2\") = [%x]\n", retVal);
222         (void)ENV_GetU32(".U32_3", &retVal);
223         OS_Printf("ENV_GetU32(\".U32_3\") = [%x]\n", retVal);
224         (void)ENV_GetU32(".U32_4", &retVal);
225         OS_Printf("ENV_GetU32(\".U32_4\") = [%x]\n", retVal);
226         OS_Printf("\n");
227     }
228 
229     {
230         s32     retVal;
231         (void)ENV_GetS32(".S32_1", &retVal);
232         OS_Printf("ENV_GetU32(\".S32_1\") = [%d]\n", retVal);
233         (void)ENV_GetS32(".S32_2", &retVal);
234         OS_Printf("ENV_GetU32(\".S32_2\") = [%d]\n", retVal);
235         (void)ENV_GetS32(".S32_3", &retVal);
236         OS_Printf("ENV_GetU32(\".S32_3\") = [%d]\n", retVal);
237         (void)ENV_GetS32(".S32_4", &retVal);
238         OS_Printf("ENV_GetU32(\".S32_4\") = [%d]\n", retVal);
239         OS_Printf("\n");
240     }
241 
242     {
243         u16     retVal;
244         (void)ENV_GetU16(".U16_1", &retVal);
245         OS_Printf("ENV_GetU16(\".U16_1\") = [%x]\n", retVal);
246         (void)ENV_GetU16(".U16_2", &retVal);
247         OS_Printf("ENV_GetU16(\".U16_2\") = [%x]\n", retVal);
248         (void)ENV_GetU16(".U16_3", &retVal);
249         OS_Printf("ENV_GetU16(\".U16_3\") = [%x]\n", retVal);
250         (void)ENV_GetU16(".U16_4", &retVal);
251         OS_Printf("ENV_GetU16(\".U16_4\") = [%x]\n", retVal);
252         OS_Printf("\n");
253     }
254 
255     {
256         s16     retVal;
257         (void)ENV_GetS16(".S16_1", &retVal);
258         OS_Printf("ENV_GetU16(\".S16_1\") = [%d]\n", retVal);
259         (void)ENV_GetS16(".S16_2", &retVal);
260         OS_Printf("ENV_GetU16(\".S16_2\") = [%d]\n", retVal);
261         (void)ENV_GetS16(".S16_3", &retVal);
262         OS_Printf("ENV_GetU16(\".S16_3\") = [%d]\n", retVal);
263         (void)ENV_GetS16(".S16_4", &retVal);
264         OS_Printf("ENV_GetU16(\".S16_4\") = [%d]\n", retVal);
265         OS_Printf("\n");
266     }
267 
268     {
269         BOOL    retVal;
270         (void)ENV_GetBOOL(".BOOL_1", &retVal);
271         OS_Printf("ENV_GetBOOL(\".BOOL_1\") = [%x]\n", retVal);
272         (void)ENV_GetBOOL(".BOOL_2", &retVal);
273         OS_Printf("ENV_GetBOOL(\".BOOL_2\") = [%x]\n", retVal);
274         (void)ENV_GetBOOL(".BOOL_3", &retVal);
275         OS_Printf("ENV_GetBOOL(\".BOOL_3\") = [%x]\n", retVal);
276     }
277 
278 
279     //---- DEMO 8 : read value as different type from described type" );
280     OS_Printf("\n==== read value as different type from described type\n");
281     {
282         BOOL    retBOOL;
283         s32     retS32;
284         u32     retU32;
285         u16     retU16;
286         (void)ENV_GetBOOL(".S32_1", &retBOOL);
287         OS_Printf("read s32(12345) as BOOL : %d\n", retBOOL);
288         (void)ENV_GetS32(".S16_2", &retS32);
289         OS_Printf("read s16(-1234) as s32  : %d\n", retS32);
290         (void)ENV_GetS32(".S16_4", &retS32);
291         OS_Printf("read s16(65537) as s32  : %d\n", retS32);
292         (void)ENV_GetU32(".S16_2", &retU32);
293         OS_Printf("read s16(-1234) as u32  : 0x%x\n", retU32);
294         (void)ENV_GetU16("test.U64_3", &retU16);
295         OS_Printf("read u64(0xf234567abcd00e0) as u16 : 0x%x\n", retU16);
296         OS_Printf("\n");
297     }
298 
299     OS_Printf("==== Finish sample.\n");
300     OS_Terminate();
301 }
302 
303 /*====== End of main.c ======*/
304