2 * Copyright (c) 2009-2015 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.
23 #include <sys/ioctl.h>
25 #include <sys/types.h>
34 #include <Elementary.h>
37 #include <system_settings.h>
41 #include "animation.h"
49 extern int optind, opterr, optopt;
57 //#define SOUND_PROFILE
59 #include <mm_sound_private.h>
62 static void print_usages(char *argv0)
64 printf("Usage) %s {--start|--stop}\n"
69 " # %s --offmsg YOUR_MESSAGE\n", argv0, argv0, argv0, argv0,
75 /* Sound is not supported Since Tizen 4.0 */
76 static int get_wav_file(int state, char *wavpath)
79 if (state == TYPE_ON) {
80 snprintf(wavpath, FILE_PATH_MAX-1, "%s", DEFAULT_POWERON_WAV);
81 _D("Wav file: %s", wavpath);
89 static int xready_cb(keynode_t * node, void *user_data)
94 int type = TYPE_UNKNOWN;
95 struct args *args = user_data;
96 static struct option long_options[] = {
97 {"start", no_argument, 0, 's' },
98 {"stop", no_argument, 0, 'p' },
99 {"off", no_argument, 0, 'o' },
100 {"offmsg", required_argument, 0, 'm' },
101 {"clear", no_argument, 0, 'c' },
104 static int invoked_flag = 0;
107 printf("xready_cb\n");
109 if (invoked_flag == 1) {
110 _E("Already launched");
111 printf("Error Already launched\n");
121 for (i = 0; i < argc; i++) {
122 _D("argc %d [%s]", i, argv[i]);
123 printf("argc %d [%s]\n", i, argv[i]);
125 while ((c = getopt_long(argc, argv, "spom:c", long_options, NULL)) >= 0) {
135 type = TYPE_OFF_NOEXIT;
138 if (args->msg) continue;
139 type = TYPE_OFF_WITH_MSG;
140 args->msg = strdup(optarg);
148 _D("[Boot-ani] unknown arg [%s]", optarg);
149 printf("[Boot-anim] unknown arg [%s]\n", optarg);
155 /* Sound is not supported Since Tizen 4.0 */
156 /* check sound profile */
158 int soundon = 1; /* default sound on */
159 if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &soundon) < 0) {
160 _D("VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ==> FAIL!!");
161 printf("VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ==> FAIL!!\n");
164 _D("Sound status: %d", soundon);
165 printf("Sound status: %d\n", soundon);
168 if (init_animation(type, args->msg) != EXIT_SUCCESS) {
169 _D("Exit boot-animation");
170 printf("Exit boot-animation\n");
177 printf("Sound on!!\n");
178 if (!get_wav_file(type, wav_path)) {
179 _D("File path: %s", wav_path);
180 printf("File path: %s\n", wav_path);
181 mm_sound_boot_ready(3);
182 mm_sound_boot_play_sound(wav_path);
192 static void _boot_ani_ui_set_scale(void)
194 double root_height = 0.0;
195 double root_width = 0.0;
196 char buf[128] = { 0, };
200 disp = XOpenDisplay(NULL);
204 screen_num = DefaultScreen(disp);
206 root_height = DisplayHeight(disp, screen_num);
207 root_width = DisplayWidth(disp, screen_num);
211 snprintf(buf, sizeof(buf), "%lf", root_height / BA_DEFAULT_WINDOW_H);
212 //snprintf(buf, sizeof(buf), "%lf", root_width / BA_DEFAULT_WINDOW_W);
213 _D("Boot animation scale : [%s]", buf);
215 setenv("ELM_SCALE", buf, 1);
216 setenv("SCALE_FACTOR", buf, 1);
221 int main(int argc, char *argv[])
225 setenv("HOME", "/home/root", 1);
228 print_usages(argv[0]);
237 _boot_ani_ui_set_scale();
241 fd = open("/tmp/myfile.txt", O_CREAT|O_RDWR, S_IRWXU|S_IRWXO);
242 _D("result of open: %d", fd);
243 printf("[%s/%s/%d] fd == %d\n", __FILE__, __func__, __LINE__, fd);
245 elm_init(argc, argv);
247 if (vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 0) != 0) {
248 _D("Failed to set finished value to 0\n");
249 printf("[%s/%s/%d] Failed to set finished value to 0\n", __FILE__, __func__, __LINE__);
251 if (xready_cb(NULL, &args) != EXIT_SUCCESS) {
252 vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 1);