Driver-side Handling

This document describes how device drivers handle asynchronous requests.

Drivers generally implement the DoRequest() function in the LDD to handle the received asynchronous messages.

The implementation reads the request type and other passed arguments, and initiates handling of the request appropriately.

The return value of this function only indicates the status of the message reception to the driver. It does not actually indicate the request completion result.

TInt DExDriverLogicalChannel::DoRequest(TInt aReqNo, TRequestStatus* aStatus,
        TAny* a1, TAny* a2)
    {
    switch (aReqNo)
        {
        case RExDriverChannel::ERequestTransmitData:
            // Call TransmitData function
            r = TransmitData ((const TDesC8*)a1);
            // The status object is stored 
            // to be used when notifying the completion of the 
            // request at a later point.
            //
            iTxDataStatus = aStatus;
            break;
        }
    return r;
    }