4 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations uynder the License.
22 #include <device/led-internal.h>
24 #define METHOD_LED_PLAYCUSTOM "playcustom"
25 #define METHOD_LED_STOPCUSTOM "stopcustom"
26 //#define METHOD_LED_GETBRIGHTNESS_FORCAMERA "GetBrightnessForCamera"
27 #define METHOD_LED_GETBRIGHTNESS "GetBrightness"
28 #define METHOD_LED_GETMAXBRIGHTNESS "GetMaxBrightness"
29 #define METHOD_LED_SETBRIGHTNESS "SetBrightness"
30 #define METHOD_MULTI_LED_GETNUMBER "GetNumOfLeds"
31 #define METHOD_MULTI_LED_CONTROL "MultiLedControl"
34 #define GREEN 0x00ff00
36 #define DEFAULT_FLAG (1 << 0)
38 static unsigned int color[] = {BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE,BLUE};
40 static bool get_led_method(const char *method)
46 ret_dbus = dbus_handle_method_sync_with_reply_var(DEVICED_BUS_NAME,
48 DEVICED_INTERFACE_LED,
51 _E("fail (%s): no reply", method);
55 if (!g_variant_get_safe(msg, "(i)", &val))
56 _E("fail (%s): no message", method);
58 _I("success (%s): %d", method, val);
66 static bool set_led_method(const char *method, GVariant *param)
72 ret_dbus = dbus_handle_method_sync_with_reply_var(DEVICED_BUS_NAME,
74 DEVICED_INTERFACE_LED,
77 _E("fail (%s): no reply", method);
81 if (!g_variant_get_safe(msg, "(i)", &val))
82 _E("fail (%s): no message", method);
84 if ((val == -ENOTSUP) || (val == -ENOSYS)) {
85 _I("Not supported feature! (%s): %d", method, val);
88 _E("fail (%s): returned fail (%d)", method, val);
90 _I("success (%s): %d", method, val);
99 static bool get_led_maxbrightness(void)
101 return get_led_method(METHOD_LED_GETMAXBRIGHTNESS);
104 static bool get_led_brightness(void)
106 return get_led_method(METHOD_LED_GETBRIGHTNESS);
109 static bool set_led_brightness(int brightness, int enabled)
111 return set_led_method(METHOD_LED_SETBRIGHTNESS, g_variant_new("(ii)", brightness, enabled));
114 static bool set_led_playcustom(int on, int off, unsigned int color, unsigned int flags)
116 return set_led_method(METHOD_LED_PLAYCUSTOM, g_variant_new("(iiuu)", on, off, color, flags));
119 static bool set_led_stopcustom()
121 return set_led_method(METHOD_LED_STOPCUSTOM, NULL);
124 static bool get_multi_led_number(void)
129 ret = device_multi_led_get_number(&number_of_led);
131 return capi_result(METHOD_MULTI_LED_GETNUMBER, ret);
134 static bool set_multi_led_control(unsigned int color[])
138 ret = device_multi_led_control(color);
140 return capi_result(METHOD_MULTI_LED_CONTROL, ret);
143 void led_test_all(int *success, int *fail)
148 (get_led_maxbrightness()) ? s++ : f++;
149 (set_led_brightness(90, 1)) ? s++ : f++;
150 (set_led_brightness(0, 1)) ? s++ : f++;
151 (get_led_brightness()) ? s++ : f++;
152 (set_led_playcustom(1, 0, RED, DEFAULT_FLAG)) ? s++ : f++;
153 (set_led_stopcustom()) ? s++ : f++;
154 (get_multi_led_number()) ? s++ : f++;
155 (set_multi_led_control(color)) ? s++ : f++;
157 if (NULL != success) *success = s;
158 if (NULL != fail) *fail = f;
161 static void led_init(void *data)
168 led_test_all(&success, &fail);
170 _I("Total: %d, Success: %d, Fail: %d", success+fail, success, fail);
173 static void led_exit(void *data)
178 static int led_unit(int argc, char **argv)
184 led_test_all(&success, &fail);
185 _I("Total: %d, Success: %d, Fail: %d", success+fail, success, fail);
186 } else if (0 == strcasecmp(argv[3], METHOD_LED_GETMAXBRIGHTNESS)) {
187 get_led_maxbrightness();
188 } else if (0 == strcasecmp(argv[3], METHOD_LED_GETBRIGHTNESS)) {
189 get_led_brightness();
190 } else if (0 == strcasecmp(argv[3], METHOD_LED_SETBRIGHTNESS)) {
191 set_led_brightness(atoi(argv[4]), atoi(argv[5]));
192 } else if (0 == strcasecmp(argv[3], METHOD_LED_PLAYCUSTOM)) {
193 set_led_playcustom(atoi(argv[4]), atoi(argv[5]), strtoul(argv[6], NULL, 16), DEFAULT_FLAG);
194 } else if (0 == strcasecmp(argv[3], METHOD_MULTI_LED_GETNUMBER)) {
195 get_multi_led_number();
196 } else if (0 == strcasecmp(argv[3], METHOD_MULTI_LED_CONTROL)) {
197 set_multi_led_control(color);
198 } else if (0 == strcasecmp(argv[3], METHOD_LED_STOPCUSTOM)) {
199 set_led_stopcustom();
201 _E("Unknown test case!!!");
207 static const struct test_ops led_test_ops = {
208 .priority = TEST_PRIORITY_NORMAL,
215 TEST_OPS_REGISTER(&led_test_ops)