1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     cec_CecAPI.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_CEC_CTR_CEC_CEC_API_H_
17 #define NN_CEC_CTR_CEC_CEC_API_H_
18 
19 #include <nn/cec/CTR/cec_Cec.h>
20 
21 namespace nn {
22 namespace cec {
23 namespace CTR {
24 
25 namespace detail {
26 
27     namespace
28     {
29         // For general applications, application that gets state (SPIDER), and BOSS.
30         const char PORT_NAME_CEC[]      = "cecd:u";
31         // MMEN NEWS
32         const char PORT_NAME_CEC_SYS[]  = "cecd:s";
33         // For NDM
34         const char PORT_NAME_CEC_NDM[]  = "cecd:ndm";
35     }
36 
37 
38     Result InitializeCecControl();
39     Result InitializeCecControlSys();
40     Result FinalizeCecControl();
41     Result FinalizeCecControlSys();
42 
43     Result WaitForSessionValid();
44 
45 
46     Result Open(u32 cecTitleId, u32 dataType, u32 option, size_t* filesize);
47     Result Read(size_t* pReadLen, u8 pReadBuf[], size_t len);
48     Result ReadMessage(u32 cecTitleId, u8 in_or_out_box, const u8 pMessId[], size_t messIdLen, size_t* pReadLen, u8 pReadBuf[], size_t len);
49     Result ReadMessageWithHmac(u32 cecTitleId, u8 in_or_out_box, const u8 pMessId[], size_t messIdLen, size_t* pReadLen, u8 pReadBuf[], size_t len , const u8 pHmac[]);
50     Result Write(const u8 pWriteBuf[], size_t len);
51     Result WriteMessage(u32 cecTitleId, u8 in_or_out_box, u8 pMessId[], size_t messIdLen, const u8 pWriteBuf[], size_t len);
52     Result WriteMessageWithHmac(u32 cecTitleId, u8 in_or_out_box, u8 pMessId[], size_t messIdLen, const u8 pWriteBuf[], size_t len , const u8 pHmac[]);
53     Result Delete(u32 cecTitleId, u32 dataType, u8 in_or_out_box, const u8 pMessId[], size_t messIdLen);
54 
55     nn::Result SetData(u32 cecTitleId, const u8 pData[], size_t len, u32 option);
56     nn::Result ReadData(u8 pReadBuf[], size_t len, u32 option , const u8 optionData[], size_t optionDataLen);
57 
58     Result Start(u32 option);
59     Result Stop(u32 option);
60 
61     Result GetCecdState(u32* state);
62     Result GetCecInfoBuffer(u32 cecTitleId, u8 pCecInfoBuffer[], size_t size);
63     Result GetCecInfoEventHandle(nn::Handle* pEventHandle);
64     Result GetChangeStateEventHandle(nn::Handle* pEventHandle);
65     Result OpenAndReadFile(u8* readBuf, size_t readBufLen, size_t* readLen,
66         u32 fileCecTitleId, u32 fileDataType, u32 fileOption);
67     Result OpenAndWriteFile(const u8* writeBuf, size_t writeBufLen,
68         u32 fileCecTitleId, u32 fileDataType, u32 fileOption);
69 
70     nn::Result GetEventLog(u8 pStreetPassEventsBuf[], s32* pEnd, s32 start, s32 length);
71     nn::Result GetEventLogStart(s32* pStart);
72     nn::Result GetEventLogLength(s32* pLength);
73     nn::Result CalcEventLogStart(s32* pNewStart, s32 start, s32 offset);
74 
75 
76     //Result SystemOpenBox( u32 cecTitleId );
77     Result SetCecTestMode(bit8 testMode);
78     Result GetCecInfoEventHandleSys(nn::Handle* pEventHandle);
79 
80 } // end of namespace detail
81 } // end of namespace CTR
82 } // end of namespace cec
83 } // end of namespace nn
84 
85 
86 
87 #endif  // ifndef NN_CEC_CTR_CEC_CEC_API_H_
88