/* Responds to 16/32-bit data word read command from remote CPU system. to read into a write-protected word on the remote CPU system. */
void IPCRtoLDataRead_Protected(volatile tIpcController *psController, tIpcMessage *psMessage, uint16_t bBlock)
/* Responds to 16/32-bit data word read command from remote CPU system. to read into a write-protected word on the remote CPU system. */
void IPCRtoLDataRead_Protected(volatile tIpcController *psController, tIpcMessage *psMessage, uint16_t bBlock)
{
    unsigned long ulReaddata;
    uint16_t usLength;
    usLength = (uint16_t)psMessage->uldataw1;
    if (usLength == IPC_LENGTH_16_BITS)
    {
        ulReaddata = (unsigned long)(*(volatile uint16_t *)psMessage->uladdress);
    }
    else if (usLength == IPC_LENGTH_32_BITS)
    {
        ulReaddata = *(unsigned long *)psMessage->uladdress;
    }
    IPCLtoRDataWrite_Protected(psController, psMessage->uldataw2, ulReaddata,
                               usLength, bBlock,
                               (psMessage->uldataw1 & 0xFFFF0000));
}