1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_NsaDownloadAction.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: 26309 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_NSA_DOWNLOAD_ACTION_H_ 17 #define NN_BOSS_BOSS_NSA_DOWNLOAD_ACTION_H_ 18 19 #include <nn/boss/boss_TaskAction.h> 20 21 #ifdef __cplusplus 22 23 namespace nn { 24 namespace boss { 25 26 /*! 27 @brief NADLタスクを表すクラスです。NADLタスクを登録する場合などに利用します。(*SDK0.13で使用する場合には注意点があります。) 28 29 NADL タスクは、 BOSS データサーバからHTTP/HTTPS通信を用いてデータをダウンロードするタスクです。<BR> 30 アプリケーションにダウンロードさせたいデータは、 BOSS データサーバに登録されていなければなりません。<BR> 31 BOSS データサーバに登録されたデータは、Nintendo アーカイブ(略称 NS アーカイブ)という任天堂が独自に定義したフォーマットに変換されます。<BR> 32 NS アーカイブには複数のデータを含ませることができますので、一度のタスク実行で複数のデータ(例えば、アプリケーション用のデータと、そのおしらせデータなど)をダウンロードさせたい場合には、<BR> 33 複数のデータをまとめて BOSS データサーバに登録します。<BR> 34 NS アーカイブに含まれる個々のデータ(略称 NS データ)は、すべて暗号化され、署名とハッシュ値が付与されます。<BR> 35 <BR> 36 ダウンロードされたデータは、BOSSによって復号化と検証が行われ、問題のなかったNSデータは、データの対象アプリケーションに届けられます。<BR> 37 NSデータの受信用に、NADLタスクを利用するアプリケーションは、BOSSストレージ(拡張セーブデータ領域内に作成されるBOSS専用領域)を登録しなければいけません。<BR> 38 アプリケーションは、BOSSストレージに届けられたデータを、BOSS経由で読み込むことができます。<BR> 39 <BR> 40 [SDK0.13での注意点]<BR> 41 -SDK0.13でNADLタスクを使用する場合は、SDカードのトップにbossフォルダを作成しておく必要があります。<BR> 42 (FSのBOSSストレージ対応が完了するまでの暫定対応です。bossデーモンはそのフォルダをBOSSストレージとして利用します。)<BR> 43 -上記暫定対応において、SDカードのbossフォルダは、全アプリケーション共通のBOSSストレージとなります。<BR> 44 よって複数アプリケーションからNADLタスクを登録する場合、各NSデータのシリアルIDを全アプリケーション間で一意な値にしておく(つまりシリアルIDが同じになるNSデータが存在しないようにしておく)必要があります。<BR> 45 (そうしませんと、シリアルIDが同じであるデータは同一データと見なされますので、あるアプリケーションのダウンロードデータが、他アプリケーションのダウンロードデータで上書きされてしまうケースが生じ得ます。<BR> 46 FSのBOSSストレージ対応が完了しましたら、シリアルIDはアプリケーション単位で一意に設定できるようになります。つまりアプリケーションが異なれば、同じシリアルIDを持つNSデータを使用できるようになります。)<BR> 47 */ 48 class NsaDownloadAction : public TaskAction 49 { 50 public: 51 /*! 52 @brief コンストラクタです。 53 */ 54 explicit NsaDownloadAction(void); 55 56 /*! 57 @brief デストラクタです。 58 */ 59 virtual ~NsaDownloadAction(void); 60 61 /*! 62 @brief NSAダウンロードの設定を行います。 63 @param[in] pUrl ダウンロードしたいURLを指定します。 64 @return 処理の結果が返ります。<BR> 65 @retval Description== @ref ER_INVALID_URL 「URL文字列のポインタがNULLまたは0文字列です。」を表すエラー 66 */ 67 nn::Result Initialize(const char* pUrl); 68 69 /*! 70 @brief クラス内のプロパティの値を設定します。 71 下記のプロパティを使用できます。\n 72 識別子 型 \n 73 ACTION_URL char url[MAX_URL_LENGTH] \n 74 ACTION_AP_INFO u8 \n 75 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 76 ACTION_CLIENT_CERT u8 \n 77 ACTION_ROOT_CA u8 \n 78 @param[in] type プロパティの識別子を指定します。 79 @param[in] pValue 値を指定します。 80 @param[in] size 値のサイズを指定します。 81 @return 処理の結果が返ります。<BR> 82 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 83 @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー 84 */ 85 nn::Result virtual SetProperty(PropertyType type, void* pValue, size_t size); 86 87 /*! 88 @brief クラス内のプロパティの値を取得します。 89 下記のプロパティを使用できます。\n 90 識別子 型 \n 91 ACTION_URL char url[MAX_URL_LENGTH] \n 92 ACTION_AP_INFO u8 \n 93 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 94 ACTION_CLIENT_CERT u8 \n 95 ACTION_ROOT_CA u8 \n 96 @param[in] type プロパティの識別子を指定します。 97 @param[out] pValue 値を指定します。 98 @param[in] size 値のサイズを指定します。 99 @return 処理の結果が返ります。<BR> 100 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 101 @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー 102 */ 103 nn::Result virtual GetProperty(PropertyType type, void* pValue, size_t size); 104 105 }; 106 107 } // end of namespace boss 108 } // end of namespace nn 109 110 #endif // __cplusplus 111 112 #endif /* NN_BOSS_BOSS_NSA_DOWNLOAD_ACTION_H_ */ 113 114