1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     cec_Api.h
4   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law. They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10   $Rev: 36150 $
11  *---------------------------------------------------------------------------
12 
13 
14 */
15 #ifndef NN_CEC_CTR_CEC_API_H_
16 #define NN_CEC_CTR_CEC_API_H_
17 
18 #include <nn/types.h>
19 #include <nn/cec/cec_Result.h>
20 #include <nn/cec/CTR/cec_Cec.h>
21 #include <nn/cec/CTR/cec_CecAPI.h>
22 #include <nn/cec/CTR/cec_Message.h>
23 #include <nn/cec/CTR/cec_MessageBox.h>
24 #include <nn/cec/CTR/cec_Control.h>
25 //#include <nn/cec/CTR/cec_MessageBoxInfoReader.h>
26 
27 
28 // ------------------------------------------------------------
29 //TODO: Temporary measure to use until endian conversion macro is supported in the SDK
30 //TODO: Exact copy of nwm_DriverInterface.h
31 #define NWM_BE2LE16(x)       ((static_cast<u16>(          \
32                               (((x) & 0xFF00UL) >> 8UL) | \
33                               (((x) & 0x00FFUL) << 8UL))) )
34 #define NWM_BE2LE32(x)       ((static_cast<u32>(               \
35                               (((x) & 0xFF000000UL) >> 24UL) | \
36                               (((x) & 0x00FF0000UL) >> 8UL) |  \
37                               (((x) & 0x0000FF00UL) << 8UL) |  \
38                               (((x) & 0x000000FFUL) << 24UL))) )
39 #define NWM_LE2BE16(x)       NWM_BE2LE16(x)
40 #define NWM_LE2BE32(x)       NWM_BE2LE32(x)
41 // ------------------------------------------------------------
42 
43 namespace nn {
44 namespace cec {
45 namespace CTR {
46 
47     //extern nn::os::MemoryBlock memBlock;
48     //extern nn::fnd::ExpHeap s_AppHeap;
49     //extern File_Dummy      DFile;
50 
51     enum CecFileType{
52         FILETYPE_MESSAGE_BOX_LIST = 1,
53         FILETYPE_MESSAGE_BOX_INFO = 2,
54         FILETYPE_INBOX_INFO       = 3,
55         FILETYPE_OUTBOX_INFO      = 4,
56         FILETYPE_OUTBOX_INDEX     = 5,
57         FILETYPE_INBOX_MESSAGE    = 6,
58         FILETYPE_OUTBOX_MESSAGE   = 7,
59         FILETYPE_CEC_BASE_DIR    = 10,
60         FILETYPE_MESSAGE_BOX_DIR    = 11,
61         FILETYPE_MESSAGE_INBOX_DIR  = 12,
62         FILETYPE_MESSAGE_OUTBOX_DIR = 13,
63 
64         FILETYPE_END,
65 
66         FILETYPE_BOXDATA_START = 100,
67 
68         FILETYPE_BOXDATA_ICON,     //
69         FILETYPE_BOXDATA_NAME_1 = 110,   //
70         FILETYPE_BOXDATA_NAME_2,   //
71         FILETYPE_BOXDATA_NAME_3,   //
72         FILETYPE_BOXDATA_NAME_4,   //
73         FILETYPE_BOXDATA_TEXT_1 = 120,   //
74         FILETYPE_BOXDATA_TEXT_2,   //
75         FILETYPE_BOXDATA_TEXT_3,   //
76         FILETYPE_BOXDATA_TEXT_4,   //
77         FILETYPE_BOXDATA_DATA_1 = 130,   //
78         FILETYPE_BOXDATA_DATA_2,   //
79         FILETYPE_BOXDATA_DATA_3,   //
80         FILETYPE_BOXDATA_DATA_4,   //
81         FILETYPE_BOXDATA_FLAG_1 = 140,   //
82         FILETYPE_BOXDATA_FLAG_2,   //
83         FILETYPE_BOXDATA_FLAG_3,   //
84         FILETYPE_BOXDATA_FLAG_4,   //
85         FILETYPE_BOXDATA_PROGRAM_ID = 150,
86 
87         FILETYPE_BOXDATA_END = 200,
88 
89         FILETYPE_ANY               = 0xff
90     };
91 
92 
93 /* Please see man pages for details
94 
95 
96  */
97     typedef enum CecBoxDataType
98     {
99         BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    //
100         BOXDATA_TYPE_ICON,           //
101         BOXDATA_TYPE_NAME_1 = FILETYPE_BOXDATA_NAME_1,   //
102         BOXDATA_TYPE_END   = FILETYPE_BOXDATA_END     //
103     }BoxDataType;
104 
105     typedef enum CecBoxDataTypeEx
106     {
107         //BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    // Unused
108 
109         //BOXDATA_TYPE_ICON,     // ICON
110         //BOXDATA_TYPE_NAME_1 = 110,   // NAME1
111         BOXDATA_TYPE_NAME_2 = BOXDATA_TYPE_NAME_1+1,   //
112         BOXDATA_TYPE_NAME_3,   //
113         BOXDATA_TYPE_NAME_4,   //
114         BOXDATA_TYPE_TEXT_1 = FILETYPE_BOXDATA_TEXT_1,   //
115         BOXDATA_TYPE_TEXT_2,   //
116         BOXDATA_TYPE_TEXT_3,   //
117         BOXDATA_TYPE_TEXT_4,   //
118         BOXDATA_TYPE_DATA_1 = FILETYPE_BOXDATA_DATA_1,   //
119         BOXDATA_TYPE_DATA_2,   //
120         BOXDATA_TYPE_DATA_3,   //
121         BOXDATA_TYPE_DATA_4,   //
122         BOXDATA_TYPE_FLAG_1 = FILETYPE_BOXDATA_FLAG_1,   //
123         BOXDATA_TYPE_FLAG_2,   //
124         BOXDATA_TYPE_FLAG_3,   //
125         BOXDATA_TYPE_FLAG_4,   //
126         BOXDATA_TYPE_PROGRAM_ID = FILETYPE_BOXDATA_PROGRAM_ID   //
127 
128         //BOXDATA_TYPE_END = FILETYPE_BOXDATA_END       // Unused
129     }BoxDataTypeEx;
130 
131 
132     namespace
133     {
134         const bit32 FILEOPT_READ         = (1<<1);
135         const bit32 FILEOPT_WRITE        = (1<<2);
136         const bit32 FILEOPT_READWRITE    = FILEOPT_READ|FILEOPT_WRITE;
137         const bit32 FILEOPT_MKDIR        = (1<<3);
138         const bit32 FILEOPT_NOCHECK      = (1<<4);
139         const bit32 FILEOPT_DUMP         = (1<<30);
140     }
141 
142 
143 
144 u8* Base64CecTitleId2Str(const u32 cecTitleId);
145 u32 Base64Str2CecTitleId(const u8* str);
146 
147 
148 void CecBinaryDump(void* data, u32 len, u8 type);
149 void DateParam2Str(char* outStr, nn::fnd::DateTimeParameters date);
150 
151 
152 //void SetAllocFunc(CecAllocFunc cecAllocFunc);
153 void SetAllocFunc(nn::fnd::IAllocator& cecAllocFunc);
154 
155 
156 } // namespace CTR
157 } // namespace cec
158 } // namespace nn
159 
160 
161 #endif  //NN_CEC_CTR_CEC_API_H_
162 
163