diff options
author | Sangchul Lee <sc11.lee@samsung.com> | 2015-07-30 17:18:45 +0900 |
---|---|---|
committer | Sangchul Lee <sc11.lee@samsung.com> | 2015-07-30 19:39:16 +0900 |
commit | 062d7d437f2e3b9ab77a3ab5eb5b5885fff7c3a8 (patch) | |
tree | 6156e36acd895ba48713d0d9c515ee6ba86cb820 | |
parent | 89bb9efc1055424c73db0d005356ec6951e3300f (diff) | |
download | murphy-062d7d437f2e3b9ab77a3ab5eb5b5885fff7c3a8.tar.gz murphy-062d7d437f2e3b9ab77a3ab5eb5b5885fff7c3a8.tar.bz2 murphy-062d7d437f2e3b9ab77a3ab5eb5b5885fff7c3a8.zip |
Modify spec file for minimal compiling and extract murphy.lua filesubmit/tizen/20150731.050937accepted/tizen/wearable/20150731.102901accepted/tizen/tv/20150731.102734accepted/tizen/mobile/20150731.102602
Change-Id: Iad805d12a41934e59d637c1e76712f39e57bde44
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
-rw-r--r-- | packaging.in/murphy-wait-for-launchpad-ready.path | 3 | ||||
-rw-r--r-- | packaging.in/murphy.lua | 2385 | ||||
-rw-r--r-- | packaging.in/murphy.spec.in | 596 | ||||
-rwxr-xr-x | packaging.in/murphyd.init | 156 | ||||
-rw-r--r-- | packaging/murphy-lua.conf (renamed from packaging.in/murphy-lua.conf) | 0 | ||||
-rw-r--r-- | packaging/murphy.spec | 223 | ||||
-rw-r--r-- | packaging/murphyd.conf (renamed from packaging.in/murphyd.conf) | 0 | ||||
-rw-r--r-- | packaging/murphyd.service (renamed from packaging.in/murphyd.service) | 0 | ||||
-rw-r--r-- | packaging/org.Murphy.conf.in (renamed from packaging.in/org.Murphy.conf.in) | 0 |
9 files changed, 57 insertions, 3306 deletions
diff --git a/packaging.in/murphy-wait-for-launchpad-ready.path b/packaging.in/murphy-wait-for-launchpad-ready.path deleted file mode 100644 index d943911..0000000 --- a/packaging.in/murphy-wait-for-launchpad-ready.path +++ /dev/null @@ -1,3 +0,0 @@ -[Path] -PathExists=/run/user/%U/wayland-0 -Unit=ico-homescreen.service diff --git a/packaging.in/murphy.lua b/packaging.in/murphy.lua deleted file mode 100644 index b625d1f..0000000 --- a/packaging.in/murphy.lua +++ /dev/null @@ -1,2385 +0,0 @@ -with_system_controller = false -with_amb = false -verbose = 0 - -m = murphy.get() - --- try loading the various logging plugins -m:try_load_plugin('systemd') -m:try_load_plugin('dlog') - --- load the console plugin -m:try_load_plugin('console') - -m:try_load_plugin('console.disabled', 'webconsole', { - address = 'wsck:127.0.0.1:3000/murphy', - httpdir = '/usr/share/murphy/webconsole' }); - --- load the dbus plugin -if m:plugin_exists('dbus') then - m:load_plugin('dbus') -end - --- load the native resource plugin -if m:plugin_exists('resource-native') then - m:load_plugin('resource-native') - m:info("native resource plugin loaded") -else - m:info("No native resource plugin found...") -end - --- load the dbus resource plugin -m:try_load_plugin('resource-dbus', { - dbus_bus = "system", - dbus_service = "org.Murphy", - dbus_track = true, - default_zone = "driver", - default_class = "implicit" -}) - --- load the domain control plugin -if m:plugin_exists('domain-control') then - m:load_plugin('domain-control') -else - m:info("No domain-control plugin found...") -end - -if m:plugin_exists('glib') then - m:load_plugin('glib') -else - m:info("No glib plugin found...") -end - -if m:plugin_exists("gam-resource-manager") then - -function get_general_priorities(self) - print("*** get_general_priorities\n") - return { "USB Headset", "wiredHeadset", "speakers" } -end - -function get_phone_priorities(self) - print("*** get_phone_priorities\n") - return { "wiredHeadset", "USB Headset" } -end - -m:load_plugin('gam-resource-manager', { - config_dir = '/etc/murphy/gam', - decision_names = 'gam-wrtApplication-4', - max_active = 4, - app_mapping = { - ['t8j6HTRpuz.MediaPlayer'] = 'wrtApplication', - ['pacat'] = 'icoApplication' - }, - app_default = 'icoApplication' -}) - -routing_sink_priority { - application_class = "player", - priority_queue = get_general_priorities -} - -routing_sink_priority { - application_class = "game", - priority_queue = get_general_priorities -} - -routing_sink_priority { - application_class = "implicit", - priority_queue = get_general_priorities -} - -routing_sink_priority { - application_class = "phone", - priority_queue = get_phone_priorities -} - -routing_sink_priority { - application_class = "basic", - priority_queue = get_phone_priorities -} - -routing_sink_priority { - application_class = "event", - priority_queue = get_phone_priorities -} -end - --- load the AMB plugin -if m:plugin_exists('amb') then - m:try_load_plugin('amb') - - if builtin.method.amb_initiate and - builtin.method.amb_update - then - with_amb = true - end -else - m:info("No amb plugin found...") -end - --- load the ASM resource plugin -if m:plugin_exists('resource-asm') then - m:try_load_plugin('resource-asm', { - zone = "driver", - share_mmplayer = "player:AVP,mandatory,exclusive,strict", - ignored_argv0 = "WebProcess" - }) -else - m:info("No audio session manager plugin found...") -end - -if m:plugin_exists('system-controller') then - with_system_controller = true -elseif m:plugin_exists('ivi-resource-manager') then - m:load_plugin('ivi-resource-manager') - with_system_controller = false -end - --- define application classes -application_class { - name = "interrupt", - priority = 99, - modal = true , - share = false, - order = "fifo" -} - -application_class { - name = "emergency", - priority = 80, - modal = false, - share = false, - order = "fifo" -} -application_class { - name = "system", - priority = 52, - modal = false, - share = true, - order = "lifo" -} -application_class { - name = "alert", - priority = 51, - modal = false, - share = false, - order = "fifo" -} - -application_class { - name = "navigator", - priority = 50, - modal = false, - share = true, - order = "fifo" -} - -application_class { - name = "phone", - priority = 6 , - modal = false, - share = false, - order = "lifo" -} -application_class { - name = "camera", - priority = 5, - modal = false, - share = false, - order = "lifo" -} - -application_class { name="event" , priority=4 , modal=false, share=true , order="fifo" } -application_class { name="game" , priority=3 , modal=false, share=false, order="lifo" } ---# doesn't need to be created here, ivi-resource-manager creates it if loaded ---#application_class { name="basic" , priority=2 , modal=false, share=false, order="lifo" } -application_class { name="player" , priority=1 , modal=false, share=true , order="lifo" } -application_class { name="implicit" , priority=0 , modal=false, share=false, order="lifo" } - --- define zone attributes -zone.attributes { - type = {mdb.string, "common", "rw"}, - location = {mdb.string, "anywhere", "rw"} -} - --- define zones -zone { - name = "driver", - attributes = { - type = "common", - location = "front-left" - } -} - -zone { - name = "passanger1", - attributes = { - type = "private", - location = "front-right" - } -} - -zone { - name = "passanger2", - attributes = { - type = "private", - location = "back-left" - } -} - -zone { - name = "passanger3", - attributes = { - type = "private", - location = "back-right" - } -} - -zone { - name = "passanger4", - attributes = { - type = "private", - location = "back-left" - } -} - - --- define resource classes -if not m:plugin_exists('ivi-resource-manager') and - not with_system_controller and - not m:plugin_exists('gam-resource-manager') -then - resource.class { - name = "audio_playback", - shareable = true, - attributes = { - role = { mdb.string, "music", "rw" }, - pid = { mdb.string, "<unknown>", "rw" }, - policy = { mdb.string, "relaxed", "rw" }, - source = { mdb.string, "webkit", "rw" }, - conn_id = { mdb.unsigned, 0, "rw" }, - name = { mdb.string, "<unknown>", "rw" }, - } - } -end - -if not m:plugin_exists('gam-resource-manager') then - resource.class { - name = "audio_recording", - shareable = true, - attributes = { - role = { mdb.string, "music" , "rw" }, - pid = { mdb.string, "<unknown>", "rw" }, - policy = { mdb.string, "relaxed" , "rw" }, - name = { mdb.string, "<unknown>", "rw" }, - } - } -end - -resource.class { - name = "video_playback", - shareable = false, -} - -resource.class { - name = "video_recording", - shareable = false -} - -resource.class { - name = "speech_recognition", - shareable = true -} - -resource.class { - name = "speech_synthesis", - shareable = true -} - --- PulseAudio volume context -mdb.table { - name = "volume_context", - index = { "id" }, - create = true, - columns = { - { "id", mdb.unsigned }, - { "value", mdb.string, 64 }, - } -} - --- put default volume context to the table -mdb.table.volume_context:insert({ id = 1, value = "default" }) - -if not m:plugin_exists('ivi-resource-manager') and - not with_system_controller -then - resource.method.veto = { - function(zone, rset, grant, owners, req_set) - return true - end - } -end - --- test for creating selections -mdb.select { - name = "audio_owner", - table = "audio_playback_owner", - columns = {"application_class"}, - condition = "zone_name = 'driver'" -} - -mdb.select { - name = "vehicle_speed", - table = "amb_vehicle_speed", - columns = {"value"}, - condition = "key = 'VehicleSpeed'" -} - -element.lua { - name = "speed2volume", - inputs = { speed = mdb.select.vehicle_speed, param = 9 }, - outputs = { mdb.table { name = "speedvol", - index = {"zone", "device"}, - columns = {{"zone", mdb.string, 16}, - {"device", mdb.string, 16}, - {"value", mdb.floating}}, - create = true - } - }, - oldvolume = 0.0, - update = function(self) - speed = self.inputs.speed.single_value - if (speed) then - volume = (speed - 144.0) / 7.0 - else - volume = 0.0 - end - diff = volume - self.oldvolume - if (diff*diff > self.inputs.param) then - print("*** element "..self.name.." update "..volume) - self.oldvolume = volume - mdb.table.speedvol:replace({zone = "driver", device = "speakers", value = volume}) - end - end -} - -mdb.select { - name = "amb_state", - table = "amb_state", - columns = { "state" }, - condition = "id = 0" -} - --- Night mode processing chain - -mdb.select { - name = "exterior_brightness", - table = "amb_exterior_brightness", - columns = { "value" }, - condition = "key = 'ExteriorBrightness'" -} - -element.lua { - name = "nightmode", - inputs = { brightness = mdb.select.exterior_brightness }, - oldmode = -1; - outputs = { - mdb.table { - name = "amb_nightmode", - index = { "id" }, - create = true, - columns = { - { "id", mdb.unsigned }, - { "night_mode", mdb.unsigned } - } - } - }, - update = function(self) - -- This is a trivial function to calculate night mode. Later, we will - -- need a better threshold value and hysteresis to prevent oscillation. - - brightness = self.inputs.brightness.single_value - - if not brightness then - return - end - - print("*** element "..self.name.." update brightness: "..brightness) - - if brightness > 300 then - mode = 0 - else - mode = 1 - end - - print("*** resulting mode: ".. mode) - - if not (mode == self.oldmode) then - mdb.table.amb_nightmode:replace({ id = 0, night_mode = mode }) - end - - self.oldmode = mode - end -} - -mdb.select { - name = "select_night_mode", - table = "amb_nightmode", - columns = { "night_mode" }, - condition = "id = 0" -} - -if with_amb then - sink.lua { - name = "night_mode", - inputs = { NightMode = mdb.select.select_night_mode, - amb_state = mdb.select.amb_state }, - property = "NightMode", - type = "b", - initiate = builtin.method.amb_initiate, - update = builtin.method.amb_update - } -end - --- Night mode general handlers - -if with_system_controller then - sink.lua { - name = "nightmode_homescreen", - inputs = { owner = mdb.select.select_night_mode }, - initiate = function(self) - -- data = mdb.select.select_night_mode.single_value - return true - end, - update = function(self) - send_night_mode_to(homescreen) - end - } -end - --- Driving mode processing chain - -element.lua { - name = "drivingmode", - inputs = { speed = mdb.select.vehicle_speed }, - oldmode = -1; - outputs = { - mdb.table { - name = "amb_drivingmode", - index = { "id" }, - create = true, - columns = { - { "id", mdb.unsigned }, - { "driving_mode", mdb.unsigned } - } - } - }, - update = function(self) - - speed = self.inputs.speed.single_value - - if not speed then - return - end - - if speed == 0 then - mode = 0 - else - mode = 1 - end - - if not (mode == self.oldmode) then - mdb.table.amb_drivingmode:replace({ id = 0, driving_mode = mode }) - end - - self.oldmode = mode - end -} - -mdb.select { - name = "select_driving_mode", - table = "amb_drivingmode", - columns = { "driving_mode" }, - condition = "id = 0" -} - -if with_amb then - sink.lua { - name = "driving_mode", - inputs = { DrivingMode = mdb.select.select_driving_mode, - amb_state = mdb.select.amb_state }, - property = "DrivingMode", - type = "u", - initiate = builtin.method.amb_initiate, - update = builtin.method.amb_update - } -end - --- turn signals (left, right) - -mdb.select { - name = "winker", - table = "amb_turn_signal", - columns = { "value" }, - condition = "key = 'TurnSignal'" -} - --- define three categories - -mdb.select { - name = "undefined_applications", - table = "aul_applications", - columns = { "appid" }, - condition = "category = '<undefined>'" -} - -mdb.select { - name = "basic_applications", - table = "aul_applications", - columns = { "appid" }, - condition = "category = 'basic'" -} - -mdb.select { - name = "entertainment_applications", - table = "aul_applications", - columns = { "appid" }, - condition = "category = 'entertainment'" -} - -function ft(t) - -- filter the object garbage out of the tables - ret = {} - - for k,v in pairs(t) do - if k ~= "userdata" and k ~= "new" then - ret[k] = v - end - end - - return ret -end - -function getApplication(appid) - local conf = nil - - -- find the correct local application definition - - for k,v in pairs(ft(application)) do - if appid == v.appid then - conf = v - break - end - end - - return conf -end - -function regulateApplications(t, regulation) - for k,v in pairs(ft(t)) do - - whitelisted = false - - -- our local application config, which takes precedence - local conf = getApplication(v.appid) - - if conf then - if conf.resource_class ~= "player" then - whitelisted = true - end - - if conf.requisites and conf.requisites.screen then - if conf.requisites.screen.driving then - whitelisted = true - end - end - end - - if whitelisted then - -- override, don't disable - resmgr:disable_screen_by_appid("*", "*", v.appid, false, false) - else - resmgr:disable_screen_by_appid("*", "*", v.appid, regulation == 1, false) - end - end - resource.method.recalc("driver") -end - --- regulation (on), use "select_driving_mode" - -sink.lua { - name = "driving_regulation", - inputs = { owner = mdb.select.select_driving_mode }, - initiate = function(self) - -- local data = mdb.select.select_driving_mode.single_value - return true - end, - update = function(self) - local data = mdb.select.select_driving_mode.single_value - - if verbose > 1 then - print("Driving mode updated: " .. tostring(data)) - end - - if not sc then - return true - end - - -- tell homescreen that driving mode was updated - send_driving_mode_to(homescreen) - - regulateApplications(ft(mdb.select.entertainment_applications), data) - regulateApplications(ft(mdb.select.undefined_applications), data) - - return true - end -} ---[[ -sink.lua { - name = "regulated_app_change", - inputs = { undef = mdb.select.undefined_applications, - entertainment = mdb.select.entertainment_applications }, - initiate = function(self) - return true - end, - update = function(self) - local data = mdb.select.select_driving_mode.single_value - - if not sc then - return - end - - if verbose > 1 then - print("regulated application list was changed") - end - - regulateApplications(ft(mdb.select.entertainment_applications), data) - regulateApplications(ft(mdb.select.undefined_applications), data) - - return true - end -} ---]] - --- shift position (parking, reverse, other) - -mdb.select { - name = "gear_position", - table = "amb_gear_position", - columns = { "value" }, - condition = "key = 'GearPosition'" -} - --- cameras (back, front, left, right) - -element.lua { - name = "camera_state", - inputs = { winker = mdb.select.winker, gear = mdb.select.gear_position }, - oldmode = -1; - outputs = { - mdb.table { - name = "target_camera_state", - index = { "id" }, - create = true, - columns = { - { "id", mdb.unsigned }, - { "front_camera", mdb.unsigned }, - { "back_camera", mdb.unsigned }, - { "right_camera", mdb.unsigned }, - { "left_camera", mdb.unsigned } - } - } - }, - update = function(self) - - front_camera = 0 - back_camera = 0 - right_camera = 0 - left_camera = 0 - - if self.inputs.gear == 128 then - back_camera = 1 - elseif self.inputs.winker == 1 then - right_camera = 1 - elseif self.inputs.winker == 2 then - left_camera = 1 - end - - mdb.table.target_camera_state:replace({ id = 0, front_camera = front_camera, back_camera = back_camera, right_camera = right_camera, left_camera = left_camera }) - - end -} - --- system controller test setup - -if not with_system_controller then - -- ok, we should have 'audio_playback' defined by now - m:try_load_plugin('telephony') - return -end - -m:load_plugin('system-controller') - -onscreen_counter = 0 - -window_manager_operation_names = { - [1] = "create", - [2] = "destroy" -} - -function window_manager_operation_name(oper) - local name = window_manager_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -window_operation_names = { - [1] = "create", - [2] = "destroy", - [3] = "name_change", - [4] = "visible", - [5] = "configure", - [6] = "active", - [7] = "map", - [8] = "hint" -} - -function window_operation_name(oper) - local name = window_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -layer_operation_names = { - [1] = "create", - [2] = "destroy", - [3] = "visible" -} - -function layer_operation_name(oper) - local name = layer_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -input_manager_operation_names = { - [1] = "create", - [2] = "destroy", - [3] = "ready" -} - -function input_manager_operation_name(oper) - local name = input_manager_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -input_operation_names = { - [1] = "create", - [2] = "destroy", - [3] = "update" -} - -function input_operation_name(oper) - local name = input_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -code_operation_names = { - [1] = "create", - [2] = "destroy", - [3] = "state_change" -} - -function code_operation_name(oper) - local name = code_operation_names[oper] - if name then return name end - return "<unknown " .. tostring(oper) .. ">" -end - -command_names = { - [0x00001] = "send_appid", - [0x10001] = "create", - [0x10002] = "destroy", - [0x10003] = "show", - [0x10004] = "hide", - [0x10005] = "move", - [0x10006] = "animation", - [0x10007] = "change_active", - [0x10008] = "change_layer", - [0x10009] = "change_attr", - [0x10010] = "name", - [0x10020] = "map_thumb", - [0x10021] = "unmap_thumb", - [0x10022] = "map_get", - [0x10030] = "show layer", - [0x10031] = "hide_layer", - [0x10032] = "change_layer_attr", - [0x20001] = "add_input", - [0x20002] = "del_input", - [0x30001] = "change_user", - [0x30002] = "get_userlist", - [0x30003] = "get_lastinfo", - [0x30004] = "set_lastinfo", - [0x40001] = "acquire_res", - [0x40002] = "release_res", - [0x40003] = "deprive_res", - [0x40004] = "waiting_res", - [0x40005] = "revert_res", - [0x40006] = "window_id_res", - [0x40011] = "create_res", - [0x40012] = "destroy_res", - [0x50001] = "set_region", - [0x50002] = "unset_region", - [0x60001] = "change_state" -} - -function command_name(command) - local name = command_names[command] - if name then return name end - return "<unknown " .. tostring(command) .. ">" -end - -input_layer = { - [101] = true, -- input - [102] = true, -- touch - [103] = true -- cursor -} - --- some day this should be merged with wmgr.layers -ico_layer_type = { - [1] = 0x1000, -- background - [2] = 0x2000, -- application - [3] = 0x2000, -- homescreen - [4] = 0x2000, -- interrupt application - [5] = 0x2000, -- onscreen application - [6] = 0xc000, -- startup - [7] = 0x3000, -- fullscreen - [101] = 0x4000, -- input - [102] = 0xa000, -- touch - [103] = 0xb000 -- cursor -} - -resmgr = resource_manager { - screen_event_handler = function(self, ev) - local event = ev.event - local surface = ev.surface - - if event == "init" then - if verbose > 0 then - print("*** init screen resource allocation -- disable all 'player'") - end - resmgr:disable_audio_by_appid("*", "player", "*", true, false) - elseif event == "preallocate" then - if verbose > 0 then - print("*** preallocate screen resource ".. - "for '" .. ev.appid .. "' -- enable 'player', if any") - end - resmgr:disable_audio_by_appid("*", "player", ev.appid, false, false) - elseif event == "grant" then - if verbose > 0 then - print("*** make visible surface "..surface) - end - local a = animation({}) - local r = m:JSON({surface = surface, - visible = 1, - raise = 1}) - if ev.appid == onscreen then - onscreen_counter = onscreen_counter + 1 - wmgr:layer_request(m:JSON({layer = 5, visible = 1})) - end - - wmgr:window_request(r,a,0) - elseif event == "revoke" then - if verbose > 0 then - print("*** hide surface "..surface) - end - local a = animation({}) - local r = m:JSON({surface = ev.surface, - visible = 0}) - if ev.appid == onscreen then - onscreen_counter = onscreen_counter - 1 - if onscreen_counter <= 0 then - onscreen_counter = 0 - wmgr:layer_request(m:JSON({layer = 5, visible = 0})) - end - end - wmgr:window_request(r,a,0) - - elseif event == "create" then - - if verbose > 0 then - print("*** screen resource event: " .. - tostring(ev)) - end - - local regulation = mdb.select.select_driving_mode.single_value - - if regulation == 1 then - - local blacklisted = false - - -- applications which have their category set to "entertainment" - -- or "undefined" are blacklisted, meaning they should be regulated - - for i,v in pairs(ft(mdb.select.undefined_applications)) do - if v.appid == ev.appid then - if verbose > 0 then - print(ev.appid .. " was blacklisted (undefined)") - end - blacklisted = true - break - end - end - - if not blacklisted then - for i,v in pairs(ft(mdb.select.entertainment_applications)) do - if v.appid == ev.appid then - if verbose > 0 then - print(ev.appid .. " was blacklisted (entertainment)") - end - blacklisted = true - break - end - end - end - - -- our local application config, which takes precedence - local conf = getApplication(ev.appid) - - if not conf then - blacklisted = true - else - if conf.resource_class == "player" then - blacklisted = true - end - - -- check the exceptions - if conf.requisites and conf.requisites.screen then - if conf.requisites.screen.driving then - blacklisted = false - end - end - end - - -- disable only non-whitelisted applications - if blacklisted then - if verbose > 0 then - print("disabling screen for " .. ev.appid) - end - resmgr:disable_screen_by_appid("*", "*", ev.appid, true, true) - end - end - - elseif event == "destroy" then - if verbose > 0 then - print("*** screen resource event: " .. - tostring(ev)) - end - else - if verbose > 0 then - print("*** screen resource event: " .. - tostring(ev)) - end - end - end, - audio_event_handler = function(self, ev) - local event = ev.event - local appid = ev.appid - local audioid = ev.audioid - - if event == "grant" then - if verbose > 0 then - print("*** grant audio to "..appid.. - " ("..audioid..") in '" .. - ev.zone .. "' zone") - end - elseif event == "revoke" then - if verbose > 0 then - print("*** revoke audio from "..appid.. - " ("..audioid..") in '" .. - ev.zone .. "' zone") - end - else - if verbose > 0 then - print("*** audio resource event: " .. - tostring(ev)) - end - end - end -} - -resclnt = resource_client {} - -wmgr = window_manager { - geometry = function(self, w,h, v) - if type(v) == "function" then - return v(w,h) - end - return v - end, - - application = function(self, appid) - if appid then - local app = application_lookup(appid) - if not app then - app = application_lookup("default") - end - return app - end - return { privileges = {screen="none", audio="none"} } - end, - - output_order = { 1, 0 }, - - outputs = { { name = "Mid", - id = 1, - zone = "driver", - areas = { Full = { - id = 20, - pos_x = 0, - pos_y = 0, - width = function(w,h) return w end, - height = function(w,h) return h end - }, - Left = { - id = 21, - pos_x = 0, - pos_y = 0, - width = 320, - height = function(w,h) return h end - }, - Right = { - id = 22, - pos_x = function(w,h) return w-320 end, - pos_y = 0, - width = 320, - height = function(w,h) return h end - } - } - }, - { name = "Center", - id = 4, - zone = "driver", - areas = { Status = { - id = 0, - pos_x = 0, - pos_y = 0, - width = function(w,h) return w end, - height = 64 - }, - Full = { - id = 1, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w end, - height = function(w,h) return h-64-128 end - }, - Upper = { - id = 2, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w end, - height = function(w,h) return (h-64-128)/2 end - }, - Lower = { - id = 3, - pos_x = 0, - pos_y = function(w,h) return (h-64-128)/2+64 end, - width = function(w,h) return w end, - height = function(w,h) return (h-64-128)/2 end - }, - UpperLeft = { - id = 4, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w/2 end, - height = function(w,h) return (h-64-128)/2 end - }, - UpperRight = { - id = 5, - pos_x = function(w,h) return w/2 end, - pos_y = 64, - width = function(w,h) return w/2 end, - height = function(w,h) return (h-64-128)/2 end - }, - LowerLeft = { - id = 6, - pos_x = 0, - pos_y = function(w,h) return (h-64-128/2)+64 end, - width = function(w,h) return w/2 end, - height = function(w,h) return (h-64-128)/2 end - }, - LowerRight = { - id = 7, - pos_x = function(w,h) return w/2 end, - pos_y = function(w,h) return (h-64-128/2)+64 end, - width = function(w,h) return w/2 end, - height = function(w,h) return (h-64-128)/2 end - }, - SysApp = { - id = 8, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w end, - height = function(w,h) return h-64-128 end - }, - ["SysApp.Left"] = { - id = 9, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w/2-181 end, - height = function(w,h) return h-64-128 end - }, - ["SysApp.Right"] = { - id = 10, - pos_x = function(w,h) return w/2+181 end, - pos_y = 64, - width = function(w,h) return w/2-181 end, - height = function(w,h) return h-64-128 end - }, - MobileFull = { - id = 11, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w end, - height = function(w,h) return h-64-128 end - }, - MobileUpper = { - id = 12, - pos_x = 0, - pos_y = 64, - width = function(w,h) return w end, - height = function(w,h) return (h-64-128)/2 end - }, - MobileLower = { - id = 13, - pos_x = 0, - pos_y = function(w,h) return (h-64-128)/2+64 end, - width = function(w,h) return w end, - height = function(w,h) return (h-64-128)/2 end - }, - Control = { - id = 14, - pos_x = 0, - pos_y = function(w,h) return h-128 end, - width = function(w,h) return w end, - height = 128 - }, - } - } - }, - -- id name type output - layers = { { 0, "BackGround" , 1, "Center" }, - { 1, "Application" , 2, "Center" }, - { 2, "HomeScreen" , 3, "Center" }, - { 3, "ControlBar" , 3, "Center" }, - { 4, "InterruptApp" , 4, "Center" }, - { 5, "OnScreen" , 5, "Center" }, - { 6, "Touch" , 102, "Center" }, - { 7, "Cursor" , 103, "Center" } - }, - - - manager_update = function(self, oper) - if verbose > 0 then - print("### <== WINDOW MANAGER UPDATE:" .. - window_manager_operation_name(oper)) - end - if oper == 1 then - local wumask = window_mask { --raise = true, - visible = true, - active = true } - local wrmask = window_mask { raise = true, - active = true, - layer = true } - local lumask = layer_mask { visible = true } - local lrmask = layer_mask { visible = true } - local req = m:JSON({ - passthrough_window_update = wumask:tointeger(), - passthrough_window_request = wrmask:tointeger(), - passthrough_layer_update = lumask:tointeger(), - passthrough_layer_request = lrmask:tointeger() - }) - self:manager_request(req) - end - end, - - window_update = function(self, oper, win, mask) - if verbose > 0 then - print("### <== WINDOW UPDATE oper:" .. - window_operation_name(oper) .. - " mask: " .. tostring(mask)) - if verbose > 1 then - print(win) - end - end - - local arg = m:JSON({ surface = win.surface, - winname = win.name - }) - local command = 0 - - if oper == 1 then -- create - local layertype = win.layertype - if layertype and input_layer[layertype] then - if verbose > 0 then - print("ignoring input panel creation") - end - return - end - command = 0x10001 - elseif oper == 2 then -- destroy - command = 0x10002 - elseif oper == 3 then -- namechange - command = 0x10010 - elseif oper == 4 or oper == 5 then -- visible/configure - command = 0x10009 - arg.zone = win.area - arg.node = win.node - if win.layertype then - arg.layertype = win.layertype - end - arg.layer = win.layer - arg.pos_x = win.pos_x - arg.pos_y = win.pos_y - arg.width = win.width - arg.height = win.height - arg.raise = win.raise - arg.visible = win.visible - if win.active == 0 then - arg.active = 0 - else - arg.active = 1 - end - elseif oper == 6 then -- active - if win.active == 0 then - if verbose > 0 then - print("ignoring inactive event") - end - return - end - command = 0x10007 - elseif oper == 7 then -- map - local map = win.map - if not map then - return - end - if win.mapped == 0 then - command = 0x10021 - else - command = 0x10020 - end - arg.attr = map.type - --arg.name = map.target - arg.width = map.width - arg.height = map.height - arg.stride = map.stride - arg.format = map.format - else - if verbose > 0 then - print("### nothing to do") - end - return - end - - local msg = m:JSON({ command = command, - appid = win.appid, - pid = win.pid, - arg = arg - }) - if verbose > 0 then - print("### <== sending " .. - command_name(msg.command) .. - " window message to '" .. homescreen .. "'") - if verbose > 1 then - print(msg) - end - end - sc:send_message(homescreen, msg) - - if oper == 1 then -- create - local i = input_layer[win.layertype] - local p = self:application(win.appid) - local s = p.privileges.screen - - if s == "system" then - local a = animation({}) - local r = m:JSON({surface = win.surface, - visible = 0, - raise = 1}) - self:window_request(r,a,0) - else - if i then - if verbose > 0 then - print("do not make resource for " .. - "input window") - end - else - resclnt:resource_set_create("screen", - "driver", - win.appid, - win.surface) - special_screen_sets[win.surface] = true - end - end - - if onscreen and win.appid == onscreen then - local resmsg = m:JSON({ - command = 0x40006, -- window_id_res - appid = win.appid, - pid = win.pid, - res = m:JSON({ - window = m:JSON({ - ECU = "", - display = "", - layer = "", - layout = "", - area = "", - dispatchApp = "", - role = win.name, - resourceId = win.surface - }) - }) - }) - if verbose > 0 then - print("### <== sending " .. - command_name(resmsg.command) .. - " message to '" .. onscreen .. "'") - if verbose > 1 then - print(resmsg) - end - end - sc:send_message(onscreen, resmsg); - end - elseif oper == 2 then -- destroy - resclnt:resource_set_destroy("screen", win.surface) - special_screen_sets[win.surface] = nil - elseif oper == 6 then -- active - if win.active then - local i = input_layer[win.layertype] - local p = self:application(win.appid) - local s = p.privileges.screen - local surface = win.surface - if not i and s ~= "system" then - resclnt:resource_set_acquire("screen",surface) - resmgr:window_raise(win.appid, surface, 1) - end - end - end - end, - - layer_update = function(self, oper, layer, mask) - if verbose > 0 then - print("### LAYER UPDATE:" .. - layer_operation_name(oper) .. - " mask: " .. tostring(mask)) - if verbose > 1 then - print(layer) - end - end - if oper == 3 then -- visible - local command = 0x10008 -- change_layer - local msg = m:JSON({ - command = command, - appid = "", - arg = m:JSON({layer = layer.id, - visible = layer.visible - }) - }) - if verbose > 0 then - print("### <== sending "..command_name(command).. - " layer message") - if verbose > 1 then - print(msg) - end - end - sc:send_message(homescreen, msg) - else - if verbose > 0 then - print("### nothing to do") - end - end - end, - - output_update = function(self, oper, out, mask) - local idx = out.index - local defidx = self.output_order[idx+1] - if verbose > 0 then - print("### OUTPUT UPDATE:" .. oper .. - " mask: "..tostring(mask)) - end - if not defidx then - return - end - print(out) - local outdef = self.outputs[defidx+1] - if (oper == 1) then -- create - if outdef then - self:output_request(m:JSON({index = idx, - id = outdef.id, - name = outdef.name - })) - end - elseif (oper == 5) then -- done - local ads = outdef.areas - local on = outdef.name - if ads then - for name,ad in pairs(ads) do - local can = wmgr:canonical_name(on.."."..name) - local a = m:JSON({name = name, - output = out.index}) - for fld,val in pairs(ad) do - a[fld] = self:geometry(out.width, - out.height, - val) - end - self:area_create(a) - resmgr:area_create(area[can], outdef.zone) - end - end - end - end -} - - -imgr = input_manager { - inputs = {{ name = "G27 Racing Wheel", - id = 0, - switch = { [2] = {appid="org.tizen.ico.app-soundsample" }, - [3] = {appid="org.tizen.ico.homescreen", keycode=1}, - [4] = {appid="org.tizen.ico.app-soundsample" }, - [5] = {appid="org.tizen.ico.homescreen", keycode=2} - }} - }, - - manager_update = function(self, oper) - if verbose > 0 then - print("### <== INPUT MANAGER UPDATE:" .. - input_manager_operation_name(oper)) - end - end, - - input_update = function(self, oper, inp, mask) - if verbose > 0 then - print("### INPUT UPDATE:" .. - input_operation_name(oper) .. - " mask: " .. tostring(mask)) - if verbose > 1 then - print(inp) - end - end - end, - code_update = function(self, oper, code, mask) - if verbose > 0 then - print("### CODE UPDATE: mask: " .. tostring(mask)) - if verbose > 1 then - print(code) - end - end - local msg = m:JSON({ command = 1, - appid = "org.tizen.ico.homescreen", - arg = m:JSON({ device = code.device, - time = code.time, - input = code.input, - code = code.id, - state = code.state - }) - }) - if verbose > 0 then - print("### <== sending " .. - command_name(msg.command) .. - " input message") - if verbose > 1 then - print(msg) - end - end - sc:send_message(homescreen, msg) - end -} - -sc = m:get_system_controller() - --- resource sets -sets = {} - --- special screen resource sets --- TODO: just rewrite screen resource handling to use regular resource API - -special_screen_sets = {} - --- user manager -um = m:UserManager() - -connected = false -homescreen = "" -onscreen = "" - -cids = {} - --- these shoud be before wmgr:connect() is called -if verbose > 0 then - print("====== creating applications ======") -end -application { - appid = "default", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - resource_class = "player", - screen_priority = 0 -} - -application { - appid = "weston", - area = "Center.Full", - privileges = { screen = "system", audio = "none" }, - resource_class = "implicit", - screen_priority = 30 -} - -application { - appid = "org.tizen.ico.homescreen", - area = "Center.Full", - windows = { {'ico_hs_controlbarwindow', 'Center.Control'} }, - privileges = { screen = "system", audio = "system" }, - resource_class = "player", - screen_priority = 20 -} - -application { - appid = "org.tizen.ico.statusbar", - area = "Center.Status", - privileges = { screen = "system", audio = "none" }, - resource_class = "player", - screen_priority = 20 -} - -application { - appid = "org.tizen.ico.onscreen", - area = "Center.Full", - privileges = { screen = "system", audio = "system" }, - resource_class = "player", - screen_priority = 20 -} - -application { - appid = "org.tizen.ico.login", - area = "Center.Full", - privileges = { screen = "system", audio = "system" }, - resource_class = "player", - screen_priority = 20 -} - -application { - appid = "org.tizen.ico.camera_left", - area = "Center.SysApp.Left", - privileges = { screen = "system", audio = "none" }, - requisites = { screen = "blinker_left", audio = "none" }, - resource_class = "player", - screen_priority = 30 -} - -application { - appid = "org.tizen.ico.camera_right", - area = "Center.SysApp.Right", - privileges = { screen = "system", audio = "none" }, - requisites = { screen = "blinker_right", audio = "none" }, - resource_class = "player", - screen_priority = 30 -} - -application { - appid = "net.zmap.navi", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - resource_class = "navigator", - screen_priority = 30 -} - -application { - appid = "GV3ySIINq7.GhostCluster", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - resource_class = "system", - requisites = { screen = "driving", audio = "none" }, - screen_priority = 30 -} - -application { - appid = "MediaPlayer", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - requisites = { screen = "driving", audio = "none" }, - resource_class = "player", - screen_priority = 0 -} - -application { - appid = "MyMediaPlayer", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - requisites = { screen = "driving", audio = "none" }, - resource_class = "player", - screen_priority = 0 -} - -application { - appid = "MeterWidget", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - requisites = { screen = "driving", audio = "none" }, - resource_class = "player", - screen_priority = 0 -} - -application { - appid = "org.tizen.ico.app-soundsample", - area = "Center.Full", - privileges = { screen = "none", audio = "none" }, - -- uncomment the next line to make the app exempt from regulation - -- requisites = { screen = "driving", audio = "none" }, - resource_class = "player", - screen_priority = 0 -} - - -if sc then - sc.client_handler = function (self, cid, msg) - local command = msg.command - local appid = msg.appid - if verbose > 0 then - print('### ==> client handler:') - if verbose > 1 then - print(msg) - end - end - - -- known commands: 1 for SEND_APPID, synthetic command 0xFFFF for - -- disconnection - - if command == 0xFFFF then - if verbose > 1 then - print('client ' .. cid .. ' disconnected') - end - if msg.appid == homescreen then - homescreen = "" - for i,v in pairs(special_screen_sets) do - resclnt:resource_set_destroy("screen", i) - special_screen_sets[i] = nil - end - end - return - end - - -- handle the connection to weston - - if appid then - if appid == "org.tizen.ico.homescreen" then - print('Setting homescreen='..appid) - homescreen = appid - if command and command == 1 then - send_driving_mode_to(homescreen) - send_night_mode_to(homescreen) - end - elseif appid == "org.tizen.ico.onscreen" then - onscreen = appid - if command and command == 1 then - send_driving_mode_to(onscreen) - send_night_mode_to(onscreen) - end - end - - if not connected and appid == "org.tizen.ico.homescreen" then - print('Trying to connect to weston...') - connected = wmgr:connect() - end - cids[cid] = appid - end - end - - sc.generic_handler = function (self, cid, msg) - if verbose > 0 then - print('### ==> generic handler:') - if verbose > 1 then - print(msg) - end - end - end - - sc.window_handler = function (self, cid, msg) - if verbose > 0 then - print('### ==> received ' .. - command_name(msg.command) .. ' message from ' .. cids[cid]) - if verbose > 1 then - print(tostring(msg)) - end - end - - local a = animation({}) - local nores = false - if msg.command == 0x10003 then -- ico SHOW command - local raise_mask = 0x01000000 - local lower_mask = 0x02000000 - local nores_mask = 0x40000000 - local time_mask = 0x00ffffff - - local surface = msg.arg.surface - local system_surface = false - local appdb = wmgr:application(msg.appid) - system_surface = appdb.privileges.screen == "system" - - msg.arg.visible = 1 - - if msg.arg then - local time = 200 - if msg.arg.anim_time then - local t = msg.arg.anim_time - -- the actual time for the animation - time = m:AND(t, time_mask) - -- flag for ignoring resource control - nores = m:AND(t, nores_mask) - if m:AND(t, raise_mask) then - msg.arg.raise = 1 - elseif m:AND(t, lower_mask) then - msg.arg.raise = 0 - end - end - if msg.arg.anim_name then - a.show = { msg.arg.anim_name, time } - print('time: ' .. tostring(time)) - end - end - - -- all show messages from system surfaces are forced - if not nores and system_surface then - nores = true - if not msg.arg.raise then - msg.arg.raise = 1 - end - end - - if verbose > 2 then - print('### ==> SHOW') - print(tostring(msg.arg) .. ", system_surface=" .. tostring(system_surface)) - end - - if nores then - wmgr:window_request(msg.arg, a, 0) - - -- only non-system surfaces have resource sets - if not system_surface then - resclnt:resource_set_acquire("screen", surface) - end - else - resclnt:resource_set_acquire("screen", surface) - resmgr:window_raise(msg.appid, surface, 1) - end - elseif msg.command == 0x10004 then -- ico HIDE command - local raise_mask = 0x01000000 - local lower_mask = 0x02000000 - local nores_mask = 0x40000000 - local time_mask = 0x00ffffff - msg.arg.visible = 0 - if msg.arg then - local time = 200 - if msg.arg.anim_time then - local t = msg.arg.anim_time - -- the actual time for the animation - time = m:AND(t, time_mask) - -- flag for ignoring resource control - nores = m:AND(t, nores_mask) - end - if msg.arg.anim_name then - a.hide = { msg.arg.anim_name, time } - print('hide animation time: ' .. tostring(a.hide[2])) - end - end - if not nores then - local p = wmgr:application(msg.appid) - local s = p.privileges.screen - if s == "system" then - nores = true - msg.arg.raise = 0 - end - end - if verbose > 2 then - print('### ==> HIDE REQUEST') - print(tostring(msg.arg)) - end - if nores then - wmgr:window_request(msg.arg, a, 0) - else - resmgr:window_raise(msg.appid, msg.arg.surface, -1) - end - elseif msg.command == 0x10005 then -- ico MOVE - if verbose > 2 then - print('### ==> MOVE REQUEST') - print(tostring(msg.arg)) - end - if msg.arg.zone then - msg.arg.area = msg.arg.zone - end - wmgr:window_request(msg.arg, a, 0) - -- TODO: handle if area changed - elseif msg.command == 0x10007 then -- ico CHANGE_ACTIVE - if not msg.arg.active then - msg.arg.active = 3 -- pointer + keyboard - end - if verbose > 2 then - print('### ==> CHANGE_ACTIVE REQUEST') - print(tostring(msg.arg)) - end - wmgr:window_request(msg.arg, a, 0) - elseif msg.command == 0x10008 then -- ico CHANGE_LAYER - if verbose > 2 then - print('### ==> CHANGE_LAYER REQUEST') - print(tostring(msg.arg)) - end - --[[ - if msg.arg.layer ~= 4 or msg.arg.layer ~= 5 then - print("do not change layer for other than cursor or touch") - return - end - --]] - wmgr:window_request(msg.arg, a, 0) - elseif msg.command == 0x10020 then -- ico MAP_THUMB - local framerate = msg.arg.framerate - local animname = msg.arg.anim_name - if animname then - a.map = { animname, 1 } - if not framerate or framerate < 0 then - framerate = 5 - end - msg.arg.mapped = 1 - if verbose > 2 then - print('### ==> MAP_THUMB REQUEST') - print(msg.arg) - print('framerate: '..framerate) - end - wmgr:window_request(msg.arg, a, framerate) - end - elseif msg.command == 0x10021 then -- ico UNMAP_THUMB - msg.arg.mapped = 0 - if verbose > 2 then - print('### ==> UNMAP_THUMB REQUEST') - print(msg.arg) - end - wmgr:window_request(msg.arg, a, 0) ---[[ - elseif msg.command == 0x10013 then -- ico MAP_BUFFER command - local shmname = msg.arg.anim_name - local bufsize = msg.arg.width - local bufnum = msg.arg.height - if shmname and bufsize and bufnum then - if verbose > 2 then - print('### ==> MAP_BUFFER REQUEST') - print("shmaname='" .. shmname .. - "' bufsize='" .. bufsize .. - " bufnum=" .. bufnum) - end - wmgr:buffer_request(shmname, bufsize, bufnum) - end ---]] - elseif msg.command == 0x10030 then -- ico SHOW_LAYER command - msg.arg.visible = 1 - if verbose > 2 then - print('### ==> SHOW_LAYER REQUEST') - print(msg.arg) - end - wmgr:layer_request(msg.arg) - elseif msg.command == 0x10031 then -- ico HIDE_LAYER command - msg.arg.visible = 0 - if verbose > 2 then - print('### ==> HIDE_LAYER REQUEST') - print(msg.arg) - end - wmgr:layer_request(msg.arg) - end - end - - sc.input_handler = function (self, cid, msg) - if verbose > 0 then - print('### ==> input handler: ' .. command_name(msg.command)) - if verbose > 1 then - print(msg) - end - end - if msg.command == 0x20001 then -- add_input - msg.arg.appid = msg.appid - if verbose > 2 then - print('### ==> ADD_INPUT REQUEST') - print(tostring(msg.arg)) - end - imgr:input_request(msg.arg) - elseif msg.command == 0x20002 then -- del_input - msg.arg.appid = '' - if verbose > 2 then - print('### ==> DEL_INPUT REQUEST') - print(tostring(msg.arg)) - end - imgr:input_request(msg.arg) - -- elseif msg.command == 0x20003 then -- send_input - end - end - - sc.user_handler = function (self, cid, msg) - if verbose > 0 then - print('### ==> user handler: ' .. command_name(msg.command)) - if verbose > 1 then - print(msg) - end - end - - if not um then - print("User Manager not initialized") - return - end - - if msg.command == 0x30001 then -- change_user - print("command CHANGE_USER") - if not msg.arg then - print("invalid message") - return - end - - username = msg.arg.user - passwd = msg.arg.pass - - if not username then - username = "" - end - - if not passwd then - passwd = "" - end - - success = um:changeUser(username, passwd) - - if not success then - reply = m.JSON({ - appid = msg.appid, - command = cmd - }) - if sc:send_message(msg.appid, reply) then - print('*** sent authentication failed message') - else - print('*** failed to send authentication failed message') - end - end - - elseif msg.command == 0x30002 then -- get_userlist - print("command GET_USERLIST") - if not msg.appid then - print("invalid message") - return - end - - users, currentUser = um:getUserList() - - if not users then - print("failed to get user list") - return - end - - nUsers = 0 - - for i,v in pairs(users) do - nUsers = nUsers + 1 - end - - if not currentUser then - currentUser = "" - end - - if verbose > 1 then - print("current user: " .. currentUser) - print("user list:") - for i,v in pairs(users) do - print(v) - end - end - - reply = m.JSON({ - appid = msg.appid, - command = cmd, - arg = m.JSON({ - user_num = nUsers, - user_list = users, - user_login = currentUser - }) - }) - - if verbose > 1 then - print("### <== GetUserList reply: " .. tostring(reply)) - end - - if sc:send_message(msg.appid, reply) then - print('*** reply OK') - else - print('*** reply FAILED') - end - - elseif msg.command == 0x30003 then -- get_lastinfo - print("command GET_LASTINFO") - if not msg.appid then - print("invalid message") - return - end - - lastInfo = um:getLastInfo(msg.appid) - - if not lastInfo then - print("failed to get last info for app" .. msg.appid) - return - end - - reply = m.JSON({ - appid = msg.appid, - command = cmd, - arg = m.JSON({ - lastinfo = lastinfo - }) - }) - - if sc:send_message(msg.appid, reply) then - print('*** reply OK') - else - print('*** reply FAILED') - end - - elseif msg.command == 0x30004 then -- set_lastinfo - print("command SET_LASTINFO") - if not msg.arg or not msg.appid then - print("invalid message") - return - end - - lastInfo = um:setLastInfo(msg.appid, msg.arg.lastinfo) - end - end - - sc.resource_handler = function (self, cid, msg) - if verbose > 0 then - print('### ==> resource handler: ' .. command_name(msg.command)) - if verbose > 1 then - print(msg) - end - end - - getKey = function (msg) - -- Field rset.key is an id for distinguishing between rsets. All - -- resource types appear to contain a different key. Just pick one - -- based on what we have on the message. - - key = nil - - if msg and msg.res then - if msg.res.sound then - key = msg.res.sound.id - elseif msg.res.input then - key = msg.res.input.name - elseif msg.res.window then - -- alarm! this appars to be non-unique? - key = msg.res.window.resourceId - end - end - - return key - end - - createResourceSet = function (ctl, client, msg) - cb = function(rset) - - -- m:info("*** resource_cb: client = '" .. msg.appid .. "'") - - -- type is either basic (0) or interrupt (1) - requestType = 0 - if msg.res.type then - requestType = msg.res.type - end - - if rset.data.filter_first then - rset.data.filter_first = false - return - end - - if rset.acquired then - cmd = 0x00040001 -- acquire - - if msg.appid == onscreen then - -- notifications are valid only for a number of seconds - rset.timer = m:Timer({ - interval = 5000, - oneshot = true, - callback = function (t) - m:info("notification timer expired") - - if rset.data then - reply.res.window = rset.data.window - end - - rset:release() - rset.timer = nil - - -- Send a "RELEASE" message to client. - -- This triggers the resource deletion - -- cycle in OnScreen. - - reply = m.JSON({ - appid = msg.appid, - command = cmd, - res = { - type = requestType - } - }) - - sc:send_message(client, reply) - end - }) - end - else - cmd = 0x00040002 -- release - if rset.timer then - rset.timer.callback = nil - rset.timer = nil - end - end - - reply = m.JSON({ - appid = msg.appid, - command = cmd, - res = { - type = requestType - } - }) - - if rset.data.sound then - reply.res.sound = rset.data.sound - end - - if rset.data.window then - reply.res.window = rset.data.window - end - - if rset.data.input then - reply.res.input = rset.data.input - end - - if rset.acquired then - m:info("resource cb: 'acquire' reply to client " .. client) - else - m:info("resource cb: 'release' reply to client " .. client) - end - - if not sc:send_message(client, reply) then - m:info('*** reply FAILED') - end - end - - local rset = m:ResourceSet({ - application_class = "player", - zone = "driver", -- msg.zone ("full") - callback = cb - }) - - rset.data = { - cid = cid, - ctl = ctl, - filter_first = true - } - - if msg.res.sound then - rset:addResource({ - resource_name = "audio_playback" - }) - rset.resources.audio_playback.attributes.pid = tostring(msg.pid) - rset.resources.audio_playback.attributes.appid = msg.appid - print("sound name: " .. msg.res.sound.name) - print("sound zone:" .. msg.res.sound.zone) - print("sound adjust: " .. tostring(msg.res.sound.adjust)) - - rset.data.sound = msg.res.sound - end - - if msg.res.input then - rset:addResource({ - resource_name = "input" - }) - rset.resources.input.attributes.pid = tostring(msg.pid) - rset.resources.input.attributes.appid = msg.appid - print("input name: " .. msg.res.input.name) - print("input event:" .. tostring(msg.res.input.event)) - - rset.data.input = msg.res.input - end - - if msg.res.window then - rset:addResource({ - resource_name = "screen", - shared = true - }) - rset.resources.screen.attributes.pid = tostring(msg.pid) - rset.resources.screen.attributes.appid = msg.appid - rset.resources.screen.attributes.surface = msg.res.window.resourceId - complete_area = msg.res.window.display .. '.' .. msg.res.window.area - rset.resources.screen.attributes.area = complete_area - if msg.appid == onscreen then - rset.resources.screen.attributes.classpri = 1 - else - rset.resources.screen.attributes.classpri = 0 - end - - rset.data.window = msg.res.window - end - - rset.key = getKey(msg) - - return rset - end - - -- parse the message - - -- fields common to all messages: - -- msg.command - -- msg.appid - -- msg.pid - - if msg.command == 0x40011 then -- create_res - print("command CREATE_RES") - key = getKey(msg) - - if key then - if not sets.cid then - sets.cid = {} - end - sets.cid[key] = createResourceSet(self, cid, msg) - end - - elseif msg.command == 0x40012 then -- destroy_res - print("command DESTROY_RES") - key = getKey(msg) - - if key then - if sets.cid and sets.cid[key] then - sets.cid[key]:release() - sets.cid[key].timer = nil - sets.cid[key] = nil -- garbage collecting - end - end - - elseif msg.command == 0x40001 then -- acquire_res - print("command ACQUIRE_RES") - key = getKey(msg) - - if key then - if not sets.cid then - sets.cid = {} - end - if not sets.cid[key] then - sets.cid[key] = createResourceSet(self, cid, msg) - end - print("acquiring the resource set") - sets.cid[key]:acquire() - end - - elseif msg.command == 0x40002 then -- release_res - print("command RELEASE_RES") - - key = getKey(msg) - - if key then - if sets.cid and sets.cid[key] then - sets.cid[key]:release() - - if msg.appid == onscreen then - -- in case of OnScreen, this actually means that the - -- resource set is never used again; let gc do its job - sets.cid[key].timer = nil - sets.cid[key] = nil -- garbage collecting - end - end - end - - elseif msg.command == 0x40003 then -- deprive_res - print("command DEPRIVE_RES") - - elseif msg.command == 0x40004 then -- waiting_res - print("command WAITING_RES") - - elseif msg.command == 0x40005 then -- revert_res - print("command REVERT_RES") - end - end - - sc.inputdev_handler = function (self, cid, msg) - if verbose > 0 then - print('*** inputdev handler: ' .. command_name(msg.command)) - if verbose > 1 then - print(msg) - end - end - end - - sc.notify_handler = function (self, cid, msg) - if verbose > 0 then - print('### notify handler: ' .. command_name(msg.command)) - if verbose > 1 then - print(msg) - end - end - end -end - -function send_driving_mode_to(client) - if client == "" then - return - end - - local driving_mode = mdb.select.select_driving_mode.single_value - - if not driving_mode then driving_mode = 0 end - - local reply = m:JSON({ command = 0x60001, - arg = m:JSON({ stateid = 1, - state = driving_mode - }) - }) - - if verbose > 0 then - print("### <== sending " .. command_name(reply.command) .. " message") - if verbose > 1 then - print(reply) - end - end - - sc:send_message(client, reply) -end - -function send_night_mode_to(client) - if client == "" then - return - end - - local night_mode = mdb.select.select_night_mode.single_value - - if not night_mode then night_mode = 0 end - - local reply = m:JSON({ command = 0x60001, - arg = m:JSON({ stateid = 2, - state = night_mode - }) - }) - - if verbose > 0 then - print("### <== sending " .. command_name(reply.command) .. " message") - if verbose > 1 then - print(reply) - end - end - - sc:send_message(client, reply) -end - --- we should have 'audio_playback' defined by now -m:try_load_plugin('telephony') diff --git a/packaging.in/murphy.spec.in b/packaging.in/murphy.spec.in deleted file mode 100644 index 445452b..0000000 --- a/packaging.in/murphy.spec.in +++ /dev/null @@ -1,596 +0,0 @@ -# By default we build with distro-default compilation flags which -# enables optimizations. If you want to build with full debugging -# ie. with optimization turned off and full debug info (-O0 -g3) -# pass '--with debug' to rpmbuild on the command line. Similary -# you can chose to compile with/without pulse, ecore, glib, qt, -# dbus, and telephony support. --without squashpkg will prevent -# squashing the -core and -plugins-base packages into the base -# murphy package. - -%{!?_with_debug:%{!?_without_debug:%define _without_debug 0}} -%{!?_with_lua:%{!?_without_lua:%define _with_lua 1}} -%{!?_with_pulse:%{!?_without_pulse:%define _with_pulse 1}} -%{!?_with_ecore:%{!?_without_ecore:%define _with_ecore 1}} -%{!?_with_glib:%{!?_without_glib:%define _with_glib 1}} -%{!?_with_qt:%{!?_without_qt:%define _without_qt 1}} -%{!?_with_dbus:%{!?_without_dbus:%define _with_dbus 1}} -%{!?_with_telephony:%{!?_without_telephony:%define _with_telephony 1}} -%{!?_with_audiosession:%{!?_without_audiosession:%define _with_audiosession 1}} -%{!?_with_websockets:%{!?_without_websockets:%define _with_websockets 1}} -%{!?_with_smack:%{!?_without_smack:%define _with_smack 1}} -%{!?_with_squashpkg:%{!?_without_squashpkg:%define _with_squashpkg 1}} - -# TODO: take care of /lib vs /lib64... -%define systemddir /lib/systemd - -Summary: Murphy policy framework -Name: murphy -Version: @VERSION@ -Release: 1 -License: BSD-3-Clause -Group: System/Service -URL: http://01.org/murphy/ -Source0: %{name}-%{version}.tar.gz -@DECLARE_PATCHES@ -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%endif - -Requires(post): /bin/systemctl -Requires(postun): /bin/systemctl - -BuildRequires: flex -BuildRequires: bison -BuildRequires: pkgconfig(lua) -BuildRequires: pkgconfig(libsystemd-daemon) -BuildRequires: pkgconfig(libsystemd-journal) - -BuildRequires: pkgconfig(wayland-client) -BuildRequires: pkgconfig(ivi-extension-protocol) -BuildRequires: ico-uxf-weston-plugin-devel - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -BuildRequires: pkgconfig(libpulse) -%endif -%if %{?_with_ecore:1}%{!?_with_ecore:0} -BuildRequires: pkgconfig(ecore) -BuildRequires: mesa-libEGL -BuildRequires: mesa-libGLESv2 -%endif -%if %{?_with_glib:1}%{!?_with_glib:0} -BuildRequires: pkgconfig(glib-2.0) -%endif -%if %{?_with_qt:1}%{!?_with_qt:0} -BuildRequires: pkgconfig(QtCore) -%endif -%if %{?_with_dbus:1}%{!?_with_dbus:0} -BuildRequires: pkgconfig(dbus-1) -%endif -%if %{?_with_telephony:1}%{!?_with_telephony:0} -BuildRequires: pkgconfig(ofono) -%endif -%if %{?_with_audiosession:1}%{!?_with_audiosession:0} -BuildRequires: pkgconfig(audio-session-mgr) -%endif -%if %{?_with_websockets:1}%{!?_with_websockets:0} -BuildRequires: libwebsockets-devel -%endif -BuildRequires: pkgconfig(json) - -%if %{?_with_smack:1}%{!?_with_smack:0} -BuildRequires: pkgconfig(libsmack) -%endif - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%package core -Summary: Murphy core runtime libraries -Group: System/Libraries - -%package plugins-base -Summary: The basic set of Murphy plugins -Group: System/Service -Requires: %{name} = %{version} -Requires: %{name}-core = %{version} -%endif - -%package devel -Summary: The header files and libraries needed for Murphy development -Group: System/Libraries -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif -Requires: libjson-devel - -%package doc -Summary: Documentation for Murphy -Group: SDK/Documentation - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -%package pulse -Summary: Murphy PulseAudio mainloop integration -Group: System/Libraries -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif - -%package pulse-devel -Summary: Murphy PulseAudio mainloop integration development files -Group: System/Libraries -Requires: %{name}-pulse = %{version} -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif -%endif - -%if %{?_with_ecore:1}%{!?_with_ecore:0} -%package ecore -Summary: Murphy EFL/ecore mainloop integration -Group: System/Libraries -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif - -%package ecore-devel -Summary: Murphy EFL/ecore mainloop integration development files -Group: System/Libraries -Requires: %{name}-ecore = %{version} -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif -%endif - -%if %{?_with_glib:1}%{!?_with_glib:0} -%package glib -Summary: Murphy glib mainloop integration -Group: System/Libraries -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif - -%package glib-devel -Summary: Murphy glib mainloop integration development files -Group: System/Libraries -Requires: %{name}-glib = %{version} -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif -%endif - -%if %{?_with_qt:1}%{!?_with_qt:0} -%package qt -Summary: Murphy Qt mainloop integration -Group: System/Libraries -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif - -%package qt-devel -Summary: Murphy Qt mainloop integration development files -Group: System/Libraries -Requires: %{name}-qt = %{version} -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif -%endif - -%package tests -Summary: Various test binaries for Murphy -Group: System/Testing -Requires: %{name} = %{version} -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -Requires: %{name}-core = %{version} -%else -Requires: %{name} = %{version} -%endif - -%description -This package contains the basic daemon. - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%description core -This package contains the core runtime libraries. - -%description plugins-base -This package contains a basic set of plugins. -%endif - -%description devel -This package contains header files and libraries necessary for development. - -%description doc -This package contains documentation. - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -%description pulse -This package contains the Murphy PulseAudio mainloop integration runtime files. - -%description pulse-devel -This package contains the Murphy PulseAudio mainloop integration development -files. -%endif - -%if %{?_with_ecore:1}%{!?_with_ecore:0} -%description ecore -This package contains the Murphy EFL/ecore mainloop integration runtime files. - -%description ecore-devel -This package contains the Murphy EFL/ecore mainloop integration development -files. -%endif - -%if %{?_with_glib:1}%{!?_with_glib:0} -%description glib -This package contains the Murphy glib mainloop integration runtime files. - -%description glib-devel -This package contains the Murphy glib mainloop integration development -files. -%endif - -%if %{?_with_qt:1}%{!?_with_qt:0} -%description qt -This package contains the Murphy Qt mainloop integration runtime files. - -%description qt-devel -This package contains the Murphy Qt mainloop integration development -files. -%endif - -%description tests -This package contains various test binaries for Murphy. - -%prep -%setup -q -@APPLY_PATCHES@ - -%build -%if %{?_with_debug:1}%{!?_with_debug:0} -export CFLAGS="-O0 -g3" -V="V=1" -%endif - -CONFIG_OPTIONS="" -DYNAMIC_PLUGINS="domain-control" - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-pulse" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-pulse" -%endif - -%if %{?_with_ecore:1}%{!?_with_ecore:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-ecore" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-ecore" -%endif - -%if %{?_with_glib:1}%{!?_with_glib:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-glib" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-glib" -%endif - -%if %{?_with_qt:1}%{!?_with_qt:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-qt" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-qt" -%endif - -%if %{?_with_dbus:1}%{!?_with_dbus:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-dbus" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-dbus" -%endif - -%if %{?_with_telephony:1}%{!?_with_telephony:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-telephony" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-telephony" -%endif - -%if %{?_with_audiosession:1}%{!?_with_audiosession:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-resource-asm" -DYNAMIC_PLUGINS="$DYNAMIC_PLUGINS,resource-asm" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-resource-asm" -%endif - -%if %{?_with_websockets:1}%{!?_with_websockets:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-websockets" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-websockets" -%endif - -%if %{?_with_smack:1}%{!?_with_smack:0} -CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-smack" -%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-smack" -%endif - -NUM_CPUS="`cat /proc/cpuinfo | tr -s '\t' ' ' | \ - grep '^processor *:' | wc -l`" -[ -z "$NUM_CPUS" ] && NUM_CPUS=1 - -./bootstrap && \ - %configure $CONFIG_OPTIONS --with-dynamic-plugins=$DYNAMIC_PLUGINS && \ - make clean && \ - make -j$(($NUM_CPUS + 1)) $V - -%install -rm -rf $RPM_BUILD_ROOT -%make_install - -# Make sure we have a plugin dir even if all the basic plugins -# are configured to be built in. -mkdir -p $RPM_BUILD_ROOT%{_libdir}/murphy/plugins - -# Get rid of any *.la files installed by libtool. -rm -f $RPM_BUILD_ROOT%{_libdir}/*.la - -# Clean up also the murphy DB installation. -rm -f $RPM_BUILD_ROOT%{_libdir}/murphy/*.la - -# Generate list of linkedin plugins (depends on the configuration). -outdir="`pwd`" -pushd $RPM_BUILD_ROOT >& /dev/null && \ - find ./%{_libdir}/murphy/plugins -name libmurphy-plugin-*.so* | \ - sed 's#^./*#/#g' > $outdir/filelist.plugins-base && \ -popd >& /dev/null - -# Generate list of header files, filtering ones that go to subpackages. -outdir="`pwd`" -pushd $RPM_BUILD_ROOT >& /dev/null && \ - find ./%{_includedir}/murphy | \ - egrep -v '((pulse)|(ecore)|(glib)|(qt))-glue' | \ - sed 's#^./*#/#g' > $outdir/filelist.devel-includes && \ -popd >& /dev/null - -# Replace the default sample/test config files with the packaging ones. -cp packaging.in/murphy-lua.conf $RPM_BUILD_ROOT%{_sysconfdir}/murphy/murphy.conf -cp packaging.in/murphy.lua $RPM_BUILD_ROOT%{_sysconfdir}/murphy/murphy.lua - -# Copy plugin configuration files in place. -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/murphy/plugins/amb -cp packaging.in/amb-config.lua \ - $RPM_BUILD_ROOT%{_sysconfdir}/murphy/plugins/amb/config.lua - -# Copy the systemd service file in place. -mkdir -p $RPM_BUILD_ROOT%{systemddir}/system -cp packaging.in/murphyd.service $RPM_BUILD_ROOT%{systemddir}/system - -%if %{?_with_dbus:1}%{!?_with_dbus:0} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d -cp packaging.in/org.Murphy.conf $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d/org.Murphy.conf -%endif - -%clean -rm -rf $RPM_BUILD_ROOT - -%post -/bin/systemctl enable murphyd.service - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%post core -%endif -ldconfig - -%postun -if [ "$1" = "0" ]; then - /bin/systemctl disable murphyd.service -fi - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%postun core -%endif -ldconfig - -%if %{?_with_glib:1}%{!?_with_glib:0} -%post glib -ldconfig - -%postun glib -ldconfig -%endif - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -%post pulse -ldconfig - -%postun pulse -ldconfig -%endif - -%if %{?_with_ecore:1}%{!?_with_ecore:0} -%post ecore -ldconfig - -%postun ecore -ldconfig -%endif - -%if %{?_with_qt:1}%{!?_with_qt:0} -%post qt -lfconfig - -%postun qt -ldconfig -%endif - -%if %{?_with_squashpkg:1}%{!?_with_squashpkg:0} -%files -f filelist.plugins-base -%else -%files -%endif -%defattr(-,root,root,-) -%{_bindir}/murphyd -%config %{_sysconfdir}/murphy -%{systemddir}/system/murphyd.service -%if %{?_with_audiosession:1}%{!?_with_audiosession:0} -%{_sbindir}/asm-bridge -%endif -%if %{?_with_dbus:1}%{!?_with_dbus:0} -%{_sysconfdir}/dbus-1/system.d -%config %{_sysconfdir}/dbus-1/system.d/org.Murphy.conf -%endif -%if %{?_with_websockets:1}%{!?_with_websockets:0} -%{_datadir}/murphy -%endif - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%files core -%defattr(-,root,root,-) -%endif -%{_libdir}/libmurphy-common.so.* -%{_libdir}/libmurphy-core.so.* -%{_libdir}/libmurphy-resolver.so.* -%{_libdir}/libmurphy-resource.so.* -%{_libdir}/libmurphy-resource-backend.so.* -%if %{?_with_lua:1}%{!?_with_lua:0} -%{_libdir}/libmurphy-lua-utils.so.* -%{_libdir}/libmurphy-lua-decision.so.* -%endif -%{_libdir}/libmurphy-domain-controller.so.* -%{_libdir}/murphy/*.so.* -%{_libdir}/libbreedline*.so.* -%if %{?_with_dbus:1}%{!?_with_dbus:0} -%{_libdir}/libmurphy-dbus.so.* -%endif - -%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1} -%files plugins-base -f filelist.plugins-base -%defattr(-,root,root,-) -%endif -%{_libdir}/murphy/plugins - -%files devel -f filelist.devel-includes -%defattr(-,root,root,-) -# %{_includedir}/murphy/config.h -# %{_includedir}/murphy/common.h -# #%{_includedir}/murphy/core.h -# %{_includedir}/murphy/common -# %{_includedir}/murphy/core -# %{_includedir}/murphy/resolver -# %{_includedir}/murphy/resource -# # hmmm... should handle disabled plugins properly. -# %{_includedir}/murphy/domain-control -# %{_includedir}/murphy/plugins -%{_includedir}/murphy-db -%{_libdir}/libmurphy-common.so -%{_libdir}/libmurphy-core.so -%{_libdir}/libmurphy-resolver.so -%{_libdir}/libmurphy-resource.so -%{_libdir}/libmurphy-resource-backend.so -%if %{?_with_lua:1}%{!?_with_lua:0} -%{_libdir}/libmurphy-lua-utils.so -%{_libdir}/libmurphy-lua-decision.so -%endif -%{_libdir}/libmurphy-domain-controller.so -%{_libdir}/murphy/*.so -%{_libdir}/pkgconfig/murphy-common.pc -%{_libdir}/pkgconfig/murphy-core.pc -%{_libdir}/pkgconfig/murphy-resolver.pc -#%{_libdir}/pkgconfig/murphy-resource.pc -%if %{?_with_lua:1}%{!?_with_lua:0} -%{_libdir}/pkgconfig/murphy-lua-utils.pc -%{_libdir}/pkgconfig/murphy-lua-decision.pc -%endif -%{_libdir}/pkgconfig/murphy-domain-controller.pc -%{_libdir}/pkgconfig/murphy-db.pc -%{_libdir}/pkgconfig/murphy-resource.pc -%{_includedir}/breedline -%{_libdir}/libbreedline*.so -%{_libdir}/pkgconfig/breedline*.pc -%if %{?_with_dbus:1}%{!?_with_dbus:0} -#%{_includedir}/murphy/dbus -%{_libdir}/libmurphy-dbus.so -%{_libdir}/pkgconfig/murphy-dbus.pc -%endif - -%files doc -%defattr(-,root,root,-) -%doc %{_docdir}/../murphy/AUTHORS -%doc %{_docdir}/../murphy/CODING-STYLE -%license %{_docdir}/../murphy/COPYING -%doc %{_docdir}/../murphy/ChangeLog -%doc %{_docdir}/../murphy/INSTALL -%doc %{_docdir}/../murphy/NEWS -%doc %{_docdir}/../murphy/README - -%if %{?_with_pulse:1}%{!?_with_pulse:0} -%files pulse -%defattr(-,root,root,-) -%{_libdir}/libmurphy-pulse.so.* - -%files pulse-devel -%defattr(-,root,root,-) -%{_includedir}/murphy/common/pulse-glue.h -%{_libdir}/libmurphy-pulse.so -%{_libdir}/pkgconfig/murphy-pulse.pc -%endif - -%if %{?_with_ecore:1}%{!?_with_ecore:0} -%files ecore -%defattr(-,root,root,-) -%{_libdir}/libmurphy-ecore.so.* - -%files ecore-devel -%defattr(-,root,root,-) -%{_includedir}/murphy/common/ecore-glue.h -%{_libdir}/libmurphy-ecore.so -%{_libdir}/pkgconfig/murphy-ecore.pc -%endif - -%if %{?_with_glib:1}%{!?_with_glib:0} -%files glib -%defattr(-,root,root,-) -%{_libdir}/libmurphy-glib.so.* - -%files glib-devel -%defattr(-,root,root,-) -%{_includedir}/murphy/common/glib-glue.h -%{_libdir}/libmurphy-glib.so -%{_libdir}/pkgconfig/murphy-glib.pc -%endif - -%if %{?_with_qt:1}%{!?_with_qt:0} -%files qt -%defattr(-,root,root,-) -%{_libdir}/libmurphy-qt.so.* - -%files qt-devel -%defattr(-,root,root,-) -%{_includedir}/murphy/common/qt-glue.h -%{_libdir}/libmurphy-qt.so -%{_libdir}/pkgconfig/murphy-qt.pc -%endif - -%files tests -%defattr(-,root,root,-) -%{_bindir}/resource-client -%{_bindir}/resource-api-test -%{_bindir}/resource-api-fuzz -%{_bindir}/test-domain-controller -%{_bindir}/murphy-console - -%changelog -* Tue Nov 27 2012 Krisztian Litkey <krisztian.litkey@intel.com> - -- Initial build for 2.0alpha. diff --git a/packaging.in/murphyd.init b/packaging.in/murphyd.init deleted file mode 100755 index d19b931..0000000 --- a/packaging.in/murphyd.init +++ /dev/null @@ -1,156 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: skeleton -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Example initscript -# Description: This file should be used to construct scripts to be -# placed in /etc/init.d. -### END INIT INFO - -# Author: Foo Bar <foo@bar.org> -# - -# Do NOT "set -e" - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Murphy Daemon" -NAME=murphyd -DAEMON=/usr/bin/$NAME -DAEMON_ARGS="-t dlog -vvv" -SCRIPTNAME=/etc/init.d/$NAME - -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. -. /lib/lsb/init-functions - -# -# Function that starts the daemon/service -# -do_start() -{ - mkdir -p /tmp/murphy - mkdir -p /var/run/murphy/processes - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --exec $DAEMON -- \ - $DAEMON_ARGS \ - || return 2 -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - start-stop-daemon --stop -s 9 --quiet --oknodo --exec $DAEMON - RETVAL="$?" - - # clean up - rm -f /var/run/murphy/processes/* - - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --exec $DAEMON - [ "$?" = 2 ] && return 2 - return "$RETVAL" -} - -# -# Function that sends a SIGHUP to the daemon/service -# -do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon --stop --signal 1 --quiet --name $NAME - return 0 -} - -case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - #reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - #log_daemon_msg "Reloading $DESC" "$NAME" - #do_reload - #log_end_msg $? - #;; - restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; -esac - -: diff --git a/packaging.in/murphy-lua.conf b/packaging/murphy-lua.conf index a348679..a348679 100644 --- a/packaging.in/murphy-lua.conf +++ b/packaging/murphy-lua.conf diff --git a/packaging/murphy.spec b/packaging/murphy.spec index 4cf6cc9..5a1799c 100644 --- a/packaging/murphy.spec +++ b/packaging/murphy.spec @@ -1,14 +1,13 @@ # These are on by default, unless explicitly disabled. %bcond_without lua -#%bcond_without pulse -#%bcond_without ecore +%bcond_without pulse +%bcond_without ecore %bcond_without glib %bcond_without dbus -#%bcond_without telephony -#%bcond_without audiosession -#%bcond_without websockets -#%bcond_without smack -#%bcond_without sysmon +%bcond_without telephony +%bcond_without websockets +%bcond_without smack +%bcond_without sysmon # These are off by default, unless explicitly enabled. # @@ -24,15 +23,13 @@ # in Tizen any more. qt5 is the corrsponding macro for controlling # Qt5 support. # -#%bcond_with icosyscon #%bcond_with qt #%bcond_with debug - Summary: Resource policy framework Name: murphy Version: 0.0.74 -Release: 0 +Release: 1 License: BSD-3-Clause Group: System/Service URL: http://01.org/murphy/ @@ -61,34 +58,22 @@ BuildRequires: pkgconfig(libsystemd-journal) %if %{with glib} BuildRequires: pkgconfig(glib-2.0) %endif -#%if %{with qt} -#BuildRequires: pkgconfig(QtCore) -#%endif +%if %{with qt} +BuildRequires: pkgconfig(QtCore) +%endif %if %{with dbus} BuildRequires: pkgconfig(dbus-1) %endif #%if %{with telephony} #BuildRequires: pkgconfig(ofono) #%endif -#%if %{with audiosession} -#BuildRequires: pkgconfig(audio-session-mgr) -#BuildRequires: pkgconfig(aul) -#%endif #%if %{with websockets} #BuildRequires: libwebsockets-devel #%endif -BuildRequires: pkgconfig(json) +BuildRequires: pkgconfig(json-c) #%if %{with smack} #BuildRequires: pkgconfig(libsmack) #%endif -#%if %{with icosyscon} -#BuildRequires: ico-uxf-weston-plugin-devel -#BuildRequires: weston-ivi-shell-devel -#BuildRequires: genivi-shell-devel -#BuildRequires: pkgconfig(ail) -#BuildRequires: pkgconfig(aul) -#BuildRequires: libxml2-devel -#%endif %description This package contains the basic Murphy daemon. @@ -169,43 +154,25 @@ This package contains the Murphy glib mainloop integration development files. %endif -#%if %{with qt} -#%package qt -#Summary: Murphy Qt mainloop integration -#Group: System/Libraries -#Requires: %{name} = %{version}-%{release} - -#%description qt -#This package contains the Murphy Qt mainloop integration runtime files. - -#%package qt-devel -#Summary: Murphy Qt mainloop integration development files -#Group: System/Libraries -#Requires: %{name}-qt = %{version}-%{release} -#Requires: %{name} = %{version}-%{release} -# -#%description qt-devel -#This package contains the Murphy Qt mainloop integration development -#files. -#%endif - -#%package gam -#Summary: Murphy support for Genivi Audio Manager -#Group: System/Libraries -#Requires: %{name} = %{version}-%{release} +%if %{with qt} +%package qt +Summary: Murphy Qt mainloop integration +Group: System/Libraries +Requires: %{name} = %{version}-%{release} -#%description gam -#This package contains the Murphy plugins for necessary for supporting -#Genivi Audio Manager. +%description qt +This package contains the Murphy Qt mainloop integration runtime files. -#%package gam-devel -#Summary: Murphy support for Genivi Audio Manager development files -#Group: System/Libraries -#Requires: %{name}-gam = %{version}-%{release} +%package qt-devel +Summary: Murphy Qt mainloop integration development files +Group: System/Libraries +Requires: %{name}-qt = %{version}-%{release} +Requires: %{name} = %{version}-%{release} -#%description gam-devel -#This package contains development files for Murphy Genivi Audio Manager -#plugins. +%description qt-devel +This package contains the Murphy Qt mainloop integration development +files. +%endif %package tests Summary: Various test binaries for Murphy @@ -216,27 +183,9 @@ Requires: %{name} = %{version}-%{release} %description tests This package contains various test binaries for Murphy. -#%if %{with icosyscon} -#%package system-controller -#Summary: Murphy IVI System Controller plugin -#Group: System/Service -#Requires: ico-uxf-homescreen -#Conflicts: murphy-ivi-resource-manager -#Provides: system-controller -#Conflicts: ico-uxf-homescreen-system-controller - -#%description system-controller -#This package contains the Murphy IVI resource manager plugin. -#%endif - %prep %setup -q cp %{SOURCE1001} . -#%if %{with icosyscon} -#echo "Build with icosyscon" -#%else -#echo "Build without icosyscon" -#%endif %build %if %{with debug} @@ -245,7 +194,7 @@ V="V=1" %endif CONFIG_OPTIONS="" -DYNAMIC_PLUGINS="domain-control,system-controller" +DYNAMIC_PLUGINS="domain-control" #%if %{with pulse} #CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-pulse" @@ -265,11 +214,11 @@ CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-glib" CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-glib" %endif -#%if %{with qt} -#CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-qt" -#%else +%if %{with qt} +CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-qt" +%else CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-qt" -#%endif +%endif %if %{with dbus} CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-libdbus" @@ -283,13 +232,6 @@ CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-libdbus" CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-telephony" #%endif -#%if %{with audiosession} -#CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-resource-asm" -#DYNAMIC_PLUGINS="$DYNAMIC_PLUGINS,resource-asm" -#%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-resource-asm" -#%endif - #%if %{with websockets} #CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-websockets" #%else @@ -302,18 +244,6 @@ CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-websockets" CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-smack" #%endif -#%if %{with icosyscon} -#CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-system-controller" -#%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-system-controller" -#%endif - -#%if %{with sysmon} -#CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-system-monitor" -#%else -CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-system-monitor" -#%endif - ./bootstrap %configure $CONFIG_OPTIONS --with-dynamic-plugins=$DYNAMIC_PLUGINS %__make clean @@ -352,36 +282,25 @@ popd # Replace the default sample/test config files with the packaging ones. rm -f %{buildroot}%{_sysconfdir}/murphy/* -cp packaging.in/murphy-lua.conf %{buildroot}%{_sysconfdir}/murphy/murphy.conf -cp packaging.in/murphy.lua %{buildroot}%{_sysconfdir}/murphy/murphy.lua - -# Copy plugin configuration files in place. -#mkdir -p %{buildroot}%{_sysconfdir}/murphy/plugins/amb -#cp packaging.in/amb-config.lua \ -#%{buildroot}%{_sysconfdir}/murphy/plugins/amb/config.lua +cp packaging/murphy-lua.conf %{buildroot}%{_sysconfdir}/murphy/murphy.conf # Copy tmpfiles.d config file in place mkdir -p %{buildroot}%{_tmpfilesdir} -cp packaging.in/murphyd.conf %{buildroot}%{_tmpfilesdir} +cp packaging/murphyd.conf %{buildroot}%{_tmpfilesdir} # Copy the systemd files in place. #mkdir -p %%{buildroot}%%{_unitdir} mkdir -p %{buildroot}%{_unitdir_user} -cp packaging.in/murphyd.service %{buildroot}%{_unitdir_user} +cp packaging/murphyd.service %{buildroot}%{_unitdir_user} %if %{with dbus} mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d sed "s/@TZ_SYS_USER_GROUP@/%{TZ_SYS_USER_GROUP}/g" \ - packaging.in/org.Murphy.conf.in > packaging.in/org.Murphy.conf -cp packaging.in/org.Murphy.conf \ + packaging/org.Murphy.conf.in > packaging/org.Murphy.conf +cp packaging/org.Murphy.conf \ %{buildroot}%{_sysconfdir}/dbus-1/system.d/org.Murphy.conf %endif -# copy (experimental) GAM resource backend configuration files -#mkdir -p %{buildroot}%{_sysconfdir}/murphy/gam -#cp packaging.in/gam-*.names packaging.in/gam-*.tree \ -# %{buildroot}%{_sysconfdir}/murphy/gam - %clean rm -rf %{buildroot} @@ -420,19 +339,13 @@ ldconfig #ldconfig #%endif -#%if %{with qt} -#%post qt -#ldconfig - -#%postun qt -#ldconfig -#%endif - -#%post gam -#ldconfig +%if %{with qt} +%post qt +ldconfig -#%postun gam -#ldconfig +%postun qt +ldconfig +%endif %files -f filelist.plugins-base %defattr(-,root,root,-) @@ -441,9 +354,6 @@ ldconfig %config %{_sysconfdir}/murphy %{_unitdir_user}/murphyd.service %{_tmpfilesdir}/murphyd.conf -#%if %{with audiosession} -#%{_sbindir}/asm-bridge -#%endif %if %{with dbus} %{_sysconfdir}/dbus-1/system.d %config %{_sysconfdir}/dbus-1/system.d/org.Murphy.conf @@ -468,12 +378,11 @@ ldconfig %{_libdir}/libmurphy-libdbus.so.* %{_libdir}/libmurphy-dbus-libdbus.so.* %endif -#%if %{with sysmon} -#%{_libdir}/libmurphy-libdbus.so.* -#%endif +%if %{with sysmon} +%{_libdir}/libmurphy-libdbus.so.* +%endif %{_libdir}/murphy/plugins/plugin-domain-control.so -#%{_libdir}/murphy/plugins/plugin-resource-asm.so %{_libdir}/murphy/plugins/plugin-resource-native.so %files devel -f filelist.devel-includes @@ -558,30 +467,18 @@ ldconfig %{_libdir}/pkgconfig/murphy-glib.pc %endif -#%if %{with qt} -#%files qt -#%defattr(-,root,root,-) -#%{_libdir}/libmurphy-qt.so.* -#%manifest murphy.manifest - -#%files qt-devel -#%defattr(-,root,root,-) -#%{_includedir}/murphy/common/qt-glue.h -#%{_libdir}/libmurphy-qt.so -#%{_libdir}/pkgconfig/murphy-qt.pc -#%endif - -#%files gam -#%defattr(-,root,root,-) -#%{_libdir}/libmurphy-decision-tree.so.* -#%{_libdir}/libmurphy-decision-tree.so.0.0.0 -#%{_libdir}/murphy/plugins/plugin-gam-resource-manager.so +%if %{with qt} +%files qt +%defattr(-,root,root,-) +%{_libdir}/libmurphy-qt.so.* +%manifest murphy.manifest -#%files gam-devel -#%defattr(-,root,root,-) -#%{_bindir}/decision-test -#%{_bindir}/pattern-generator -#%{_libdir}/libmurphy-decision-tree.so +%files qt-devel +%defattr(-,root,root,-) +%{_includedir}/murphy/common/qt-glue.h +%{_libdir}/libmurphy-qt.so +%{_libdir}/pkgconfig/murphy-qt.pc +%endif %files tests %defattr(-,root,root,-) @@ -593,9 +490,3 @@ ldconfig %{_bindir}/murphy-console %manifest murphy.manifest -#%if %{with icosyscon} -#%files system-controller -#%defattr(-,root,root,-) -#%{_libdir}/murphy/plugins/plugin-system-controller.so -#%manifest murphy.manifest -#%endif diff --git a/packaging.in/murphyd.conf b/packaging/murphyd.conf index 75395b7..75395b7 100644 --- a/packaging.in/murphyd.conf +++ b/packaging/murphyd.conf diff --git a/packaging.in/murphyd.service b/packaging/murphyd.service index 8b6fda2..8b6fda2 100644 --- a/packaging.in/murphyd.service +++ b/packaging/murphyd.service diff --git a/packaging.in/org.Murphy.conf.in b/packaging/org.Murphy.conf.in index fa6ac40..fa6ac40 100644 --- a/packaging.in/org.Murphy.conf.in +++ b/packaging/org.Murphy.conf.in |