userlibandfileserver/fileserver/shostmassstorage/msproxy/hostusbmsproxy.cpp
changeset 44 36bfc973b146
parent 43 96e5fb8b040d
child 87 2f92ad2dc5db
child 119 6e99f362aa46
equal deleted inserted replaced
43:96e5fb8b040d 44:36bfc973b146
   533 	__MSFNSLOG
   533 	__MSFNSLOG
   534     __HOSTPRINT(_L("\n>>> HOST Caps"));
   534     __HOSTPRINT(_L("\n>>> HOST Caps"));
   535 	TLocalDriveCapsV6Buf caps;
   535 	TLocalDriveCapsV6Buf caps;
   536     caps.FillZ();
   536     caps.FillZ();
   537 
   537 
   538 	caps().iType = EMediaHardDisk;
   538     TLocalDriveCapsV6& c = caps();
   539 	caps().iBattery = EBatNotSupported;
   539 
   540 	caps().iDriveAtt = KDriveAttLocal | KDriveAttRemovable;
   540 	c.iType = EMediaHardDisk;
   541 	caps().iMediaAtt = KMediaAttFormattable;
   541     c.iConnectionBusType = EConnectionBusUsb;
   542 	caps().iFileSystemId = KDriveFileSysFAT;
   542 	c.iDriveAtt = KDriveAttLocal | KDriveAttRemovable | KDriveAttExternal;
   543 	caps().iExtraInfo = EFalse;
   543 	c.iMediaAtt = KMediaAttFormattable;
       
   544 	c.iFileSystemId = KDriveFileSysFAT;
   544 
   545 
   545 	TCapsInfo capsInfo;
   546 	TCapsInfo capsInfo;
   546 	TInt r = iUsbHostMsLun.Caps(capsInfo);
   547 	TInt r = iUsbHostMsLun.Caps(capsInfo);
   547 	if (KErrNone == r)
   548 	if (KErrNone == r)
   548 		{
   549 		{
   549         caps().iBlockSize = capsInfo.iBlockLength;
   550         c.iBlockSize = capsInfo.iBlockLength;
   550         TUint64 size = iMsDataMemMap.DataSize();
   551         TUint64 size = iMsDataMemMap.DataSize();
   551         if (size == 0)
   552         if (size == 0)
   552             {
   553             {
   553             // No valid partitions so specify the size of the disk
   554             // No valid partitions so specify the size of the disk
   554             size = static_cast<TUint64>(capsInfo.iNumberOfBlocks) * capsInfo.iBlockLength;
   555             size = static_cast<TUint64>(capsInfo.iNumberOfBlocks) * capsInfo.iBlockLength;
   555             }
   556             }
   556         caps().iSize = size;
   557         c.iSize = size;
   557 
   558 
   558         caps().iEraseBlockSize = 0;
   559         c.iEraseBlockSize = 0;
   559 
   560 
   560         if (capsInfo.iWriteProtect)
   561         if (capsInfo.iWriteProtect)
   561             {
   562             {
   562             caps().iMediaAtt |= KMediaAttWriteProtected;
   563             c.iMediaAtt |= KMediaAttWriteProtected;
   563             }
   564             }
   564         __HOSTPRINT4(_L("<<< HOST Caps Block[num=0x%x size=0x%x] Media[size=0x%lx WP=0x%x]"),
   565         __HOSTPRINT4(_L("<<< HOST Caps Block[num=0x%x size=0x%x] Media[size=0x%lx WP=0x%x]"),
   565                     capsInfo.iNumberOfBlocks, capsInfo.iBlockLength,
   566                     capsInfo.iNumberOfBlocks, capsInfo.iBlockLength,
   566 		            caps().iSize, caps().iMediaAtt);
   567 		            caps().iSize, caps().iMediaAtt);
   567 		}
   568 		}
   568 	else
   569 	else
   569         {
   570         {
   570         __HOSTPRINT(_L("<<< HOST Caps Media Not Present"));
   571         __HOSTPRINT(_L("<<< HOST Caps Media Not Present"));
   571 		caps().iType = EMediaNotPresent;
   572 		c.iType = EMediaNotPresent;
   572 		if(r != KErrNotReady)
   573 		if(r != KErrNotReady)
   573 			r = KErrUnknown;
   574 			r = KErrUnknown;
   574         }
   575         }
   575 	anInfo = caps.Left(Min(caps.Length(),anInfo.MaxLength()));
   576 	anInfo = caps.Left(Min(caps.Length(),anInfo.MaxLength()));
   576 	return r;
   577 	return r;