USB Class

class USBClass : public Acroname::BrainStem::EntityClass

USBClass: The USB class provides methods to interact with a USB hub and USB switches. Different USB hub products have varying support; check the datasheet to understand the capabilities of each product.

Public Functions

USBClass(void)

Constructor.

~USBClass(void)

Destructor.

void init(Module *pModule, const uint8_t index)

Initialize the class.

Parameters:
  • pModule – The module to which this entity belongs.

  • index – The index of the entity, i.e. the port

aErr setPortEnable(const uint8_t channel)

Enable both power and data lines for a port.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setPortDisable(const uint8_t channel)

Disable both power and data lines for a port.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setDataEnable(const uint8_t channel)

Enable the only the data lines for a port without changing the state of the power line.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setDataDisable(const uint8_t channel)

Disable only the data lines for a port without changing the state of the power line.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setHiSpeedDataEnable(const uint8_t channel)

Enable the only the data lines for a port without changing the state of the power line, Hi-Speed (2.0) only.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setHiSpeedDataDisable(const uint8_t channel)

Disable only the data lines for a port without changing the state of the power line, Hi-Speed (2.0) only.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setSuperSpeedDataEnable(const uint8_t channel)

Enable the only the data lines for a port without changing the state of the power line, SuperSpeed (3.0) only.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setSuperSpeedDataDisable(const uint8_t channel)

Disable only the data lines for a port without changing the state of the power line, SuperSpeed (3.0) only.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setPowerEnable(const uint8_t channel)

Enable only the power line for a port without changing the state of the data lines.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr setPowerDisable(const uint8_t channel)

Disable only the power line for a port without changing the state of the data lines.

Parameters:

channel – The USB sub channel.

Returns:

Returns common entity return values

aErr getPortCurrent(const uint8_t channel, int32_t *microamps)

Get the current through the power line for a port.

Parameters:
  • channel – The USB sub channel.

  • microamps – The USB channel current in micro-amps (1 == 1e-6A).

Returns:

Returns common entity return values

aErr getPortVoltage(const uint8_t channel, int32_t *microvolts)

Get the voltage on the power line for a port.

Parameters:
  • channel – The USB sub channel.

  • microvolts – The USB channel voltage in microvolts (1 == 1e-6V).

Returns:

Returns common entity return values

aErr getHubMode(uint32_t *mode)

Get a bit mapped representation of the hubs mode; see the product datasheet for mode mapping and meaning.

Parameters:

mode – The USB hub mode.

Returns:

Returns common entity return values

aErr setHubMode(const uint32_t mode)

Set a bit mapped hub state; see the product datasheet for state mapping and meaning.

Parameters:

mode – The USB hub mode.

Returns:

Returns common entity return values

aErr clearPortErrorStatus(const uint8_t channel)

Clear the error status for the given port.

Parameters:

channel – The port to clear error status for.

Returns:

Returns common entity return values

aErr getUpstreamMode(uint8_t *mode)

Get the upstream switch mode for the USB upstream ports. Returns auto, port 0 or port 1.

Parameters:

mode – The Upstream port mode.

Returns:

Returns common entity return values

aErr setUpstreamMode(const uint8_t mode)

Set the upstream switch mode for the USB upstream ports. Values are usbUpstreamModeAuto, usbUpstreamModePort0 and usbUpstreamModePort1

Parameters:

mode – The Upstream port mode.

Returns:

Returns common entity return values

aErr getUpstreamState(uint8_t *state)

Get the upstream switch state for the USB upstream ports. Returns 2 if no ports plugged in, 0 if the mode is set correctly and a cable is plugged into port 0, and 1 if the mode is set correctly and a cable is plugged into port 1.

Parameters:

state – The Upstream port state.

Returns:

Returns common entity return values

aErr setEnumerationDelay(const uint32_t ms_delay)

Set the inter-port enumeration delay in milliseconds.

Parameters:

ms_delay – Millisecond delay in 100mS increments (100, 200, 300 etc.)

Returns:

Returns common entity return values

aErr getEnumerationDelay(uint32_t *ms_delay)

Get the inter-port enumeration delay in milliseconds.

Parameters:

ms_delay – Millisecond delay in 100mS increments (100, 200, 300 etc.)

Returns:

Returns common entity return values

aErr setPortCurrentLimit(const uint8_t channel, const uint32_t microamps)

Set the current limit for the port. If the set limit is not achievable, devices will round down to the nearest available current limit setting. This setting can be saved with a stem.system.save() call.

Parameters:
  • channel – USB downstream channel to limit.

  • microamps – The current limit setting.

Returns:

Returns common entity return values

aErr getPortCurrentLimit(const uint8_t channel, uint32_t *microamps)

Get the current limit for the port.

Parameters:
  • channel – USB downstream channel to limit.

  • microamps – The current limit setting.

Returns:

Returns common entity return values

aErr setPortMode(const uint8_t channel, const uint32_t mode)

Set the mode for the Port. The mode is a bitmapped representation of the capabilities of the usb port. These capabilities change for each of the BrainStem devices which implement the usb entity. See your device reference page for a complete list of capabilities. Some devices use a common bit mapping for port mode at usbPortMode

Parameters:
  • channel – USB downstream channel to set the mode on.

  • mode – The port mode setting as packed bit field.

Returns:

Returns common entity return values

aErr getPortMode(const uint8_t channel, uint32_t *mode)

Get the current mode for the Port. The mode is a bitmapped representation of the capabilities of the usb port. These capabilities change for each of the BrainStem devices which implement the usb entity. See your device reference page for a complete list of capabilities. Some devices implement a common bit mapping for port mode at usbPortMode

Parameters:
  • channel – USB downstream channel.

  • mode – The port mode setting. Mode will be filled with the current setting. Mode bits that are not used will be marked as don’t care

Returns:

Returns common entity return values

aErr getPortState(const uint8_t channel, uint32_t *state)

Get the current State for the Port.

Parameters:
  • channel – USB downstream channel.

  • state – The port mode setting. Mode will be filled with the current setting. Mode bits that are not used will be marked as don’t care

Returns:

Returns common entity return values

aErr getPortError(const uint8_t channel, uint32_t *error)

Get the current error for the Port.

Parameters:
  • channel – USB downstream channel.

  • error – The port mode setting. Mode will be filled with the current setting. Mode bits that are not used will be marked as don’t care

Returns:

Returns common entity return values

aErr setUpstreamBoostMode(const uint8_t setting)

Set the upstream boost mode. Boost mode increases the drive strength of the USB data signals (power signals are not changed). Boosting the data signal strength may help to overcome connectivity issues when using long cables or connecting through “pogo” pins. Possible modes are 0 - no boost, 1 - 4% boost, 2 - 8% boost, 3 - 12% boost. This setting is not applied until a stem.system.save() call and power cycle of the hub. Setting is then persistent until changed or the hub is reset. After reset, default value of 0% boost is restored.

Parameters:

setting – Upstream boost setting 0, 1, 2, or 3.

Returns:

Returns common entity return values

aErr setDownstreamBoostMode(const uint8_t setting)

Set the downstream boost mode. Boost mode increases the drive strength of the USB data signals (power signals are not changed). Boosting the data signal strength may help to overcome connectivity issues when using long cables or connecting through “pogo” pins. Possible modes are 0 - no boost, 1 - 4% boost, 2 - 8% boost, 3 - 12% boost. This setting is not applied until a stem.system.save() call and power cycle of the hub. Setting is then persistent until changed or the hub is reset. After reset, default value of 0% boost is restored.

Parameters:

setting – Downstream boost setting 0, 1, 2, or 3.

Returns:

Returns common entity return values

aErr getUpstreamBoostMode(uint8_t *setting)

Get the upstream boost mode. Possible modes are 0 - no boost, 1 - 4% boost, 2 - 8% boost, 3 - 12% boost.

Parameters:

setting – The current Upstream boost setting 0, 1, 2, or 3.

Returns:

Returns common entity return values

aErr getDownstreamBoostMode(uint8_t *setting)

Get the downstream boost mode. Possible modes are 0 - no boost, 1 - 4% boost, 2 - 8% boost, 3 - 12% boost.

Parameters:

setting – The current Downstream boost setting 0, 1, 2, or 3.

Returns:

Returns common entity return values

aErr getDownstreamDataSpeed(const uint8_t channel, uint8_t *speed)

Get the current data transfer speed for the downstream port. The data speed can be Hi-Speed (2.0) or SuperSpeed (3.0) depending on what the downstream device attached is using

Parameters:
  • channel – USB downstream channel to check.

  • speed – Filled with the current port data speed

    • N/A: usbDownstreamDataSpeed_na = 0

    • Hi Speed: usbDownstreamDataSpeed_hs = 1

    • SuperSpeed: usbDownstreamDataSpeed_ss = 2

Returns:

Returns common entity return values

aErr setConnectMode(const uint8_t channel, const uint8_t mode)

Sets the connect mode of the switch.

Parameters:
  • channel – The USB sub channel.

  • mode – The connect mode

    • usbManualConnect = 0

    • usbAutoConnect = 1

Returns:

Returns common entity return values

aErr getConnectMode(const uint8_t channel, uint8_t *mode)

Gets the connect mode of the switch.

Parameters:
  • channel – The USB sub channel.

  • mode – The current connect mode

Returns:

Returns common entity return values

aErr setCC1Enable(const uint8_t channel, const uint8_t bEnable)

Set Enable/Disable on the CC1 line.

Parameters:
  • channel – - USB channel.

  • bEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr getCC1Enable(const uint8_t channel, uint8_t *pEnable)

Get Enable/Disable on the CC1 line.

Parameters:
  • channel – - USB channel.

  • pEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr setCC2Enable(const uint8_t channel, const uint8_t bEnable)

Set Enable/Disable on the CC2 line.

Parameters:
  • channel – - USB channel.

  • bEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr getCC2Enable(const uint8_t channel, uint8_t *pEnable)

Get Enable/Disable on the CC1 line.

Parameters:
  • channel – - USB channel.

  • pEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr getCC1Current(const uint8_t channel, int32_t *microamps)

Get the current through the CC1 for a port.

Parameters:
  • channel – The USB sub channel.

  • microamps – The USB channel current in micro-amps (1 == 1e-6A).

Returns:

Returns common entity return values

aErr getCC2Current(const uint8_t channel, int32_t *microamps)

Get the current through the CC2 for a port.

Parameters:
  • channel – The USB sub channel.

  • microamps – The USB channel current in micro-amps (1 == 1e-6A).

Returns:

Returns common entity return values

aErr getCC1Voltage(const uint8_t channel, int32_t *microvolts)

Get the voltage of CC1 for a port.

Parameters:
  • channel – The USB sub channel.

  • microvolts – The USB channel voltage in micro-volts (1 == 1e-6V).

Returns:

Returns common entity return values

aErr getCC2Voltage(const uint8_t channel, int32_t *microvolts)

Get the voltage of CC2 for a port.

Parameters:
  • channel – The USB sub channel.

  • microvolts – The USB channel voltage in micro-volts (1 == 1e-6V).

Returns:

Returns common entity return values

aErr setSBUEnable(const uint8_t channel, const uint8_t bEnable)

Enable/Disable only the SBU1/2 based on the configuration of the usbPortMode settings.

Parameters:
  • channel – The USB sub channel.

  • bEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr getSBUEnable(const uint8_t channel, uint8_t *pEnable)

Get the Enable/Disable status of the SBU

Parameters:
  • channel – The USB sub channel.

  • pEnable – The enable/disable status of the SBU

Returns:

Returns common entity return values

aErr setCableFlip(const uint8_t channel, const uint8_t bEnable)

Set Cable flip. This will flip SBU, CC and SS data lines.

Parameters:
  • channel – The USB sub channel.

  • bEnable

    • Disabled: 0

    • Enabled: 1

Returns:

Returns common entity return values

aErr getCableFlip(const uint8_t channel, uint8_t *pEnable)

Get Cable flip setting.

Parameters:
  • channel – The USB sub channel.

  • pEnable – The enable/disable status of cable flip.

Returns:

Returns common entity return values

aErr setAltModeConfig(const uint8_t channel, const uint32_t configuration)

Set USB Alt Mode Configuration.

Parameters:
  • channel – The USB sub channel

  • configuration – The USB configuration to be set for the given channel.

Returns:

Returns common entity return values

aErr getAltModeConfig(const uint8_t channel, uint32_t *configuration)

Get USB Alt Mode Configuration.

Parameters:
  • channel – The USB sub channel

  • configuration – The USB configuration for the given channel.

Returns:

Returns common entity return values

aErr getSBU1Voltage(const uint8_t channel, int32_t *microvolts)

Get the voltage of SBU1 for a port.

Parameters:
  • channel – The USB sub channel.

  • microvolts – The USB channel voltage in micro-volts (1 == 1e-6V).

Returns:

Returns common entity return values

aErr getSBU2Voltage(const uint8_t channel, int32_t *microvolts)

Get the voltage of SBU2 for a port.

Parameters:
  • channel – The USB sub channel.

  • microvolts – The USB channel voltage in micro-volts (1 == 1e-6V).

Returns:

Returns common entity return values