Information Technology Reference
In-Depth Information
} else
{
// There was an error (bCSWStatus != 0x0)
// and dCBWDataTransferLength is <= the endpoint size.
// Send dCBWDataTransferLength bytes from msd_buffer.
SendData((byte*)&msd_buffer[0], gblCBW.dCBWDataTransferLength);
// Set dCBWDataTransferLength = 0 to cause the CSW to be sent.
gblCBW.dCBWDataTransferLength = 0;
// Decrement dCSWDataResidue by the number of bytes sent.
msd_csw.dCSWDataResidue -= gblCBW.dCBWDataTransferLength;
}
} else
{
// There is no error and the data to be sent is <= the endpoint size.
// Send dCSWDataResidue bytes beginning at ptrNextData.
SendData(ptrNextData, msd_csw.dCSWDataResidue);
// Subtract the sent bytes from dCBWDataTransferLength.
gblCBW.dCBWDataTransferLength -= msd_csw.dCSWDataResidue ;
// Set dCSWDataResidue equal to dCBWDataTransferLength.
msd_csw.dCSWDataResidue = gblCBW.dCBWDataTransferLength;
// If the host expected more bytes than were sent,
// dCBWDataTransferLength is greater than zero.
// Set dCBWDataTransferLength = 0 to cause the CSW to be sent.
gblCBW.dCBWDataTransferLength = 0;
}
}
}
}
Search WWH ::




Custom Search