1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     cec_Api.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: 47558 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_CEC_CTR_CEC_API_H_
17 #define NN_CEC_CTR_CEC_API_H_
18 
19 #include <nn/types.h>
20 #include <nn/fnd.h>
21 
22 namespace nn {
23 namespace cec {
24 namespace CTR {
25 
26     enum CecFileType
27     {
28         FILETYPE_MESSAGE_BOX_LIST = 1,
29         FILETYPE_MESSAGE_BOX_INFO = 2,
30         FILETYPE_INBOX_INFO       = 3,
31         FILETYPE_OUTBOX_INFO      = 4,
32         FILETYPE_OUTBOX_INDEX     = 5,
33         FILETYPE_INBOX_MESSAGE    = 6,
34         FILETYPE_OUTBOX_MESSAGE   = 7,
35         FILETYPE_CEC_BASE_DIR    = 10,
36         FILETYPE_MESSAGE_BOX_DIR    = 11,
37         FILETYPE_MESSAGE_INBOX_DIR  = 12,
38         FILETYPE_MESSAGE_OUTBOX_DIR = 13,
39 
40         FILETYPE_END,
41 
42         FILETYPE_BOXDATA_START = 100,
43 
44         FILETYPE_BOXDATA_ICON,     //
45         FILETYPE_BOXDATA_NAME_1 = 110,   //
46         FILETYPE_BOXDATA_NAME_2,   //
47         FILETYPE_BOXDATA_NAME_3,   //
48         FILETYPE_BOXDATA_NAME_4,   //
49         FILETYPE_BOXDATA_TEXT_1 = 120,   //
50         FILETYPE_BOXDATA_TEXT_2,   //
51         FILETYPE_BOXDATA_TEXT_3,   //
52         FILETYPE_BOXDATA_TEXT_4,   //
53         FILETYPE_BOXDATA_DATA_1 = 130,   //
54         FILETYPE_BOXDATA_DATA_2,   //
55         FILETYPE_BOXDATA_DATA_3,   //
56         FILETYPE_BOXDATA_DATA_4,   //
57         FILETYPE_BOXDATA_FLAG_1 = 140,   //
58         FILETYPE_BOXDATA_FLAG_2,   //
59         FILETYPE_BOXDATA_FLAG_3,   //
60         FILETYPE_BOXDATA_FLAG_4,   //
61         FILETYPE_BOXDATA_PROGRAM_ID = 150,
62 
63         FILETYPE_BOXDATA_END = 200,
64 
65         FILETYPE_ANY               = 0xff
66     };
67 
68 
69 /* Please see man pages for details
70 
71 
72  */
73     typedef enum CecBoxDataType
74     {
75         BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    //
76         BOXDATA_TYPE_ICON,           //
77         BOXDATA_TYPE_NAME_1 = FILETYPE_BOXDATA_NAME_1,   //
78         BOXDATA_TYPE_END   = FILETYPE_BOXDATA_END     //
79     }BoxDataType;
80 
81     typedef enum CecBoxDataTypeEx
82     {
83         //BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    // Unused
84 
85         //BOXDATA_TYPE_ICON,     // ICON
86         //BOXDATA_TYPE_NAME_1 = 110,   // NAME1
87         BOXDATA_TYPE_NAME_2 = BOXDATA_TYPE_NAME_1+1,   //
88         BOXDATA_TYPE_NAME_3,   //
89         BOXDATA_TYPE_NAME_4,   //
90         BOXDATA_TYPE_TEXT_1 = FILETYPE_BOXDATA_TEXT_1,   //
91         BOXDATA_TYPE_TEXT_2,   //
92         BOXDATA_TYPE_TEXT_3,   //
93         BOXDATA_TYPE_TEXT_4,   //
94         BOXDATA_TYPE_DATA_1 = FILETYPE_BOXDATA_DATA_1,   //
95         BOXDATA_TYPE_DATA_2,   //
96         BOXDATA_TYPE_DATA_3,   //
97         BOXDATA_TYPE_DATA_4,   //
98         BOXDATA_TYPE_FLAG_1 = FILETYPE_BOXDATA_FLAG_1,   //
99         BOXDATA_TYPE_FLAG_2,   //
100         BOXDATA_TYPE_FLAG_3,   //
101         BOXDATA_TYPE_FLAG_4,   //
102         BOXDATA_TYPE_PROGRAM_ID = FILETYPE_BOXDATA_PROGRAM_ID   //
103 
104         //BOXDATA_TYPE_END = FILETYPE_BOXDATA_END       // Unused
105     }BoxDataTypeEx;
106 
107 
108     namespace
109     {
110         const bit32 FILEOPT_READ         = (1<<1);
111         const bit32 FILEOPT_WRITE        = (1<<2);
112         const bit32 FILEOPT_READWRITE    = FILEOPT_READ|FILEOPT_WRITE;
113         const bit32 FILEOPT_MKDIR        = (1<<3);
114         const bit32 FILEOPT_NOCHECK      = (1<<4);
115         const bit32 FILEOPT_DUMP         = (1<<30);
116     }
117 
118 
119 
120 u8* Base64CecTitleId2Str(u32 cecTitleId);
121 u32 Base64Str2CecTitleId(const u8* str);
122 
123 
124 void CecBinaryDump(const void* data, u32 len, u8 type);
125 void DateParam2Str(char* outStr, nn::fnd::DateTimeParameters date);
126 
127 
128 void SetAllocFunc(nn::fnd::IAllocator& cecAllocFunc);
129 void InitializeAllocFunc(uptr bufferAddress, size_t bufferSize);
130 void FinalizeAllocFunc(void);
131 
132 
133 } // namespace CTR
134 } // namespace cec
135 } // namespace nn
136 
137 
138 #endif  //NN_CEC_CTR_CEC_API_H_
139 
140