| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Enumerations | Functions
RNDIS Class Host Mode Driver
RNDIS (Networking) Class Driver

## Detailed Description

# Module Source Dependencies

The following files must be built with any user project that uses this module:

- LPCUSBlib/Drivers/USB/Class/Host/RNDIS.c (Makefile source module name: LPCUSBlib_SRC_USBCLASS)

# Module Description

Host Mode USB Class driver framework interface, for the Microsoft RNDIS Ethernet USB Class driver.

## Data Structures
struct | USB_ClassInfo_RNDIS_Host_t
| RNDIS Class Host Mode Configuration and State Structure. More...

## Enumerations
enum | RNDIS_Host_EnumerationFailure_ErrorCodes_t { RNDIS_ENUMERROR_NoError = 0, RNDIS_ENUMERROR_InvalidConfigDescriptor = 1, RNDIS_ENUMERROR_NoCompatibleInterfaceFound = 2, RNDIS_ENUMERROR_PipeConfigurationFailed = 3 }

## Functions
uint8_t | RNDIS_Host_ConfigurePipes (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, uint16_t ConfigDescriptorSize, void *DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
| Host interface configuration routine, to configure a given RNDIS host interface instance using the Configuration Descriptor read from an attached USB device. This function automatically updates the given RNDIS Host instance's state values and configures the pipes required to communicate with the interface if it is found within the device. This should be called once after the stack has enumerated the attached device, while the host state machine is in the Addressed state.
uint8_t | RNDIS_Host_SendKeepAlive (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
| Sends a RNDIS KEEPALIVE command to the device, to ensure that it does not enter standby mode after periods of long inactivity.
uint8_t | RNDIS_Host_InitializeDevice (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
| Initializes the attached RNDIS device's RNDIS interface. This should be called after the device's pipes have been configured via the call to RNDIS_Host_ConfigurePipes().
uint8_t | RNDIS_Host_SetRNDISProperty (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, const uint32_t Oid, void *Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
| Sets a given RNDIS property of an attached RNDIS device.
uint8_t | RNDIS_Host_QueryRNDISProperty (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, const uint32_t Oid, void *Buffer, const uint16_t MaxLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
| Gets a given RNDIS property of an attached RNDIS device.
bool | RNDIS_Host_IsPacketReceived (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
| Determines if a packet is currently waiting for the host to read in and process.
uint8_t | RNDIS_Host_ReadPacket (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, void *Buffer, uint16_t *const PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(3)
| Retrieves the next pending packet from the device, discarding the remainder of the RNDIS packet header to leave only the packet contents for processing by the host in the nominated buffer.
uint8_t | RNDIS_Host_SendPacket (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, void *Buffer, const uint16_t PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
| Sends the given packet to the attached RNDIS device, after adding a RNDIS packet message header.
static void | RNDIS_Host_USBTask (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| General management task for a given RNDIS host class interface, required for the correct operation of the interface. This should be called frequently in the main program loop, before the master USB management task USB_USBTask().

## Enumeration Type Documentation

enum RNDIS_Host_EnumerationFailure_ErrorCodes_t

Enum for the possible error codes returned by the RNDIS_Host_ConfigurePipes() function.

Enumerator:

  RNDIS_ENUMERROR_NoError | Configuration Descriptor was processed successfully.
  RNDIS_ENUMERROR_InvalidConfigDescriptor | The device returned an invalid Configuration Descriptor.
  RNDIS_ENUMERROR_NoCompatibleInterfaceFound | A compatible RNDIS interface was not found in the device's Configuration Descriptor.
  RNDIS_ENUMERROR_PipeConfigurationFailed | One or more pipes for the specified interface could not be configured correctly.

Definition at line 114 of file RNDISClassHost.h.

## Function Documentation

uint8_t RNDIS_Host_ConfigurePipes | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo,
|  | uint16_t | ConfigDescriptorSize,
|  | void * | DeviceConfigDescriptor
| ) |  |

Host interface configuration routine, to configure a given RNDIS host interface instance using the Configuration Descriptor read from an attached USB device. This function automatically updates the given RNDIS Host instance's state values and configures the pipes required to communicate with the interface if it is found within the device. This should be called once after the stack has enumerated the attached device, while the host state machine is in the Addressed state.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.
  ConfigDescriptorSize | : Length of the attached device's Configuration Descriptor.
  DeviceConfigDescriptor | : Pointer to a buffer containing the attached device's Configuration Descriptor.

Returns
  A value from the RNDIS_Host_EnumerationFailure_ErrorCodes_t enum.

Definition at line 43 of file RNDISClassHost.c.

uint8_t RNDIS_Host_InitializeDevice | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo | ) |

Initializes the attached RNDIS device's RNDIS interface. This should be called after the device's pipes have been configured via the call to RNDIS_Host_ConfigurePipes().

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.

Returns
  A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_ERROR_LOGICAL_CMD_FAILED if the device returned a logical command failure.

Definition at line 298 of file RNDISClassHost.c.

bool RNDIS_Host_IsPacketReceived | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo | ) |

Determines if a packet is currently waiting for the host to read in and process.

Precondition
  This function must only be called when the Host state machine is in the HOST_STATE_Configured state or the call will fail.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.

Returns
  Boolean `true` if a packet is waiting to be read in by the host, `false` otherwise.

Definition at line 429 of file RNDISClassHost.c.

uint8_t RNDIS_Host_QueryRNDISProperty | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo,
|  | const uint32_t | Oid,
|  | void * | Buffer,
|  | const uint16_t | MaxLength
| ) |  |

Gets a given RNDIS property of an attached RNDIS device.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.
  Oid | : OID number of the parameter to get.
  Buffer | : Pointer to where the property data is to be written to.
  MaxLength | : Length in bytes of the destination buffer size.

Returns
  A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_ERROR_LOGICAL_CMD_FAILED if the device returned a logical command failure.

Definition at line 381 of file RNDISClassHost.c.

uint8_t RNDIS_Host_ReadPacket | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo,
|  | void * | Buffer,
|  | uint16_t *const | PacketLength
| ) |  |

Retrieves the next pending packet from the device, discarding the remainder of the RNDIS packet header to leave only the packet contents for processing by the host in the nominated buffer.

Precondition
  This function must only be called when the Host state machine is in the HOST_STATE_Configured state or the call will fail.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.
  Buffer | : Pointer to a buffer where the packer data is to be written to.
  PacketLength | : Pointer to where the length in bytes of the read packet is to be stored.

Returns
  A value from the Pipe_Stream_RW_ErrorCodes_t enum.

Definition at line 446 of file RNDISClassHost.c.

uint8_t RNDIS_Host_SendKeepAlive | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo | ) |

Sends a RNDIS KEEPALIVE command to the device, to ensure that it does not enter standby mode after periods of long inactivity.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.

Returns
  A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_ERROR_LOGICAL_CMD_FAILED if the device returned a logical command failure.

Definition at line 272 of file RNDISClassHost.c.

uint8_t RNDIS_Host_SendPacket | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo,
|  | void * | Buffer,
|  | const uint16_t | PacketLength
| ) |  |

Sends the given packet to the attached RNDIS device, after adding a RNDIS packet message header.

Precondition
  This function must only be called when the Host state machine is in the HOST_STATE_Configured state or the call will fail.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.
  Buffer | : Pointer to a buffer where the packer data is to be read from.
  PacketLength | : Length in bytes of the packet to send.

Returns
  A value from the Pipe_Stream_RW_ErrorCodes_t enum.

Definition at line 493 of file RNDISClassHost.c.

uint8_t RNDIS_Host_SetRNDISProperty | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo,
|  | const uint32_t | Oid,
|  | void * | Buffer,
|  | const uint16_t | Length
| ) |  |

Sets a given RNDIS property of an attached RNDIS device.

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.
  Oid | : OID number of the parameter to set.
  Buffer | : Pointer to where the property data is to be sourced from.
  Length | : Length in bytes of the property data to sent to the device.

Returns
  A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_ERROR_LOGICAL_CMD_FAILED if the device returned a logical command failure.

Definition at line 333 of file RNDISClassHost.c.

static void RNDIS_Host_USBTask | ( | USB_ClassInfo_RNDIS_Host_t *const | RNDISInterfaceInfo | ) |
| inline static

General management task for a given RNDIS host class interface, required for the correct operation of the interface. This should be called frequently in the main program loop, before the master USB management task USB_USBTask().

Parameters

  RNDISInterfaceInfo | : Pointer to a structure containing an RNDIS Class host configuration and state.

Returns
  Nothing

Definition at line 240 of file RNDISClassHost.h.