Android Open Source - drive-mount Mode Sense






From Project

Back to project page drive-mount.

License

The source code is released under:

Apache License

If you think the Android project drive-mount listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright  2014 Jan Seeger//from   w  w w . ja  v a 2  s . c  om
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.alphadev.usbstorage.scsi.command;

/**
 * @author Jan Seeger <jan@alphadev.net>
 */
@SuppressWarnings("unused")
public class ModeSense extends ScsiCommand {
    public static final byte MODE_SENSE = 0x1a;
    /**
     * DBD (disable block descriptors) bit
     * Ifset to zero specifies that the device server may return zero or more block descriptors in the returned MODE SENSE data.
     * A DBD bit set to one specifies that the device server shall not return any block descriptors in the returned MODE SENSE data,
     */
    private boolean mDisableBlockDescriptor;
    private byte mPageCode;
    private byte mSubPageCode;
    private PageControlValues mPageControl;

    @Override
    public byte[] asBytes() {
        byte[] retval = new byte[6];
        retval[0] = MODE_SENSE; // opcode
        retval[1] = (byte) (mDisableBlockDescriptor ? 1 : 0); // DBD bit
        retval[2] = getPageField();
        retval[3] = mSubPageCode;
        retval[4] = (byte) 192;
        // 5 == control bit
        return retval;
    }

    private byte getPageField() {
        byte retval = 0;

        switch (mPageControl) {
            case Changeable:
                retval = 64;
                break;
            case Default:
                retval = (byte) 128;
                break;
            case Saved:
                retval = (byte) 192;
                break;
        }

        return (byte) (retval + mPageCode);
    }

    @Override
    public int getExpectedAnswerLength() {
        return 192;
    }

    public void setDisableBlockDescriptor(boolean value) {
        this.mDisableBlockDescriptor = value;
    }

    public void setPageCode(byte pageCode) {
        this.mPageCode = pageCode;
    }

    public void setSubPageCode(byte subPageCode) {
        this.mSubPageCode = subPageCode;
    }

    public void setPageControl(PageControlValues pageControl) {
        this.mPageControl = pageControl;
    }

    public static enum PageControlValues {
        Current,
        Changeable,
        Default,
        Saved
    }
}




Java Source Code List

net.alphadev.fat32wrapper.Fat32Provider.java
net.alphadev.fat32wrapper.FatBlockDeviceWrapper.java
net.alphadev.fat32wrapper.FatStorage.java
net.alphadev.fat32wrapper.ReadingFileHandle.java
net.alphadev.usbstorage.DeviceManager.java
net.alphadev.usbstorage.DocumentProviderImpl.java
net.alphadev.usbstorage.StorageManager.java
net.alphadev.usbstorage.UsbBulkDevice.java
net.alphadev.usbstorage.api.Identifiable.java
net.alphadev.usbstorage.api.device.BlockDevice.java
net.alphadev.usbstorage.api.device.BulkDevice.java
net.alphadev.usbstorage.api.device.ReadOnlyException.java
net.alphadev.usbstorage.api.filesystem.FileAttribute.java
net.alphadev.usbstorage.api.filesystem.FileHandle.java
net.alphadev.usbstorage.api.filesystem.FileSystemProvider.java
net.alphadev.usbstorage.api.filesystem.Path.java
net.alphadev.usbstorage.api.filesystem.StorageDevice.java
net.alphadev.usbstorage.api.scsi.ScsiTransferable.java
net.alphadev.usbstorage.api.scsi.Transmittable.java
net.alphadev.usbstorage.bbb.BulkBlockDevice.java
net.alphadev.usbstorage.partition.FileSystemDescriptor.java
net.alphadev.usbstorage.partition.MasterBootRecord.java
net.alphadev.usbstorage.partition.PartitionParameters.java
net.alphadev.usbstorage.partition.Partition.java
net.alphadev.usbstorage.scsi.CommandBlockWrapper.java
net.alphadev.usbstorage.scsi.CommandStatusWrapper.java
net.alphadev.usbstorage.scsi.answer.ModeSenseResponse.java
net.alphadev.usbstorage.scsi.answer.ReadCapacityResponse.java
net.alphadev.usbstorage.scsi.answer.ReadFormatCapacitiesEntry.java
net.alphadev.usbstorage.scsi.answer.ReadFormatCapacitiesHeader.java
net.alphadev.usbstorage.scsi.answer.RequestSenseResponse.java
net.alphadev.usbstorage.scsi.answer.StandardInquiryAnswer.java
net.alphadev.usbstorage.scsi.command.Inquiry.java
net.alphadev.usbstorage.scsi.command.ModeSense.java
net.alphadev.usbstorage.scsi.command.Read10.java
net.alphadev.usbstorage.scsi.command.ReadCapacity.java
net.alphadev.usbstorage.scsi.command.ReadFormatCapacities.java
net.alphadev.usbstorage.scsi.command.RequestSense.java
net.alphadev.usbstorage.scsi.command.ScsiCommand.java
net.alphadev.usbstorage.scsi.command.TestUnitReady.java
net.alphadev.usbstorage.util.BitStitching.java
net.alphadev.usbstorage.util.ParcelFileDescriptorUtil.java