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: 31585 $
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     /*!
29     @brief      PTM ライブラリの初期化を行います。
30 
31     @return     通常失敗することはあり得ません。ResultSuccess が返ります。
32     */
33     Result Initialize();
34 
35     /*!
36     @brief      PTM ライブラリを終了します。
37 
38     @return     通常失敗することはあり得ません。ResultSuccess が返ります。
39     */
40     Result Finalize();
41 
42     /*!
43         @name アラーム関連
44         @{
45     */
46 
47     /*!
48         @brief アラームの通知取得用のイベントを登録します。
49 
50         @param[in]  event       アラーム通知用のイベントを指定します。
51         @return                 結果を返します。
52     */
53     Result RegisterAlarmEvent(nn::os::Event &event);
54 
55     /*!
56         @brief  アラームをセットします
57 
58         @param[in]  datetime    アラームの時刻を指定します
59         @return                 アラーム設定の結果を返します。
60 
61         アラームを通知して欲しい時刻を指定し、指定時刻を過ぎると @ref RegisterAlarmEvent で登録したイベントがシグナルされます。
62 
63         指定できる年月日は 2000年1月1日から 2099年12月31日までになります。
64 
65         指定時刻を過ぎてから最大で1分程度遅れる場合があります。この仕様は今後変更される可能性があります。
66 
67         過去の時刻を指定するとすぐに通知されます。
68 
69         アラームが既に設定されているときは @ref nn::ptm::ResultAlarmOverWrite が帰ります。
70         この場合でも、アラームの設定は成功します。
71     */
72     Result SetRtcAlarm(nn::fnd::DateTime datetime);
73 
74     /*!
75         @brief 設定したアラームの時刻を取得します。
76         @param[out] pDatetime   取得した時刻を入れるアドレスを指定します。
77         @return                 取得の成否を返します。
78 
79         @ref SetRtcAlarm で設定した時刻を取得します。
80 
81         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
82         このとき pDatetime には値は入りません。
83     */
84     Result GetRtcAlarm(nn::fnd::DateTime *pDatetime);
85 
86     /*!
87         @brief      設定したアラームをキャンセルします。
88         @return     キャンセルの成否を返します。
89 
90         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
91     */
92     Result CancelRtcAlarm();
93 
94     /*!
95         @}
96     */
97 
98     /*!
99         @name 本体状態
100         @{
101     */
102 
103     /*!
104         @brief  電源アダプタの状態を表します。
105     */
106     enum AdapterState
107     {
108         ADAPTERSTATE_NOCONNECTED,       //!< アダプタは接続されていません。
109         ADAPTERSTATE_CONNECTED          //!< アダプタは接続されています。
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         @brief  バッテリの残量をレベルで取得します。
158 
159         @return バッテリ残量のレベルを返します。
160     */
161     BatteryLevel    GetBatteryLevel();
162 
163     /*!
164         @brief  バッテリの充電状態を取得します。
165 
166         @return バッテリの充電状態を返します。
167     */
168     BatteryChargeState GetBatteryChargeState();
169 
170     /*!
171         @}
172     */
173 } // end of namespace CTR
174 } // end of namespace ptm
175 } // end of namespace nn
176 
177 
178 #endif  // ifndef NN_PTM_CTR_PTM_API_H_
179