119 |
123 |
120 EXPORT_C RUsb::RUsb() |
124 EXPORT_C RUsb::RUsb() |
121 : iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0), |
125 : iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0), |
122 iHostPkg(TDeviceEventInformation()) |
126 iHostPkg(TDeviceEventInformation()) |
123 { |
127 { |
124 LOG_LINE |
128 OstTraceFunctionEntry0( RUSB_RUSB_CONS_ENTRY ); |
125 LOG_FUNC |
129 OstTraceFunctionExit0( RUSB_RUSB_CONS_EXIT ); |
126 } |
130 } |
127 |
131 |
128 EXPORT_C RUsb::~RUsb() |
132 EXPORT_C RUsb::~RUsb() |
129 { |
133 { |
130 LOG_LINE |
134 OstTraceFunctionEntry0( RUSB_RUSB_DES_ENTRY ); |
131 LOG_FUNC |
135 OstTraceFunctionExit0( RUSB_RUSB_DES_EXIT ); |
132 } |
136 } |
133 |
137 |
134 EXPORT_C TVersion RUsb::Version() const |
138 EXPORT_C TVersion RUsb::Version() const |
135 { |
139 { |
136 return(TVersion(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber)); |
140 return(TVersion(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber)); |
137 } |
141 } |
138 |
142 |
139 EXPORT_C TInt RUsb::Connect() |
143 EXPORT_C TInt RUsb::Connect() |
140 { |
144 { |
141 LOG_LINE |
145 OstTraceFunctionEntry0( RUSB_CONNECT_ENTRY ); |
142 LOG_FUNC |
|
143 |
|
144 TInt retry = 2; |
146 TInt retry = 2; |
145 |
147 |
146 FOREVER |
148 FOREVER |
147 { |
149 { |
148 // Create the session to UsbSrv with 10 asynchronous message slots |
150 // Create the session to UsbSrv with 10 asynchronous message slots |
149 TInt err = CreateSession(KUsbServerName, Version(), 10); |
151 TInt err = CreateSession(KUsbServerName, Version(), 10); |
150 |
152 |
151 if ((err != KErrNotFound) && (err != KErrServerTerminated)) |
153 if ((err != KErrNotFound) && (err != KErrServerTerminated)) |
152 { |
154 { |
|
155 OstTraceFunctionExit0( RUSB_CONNECT_EXIT ); |
153 return err; |
156 return err; |
154 } |
157 } |
155 |
158 |
156 if (--retry == 0) |
159 if (--retry == 0) |
157 { |
160 { |
|
161 OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP1 ); |
158 return err; |
162 return err; |
159 } |
163 } |
160 |
164 |
161 err = StartServer(); |
165 err = StartServer(); |
162 |
166 |
163 if ((err != KErrNone) && (err != KErrAlreadyExists)) |
167 if ((err != KErrNone) && (err != KErrAlreadyExists)) |
164 { |
168 { |
|
169 OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP2 ); |
165 return err; |
170 return err; |
166 } |
171 } |
167 } |
172 } |
168 } |
173 } |
169 |
174 |
170 EXPORT_C void RUsb::Start(TRequestStatus& aStatus) |
175 EXPORT_C void RUsb::Start(TRequestStatus& aStatus) |
171 { |
176 { |
172 LOG_LINE |
177 OstTraceFunctionEntry0( RUSB_START_ENTRY ); |
173 LOG_FUNC |
178 |
174 |
|
175 SendReceive(EUsbStart, aStatus); |
179 SendReceive(EUsbStart, aStatus); |
|
180 OstTraceFunctionExit0( RUSB_START_EXIT ); |
176 } |
181 } |
177 |
182 |
178 EXPORT_C void RUsb::StartCancel() |
183 EXPORT_C void RUsb::StartCancel() |
179 { |
184 { |
180 LOG_LINE |
185 OstTraceFunctionEntry0( RUSB_STARTCANCEL_ENTRY ); |
181 LOG_FUNC |
|
182 |
|
183 SendReceive(EUsbStartCancel); |
186 SendReceive(EUsbStartCancel); |
|
187 OstTraceFunctionExit0( RUSB_STARTCANCEL_EXIT ); |
184 } |
188 } |
185 |
189 |
186 EXPORT_C void RUsb::Stop() |
190 EXPORT_C void RUsb::Stop() |
187 { |
191 { |
188 LOG_LINE |
192 OstTraceFunctionEntry0( RUSB_STOP_ENTRY ); |
189 LOG_FUNC |
|
190 |
|
191 SendReceive(EUsbStop); |
193 SendReceive(EUsbStop); |
|
194 OstTraceFunctionExit0( RUSB_STOP_EXIT ); |
192 } |
195 } |
193 |
196 |
194 EXPORT_C void RUsb::Stop(TRequestStatus& aStatus) |
197 EXPORT_C void RUsb::Stop(TRequestStatus& aStatus) |
195 { |
198 { |
196 LOG_LINE |
199 OstTraceFunctionEntry0( RUSB_STOP_TREQUESTSTATUS_ENTRY ); |
197 LOG_FUNC |
|
198 |
|
199 SendReceive(EUsbStop, aStatus); |
200 SendReceive(EUsbStop, aStatus); |
|
201 OstTraceFunctionExit0( RUSB_STOP_TREQUESTSTATUS_EXIT ); |
200 } |
202 } |
201 |
203 |
202 EXPORT_C void RUsb::StopCancel() |
204 EXPORT_C void RUsb::StopCancel() |
203 { |
205 { |
204 LOG_LINE |
206 OstTraceFunctionEntry0( RUSB_STOPCANCEL_ENTRY ); |
205 LOG_FUNC |
|
206 |
|
207 SendReceive(EUsbStopCancel); |
207 SendReceive(EUsbStopCancel); |
|
208 OstTraceFunctionExit0( RUSB_STOPCANCEL_EXIT ); |
208 } |
209 } |
209 |
210 |
210 EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState) |
211 EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState) |
211 { |
212 { |
212 LOG_LINE |
213 OstTraceFunctionEntry0( RUSB_GETSERVICESTATE_ENTRY ); |
213 LOG_FUNC |
|
214 |
|
215 TPckg<TUint32> pkg(aState); |
214 TPckg<TUint32> pkg(aState); |
216 TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg)); |
215 TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg)); |
217 aState=(TUsbServiceState)pkg(); |
216 aState=(TUsbServiceState)pkg(); |
|
217 OstTraceFunctionExit0( RUSB_GETSERVICESTATE_EXIT ); |
218 return ret; |
218 return ret; |
219 } |
219 } |
220 |
220 |
221 EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState) |
221 EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState) |
222 { |
222 { |
223 LOG_LINE |
223 OstTraceFunctionEntry0( RUSB_GETCURRENTSTATE_ENTRY ); |
224 LOG_FUNC |
|
225 |
|
226 return GetServiceState(aState); |
224 return GetServiceState(aState); |
227 } |
225 } |
228 |
226 |
229 EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState, |
227 EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState, |
230 TRequestStatus& aStatus) |
228 TRequestStatus& aStatus) |
231 { |
229 { |
232 LOG_LINE |
230 OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATION_ENTRY ); |
233 LOG_FUNC |
|
234 |
231 |
235 iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); |
232 iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); |
236 |
233 |
237 SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus); |
234 SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus); |
|
235 OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATION_EXIT ); |
238 } |
236 } |
239 |
237 |
240 EXPORT_C void RUsb::ServiceStateNotificationCancel() |
238 EXPORT_C void RUsb::ServiceStateNotificationCancel() |
241 { |
239 { |
242 LOG_LINE |
240 OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATIONCANCEL_ENTRY ); |
243 LOG_FUNC |
|
244 |
|
245 SendReceive(EUsbCancelServiceObserver); |
241 SendReceive(EUsbCancelServiceObserver); |
|
242 OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATIONCANCEL_EXIT ); |
246 } |
243 } |
247 |
244 |
248 EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState) |
245 EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState) |
249 { |
246 { |
250 LOG_LINE |
247 OstTraceFunctionEntry0( RUSB_GETDEVICESTATE_ENTRY ); |
251 LOG_FUNC |
|
252 |
|
253 TPckg<TUint32> pkg(aState); |
248 TPckg<TUint32> pkg(aState); |
254 TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg)); |
249 TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg)); |
255 aState=(TUsbDeviceState)pkg(); |
250 aState=(TUsbDeviceState)pkg(); |
|
251 OstTraceFunctionExit0( RUSB_GETDEVICESTATE_EXIT ); |
256 return ret; |
252 return ret; |
257 } |
253 } |
258 |
254 |
259 EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState, |
255 EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState, |
260 TRequestStatus& aStatus) |
256 TRequestStatus& aStatus) |
261 { |
257 { |
262 LOG_LINE |
258 OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATION_ENTRY ); |
263 LOG_FUNC |
|
264 |
|
265 iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); |
259 iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); |
266 |
260 |
267 SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus); |
261 SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus); |
|
262 OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATION_EXIT ); |
268 } |
263 } |
269 |
264 |
270 EXPORT_C void RUsb::DeviceStateNotificationCancel() |
265 EXPORT_C void RUsb::DeviceStateNotificationCancel() |
271 { |
266 { |
272 LOG_LINE |
267 OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATIONCANCEL_ENTRY ); |
273 LOG_FUNC |
|
274 |
|
275 SendReceive(EUsbCancelObserver); |
268 SendReceive(EUsbCancelObserver); |
|
269 OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATIONCANCEL_EXIT ); |
276 } |
270 } |
277 |
271 |
278 EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus) |
272 EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus) |
279 { |
273 { |
280 LOG_LINE |
274 OstTraceFunctionEntry0( RUSB_STATENOTIFICATION_ENTRY ); |
281 LOG_FUNC |
|
282 |
|
283 DeviceStateNotification(aEventMask, aState, aStatus); |
275 DeviceStateNotification(aEventMask, aState, aStatus); |
|
276 OstTraceFunctionExit0( RUSB_STATENOTIFICATION_EXIT ); |
284 } |
277 } |
285 |
278 |
286 EXPORT_C void RUsb::StateNotificationCancel() |
279 EXPORT_C void RUsb::StateNotificationCancel() |
287 { |
280 { |
288 LOG_LINE |
281 OstTraceFunctionEntry0( RUSB_STATENOTIFICATIONCANCEL_ENTRY ); |
289 LOG_FUNC |
|
290 |
|
291 DeviceStateNotificationCancel(); |
282 DeviceStateNotificationCancel(); |
|
283 OstTraceFunctionExit0( RUSB_STATENOTIFICATIONCANCEL_EXIT ); |
292 } |
284 } |
293 |
285 |
294 EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus) |
286 EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus) |
295 { |
287 { |
296 LOG_LINE |
288 OstTraceFunctionEntry0( RUSB_TRYSTART_ENTRY ); |
297 LOG_FUNC |
|
298 |
289 |
299 TIpcArgs ipcArgs(aPersonalityId); |
290 TIpcArgs ipcArgs(aPersonalityId); |
300 SendReceive(EUsbTryStart, ipcArgs, aStatus); |
291 SendReceive(EUsbTryStart, ipcArgs, aStatus); |
|
292 OstTraceFunctionExit0( RUSB_TRYSTART_EXIT ); |
301 } |
293 } |
302 |
294 |
303 EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus) |
295 EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus) |
304 { |
296 { |
305 LOG_LINE |
297 OstTraceFunctionEntry0( RUSB_TRYSTOP_ENTRY ); |
306 LOG_FUNC |
|
307 |
|
308 SendReceive(EUsbTryStop, aStatus); |
298 SendReceive(EUsbTryStop, aStatus); |
|
299 OstTraceFunctionExit0( RUSB_TRYSTOP_EXIT ); |
309 } |
300 } |
310 |
301 |
311 EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId) |
302 EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId) |
312 { |
303 { |
313 LOG_LINE |
304 OstTraceFunctionEntry0( RUSB_CANCELINTEREST_ENTRY ); |
314 LOG_FUNC |
|
315 |
305 |
316 TInt messageId; |
306 TInt messageId; |
317 switch (aMessageId) |
307 switch (aMessageId) |
318 { |
308 { |
319 case EStart: |
309 case EStart: |
565 return KErrNone; |
556 return KErrNone; |
566 #endif |
557 #endif |
567 } |
558 } |
568 |
559 |
569 EXPORT_C void panic() |
560 EXPORT_C void panic() |
570 { |
561 { |
571 _USB_PANIC(KUsbCliPncCat, EUsbPanicRemovedExport); |
562 OstTrace1( TRACE_FATAL, RUSB_PANIC, "::panic;Panic reason=%d", EUsbPanicRemovedExport ); |
|
563 User::Panic(KUsbCliPncCat, EUsbPanicRemovedExport); |
572 } |
564 } |
573 |
565 |
574 EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue) |
566 EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue) |
575 { |
567 { |
576 LOG_LINE |
568 OstTraceFunctionEntry0( RUSB_SETCTLSESSIONMODE_ENTRY ); |
577 LOG_FUNC |
|
578 |
569 |
579 TPckg<TBool> pkg(aValue); |
570 TPckg<TBool> pkg(aValue); |
580 return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg)); |
571 return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg)); |
581 } |
572 } |
582 |
573 |
583 EXPORT_C TInt RUsb::BusRequest() |
574 EXPORT_C TInt RUsb::BusRequest() |
584 { |
575 { |
585 LOG_LINE |
576 OstTraceFunctionEntry0( RUSB_BUSREQUEST_ENTRY ); |
586 LOG_FUNC |
|
587 |
577 |
588 return SendReceive(EUsbBusRequest); |
578 return SendReceive(EUsbBusRequest); |
589 } |
579 } |
590 |
580 |
591 EXPORT_C TInt RUsb::BusRespondSrp() |
581 EXPORT_C TInt RUsb::BusRespondSrp() |
592 { |
582 { |
593 LOG_LINE |
583 OstTraceFunctionEntry0( RUSB_BUSRESPONDSRP_ENTRY ); |
594 LOG_FUNC |
|
595 |
584 |
596 return SendReceive(EUsbBusRespondSrp); |
585 return SendReceive(EUsbBusRespondSrp); |
597 } |
586 } |
598 |
587 |
599 EXPORT_C TInt RUsb::BusClearError() |
588 EXPORT_C TInt RUsb::BusClearError() |
600 { |
589 { |
601 LOG_LINE |
590 OstTraceFunctionEntry0( RUSB_BUSCLEARERROR_ENTRY ); |
602 LOG_FUNC |
|
603 |
|
604 return SendReceive(EUsbBusClearError); |
591 return SendReceive(EUsbBusClearError); |
605 } |
592 } |
606 |
593 |
607 |
594 |
608 EXPORT_C TInt RUsb::BusDrop() |
595 EXPORT_C TInt RUsb::BusDrop() |
609 { |
596 { |
610 LOG_LINE |
597 OstTraceFunctionEntry0( RUSB_BUSDROP_ENTRY ); |
611 LOG_FUNC |
|
612 |
|
613 return SendReceive(EUsbBusDrop); |
598 return SendReceive(EUsbBusDrop); |
614 } |
599 } |
615 |
600 |
616 EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage) |
601 EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage) |
617 { |
602 { |
618 LOG_LINE |
603 OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATION_ENTRY ); |
619 LOG_FUNC |
|
620 |
|
621 iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt)); |
604 iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt)); |
622 |
605 |
623 SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus); |
606 SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus); |
|
607 OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATION_EXIT ); |
624 } |
608 } |
625 |
609 |
626 EXPORT_C void RUsb::MessageNotificationCancel() |
610 EXPORT_C void RUsb::MessageNotificationCancel() |
627 { |
611 { |
628 LOG_LINE |
612 OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATIONCANCEL_ENTRY ); |
629 LOG_FUNC |
|
630 |
|
631 SendReceive(EUsbCancelMessageObserver); |
613 SendReceive(EUsbCancelMessageObserver); |
|
614 OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATIONCANCEL_EXIT ); |
632 } |
615 } |
633 |
616 |
634 EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus, |
617 EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus, |
635 TDeviceEventInformation& aDeviceInformation) |
618 TDeviceEventInformation& aDeviceInformation) |
636 { |
619 { |
637 LOG_LINE |
620 OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATION_ENTRY ); |
638 LOG_FUNC |
|
639 |
621 |
640 iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation)); |
622 iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation)); |
641 |
623 |
642 SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus); |
624 SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus); |
|
625 OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATION_EXIT ); |
643 } |
626 } |
644 |
627 |
645 EXPORT_C void RUsb::HostEventNotificationCancel() |
628 EXPORT_C void RUsb::HostEventNotificationCancel() |
646 { |
629 { |
647 LOG_LINE |
630 OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_ENTRY ); |
648 LOG_FUNC |
|
649 |
|
650 SendReceive(EUsbCancelHostObserver); |
631 SendReceive(EUsbCancelHostObserver); |
|
632 OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_EXIT ); |
651 } |
633 } |
652 |
634 |
653 EXPORT_C TInt RUsb::EnableFunctionDriverLoading() |
635 EXPORT_C TInt RUsb::EnableFunctionDriverLoading() |
654 { |
636 { |
655 LOG_LINE |
637 OstTraceFunctionEntry0( RUSB_ENABLEFUNCTIONDRIVERLOADING_ENTRY ); |
656 LOG_FUNC |
|
657 |
638 |
658 return SendReceive(EUsbEnableFunctionDriverLoading); |
639 return SendReceive(EUsbEnableFunctionDriverLoading); |
659 } |
640 } |
660 |
641 |
661 EXPORT_C void RUsb::DisableFunctionDriverLoading() |
642 EXPORT_C void RUsb::DisableFunctionDriverLoading() |
662 { |
643 { |
663 LOG_LINE |
644 OstTraceFunctionEntry0( RUSB_DISABLEFUNCTIONDRIVERLOADING_ENTRY ); |
664 LOG_FUNC |
|
665 |
|
666 SendReceive(EUsbDisableFunctionDriverLoading); |
645 SendReceive(EUsbDisableFunctionDriverLoading); |
|
646 OstTraceFunctionExit0( RUSB_DISABLEFUNCTIONDRIVERLOADING_EXIT ); |
667 } |
647 } |
668 |
648 |
669 EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds) |
649 EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds) |
670 { |
650 { |
671 LOG_LINE |
651 OstTraceFunctionEntry0( RUSB_GETSUPPORTEDLANGUAGES_ENTRY ); |
672 LOG_FUNC |
|
673 |
652 |
674 aLangIds.Reset(); |
653 aLangIds.Reset(); |
675 |
654 |
676 TInt ret = KErrNone; |
655 TInt ret = KErrNone; |
677 HBufC8* buf = NULL; |
656 HBufC8* buf = NULL; |
678 // +1 for the actual count of language ids |
657 // +1 for the actual count of language ids |
679 TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint))); |
658 TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint))); |
680 if (ret != KErrNone) |
659 if (ret != KErrNone) |
681 { |
660 { |
|
661 OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT ); |
682 return ret; |
662 return ret; |
683 } |
663 } |
684 |
664 |
685 TPtr8 ptr8 = buf->Des(); |
665 TPtr8 ptr8 = buf->Des(); |
686 ret = SendReceive(EUsbGetSupportedLanguages, TIpcArgs(aDeviceId, &ptr8)); |
666 ret = SendReceive(EUsbGetSupportedLanguages, TIpcArgs(aDeviceId, &ptr8)); |