/*---------------------------------------------------------------------------* Project: Horizon File: boss_Const.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: 26265 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_CONST_H_ #define NN_BOSS_BOSS_CONST_H_ #include #ifdef __cplusplus namespace nn { namespace boss { /*! @brief NSDのデータ種別です。 */ static const bit32 DATA_TYPE_ALL = 0xffffffff; //!< すべてのデータ種別 static const bit32 DATA_TYPE_APPDATA = 0x00010000; //!< アプリ用のデータ種別 static const bit32 DATA_TYPE_ANNOUNCEMENT = 0x00020000; //!< アナウンスメント用データ種別 static const bit32 DATA_TYPE_SUBBANNER = 0x00040000; //!< サブバナー用データ種別 /*! @brief BOSSシステムの定数です。 */ static const u32 MAX_FILEPATH_LENGTH = 256; //!< ファイルパス最大長 static const u32 MAX_URL_LENGTH = 512; //!< URLの最大長/ static const u32 MAX_HTTP_HEADER_LABEL = 32; //!< HTTPヘッダラベルの最大長 static const u32 MAX_HTTP_HEADER_VALUE = 256; //!< HTTPヘッダ値の最大長 static const u32 MAX_HTTP_HEADER = 3; //!< 登録可能なヘッダ最大個数 static const u32 MAX_ROOT_CA = 3; //!< 登録可能な独自RootCA証明書の最大数 static const u32 MAX_CLIENT_CERT = 1; //!< 登録可能な独自クライアント証明書の最大数 static const u32 TASK_ID_LENGTH = 8; //!< ゼロ終端文字を含むタスクIDの最大文字数 static const u32 MAX_ERROR_MESSAGE = 256; //!< エラーメッセージの最大文字数 static const u32 MAX_APPLICATION_ID = 128; //!< 登録可能なアプリIDの最大個数 static const u32 MAX_TASK_ID = 256; //!< 登録可能なタスクIDの最大個数 static const u32 MAX_STEP_ID = 255; //!< 1つのタスクに登録可能なタスクステップの最大個数 static const u32 CURRENT_STEP_ID = MAX_STEP_ID; //!< 実行中のタスクステップのID static const u32 DEFAULT_STEP_ID = 0; //!< ステップIDの指定を省略する場合のタスクステップID static const u32 U32_CANNOT_GET_DATA = 0xFFFFFFFF; //!< u32を返す関数で値が取得できない場合の戻り値 static const u32 MAX_LASTMODIFIED_LENGTH = 64; //!< HTTP通信における更新日時の最大文字数 static const u32 UNLIMITED_COUNT = 0xFFFFFFFF; //!< 無限の消尽回数の指定値 /*! @brief ファイルの読み書きの位置を指定することを示す定数群です。 */ enum PositionBase { /*! @brief ファイルの先頭を基準としてファイルのカレント位置を設定することを示す定数です。 */ POSITION_BASE_BEGIN, /*! @brief ファイルのカレント位置を基準としてファイルのカレント位置を設定することを示す定数です。 */ POSITION_BASE_CURRENT, /*! @brief ファイルの末尾を基準としてファイルのカレント位置を設定することを示す定数です。 */ POSITION_BASE_END }; /*! @brief プロパティを指定する定数群です。 */ enum PropertyType { TASK_PRIORITY, //!< タスクの優先順位。データの型は、TaskPriorityです。 TASK_SCHEDULING_POLICY, //!< タスクのスケジューリングポリシー。データの型は、SchedulingPolicyです。 TASK_TARGET_DURATION, //!< 現在は、サポートされていません。データの型は、u32(秒)です。 TASK_EXEC_INTERVAL, //!< タスクの実行間隔。データの型は、u32(秒)です。 TASK_EXEC_COUNT, //!< タスクの消尽回数。データの型は、u16です。 ACTION_URL, //!< 対象のURL。データの型は、char[MAX_URL_LENGTH] です。 ACTION_OFFSET, //!< URLで指定したデータの先頭位置オフセット。データの型は、u32 です。 ACTION_FILEPATH, //!< ダウンロード先のファイルパス。データの型は、char[MAX_FILEPATH_LENGTH] です。 ACTION_FILEPATH_W, //!< ダウンロード先のファイルパス。データの型は、wchar_t[MAX_FILEPATH_LENGTH] です。 ACTION_FILE_HANDLE, //!< ダウンロード先のファイルハンドル。データの型は、nn::Handle です。 ACTION_HTTP_HEADER, //!< ダウンロード先のファイルハンドル。データの型は、struct httpRequestHeader[MAX_HTTP_HEADER] です。 ACTION_CLIENT_CERT, //!< https通信用の内蔵クライアント証明書。データの型は、nn::http::InternalClientCertId[MAX_CLIENT_CERT] です。 ACTION_ROOT_CA, //!< https通信用の内蔵ルート証明書。データの型は、nn::http::InternalCaCertId u8 です。 ACTION_PRIVATE_CLIENT_CERT, /* u8 */ ACTION_PRIVATE_ROOT_CA, /* u8 */ ACTION_AP_INFO, /* u8 */ ACTION_CLIENT_CERT_NUM, /* u32 */ ACTION_ROOT_CA_NUM, /* u32 */ ACTION_LAST_MODIFIED_TIME, /* char[MAX_LASTMODIFIED_LENGTH] */ SIGNAL_TASK_EVENT, /* nn::os::Event* */ TASK_EXEC_OPTION, /* ExecOption */ TASK_STEP, /* u8 */ TASK_OPTION_TARGET_STEP, /* u8 */ TASK_OPTION_PARAM1, /* u32 */ TASK_OPTION_PARAM2, /* u32 */ TASK_STATE_CODE, /* TaskStatusCode */ TASK_RESULT_CODE, /* TaskResultCode */ TASK_COMM_ERROR_CODE, /* u32 */ TASK_CURRENT_PRIORITY, /* u32 */ TASK_EXECUTE_COUNT, /* u32 */ TASK_PENDING_TIME, /* u32 */ TASK_REMAIN_TIME, /* u32 */ TASK_START_TIME, /* s64 */ TASK_PROGRESS, /* u32 */ TASK_DATA_SIZE, /* u32 */ TASK_SERVICE_TERMINATED, /* bool */ TASK_CURRENT_STEP, /* u8 */ TASK_STEP_START_TIME, /* s64 */ TASK_LAST_MODIFIED_TIME, /* char[MAX_LASTMODIFIED_LENGTH] */ TASK_ERROR_RESULT_CODE, /* TaskResultCode */ TASK_ERROR_MESSAGE, /* char[MAX_ERROR_MESSAGE] */ TASK_ERROR_CODE, /* u32 */ TASK_ID, /* char[TASK_ID_LENGTH] */ TASK_ACTION, /* Action */ TASK_STATE_RESUME, TASK_SERVICE_STATUS, TASK_ACTIVE_STEP, TASK_ACTIVE_RATE, TASK_REQUEST_RATE, TASK_APPID_LIST_SIZE, TASK_APPID_LIST , TASK_TASKID_LIST_SIZE, TASK_TASKID_LIST , TASK_STEPID_LIST_SIZE, TASK_STEPID_LIST , TASK_NSDATA_LIST_SIZE, TASK_NSDATA_LIST , ACTION_CODE, ACTION_FILEDESC, ACTION_HTTP_HEADER_VALUE, ACTION_SERIAL_ID, ACTION_SIGNAL_TASK_EVENT, TASK_POLICY_INTERVAL , TASK_POLICY_COUNT , TASK_PERMISSION , /* TaskPermission */ PROPERTY_TYPE_MAX_VALUE = (0x1u << 15) }; /*! @brief スケジューリングポリシーを指定する定数群です。 */ enum SchedulingPolicy { ENUM_POLICY_START, STANDARD_POLICY, //!< 標準スケジューリングポリシー ENUM_POLICY_END, SCHEDULING_POLICY_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクパーミッションを指定する定数群です。 */ enum TaskPermission { TASK_PERMISSION_IN_NONE = 0, TASK_PERMISSION_IN_EULA_DISAGREEMENT, TASK_PERMISSION_IN_PARENTAL_CONTROL, TASK_PERMISSION_IN_BOTH, TASK_PERMISSION_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクのプライオリティを指定する定数群です。 */ enum TaskPriority { PRIORITY_EXPEDITE = 35, PRIORITY_HIGH = 80, //!< プライオリティ 高 PRIORITY_MEDIUM = 125, //!< プライオリティ 中 PRIORITY_LOW = 170, //!< プライオリティ 低 PRIORITY_STOPPED = 255, //!< 停止させるプライオリティ PRIORITY_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクアクションを指定する定数群です。 */ enum Action { ENUM_ACTION_START, DOWNLOAD_TASK, //!< RAWダウンロードタスク NSA_DOWNLOAD_TASK, //!< NSAダウンロードタスク UPLOAD_TASK, //!< アップロードタスク SIGNAL_TASK, //!< シグナルタスク ENUM_ACTION_END, ACTION_MAX_VALUE = (0x1u << 7) }; /*! @brief タスク実行オプションを指定する定数群です。 */ enum ExecOption { ENUM_EXECOPTION_START, NORMAL_EXEC, //!< 通常実行 ENUM_EXECOPTION_END, OPTION_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクステータスコードの定数群です。 */ enum TaskStateCode { TASK_STOPPED, //!< タスク停止中 TASK_WAITING_TIMER, //!< タスクの開始時刻待ち状態 TASK_WAITING, //!< タスクの実行待ち状態 TASK_RUNNING, //!< タスク実行中 TASK_PAUSED, //!< タスクポーズ中 TASK_REGISTERD, //!< タスクを登録した状態 TASK_DONE, //!< タスク実行完了状態 TASK_ERROR, //!< タスク実行の異常終了 TASK_RETRY, //!< タスク実行中の通信エラーによるリトライ状態 GET_TASK_STATE_ERROR, //!< タスク状態取得エラー STATUS_MAX_VALUE = (0x1u << 7) //!< }; /* * @brief タスク終了状態。タスク終了後にTask::GetResult()等で取得可能。 */ enum TaskResultCode { TASK_SUCCESS, //!< タスク成功。 BOSS_ERROR_NOMEM, //!< メモリの動的取得失敗 GET_TASK_RESULT_ERROR, //!< タスクリザルトが取得できませんでした。 TASK_NOT_EXIST, //!< 指定されたタスクがありません。 // HTTP通信のエラー HTTP_ERROR_NOMEM, //!< HTTP通信処理で メモリの動的取得に失敗。 HTTP_ERROR_CREATE_EVENT, //!< HTTP通信処理で 内部リソース(イベント)の作成に失敗。 HTTP_ERROR_CREATE_MUTEX, //!< HTTP通信処理で 内部リソース(ミューテックス)の作成に失敗。 HTTP_ERROR_CREATE_QUEUE, //!< HTTP通信処理で 内部リソース(キュー)の作成に失敗。 HTTP_ERROR_CREATE_THREAD, //!< HTTP通信処理で 内部リソース(スレッド)の作成に失敗。 HTTP_ERROR_IPC_SESSION, //!< IPCセッションが不正。 HTTP_ERROR_CLIENT_PROCESS_MAX, //!< 同時利用可能なクライアントプロセス数のクライアントがすでに利用中である。 HTTP_ERROR_IPC_SESSION_MAX, //!< 同時に接続可能なIPCセッション数のセッションがすでに接続されている HTTP_ERROR_MSGQ_SEND_LSN, //!< リスナースレッドメッセージキューへの送信失敗 HTTP_ERROR_MSGQ_RECV_LSN, //!< リスナースレッドメッセージキュー受信失敗 HTTP_ERROR_MSGQ_SEND_COMM, //!< 通信スレッドメッセージキュー受信失敗 HTTP_ERROR_CONN_NOMORE, //!< 接続ハンドル登録最大数越え HTTP_ERROR_CONN_STATUS, //!< 接続ハンドル不正ステータス HTTP_ERROR_CONN_ADD, //!< 接続ハンドル登録失敗 HTTP_ERROR_CONN_HOST_MAX, //!< 同一ホストへの最大同時接続数越え HTTP_ERROR_INVALID_URL, //!< 不正なURL HTTP_ERROR_RESPONSE_HEADER, //!< 不正なHTTPヘッダ HTTP_ERROR_NO_NEWLINE, //!< HTTPヘッダ次行なし HTTP_ERROR_SSL, //!< SSL認証エラー HTTP_ERROR_CERT_EXIST, //!< SSL証明書設定済み(再登録前に削除が必要) HTTP_ERROR_NO_CA_CERT_STORE, //!< SSL 該当するCA証明書ストアが登録されていない HTTP_ERROR_NO_CLIENT_CERT, //!< SSL 該当するクライアント証明書が登録されていない HTTP_ERROR_CA_CERT_STORE_MAX, //!< SSL プロセスごとのCA証明書ストア同時登録最大数の証明書ストアがすでに登録されている。 HTTP_ERROR_CLIENT_CERT_MAX, //!< SSL プロセスごとのクライアント証明書同時登録最大数の証明書がすでに登録されている。 HTTP_ERROR_FAIL_TO_CREATE_CERT_STORE, //!< SSL 証明書ストアの作成に失敗 HTTP_ERROR_FAIL_TO_CREATE_CLIENT_STORE, //!< SSL クライアント証明書の作成に失敗 HTTP_ERROR_DNS, //!< DNS名前解決失敗 HTTP_ERROR_SEND, //!< ソケットデータ送信失敗(インフラ通信切断 など) HTTP_ERROR_RECV, //!< ソケットデータ受信失敗(インフラ通信切断 など) HTTP_ERROR_CONNECT, //!< ソケット接続失敗(サーバが見つからない場合 など) HTTP_ERROR_GET_PROXY_SETTING, //!< 機器情報のプロキシ設定の取得に失敗 #ifndef NN_BOSS_TEST_MODE HTTP_ERROR_TIMEOUT, //!< HTTP通信のタイムアウト #endif /*NN_BOSS_TEST_MODE*/ HTTP_ERROR_401_UNAUTHORIZED, //!< ステータスコード401 Unauthorized を受信 HTTP_ERROR_403_FORBIDDEN, //!< ステータスコード403 Forbidden を受信 HTTP_ERROR_404_NOT_FOUND, //!< ステータスコード404 Not Found を受信 HTTP_ERROR_408_REQUEST_TIMEOUT, //!< ステータスコード408 Request Timeout を受信 HTTP_ERROR_416_REQUESTED_RANGE_NOT_SATISFABLE, //!< ステータスコード416 Requested Range Not Satisfable を受信 HTTP_ERROR_500_INTERNAL_SERVER_ERROR, //!< ステータスコード500 Internal Server Error を受信 HTTP_ERROR_502_BAD_GATEWAY, //!< ステータスコード502 Bad Gateway を受信 HTTP_ERROR_503_SERVICE_UNAVAILABLE, //!< ステータスコード503 Service Unavailable を受信 HTTP_ERROR_504_GATEWAY_TIMEOUT, //!< ステータスコード504 Gateway Timeout を受信 HTTP_ERROR_505_VERSION_NOT_SUPPORTED, //!< ステータスコード505 Version Not Supported を受信 HTTP_ERROR_UNSUPPORTED_STATUS, //!< HTTP通信処理で 上記以外の1xx 3xx 4xx 5xxエラーを受信。 // SSLエラー SSL_ERROR_FAILED, //!< SSLプロトコルの失敗によるエラー。(サーバー側でクライアント証明書の検証が失敗した場合等) SSL_ERROR_WANT_READ, //!< SSLモジュールで非同期ソケット使用時の Read 関数の処理未完了。(再試行してください。) SSL_ERROR_WANT_WRITE, //!< SSLモジュールで非同期ソケット使用時のWrite 関数の処理未完了。(再試行してください。) SSL_ERROR_SYSCALL, //!< SSLモジュールで内部で使用しているシステム関数が予期せぬエラーを返した。 SSL_ERROR_ZERO_RETURN, //!< SSLモジュールで内部でSocketのRead / Write を実施した際、予期せぬタイミングでゼロが返された。 SSL_ERROR_WANT_CONNECT, //!< SSLモジュールで非同期ソケット使用時の接続未完了。(再試行してください。) SSL_ERROR_SSLID, //!< SSLモジュールで内部エラー(不正なSSLID) #ifndef NN_BOSS_TEST_MODE SSL_ERROR_VERIFY_CERT, //!< サーバ認証エラー。サーバ証明書の 認証に失敗しました。 #endif /*NN_BOSS_TEST_MODE*/ SSL_ERROR_VERIFY_COMMON_NAME, //!< サーバ認証エラー。サーバ証明書の CommonName と、AssignServer()で指定した通信先サーバのホスト名が一致しない。 SSL_ERROR_VERIFY_ROOT_CA, //!< サーバ認証エラー。サーバ証明書の Root CA 証明書が、Connectionに設定された証明書と一致しない。 SSL_ERROR_VERIFY_CHAIN, //!< サーバ認証エラー。サーバ証明書の証明書チェインが不正。 SSL_ERROR_VERIFY_DATE, //!< サーバ認証エラー。サーバ証明書が有効期限外である。 SSL_ERROR_GET_SERVER_CERT, //!< 証明書データのバッファへの格納失敗(引数有りのDoHandshake()で 証明書のサイズがバッファより大きい場合に発生) SSL_ERROR_VERIFY_REVOKED_CERT, //!< サーバ認証エラー。サーバ証明書が失効リストに登録されているサーバ証明書であった。 SSL_ERROR_OUT_OF_MEMORY, //!< SSLモジュールでメモリの動的取得失敗 SSL_ERROR_SESSION, //!< SSLモジュールでIPCセッションが不正 SSL_ERROR_FAIL_TO_CREATE_CERT_STROE, //!< 証明書ストアの作成に失敗しました SSL_ERROR_FAIL_TO_CREATE_CRL_STORE, //!< CRLストアの作成に失敗しました SSL_ERROR_FAIL_TO_CREATE_CLIENT_CERT, //!< クライアント証明書の作成に失敗しました SSL_ERROR_CLIENT_PROCESS_MAX, //!< 同時利用可能なクライアントプロセス数のクライアントがすでに利用中である。 SSL_ERROR_IPC_SESSION, //!< 同時に接続可能なIPCセッション数のセッションがすでに接続されている(つまりクライアント数、コネクション数共に最大値に達している。) SSL_ERROR_INTERNAL_CERT, //!< 内蔵証明書の利用に失敗 SSL_ERROR_INTERNAL_CRL, //!< 内蔵CRLの利用に失敗 // ファイルシステムアクセスのエラー FS_ERROR_INVALID_POSITION_BASE, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_ARCHIVE_NOT_FOUND, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_FAILED_OPEN_FILE, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_UNSUPPORTED_OPERATION, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_INVALID_PATH_FORMAT, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_ACCESS_DENIED, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_LIBRARY_NOT_INITIALIZED, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_INVALID_POSITION, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_TOO_LONG_PATH, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_NOT_DEVELOPMENT_ID, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_HASH_MISMATCH, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_NO_SUCH_PROCESS_REGISTERED, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_INVALID_CXI_FORMAT, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_UNSUPPORTED_ALIGNMENT, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_INVALID_HANDLE, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) FS_ERROR_NOT_FOUND, //!< FSエラー発生。(エラーの意味についてはFSモジュール仕様書を参照) // NSAエラー NSA_ERROR_STORAGE_INSUFFICIENCY, //!< NSA領域不足 NSA_ERROR_NUMBER_OF_NSD_MAX, //!< NSA内のNSD数が最大数を超えた NSA_ERROR_VERIFY_HASH, //!< NSA INFOのハッシュエラー NSA_ERROR_VERIFY_SIGNATURE, //!< NSA INFOの署名エラー NSA_NSD_ERROR_VERIFY_HASH, //!< NSD HEADERのハッシュエラー NSA_NSD_ERROR_VERIFY_SIGNATURE, //!< NSD HEADDERの署名エラー NSA_NSD_ERROR_INVALID_FORMAT, //!< NSDフォーマット異常 NSA_ERROR_INVALID_FORMAT, //!< NSAフォーマット異常 // 想定外のエラー SEVERE_ERROR, //! 想定外のエラー ERROR_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクサービスステータスの定数群です。 */ enum TaskServiceStatus { SERVICE_TERMINATED, //!< サービス完了状態 SERVICE_AVAILABLE, //!< サービス可能状態 SERVICE_UNKNOWN, //!< サービス不明状態 GET_SERVICE_STATUS_ERROR, //!< サービス状態取得エラー SERVICE_MAX_VALUE = (0x1u << 7) }; /*! @brief NSDのヘッダ情報取得の種別を示す定数群です。 */ enum HeaderInfoType { NSD_TITLEID, //!< タイトルID NSD_FLAGS, //!< NSDフラグ NSD_DATATYPE, //!< データタイプ NSD_LENGTH, //!< ベイロードレングス NSD_SERIALID, //!< シリアルID NSD_VERSION, //!< バージョン NSD_HEADER_MAX_VALUE = (0x1u << 7) }; /*! @brief タスクアクションのファイルパス指定の定数群です。 */ enum FileDescriptor { CHAR_TYPE, //!< キャラクタ(char) WCHAR_TYPE, //!< ワイドキャラクタ(wchar_t) HANDLE_TYPE, //!< ファイルハンドル FILE_TYPE_MAX_VALUE = (0x1u << 7) }; /*! @brief データタイプを指定することを示す定数群です。(未使用) */ enum DataType { RAW_DATA_TYPE, ARCHIVE_DATA_TYPE, ENCRYPT_RAW_DATA_TYPE, ENCRYPT_ARCHIVE_DATA_TYPE, DATA_TYPE_MAX_VALUE = (0x1u << 7) }; /*! @brief アプリIDの種別を示す定数群です。 */ enum enumApKind { APKIND_GENERAL , //!< 一般アプリのアプリID APKIND_MANAGE //!< 管理者アプリのアプリID }; /*! @brief アクセスポイントの識別子種別を示す定数群です。 */ enum ApInfoType { APINFOTYPE_NONE = 0x00, APINFOTYPE_APGROUP = 0x01, APINFOTYPE_APAREA = 0x02, APINFOTYPE_AP = 0x04, APINFOTYPE_MAX_VALUE = (0x1u << 7) }; } // end of namespace boss } // end of namespace nn #endif /*__cplusplus*/ #endif /* NN_BOSS_BOSS_CONST_H_ */