Merge branch 'devel/tizen' into tizen
[platform/core/context/context-provider.git] / src / battery-stats / BatteryUsage.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "BatteryUsage.h"
18
19 #define SECONDS_IN_A_DAY 86400
20
21 using namespace ctx;
22
23 BatteryUsageProvider::BatteryUsageProvider() :
24         BatteryStatsProvider(SUBJ_BATTERY_USAGE)
25 {
26 }
27
28 BatteryUsageProvider::~BatteryUsageProvider()
29 {
30 }
31
32 int BatteryUsageProvider::read(Json option, Json *requestResult)
33 {
34         int startTime;
35         int endTime;
36         int timeSpan = DEFAULT_TIME_SPAN;
37         int timeSpanPoint;
38
39         option.get(NULL, KEY_TIME_SPAN, &timeSpan);
40         timeSpanPoint = CURRENT_TIME - timeSpan * SECONDS_IN_A_DAY;
41
42         if (!option.get(NULL, KEY_START_TIME, &startTime)) {
43                 startTime = timeSpanPoint;
44         }
45
46         if (!option.get(NULL, KEY_END_TIME, &endTime)) {
47                 endTime = CURRENT_TIME;
48         }
49
50         int resultSize;
51         bool hasLimit = option.get(NULL, KEY_RESULT_SIZE, &resultSize);
52
53         BatteryStatsQuerier *querier = getQuerier(option);
54         IF_FAIL_RETURN(querier, ERR_OPERATION_FAILED);
55
56         int error;
57         if (hasLimit) {
58                 error = querier->query((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime, resultSize);
59         } else {
60                 error = querier->query((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime);
61         }
62         IF_FAIL_RETURN_TAG(error == ERR_NONE, ERR_OPERATION_FAILED, _E, "Failed to get app battery usage");
63
64         return ERR_NONE;
65 }