package yaffs2.utils.debug.communication;
import java.io.InputStream;
import java.io.OutputStream;
import yaffs2.port.yaffs_Device;
import yaffs2.port.yaffs_Spare;
import yaffs2.utils.UnexpectedException;
import yaffs2.utils.Yaffs1NANDInterface;
public class DirectInterfaceClientStub extends Transceiver implements Yaffs1NANDInterface
{
yaffs_Device dev;
public DirectInterfaceClientStub(yaffs_Device dev, InputStream rx, OutputStream tx,
String nodeName)
{
super(rx, tx, nodeName);
this.dev = dev;
}
public yaffs_Device deviceIdToDevice(int deviceId)
{
return dev;
}
protected void processInput(int command,
int deviceGenericDevice,
int devicenDataBytesPerChunk, int chunkInNAND, int blockInNAND,
byte[] data, int dataIndex, byte[] spare, int spareIndex)
{
// ignored
switch (command)
{
case REPLY_DONE:
case REPLY_READCHUNKFROMNAND:
break;
default:
throw new UnexpectedException();
}
}
public boolean readChunkFromNAND(yaffs_Device dev, int chunkInNAND,
byte[] data, int dataIndex, yaffs_Spare spare)
{
send(CMD_READCHUNKFROMNAND, dev.subField1.genericDevice,
dev.subField1.nDataBytesPerChunk,
chunkInNAND, -1, data, dataIndex, spare == null ? null : spare.serialized,
spare == null ? 0 : spare.offset);
receive(false, data, dataIndex, spare.serialized,
spare == null ? 0 : spare.offset);
return true;
}
public boolean writeChunkToNAND(yaffs_Device dev, int chunkInNAND,
byte[] data, int dataIndex, yaffs_Spare spare)
{
send(CMD_WRITECHUNKTONAND, dev.subField1.genericDevice,
dev.subField1.nDataBytesPerChunk, chunkInNAND, -1, data, dataIndex,
spare == null ? null : spare.serialized, spare == null ? 0 : spare.offset);
receive(false, null, 0, null, 0);
return true;
}
public boolean eraseBlockInNAND(yaffs_Device dev, int blockInNAND)
{
send(CMD_ERASEBLOCKINNAND, dev.subField1.genericDevice,
dev.subField1.nDataBytesPerChunk, -1, blockInNAND, null, 0, null, 0);
receive(false, null, 0, null, 0);
return true;
}
public boolean initialiseNAND(yaffs_Device dev)
{
send(CMD_INITIALISENAND, dev.subField1.genericDevice,
dev.subField1.nDataBytesPerChunk, -1, -1, null, 0, null, 0);
receive(false, null, 0, null, 0);
return true;
}
}