/*---------------------------------------------------------------------------* Project: Horizon File: hio_SharedMemoryChannel.h Copyright (C)2009 Nintendo Co., Ltd. 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. $Rev: 19036 $ *---------------------------------------------------------------------------*/ #ifndef NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_ #define NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_ #ifdef NN_SWITCH_ENABLE_HOST_IO /*! @file @brief SharedMemoryChannel クラスを定義します。 :include nn/hio.h */ #include namespace nn { namespace hio { namespace CTR { /*! @brief 共有メモリを使用するためのチャンネルを表すクラスです。 PC側でも同一のチャンネルを共有メモリとして開くことでPCと通信することができます。 お互いにチャンネルを開いている間、共有メモリを使うことができます。 */ class SharedMemoryChannel { private: s32 m_Ch; public: /*! @brief コンストラクタです。別途 @ref Open によって、チャンネルを開く必要があります。 */ SharedMemoryChannel() : m_Ch(-1) {} /*! @brief デストラクタです。チャンネルがオープンされている場合は閉じます。 */ ~SharedMemoryChannel() { if( m_Ch >= 0 ) { Close(); } } /*! @brief チャンネルを開きます。 @param[in] ch 使用するチャンネル番号。 @param[in] pWorkMemory ライブラリが使用するワークメモリを指定します。ワークメモリは デバイス用のメモリ である必要があり、サイズは @ref WORKMEMORY_SIZE です。 @return 処理の結果を返します。 */ Result Open(int ch, void* pWorkMemory); /*! @brief チャンネルを閉じます。 @return 処理の結果を返します。 */ Result Close(); /*! @brief 共有メモリのサイズを取得します。 @return 共有メモリのサイズを返します。 */ size_t GetSpaceSize(); /*! @brief 共有メモリからデータを読み込み、処理結果を返します。 ホストとターゲットの両方が、共有メモリ用のチャンネルを開いている必要があります。 @param[out] buf データ読み込み先のバッファ。 @param[in] length 読み込みサイズ。 @param[in] offset 読み込み開始位置を共有メモリの先頭からのオフセットで指定します。 @return 処理結果を返します。 */ Result Read(void* buf, size_t length, int offset); /*! @brief 共有メモリへデータを書き込み、処理結果を返します。 ホストとターゲットの両方が、共有メモリ用のチャンネルを開いている必要があります。 @param[in] buf データ書き込み元のバッファ。 @param[in] length 書き込みサイズ。 @param[in] offset 書き込み開始位置を共有メモリの先頭からのオフセットで指定します。 @return 処理結果を返します。 */ Result Write(const void* buf, size_t length, int offset); }; } } } #endif // ifdef NN_SWITCH_ENABLE_HOST_IO #endif // ifndef NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_