1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     cec_Api.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: 31024 $
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: SDKでエンディアン変換マクロがサポートされるまでの繋ぎ。
30 //[Todo:]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,     //!< ICON
69         FILETYPE_BOXDATA_NAME_1 = 110,   //!< NAME1
70         FILETYPE_BOXDATA_NAME_2,   //!< NAME2
71         FILETYPE_BOXDATA_NAME_3,   //!< NAME3
72         FILETYPE_BOXDATA_NAME_4,   //!< NAME4
73         FILETYPE_BOXDATA_TEXT_1 = 120,   //!< NAME1
74         FILETYPE_BOXDATA_TEXT_2,   //!< NAME2
75         FILETYPE_BOXDATA_TEXT_3,   //!< NAME3
76         FILETYPE_BOXDATA_TEXT_4,   //!< NAME4
77         FILETYPE_BOXDATA_DATA_1 = 130,   //!< DATA1
78         FILETYPE_BOXDATA_DATA_2,   //!< DATA2
79         FILETYPE_BOXDATA_DATA_3,   //!< DATA3
80         FILETYPE_BOXDATA_DATA_4,   //!< DATA4
81         FILETYPE_BOXDATA_FLAG_1 = 140,   //!< FLAG1
82         FILETYPE_BOXDATA_FLAG_2,   //!< FLAG2
83         FILETYPE_BOXDATA_FLAG_3,   //!< FLAG3
84         FILETYPE_BOXDATA_FLAG_4,   //!< FLAG4
85         FILETYPE_BOXDATA_PROGRAM_ID = 150,
86 
87         FILETYPE_BOXDATA_END = 200,
88 
89         FILETYPE_ANY               = 0xff
90     };
91 
92 
93 /*!
94  * @enum  CecBoxDataType
95  * @brief BOXに付随するデータの種別を示します。
96  */
97     typedef enum CecBoxDataType
98     {
99         BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    //
100         BOXDATA_TYPE_ICON,           //!< アプリケーションのアイコン
101         BOXDATA_TYPE_NAME_1 = 110,   //!< アプリケーションのタイトル
102         BOXDATA_TYPE_END   = FILETYPE_BOXDATA_END     //
103     }BoxDataType;
104 
105     typedef enum CecBoxDataTypeEx
106     {
107         //BOXDATA_TYPE_START = FILETYPE_BOXDATA_START,    //!< 未使用
108 
109         //BOXDATA_TYPE_ICON,     //!< ICON
110         //BOXDATA_TYPE_NAME_1 = 110,   //!< NAME1
111         BOXDATA_TYPE_NAME_2 = BOXDATA_TYPE_NAME_1+1,   //!< NAME2
112         BOXDATA_TYPE_NAME_3,   //!< NAME3
113         BOXDATA_TYPE_NAME_4,   //!< NAME4
114         BOXDATA_TYPE_TEXT_1 = FILETYPE_BOXDATA_TEXT_1,   //!< NAME1
115         BOXDATA_TYPE_TEXT_2,   //!< NAME2
116         BOXDATA_TYPE_TEXT_3,   //!< NAME3
117         BOXDATA_TYPE_TEXT_4,   //!< NAME4
118         BOXDATA_TYPE_DATA_1 = FILETYPE_BOXDATA_DATA_1,   //!< DATA1
119         BOXDATA_TYPE_DATA_2,   //!< DATA2
120         BOXDATA_TYPE_DATA_3,   //!< DATA3
121         BOXDATA_TYPE_DATA_4,   //!< DATA4
122         BOXDATA_TYPE_FLAG_1 = FILETYPE_BOXDATA_FLAG_1,   //!< 未読フラグです。BOXにデータ受信したとき 1 になり、BOXをOpenすると0になります。
123         BOXDATA_TYPE_FLAG_2,   //!< 新着フラグです。BOXにデータ受信したとき 1 になり、BOXをOpenすると0になります。
124         BOXDATA_TYPE_FLAG_3,   //!< FLAG3
125         BOXDATA_TYPE_FLAG_4,   //!< FLAG4
126         BOXDATA_TYPE_PROGRAM_ID = FILETYPE_BOXDATA_PROGRAM_ID   //!< PROGRAM_ID
127 
128         //BOXDATA_TYPE_END = FILETYPE_BOXDATA_END       //!< 未使用
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