1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: hio_SharedMemoryChannel.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: 19036 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_ 17 #define NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_ 18 #ifdef NN_SWITCH_ENABLE_HOST_IO 19 20 /*! @file 21 @brief SharedMemoryChannel クラスを定義します。 22 23 :include nn/hio.h 24 25 */ 26 27 28 #include <nn/types.h> 29 30 namespace nn { 31 namespace hio { 32 namespace CTR { 33 34 /*! 35 @brief 共有メモリを使用するためのチャンネルを表すクラスです。 36 37 PC側でも同一のチャンネルを共有メモリとして開くことでPCと通信することができます。 38 39 お互いにチャンネルを開いている間、共有メモリを使うことができます。 40 */ 41 class SharedMemoryChannel 42 { 43 private: 44 s32 m_Ch; 45 46 public: 47 /*! 48 @brief コンストラクタです。別途 @ref Open によって、チャンネルを開く必要があります。 49 */ SharedMemoryChannel()50 SharedMemoryChannel() : m_Ch(-1) {} 51 52 /*! 53 @brief デストラクタです。チャンネルがオープンされている場合は閉じます。 54 */ ~SharedMemoryChannel()55 ~SharedMemoryChannel() 56 { 57 if( m_Ch >= 0 ) 58 { 59 Close(); 60 } 61 } 62 63 /*! 64 @brief チャンネルを開きます。 65 66 @param[in] ch 使用するチャンネル番号。 67 @param[in] pWorkMemory ライブラリが使用するワークメモリを指定します。ワークメモリは デバイス用のメモリ である必要があり、サイズは @ref WORKMEMORY_SIZE です。 68 69 @return 処理の結果を返します。 70 */ 71 Result Open(int ch, void* pWorkMemory); 72 73 74 /*! 75 @brief チャンネルを閉じます。 76 77 @return 処理の結果を返します。 78 79 */ 80 Result Close(); 81 82 /*! 83 @brief 共有メモリのサイズを取得します。 84 85 @return 共有メモリのサイズを返します。 86 87 */ 88 size_t GetSpaceSize(); 89 90 91 /*! 92 @brief 共有メモリからデータを読み込み、処理結果を返します。 93 94 ホストとターゲットの両方が、共有メモリ用のチャンネルを開いている必要があります。 95 96 @param[out] buf データ読み込み先のバッファ。 97 @param[in] length 読み込みサイズ。 98 @param[in] offset 読み込み開始位置を共有メモリの先頭からのオフセットで指定します。 99 100 @return 処理結果を返します。 101 */ 102 Result Read(void* buf, size_t length, int offset); 103 104 105 /*! 106 @brief 共有メモリへデータを書き込み、処理結果を返します。 107 108 ホストとターゲットの両方が、共有メモリ用のチャンネルを開いている必要があります。 109 110 @param[in] buf データ書き込み元のバッファ。 111 @param[in] length 書き込みサイズ。 112 @param[in] offset 書き込み開始位置を共有メモリの先頭からのオフセットで指定します。 113 114 @return 処理結果を返します。 115 */ 116 Result Write(const void* buf, size_t length, int offset); 117 }; 118 119 } 120 } 121 } 122 123 124 #endif // ifdef NN_SWITCH_ENABLE_HOST_IO 125 #endif // ifndef NN_HIO_CTR_HIO_SHAREDMEMORYCHANNEL_H_ 126