/*---------------------------------------------------------------------------* Project: Horizon File: cec_MessageBox.h Copyright 2009 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Date:: 2010-10-27#$ $Rev: 29614 $ $Author: sato_yoshinobu $ *---------------------------------------------------------------------------*/ #ifndef __MESSAGE_BOX_SYSTEM_H__ #define __MESSAGE_BOX_SYSTEM_H__ #include namespace nn { namespace cec { namespace CTR { /*! :private @brief CEC MessageBox にアクセスするためのクラスです。(特権用) */ class MessageBoxSystem : public MessageBox { public: MessageBoxSystem(bool NoInitialize = false); virtual ~MessageBoxSystem(); //! @name Boxの作成/削除 //@{ u32 GetMessageBoxList(MessageBoxList& messageBoxList); /*! @brief MessageBox のリストを取得します。 @param[out] titleIdList TitleIdの配列 @param[in] flag MessageBoxFlag @return TitleId数 */ u32 GetMessageBoxTitleIdList(TitleId* titleIdList, MessageBoxFlag flag); /*! @brief MessageBox を作成します。 @param[in] cecTitleId Title固有ID @param[in] privateId BOXにアクセスするときのキーとなります。 BOXにアクセスするアプリが保持している値を使用する必要があります。 @param[in] hmacKey Message を読み出すときに必要なキーを指定します。32文字の文字列で指定します。 通信相手と共通のキーである必要があります。 @param[in] flag MessageBoxFlag で BOX種別を指定します。 @param[in] inboxSizeMax 受信ボックスの最大保存サイズを指定します。 @param[in] outboxSizeMax 送信ボックスの最大保存サイズを指定します。 @param[in] inboxMessNumMax 受信ボックスの最大保存Message数を指定します。 @param[in] outboxMessNumMax 送信ボックスの最大保存Message数を指定します。 @param[in] messageSizeMax Messageの最大サイズを指定します。このサイズを超えるMessageは保存できません。 @return nn::Result */ nn::Result CreateMessageBox_System( const TitleId cecTitleId, const u32 privateId, const char* hmacKey, MessageBoxFlag flag, size_t inboxSizeMax = CEC_INBOX_SIZE_DEFAULT, size_t outboxSizeMax = CEC_OUTBOX_SIZE_DEFAULT, size_t inboxMessNumMax = CEC_INBOX_MESSNUM_DEFAULT, size_t outboxMessNumMax = CEC_OUTBOX_MESSNUM_DEFAULT, size_t messageSizeMax = CEC_MESSSIZEMAX_DEFAULT ); nn::Result DeleteAllBoxes(); void SetLastOpenedDate(const nn::fnd::DateTimeParameters& dateTime); nn::fnd::DateTimeParameters GetLastOpenedDate(); /*! @brief MessageBox を開きます。Box内のMessageにアクセスするために、まずこの関数でBoxを開く必要があります。 privateIdを指定することなくBOXにアクセス可能です。 @param[in] cecTitleId Title固有ID @return nn::Result */ virtual nn::Result OpenMessageBoxForce(const TitleId cecTitleId); nn::Result SetMessageBoxFlag(const MessageBoxFlag flag); nn::Result SetMessageBodyDirect(const TitleId cecTitleId, const CecBoxType boxType, const MessageId& messageId, const void* dataBody, const size_t dataBodyLen); size_t GetMessageBodySizeDirect(const TitleId cecTitleId, const CecBoxType boxType, const MessageId& messageId); nn::Result GetMessageBodyDirect(const TitleId cecTitleId, const CecBoxType boxType, const MessageId& messageId, void* dataBody, const size_t dataBodyLen); }; } // namespace CTR } // namespace cec } // namespace nn /* #define CEC_STATE_MFILTER_EXCHANGE (0x1) #define CEC_STATE_ID_EXCHANGE (0x2) #define CEC_STATE_LIST_EXCHANGE (0x4) */ #endif //__MESSAGE_BOX_SYSTEM_H__