Updated package changelog. accepted/2.0alpha-wayland/20130520.093309 submit/2.0alpha-wayland/20130516.062018
authorNakamura Hayato <hayato.nakamura@mail.toyota-td.jp>
Wed, 15 May 2013 10:26:04 +0000 (19:26 +0900)
committerNakamura Hayato <hayato.nakamura@mail.toyota-td.jp>
Wed, 15 May 2013 10:26:04 +0000 (19:26 +0900)
Change-Id: Id40d68bc7f75300607d4478cb9542bea09195907
Signed-off-by: Nakamura Hayato <hayato.nakamura@mail.toyota-td.jp>
28 files changed:
apps_controller/ico_syc_apc_control.c
apps_controller/ico_syc_apc_regulation.c
data/share/applications/org.tizen.ico.homescreen.desktop
data/share/applications/org.tizen.ico.onscreen.desktop
data/share/applications/org.tizen.ico.statusbar.desktop
ico-app-framework/ico_apf_resource_control.c
ico-app-framework/ico_uxf_conf_app.c
ico-app-framework/ico_uxf_conf_sys.c
ico-app-framework/ico_uxf_init.c
ico-app-framework/ico_uxf_launcher.c
ico-app-framework/ico_uxf_window.c
include/ico_syc_apc.h
include/ico_syc_def.h [new file with mode: 0644]
include/ico_uxf_conf.h
include/ico_uxf_conf_def.h
include/ico_uxf_def.h
include/ico_uxf_proto.h
include/ico_uxf_typedef.h
install-appcore.sh
packaging/ico-uxf-HomeScreen.changes
packaging/ico-uxf-HomeScreen.spec
res/config/app_attr.conf [new file with mode: 0644]
res/config/system.conf
src/home_screen_lib.c
src/home_screen_main.c
src/on_screen.c
start_homescreen_appcore
test/ico_set_vehicleinfo.c

index 8315715..0153e69 100644 (file)
@@ -280,7 +280,8 @@ resource_reqcb(ico_apf_resource_notify_info_t* info, void *user_data)
     }
     if ((info->state >= ICO_APF_SOUND_COMMAND_MIN) &&
         ((confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_ALMIGHTY) ||
-         (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM)))    {
+         (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM) ||
+         (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM_AUDIO)))  {
         /* System Program(ex. HomeScreen) no need resource control  */
         apfw_trace("resource_reqcb: Leave(appid[%s] is system program)",
                    info->appid);
@@ -2502,7 +2503,8 @@ app_display_hook(const char *appid, const int surface, const int object)
         return;
     }
     if ((confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_ALMIGHTY) ||
-        (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM))  {
+        (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM) ||
+        (confsys->kind[appconf->kindId].priv == ICO_UXF_PRIVILEGE_SYSTEM_VISIBLE))  {
         /* System Program(ex. HomeScreen) no need resource control  */
         apfw_trace("app_display_hook: Leave(appid[%s] is system program)", appid);
         return;
index 4084ce2..2b058c8 100644 (file)
@@ -54,8 +54,8 @@ static const struct _vehicle_info_property {
       "/org/automotive/runningstatus/vehicleSpeed", "org.automotive.vehicleSpeed" },
     { ICO_SYC_VEHICLEINFO_SHIFT_POSITION, "ShiftPosition",
       "/org/automotive/runningstatus/transmission", "org.automotive.transmission" },
-    { ICO_SYC_VEHICLEINFO_BLINKER, "Blinker",
-      "\0", "\0" },
+    { ICO_SYC_VEHICLEINFO_TURN_SIGNAL, "TurnSignal",
+      "/org/automotive/runningstatus/turnSignal", "org.automotive.turnSignal" },
     { 0, "\0", "\0", "\0" }
 };
 
@@ -206,11 +206,11 @@ get_vehicle_info(void)
 
         if (dbus_message_get_type(dbus_message) == DBUS_MESSAGE_TYPE_ERROR) {
             dbus_message_unref(dbus_message);
-            dbus_pending_call_cancel(vehicle_data[idx].pending);
+            dbus_pending_call_unref(vehicle_data[idx].pending);
             vehicle_data[idx].pending = NULL;
             vehicle_data[idx].errcount ++;
             if (vehicle_data[idx].errcount <= 5)    {
-                apfw_warn("get_vehicle_info: (%s) reply error", vehicle_info[idx].property);
+                apfw_trace("get_vehicle_info: (%s) reply error", vehicle_info[idx].property);
             }
             continue;
         }
@@ -256,7 +256,7 @@ get_vehicle_info(void)
         }
         /* free message and pending     */
         dbus_message_unref(dbus_message);
-        dbus_pending_call_cancel(vehicle_data[idx].pending);
+        dbus_pending_call_unref(vehicle_data[idx].pending);
         vehicle_data[idx].pending = NULL;
     };
     return ICO_SYC_EOK;
@@ -293,7 +293,7 @@ rule_engine_wake(void *user_data)
         else if (vehicle_data[idx].key == ICO_SYC_VEHICLEINFO_SHIFT_POSITION) {
             ShiftPosition = (int)vehicle_data[idx].val;
         }
-        else if (vehicle_data[idx].key == ICO_SYC_VEHICLEINFO_BLINKER) {
+        else if (vehicle_data[idx].key == ICO_SYC_VEHICLEINFO_TURN_SIGNAL) {
             Blinker = (int)vehicle_data[idx].val;
         }
     }
index 04388b3..2c79d9c 100644 (file)
@@ -2,7 +2,7 @@ Name=HomeScreen
 Type=menu
 Exec=/opt/apps/org.tizen.ico.homescreen/bin/HomeScreen
 Icon=org.tizen.ico.homescreen.png
-Nodisplay=True
+NoDisplay=false
 Version=0.1.0
 Comment=home screen app
 Categories=Menu;HomeScreen;run=Center;noauto
index b1995a9..30700d6 100644 (file)
@@ -2,7 +2,7 @@ Name=OnScreen
 Type=menu
 Exec=/opt/apps/org.tizen.ico.onscreen/bin/OnScreen
 Icon=org.tizen.ico.onscreen.png
-Nodisplay=True
+NoDisplay=false
 Version=0.1.0
 Comment=onscreen app
 Categories=Menu;HomeScreen;run=Center;auto
index 53bd3ab..b137456 100644 (file)
@@ -2,7 +2,7 @@ Name=StatusBar
 Type=menu
 Exec=/opt/apps/org.tizen.ico.statusbar/bin/StatusBar
 Icon=org.tizen.ico.statusbar.png
-Nodisplay=True
+NoDisplay=false
 Version=0.1.0
 Comment=status bar app
 Categories=Menu;HomeScreen;run=Center;auto
index e9d3b06..6b84464 100644 (file)
@@ -239,7 +239,7 @@ ico_apf_resource_init_client(const char *uri)
 {
     apfw_trace("ico_apf_resource_init_client: Enter(%s)", uri ? uri : "NULL");
 
-    if (resmgr_initialized != 0) {
+    if (resmgr_initialized & 1) {
         apfw_warn("ico_apf_resource_init_client: Leave(already intialiezed)");
         return ICO_APF_RESOURCE_E_NONE;
     }
@@ -275,7 +275,7 @@ ico_apf_resource_init_client(const char *uri)
     }
 
     /* chanage resmgr_client_intialized flag */
-    resmgr_initialized = 1;
+    resmgr_initialized |= 1;
 
     apfw_trace("ico_apf_resource_init_client: Leave(OK)");
     return ICO_APF_RESOURCE_E_NONE;
@@ -307,7 +307,7 @@ ico_apf_resource_term_client(void)
     }
 
     /* chanage resmgr_client_intialized flag */
-    resmgr_initialized = 0;
+    resmgr_initialized &= ~1;
 
     apfw_trace("ico_apf_resource_term_client: Leave");
 }
@@ -328,7 +328,7 @@ ico_apf_resource_init_server(const char *uri)
 {
     apfw_trace("ico_apf_resource_init_server: Enter(%s)", uri ? uri : "NULL");
 
-    if (resmgr_initialized != 0) {
+    if (resmgr_initialized & 2) {
         apfw_warn("ico_apf_resource_init_server: Leave(already intialiezed)");
         return ICO_APF_RESOURCE_E_NONE;
     }
@@ -340,13 +340,6 @@ ico_apf_resource_init_server(const char *uri)
         return ICO_APF_RESOURCE_E_INIT_COM_FAILD;
     }
 
-    /* initialize connection for Multi Input Manager    */
-    soundmgr_handle = ico_apf_com_init_client(NULL, ICO_APF_COM_TYPE_SOUNDMGR);
-    if (! soundmgr_handle)  {
-        apfw_error("ico_apf_resource_init_server: Leave(can not connect MSM)");
-        return ICO_APF_RESOURCE_E_INIT_COM_FAILD;
-    }
-
     /* get system configuration                 */
     ifsysconf = (Ico_Uxf_Sys_Config *)ico_uxf_ifGetSysConfig();
     if (ifsysconf)  {
@@ -369,8 +362,18 @@ ico_apf_resource_init_server(const char *uri)
         return ICO_APF_RESOURCE_E_INIT_COM_FAILD;
     }
 
+    /* chanage resmgr_server_intialized flag    */
+    resmgr_initialized = 2;
+
+    /* initialize connection for Multi Sound Manager    */
+    soundmgr_handle = ico_apf_com_init_client(NULL, ICO_APF_COM_TYPE_SOUNDMGR);
+    if (! soundmgr_handle)  {
+        apfw_error("ico_apf_resource_init_server: Leave(can not connect MSM)");
+        return ICO_APF_RESOURCE_E_INIT_COM_FAILD;
+    }
+
     /* chanage resmgr_client_intialized flag */
-    resmgr_initialized = 1;
+    resmgr_initialized |= 1;
 
     apfw_trace("ico_apf_resource_init_server: Leave(OK)");
     return ICO_APF_RESOURCE_E_NONE;
index 73839c0..e35d776 100644 (file)
@@ -34,7 +34,7 @@ static void Ico_Uxf_conf_remakeAppHash(void);
 
 static Ico_Uxf_App_Config   *_ico_app_config = NULL;
 static Ico_Uxf_Sys_Config   *sys_config = NULL;
-static GKeyFile             *skeyfile = NULL;
+static GKeyFile             *sappfile = NULL;
 
 
 /*--------------------------------------------------------------------------*/
@@ -82,6 +82,7 @@ infoAilpkg(const ail_appinfo_h appinfo, void *data)
     char    *app_category;
     char    add_category[256];
     int     i;
+    bool    bval;
     struct stat buff;
     Ico_Uxf_conf_application *apptbl;
 
@@ -114,18 +115,19 @@ infoAilpkg(const ail_appinfo_h appinfo, void *data)
     if (strcmp(name, APP_CONF_AIL_NULL_STR) == 0) {
         name = NULL;
     }
+
     /* get default category of this application */
     add_category[0] = 0;
     error = NULL;
-    app_category = g_key_file_get_string(skeyfile, "app-category", package, &error);
+    app_category = g_key_file_get_string(sappfile, "app-attributes", package, &error);
     if (error != NULL)  {
         g_clear_error(&error);
         error = NULL;
-        app_category = g_key_file_get_string(skeyfile, "app-category", name, &error);
+        app_category = g_key_file_get_string(sappfile, "app-attributes", name, &error);
     }
     if (error != NULL)  {
         g_clear_error(&error);
-        apfw_trace("infoAilpkg: %s(%s) dose not has app-category", package, name);
+        apfw_trace("infoAilpkg: %s(%s) dose not has app-attributes", package, name);
     }
     else    {
         apfw_trace("infoAilpkg: %s(%s) has app-category=%s", package, name, app_category);
@@ -166,10 +168,15 @@ infoAilpkg(const ail_appinfo_h appinfo, void *data)
         exec = NULL;
     }
 
-    if ((package != NULL) && (icon != NULL) && (*package != 0) && (*icon != 0)) {
+    if ((package != NULL) && (*package != 0))   {
         apptbl = &_ico_app_config->application[_ico_app_config->applicationNum];
         apptbl->appid = strdup(package);
-        apptbl->icon_key_name = strdup(icon);
+        if (icon)   {
+            apptbl->icon_key_name = strdup(icon);
+        }
+        else    {
+            apptbl->icon_key_name = strdup("\0");
+        }
         if ((name != NULL) && (*name != 0)) {
             apptbl->name = strdup(name);
         }
@@ -182,6 +189,17 @@ infoAilpkg(const ail_appinfo_h appinfo, void *data)
         apptbl->kindId = sys_config->misc.default_kindId;
         apptbl->categoryId = sys_config->misc.default_categoryId;
 
+        /* get NoDisplay    */
+        if ((icon != NULL) && (*icon != 0)) {
+            bval = false;
+            ail_appinfo_get_bool(appinfo, AIL_PROP_NODISPLAY_BOOL, &bval);
+            apptbl->noicon = (int)bval;
+        }
+        else    {
+            apfw_trace("infoAilpkg: %s(%s) has no icon", package, name);
+            apptbl->noicon = 1;
+        }
+
         /* analize categorys for extended attributes    */
         if (category)   {
             int     i, j, k, m, n;
@@ -569,17 +587,19 @@ infoAilpkg(const ail_appinfo_h appinfo, void *data)
             apptbl->sound[0].soundId = sys_config->misc.default_soundId;
             apptbl->sound[0].zoneId = sys_config->misc.default_soundzoneId;
         }
-        apfw_trace("Ail.%d: appid=%s name=%s icon=%s exec=%s type=%s",
+        apfw_trace("Ail.%d: appid=%s name=%s exec=%s type=%s",
                    _ico_app_config->applicationNum, apptbl->appid, apptbl->name,
-                   icon, apptbl->exec, apptbl->type);
+                   apptbl->exec, apptbl->type);
         apfw_trace("Ail.%d: categ=%d kind=%d disp=%d layer=%d zone=%d "
-                   "sound=%d zone=%d auto=%d",
+                   "sound=%d zone=%d auto=%d noicon=%d",
                    _ico_app_config->applicationNum, apptbl->categoryId, apptbl->kindId,
                    apptbl->display[0].displayId, apptbl->display[0].layerId,
                    apptbl->display[0].zoneId, apptbl->sound[0].soundId,
-                   apptbl->sound[0].zoneId, apptbl->autostart);
+                   apptbl->sound[0].zoneId, apptbl->autostart, apptbl->noicon);
         _ico_app_config->applicationNum++;
     }
+    else    {
+    }
 
     if (_ico_app_config->applicationNum > num)
         return AIL_CB_RET_CANCEL;
@@ -612,26 +632,26 @@ readAilApplist(void)
     }
 
     /* read system configuration file for application default category  */
-    skeyfile = g_key_file_new();
+    sappfile = g_key_file_new();
 
     GString* filepath = g_string_new("xx");
-    g_string_printf(filepath, "%s/%s", sys_config->misc.confdir, ICO_UXF_CONFIG_SYSTEM);
+    g_string_printf(filepath, "%s/%s", sys_config->misc.confdir, ICO_UXF_CONFIG_APPATTR);
 
-    if (! g_key_file_load_from_file(skeyfile, filepath->str,
+    if (! g_key_file_load_from_file(sappfile, filepath->str,
                                     G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS,
                                     &error)) {
         apfw_error("readAilApplist: %s %s", (char *)filepath->str, error->message);
-        g_key_file_free(skeyfile);
-        skeyfile = NULL;
+        g_key_file_free(sappfile);
+        sappfile = NULL;
     }
     g_string_free(filepath, TRUE);
 
     /* count packages */
     ret = ail_filter_count_appinfo(NULL, &num);
     if (ret != AIL_ERROR_OK) {
-        if( skeyfile)   {
-            g_key_file_free(skeyfile);
-            skeyfile = NULL;
+        if( sappfile)   {
+            g_key_file_free(sappfile);
+            sappfile = NULL;
         }
         return NULL;
     }
@@ -665,8 +685,8 @@ readAilApplist(void)
     /* create Hash Table                    */
     Ico_Uxf_conf_remakeAppHash();
 
-    if( skeyfile)   {
-        g_key_file_free(skeyfile);
+    if( sappfile)   {
+        g_key_file_free(sappfile);
     }
 
     return _ico_app_config;
index 517cde1..b854ca8 100644 (file)
@@ -376,6 +376,12 @@ reloadSysConfig(void)
         else if (strcasecmp(strp, "system") == 0)   {
             _ico_sys_config->kind[i].priv = ICO_UXF_PRIVILEGE_SYSTEM;
         }
+        else if (strcasecmp(strp, "system.audio") == 0)   {
+            _ico_sys_config->kind[i].priv = ICO_UXF_PRIVILEGE_SYSTEM_AUDIO;
+        }
+        else if (strcasecmp(strp, "system.visible") == 0)   {
+            _ico_sys_config->kind[i].priv = ICO_UXF_PRIVILEGE_SYSTEM_VISIBLE;
+        }
         else if (strcasecmp(strp, "maker") == 0)    {
             _ico_sys_config->kind[i].priv = ICO_UXF_PRIVILEGE_MAKER;
         }
index 053b18a..a394d94 100644 (file)
@@ -73,7 +73,7 @@ static void ico_uxf_input_inputcb(void *data, struct ico_exinput *ico_exinput,
                                   int32_t code, int32_t state);
 
 /* AppCore(AUL) callback function   */
-static int ico_uxf_aul_deadcb(int pid, void *data);
+static int ico_uxf_aul_aulcb(int pid, void *data);
 
 /* Variables & Tables               */
 Ico_Uxf_Api_Mng         gIco_Uxf_Api_Mng = { 0 };
@@ -308,8 +308,9 @@ ico_uxf_init(const char *name)
     ico_window_mgr_set_eventcb(gIco_Uxf_Api_Mng.Wayland_WindowMgr, 1);
     wl_display_flush(gIco_Uxf_Api_Mng.Wayland_Display);
 
-    /* application die callback from AppCore(aul)   */
-    aul_listen_app_dead_signal(ico_uxf_aul_deadcb, NULL);
+    /* application launch/dead callback from AppCore(aul)   */
+    aul_listen_app_launch_signal(ico_uxf_aul_aulcb, (void *)0);
+    aul_listen_app_dead_signal(ico_uxf_aul_aulcb, (void *)1);
 
     gIco_Uxf_Api_Mng.Initialized = 1;
 
@@ -1365,26 +1366,33 @@ ico_uxf_input_inputcb(void *data, struct ico_exinput *ico_exinput, uint32_t time
 
 /*--------------------------------------------------------------------------*/
 /**
- * @brief   ico_uxf_aul_deadcb: AppCore(AUL) application dead callback(static function)
+ * @brief   ico_uxf_aul_aulcb: AppCore(AUL) application launch/dead callback(static function)
  *
- * @param[in]   pid             dead application process Id
- * @param[in]   data            user data(unused)
+ * @param[in]   pid             target application process Id
+ * @param[in]   data            user data(0=launch, 1=dead)
  * @return      result(always 0, means success)
  */
 /*--------------------------------------------------------------------------*/
 static int
-ico_uxf_aul_deadcb(int pid, void *data)
+ico_uxf_aul_aulcb(int pid, void *data)
 {
     Ico_Uxf_Mng_Process     *proc;
     int                     hash;
     Ico_Uxf_Mng_EventQue    *que;
+    int                     dead;
+    char                    appid[ICO_UXF_MAX_PROCESS_NAME+1];
+
+    dead = (int)data;
+    memset(appid, 0, sizeof(appid));
+    (void) aul_app_get_appid_bypid(pid, appid, sizeof(appid));
 
-    uifw_trace("ico_uxf_aul_deadcb: Enter(pid=%d)", pid);
+    uifw_trace("ico_uxf_aul_aulcb: Enter(pid=%d, dead=%d, appid=%s)", pid, dead, appid);
 
     for (hash = 0; hash < ICO_UXF_MISC_HASHSIZE; hash++) {
         proc = gIco_Uxf_Api_Mng.Hash_ProcessId[hash];
         while (proc)   {
             if (proc->attr.internalid == pid) break;
+            if (strcmp(proc->attr.process, appid) == 0) break;
             proc = proc->nextidhash;
         }
         if (proc) break;
@@ -1392,30 +1400,50 @@ ico_uxf_aul_deadcb(int pid, void *data)
     if (! proc) {
         /* not handle process,  */
         /* or the process is correctly terminated by ico_uxf_process_terminate */
-        uifw_trace("ico_uxf_aul_deadcb: Leave(not find)");
+        uifw_trace("ico_uxf_aul_aulcb: Leave(not find)");
         return 0;
     }
-    uifw_trace("ico_uxf_aul_deadcb: find(appid=%s)", proc->attr.process);
+    uifw_trace("ico_uxf_aul_aulcb: find(appid=%s)", proc->attr.process);
 
     ico_uxf_enter_critical();
     /* set event */
     que = ico_uxf_alloc_eventque();
-    que->detail.event = ICO_UXF_EVENT_TERMPROCESS;
     strncpy(que->detail.process.process, proc->attr.process, ICO_UXF_MAX_PROCESS_NAME);
-    que->detail.process.status = ICO_UXF_PROCSTATUS_STOP;
+    if (dead)   {
+        que->detail.event = ICO_UXF_EVENT_TERMPROCESS;
+        que->detail.process.status = ICO_UXF_PROCSTATUS_STOP;
 
-    /* delete process info */
-    proc->attr.status = ICO_UXF_PROCSTATUS_STOP;
-    proc->attr.internalid = -1;
-    proc->attr.mainwin.window = 0;
-    ico_uxf_free_procwin(proc);
+        /* delete process info */
+        proc->attr.status = ICO_UXF_PROCSTATUS_STOP;
+        proc->attr.internalid = -1;
+        proc->attr.mainwin.window = 0;
+        ico_uxf_free_procwin(proc);
+    }
+    else    {
+        que->detail.event = ICO_UXF_EVENT_EXECPROCESS;
+        que->detail.process.status = ICO_UXF_PROCSTATUS_RUN;
+
+        /* setup process info */
+        if (proc->attr.status != ICO_UXF_PROCSTATUS_RUN)    {
+            proc->attr.internalid = pid;
+            if (proc->attr.status != ICO_UXF_PROCSTATUS_INIT)   {
+                /* child process, search parent process */
+                uifw_trace("ico_uxf_aul_aulcb: fork&exec %s", proc->attr.process);
+                proc->attr.child = 1;
+            }
+            else    {
+                proc->attr.child = 0;
+            }
+            proc->attr.status = ICO_UXF_PROCSTATUS_RUN;
+        }
+    }
 
     /* notify event */
     ico_uxf_regist_eventque(que);
 
     ico_uxf_leave_critical();
 
-    uifw_trace("ico_uxf_aul_deadcb: Leave");
+    uifw_trace("ico_uxf_aul_aulcb: Leave");
     return 0;
 }
 
index 6e360dd..924a561 100644 (file)
@@ -102,6 +102,9 @@ ico_uxf_process_execute(const char *name)
 
     /* execute program                      */
     proc->attr.internalid = aul_launch_app(name ,appBundle);
+    if (appBundle != NULL) {
+        bundle_free(appBundle);
+    }
     if (proc->attr.internalid < 0)  {
         uifw_error("ico_uxf_process_execute: Leave(ENOSYS), Launch App Error(%d)",
                    proc->attr.internalid);
@@ -206,6 +209,7 @@ ico_uxf_process_attribute_get(const char *process, Ico_Uxf_ProcessAttr *attr)
  *
  * @param[in]   process     process's identity
  * @return  result
+ * @retval  2               process is child process
  * @retval  1               process is active
  * @retval  0               process is not active
  */
@@ -226,6 +230,10 @@ ico_uxf_process_is_active(const char *process)
         return 0;
     }
 
+    if (proc->attr.child)   {
+        uifw_trace("ico_uxf_process_is_active: %s is Child", process);
+        return 2;
+    }
     uifw_trace("ico_uxf_process_is_active: %s is %s",
                process, proc->attr.active ? "Active" : "Inactive");
     return proc->attr.active;
index b7268e3..3c8f356 100644 (file)
@@ -285,6 +285,7 @@ ico_uxf_window_lower(const int window)
  * @brief   ico_uxf_window_active: active window(surface)
  *
  * @param[in]   window          window Id(same as ico_window_mgr surface Id)
+ * @param[in]   target          target(pointer and/or keyboard)
  * @return      result
  * @retval      ICO_UXF_EOK     success
  * @retval      ICO_UXF_ESRCH   error(not initialized)
@@ -292,14 +293,14 @@ ico_uxf_window_lower(const int window)
  */
 /*--------------------------------------------------------------------------*/
 ICO_APF_API int
-ico_uxf_window_active(const int window)
+ico_uxf_window_active(const int window, const int target)
 {
     Ico_Uxf_Mng_Window  *winmng;
     Ico_Uxf_Mng_Process *proc;
     Ico_Uxf_Mng_Process *aproc;
     int                 hash;
 
-    uifw_trace("ico_uxf_window_active: Enter(%08x)", window);
+    uifw_trace("ico_uxf_window_active: Enter(%08x,%x)", window, target);
 
     if (gIco_Uxf_Api_Mng.Initialized <= 0) {
         uifw_warn("ico_uxf_window_active: Leave(ESRCH)");
@@ -313,7 +314,7 @@ ico_uxf_window_active(const int window)
     }
 
     uifw_trace("ico_uxf_window_active: ico_window_mgr_set_active(%08x)", window);
-    ico_window_mgr_set_active(gIco_Uxf_Api_Mng.Wayland_WindowMgr, window);
+    ico_window_mgr_set_active(gIco_Uxf_Api_Mng.Wayland_WindowMgr, window, target);
     wl_display_flush(gIco_Uxf_Api_Mng.Wayland_Display);
 
     /* reset all active window widthout target window   */
@@ -321,10 +322,15 @@ ico_uxf_window_active(const int window)
         winmng = gIco_Uxf_Api_Mng.Hash_WindowId[hash];
         while (winmng) {
             if (winmng->attr.window == window)  {
-                winmng->attr.active = 1;
+                winmng->attr.active = target;
             }
             else    {
-                winmng->attr.active = 0;
+                if (target == 0)    {
+                    winmng->attr.active = 0;
+                }
+                else    {
+                    winmng->attr.active &= ~target;
+                }
             }
             winmng = winmng->nextidhash;
         }
@@ -339,12 +345,17 @@ ico_uxf_window_active(const int window)
                 aproc = proc;
             }
             else    {
-                proc->attr.active = 0;
+                if (target == 0)    {
+                    proc->attr.active = 0;
+                }
+                else    {
+                    proc->attr.active &= ~target;
+                }
             }
             proc = proc->nextidhash;
         }
     }
-    aproc->attr.active = 1;
+    aproc->attr.active = target;
 
     uifw_trace("ico_uxf_window_active: Leave(EOK)");
     return ICO_UXF_EOK;
index becb2b1..621b6e7 100644 (file)
@@ -19,7 +19,7 @@
 #include "ico_uxf_sysdef.h"
 #include "ico_uxf_conf.h"
 #include "ico_uxf_def.h"
-#include "ico_syc_error.h"
+#include "ico_syc_def.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/include/ico_syc_def.h b/include/ico_syc_def.h
new file mode 100644 (file)
index 0000000..6a39c06
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   System Controller public header for permanent value
+ *
+ * @date    Feb-28-2013
+ */
+
+#ifndef _ICO_SYC_DEF_H_
+#define _ICO_SYC_DEF_H_
+
+#include "ico_apf_error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* common API error code        */
+#define ICO_SYC_EOK     ICO_APF_RESOURCE_E_NONE             /* OK                   */
+#define ICO_SYC_ENOENT  ICO_APF_RESOURCE_E_UNKOWN           /* No such object       */
+#define ICO_SYC_ESRCH   ICO_APF_RESOURCE_E_NOT_INITIALIZED  /* Not initialized      */
+#define ICO_SYC_EIO     ICO_APF_RESOURCE_E_COMMUNICATION    /* I/O error            */
+#define ICO_SYC_ENOMEM  ICO_APF_RESOURCE_E_NOT_IMPLEMENTED  /* Out of memory        */
+#define ICO_SYC_EINVAL  ICO_APF_RESOURCE_E_INVAL            /* Invalid argument     */
+#define ICO_SYC_ENOSYS  (-99)                               /* System error         */
+
+/* Vehicle information internal key */
+enum    _ico_syc_regulation_vehicleinfo_id  {
+    ICO_SYC_VEHICLEINFO_VEHICLE_SPEED = 1,  /* vehicle speed                        */
+    ICO_SYC_VEHICLEINFO_SHIFT_POSITION,     /* shift position                       */
+    ICO_SYC_VEHICLEINFO_TURN_SIGNAL,        /* blinker signal                       */
+
+    ICO_SYC_VEHICLEINFO_MAX                 /* maximum number of type               */
+};
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _ICO_SYC_DEF_H_ */
+
index 3f50228..b1cf0d6 100644 (file)
@@ -101,6 +101,8 @@ typedef struct _ico_uxf_conf_application {
     char *exec;
     char *type;
     int hostId;
+    char noicon;
+    char res[3];                    /* (unused)     */
     char *location;
     char *icon_key_name;
     short kindId;
index 8899921..077bcc4 100644 (file)
@@ -33,6 +33,7 @@ extern "C" {
 
 /* Configuration file names                                 */
 #define ICO_UXF_CONFIG_SYSTEM   "system.conf"
+#define ICO_UXF_CONFIG_APPATTR  "app_attr.conf"
 
 /* Directory of application manifest                        */
 #define ICO_UXF_CONFIG_APPSDIR  "apps"
index eb44f46..8c6fec1 100644 (file)
@@ -41,9 +41,10 @@ extern "C" {
 #define ICO_UXF_DISPLAYTYPE_REARRIGHT   6           /* Rear-seat display(right)     */
 
 /* Window active status                     */
-#define ICO_UXF_WINDOW_INACTIVE     0               /* not active                   */
-#define ICO_UXF_WINDOW_ACTIVE       1               /* active                       */
-#define ICO_UXF_WINDOW_SELECT       2               /* window selected by operation */
+#define ICO_UXF_WINDOW_INACTIVE         0           /* not active                   */
+#define ICO_UXF_WINDOW_POINTER_ACTIVE   1           /* pointer active               */
+#define ICO_UXF_WINDOW_KEYBOARD_ACTIVE  2           /* keyboard active              */
+#define ICO_UXF_WINDOW_SELECT           4           /* window selected by operation */
 
 /* Policy                                   */
 #define ICO_UXF_POLICY_ALWAYS           0           /* No control                   */
@@ -57,9 +58,11 @@ extern "C" {
 /* Privilege                                */
 #define ICO_UXF_PRIVILEGE_ALMIGHTY      0           /* almighty privilege           */
 #define ICO_UXF_PRIVILEGE_SYSTEM        1           /* system level                 */
-#define ICO_UXF_PRIVILEGE_MAKER         2           /* maker level                  */
-#define ICO_UXF_PRIVILEGE_CERTIFICATE   3           /* certificated                 */
-#define ICO_UXF_PRIVILEGE_NONE          4           /* no privilege                 */
+#define ICO_UXF_PRIVILEGE_SYSTEM_AUDIO  2           /* system level(audio only)     */
+#define ICO_UXF_PRIVILEGE_SYSTEM_VISIBLE 3          /* system level(visible only)   */
+#define ICO_UXF_PRIVILEGE_MAKER         4           /* maker level                  */
+#define ICO_UXF_PRIVILEGE_CERTIFICATE   5           /* certificated                 */
+#define ICO_UXF_PRIVILEGE_NONE          6           /* no privilege                 */
 
 /* Event values                             */
 #define ICO_UXF_EVENT_ALL               0xffffffff  /* Mask value of all events     */
@@ -70,10 +73,11 @@ extern "C" {
 #define ICO_UXF_EVENT_NEWWINDOW         0x00000010  /* Created new window           */
 #define ICO_UXF_EVENT_DESTORYWINDOW     0x00000020  /* Destroyed a window           */
 #define ICO_UXF_EVENT_ACTIVEWINDOW      0x00000040  /* Change window active status  */
+#define ICO_UXF_EVENT_EXECPROCESS       0x00000100  /* Application started          */
 #define ICO_UXF_EVENT_TERMPROCESS       0x00000200  /* Application stopped          */
 #define ICO_UXF_EVENT_EXINPUT           0x00200000  /* extra input event            */
 
-#define ICO_UXF_EVENT_VALIDALL          0x8020027f  /* Set of the event with a meaning*/
+#define ICO_UXF_EVENT_VALIDALL          0x8020037f  /* Set of the event with a meaning*/
 
 /* Application status                       */
 #define ICO_UXF_PROCSTATUS_STOP     0x00000000      /* Stopped                      */
index 92edb09..c676006 100644 (file)
@@ -73,7 +73,7 @@ int ico_uxf_window_raise(const int window);
                                         /* Raise window                         */
 int ico_uxf_window_lower(const int window);
                                         /* Lower window                         */
-int ico_uxf_window_active(const int window);
+int ico_uxf_window_active(const int window, const int target);
                                         /* Activate window                      */
 int ico_uxf_window_control(const char *appid, const int winidx,
                            const int control, const int onoff);
index 4d288c4..e527a77 100644 (file)
@@ -132,7 +132,7 @@ typedef struct  _Ico_Uxf_ProcessAttr    {
     Ico_Uxf_ProcessWin  *subwin;        /* Sub window of application            */
     short               status;         /* Running status                       */
     char                active;         /* Active/Inactive                      */
-    char                res;            /* (unused)                             */
+    char                child;          /* Child process                        */
 }   Ico_Uxf_ProcessAttr;
 
 /* Detail of event                          */
@@ -158,7 +158,7 @@ typedef union  _Ico_Uxf_EventDetail    {
     struct  {                           /* Application event                    */
         int             event;          /* Event number                         */
         /* Event about the operating conditions change of the application       */
-        /* TERMPROCESS                                                          */
+        /* EXECPROCESS, TERMPROCESS                                             */
         char            process[ICO_UXF_MAX_PROCESS_NAME+1];
                                         /* Application ID                       */
         int             status;         /* Running status                       */
index 1944366..4c8f895 100755 (executable)
@@ -15,6 +15,15 @@ ln -s /usr/lib/libico-app-fw.so.0.0.5 /usr/lib/libico-app-fw.so.0
 ln -s /usr/lib/libico-app-fw.so.0.0.5 /usr/lib/libico-app-fw.so
 chmod 0755 /usr/lib/libico-app-fw.so.0.0.5
 
+#test tools
+rm -fr /usr/bin/ico_send_hscommand
+rm -fr /usr/bin/ico_send_inputevent
+rm -fr /usr/bin/ico_set_vehicleinfo
+cp test/ico_send_hscommand /usr/bin
+cp test/ico_send_inputevent /usr/bin
+cp test/ico_set_vehicleinfo /usr/bin
+chmod 0755 /usr/bin/ico_send_hscommand /usr/bin/ico_send_inputevent /usr/bin/ico_set_vehicleinfo
+
 #HomeScreen
 HOMESCREEN=org.tizen.ico.homescreen
 rm -rf /opt/apps/$HOMESCREEN/var
index e3e3c7f..d40c3df 100644 (file)
@@ -1,7 +1,20 @@
-* Mon May 13 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> submit/2.0alpha-wayland/20130426.191622@343cc31
-- I64954507:Added missing init script sym link.  Disable stand-alone weston boot.  Cleanup.
-- Ifbb23f90:Do not override $HOME.  Weston init script already sets as needed.
-- I6e99ba7e:Leverage weston init script to gracefully start/stop weston.  Misc cleanup.
+* Wed May 15 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp>
+- 0.3.02 release
+- Fix for TIVI-803 - Enable new UI in wayland build
+- Fix for TIVI-826 - weston-plugin should NOT create /root/ 
+- Fix for TIVI-827 - Create symbolic link for /etc/rc.d/init.d/ico_weston to /etc/rc.d/rc3.d/.
+- Fix for TIVI-829 - [WLD] Text input box fails to switch to Edit mode(via touch screen)
+- Fix for TIVI-838 - [WLD] HomeScreen doesn't check NoDisplay parameter
+- fixed when change volume by setting application during sound reproduction,
+  the sound right stolen by settign application, and a sound stops.
+- fixed reduced some memory leaks.
+* Tue May 14 2013 Ossama Othman <ossama.othman@intel.com>
+- Store HomeScreen process in PID file, not launch_app PID.
+- Update the app database after installation and removal.
+* Mon May 06 2013 Ossama Othman <ossama.othman@intel.com>
+- Leverage weston init script to gracefully start/stop weston. Misc cleanup.
+- Do not override $HOME. Weston init script already sets as needed.
+- Added missing init script sym link. Disable stand-alone weston boot. Cleanup.
 
 * Fri Apr 26 19:15:52 UTC 2013 - tracy.graydon@intel.com
 - Setting up 2.0alpha-wayland branch (master not used for IVI) 
index fcab760..580e536 100644 (file)
@@ -136,8 +136,9 @@ ln -sf %{_sysconfdir}/rc.d/init.d/ico_weston %{buildroot}%{ico_sysvlinkdir}/S91i
 # Disable stand-alone boot of Weston by removing the link to its boot
 # script in /etc/rc.d/rc3.d.  Store it for later restoration after
 # uninstallation of this package.
-mkdir -p %{ico_packagestatedir}
-mv -f %{ico_sysvlinkdir}/S??weston %{ico_packagestatedir}
+mkdir -p %{ico_packagestatedir} > /dev/null 2>&1
+mv -f %{ico_sysvlinkdir}/S??weston %{ico_packagestatedir} > /dev/null 2>&1
+set $?=0
 
 # Update the app database.
 rm -f /opt/dbspace/.app_info.db*
@@ -145,15 +146,14 @@ ail_initdb
 
 %postun
 # Restore the link to the Weston boot script.
-mv %{ico_packagestatedir}/S??weston %{ico_sysvlinkdir}
-rmdir %{ico_packagestatedir}
-# TODO: Should we remove the rpm-state dir, too?
+mv %{ico_packagestatedir}/S??weston %{ico_sysvlinkdir} > /dev/nukk 2>&1
+rm -fr %{ico_packagestatedir}
+set $?=0
 
 # Update the app database.
 rm -f /opt/dbspace/.app_info.db*
 ail_initdb
 
-
 %files
 %defattr(-,root,root,-)
 %{PREFIX}/org.tizen.ico.homescreen
diff --git a/res/config/app_attr.conf b/res/config/app_attr.conf
new file mode 100644 (file)
index 0000000..792c3e8
--- /dev/null
@@ -0,0 +1,15 @@
+## OpenPF System Configurations
+##  /opt/apps/org.tizen.ico.homescreen/res/config/app_attr.conf
+##     May-15-2013
+
+#
+## default attributes for each application
+[app-attributes]
+# attrinutes of native applictions
+org.tizen.soft-keyboard=Menu;SysApp;dispzone=SysApp;layer=SoftKeyboard
+org.tizen.setting=Message;kind=SysApp.audio
+# attributes of web applications
+DemoMeterApp=Map
+GhostCluster=Map
+#
+
index f8e8cbb..3638e8b 100644 (file)
@@ -1,6 +1,6 @@
 ## OpenPF System Configurations
-##  /opt/etc/ico-system-controller/system/system.conf
-##     Feb-15-2013
+##  /opt/apps/org.tizen.ico.homescreen/res/config/system.conf
+##     May-15-2013
 
 ## System ECUs
 [host]
 0.layer.0=BackGround
 0.layer.1=HomeScreen
 0.layer.2=Application
-0.layer.3=Touch
-0.layer.4=OnScreen
+0.layer.3=SoftKeyboard
+0.layer.4=InterruptApp
+0.layer.5=Touch
+0.layer.6=OnScreen
 # Display Zone
 ## id=name;x;y;width;height[;overlap-zone;overlap-zone;...]
 ##   if 'id=name', size is all of display, no overlap
@@ -52,6 +54,7 @@
 0.zone.5=UpperRight;dispw/2;64;dispw/2;disph-64/2;Full;Upper
 0.zone.6=LowerLeft;0;heigh-64/2+64;dispw/2;disph-64/2;Full;Lower
 0.zone.7=LowerRight;dispw/2;heigh-64/2+64;dispw/2;disph-64/2;Full;Lower
+0.zone.8=SysApp;0;64;dispw;disph-64
 #
 ## Sound
 [sound]
@@ -146,21 +149,30 @@ soundpluginport=8088
 #
 ## Application Kind
 [kind]
-0=SysApp
+0=Almighty
 0.privilege=almighty
-0.priority=4
+0.priority=5
 1=HomeScreen
 1.privilege=system
-1.priority=3
-2=Maker
-2.privilege=maker
-2.priority=2
-3=Certificate
-3.privilege=certificate
-3.priority=1
-4=UnKnown
-4.privilege=none
-4.priority=0
+1.priority=4
+2=SysApp
+2.privilege=system
+2.priority=3
+3=SysApp.audio
+3.privilege=system.audio
+3.priority=3
+4=SysApp.visiual
+4.privilege=system.visible
+4.priority=3
+5=Maker
+5.privilege=maker
+5.priority=2
+6=Certificate
+6.privilege=certificate
+6.priority=1
+7=UnKnown
+7.privilege=none
+7.priority=0
 #
 ## Input Sw
 [input]
@@ -196,8 +208,3 @@ loglevel=128
 # log flush on log output
 logflush=yes
 
-#
-## default categories for each application
-[app-category]
-DemoMeterApp=Map
-
index 83ca887..11d932b 100644 (file)
@@ -685,6 +685,8 @@ hs_lib_realsend(hs_lib_msg_t *msg)
         uifw_warn("hs_lib_realsend: ERROR(fail to write ws)");
     }
 
+    hs_lib_free_msg(msg);
+
     uifw_warn("hs_lib_realsend: Leave(send len = %d)", n);
 
     usleep(200);
@@ -759,6 +761,7 @@ hs_lib_put_sendmsg(hs_lib_msg_t *send)
     }
     if (!handle) {
         uifw_trace("hs_lib_put_sendmsg: Leave(target(type:%d) does not exist", send->type);
+        hs_lib_free_msg(send);
         return ICO_HS_ERR;
     }
 
index bb4f893..436c5ae 100644 (file)
@@ -57,11 +57,14 @@ struct _hs_tile_info {
 };
 
 #define HS_DISPLAY_HOMESCREEN   0           /* HomeScreen target display Id     */
+
 #define HS_LAYER_BACKGROUND     0           /* layer of BackGround              */
 #define HS_LAYER_HOMESCREEN     1           /* layer of HomeScreen menu         */
 #define HS_LAYER_APPLICATION    2           /* layer of Application             */
-#define HS_LAYER_TOUCH          3           /* layer of TouchPanel              */
-#define HS_LAYER_ONSCREEN       4           /* layer of OnScreen                */
+#define HS_LAYER_SOFTKEYBOARD   3           /* layer of Software Keyboard       */
+#define HS_LAYER_INTERRUPTAPP   4           /* layer of Interrupted Application */
+#define HS_LAYER_TOUCH          5           /* layer of TouchPanel              */
+#define HS_LAYER_ONSCREEN       6           /* layer of OnScreen                */
 
 /*============================================================================*/
 /* static(internal) functions prototype                                       */
@@ -122,6 +125,8 @@ static int hs_tile_cnt = 0;
 static void
 hs_uxf_event(int ev, Ico_Uxf_EventDetail dd, int arg)
 {
+    const Ico_Uxf_conf_application *appConf;
+
     uifw_trace("... Event=%08x Arg=%d", ev, arg);
 
     Ico_Uxf_WindowAttr winAttr;
@@ -130,8 +135,7 @@ hs_uxf_event(int ev, Ico_Uxf_EventDetail dd, int arg)
     int dispW, dispH;
 
     if (ev == ICO_UXF_EVENT_NEWWINDOW) {
-        uifw_trace(
-                   "  D(Window) ev=%08x disp=%d win=%x x/y=%d/%d w/h=%d/%d v/r/a=%d/%d/%d",
+        uifw_trace("  D(Window) ev=%08x disp=%d win=%x x/y=%d/%d w/h=%d/%d v/r/a=%d/%d/%d",
                    dd.event, dd.window.display, dd.window.window,
                    dd.window.x, dd.window.y, dd.window.w, dd.window.h,
                    dd.window.visible, dd.window.raise, dd.window.active);
@@ -182,8 +186,6 @@ hs_uxf_event(int ev, Ico_Uxf_EventDetail dd, int arg)
                         hs_tile_show_screen();
                     }
                     if (hs_stat_touch == ICO_HS_TOUCH_IN_HIDE) {
-                        /* set layer of Application                     */
-                        ico_uxf_window_layer(dd.window.window, HS_LAYER_APPLICATION);
                         hs_set_appscreen(winAttr.process);
                     }
                 }
@@ -210,9 +212,22 @@ hs_uxf_event(int ev, Ico_Uxf_EventDetail dd, int arg)
                         != 0) &&
                     (strncmp(winAttr.process, gOnscreenName, ICO_UXF_MAX_PROCESS_NAME)
                         != 0))  {
-                    ico_uxf_window_active(dd.window.window);
-                    ico_uxf_window_raise(dd.window.window);
-                    ico_syc_apc_active(winAttr.process);
+                    /* if selected application is soft-keyboard, activate only pointer, */
+                    /* other case activate pointer and keyboard                         */
+                    appConf = ico_uxf_getAppByAppid(winAttr.process);
+                    if ((appConf != NULL) &&
+                        (appConf->display[0].layerId == HS_LAYER_SOFTKEYBOARD)) {
+                        ico_uxf_window_active(dd.window.window,
+                                              ICO_UXF_WINDOW_POINTER_ACTIVE);
+                        ico_uxf_window_raise(dd.window.window);
+                    }
+                    else    {
+                        ico_uxf_window_active(dd.window.window,
+                                              ICO_UXF_WINDOW_POINTER_ACTIVE |
+                                                  ICO_UXF_WINDOW_KEYBOARD_ACTIVE);
+                        ico_uxf_window_raise(dd.window.window);
+                        ico_syc_apc_active(winAttr.process);
+                    }
                 }
             }
         }
@@ -233,21 +248,6 @@ hs_uxf_event(int ev, Ico_Uxf_EventDetail dd, int arg)
 static Eina_Bool
 hs_ecore_uxf_eventfd(void *data, Ecore_Fd_Handler *handler)
 {
-#if 0               /* too many tracelog, change to comment out */
-    uifw_trace("hs_ecore_uxf_eventfd: Enter(fd=%d)",
-               ecore_main_fd_handler_fd_get(handler));
-
-    if (ecore_main_fd_handler_active_get(handler, ECORE_FD_READ)) {
-        uifw_trace("hs_ecore_uxf_eventfd: ECORE_FD_READ");
-    }
-    else if (ecore_main_fd_handler_active_get(handler, ECORE_FD_WRITE)) {
-        uifw_trace("hs_ecore_uxf_eventfd: ECORE_FD_WRITE");
-    }
-    else if (ecore_main_fd_handler_active_get(handler, ECORE_FD_ERROR)) {
-        uifw_trace("hs_ecore_uxf_eventfd: ECORE_FD_ERROR");
-    }
-#endif              /* too many tracelog, change to comment out */
-
     ico_uxf_main_loop_iterate();
 
     return EINA_TRUE;
@@ -341,6 +341,7 @@ hs_set_appscreen(const char *appid)
     int idx;
     int ret;
     Ico_Uxf_ProcessWin window;
+    const Ico_Uxf_conf_application *appConf;
 
     idx = hs_get_index_appscreendata(appid);
 
@@ -359,8 +360,31 @@ hs_set_appscreen(const char *appid)
                    hs_app_screen_window[idx].resize_h,
                    hs_app_screen_window[idx].move_x,
                    hs_app_screen_window[idx].move_y);
+#if 0
+#if 1   /* 05/15 TEST TEST TEST */
+        if ((hs_app_screen_window[idx].move_x < 0) &&
+            (hs_app_screen_window[idx].move_y < 0)) {
+            hs_app_screen_window[idx].visible = 1;
+            hs_app_screen_window[idx].raise = 1;
+            hs_app_screen_window[idx].resize_w = 1920;
+            hs_app_screen_window[idx].resize_h = 1016;
+            hs_app_screen_window[idx].move_x = 0;
+            hs_app_screen_window[idx].move_y = 64;
+        }
+#endif
+#endif
         /* move application window to application layer */
-        ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+        appConf = ico_uxf_getAppByAppid(hs_app_screen_window[idx].appid);
+        if (! appConf)  {
+            ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+            /* show application layer                       */
+            ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
+        }
+        else    {
+            ico_uxf_window_layer(window.window, appConf->display[0].layerId);
+            /* show application layer                       */
+            ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, appConf->display[0].layerId, 1);
+        }
         ico_uxf_window_move(window.window, hs_app_screen_window[idx].move_x,
                             hs_app_screen_window[idx].move_y);
         ico_uxf_window_resize(window.window,
@@ -369,8 +393,6 @@ hs_set_appscreen(const char *appid)
         ico_uxf_window_visible_raise(window.window,
                                      hs_app_screen_window[idx].visible,
                                      hs_app_screen_window[idx].raise);
-        /* show application layer                       */
-        ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
         /* hide HomeScreen layer                        */
         ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_HOMESCREEN, 0);
     }
@@ -468,12 +490,20 @@ hs_show_appscreen(const char *appid)
                                     hs_app_screen_window[ii].move_x,
                                     hs_app_screen_window[ii].move_y);
                 ico_uxf_window_show(window.window);
-                ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+                if (! appConf)  {
+                    ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+                    /* show application layer                       */
+                    ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
+                }
+                else    {
+                    ico_uxf_window_layer(window.window, appConf->display[0].layerId);
+                    /* show application layer                       */
+                    ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN,
+                                          appConf->display[0].layerId, 1);
+                }
             }
         }
     }
-    /* show application layer                       */
-    ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
     /* hide HomeScreen layer menu                   */
     ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_HOMESCREEN, 0);
 
@@ -519,7 +549,14 @@ hs_show_appscreen(const char *appid)
                        hs_app_screen_window[idx].move_x,
                        hs_app_screen_window[idx].move_y);
             /* activate application window                  */
-            ico_uxf_window_active(window.window);
+            if ((appConf != NULL) && (appConf->display[0].layerId == HS_LAYER_SOFTKEYBOARD)) {
+                ico_uxf_window_active(window.window, ICO_UXF_WINDOW_POINTER_ACTIVE);
+            }
+            else    {
+                ico_uxf_window_active(window.window,
+                                      ICO_UXF_WINDOW_POINTER_ACTIVE |
+                                          ICO_UXF_WINDOW_KEYBOARD_ACTIVE);
+            }
             ico_uxf_window_raise(window.window);
             ico_syc_apc_active(appid);
 
@@ -531,10 +568,18 @@ hs_show_appscreen(const char *appid)
                                 hs_app_screen_window[idx].move_x,
                                 hs_app_screen_window[idx].move_y);
             ico_uxf_window_visible_raise(window.window, 1, 1);
-            ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+            if (! appConf)  {
+                ico_uxf_window_layer(window.window, HS_LAYER_APPLICATION);
+                /* show application layer                       */
+                ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
+            }
+            else    {
+                ico_uxf_window_layer(window.window, appConf->display[0].layerId);
+                /* show application layer                       */
+                ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN,
+                                      appConf->display[0].layerId, 1);
+            }
             hs_app_screen_window[idx].visible = 1;
-            /* show application layer                       */
-            ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_APPLICATION, 1);
             /* hide HomeScreen layer                        */
             ico_uxf_layer_visible(HS_DISPLAY_HOMESCREEN, HS_LAYER_HOMESCREEN, 0);
         }
@@ -1679,7 +1724,6 @@ main(int argc, char *argv[])
     ret = ico_syc_apc_init(hs_display_control, hs_sound_control, hs_input_control);
     if (ret != ICO_SYC_EOK) {
         uifw_error("ico_syc_apc_init err=%d", ret);
-        exit(9);
     }
 
     /* start default tile apps */
index f06b8c9..8c65d4a 100644 (file)
@@ -605,11 +605,11 @@ ons_get_appindex(int idx)
     int cnt = 0;
     Ico_Uxf_App_Config *appconf = (Ico_Uxf_App_Config *)ico_uxf_getAppConfig();
 
-    uifw_trace("ons_get_appindex: idx=%d appidx=%d appcnt=%d", idx, appidx,
-               ons_app_cnt);
+    uifw_trace("ons_get_appindex: idx=%d appidx=%d appcnt=%d", idx, appidx, ons_app_cnt);
 
     for (ii = 0; ii < appconf->applicationNum; ii++) {
-        if (strcmp(appconf->application[ii].type, ICO_HS_GROUP_SPECIAL) != 0) {
+        if ((! appconf->application[ii].noicon) &&
+            (strcmp(appconf->application[ii].type, ICO_HS_GROUP_SPECIAL) != 0)) {
             cnt++;
         }
         if (cnt == appidx) {
@@ -867,9 +867,13 @@ main(int argc, char *argv[])
     appconf = (Ico_Uxf_App_Config *)ico_uxf_getAppConfig();
     ons_app_cnt = appconf->applicationNum;
     for (appidx = 0; appidx < appconf->applicationNum; appidx++) {
-        if (strcmp(appconf->application[appidx].type, ICO_HS_GROUP_SPECIAL)
-                == 0) {
+        if ((appconf->application[appidx].noicon) ||
+            (strcmp(appconf->application[appidx].type, ICO_HS_GROUP_SPECIAL) == 0)) {
             ons_app_cnt--;
+            uifw_trace("Application list: No Need appid=%s noicon=%d type=%s",
+                       appconf->application[appidx].appid,
+                       appconf->application[appidx].noicon,
+                       appconf->application[appidx].type);
         }
     }
     cnt = 0;
index 9d729cb..1560ba7 100755 (executable)
@@ -33,7 +33,7 @@ sleep 0.3
 # 5. Start Weston
 ORG_UMASK=`umask`
 umask 000
-/usr/bin/weston --backend=drm-backend.so --idle-time=0 --log=/var/log/ico/weston.log &
+/usr/bin/weston --backend=drm-backend.so --idle-time=0 --log=/var/log/weston.log &
 sync;sync
 sleep 0.8
 if [ -f $XDG_RUNTIME_DIR/wayland-0 ] ; then
index 9fff212..eea3d5a 100644 (file)
@@ -52,17 +52,22 @@ static const struct {
     char        *eventtype;
     unsigned char   datatype[4];
 }               vehicleinfo_key[] = {
-    { "VehicleSpeed", "VELOCITY", {TYPE_UINT16, TYPE_NULL, 0,0} },
-    { "Speed", "VELOCITY", {TYPE_UINT16, TYPE_NULL, 0,0} },
-    { "Velocity", "VELOCITY", {TYPE_UINT16, TYPE_NULL, 0,0} },
+    { "VehicleSpeed", "VELOCITY", {TYPE_INT32, TYPE_NULL, 0,0} },
+    { "Speed", "VELOCITY", {TYPE_INT32, TYPE_NULL, 0,0} },
+    { "Velocity", "VELOCITY", {TYPE_INT32, TYPE_NULL, 0,0} },
     { "Location", "LOCATION", {TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_NULL} },
     { "Direction", "DIRECTION", {TYPE_DOUBLE, TYPE_NULL, 0,0} },
+    { "EngineSpeed", "ENGINE_SPEED", {TYPE_INT32, TYPE_NULL, 0, 0} },
+    { "Engine", "ENGINE_SPEED", {TYPE_INT32, TYPE_NULL, 0, 0} },
     { "Shift", "SHIFT", {TYPE_BYTE, TYPE_BYTE, TYPE_NULL, 0} },
     { "ShiftPosition", "SHIFT", {TYPE_BYTE, TYPE_BYTE, TYPE_NULL, 0} },
     { "Break_Signal", "BRAKE_SIGNAL", {TYPE_BOOL, TYPE_NULL, 0,0} },
     { "BreakSignal", "BRAKE_SIGNAL", {TYPE_BOOL, TYPE_NULL, 0,0} },
     { "Break", "BRAKE_SIGNAL", {TYPE_BOOL, TYPE_NULL, 0,0} },
-    { "WATER_TEMP", "WATER_TEMP", {TYPE_UINT16, TYPE_INT32, TYPE_UINT16, TYPE_NULL} },
+    { "Blinker", "TURN_SIGNAL", {TYPE_INT32, TYPE_NULL, 0, 0} },
+    { "Winker", "TURN_SIGNAL", {TYPE_INT32, TYPE_NULL, 0, 0} },
+    { "TurnSignal", "TURN_SIGNAL", {TYPE_INT32, TYPE_NULL, 0, 0} },
+    { "WATER_TEMP", "WATER_TEMP", {TYPE_INT32, TYPE_NULL, 0, 0} },
     { "\0", "\0", {TYPE_NULL, 0,0,0} } };
 
 struct KeyDataMsg_t