summaryrefslogtreecommitdiff
path: root/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/nsm.py
blob: 7a02d057845318f8c877b2910a55a0b02660ad70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# -*- coding: utf-8 -*-
#
# Copyright (C) 2012, BMW AG
#
# This file is part of GENIVI Project AudioManager.
#
# Contributions are licensed to the GENIVI Alliance under one or more
# Contribution License Agreements.
#
# \copyright
# This Source Code Form is subject to the terms of the
# Mozilla Public License, v. 2.0. If a  copy of the MPL was not distributed with
# this file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#
# \author Christian Linke, christian.linke@bmw.de BMW 2012
#
# For further information see http://www.genivi.org/.
#

import sys
import traceback
import gobject
import math
import dbus
import dbus.service
import dbus.mainloop.glib

loop = gobject.MainLoop()
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 
class NodeStateManager(dbus.service.Object):
  def __init__(self, loop):
    busName = dbus.service.BusName('org.genivi.NodeStateManager', bus = dbus.SessionBus())
    dbus.service.Object.__init__(self, busName, '/org/genivi/NodeStateManager')
    self.properties = {'RestartReason': 1, 'ShutdownReason': 2, 'WakeUpReason' :3, 'BootMode' :4}
    self.ABus=""
    self.APath=""
    self.loop=loop
 
  @dbus.service.method(dbus_interface='org.freedesktop.DBus.Introspectable', out_signature = 's')
  def Introspect(self):
	f = open('org.genivi.NodeStateManager.Consumer.xml', "r")
	text = f.read()
	return text
 
  @dbus.service.method(dbus_interface='org.genivi.NodeStateManager.Consumer', out_signature = 'ii')
  def GetNodeState(self):
	NodeStateId=1
	ErrorCode=1
	print('[----------] send out nodeState' + str(NodeStateId) + ' ErrorCode '+ str(1))
	return NodeStateId, ErrorCode
	
  @dbus.service.method('org.genivi.NodeStateManager.Consumer', out_signature = 'ii')
  def GetApplicationMode(self): 
	ApplicationModeId=5
	ErrorCode=2
	print('[----------] send out ApplicationMode' + str(ApplicationModeId) + ' ErrorCode '+ str(2))
	return ApplicationModeId, ErrorCode

  @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='si', out_signature = 'ii')
  def GetSessionState(self,SessionName,seatID): 
	SessionState=0
	ErrorCode=2
    
	if SessionName=="mySession" and seatID==1:
		SessionState=5
		ErrorCode=1
	
	print('[----------] GetSessionState for session ' + SessionName + ' seatID '+ str(seatID) + ' returnState ' + str (SessionState))
	return SessionState, ErrorCode
	
  @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ssuu', out_signature = 'i')
  def RegisterShutdownClient(self,BName,ObjName,ShutdownMode,TimeoutMs): 
	print('[----------] Busname: ' + BName)
	print('[----------] ObjName: ' + ObjName)
	print('[----------] ShutdownMode: ' + str(ShutdownMode))
	print('[----------] TimeoutMs: ' + str(TimeoutMs))
	ErrorCode=1
	if TimeoutMs!=100:
		ErrorCode=3
	if BName!="org.genivi.audiomanager":
		ErrorCode=4
	if ShutdownMode!=1:
		ErrorCode=5
	if ObjName!="/org/genivi/audiomanager/LifeCycleConsumer":
		ErrorCode=6
	self.ABus=BName
	self.APath=ObjName
	return  ErrorCode
	
  @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ssu', out_signature = 'i')
  def UnRegisterShutdownClient(self,BusName,ObjName,ShutdownMode): 
	print('[----------] Busname: ' + str(BusName))
	print('[----------] ObjName: ' + str(ObjName))
	print('[----------] ShutdownMode: ' + str(ShutdownMode))
	ErrorCode=1
	if BusName!=self.ABus:
		ErrorCode=2
	if ObjName!=self.APath:
		ErrorCode=2
	if ShutdownMode!=1:
		ErrorCode=2
	return  ErrorCode
	
  @dbus.service.method(dbus_interface='org.genivi.NodeStateManager.Consumer', out_signature = 'u')
  def GetInterfaceVersion(self):
	version=23
	return version
	
  @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ui', out_signature='i')
  def LifecycleRequestComplete(self,RequestID,Status): 
	print('[----------] RequestId: ' + str(RequestID))
	print('[----------] Status: ' + str(Status))
	ErrorCode=1
	if RequestID!=22:
		ErrorCode=2
	if Status!=4:
		ErrorCode=2
	return  ErrorCode	

  @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
  def Get(self, interface, prop):
	if prop in self.properties:
		print('[----------] send out ' + str(self.properties[prop]) + ' for property '+ prop)
		return self.properties[prop]
	return 0
    
  @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='ssv')
  def Set(self, interface, prop, value):
	return 3
    
  @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
  def GetAll(self, interface):
	  return self.properties
	  
  @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='i')
  def NodeApplicationMode(self, ApplicationModeId):
	print "[----------] Send out application mode ID %d" % (ApplicationModeId)
	
  @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='i')
  def NodeState(self, NodeState):
	print "[----------] Send out NodeState %d" % (NodeState)
	
  @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='sii')
  def SessionStateChanged(self, SessionStateName,SeatID,SessionState):
	print "[----------] Send out SessionStateChanged " + SessionStateName
	
  @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='i')
  def sendNodeApplicationMode(self, input): 
	self.NodeApplicationMode(input)
	return input
	
  @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='i')
  def sendNodeState(self, input): 
	self.NodeState(input)
	return input
	
  @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='sii')
  def sendSessionState(self, SessionStateName,SeatID,SessionState): 
	self.SessionStateChanged (SessionStateName,SeatID,SessionState)
	return SeatID
	
  @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='uu', out_signature='i')
  def sendLifeCycleRequest(self, request, requestID): 
	bus = dbus.SessionBus()
	remote_object = bus.get_object(self.ABus,self.APath)
	iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.LifeCycleConsumer')
	iface.LifecycleRequest(request,requestID)
	return 42
	
  @dbus.service.method('org.genivi.NodeStateManager.Control')
  def finish(self): 
	print '[----------] Going to exit now!'
	self.loop.quit()
	return 0

nsm = NodeStateManager(loop)
loop.run()