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: 33672 $
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 
60         @return     関数の実行結果を返します。以下に挙げる Result を返します。
61         @retval     ResultSuccess               処理に成功しました。
62         @retval     ResultNotRegistered         @ref nn::ptm::CTR::RegisterAlarmEvent が実行されていません。
63         @retval     ResultInvalidAlarm          指定している年月日が範囲外です。
64         @retval     ResultOverWriteAlarm        既に設定されていました。
65 
66         アラームを通知して欲しい時刻を指定し、指定時刻を過ぎると @ref RegisterAlarmEvent で登録したイベントがシグナルされます。
67 
68         指定できる年月日は 2000年1月1日から 2099年12月31日までになります。
69 
70         指定時刻を過ぎてから最大で1分程度遅れてシグナルされる場合があります。
71         また、指定時刻より数秒(3秒程度)早くシグナルされる場合があります。
72 
73         過去の時刻を指定するとすぐにシグナルされます。
74 
75         アラームが既に設定されているときは @ref nn::ptm::ResultOverWriteAlarm が返ります。
76         この場合でも、アラームの設定は成功します。
77     */
78     Result SetRtcAlarm(nn::fnd::DateTime datetime);
79 
80     /*!
81         @brief 設定したアラームの時刻を取得します。
82         @param[out] pDatetime   取得した時刻を入れるアドレスを指定します。
83         @return                 取得の成否を返します。
84 
85         @ref SetRtcAlarm で設定した時刻を取得します。
86 
87         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
88         このとき pDatetime には値は入りません。
89     */
90     Result GetRtcAlarm(nn::fnd::DateTime *pDatetime);
91 
92     /*!
93         @brief      設定したアラームをキャンセルします。
94         @return     キャンセルの成否を返します。
95 
96         既に時刻が通知されている場合、アラームが設定されていない場合には @ref nn::ptm::ResultNoAlarm が返ります。
97     */
98     Result CancelRtcAlarm();
99 
100     /*!
101         @}
102     */
103 
104     /*!
105         @name 本体状態
106         @{
107     */
108 
109     /*!
110         @brief  電源アダプタの状態を表します。
111     */
112     enum AdapterState
113     {
114         ADAPTERSTATE_NOCONNECTED,       //!< アダプタは接続されていません。
115         ADAPTERSTATE_CONNECTED          //!< アダプタは接続されています。
116     };
117 
118     /*!
119         @brief  バッテリの充電状態を表します
120     */
121     enum BatteryChargeState
122     {
123         BATTERYCHARGESTATE_NOCHARGING,   //!< 充電中ではありません。
124         BATTERYCHARGESTATE_CHARGING      //!< 充電中です。
125     };
126 
127     /*!
128         @brief  バッテリの残量をレベルで表します。
129     */
130     enum BatteryLevel
131     {
132         BATTERYLEVEL_0,                 //!<  0%
133         BATTERYLEVEL_1,                 //!<  1% ~   5%
134         BATTERYLEVEL_2,                 //!<  6% ~  10%
135         BATTERYLEVEL_3,                 //!< 11% ~  30%
136         BATTERYLEVEL_4,                 //!< 31% ~  60%
137         BATTERYLEVEL_5,                 //!< 61% ~ 100%
138 
139         BATTERYLEVEL_MIN = BATTERYLEVEL_0,  //!< バッテリレベルの最小値です。
140         BATTERYLEVEL_MAX = BATTERYLEVEL_5   //!< バッテリレベルの最大値です。
141     };
142 
143     /*!
144         :private
145 
146         @brief  本体識別情報を表します。
147     */
148     enum HardwareType
149     {
150         HARDWARE_TYPE_DEVICE,           //!< 実機
151         HARDWARE_TYPE_BOARD,            //!< TSボード
152         HARDWARE_TYPE_DEBUGGER          //!< デバッガ
153     };
154 
155     /*!
156         @brief  電源アダプタの状態を取得します。
157 
158         @return 電源アダプタの状態を返します。
159     */
160     AdapterState    GetAdapterState();
161 
162     /*!
163         @brief  バッテリの残量をレベルで取得します。
164 
165         @return バッテリ残量のレベルを返します。
166     */
167     BatteryLevel    GetBatteryLevel();
168 
169     /*!
170         @brief  バッテリの充電状態を取得します。
171 
172         @return バッテリの充電状態を返します。
173     */
174     BatteryChargeState GetBatteryChargeState();
175 
176     /*!
177         @}
178     */
179 } // end of namespace CTR
180 } // end of namespace ptm
181 } // end of namespace nn
182 
183 
184 #endif  // ifndef NN_PTM_CTR_PTM_API_H_
185