2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 #include "sst_feature.h"
19 #include <system_info.h>
21 #include "sst_interface.h"
23 #define SST_FEATURE_ACCESSIBILITY_GRAYSCALE "tizen.org/feature/accessibility.grayscale"
24 #define SST_FEATURE_ACCESSIBILITY_NEGATIVE "tizen.org/feature/accessibility.negative"
25 #define SST_FEATURE_FONT "tizen.org/feature/systemsetting.font"
26 #define SST_FEATURE_HOME_SCREEN "tizen.org/feature/systemsetting.home_screen"
27 #define SST_FEATURE_INCOMING_CALL "tizen.org/feature/systemsetting.incoming_call"
28 #define SST_FEATURE_INPUT_ROTATING_BEZEL "tizen.org/feature/input.rotating_bezel"
29 #define SST_FEATURE_LOCK_SCREEN "tizen.org/feature/systemsetting.lock_screen"
30 #define SST_FEATURE_NOTIFICATION_EMAIL "tizen.org/feature/systemsetting.notification_email"
31 #define SST_FEATURE_PROFILE "tizen.org/feature/profile"
32 #define SST_FEATURE_TELEPHONY "tizen.org/feature/network.telephony"
33 #define SST_FEATURE_WIFI "tizen.org/feature/network.wifi"
34 #define SST_FEATURE_ETHERNET "tizen.org/feature/network.ethernet"
36 static int _check_feature(const char *path)
38 bool feature_data = false;
39 int ret = system_info_get_platform_bool(path, &feature_data);
40 if (ret != SYSTEM_INFO_ERROR_NONE) {
41 ERR("system_info_get_platform_bool(%s) Fail(%d)", path, ret);
42 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
46 return SYSTEM_SETTINGS_ERROR_NONE;
48 ERR("Not Support Feature(%s)", path);
49 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
53 int sst_feature_check_incoming_call(void *value)
55 static bool first_query = true;
56 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
58 if (first_query == true) {
59 const char *feature = SST_FEATURE_INCOMING_CALL;
60 ret = _check_feature(feature);
61 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
62 ERR("_check_feature(%s) Fail(%d)", feature, ret);
63 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
71 int sst_feature_check_home_screen(void *value)
73 static bool first_query = true;
74 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
76 if (first_query == true) {
77 const char *feature = SST_FEATURE_HOME_SCREEN;
78 ret = _check_feature(feature);
79 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
80 ERR("_check_feature(%s) Fail(%d)", feature, ret);
81 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
89 int sst_feature_check_lock_screen(void *value)
91 static bool first_query = true;
92 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
94 if (first_query == true) {
95 const char *feature = SST_FEATURE_LOCK_SCREEN;
96 ret = _check_feature(feature);
97 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
98 ERR("_check_feature(%s) Fail(%d)", feature, ret);
99 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
107 int sst_feature_check_notification_email(void *value)
109 static bool first_query = true;
110 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
112 if (first_query == true) {
113 const char *feature = SST_FEATURE_NOTIFICATION_EMAIL;
114 ret = _check_feature(feature);
115 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
116 ERR("_check_feature(%s) Fail(%d)", feature, ret);
117 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
125 int sst_feature_check_wifi(void *value)
127 static bool first_query = true;
128 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
130 if (first_query == true) {
131 const char *feature = SST_FEATURE_WIFI;
132 ret = _check_feature(feature);
133 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
134 ERR("_check_feature(%s) Fail(%d)", feature, ret);
135 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
143 int sst_feature_check_telephony(void *value)
145 static bool first_query = true;
146 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
148 if (first_query == true) {
149 const char *feature = SST_FEATURE_TELEPHONY;
150 ret = _check_feature(feature);
151 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
152 ERR("_check_feature(%s) Fail(%d)", feature, ret);
153 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
161 int sst_feature_check_font(void *value)
163 static bool first_query = true;
164 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
166 if (first_query == true) {
167 const char *feature = SST_FEATURE_FONT;
168 ret = _check_feature(feature);
169 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
170 ERR("_check_feature(%s) Fail(%d)", feature, ret);
171 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
179 int sst_feature_check_accessibility_grayscale(void *value)
181 static bool first_query = true;
182 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
184 if (first_query == true) {
185 const char *feature = SST_FEATURE_ACCESSIBILITY_GRAYSCALE;
186 ret = _check_feature(feature);
187 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
188 ERR("_check_feature(%s) Fail(%d)", feature, ret);
189 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
197 int sst_feature_check_accessibility_negative(void *value)
199 static bool first_query = true;
200 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
202 if (first_query == true) {
203 const char *feature = SST_FEATURE_ACCESSIBILITY_NEGATIVE;
204 ret = _check_feature(feature);
205 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == ret) {
206 ERR("_check_feature(%s) Fail(%d)", feature, ret);
207 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
215 int sst_feature_check_rotary(void *value)
217 static bool first_query = true;
218 static int result = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
220 if (first_query == true) {
221 char *profile = NULL;
222 const char *feature = SST_FEATURE_PROFILE;
223 int ret = system_info_get_platform_string(feature, &profile);
224 if (ret != SYSTEM_INFO_ERROR_NONE) {
225 ERR("system_info_get_platform_string(%s) Fail(%d)", feature, ret);
227 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
230 if (profile && SST_EQUAL == strcmp(profile, "wearable")) {
231 int can_rotary = _check_feature(SST_FEATURE_INPUT_ROTATING_BEZEL);
232 if (can_rotary == SYSTEM_SETTINGS_ERROR_IO_ERROR) {
233 ERR("system_info_get_platform_string(%s) Fail(%d)", feature, ret);
235 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
246 int sst_feature_check_automatic_time_update(void *value)
248 static bool first_query = true;
249 static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
250 const char *feature[] = {
251 SST_FEATURE_TELEPHONY,
255 int cnt = sizeof(feature) / sizeof(char*);
257 if (first_query == true) {
258 for (int i = 0 ; i < cnt ; i++) {
259 int feature_result = _check_feature(feature[i]);
260 if (SYSTEM_SETTINGS_ERROR_NONE == feature_result) {
261 ret = feature_result;
264 if (SYSTEM_SETTINGS_ERROR_IO_ERROR == feature_result) {
265 ERR("_check_feature(%s) Fail(%d)", feature[i], ret);
266 ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;