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