1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     boss_Const.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: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_BOSS_BOSS_CONST_H_
17 #define NN_BOSS_BOSS_CONST_H_
18 
19 #include <nn/types.h>
20 #include <nn/Result.h>
21 
22 #ifdef __cplusplus
23 
24 namespace nn {
25 namespace boss {
26 
27         // NSD data types
28         static const bit32 DATA_TYPE_ALL            = 0xffffffff;   //
29         static const bit32 DATA_TYPE_APPDATA        = 0x00010000;   //
30         static const bit32 DATA_TYPE_NEWS           = 0x00020000;   //
31         static const bit32 DATA_TYPE_EXBANNER       = 0x00040000;   //
32         static const bit32 DATA_TYPE_DATASTORE      = 0x00080000;   //
33 
34         // BOSS system constants
35         static const u32 MAX_FILEPATH_LENGTH        = 256;          //
36         static const u32 MAX_URL_LENGTH             = 512;          //
37         static const u32 MAX_HTTP_HEADER_LABEL      = 32;           //
38         static const u32 MAX_HTTP_HEADER_VALUE      = 256;          //
39         static const u32 MAX_HTTP_HEADER            = 3;            //
40         static const u32 MAX_HTTP_QUERY_NAME        = 15;           //
41         static const u32 MAX_HTTP_QUERY_VALUE       = 16;           //
42         static const u32 MAX_HTTP_QUERY             = 3;            //
43         static const u32 MAX_ROOT_CA                = 3;            //
44         static const u32 MAX_CLIENT_CERT            = 1;            //
45         static const u32 TASK_ID_LENGTH             = 8;            //
46         static const u32 MAX_ERROR_MESSAGE          = 256;          //
47         static const u32 MAX_APPLICATION_ID         = 128;          //
48         static const u32 MAX_TASK_ID                = 128;          //
49         static const u32 MAX_STEP_ID                = 128;          //
50         static const u32 CURRENT_STEP_ID            = MAX_STEP_ID;  //
51         static const u32 DEFAULT_STEP_ID            = 0;            //
52         static const u32 U32_CANNOT_GET_DATA        = 0xFFFFFFFF;   //
53         static const u32 MAX_LASTMODIFIED_LENGTH    = 64;           //
54         static const u32 UNLIMITED_COUNT            = 0xFFFFFFFF;   //
55         static const u32 MAX_STORAGE_ENTRY_COUNT    = 2000;         //
56         static const u32 DEFAULT_STORAGE_ENTRY_COUNT = 0;           //
57         static const u32 MAX_STORAGE_RECYCLE_COUNT  = 32;           //
58         static const u32 MAX_ACCESS_KEY_LENGTH      = 9;            //
59         static const u32 MAX_DST_PRINCIPAL_ID       = 100;          //
60         static const u32 MAX_NEWS_SUBJECT_LENGTH    = 32;           //
61         static const u32 MAX_NEWS_MESSAGE_LENGTH    = 150;          //
62         static const u32 MAX_NEWS_JUMP_PARAM        = 8;            //
63         static const u32 MAX_TASK_FILE_PARAM        = 512;          //
64         static const char FG_ONLY_TASK_ID[]         ="FGONLYT";     //
65 
66         /* Please see man pages for details
67 
68 
69         */
70         enum PositionBase
71         {
72             /* Please see man pages for details
73 
74             */
75             POSITION_BASE_BEGIN,
76 
77             /* Please see man pages for details
78 
79             */
80             POSITION_BASE_CURRENT,
81 
82             /* Please see man pages for details
83 
84             */
85             POSITION_BASE_END
86         };
87 
88         /* Please see man pages for details
89 
90 
91         */
92         enum PropertyType
93         {
94             // Constants for referencing TaskPolicy attributes
95             TASK_PRIORITY,              //
96             TASK_SCHEDULING_POLICY,     //
97             TASK_TARGET_DURATION,       //
98             TASK_EXEC_INTERVAL,         //
99             TASK_EXEC_COUNT,            //
100             TASK_PERMISSION,            //
101 
102             // Constants for referencing TaskAction attributes
103             ACTION_CODE,                //
104             ACTION_URL,                 //
105             ACTION_OFFSET,              //
106             ACTION_FILEDESC,            //
107             ACTION_FILEPATH,            //
108             ACTION_FILEPATH_W,          //
109             ACTION_FILE_HANDLE,         //
110             ACTION_HTTP_HEADER,         //
111             ACTION_CLIENT_CERT,         //
112             ACTION_ROOT_CA,             //
113             ACTION_PRIVATE_CLIENT_CERT, //
114             ACTION_PRIVATE_ROOT_CA,     //
115             ACTION_AP_INFO,             //
116             ACTION_CLIENT_CERT_NUM,     //
117             ACTION_ROOT_CA_NUM,         //
118             ACTION_LAST_MODIFIED_TIME,  //
119             ACTION_SERIAL_ID,           //
120             SIGNAL_TASK_EVENT,          //
121 
122             // Constants for referencing TaskOption attributes
123             TASK_EXEC_OPTION,           //
124             TASK_STEP,                  //
125             TASK_OPTION_TARGET_STEP,    //
126             TASK_OPTION_PARAM1,         //
127             TASK_OPTION_PARAM2,         //
128 
129             // Constants for referencing TaskStatus attributes
130             TASK_STATE_CODE,            //
131             TASK_STATE_TASK,            //
132             TASK_STATE_RESUME,          //
133             TASK_RESULT_CODE,           //
134             TASK_SERVICE_STATUS,        //
135             TASK_SERVICE_TERMINATED,    //
136             TASK_COMM_ERROR_CODE,       //
137             TASK_CURRENT_PRIORITY,      //
138             TASK_EXECUTE_COUNT,         //
139             TASK_PENDING_TIME,          //
140             TASK_REMAIN_TIME,           //
141             TASK_START_TIME,            //
142             TASK_STEP_START_TIME,       //
143             TASK_PROGRESS,              //
144             TASK_DATA_SIZE,             //
145             TASK_CURRENT_STEP,          //
146             TASK_ACTIVE_RATE,           //
147             TASK_REQUEST_RATE,          //
148             TASK_LAST_MODIFIED_TIME,    //
149 
150             // Constants for referencing TaskError attributes
151             TASK_ERROR_RESULT_CODE,     //
152             TASK_ERROR_CODE,            //
153             TASK_ERROR_MESSAGE,         //
154 
155             // Constants for referencing ApplicationIdList attributes. (Enumerator used during internal processing.)
156             TASK_APPID_LIST_SIZE,       //
157             TASK_APPID_LIST,            //
158 
159             // Constants for referencing TaskIdList attributes. (Enumerator used during internal processing.)
160             TASK_TASKID_LIST_SIZE,      //
161             TASK_TASKID_LIST,           //
162 
163             // Constants for referencing StepIdList attributes. (Enumerator used during internal processing.)
164             TASK_STEPID_LIST_SIZE,      //
165             TASK_STEPID_LIST,           //
166 
167             // Constants for referencing NsDataIdList attributes. (Enumerator used during internal processing.)
168             TASK_NSDATA_LIST_SIZE,      //
169             TASK_NSDATA_LIST,           //
170 
171             // Constants used during internal processing.
172             ACTION_SIGNAL_TASK_EVENT,   //
173             ACTION_HTTP_HEADER_VALUE,   //
174             TASK_ID,                    //
175 
176             // Constants for referencing attributes added anew in SDK version x.x and onward.
177             ACTION_FILE_PARAM,                              //
178             ACTION_CFG_INFO,                                //
179 
180             ACTION_DATASTORE_GAME_ID,                       //
181             ACTION_DATASTORE_ACCESS_KEY,                    //
182 
183             ACTION_DATASTORE_DOWNLOAD_NEWS_SUBJECT,         //
184             ACTION_DATASTORE_DOWNLOAD_NEWS_MESSAGE,         //
185             ACTION_DATASTORE_DOWNLOAD_NEWS_JUMP_PARAM,      //
186             ACTION_DATASTORE_DOWNLOAD_NEWS_MODE,            //
187             ACTION_DATASTORE_DOWNLOAD_NEWS_SERIAL_ID,       //
188 
189             ACTION_DATASTORE_UPLOAD_PERIOD,                 //
190             ACTION_DATASTORE_UPLOAD_DATA_TYPE,              //
191             ACTION_DATASTORE_UPLOAD_DST_PRINCIPAL_ID_NUM,   //
192             ACTION_DATASTORE_UPLOAD_DST_KIND,               //
193             ACTION_DATASTORE_UPLOAD_DST_PRINCIPAL_ID,       //
194 
195             PROPERTY_TYPE_MAX_VALUE = (0x1u << 15)          //
196         };
197 
198         /* Please see man pages for details
199 
200 
201         */
202         enum SchedulingPolicy
203         {
204             ENUM_POLICY_START,              //
205             STANDARD_POLICY,                //
206             ENUM_POLICY_END,                //
207             SCHEDULING_POLICY_MAX_VALUE = (0x1u << 7)   //
208         };
209 
210         /* Please see man pages for details
211 
212 
213         */
214         enum TaskPermission
215         {
216             TASK_PERMISSION_IN_NONE = 0,            //
217             TASK_PERMISSION_IN_EULA_DISAGREEMENT,   //
218             TASK_PERMISSION_IN_PARENTAL_CONTROL,    //
219             TASK_PERMISSION_IN_BOTH,                //
220             TASK_PERMISSION_MAX_VALUE = (0x1u << 7) //
221         };
222 
223         /* Please see man pages for details
224 
225 
226         */
227         enum TaskPriority
228         {
229             PRIORITY_EXPEDITE1  = 21,       //
230             PRIORITY_EXPEDITE2  = 22,       //
231             PRIORITY_EXPEDITE3  = 23,       //
232             PRIORITY_EXPEDITE4  = 24,       //
233             PRIORITY_EXPEDITE5  = 25,       //
234             PRIORITY_EXPEDITE6  = 26,       //
235             PRIORITY_EXPEDITE7  = 27,       //
236             PRIORITY_EXPEDITE8  = 28,       //
237             PRIORITY_EXPEDITE   = 35,       //
238             PRIORITY_HIGH       = 80,       //
239             PRIORITY_MEDIUM     = 125,      //
240             PRIORITY_LOW        = 170,      //
241             PRIORITY_LOWEST     = 215,      //
242             PRIORITY_LOWEST1    = 221,      //
243             PRIORITY_LOWEST2    = 222,      //
244             PRIORITY_LOWEST3    = 223,      //
245             PRIORITY_LOWEST4    = 224,      //
246             PRIORITY_LOWEST5    = 225,      //
247             PRIORITY_LOWEST6    = 226,      //
248             PRIORITY_LOWEST7    = 227,      //
249             PRIORITY_LOWEST8    = 228,      //
250             PRIORITY_STOPPED    = 255,      //
251             PRIORITY_MAX_VALUE = (0x1u << 7)    //
252         };
253 
254         /* Please see man pages for details
255 
256 
257         */
258         enum Action
259         {
260             ENUM_ACTION_START,          //
261             DOWNLOAD_TASK,              //
262             NSA_DOWNLOAD_TASK,          //
263             UPLOAD_TASK,                //
264             SIGNAL_TASK,                //
265             CONFIG_UPLOAD_TASK,         //
266             PLAYHISTORY_UPLOAD_TASK,    //
267             PEDOMETER_UPLOAD_TASK,      //
268             TASKINFO_UPLOAD_TASK,       //
269             STREETPASSLOG_UPLOAD_TASK,  //
270             DATASTORE_DOWNLOAD_TASK,    //
271             DATASTORE_UPLOAD_TASK,      //
272             ENUM_ACTION_END,            //
273             ACTION_MAX_VALUE = (0x1u << 7)  //
274         };
275 
276         /* Please see man pages for details
277 
278 
279         */
280         enum ExecOption
281         {
282             ENUM_EXECOPTION_START,              //
283             NORMAL_EXEC,                        //
284             ENUM_EXECOPTION_END,                //
285             OPTION_MAX_VALUE = (0x1u << 7)      //
286         };
287 
288         /* Please see man pages for details
289 
290 
291         */
292         enum TaskStateCode
293         {
294             TASK_STOPPED,                                  //
295             TASK_WAITING_TIMER,                            //
296             TASK_WAITING,                                  //
297             TASK_RUNNING,                                  //
298             TASK_PAUSED,                                   //
299             TASK_REGISTERED,                               //
300             TASK_DONE,                                     //
301             TASK_ERROR,                                    //
302             TASK_RETRY,                                    //
303             GET_TASK_STATE_ERROR,                          //
304             STATUS_MAX_VALUE = (0x1u << 7)                 //
305         };
306 
307         /* Please see man pages for details
308 
309 
310          */
311         enum TaskResultCode
312         {
313             TASK_SUCCESS,                                  //
314             BOSS_ERROR_NOMEM,                              //
315 
316             GET_TASK_RESULT_ERROR,                         //
317             TASK_NOT_EXIST,                                //
318             TASK_CANCELED,                                 //
319 
320             // HTTP communication errors
321             HTTP_ERROR_NOMEM,                              //
322             HTTP_ERROR_CREATE_EVENT,                       //
323             HTTP_ERROR_CREATE_MUTEX,                       //
324             HTTP_ERROR_CREATE_QUEUE,                       //
325             HTTP_ERROR_CREATE_THREAD,                      //
326             HTTP_ERROR_IPC_SESSION,                        //
327             HTTP_ERROR_CLIENT_PROCESS_MAX,                 //
328             HTTP_ERROR_IPC_SESSION_MAX,                    //
329             HTTP_ERROR_MSGQ_SEND_LSN,                      //
330             HTTP_ERROR_MSGQ_RECV_LSN,                      //
331             HTTP_ERROR_MSGQ_SEND_COMM,                     //
332             HTTP_ERROR_CONN_NOMORE,                        //
333             HTTP_ERROR_CONN_STATUS,                        //
334             HTTP_ERROR_CONN_ADD,                           //
335             HTTP_ERROR_CONN_HOST_MAX,                      //
336             HTTP_ERROR_INVALID_URL,                        //
337             HTTP_ERROR_RESPONSE_HEADER,                    //
338             HTTP_ERROR_NO_NEWLINE,                         //
339             HTTP_ERROR_SSL,                                //
340             HTTP_ERROR_CERT_EXIST,                         //
341             HTTP_ERROR_NO_CA_CERT_STORE,                   //
342             HTTP_ERROR_NO_CLIENT_CERT,                     //
343             HTTP_ERROR_CA_CERT_STORE_MAX,                  //
344             HTTP_ERROR_CLIENT_CERT_MAX,                    //
345             HTTP_ERROR_FAIL_TO_CREATE_CERT_STORE,          //
346             HTTP_ERROR_FAIL_TO_CREATE_CLIENT_STORE,        //
347             HTTP_ERROR_DNS,                                //
348             HTTP_ERROR_SEND,                               //
349             HTTP_ERROR_RECV,                               //
350             HTTP_ERROR_CONNECT,                            //
351             HTTP_ERROR_GET_PROXY_SETTING,                  //
352             HTTP_ERROR_TIMEOUT,                            //
353             HTTP_ERROR_401_UNAUTHORIZED,                   //
354             HTTP_ERROR_403_FORBIDDEN,                      //
355             HTTP_ERROR_404_NOT_FOUND,                      //
356             HTTP_ERROR_408_REQUEST_TIMEOUT,                //
357             HTTP_ERROR_416_REQUESTED_RANGE_NOT_SATISFABLE, //
358             HTTP_ERROR_500_INTERNAL_SERVER_ERROR,          //
359             HTTP_ERROR_502_BAD_GATEWAY,                    //
360             HTTP_ERROR_503_SERVICE_UNAVAILABLE,            //
361             HTTP_ERROR_504_GATEWAY_TIMEOUT,                //
362             HTTP_ERROR_505_VERSION_NOT_SUPPORTED,          //
363             HTTP_ERROR_UNSUPPORTED_STATUS,                 //
364 
365             // SSL error
366             SSL_ERROR_FAILED,                              //
367             SSL_ERROR_WANT_READ,                           //
368             SSL_ERROR_WANT_WRITE,                          //
369             SSL_ERROR_SYSCALL,                             //
370             SSL_ERROR_ZERO_RETURN,                         //
371             SSL_ERROR_WANT_CONNECT,                        //
372             SSL_ERROR_SSLID,                               //
373             SSL_ERROR_VERIFY_CERT,                         //
374             SSL_ERROR_VERIFY_COMMON_NAME,                  //
375             SSL_ERROR_VERIFY_ROOT_CA,                      //
376             SSL_ERROR_VERIFY_CHAIN,                        //
377             SSL_ERROR_VERIFY_DATE,                         //
378             SSL_ERROR_GET_SERVER_CERT,                     //
379             SSL_ERROR_VERIFY_REVOKED_CERT,                 //
380             SSL_ERROR_OUT_OF_MEMORY,                       //
381             SSL_ERROR_SESSION,                             //
382             SSL_ERROR_FAIL_TO_CREATE_CERT_STROE,           //
383             SSL_ERROR_FAIL_TO_CREATE_CRL_STORE,            //
384             SSL_ERROR_FAIL_TO_CREATE_CLIENT_CERT,          //
385             SSL_ERROR_CLIENT_PROCESS_MAX,                  //
386             SSL_ERROR_IPC_SESSION,                         //
387             SSL_ERROR_INTERNAL_CERT,                       //
388             SSL_ERROR_INTERNAL_CRL,                        //
389 
390             // File system access errors
391             FS_ERROR_INVALID_POSITION_BASE,                //
392             FS_ERROR_ARCHIVE_NOT_FOUND,                    //
393             FS_ERROR_FAILED_OPEN_FILE,                     //
394             FS_ERROR_UNSUPPORTED_OPERATION,                //
395             FS_ERROR_INVALID_PATH_FORMAT,                  //
396             FS_ERROR_ACCESS_DENIED,                        //
397             FS_ERROR_LIBRARY_NOT_INITIALIZED,              //
398             FS_ERROR_INVALID_POSITION,                     //
399             FS_ERROR_TOO_LONG_PATH,                        //
400             FS_ERROR_NOT_DEVELOPMENT_ID,                   //
401             FS_ERROR_HASH_MISMATCH,                        //
402             FS_ERROR_NO_SUCH_PROCESS_REGISTERED,           //
403             FS_ERROR_INVALID_CXI_FORMAT,                   //
404             FS_ERROR_UNSUPPORTED_ALIGNMENT,                //
405             FS_ERROR_INVALID_HANDLE,                       //
406             FS_ERROR_NOT_FOUND,                            //
407 
408             // NSA Errors
409             NSA_ERROR_STORAGE_INSUFFICIENCY,               //
410             NSA_ERROR_NUMBER_OF_NSD_MAX,                   //
411             NSA_ERROR_VERIFY_HASH,                         //
412             NSA_ERROR_VERIFY_SIGNATURE,                    //
413             NSA_NSD_ERROR_VERIFY_HASH,                     //
414             NSA_NSD_ERROR_VERIFY_SIGNATURE,                //
415             NSA_NSD_ERROR_INVALID_FORMAT,                  //
416             NSA_ERROR_INVALID_FORMAT,                      //
417 
418             // Unexpected errors
419             SEVERE_ERROR,                                  //
420             UNKNOWN_ERROR,                                 //
421             FS_UNKNOWN_ERROR = (UNKNOWN_ERROR + nn::Result::MODULE_NN_FS),  //
422             ERROR_MAX_VALUE = (0x1u << 7)                  //
423         };
424 
425         /* Please see man pages for details
426 
427 
428         */
429         enum TaskServiceStatus
430         {
431             SERVICE_TERMINATED,                            //
432             SERVICE_AVAILABLE,                             //
433             SERVICE_UNKNOWN,                               //
434             GET_SERVICE_STATUS_ERROR,                      //
435             SERVICE_MAX_VALUE = (0x1u << 7)                //
436         };
437 
438         /* Please see man pages for details
439 
440 
441         */
442         enum HeaderInfoType
443         {
444             NSD_TITLEID,                                //
445             NSD_FLAGS,                                  //
446             NSD_DATATYPE,                               //
447             NSD_LENGTH,                                 //
448             NSD_SERIALID,                               //
449             NSD_VERSION,                                //
450             NSD_ALL,                                    //
451             NSD_HEADER_MAX_VALUE = (0x1u << 7)          //
452         };
453 
454         /* Please see man pages for details
455 
456 
457         */
458         enum FileDescriptor
459         {
460             CHAR_TYPE,                                  //
461             WCHAR_TYPE,                                 //
462             HANDLE_TYPE,                                //
463             BOSSDB_TYPE,                                //
464             BOSSSTORAGE_TYPE,                           //
465             DATASTORE_DOWNLOAD_TYPE,                    //
466             DATASTORE_UPLOAD_TYPE,                      //
467             FILE_TYPE_MAX_VALUE = (0x1u << 7)           //
468         };
469 
470         /* Please see man pages for details
471 
472 
473         */
474         enum ApInfoType
475         {
476             APINFOTYPE_NONE         = 0x00,             //
477             APINFOTYPE_APGROUP      = 0x01,             //
478             APINFOTYPE_APAREA       = 0x02,             //
479             APINFOTYPE_AP           = 0x04,             //
480             APINFOTYPE_MAX_VALUE    = (0x1u << 7)       //
481         };
482 
483         /* Please see man pages for details
484 
485 
486         */
487         enum CfgInfoType
488         {
489             CFGINFOTYPE_NONE        = 0x00,             //
490             CFGINFOTYPE_COUNTRY     = 0x01,             //
491             CFGINFOTYPE_LANGUAGE    = 0x02,             //
492             CFGINFOTYPE_MAX_VALUE   = (0x1u << 7)       //
493         };
494 
495         /* Please see man pages for details
496 
497 
498         */
499         enum StorageType
500         {
501             USER_EXT_SAVEDATA_STORAGE,                  //
502             SHARED_EXT_SAVEDATA_STORAGE,                //
503             BOSSSTORAGETYPE_MAX_VALUE = (0x1u << 7)     //
504         };
505 
506         /* Please see man pages for details
507 
508 
509         */
510         enum NewsMode
511         {
512             NEWSMODE_NONE,                              //
513             NEWSMODE_PUBLISH,                           //
514             NEWSMODE_MAX_VALUE = (0x1u << 7)            //
515         };
516 
517         /* Please see man pages for details
518 
519 
520 
521         */
522         enum DstKind
523         {
524             DSTKIND_FRIEND = 1,                         //
525             DSTKIND_SPECIFIED = 2,                      //
526             DSTKIND_SPECIFIED_FRIEND = 4,               //
527             DSTKIND_MAX_VALUE = (0x1u << 31)            //
528         };
529 
530         /* Please see man pages for details
531 
532 
533         */
534         enum QueryType
535         {
536             QUERYTYPE_NONE,                                     //
537 
538             QUERYTYPE_ASCII,                                    //
539             QUERYTYPE_S32,                                      //
540             QUERYTYPE_U32,                                      //
541             QUERYTYPE_S64,                                      //
542             QUERYTYPE_U64,                                      //
543 
544             QUERYTYPE_HEX_S32 = QUERYTYPE_S32 | (0x1u << 4),    //
545             QUERYTYPE_HEX_U32 = QUERYTYPE_U32 | (0x1u << 4),    //
546             QUERYTYPE_HEX_S64 = QUERYTYPE_S64 | (0x1u << 4),    //
547             QUERYTYPE_HEX_U64 = QUERYTYPE_U64 | (0x1u << 4),    //
548 
549             QUERYTYPE_MAX_VALUE = (0x1u << 7)                   //
550         };
551 
552 } // end of namespace boss
553 } // end of namespace nn
554 
555 
556 #endif /*__cplusplus*/
557 
558 #endif /* NN_BOSS_BOSS_CONST_H_ */
559