}
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);
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;
"/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" }
};
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;
}
}
/* 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;
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;
}
}
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
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
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
{
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;
}
}
/* 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;
}
/* chanage resmgr_client_intialized flag */
- resmgr_initialized = 0;
+ resmgr_initialized &= ~1;
apfw_trace("ico_apf_resource_term_client: Leave");
}
{
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;
}
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) {
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;
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;
/*--------------------------------------------------------------------------*/
char *app_category;
char add_category[256];
int i;
+ bool bval;
struct stat buff;
Ico_Uxf_conf_application *apptbl;
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);
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);
}
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;
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;
}
/* 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;
}
/* 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;
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;
}
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 };
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;
/*--------------------------------------------------------------------------*/
/**
- * @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;
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;
}
/* 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);
*
* @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
*/
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;
* @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)
*/
/*--------------------------------------------------------------------------*/
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)");
}
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 */
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;
}
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;
#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" {
--- /dev/null
+/*
+ * 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_ */
+
char *exec;
char *type;
int hostId;
+ char noicon;
+ char res[3]; /* (unused) */
char *location;
char *icon_key_name;
short kindId;
/* 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"
#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 */
/* 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 */
#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 */
/* 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);
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 */
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 */
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
-* 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)
# 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*
%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
--- /dev/null
+## 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
+#
+
## 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
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]
#
## 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]
# log flush on log output
logflush=yes
-#
-## default categories for each application
-[app-category]
-DemoMeterApp=Map
-
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);
}
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;
}
};
#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 */
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;
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);
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);
}
}
!= 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);
+ }
}
}
}
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;
int idx;
int ret;
Ico_Uxf_ProcessWin window;
+ const Ico_Uxf_conf_application *appConf;
idx = hs_get_index_appscreendata(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,
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);
}
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);
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);
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);
}
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 */
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) {
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;
# 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
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