1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     fs_Result.h
4 
5   Copyright (C)2009 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: 25924 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_FS_FS_RESULT_H_
17 #define NN_FS_FS_RESULT_H_
18 
19 #ifdef __cplusplus
20 
21 #include <nn/Result.h>
22 
23 namespace nn {
24 namespace fs {
25 
26 enum Description
27 {
28     DESCRIPTION_INVALID_POSITION_BASE,
29     DESCRIPTION_ARCHIVE_NOT_FOUND,
30     DESCRIPTION_FAILED_OPEN_FILE,
31     DESCRIPTION_UNSUPPORTED_OPERATION,
32     DESCRIPTION_INVALID_PATH_FORMAT,
33     DESCRIPTION_ACCESS_DENIED,
34     DESCRIPTION_LIBRARY_NOT_INITIALIZED,
35     DESCRIPTION_INVALID_POSITION,
36     DESCRIPTION_TOO_LONG_PATH,
37     DESCRIPTION_NOT_DEVELOPMENT_ID,
38     DESCRIPTION_HASH_MISMATCH,
39     DESCRIPTION_NO_SUCH_PROCESS_REGISTERED,
40     DESCRIPTION_INVALID_CXI_FORMAT,
41     DESCRIPTION_UNSUPPORTED_ALIGNMENT,
42     DESCRIPTION_REQUEST_RETRY,
43     DESCRIPTION_FAILED_VERIFY_SIGN,
44     DESCRIPTION_INVALID_KEY_TYPE,
45     DESCRIPTION_UNSUPPORTED_MEDIA,
46     DESCRIPTION_INVALID_CCI_FORMAT,
47     DESCRIPTION_NOT_FORMATTED,
48     DESCRIPTION_OUT_OF_BOUNDS,
49     DESCRIPTION_NO_SUCH_EXEFS_SECTION,
50     DESCRIPTION_PROGRAM_NOT_FOUND,
51     DESCRIPTION_SYSTEMMENUDATA_NOT_FOUND,
52     DESCRIPTION_BANNERDATA_NOT_FOUND,
53     DESCRIPTION_LOGODATA_NOT_FOUND,
54 
55     DESCRIPTION_FAT_BAD_FORMAT,             // FATフォーマット不正
56     DESCRIPTION_FAT_NOT_FOUND,              // 指定されたパスが存在しない
57     DESCRIPTION_FAT_ALREADY_EXIST,          // 指定されたパスが既に存在している
58     DESCRIPTION_FAT_BROKEN_ENTRY,           // 指定されたパスの対象が壊れている
59     DESCRIPTION_FAT_STORAGE_FULL,           // デバイスの容量不足
60     DESCRIPTION_FAT_STORAGE_NOTHING,        // アクセス可能なデバイスが存在しない
61 
62     DESCRIPTION_CARD_ROM_NOTHING,           // カードがささっていない、抜けた
63     DESCRIPTION_CARD_ROM_WRITE_PROTECTED,   // カードへのライトが禁止されている
64     DESCRIPTION_CARD_ROM_COMM_ERROR,        // カード通信エラー(CRCエラーなど)
65     DESCRIPTION_CARD_ROM_UNKNOWN,           // カード不正(ID不正)
66     DESCRIPTION_CARD_NOT_INITIALIZE,        // カードが初期化されていない。
67 
68     DESCRIPTION_CARD1_BACKUP_NOTHING,       // カードType1バックアップデバイスがささっていない、抜けた
69     DESCRIPTION_CARD1_BACKUP_COMM_ERROR,    // カードType1バックアップデバイス通信エラー(CRCエラーなど)
70     DESCRIPTION_CARD1_BACKUP_UNKNOWN,       // カードType1バックアップデバイス不正(ID不正)
71     DESCRIPTION_CARD1_BACKUP_BAD_FORMAT,    // カードType1バックアップデバイスフォーマット不正
72 
73     DESCRIPTION_CARD2_BACKUP_NOTHING,       // カードType2バックアップデバイスがささっていない、抜けた
74     DESCRIPTION_CARD2_BACKUP_COMM_ERROR,    // カードType2バックアップデバイス通信エラー(CRCエラーなど)
75     DESCRIPTION_CARD2_BACKUP_UNKNOWN,       // カードType2バックアップデバイス不正(ID不正)
76     DESCRIPTION_CARD2_BACKUP_BAD_FORMAT,    // カードType2バックアップデバイスフォーマット不正
77 
78     DESCRIPTION_NAND_COMM_ERROR,            // NAND通信エラー(CRCエラーなど)
79     DESCRIPTION_NAND_FATAL,                 // NAND故障(修理扱い)
80 
81     DESCRIPTION_SDMC_NOTHING,               // SDカードがささっていない、抜けた
82     DESCRIPTION_SDMC_WRITE_PROTECTED,       // SDカードがロック(ライト禁止)されている
83     DESCRIPTION_SDMC_COMM_ERROR,            // SDカード通信エラー(CRCエラーなど)
84     DESCRIPTION_SDMC_UNKNOWN                // SDカードではないメディアがささっている(MMCなど)
85 };
86 
87 NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_FS);
88 NN_DEFINE_RESULT_FUNC_LM(MakeUsageResult, Result::LEVEL_USAGE, Result::MODULE_NN_FS);
89 NN_DEFINE_RESULT_FUNC_LM(MakeStatusResult, Result::LEVEL_STATUS, Result::MODULE_NN_FS);
90 NN_DEFINE_RESULT_FUNC_LSM(MakeResultInvalidArgument, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FS);
91 NN_DEFINE_RESULT_FUNC_LM(MakeInfoResult, Result::LEVEL_INFO, Result::MODULE_NN_FS);
92 
93 NN_DEFINE_RESULT_CONST(
94     ResultNotImplemented,
95     Result::LEVEL_FATAL, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_FS, nn::Result::DESCRIPTION_NOT_IMPLEMENTED
96 );
97 
98 NN_DEFINE_RESULT_CONST_LM(
99     ResultOutOfMemory,
100     MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, Result::DESCRIPTION_OUT_OF_MEMORY
101 );
102 
103 NN_DEFINE_RESULT_CONST_LSM(
104     ResultInvalidPositionBase,
105     MakeResultInvalidArgument, DESCRIPTION_INVALID_POSITION_BASE
106 );
107 
108 NN_DEFINE_RESULT_CONST_LM(
109     ResultArchiveNotFound,
110     MakePermanentResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_ARCHIVE_NOT_FOUND
111 );
112 
113 NN_DEFINE_RESULT_CONST_LM(
114     ResultFailedOpenFile,
115     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_FAILED_OPEN_FILE
116 );
117 
118 NN_DEFINE_RESULT_CONST_LM(
119     ResultUnsupportedOperation,
120     MakePermanentResult, Result::SUMMARY_NOT_SUPPORTED, DESCRIPTION_UNSUPPORTED_OPERATION
121 );
122 
123 NN_DEFINE_RESULT_CONST_LM(
124     ResultNotFound,
125     MakePermanentResult, Result::SUMMARY_NOT_FOUND, Result::DESCRIPTION_NOT_FOUND
126 );
127 
128 NN_DEFINE_RESULT_CONST_LM(
129     ResultInvalidPathFormat,
130     MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_INVALID_PATH_FORMAT
131 );
132 
133 NN_DEFINE_RESULT_CONST_LM(
134     ResultAccessDenied,
135     MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_ACCESS_DENIED
136 );
137 
138 NN_DEFINE_RESULT_CONST_LM(
139     ResultNotInitialized,
140     MakeUsageResult, Result::SUMMARY_INVALID_STATE, Result::DESCRIPTION_NOT_INITIALIZED
141 );
142 
143 NN_DEFINE_RESULT_CONST_LM(
144     ResultAlreadyInitialized,
145     MakeUsageResult, Result::SUMMARY_INVALID_STATE, Result::DESCRIPTION_ALREADY_INITIALIZED
146 );
147 
148 NN_DEFINE_RESULT_CONST_LM(
149     ResultLibraryNotInitialized,
150     MakeUsageResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_LIBRARY_NOT_INITIALIZED
151 );
152 
153 NN_DEFINE_RESULT_CONST_LM(
154     ResultInvalidPosition,
155     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_POSITION
156 );
157 
158 NN_DEFINE_RESULT_CONST_LM(
159     ResultTooLongPath,
160     MakeUsageResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_TOO_LONG_PATH
161 );
162 
163 NN_DEFINE_RESULT_CONST_LM(
164     ResultNotDevelopmentId,
165     MakeInfoResult, Result::SUMMARY_SUCCESS, DESCRIPTION_NOT_DEVELOPMENT_ID
166 );
167 
168 NN_DEFINE_RESULT_CONST_LM(
169     ResultHashMismatch,
170     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_HASH_MISMATCH
171 );
172 
173 NN_DEFINE_RESULT_CONST_LM(
174     ResultNoSuchProcessRegistered,
175     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_NO_SUCH_PROCESS_REGISTERED
176 );
177 
178 NN_DEFINE_RESULT_CONST_LM(
179     ResultInvalidCxiFormat,
180     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_CXI_FORMAT
181 );
182 
183 NN_DEFINE_RESULT_CONST_LM(
184     ResultUnsupportedAlignment,
185     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_UNSUPPORTED_ALIGNMENT
186 );
187 
188 NN_DEFINE_RESULT_CONST_LM(
189     ResultRequestRetry,
190     MakeStatusResult, Result::SUMMARY_INTERNAL, DESCRIPTION_REQUEST_RETRY
191 );
192 
193 NN_DEFINE_RESULT_CONST_LM(
194     ResultFailedVerifySign,
195     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_FAILED_VERIFY_SIGN
196 );
197 
198 NN_DEFINE_RESULT_CONST_LM(
199     ResultInvalidKeyType,
200     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_KEY_TYPE
201 );
202 
203 NN_DEFINE_RESULT_CONST_LM(
204     ResultUnsupportedMedia,
205     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_UNSUPPORTED_MEDIA
206 );
207 
208 NN_DEFINE_RESULT_CONST_LM(
209     ResultInvalidCciFormat,
210     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_CCI_FORMAT
211 );
212 
213 NN_DEFINE_RESULT_CONST_LM(
214     ResultNotFormatted,
215     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_NOT_FORMATTED
216 );
217 
218 NN_DEFINE_RESULT_CONST_LM(
219     ResultOutOfBounds,
220     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_OUT_OF_BOUNDS
221 );
222 
223 NN_DEFINE_RESULT_CONST_LM(
224     ResultNoSuchExefsSection,
225     MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_NO_SUCH_EXEFS_SECTION
226 );
227 
228 NN_DEFINE_RESULT_CONST_LM(
229     ResultProgramNotFound,
230     MakeStatusResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_PROGRAM_NOT_FOUND
231 );
232 
233 NN_DEFINE_RESULT_CONST_LM(
234     ResultSystemMenuDataNotFound,
235     MakeStatusResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_SYSTEMMENUDATA_NOT_FOUND
236 );
237 
238 NN_DEFINE_RESULT_CONST_LM(
239     ResultBannerDataNotFound,
240     MakeStatusResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_BANNERDATA_NOT_FOUND
241 );
242 
243 NN_DEFINE_RESULT_CONST_LM(
244     ResultLogoDataNotFound,
245     MakeStatusResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_LOGODATA_NOT_FOUND
246 );
247 
248 NN_DEFINE_RESULT_CONST_LM(
249     ResultFatBadFormat,
250     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_BAD_FORMAT
251 );
252 
253 NN_DEFINE_RESULT_CONST_LM(
254     ResultFatNotFound,
255     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_NOT_FOUND
256 );
257 
258 NN_DEFINE_RESULT_CONST_LM(
259     ResultFatAlreadyExist,
260     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_ALREADY_EXIST
261 );
262 
263 NN_DEFINE_RESULT_CONST_LM(
264     ResultFatBrokenEntry,
265     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_BROKEN_ENTRY
266 );
267 
268 NN_DEFINE_RESULT_CONST_LM(
269     ResultFatStorageFull,
270     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_STORAGE_FULL
271 );
272 
273 NN_DEFINE_RESULT_CONST_LM(
274     ResultFatStrageNothing,
275     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_FAT_STORAGE_NOTHING
276 );
277 
278 NN_DEFINE_RESULT_CONST_LM(
279     ResultCardRomNothing,
280     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD_ROM_NOTHING
281 );
282 
283 NN_DEFINE_RESULT_CONST_LM(
284     ResultCardRomWriteProtected,
285     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD_ROM_WRITE_PROTECTED
286 );
287 
288 NN_DEFINE_RESULT_CONST_LM(
289     ResultCardRomCommError,
290     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD_ROM_COMM_ERROR
291 );
292 
293 NN_DEFINE_RESULT_CONST_LM(
294     ResultCardRomUnknown,
295     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD_ROM_UNKNOWN
296 );
297 
298 NN_DEFINE_RESULT_CONST_LM(
299     ResultCardNotInitialize,
300     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD_NOT_INITIALIZE
301 );
302 
303 NN_DEFINE_RESULT_CONST_LM(
304     ResultCard1BackupNothing,
305     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD1_BACKUP_NOTHING
306 );
307 
308 NN_DEFINE_RESULT_CONST_LM(
309     ResultCard1RomBackupCommError,
310     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD1_BACKUP_COMM_ERROR
311 );
312 
313 NN_DEFINE_RESULT_CONST_LM(
314     ResultCard1RomBackupUnknown,
315     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD1_BACKUP_UNKNOWN
316 );
317 
318 NN_DEFINE_RESULT_CONST_LM(
319     ResultCard1RomBackupBadFormat,
320     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD1_BACKUP_BAD_FORMAT
321 );
322 
323 NN_DEFINE_RESULT_CONST_LM(
324     ResultCard2BackupNothing,
325     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD2_BACKUP_NOTHING
326 );
327 
328 NN_DEFINE_RESULT_CONST_LM(
329     ResultCard2RomBackupCommError,
330     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD2_BACKUP_COMM_ERROR
331 );
332 
333 NN_DEFINE_RESULT_CONST_LM(
334     ResultCard2RomBackupUnknown,
335     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD2_BACKUP_UNKNOWN
336 );
337 
338 NN_DEFINE_RESULT_CONST_LM(
339     ResultCard2RomBackupBadFormat,
340     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_CARD2_BACKUP_BAD_FORMAT
341 );
342 
343 NN_DEFINE_RESULT_CONST_LM(
344     ResultNandCommError,
345     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_NAND_COMM_ERROR
346 );
347 
348 NN_DEFINE_RESULT_CONST(
349     ResultNandFatal,
350     Result::LEVEL_FATAL, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_FS, DESCRIPTION_NAND_FATAL
351 );
352 
353 NN_DEFINE_RESULT_CONST_LM(
354     ResultSdmcNothing,
355     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_SDMC_NOTHING
356 );
357 
358 NN_DEFINE_RESULT_CONST_LM(
359     ResultSdmcWriteProtected,
360     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_SDMC_WRITE_PROTECTED
361 );
362 
363 NN_DEFINE_RESULT_CONST_LM(
364     ResultSdmcCommError,
365     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_SDMC_COMM_ERROR
366 );
367 
368 NN_DEFINE_RESULT_CONST_LM(
369     ResultSdmcUnknown,
370     MakeStatusResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_SDMC_UNKNOWN
371 );
372 
373 } // end of namespace fs
374 } // end of namespace nn
375 
376 #endif // #ifdef __cplusplus
377 #endif // #ifndef NN_FS_FS_RESULT_H_
378