packaging: start up with logging to dlog with info verbosity.
[profile/ivi/murphy.git] / packaging.in / murphy.lua
1 m = murphy.get()
2
3 -- try loading the dlog plugin
4 m:try_load_plugin('dlog')
5
6 -- try loading console plugin
7 m:try_load_plugin('console')
8
9 -- load the dbus plugin if it exists
10 if m:plugin_exists('dbus') then
11     m:load_plugin('dbus')
12 end
13
14 -- try loading the signalling plugin
15 m:try_load_plugin('signalling', { address = 'internal:signalling' })
16
17 -- load the native resource plugin
18 if m:plugin_exists('resource-native') then
19     m:load_plugin('resource-native')
20     m:info("native resource plugin loaded")
21 else
22     m:info("No native resource plugin found...")
23 end
24
25 -- load the dbus resource plugin
26 if m:plugin_exists('resource-dbus') then
27     m:try_load_plugin('resource-dbus', {
28         dbus_bus = "system",
29         dbus_service = "org.Murphy",
30         dbus_track = true,
31         default_zone = "driver",
32         default_class = "implicit"
33       })
34     m:info("dbus resource plugin loaded")
35 else
36     m:info("No dbus resource plugin found...")
37 end
38
39
40 -- load the domain control plugin if it exists
41 if m:plugin_exists('domain-control') then
42     m:load_plugin('domain-control')
43 else
44     m:info("No domain-control plugin found...")
45 end
46
47 if m:plugin_exists('resource-asm') then
48     m:load_plugin('resource-asm', { zone = "driver" })
49 else
50     m:info("No audio session manager plugin found...")
51 end
52
53 -- define application classes
54 application_class { name = "navigator", priority = 8 }
55 application_class { name = "event"    , priority = 7 }
56 application_class { name = "phone"    , priority = 6 }
57 application_class { name = "camera"   , priority = 5 }
58 application_class { name = "alert"    , priority = 4 }
59 application_class { name = "game"     , priority = 3 }
60 application_class { name = "radio"    , priority = 2 }
61 application_class { name = "player"   , priority = 1 }
62 application_class { name = "implicit" , priority = 0 }
63
64 -- define zone attributes
65 zone.attributes {
66     type = {mdb.string, "common", "rw"},
67     location = {mdb.string, "anywhere", "rw"}
68 }
69
70 -- define zones
71 zone {
72      name = "driver",
73      attributes = {
74          type = "common",
75          location = "front-left"
76      }
77 }
78
79 zone {
80      name = "passanger1",
81      attributes = {
82          type = "private",
83          location = "front-right"
84      }
85 }
86
87 zone {
88      name = "passanger2",
89      attributes = {
90          type = "private",
91          location = "back-left"
92      }
93 }
94
95 zone {
96      name = "passanger3",
97      attributes = {
98          type = "private",
99          location = "back-right"
100      }
101 }
102
103 zone {
104      name = "passanger4",
105      attributes = {
106          type = "private",
107          location = "back-left"
108      }
109 }
110
111
112 -- define resource classes
113 resource.class {
114      name = "audio_playback",
115      shareable = true,
116      attributes = {
117          role = { mdb.string, "music", "rw" }
118      }
119 }
120
121 resource.class {
122      name = "audio_recording",
123      shareable = true
124 }
125
126 resource.class {
127      name = "video_playback",
128      shareable = false,
129 }
130
131 resource.class {
132      name = "video_recording",
133      shareable = false
134 }
135
136 -- test for creating selections
137 mdb.select {
138            name = "audio_owner",
139            table = "audio_playback_owner",
140            columns = {"application_class"},
141            condition = "zone_name = 'driver'",
142 }
143
144 element.lua {
145    name    = "speed2volume",
146    inputs  = { owner = mdb.select.audio_owner, param = 5 },
147    outputs = {  mdb.table { name = "speedvol",
148                             index = {"zone", "device"},
149                             columns = {{"zone", mdb.string, 16},
150                                        {"device", mdb.string, 16},
151                                        {"value", mdb.floating}},
152                             create = true
153                            }
154              },
155    update  = function(self)
156                 if (self.inputs.owner.single_value) then
157                    print("*** element "..self.name.." update "..
158                           self.inputs.owner.single_value)
159                 else
160                    print("*** element "..self.name.." update <nil>")
161                 end
162              end
163 }
164
165 m:try_load_plugin('telephony')