1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: friends_Api.h 4 5 Copyright 2009 Nintendo. 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: 31593 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FRIENDS_CTR_FRIENDS_API_H_ 17 #define NN_FRIENDS_CTR_FRIENDS_API_H_ 18 19 /*! @file 20 @brief フレンド・プレゼンス機能に関する API の宣言 21 */ 22 23 #include <nn/types.h> 24 25 #include <nn/friends/friends_Result.h> 26 #include <nn/friends/CTR/friends_Types.h> 27 28 #include <nn/uds/CTR/uds_Type.h> 29 30 #ifdef __cplusplus 31 32 namespace nn { 33 namespace friends { 34 namespace CTR { 35 36 namespace detail 37 { 38 // ライブラリの初期化・終了 39 Result Initialize(); 40 Result Finalize(); 41 42 // ライブラリ状態確認 43 bool IsInitialized(); 44 bool HasLoggedIn(); 45 46 // 接続管理 47 Result Login( os::Event* pEvent ); 48 Result Logout(); 49 50 // 自分情報取得(ローカル) 51 PrincipalId GetMyPrincipalId(); 52 Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ); 53 Result GetMyProfile( Profile* pProfile ); 54 Result GetMyPresence( MyPresence* pMyPresence ); 55 Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ); 56 Result GetMyMii( MiiData* pMiiData ); 57 58 // 友達情報取得 59 Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset, size_t size ); 60 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size ); 61 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size ); 62 Result GetFriendScreenName( char16 (*pScreenNameList)[SCREEN_NAME_SIZE], const FriendKey* pFriendKeyList, size_t size, bool replaceForeignCharacters, u8* pFontRegionList ); 63 Result GetFriendScreenName( char16 (*pScreenNameList)[SCREEN_NAME_SIZE], const PrincipalId* pPrincipalIdList, size_t size, bool replaceForeignCharacters, u8* pFontRegionList ); 64 Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size ); 65 Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size ); 66 Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size ); 67 Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size ); 68 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size ); 69 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size ); 70 Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size ); 71 72 // 自分情報更新 73 Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ); 74 75 // 通知内容取得 76 Result AttachToEventNotification( nn::os::Event* pEvent ); 77 Result SetNotificationMask( bit32 mask ); 78 u32 GetEventNotification( EventNotification* pEventNotificationList, size_t size, bool* pHasOverflowed ); 79 Result GetLastResponseResult(); 80 81 // エラーコード取得 82 u32 ResultToErrorCode( const Result& result ); 83 } 84 85 // TODO 移動 86 namespace 87 { 88 static const char PORT_NAME_USER[] = "frd:u"; 89 } 90 91 /*------------------------------------------------------------------- 92 ライブラリの初期化/終了 93 -------------------------------------------------------------------*/ 94 95 /*! 96 @brief フレンド・プレゼンスライブラリの初期化を行い、プレゼンス機能を使用可能な状態にします。 97 98 @return 処理の結果が返ってきます。<BR> 99 */ 100 Result Initialize(); Initialize()101 inline Result Initialize() 102 { 103 return detail::Initialize(); 104 } 105 106 /*! 107 @brief フレンド・プレゼンスライブラリを終了します。 108 109 複数回 @ref nn::friends::CTR::Initialize 関数を呼んだ場合、この関数も同じ回数呼ぶ必要があります。 110 111 @return 処理の結果が返ってきます。<BR> 112 */ 113 Result Finalize(); Finalize()114 inline Result Finalize() 115 { 116 return detail::Finalize(); 117 } 118 119 /*! 120 @brief フレンド・プレゼンスライブラリが初期化済みか否かを確認します。 121 122 @return フレンド・プレゼンスライブラリが初期化済みであれば true 、未初期化であれば false が返ってきます。 123 */ 124 bool IsInitialized(); IsInitialized()125 inline bool IsInitialized() 126 { 127 return detail::IsInitialized(); 128 } 129 130 /*! 131 @brief 自分のログイン状態を確認します。 132 133 自分が @ref nn::friends::CTR::Login 関数を呼んだ上でオンライン状態になっているかを確認します。 134 135 @return 自分がログイン中であれば true 、ログインしていなければ false が返ってきます。 136 この関数の結果が true であれば必ずオンライン状態ですが、結果が false であってもオフライン状態とは限りません。 137 */ 138 bool HasLoggedIn(); HasLoggedIn()139 inline bool HasLoggedIn() 140 { 141 return detail::HasLoggedIn(); 142 } 143 144 /*! 145 @brief サーバへのログインを要求します。 146 147 この関数が成功で返った場合は非同期処理が発生し、非同期処理が完了した時点で引数に指定した @ref nn::os::Event がシグナルされます。 148 非同期処理の結果は @ref nn::friends::CTR::GetLastResponseResult で取得できます。 149 この関数が失敗で返った場合は、非同期処理が発生することはありません。<BR> 150 <BR> 151 この関数を呼ぶには、事前に @ref nn::ac::Connect 関数を呼んで AP との接続を確立しておく必要があります。 152 AP との接続を確立せずに呼んだ場合は @ref nn::friends::ResultAcNotConnected を返します。<BR> 153 <BR> 154 バックグラウンドでサーバからの切断処理が走っていた場合、この関数は一時的に @ref nn::friends::ResultTemporarilyBusy を返します。 155 その場合は比較的短時間が経過した後に再試行することで成功する可能性があります。<BR> 156 <BR> 157 すでにログインしている状態でコールしても成功します。その場合、非同期処理は瞬時に成功で完了します。<BR> 158 <BR> 159 非同期処理が成功した場合、必ずオンライン状態になります。 160 161 @param[in] pEvent 非同期処理の完了を通知する @ref nn::os::Event へのポインタを指定します。事前に @ref nn::os::Event::Initialize で初期化しておいてください。 162 163 @return 処理の結果が返ってきます。 164 */ 165 Result Login( os::Event* pEvent ); Login(os::Event * pEvent)166 inline Result Login( os::Event* pEvent ) 167 { 168 return detail::Login( pEvent ); 169 } 170 171 /*! 172 @brief サーバへのログイン要求を撤回します。 173 174 すでにログアウトしている状態でコールしても成功します。<BR> 175 <BR> 176 この関数が成功しても、オフライン状態であることは保証されません。<BR> 177 <BR> 178 何らかの要因によりサーバとの接続が切断された場合、この関数をコール済みの状態へ暗黙的に遷移します。 179 180 @return 処理の結果が返ってきます。 181 */ 182 Result Logout(); Logout()183 inline Result Logout() 184 { 185 return detail::Logout(); 186 } 187 188 /*! 189 @brief 自分のプリンシパル ID を取得します。 190 191 @return 自分のプリンシパル ID が返ってきます。<BR> 192 <BR> 193 ライブラリが未初期化であったり、まだ一度もサーバに接続したことがないと @ref nn::friends::CTR::INVALID_PRINCIPAL_ID が返ってきます。 194 */ 195 PrincipalId GetMyPrincipalId(); GetMyPrincipalId()196 inline PrincipalId GetMyPrincipalId() 197 { 198 return detail::GetMyPrincipalId(); 199 } 200 201 /*! 202 @brief 自分の情報の公開レベルを取得します。 203 204 @param[out] pIsPublicMode 公開モードを格納するバッファへのポインタを指定します。 205 @param[out] pIsShowGameName 遊んでいるゲームを公開するかを格納するバッファへのポインタを指定します。 206 @param[out] pIsShowPlayedGame ゲーム履歴を公開するかを格納するバッファへのポインタを指定します。 207 208 @return 処理の結果が返ってきます。 209 */ 210 Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ); GetMyPreference(bool * pIsPublicMode,bool * pIsShowGameName,bool * pIsShowPlayedGame)211 inline Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ) 212 { 213 return detail::GetMyPreference( pIsPublicMode, pIsShowGameName, pIsShowPlayedGame ); 214 } 215 216 /*! 217 @brief 自分のプロフィール情報を取得します。 218 219 @param[out] pProfile 自分のプロフィール情報を格納する構造体へのポインタを指定します。 220 221 @return 処理の結果が返ってきます。 222 */ 223 Result GetMyProfile( Profile* pProfile ); GetMyProfile(Profile * pProfile)224 inline Result GetMyProfile( Profile* pProfile ) 225 { 226 return detail::GetMyProfile( pProfile ); 227 } 228 229 /*! 230 @brief 自分のプレゼンス情報を取得します。 231 232 @param[out] pMyPresence 自分のプレゼンス情報を格納する構造体へのポインタを指定します。 233 234 @return 処理の結果が返ってきます。 235 */ 236 Result GetMyPresence( MyPresence* pMyPresence ); GetMyPresence(MyPresence * pMyPresence)237 inline Result GetMyPresence( MyPresence* pMyPresence ) 238 { 239 return detail::GetMyPresence( pMyPresence ); 240 } 241 242 /*! 243 @brief 自分の表示名を取得します。 244 245 @param[out] screenName 自分の表示名を格納するバッファを指定します。 246 247 @return 処理の結果が返ってきます。 248 */ 249 Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ); GetMyScreenName(char16 screenName[SCREEN_NAME_SIZE])250 inline Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ) 251 { 252 return detail::GetMyScreenName( screenName ); 253 } 254 255 /*! 256 @brief 自分の Mii データを取得します。 257 258 「Mii スタジオ」で「じぶんの Mii」を設定していない場合、空の Mii データが取得されます。<BR> 259 <BR> 260 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 261 262 @param[out] pMiiData 自分の Mii データを格納する構造体へのポインタを指定します。 263 264 @return 処理の結果が返ってきます。 265 */ 266 Result GetMyMii( MiiData* pMiiData ); GetMyMii(MiiData * pMiiData)267 inline Result GetMyMii( MiiData* pMiiData ) 268 { 269 return detail::GetMyMii( pMiiData ); 270 } 271 272 /*! 273 @brief フレンドリストに登録されたフレンドキーのリストを取得します。 274 275 取得されるフレンドキーには、まだフレンド関係が成立していないものも含まれます。 276 277 @param[out] pFriendKeyList 取得したフレンドキーを格納するバッファへのポインタを指定します。 278 @param[out] pNum 実際に取得された数を格納するバッファへのポインタを指定します。 279 @param[in] offset 取得を開始するフレンドキーのインデックスを指定します。 280 @param[in] size 取得するフレンドキーの最大数(バッファの要素数)を指定します。 281 282 @return 処理の結果が返ってきます。 283 */ 284 Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset = 0, size_t size = FRIEND_LIST_SIZE ); GetFriendKeyList(FriendKey * pFriendKeyList,size_t * pNum,size_t offset,size_t size)285 inline Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset, size_t size) 286 { 287 return detail::GetFriendKeyList( pFriendKeyList, pNum, offset, size ); 288 } 289 290 /*! 291 @brief フレンドプレゼンスのリストを取得します。 292 293 自分と異なる合流ゲーム ID を指定したフレンドのゲームモードとお誘いフラグは取得できません。<BR> 294 <BR> 295 引数で与えられたキーに対応するフレンドが存在しないと、空のプレゼンスが返されます。 296 297 @param[out] pFriendPresenceList 取得したフレンドプレゼンスを格納するバッファへのポインタを指定します。 298 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 299 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 300 301 @return 処理の結果が返ってきます。 302 */ 303 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendPresence(FriendPresence * pFriendPresenceList,const FriendKey * pFriendKeyList,size_t size)304 inline Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size) 305 { 306 return detail::GetFriendPresence( pFriendPresenceList, pFriendKeyList, size ); 307 } 308 309 /*! 310 @brief フレンドプレゼンスのリストを取得します。 311 312 自分と異なる合流ゲーム ID を指定したフレンドのゲームモードとお誘いフラグは取得できません。<BR> 313 <BR> 314 引数で与えられたキーに対応するフレンドが存在しないと、空のプレゼンスが返されます。 315 316 @param[out] pFriendPresenceList 取得したフレンドプレゼンスを格納するバッファへのポインタを指定します。 317 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 318 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 319 320 @return 処理の結果が返ってきます。 321 */ 322 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendPresence(FriendPresence * pFriendPresenceList,const PrincipalId * pPrincipalIdList,size_t size)323 inline Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size) 324 { 325 return detail::GetFriendPresence( pFriendPresenceList, pPrincipalIdList, size ); 326 } 327 328 /*! 329 @brief フレンドの表示名のリストを取得します。 330 331 この関数を使用すると、「似顔絵ライブラリ」を使用せずにフレンドの Mii の名前を直接取得することができます。 332 また、対象がフレンド関係成立待ち状態で Mii が取得できない場合でも、自分が仮登録した表示名が取得されます。<BR> 333 <BR> 334 フレンドの Mii がブラックリストに含まれていた場合でも生の名前が取得されますが、 335 フレンドの Mii の名前が NG ネームだった場合は ??? に置換されて取得されます。<BR> 336 <BR> 337 引数で与えられたキーに対応するフレンドが存在しないと、空の表示名が返されます。 338 339 @param[out] pScreenNameList 取得した表示名を格納するバッファへのポインタを指定します。 340 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 341 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 342 @param[in] replaceForeignCharacters フレンドの表示名のフォントリージョンが自分と異なる場合に、 ASCII 以外の文字を ? で置換するかを指定します。 343 @param[in] pFontRegionList フレンドの表示名のフォントリージョンを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 344 345 @return 処理の結果が返ってきます。 346 */ 347 Result GetFriendScreenName( 348 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 349 const FriendKey* pFriendKeyList, 350 size_t size = 1, 351 bool replaceForeignCharacters = true, 352 u8* pFontRegionList = NULL 353 ); GetFriendScreenName(char16 (* pScreenNameList)[SCREEN_NAME_SIZE],const FriendKey * pFriendKeyList,size_t size,bool replaceForeignCharacters,u8 * pFontRegionList)354 inline Result GetFriendScreenName( 355 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 356 const FriendKey* pFriendKeyList, 357 size_t size, 358 bool replaceForeignCharacters, 359 u8* pFontRegionList 360 ) 361 { 362 return detail::GetFriendScreenName( pScreenNameList, pFriendKeyList, size, replaceForeignCharacters, pFontRegionList ); 363 } 364 365 /*! 366 @brief フレンドの表示名のリストを取得します。 367 368 この関数を使用すると、「似顔絵ライブラリ」を使用せずにフレンドの Mii の名前を直接取得することができます。 369 また、対象がフレンド関係成立待ち状態で Mii が取得できない場合でも、自分が仮登録した表示名が取得されます。<BR> 370 <BR> 371 フレンドの Mii がブラックリストに含まれていた場合でも生の名前が取得されますが、 372 フレンドの Mii の名前が NG ネームだった場合は ??? に置換されて取得されます。<BR> 373 <BR> 374 引数で与えられたキーに対応するフレンドが存在しないと、空の表示名が返されます。 375 376 @param[out] pScreenNameList 取得した表示名を格納するバッファへのポインタを指定します。 377 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 378 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 379 @param[in] replaceForeignCharacters フレンドの表示名のフォントリージョンが自分と異なる場合に、 ASCII 以外の文字を ? で置換するかを指定します。 380 @param[in] pFontRegionList フレンドの表示名のフォントリージョンを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 381 382 @return 処理の結果が返ってきます。 383 */ 384 Result GetFriendScreenName( 385 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 386 const PrincipalId* pPrincipalIdList, 387 size_t size = 1, 388 bool replaceForeignCharacters = true, 389 u8* pFontRegionList = NULL 390 ); GetFriendScreenName(char16 (* pScreenNameList)[SCREEN_NAME_SIZE],const PrincipalId * pPrincipalIdList,size_t size,bool replaceForeignCharacters,u8 * pFontRegionList)391 inline Result GetFriendScreenName( 392 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 393 const PrincipalId* pPrincipalIdList, 394 size_t size, 395 bool replaceForeignCharacters, 396 u8* pFontRegionList 397 ) 398 { 399 return detail::GetFriendScreenName( pScreenNameList, pPrincipalIdList, size, replaceForeignCharacters, pFontRegionList ); 400 } 401 402 /*! 403 @brief フレンドの Mii データのリストを取得します。 404 405 引数で与えられたキーに対応するフレンドが存在しないと、空の Mii データが返されます。<BR> 406 <BR> 407 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 408 409 @param[out] pMiiDataList 取得した Mii データを格納するバッファへのポインタを指定します。 410 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 411 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 412 413 @return 処理の結果が返ってきます。 414 */ 415 Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendMii(MiiData * pMiiDataList,const FriendKey * pFriendKeyList,size_t size)416 inline Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size) 417 { 418 return detail::GetFriendMii( pMiiDataList, pFriendKeyList, size ); 419 } 420 421 /*! 422 @brief フレンドの Mii データのリストを取得します。 423 424 引数で与えられたキーに対応するフレンドが存在しないと、空の Mii データが返されます。<BR> 425 <BR> 426 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 427 428 @param[out] pMiiDataList 取得した Mii データを格納するバッファへのポインタを指定します。 429 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 430 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 431 432 @return 処理の結果が返ってきます。 433 */ 434 Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size = 1); GetFriendMii(MiiData * pMiiDataList,const PrincipalId * pPrincipalIdList,size_t size)435 inline Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size) 436 { 437 return detail::GetFriendMii( pMiiDataList, pPrincipalIdList, size ); 438 } 439 440 /*! 441 @brief フレンドのプロフィール情報のリストを取得します。 442 443 引数で与えられたキーに対応するフレンドが存在しないと、空のプロフィール情報が返されます。 444 445 @param[out] pProfileList 取得したプロフィール情報を格納するバッファへのポインタを指定します。 446 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 447 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 448 449 @return 処理の結果が返ってきます。 450 */ 451 Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendProfile(Profile * pProfileList,const FriendKey * pFriendKeyList,size_t size)452 inline Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size) 453 { 454 return detail::GetFriendProfile( pProfileList, pFriendKeyList, size ); 455 } 456 457 /*! 458 @brief フレンドのプロフィール情報のリストを取得します。 459 460 引数で与えられたキーに対応するフレンドが存在しないと、空のプロフィール情報が返されます。 461 462 @param[out] pProfileList 取得したプロフィール情報を格納するバッファへのポインタを指定します。 463 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 464 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 465 466 @return 処理の結果が返ってきます。 467 */ 468 Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendProfile(Profile * pProfileList,const PrincipalId * pPrincipalIdList,size_t size)469 inline Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size) 470 { 471 return detail::GetFriendProfile( pProfileList, pPrincipalIdList, size ); 472 } 473 474 /*! 475 @brief フレンドの関係のリストを取得します。 476 477 フレンド関係は、属性のビットの OR であらわされます。 478 一度でもフレンド関係が成立したことがあるフレンドは @ref nn::friends::CTR::ATTRIBUTE_FLAG_ESTABLISHED ビットが 1 になります。 479 480 @param[out] pAttributeFlagsList 取得した関係情報を格納するバッファへのポインタを指定します。 481 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 482 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 483 484 @return 処理の結果が返ってきます。 485 */ 486 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendAttributeFlags(bit32 * pAttributeFlagsList,const FriendKey * pFriendKeyList,size_t size)487 inline Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size) 488 { 489 return detail::GetFriendAttributeFlags( pAttributeFlagsList, pFriendKeyList, size ); 490 } 491 492 /*! 493 @brief フレンドの関係のリストを取得します。 494 495 フレンド関係は、属性のビットの OR であらわされます。 496 一度でもフレンド関係が成立したことがあるフレンドは @ref nn::friends::CTR::ATTRIBUTE_FLAG_ESTABLISHED ビットが 1 になります。 497 498 @param[out] pAttributeFlagsList 取得した関係情報を格納するバッファへのポインタを指定します。 499 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 500 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 501 502 @return 処理の結果が返ってきます。 503 */ 504 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendAttributeFlags(bit32 * pAttributeFlagsList,const PrincipalId * pPrincipalIdList,size_t size)505 inline Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size) 506 { 507 return detail::GetFriendAttributeFlags( pAttributeFlagsList, pPrincipalIdList, size ); 508 } 509 510 /*! 511 @brief フレンドの暗号化ローカルフレンドコードを復号します。 512 513 フレンドのものでない暗号化ローカルフレンドコードを指定した場合、無効なローカルフレンドコードが返ってきます。 514 515 @param[out] pLocalFriendCodeList 復号したローカルフレンドコードを格納するバッファへのポインタを指定します。 516 @param[in] pScrambledLocalFriendCodeList 暗号化ローカルフレンドコードのリストへのポインタを指定します。 517 @param[in] size 暗号化ローカルフレンドコードのリストの要素数(バッファの要素数)を指定します。 518 519 @return 処理の結果が返ってきます。 520 */ 521 Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size = 1); UnscrambleLocalFriendCode(LocalFriendCode * pLocalFriendCodeList,const uds::CTR::ScrambledLocalFriendCode * pScrambledLocalFriendCodeList,size_t size)522 inline Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size ) 523 { 524 return detail::UnscrambleLocalFriendCode( pLocalFriendCodeList, pScrambledLocalFriendCodeList, size ); 525 } 526 527 /*! 528 @brief ゲームモード説明文字列を更新します。 529 530 @param[in] description ゲームモード説明文字列を指定します。 531 532 @return 処理の結果が返ってきます。 533 */ 534 Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ); UpdateGameModeDescription(const char16 description[MODE_DESCRIPTION_SIZE])535 inline Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ) 536 { 537 return detail::UpdateGameModeDescription( description ); 538 } 539 540 541 /*! 542 @brief 自分のログイン状態や、フレンドの状態変更を通知するイベントを指定します。 543 544 この関数を複数回呼んだ場合、最後に指定した @ref nn::os::Event のみがシグナルします。 545 546 @param[out] pEvent 変更を通知する @ref nn::os::Event へのポインタを指定します。事前に @ref nn::os::Event::Initialize で初期化しておいてください。 547 548 @return 処理の結果が返ってきます。 549 */ 550 Result AttachToEventNotification( nn::os::Event* pEvent ); AttachToEventNotification(nn::os::Event * pEvent)551 inline Result AttachToEventNotification( nn::os::Event* pEvent ) 552 { 553 return detail::AttachToEventNotification( pEvent ); 554 } 555 556 /*! 557 @brief 受け取る通知の種類を指定します。 558 559 @ref nn::friends::CTR::AttachToEventNotification で指定したイベントをシグナルさせたり、 560 @ref nn::friends::CTR::GetEventNotification で取得される履歴に含める通知の種類を指定します。 561 562 初期状態ではこの関数に @ref nn::friends::CTR::NOTIFICATION_MASK_DEFAULT を指定したのと同じ状態になっています。 563 564 @param[in] mask 受け取る通知の種類のビットマスクを指定します。 @ref nn::friends::CTR::NotificationMask 列挙体メンバの OR を指定してください。 565 566 @return 処理の結果が返ってきます。 567 */ 568 Result SetNotificationMask( bit32 mask ); SetNotificationMask(bit32 mask)569 inline Result SetNotificationMask( bit32 mask ) 570 { 571 return detail::SetNotificationMask( mask ); 572 } 573 574 /*! 575 @brief 自分のオンライン状態や、フレンドの状態変更の通知の履歴を取得します。 576 577 この関数を呼ぶと、まだ取得していない通知の内容を古いものから順に取得します。 578 返値が 0 になるまで繰り返し呼ぶことで、たまっている通知を時系列順に取得することができます。<BR> 579 <BR> 580 ライブラリが保存できる通知は128件までです。 581 128件を超えた通知は古いほうから削除されます。 582 通知の保存件数は今後調整される可能性があります。 583 584 @param[out] pEventNotificationList 取得した通知の内容を格納するバッファへのポインタを指定します。 585 @param[in] size バッファの要素数を指定します。 586 @param[out] pHasOverflowed 取得できずにあふれた通知があったかを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 587 588 @return 実際に取得できた通知の数が返ってきます。 589 */ 590 u32 GetEventNotification( 591 EventNotification* pEventNotificationList, 592 size_t size = 1, 593 bool* pHasOverflowed = NULL 594 ); GetEventNotification(EventNotification * pEventNotificationList,size_t size,bool * pHasOverflowed)595 inline u32 GetEventNotification( 596 EventNotification* pEventNotificationList, 597 size_t size, 598 bool* pHasOverflowed 599 ) 600 { 601 return detail::GetEventNotification( pEventNotificationList, size, pHasOverflowed ); 602 } 603 604 /*! 605 @brief 完了した非同期処理の結果を取得します。 606 607 複数の非同期処理を走らせると、取得される結果は最後に開始した非同期処理のものでその都度上書きされます。 608 ある非同期処理の完了前に別の非同期処理を開始した場合、後者の完了前に前者が完了したとしても、その結果を取得することはできません。 609 原則として、複数の非同期処理を並行して走らせることは避けてください。 610 611 @return 非同期処理の処理の結果が返ってきます。 612 */ 613 Result GetLastResponseResult(); GetLastResponseResult()614 inline Result GetLastResponseResult() 615 { 616 return detail::GetLastResponseResult(); 617 } 618 619 /*! 620 @brief フレンド・プレゼンスライブラリの API の結果からエラーコードを取得します。 621 622 @param[in] result フレンド・プレゼンスライブラリの API から取得した結果を指定します。 623 624 @return 指定した結果に対応するエラーコードが返ってきます。 625 <BR> 626 エラーコードを表示する必要がない結果や、 FRIENDS ライブラリ API 以外の結果を指定した場合は 0 が返ってきます。 627 */ 628 u32 ResultToErrorCode( const Result& result ); ResultToErrorCode(const Result & result)629 inline u32 ResultToErrorCode( const Result& result ) 630 { 631 return detail::ResultToErrorCode( result ); 632 } 633 634 } // end of namespace CTR 635 } // end of namespace friends 636 } // end of namespace nn 637 638 #endif // __cplusplus 639 640 // 以下、C 用宣言 641 642 #include <nn/util/detail/util_CLibImpl.h> 643 644 /*! 645 @addtogroup nn_friends friends 646 647 @{ 648 */ 649 650 651 652 /*! 653 @} 654 */ 655 656 #endif // ifndef NN_FRIENDS_CTR_FRIENDS_API_H_ 657