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; |