Update contrib.
1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32\include\d32usbcsc.inl
15 // User side class definitions for USB Device support (inline header).
19 /** @file d32usbcsc.inl
24 #ifndef __D32USBCSC_INL__
25 #define __D32USBCSC_INL__
28 /** @internalTechnology
32 TUsbcScInterfaceInfoBuf* iInterfaceData;
34 TUint32 iBandwidthPriority;
38 inline TUsbcScHdrEndpointRecord::TUsbcScHdrEndpointRecord(TInt aBufferNo, TUint8 aType)
39 : iBufferNo((TUint8)aBufferNo),
45 inline TUint TUsbcScHdrEndpointRecord::Type() const
47 return (TUint) (iType>>2);
50 inline TUint TUsbcScHdrEndpointRecord::Direction() const
52 return (TUint) (iType&3);
56 inline void TUsbcScBufferRecord::Set(TUint aOffset, TUint aEndOffset)
59 iSize = aEndOffset-aOffset;
62 inline TUint TUsbcScBufferRecord::Offset() const
67 inline TUint TUsbcScBufferRecord::Size() const
73 inline TEndpointPairInfo::TEndpointPairInfo(TUint8 aType, TUint16 aPair, TUint8 aSpare)
74 : iType(aType), iSpare(aSpare), iPair(aPair)
78 inline TUsbcScEndpointInfo::TUsbcScEndpointInfo(TUint aType, TUint aDir, TInt aInterval, TInt aExtra,
79 TUint aBufferSize, TUint aReadSize
81 : TUsbcEndpointInfo(aType, aDir, 0, aInterval, aExtra),
82 iBufferSize(aBufferSize), iReadSize(aReadSize), iPairing(), iAlignment(0), iFlags(0)
88 inline TUsbcScInterfaceInfo::TUsbcScInterfaceInfo(TInt aClass, TInt aSubClass,
89 TInt aProtocol, TDesC16* aString,
90 TUint aTotalEndpoints)
91 : iClass(aClass, aSubClass, aProtocol), iString(aString),
92 iTotalEndpointsUsed(aTotalEndpoints), iFeatureWord(0)
96 inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Ep0Out() const
98 return (TUsbcScBufferRecord*) &iBufferOffset[0];
100 inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Ep0In() const
102 return (TUsbcScBufferRecord*) &iBufferOffset[iRecordSize];
104 inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Buffers(TInt aBuffer) const
106 return (TUsbcScBufferRecord*) &iBufferOffset[(aBuffer+2)*iRecordSize];
109 inline TInt TUsbcScChunkBuffersHeader::NumberOfBuffers() const
115 #ifndef __KERNEL_MODE__
119 /** @capability CommDD
121 inline TInt RDevUsbcScClient::Open(TInt aUnit)
123 _LIT(KUsbDevName, "usbcsc");
124 return (DoCreate(KUsbDevName, VersionRequired(), aUnit, NULL, NULL, EOwnerThread));
128 inline TVersion RDevUsbcScClient::VersionRequired() const
130 return (TVersion(EMajorVersionNumber, EMinorVersionNumber, EBuildVersionNumber));
134 inline TInt RDevUsbcScClient::EndpointZeroRequestError()
136 return DoControl(EControlEndpointZeroRequestError);
140 inline TInt RDevUsbcScClient::EndpointCaps(TDes8& aCapsBuf)
142 return DoControl(EControlEndpointCaps, &aCapsBuf);
146 inline TInt RDevUsbcScClient::DeviceCaps(TUsbDeviceCaps& aCapsBuf)
148 return DoControl(EControlDeviceCaps, &aCapsBuf);
152 inline TInt RDevUsbcScClient::GetAlternateSetting(TInt &aInterfaceNumber)
154 return DoControl(EControlGetAlternateSetting, &aInterfaceNumber);
158 inline TInt RDevUsbcScClient::DeviceStatus(TUsbcDeviceState &aDeviceStatus)
160 return DoControl(EControlDeviceStatus, &aDeviceStatus);
164 inline TInt RDevUsbcScClient::EndpointStatus(TInt aEndpoint,TEndpointState &aEndpointStatus)
166 return DoControl(EControlEndpointStatus,(TAny*) aEndpoint, &aEndpointStatus);
170 inline TInt RDevUsbcScClient::QueryReceiveBuffer(TInt aEndpoint,TInt& aNumberOfBytes)
172 return DoControl(EControlQueryReceiveBuffer, (TAny*) aEndpoint, &aNumberOfBytes);
176 inline TInt RDevUsbcScClient::SendEp0StatusPacket()
178 return DoControl(EControlSendEp0StatusPacket);
182 inline TInt RDevUsbcScClient::HaltEndpoint(TInt aEndpoint)
184 return DoControl(EControlHaltEndpoint, (TAny*) aEndpoint);
188 inline TInt RDevUsbcScClient::ClearHaltEndpoint(TInt aEndpoint)
190 return DoControl(EControlClearHaltEndpoint, (TAny*) aEndpoint);
194 inline TUint RDevUsbcScClient::EndpointZeroMaxPacketSizes()
196 return DoControl(EControlEndpointZeroMaxPacketSizes);
200 inline TInt RDevUsbcScClient::SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize)
202 return DoControl(EControlSetEndpointZeroMaxPacketSize, (TAny*) aMaxPacketSize);
206 inline TInt RDevUsbcScClient::GetEndpointZeroMaxPacketSize()
208 return DoControl(EControlGetEndpointZeroMaxPacketSize);
212 inline TInt RDevUsbcScClient::GetDeviceDescriptor(TDes8& aDeviceDescriptor)
214 return DoControl(EControlGetDeviceDescriptor, &aDeviceDescriptor);
218 inline TInt RDevUsbcScClient::SetDeviceDescriptor(const TDesC8& aDeviceDescriptor)
220 return DoControl(EControlSetDeviceDescriptor, const_cast<TDesC8*>(&aDeviceDescriptor));
224 inline TInt RDevUsbcScClient::GetDeviceDescriptorSize(TInt& aSize)
227 TInt r = DoControl(EControlGetDeviceDescriptorSize, &p);
234 inline TInt RDevUsbcScClient::GetConfigurationDescriptor(TDes8& aConfigurationDescriptor)
236 return DoControl(EControlGetConfigurationDescriptor, &aConfigurationDescriptor);
240 inline TInt RDevUsbcScClient::SetConfigurationDescriptor(const TDesC8& aConfigurationDescriptor)
242 return DoControl(EControlSetConfigurationDescriptor, const_cast<TDesC8*> (&aConfigurationDescriptor));
246 inline TInt RDevUsbcScClient::GetConfigurationDescriptorSize(TInt& aSize)
249 TInt r=DoControl(EControlGetConfigurationDescriptorSize, &p);
256 inline TInt RDevUsbcScClient::GetInterfaceDescriptor(TInt aSettingNumber, TDes8& aInterfaceDescriptor)
258 return DoControl(EControlGetInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor);
262 inline TInt RDevUsbcScClient::SetInterfaceDescriptor(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor)
264 return DoControl(EControlSetInterfaceDescriptor,(TAny*) aSettingNumber,
265 const_cast<TDesC8*>(&aInterfaceDescriptor));
269 inline TInt RDevUsbcScClient::GetInterfaceDescriptorSize(TInt aSettingNumber, TInt& aSize)
272 TInt r = DoControl(EControlGetInterfaceDescriptorSize,(TAny*) aSettingNumber, &p);
279 inline TInt RDevUsbcScClient::GetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber,
280 TDes8& aEndpointDescriptor)
282 TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &aEndpointDescriptor};
283 return DoControl(EControlGetEndpointDescriptor, &info, NULL);
287 inline TInt RDevUsbcScClient::SetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber,
288 const TDesC8& aEndpointDescriptor)
290 TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast<TDesC8*>(&aEndpointDescriptor)};
291 return DoControl(EControlSetEndpointDescriptor, &info, NULL);
295 inline TInt RDevUsbcScClient::GetEndpointDescriptorSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize)
298 TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p};
299 TInt r = DoControl(EControlGetEndpointDescriptorSize, &info, NULL);
306 inline void RDevUsbcScClient::GetOtgDescriptorSize(TInt& aSize)
308 aSize = KUsbDescSize_Otg;
312 inline TInt RDevUsbcScClient::GetOtgDescriptor(TDes8& aOtgDesc)
314 return DoControl(EControlGetOtgDescriptor, (TAny*)&aOtgDesc);
318 inline TInt RDevUsbcScClient::SetOtgDescriptor(const TDesC8& aOtgDesc)
320 return DoControl(EControlSetOtgDescriptor, (TAny*)&aOtgDesc);
324 inline TInt RDevUsbcScClient::GetDeviceQualifierDescriptor(TDes8& aDescriptor)
326 return DoControl(EControlGetDeviceQualifierDescriptor, &aDescriptor);
330 inline TInt RDevUsbcScClient::SetDeviceQualifierDescriptor(const TDesC8& aDescriptor)
332 return DoControl(EControlSetDeviceQualifierDescriptor, const_cast<TDesC8*>(&aDescriptor));
336 inline TInt RDevUsbcScClient::GetOtherSpeedConfigurationDescriptor(TDes8& aDescriptor)
338 return DoControl(EControlGetOtherSpeedConfigurationDescriptor, &aDescriptor);
342 inline TInt RDevUsbcScClient::SetOtherSpeedConfigurationDescriptor(const TDesC8& aDescriptor)
344 return DoControl(EControlSetOtherSpeedConfigurationDescriptor, const_cast<TDesC8*> (&aDescriptor));
348 inline TInt RDevUsbcScClient::GetCSInterfaceDescriptorBlock(TInt aSettingNumber, TDes8& aInterfaceDescriptor)
350 return DoControl(EControlGetCSInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor);
354 inline TInt RDevUsbcScClient::GetCSInterfaceDescriptorBlockSize(TInt aSettingNumber, TInt& aSize)
357 TInt r = DoControl(EControlGetCSInterfaceDescriptorSize,(TAny*) aSettingNumber, &p);
364 inline TInt RDevUsbcScClient::GetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber,
365 TDes8& aEndpointDescriptor)
367 TEndpointDescriptorInfo info={aSettingNumber, aEndpointNumber, &aEndpointDescriptor};
368 return DoControl(EControlGetCSEndpointDescriptor,&info,NULL);
372 inline TInt RDevUsbcScClient::GetCSEndpointDescriptorBlockSize(TInt aSettingNumber, TInt aEndpointNumber,
376 TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p};
377 TInt r = DoControl(EControlGetCSEndpointDescriptorSize, &info, NULL);
384 inline TInt RDevUsbcScClient::SignalRemoteWakeup()
386 return DoControl(EControlSignalRemoteWakeup);
390 inline TInt RDevUsbcScClient::DeviceDisconnectFromHost()
392 return DoControl(EControlDeviceDisconnectFromHost);
396 inline TInt RDevUsbcScClient::DeviceConnectToHost()
398 return DoControl(EControlDeviceConnectToHost);
402 inline TInt RDevUsbcScClient::PowerUpUdc()
404 return DoControl(EControlDevicePowerUpUdc);
408 inline TBool RDevUsbcScClient::CurrentlyUsingHighSpeed()
410 return DoControl(EControlCurrentlyUsingHighSpeed);
414 inline TInt RDevUsbcScClient::SetInterface(TInt aInterfaceNumber, TUsbcScInterfaceInfoBuf& aInterfaceData)
416 TPtr8 name_8(NULL,0);
417 TUsbcScIfcInfo ifcinfo;
418 ifcinfo.iInterfaceData = const_cast<TUsbcScInterfaceInfoBuf*>(&aInterfaceData);
419 if (!aInterfaceData().iString)
421 ifcinfo.iString = NULL;
425 name_8.Set(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aInterfaceData().iString->Ptr())),
426 aInterfaceData().iString->Size(), aInterfaceData().iString->Size());
427 ifcinfo.iString = &name_8;
429 return DoControl(EControlSetInterface, (TAny*)aInterfaceNumber, &ifcinfo);
432 inline TInt RDevUsbcScClient::RealizeInterface(RChunk& aChunk)
434 return aChunk.SetReturnedHandle(DoControl(EControlRealizeInterface));
438 inline TInt RDevUsbcScClient::ReleaseInterface(TInt aInterfaceNumber)
440 return DoControl(EControlReleaseInterface, (TAny*)aInterfaceNumber);
444 inline TInt RDevUsbcScClient::SetCSInterfaceDescriptorBlock(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor)
446 TCSDescriptorInfo info = {aSettingNumber, 0, const_cast<TDesC8*>(&aInterfaceDescriptor),
447 aInterfaceDescriptor.Size()};
448 return DoControl(EControlSetCSInterfaceDescriptor, &info, NULL);
452 inline TInt RDevUsbcScClient::SetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber,
453 const TDesC8& aEndpointDescriptor)
455 TCSDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast<TDesC8*>(&aEndpointDescriptor),
456 aEndpointDescriptor.Size()};
457 return DoControl(EControlSetCSEndpointDescriptor, &info, NULL);
461 inline TInt RDevUsbcScClient::SetDeviceControl()
463 return DoControl(EControlSetDeviceControl);
467 inline TInt RDevUsbcScClient::ReleaseDeviceControl()
469 return DoControl(EControlReleaseDeviceControl);
473 inline TInt RDevUsbcScClient::GetStringDescriptorLangId(TUint16& aLangId)
476 const TInt r = DoControl(EControlGetStringDescriptorLangId, &p);
483 inline TInt RDevUsbcScClient::SetStringDescriptorLangId(TUint16 aLangId)
485 return DoControl(EControlSetStringDescriptorLangId, (TAny*)(TUint)aLangId);
489 inline TInt RDevUsbcScClient::GetManufacturerStringDescriptor(TDes16& aString)
491 TPtr8 name_8(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aString.Ptr())), aString.MaxSize());
492 const TInt r = DoControl(EControlGetManufacturerStringDescriptor, &name_8);
493 aString.SetLength(name_8.Size()/2);
498 inline TInt RDevUsbcScClient::SetManufacturerStringDescriptor(const TDesC16& aString)
500 TPtrC8 name_8(reinterpret_cast<const TUint8*>(aString.Ptr()), aString.Size());
501 return DoControl(EControlSetManufacturerStringDescriptor, &name_8);
505 inline TInt RDevUsbcScClient::RemoveManufacturerStringDescriptor()
507 return DoControl(EControlRemoveManufacturerStringDescriptor);
511 inline TInt RDevUsbcScClient::GetProductStringDescriptor(TDes16& aString)
513 TPtr8 name_8(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aString.Ptr())), aString.MaxSize());
514 const TInt r = DoControl(EControlGetProductStringDescriptor, &name_8);
515 aString.SetLength(name_8.Size()/2);
520 inline TInt RDevUsbcScClient::SetProductStringDescriptor(const TDesC16& aString)
522 TPtrC8 name_8(reinterpret_cast<const TUint8*>(aString.Ptr()), aString.Size());
523 return DoControl(EControlSetProductStringDescriptor, &name_8);
527 inline TInt RDevUsbcScClient::RemoveProductStringDescriptor()
529 return DoControl(EControlRemoveProductStringDescriptor);
533 inline TInt RDevUsbcScClient::GetSerialNumberStringDescriptor(TDes16& aString)
535 TPtr8 name_8(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aString.Ptr())), aString.MaxSize());
536 const TInt r = DoControl(EControlGetSerialNumberStringDescriptor, &name_8);
537 aString.SetLength(name_8.Size()/2);
542 inline TInt RDevUsbcScClient::SetSerialNumberStringDescriptor(const TDesC16& aString)
544 TPtrC8 name_8(reinterpret_cast<const TUint8*>(aString.Ptr()), aString.Size());
545 return DoControl(EControlSetSerialNumberStringDescriptor, &name_8);
549 inline TInt RDevUsbcScClient::RemoveSerialNumberStringDescriptor()
551 return DoControl(EControlRemoveSerialNumberStringDescriptor);
555 inline TInt RDevUsbcScClient::GetConfigurationStringDescriptor(TDes16& aString)
557 TPtr8 name_8(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aString.Ptr())), aString.MaxSize());
558 const TInt r = DoControl(EControlGetConfigurationStringDescriptor, &name_8);
559 aString.SetLength(name_8.Size() / 2);
564 inline TInt RDevUsbcScClient::SetConfigurationStringDescriptor(const TDesC16& aString)
566 TPtrC8 name_8(reinterpret_cast<const TUint8*>(aString.Ptr()), aString.Size());
567 return DoControl(EControlSetConfigurationStringDescriptor, &name_8);
571 inline TInt RDevUsbcScClient::RemoveConfigurationStringDescriptor()
573 return DoControl(EControlRemoveConfigurationStringDescriptor);
577 inline TInt RDevUsbcScClient::GetStringDescriptor(TUint8 aIndex, TDes16& aString)
579 TPtr8 name_8(const_cast<TUint8*>(reinterpret_cast<const TUint8*>(aString.Ptr())), aString.MaxSize());
580 const TInt r = DoControl(EControlGetStringDescriptor, (TAny*)(TUint)aIndex, &name_8);
581 aString.SetLength(name_8.Size() / 2);
586 inline TInt RDevUsbcScClient::SetStringDescriptor(TUint8 aIndex, const TDesC16& aString)
588 TPtrC8 name_8(reinterpret_cast<const TUint8*>(aString.Ptr()), aString.Size());
589 return DoControl(EControlSetStringDescriptor, (TAny*)(TUint)aIndex, &name_8);
593 inline TInt RDevUsbcScClient::RemoveStringDescriptor(TUint8 aIndex)
595 return DoControl(EControlRemoveStringDescriptor, (TAny*)(TUint)aIndex);
599 inline TInt RDevUsbcScClient::AllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource)
601 return DoControl(EControlAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource);
605 inline TInt RDevUsbcScClient::DeAllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource)
607 return DoControl(EControlDeAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource);
611 inline TBool RDevUsbcScClient::QueryEndpointResourceUse(TInt aEndpoint, TUsbcEndpointResource aResource)
613 return DoControl(EControlQueryEndpointResourceUse, (TAny*)aEndpoint, (TAny*)aResource);
617 inline TInt RDevUsbcScClient::ReadDataNotify(TInt aBufferNumber, TRequestStatus& aStatus, TInt aLength)
620 a[0]=(TAny*) aBufferNumber;
621 a[1]=(TAny*) aLength;
622 aStatus=KRequestPending;
623 TInt r = DoControl(~ERequestReadDataNotify, &aStatus, &a[0]);
631 inline void RDevUsbcScClient::WriteData(TInt aBufferNumber, TUint aStart, TUint aLength, TUint aFlags, TRequestStatus& aStatus)
633 DoRequest( ERequestWriteData | ((aBufferNumber&KFieldBuffMask) << KFieldBuffPos) | ((aFlags&KFieldFlagsMask) << KFieldFlagsPos),
634 aStatus, (TAny*) aStart, (TAny*) aLength);
639 inline void RDevUsbcScClient::AlternateDeviceStatusNotify(TRequestStatus& aStatus, TUint& aValue)
641 DoRequest(ERequestAlternateDeviceStatusNotify, aStatus, &aValue);
645 inline void RDevUsbcScClient::ReEnumerate(TRequestStatus& aStatus)
647 DoRequest(ERequestReEnumerate, aStatus);
651 inline void RDevUsbcScClient::EndpointStatusNotify(TRequestStatus& aStatus, TUint& aEndpointMask)
653 DoRequest(ERequestEndpointStatusNotify, aStatus, &aEndpointMask);
657 inline void RDevUsbcScClient::ReadCancel(TInt aBuffer)
659 DoControl(ERequestReadDataNotifyCancel, (TAny*) aBuffer);
663 inline void RDevUsbcScClient::WriteCancel(TInt aBuffer)
665 DoControl(ERequestWriteDataCancel, (TAny*) aBuffer);
669 inline void RDevUsbcScClient::EndpointTransferCancel(TUint aBufferMask)
671 DoControl(ERequestCancel, (TAny*) aBufferMask);
675 inline void RDevUsbcScClient::AlternateDeviceStatusNotifyCancel()
677 DoControl(ERequestAlternateDeviceStatusNotifyCancel);
681 inline void RDevUsbcScClient::ReEnumerateCancel()
683 DoControl(ERequestReEnumerateCancel);
687 inline void RDevUsbcScClient::EndpointStatusNotifyCancel()
689 DoControl(ERequestEndpointStatusNotifyCancel);
692 inline TInt RDevUsbcScClient::GetOtgFeatures(TUint8& aFeatures)
695 TInt r = DoControl(EControlGetOtgFeatures, &p);
702 inline void RDevUsbcScClient::OtgFeaturesNotify(TRequestStatus& aStatus, TUint8& aValue)
704 DoRequest(ERequestOtgFeaturesNotify, aStatus, &aValue);
707 inline void RDevUsbcScClient::OtgFeaturesNotifyCancel()
709 DoControl(ERequestOtgFeaturesNotifyCancel);
712 inline TInt RDevUsbcScClient::StartNextInAlternateSetting()
714 return DoControl(EControlStartNextInAlternateSetting);
717 //Buffer Interface Layer (BIL) inline functions
720 inline TInt TEndpointBuffer::GetBuffer(TUint& aOffset,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength)
722 TInt r = GetBuffer(aOffset,aSize,aZLP,aStatus,aLength);
723 aOffset -= iBaseAddr;
728 inline TInt TEndpointBuffer::GetEndpointNumber()
730 return iEndpointNumber;
733 #endif // #ifndef __KERNEL_MODE__
735 #endif // #ifndef __D32USBCSC_INL__