1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     ptm_Api.h
4 
5   Copyright (C)2010 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: 26531 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_PTM_CTR_PTM_API_H_
17 #define NN_PTM_CTR_PTM_API_H_
18 
19 #include <nn/Handle.h>
20 #include <nn/Result.h>
21 #include <nn/types.h>
22 #include <nn/fnd.h>
23 
24 namespace nn {
25 namespace ptm {
26 namespace CTR {
27 
28     Result Initialize();
29     Result Finalize();
30 
31     /*!
32         @name アラーム関連
33         @{
34     */
35 
36     /*!
37         @brief アラームの通知取得用のイベントを登録します。
38 
39         @param[in]  event       アラーム通知用のイベントを指定します。
40         @return                 結果を返します。
41     */
42     Result RegisterAlarmEvent(nn::os::Event &event);
43 
44     /*!
45         @brief  アラームをセットします
46 
47         @param[in]  datetime    アラームの時刻を指定します
48         @return                 アラーム設定の結果を返します。
49 
50         アラームを通知して欲しい時刻を指定し、指定時刻を過ぎると @ref RegisterAlarmEvent で登録したイベントがシグナルされます。
51 
52         指定できる年月日は 2000年1月1日から 2099年12月31日までになります。
53 
54         指定時刻を過ぎてから最大で1分程度遅れる場合があります。この仕様は今後変更される可能性があります。
55 
56         過去の時刻を指定するとすぐに通知されます。
57 
58         アラームが既に設定されているときは @ref nn::ptm::ResultAlarmOverWrite が帰ります。
59         この場合でも、アラームの設定は成功します。
60     */
61     Result SetRtcAlarm(nn::fnd::DateTime datetime);
62 
63     /*!
64         @brief 設定したアラームの時刻を取得します。
65         @param[out] pDatetime   取得した時刻を入れるアドレスを指定します。
66         @return                 取得の成否を返します。
67 
68         @ref SetRtcAlarm で設定した時刻を取得します。
69 
70         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
71         このとき pDatetime には値は入りません。
72     */
73     Result GetRtcAlarm(nn::fnd::DateTime *pDatetime);
74 
75     /*!
76         @brief      設定したアラームをキャンセルします。
77         @return     キャンセルの成否を返します。
78 
79         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
80     */
81     Result CancelRtcAlarm();
82 
83     /*!
84         @}
85     */
86 
87     /*!
88         @name 本体状態
89         @{
90     */
91 
92     /*!
93         @brief  電源アダプタの状態を表します。
94     */
95     enum AdapterState
96     {
97         ADAPTERSTATE_NOCONNECTED,       //!< アダプタは接続されていません。
98         ADAPTERSTATE_CONNECTED          //!< アダプタは接続されています。
99     };
100 
101     /*!
102         :private
103 
104         @brief  ふたの状態を表します。
105     */
106     enum ShellState
107     {
108         SHELLSTATE_CLOSED,              //!< ふたは閉じています。
109         SHELLSTATE_OPENED               //!< ふたは開いています。
110     };
111 
112     /*!
113         @brief  バッテリの充電状態を表します
114     */
115     enum BatteryChargeState
116     {
117         BATTERYCHARGESTATE_NOCHARGING,   //!< 充電中ではありません。
118         BATTERYCHARGESTATE_CHARGING      //!< 充電中です。
119     };
120 
121     /*!
122         @brief  バッテリの残量をレベルで表します。
123     */
124     enum BatteryLevel
125     {
126         BATTERYLEVEL_0,                 //!<  0%
127         BATTERYLEVEL_1,                 //!<  1% ~   5%
128         BATTERYLEVEL_2,                 //!<  6% ~  10%
129         BATTERYLEVEL_3,                 //!< 11% ~  30%
130         BATTERYLEVEL_4,                 //!< 31% ~  60%
131         BATTERYLEVEL_5,                 //!< 61% ~ 100%
132 
133         BATTERYLEVEL_MIN = BATTERYLEVEL_0,  //!< バッテリレベルの最小値です。
134         BATTERYLEVEL_MAX = BATTERYLEVEL_5   //!< バッテリレベルの最大値です。
135     };
136 
137     /*!
138         :private
139 
140         @brief  本体識別情報を表します。
141     */
142     enum HardwareType
143     {
144         HARDWARE_TYPE_DEVICE,           //!< 実機
145         HARDWARE_TYPE_BOARD,            //!< TSボード
146         HARDWARE_TYPE_DEBUGGER          //!< デバッガ
147     };
148 
149     /*!
150         @brief  電源アダプタの状態を取得します。
151 
152         @return 電源アダプタの状態を返します。
153     */
154     AdapterState    GetAdapterState();
155 
156     /*!
157         :private
158 
159         @brief  ふたの状態を取得します。
160 
161         @return ふたの状態を返します。
162     */
163     ShellState      GetShellState();
164 
165     /*!
166         @brief  バッテリの残量をレベルで取得します。
167 
168         @return バッテリ残量のレベルを返します。
169     */
170     BatteryLevel    GetBatteryLevel();
171 
172     /*!
173         @brief  バッテリの充電状態を取得します。
174 
175         @return バッテリの充電状態を返します。
176     */
177     BatteryChargeState GetBatteryChargeState();
178 
179     /*!
180         @}
181     */
182 } // end of namespace CTR
183 } // end of namespace ptm
184 } // end of namespace nn
185 
186 
187 #endif  // ifndef NN_PTM_CTR_PTM_API_H_
188