/*---------------------------------------------------------------------------* Project: Horizon File: applet_Parameters.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: 32520 $ *---------------------------------------------------------------------------*/ #ifndef NN_APPLET_CTR_APPLET_PARAMETERS_H_ #define NN_APPLET_CTR_APPLET_PARAMETERS_H_ #include #include namespace nn{ namespace applet{ namespace CTR{ enum Attribute { //---- アプレット種類 TYPE_APP = (0x0<<0), //000 アプリケーション TYPE_APPLIB = (0x1<<0), //001 ライブラリアプレット TYPE_SYS = (0x2<<0), //010 システムアプレット TYPE_SYSLIB = (0x3<<0), //011 システムライブラリアプレット TYPE_RESIDENT = (0x4<<0), //100 常駐アプレット TYPE_MASK = (0x7<<0), //111 (アプレット種類用のマスク) //---- GPU権利設定 MANUAL_GPU_RIGHT = (1<<3), // 手動でAssign/Releaseを行う //---- DSP権利設定 MANUAL_DSP_RIGHT = (1<<4) // 手動でAssign/Releaseを行う }; const bit32 DEFAULT_APPLET_ATTRIBUTE = (TYPE_APP); enum DisplayBufferMode { FORMAT_R8G8B8A8 = 0, FORMAT_R8G8B8 = 1, FORMAT_R5G6B5 = 2, FORMAT_R5G5B5A1 = 3, FORAMT_R4G4B4A4 = 4, FORMAT_UNIMPORTABLE = 0xFFFFFFFF }; /*! @brief ホームボタンの状態を表す列挙形です。 GetHomeButtonState() で取得することが出来ます。 ClearHomeButtonState() を呼び出すと状態は HOME_BUTTON_NONE になります。 */ enum HomeButtonState { HOME_BUTTON_NONE = 0, //!< ホームボタンが押されたことを検出していない HOME_BUTTON_SINGLE_PRESSED = 1, //!< ホームボタンがシングルクリックされたことを検出した HOME_BUTTON_DOUBLE_PRESSED = 2 //!< ホームボタンがダブルクリックされたことを検出した }; enum ShutdownState { SHUTDOWN_STATE_NONE = 0, // シャットダウン通知を受け取っていない SHUTDOWN_STATE_RECEIVED = 1 // シャットダウン通知を受け取っている }; enum PowerButtonState { POWER_BUTTON_STATE_NONE = 0, // 押されていない POWER_BUTTON_STATE_CLICK = 1 // クリック }; enum OrderToCloseState { ORDER_TO_CLOSE_STATE_NONE = 0, // 終了要求なし ORDER_TO_CLOSE_STATE_RECEIVED = 1 // 終了要求あり }; /*! @brief スリープ通知の状態を表す列挙形です。 ClearSleepNotificationState() を呼び出すと、NOTIFY_NONE になります。 */ enum SleepNotificationState { NOTIFY_NONE = 0, //!< スリープ関連の通知が行われていない状態 NOTIFY_SLEEP_QUERY = 1, //!< スリープ問い合わせコールバックが呼び出され、"保留"(nn::applet::CTR::REPLY_LATER) を返した NOTIFY_SLEEP_ACCEPT = 2, //!< スリープ問い合わせコールバックが呼び出され、"承諾"(nn::applet::CTR::REPLY_ACCEPT) を返した NOTIFY_SLEEP_REJECT = 3, //!< スリープ問い合わせコールバックが呼び出され、"拒否"(nn::applet::CTR::REPLY_REJECT) を返した NOTIFY_SLEEP_ACCEPTED = 4, //!< スリープ確定のコールバックが呼び出された NOTIFY_AWAKE = 5 //!< スリープ復帰のコールバックが呼び出された }; enum AppJumpType { JUMP_OTHER = 0, // 他のアプリにジャンプする JUMP_CALLER = 1, // 呼び出し元にジャンプする JUMP_SELF = 2 // 自分にジャンプする }; enum AppletPos { POS_APP = 0, // アプリ POS_APPLIB = 1, // アプリが立ち上げるライブラリアプレット POS_SYS = 2, // システム POS_SYSLIB = 3, // システムが立ち上げるライブラリアプレット POS_RESIDENT = 4, // 常駐アプレット POS_MAX, POS_NONE = -1 // どこでもない状態 }; /*! @brief 起動要求の種類を表す列挙形です。 WaitForStarting() の返り値として用いられます。 */ enum WakeupState { //スリープされた WAKEUP_SKIP = 0, //!< スキップしたことを表します。何も動作を行う必要はありません。 //通常の要求で起こされた → 起こされた方は動作再開 WAKEUP_TO_START = 1, //!< ホームメニューなどからの通常起動を表します。動作再開してください。 //終了して起こされた → 起こされた方は動作再開 WAKEUP_BY_EXIT = 2, //!< 何らかの終了によってアプリケーションが起床したことを表します。動作再開してください。 // 中断して起こされた → 起こされた方は動作再開 WAKEUP_BY_PAUSE = 3, //!< 何らかの中断によってアプリケーションが起床したことを表します。動作再開してください。 //取り消しの通知で起こされた → 起こされた方は終了 WAKEUP_BY_CANCEL = 4, //!< 取り消しの通知で起こされたことを表します。速やかに終了してください。 //取り消しの通知で起こされた → 起こされた方は終了 → 必要なら他のものも終了させる WAKEUP_BY_CANCELALL = 5, //!< アプリケーションでこの値をケアする必要はありません。 // 電源ボタンクリックで起こされた → 起こされる可能性があるのはシステムメニューだけで、スリープ推奨画面に移行する WAKEUP_BY_POWER_BUTTON_CLICK = 6, //!< 電源ボタンクリックを検出して起床したことを表します。速やかに終了してください。 //HOMEメニューに移るために起こされた→ 起こされた方は JumpToHomeMenu() WAKEUP_TO_JUMP_HOME = 7, //!< アプリケーションでこの値をケアする必要はありません。 //アプリケーションに移るために起こされた→ 起こされた方は LeaveHomeMenu() WAKEUP_TO_JUMP_APPLICATION = 8, //!< アプリケーションでこの値をケアする必要はありません。 //アプリケーションを起動するために起こされた→ 起こされた方は StartApplication() WAKEUP_TO_LAUNCH_APPLICATION = 9, //!< アプリケーションでこの値をケアする必要はありません。 // 時間切れ WAKEUP_BY_TIMEOUT = -1 //!< 時間切れであったことを表します。 }; /*! @brief スリープ問い合わせに対する返答を表す列挙型です。 スリープ問い合わせのコールバックの返り値に用いたり、 ReplySleepQuery() の引数に用います。 スリープ問い合わせのコールバックの返り値には REPLY_REJECT, REPLY_ACCEPT, REPLY_LATER のいずれかを指定してください。 ReplySleepQuery() の引数には REPLY_REJECT, REPLY_ACCEPT のいずれかを指定してください。 */ enum QueryReply { REPLY_REJECT = 0, //!< スリープを拒否します。 REPLY_ACCEPT = 1, //!< スリープを承諾します。 REPLY_LATER = 2 //!< 返答を保留します。(これを返した後は、速やかにReplySleepQuery()で返答してください) }; enum UsableAppletId { APPLET_ID_NONE = 0, // 未使用 // // application APPLICATION_APPLET_ID = 0x300, // application // library applet APPLIB_APPLET_ID = 0x400, // ライブラリアプレット // resident applet ERRDISP_APPLET_ID = 0x501, // ERROR DISPLAY APPLET_ID_MAX }; enum SleepCheckOnEnableSleep { SLEEP_IF_SHELL_CLOSED = true, NO_SHELL_CHECK = false }; enum ReplyRejectOnDisableSleep { REPLY_REJECT_IF_LATER = true, NO_REPLY_REJECT = false }; /*! @brief APPLET ID です。 */ typedef bit32 AppletId; /*! @brief APPLET の属性です。 */ typedef bit32 AppletAttr; typedef nn::applet::CTR::DisplayBufferMode AppletDisplayBufferMode; typedef nn::applet::CTR::HomeButtonState AppletHomeButtonState; typedef nn::applet::CTR::SleepNotificationState AppletSleepNotificationState; typedef nn::applet::CTR::ShutdownState AppletShutdownState; typedef nn::applet::CTR::PowerButtonState AppletPowerButtonState; typedef nn::applet::CTR::OrderToCloseState AppletOrderToCloseState; typedef nn::applet::CTR::WakeupState AppletWakeupState; typedef nn::applet::CTR::QueryReply AppletQueryReply; typedef nn::applet::CTR::AppJumpType AppletAppJumpType; // 無効なハンドル extern const nn::Handle HANDLE_NONE; // 時間 /*! @brief 時間を指定する APPLETライブラリの関数において、 結果が得られるまで継続して動作を行うことを意味する指定となります。 */ extern const nn::fnd::TimeSpan WAIT_INFINITE; /*! @brief 時間を指定する APPLETライブラリの関数において、 一度だけ動作を行い、結果が得られない場合でも繰り返して動作を行わないことを意味する指定となります。 */ extern const nn::fnd::TimeSpan NO_WAIT; // 無効アプレットID const bit32 INVALID_ID = 0; // 無効プログラムID const bit64 INVALID_PROGRAM_ID = 0xffffffffffffffffull; // ----コールバック群 /*! @brief ホームボタン検出コールバックを表す関数型です。 */ typedef bool (*AppletHomeButtonCallback)( uptr arg, bool isActive, nn::applet::CTR::HomeButtonState state ); /*! :private @brief メッセージ受け取りコールバックを表す関数型です。 */ typedef void (*AppletMessageCallback)( uptr arg, AppletId senderId, u8 pParam[], size_t paramSize, nn::Handle handle ); // メモリリクエスト typedef void (*AppletRequestMemoryCallback)( uptr arg, size_t size, nn::Handle* pHandle ); // メモリリクエストのファイナライズ typedef void (*AppletReleaseMemoryCallback)( uptr arg ); // DSP スリープ typedef void (*AppletDspSleepCallback)( uptr arg ); // DSP ウェイクアップ typedef void (*AppletDspWakeUpCallback)( uptr arg ); /*! @brief スリープ問い合わせコールバックを表す関数型です。 */ typedef AppletQueryReply (*AppletSleepQueryCallback)( uptr arg ); /*! @brief スリープキャンセルコールバックを表す関数型です。 */ typedef void (*AppletSleepCanceledCallback)( uptr arg ); /*! @brief スリープからの復帰コールバックを表す関数型です。 */ typedef void (*AppletAwakeCallback)( uptr arg ); /*! @brief シャットダウン通知のコールバックを表す関数型です。 */ typedef void (*AppletShutdownCallback)( uptr arg ); /*! :private @brief アプリケーション終了コールバックを表す関数型です。 */ typedef void (*AppletCloseAppletCallback)( uptr arg ); // 実際にはすべてのアプレットに共通です /*! @brief 電源ボタン検出コールバックを表す関数型です。 */ typedef void (*AppletPowerButtonCallback)( uptr arg ); /*! @brief 遷移時のコールバックを表す関数型です。 */ typedef void (*AppletTransitionCallback)( uptr arg ); /*! @breaf 電源ボタン検出や電源低下などでアプリケーションが終了すべき状態になったときに呼ばれるコールバックを表す関数です。 */ typedef void (*AppletCloseCallback)( uptr arg ); } } } /*! @addtogroup nn_applet @{ */ #define NN_APPLET_PORT_NAME_USER "APT:U" // User Application /*! @brief アプレットマネージャに登録できる APPLET の最大数 */ #define NN_APPLET_MAX_APPLET_NUM 5 #define NN_APPLET_PARAMETER_MAX 4096 //!