1 /* |
1 /* |
2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of "Eclipse Public License v1.0" |
5 * under the terms of "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
24 #include <usb/usblogger.h> |
24 #include <usb/usblogger.h> |
25 |
25 |
26 #include <e32cmn.h> |
26 #include <e32cmn.h> |
27 |
27 |
28 #include "srvdef.h" |
28 #include "srvdef.h" |
|
29 #include "OstTraceDefinitions.h" |
|
30 #ifdef OST_TRACE_COMPILER_IN_USE |
|
31 #include "msmmclientTraces.h" |
|
32 #endif |
|
33 |
29 |
34 |
30 #ifdef __FLOG_ACTIVE |
|
31 _LIT8(KLogComponent, "UsbHostMsmmClient"); |
|
32 #endif |
|
33 |
|
34 // Costants |
35 // Costants |
35 const TInt KConnectRetry = 0x2; |
36 const TInt KConnectRetry = 0x2; |
36 |
37 |
37 //--------------------------------------------------------------------------- |
38 //--------------------------------------------------------------------------- |
38 // |
39 // |
39 // NON-MEMBER FUNCTIONS |
40 // NON-MEMBER FUNCTIONS |
40 |
41 |
41 static TInt StartServer() |
42 static TInt StartServer() |
42 { |
43 { |
43 LOG_STATIC_FUNC_ENTRY |
44 OstTraceFunctionEntry0( MSMMCLIENT_SRC_STARTSERVER_ENTRY ); |
44 |
45 |
45 TInt ret = KErrNone; |
46 TInt ret = KErrNone; |
46 |
47 |
47 // Create the server process |
48 // Create the server process |
48 const TUidType serverUid(KNullUid, KNullUid, KMsmmServUid); |
49 const TUidType serverUid(KNullUid, KNullUid, KMsmmServUid); |
51 ret = server.Create(KMsmmServerBinaryName, KNullCommand, serverUid); |
52 ret = server.Create(KMsmmServerBinaryName, KNullCommand, serverUid); |
52 |
53 |
53 // Was server process created OK? |
54 // Was server process created OK? |
54 if (KErrNone != ret) |
55 if (KErrNone != ret) |
55 { |
56 { |
|
57 OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT ); |
56 return ret; |
58 return ret; |
57 } |
59 } |
58 |
60 |
59 // Set up Rendezvous so that server thread can signal correct startup |
61 // Set up Rendezvous so that server thread can signal correct startup |
60 TRequestStatus serverDiedRequestStatus; |
62 TRequestStatus serverDiedRequestStatus; |
75 |
77 |
76 // determine the reason for the server exit |
78 // determine the reason for the server exit |
77 TInt exitReason = (EExitPanic == server.ExitType()) ? |
79 TInt exitReason = (EExitPanic == server.ExitType()) ? |
78 KErrGeneral : serverDiedRequestStatus.Int(); |
80 KErrGeneral : serverDiedRequestStatus.Int(); |
79 server.Close(); |
81 server.Close(); |
|
82 OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1 ); |
80 return exitReason; |
83 return exitReason; |
81 } |
84 } |
82 |
85 |
83 //--------------------------------------------------------------------------- |
86 //--------------------------------------------------------------------------- |
84 // RMsmmSession |
87 // RMsmmSession |
85 // |
88 // |
86 // Public member functions |
89 // Public member functions |
87 |
90 |
88 EXPORT_C TInt RMsmmSession::Connect() |
91 EXPORT_C TInt RMsmmSession::Connect() |
89 { |
92 { |
90 LOG_FUNC |
93 OstTraceFunctionEntry0( RMSMMSESSION_CONNECT_ENTRY ); |
91 |
94 |
92 TInt retry = KConnectRetry; // Attempt connect twice then give up |
95 TInt retry = KConnectRetry; // Attempt connect twice then give up |
93 TInt ret(KErrNone); |
96 TInt ret(KErrNone); |
94 FOREVER |
97 FOREVER |
95 { |
98 { |
111 } |
114 } |
112 } |
115 } |
113 |
116 |
114 if (KErrNone != ret) |
117 if (KErrNone != ret) |
115 { |
118 { |
116 LOGTEXT2(_L("Underlying error value = %d"), ret) |
119 OstTrace1( TRACE_ERROR, RMSMMSESSION_CONNECT, |
|
120 "Underlying error value = %d", ret ); |
|
121 |
117 ret = KErrCouldNotConnect; |
122 ret = KErrCouldNotConnect; |
118 } |
123 } |
119 |
124 |
|
125 OstTraceFunctionExit0( RMSMMSESSION_CONNECT_EXIT ); |
120 return ret; |
126 return ret; |
121 } |
127 } |
122 |
128 |
123 EXPORT_C TInt RMsmmSession::Disconnect() |
129 EXPORT_C TInt RMsmmSession::Disconnect() |
124 { |
130 { |
125 LOG_FUNC |
131 OstTraceFunctionEntry0( RMSMMSESSION_DISCONNECT_ENTRY ); |
126 |
|
127 Close(); |
132 Close(); |
|
133 OstTraceFunctionExit0( RMSMMSESSION_DISCONNECT_EXIT ); |
128 return KErrNone; |
134 return KErrNone; |
129 } |
135 } |
130 |
136 |
131 // Called to provide the version number of the server we require for this API |
137 // Called to provide the version number of the server we require for this API |
132 EXPORT_C TVersion RMsmmSession::Version() const |
138 EXPORT_C TVersion RMsmmSession::Version() const |
133 { |
139 { |
134 LOG_FUNC |
140 OstTraceFunctionEntry0( RMSMMSESSION_VERSION_ENTRY ); |
135 |
141 |
136 return TVersion(KMsmmServMajorVersionNumber, |
142 return TVersion(KMsmmServMajorVersionNumber, |
137 KMsmmServMinorVersionNumber, |
143 KMsmmServMinorVersionNumber, |
138 KMsmmServBuildVersionNumber); |
144 KMsmmServBuildVersionNumber); |
139 } |
145 } |
140 |
146 |
141 EXPORT_C TInt RMsmmSession::AddFunction( |
147 EXPORT_C TInt RMsmmSession::AddFunction( |
142 const TUSBMSDeviceDescription& aDevice, |
148 const TUSBMSDeviceDescription& aDevice, |
143 TUint8 aInterfaceNumber, TUint32 aInterfaceToken) |
149 TUint8 aInterfaceNumber, TUint32 aInterfaceToken) |
144 { |
150 { |
145 LOG_FUNC |
151 OstTraceFunctionEntry0( RMSMMSESSION_ADDFUNCTION_ENTRY ); |
146 |
152 |
147 TInt ret(KErrNone); |
153 TInt ret(KErrNone); |
148 |
154 |
149 TIpcArgs usbmsIpcArgs; |
155 TIpcArgs usbmsIpcArgs; |
150 iDevicePkg = aDevice; // Package the device description |
156 iDevicePkg = aDevice; // Package the device description |
152 usbmsIpcArgs.Set(1, aInterfaceNumber); |
158 usbmsIpcArgs.Set(1, aInterfaceNumber); |
153 usbmsIpcArgs.Set(2, aInterfaceToken); |
159 usbmsIpcArgs.Set(2, aInterfaceToken); |
154 |
160 |
155 ret = SendReceive(EHostMsmmServerAddFunction, usbmsIpcArgs); |
161 ret = SendReceive(EHostMsmmServerAddFunction, usbmsIpcArgs); |
156 |
162 |
|
163 OstTraceFunctionExit0( RMSMMSESSION_ADDFUNCTION_EXIT ); |
157 return ret; |
164 return ret; |
158 } |
165 } |
159 |
166 |
160 EXPORT_C TInt RMsmmSession::RemoveDevice(TUint aDevice) |
167 EXPORT_C TInt RMsmmSession::RemoveDevice(TUint aDevice) |
161 { |
168 { |
162 LOG_FUNC |
169 OstTraceFunctionEntry0( RMSMMSESSION_REMOVEDEVICE_ENTRY ); |
163 |
170 |
164 TInt ret(KErrNone); |
171 TInt ret(KErrNone); |
165 |
172 |
166 TIpcArgs usbmsIpcArgs(aDevice); |
173 TIpcArgs usbmsIpcArgs(aDevice); |
167 |
174 |
168 ret = SendReceive(EHostMsmmServerRemoveDevice, usbmsIpcArgs); |
175 ret = SendReceive(EHostMsmmServerRemoveDevice, usbmsIpcArgs); |
169 |
176 |
|
177 OstTraceFunctionExit0( RMSMMSESSION_REMOVEDEVICE_EXIT ); |
170 return ret; |
178 return ret; |
171 } |
179 } |
172 |
180 |
173 EXPORT_C TInt RMsmmSession::__DbgFailNext(TInt aCount) |
181 EXPORT_C TInt RMsmmSession::__DbgFailNext(TInt aCount) |
174 { |
182 { |
175 LOG_FUNC |
183 OstTraceFunctionEntry0( RMSMMSESSION_DBGFAILNEXT_ENTRY ); |
176 |
184 |
177 #ifdef _DEBUG |
185 #ifdef _DEBUG |
178 return SendReceive(EHostMsmmServerDbgFailNext, TIpcArgs(aCount)); |
186 return SendReceive(EHostMsmmServerDbgFailNext, TIpcArgs(aCount)); |
179 #else |
187 #else |
180 (void)aCount; |
188 (void)aCount; |
|
189 OstTraceFunctionExit0( RMSMMSESSION_DBGFAILNEXT_EXIT ); |
181 return KErrNone; |
190 return KErrNone; |
182 #endif |
191 #endif |
183 } |
192 } |
184 |
193 |
185 EXPORT_C TInt RMsmmSession::__DbgAlloc() |
194 EXPORT_C TInt RMsmmSession::__DbgAlloc() |
186 { |
195 { |
187 LOG_FUNC |
196 OstTraceFunctionEntry0( RMSMMSESSION_DBGALLOC_ENTRY ); |
188 |
197 |
189 #ifdef _DEBUG |
198 #ifdef _DEBUG |
190 return SendReceive(EHostMsmmServerDbgAlloc); |
199 return SendReceive(EHostMsmmServerDbgAlloc); |
191 #else |
200 #else |
|
201 OstTraceFunctionExit0( RMSMMSESSION_DBGALLOC_EXIT ); |
192 return KErrNone; |
202 return KErrNone; |
193 #endif |
203 #endif |
194 } |
204 } |
195 |
205 |
196 // End of file |
206 // End of file |