Power Delivery

class brainstem.entity.PowerDelivery(module, index)[source]

Power Delivery or PD is a power specification which allows more charging options and device behaviors within the USB interface. This Entity will allow you to directly access the vast landscape of PD.

getCableCurrentMax()[source]

Gets the maximum current capability report by the e-mark of the attached cable

Returns

value (int): An enumerated representation of current
  • Unknown/Unattached (0)

  • 3 Amps (1)

  • 5 Amps (2)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getCableOrientation()[source]

Gets the current orientation being used for PD communication

Returns

value (int): An enumerated representation of the cables max speed
  • Unconnected = 0

  • CC1 (1)

  • CC2 (0)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getCableSpeedMax()[source]

Gets the maximum data rate capability reported by the e-mark of the attached cable.

Returns

value (int): An enumerated representation of the cables max speed
  • Unknown/Unattached (0)

  • USB 2.0 (1)

  • USB 3.2 gen 1 (2)

  • USB 3.2 / USB 4 gen 2 (3)

  • USB 4 gen 3 (4)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getCableType()[source]

Gets the cable type reported by the e-mark of the attached cable.

Returns

value (int): An enumerated representation of the cables max speed
  • Invalid, no e-mark and not Vconn powered (0)

  • Passive cable with e-mark (1)

  • Active cable (2)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getCableVoltageMax()[source]

Gets the maximum voltage capability reported by the e-mark of the attached cable.

Returns

value (int): An enumerated representation of voltage
  • Unknown/Unattached (0)

  • 20 Volts DC (1)

  • 30 Volts DC (2)

  • 40 Volts DC (3)

  • 50 Volts DC (4)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getConnectionState()[source]

Gets the current state of the connection in the form of an enumeration.

Returns

value (int): An enumerated representation of the current state. error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getFastRoleSwapCurrent()[source]

Gets the Fast Role Swap Current The fast role swap current refers to the amount of current required by the Local Sink in order to successfully preform the swap.

Returns

value (int): An enumerated value referring to current swap value
  • 0A (0)

  • 900mA (1)

  • 1.5A (2)

  • 3A (3)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getFlagMode(flag)[source]

Gets the current mode of the local partner flag/advertisement. These flags are apart of the first Local Power Data Object and must be managed in order to accurately represent the system to other PD devices. This API allows overriding of that feature. Overriding may lead to unexpected behaviors.

Parameters

flag (int) – Flag/Advertisement to be modified

Returns

value (int): The current mode of the provided flag
  • Disabled (0)

  • Enable (1)

  • Auto (2) default

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getNumberOfPowerDataObjects(partner, powerRole)[source]

Gets the number of Power Data Objects (PDOs) for a given partner and power role.

Parameters
  • partner (int) –

    • Local = 0 = powerdeliveryPartnerLocal

    • Remote = 1 = powerdeliveryPartnerRemote

  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

Returns

value (int): The number of of Power Data Objects (PDO) error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getOverride()[source]

Gets the current enabled overrides

Returns

value (int): Bit mapped representation of the current override configuration. error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPeakCurrentConfiguration()[source]

Gets the Peak Current Configuration for the Local Source. The peak current configuration refers to the allowable tolerance/overload capabilities in regards to the devices max current. This tolerance includes a maximum value and a time unit.

Returns

value (int): An enumerated value referring to the current configuration.
  • Allowable values are 0 - 4

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerDataObject(partner, powerRole, ruleIndex)[source]

Gets the number of Power Data Objects (PDOs) for a given partner and power role.

Parameters
  • partner (int) –

    • Local = 0 = powerdeliveryPartnerLocal

    • Remote = 1 = powerdeliveryPartnerRemote

  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

  • ruleIndex (int) –

Returns

value (int): Power Data Object (PDO) for the given partner and power role. error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerDataObjectEnabled(powerRole, ruleIndex)[source]

Gets the enabled state of the Local Power Data Object (PDO) for a given power role and index. Enabled refers to whether the PDO will be advertised when a PD connection is made. This does not indicate the currently active rule index. This information can be found in Request Data Object (RDO).

Parameters
  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

  • ruleIndex (int) – The index of the PDO in question. Valid index are 1-7.

Returns

value (bool): Represents the enabled state. error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerDataObjectEnabledList(powerRole)[source]

Gets all Power Data Object enables for a given power role. Equivalent of calling PowerDelivery.getPowerDataObjectEnabled() for all indexes.

Parameters

powerRole (int) –

  • Source = 1 = powerdeliveryPowerRoleSource (1) Source

  • Sink = 2 = powerdeliveryPowerRoleSink (2) Sink

Returns

value (bool): Bit mapped representation of the enabled PDOs for a given power role Values align with a given rule index (bits 1-7, bit 0 is invalid). error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerDataObjectList()[source]

Gets all Power Data Objects (PDO) for a given partner and power role. Equivalent to calling PowerDelivery.getPowerDataObject() on all partners, power roles, and index’s.

Returns

value (tuple(int)): All Power Data Objects (PDOs) On success the length should be 28 (7 rules * 2 partners * 2 power roles) The order of which is:

  • Rules 1-7 Local Source

  • Rules 1-7 Local Sink

  • Rules 1-7 Remote Source

  • Rules 1-7 Remote Sink

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerRole()[source]

Gets the power role that is currently being advertised by the local partner. (CC Strapping).

Returns

value (int): The current power role
  • Disabled = 0 = powerdeliveryPowerRoleDisabled

  • Source = 1= powerdeliveryPowerRoleSource

  • Sink = 2 = powerdeliveryPowerRoleSink

  • Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getPowerRolePreferred()[source]

Gets the preferred power role currently being advertised by the Local partner. (CC Strapping).

Returns

value (int): The current power role
  • Disabled = 0 = powerdeliveryPowerRoleDisabled

  • Source = 1= powerdeliveryPowerRoleSource

  • Sink = 2 = powerdeliveryPowerRoleSink

error: Non-zero BrainStem error code on failure.

Return type

Result (object)

getRequestDataObject(partner)[source]

Gets the current Request Data Object (RDO) for a given partner.

RDOs:
  • Are provided by the sinking device.

  • Exist only after a successful PD negotiation (Otherwise zero).

  • Only one RDO can exist at a time. i.e. Either the Local or Remote partner RDO

Parameters

partner (int) –

  • Local = 0 = powerdeliveryPartnerLocal

  • Remote = 1 = powerdeliveryPartnerRemote

Returns

value (int): Value of the request RDO. (Zero indicates the RDO is not active) error: Non-zero BrainStem error code on failure.

Return type

Result (object)

request(request)[source]

Requests an action of the Remote partner. Actions are not guaranteed to occur.

Parameters

request (int) –

  • pdRequestHardReset (0)

  • pdRequestSoftReset (1)

  • pdRequestDataReset (2)

  • pdRequestPowerRoleSwap (3)

  • pdRequestPowerFastRoleSwap (4)

  • pdRequestDataRoleSwap (5)

  • pdRequestVconnSwap (6)

  • pdRequestSinkGoToMinimum (7)

  • pdRequestRemoteSourcePowerDataObjects (8)

  • pdRequestRemoteSinkPowerDataObjects (9)

Returns (int):

Non-zero BrainStem error code on failure.

requestStatus()[source]

Gets the status of the last request command sent.

Returns

value (int): the request status error: Non-zero BrainStem error code on failure.

Return type

Result (object)

resetEntityToFactoryDefaults()[source]

Resets the PowerDelivery Entity to it factory default configuration.

Returns (int):

Non-zero BrainStem error code on failure.

resetPowerDataObjectToDefault(powerRole, ruleIndex)[source]

Resets the Power Data Object (PDO) of the Local partner for a given power role and index.

Parameters
  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

  • ruleIndex (int) – The index of the PDO in question. Valid index are 1-7.

Returns (int):

Non-zero BrainStem error code on failure.

setFastRoleSwapCurrent(current)[source]

Sets the Fast Role Swap Current The fast role swap current refers to the amount of current required by the Local Sink in order to successfully preform the swap.

Parameters

current (int) – An enumerated value referring to value to be set. - 0A (0) - 900mA (1) - 1.5A (2) - 3A (3)

Returns (int):

Non-zero BrainStem error code on failure.

setFlagMode(flag, mode)[source]

Sets how the local partner flag/advertisement is managed. These flags are apart of the first Local Power Data Object and must be managed in order to accurately represent the system to other PD devices. This API allows overriding of that feature. Overriding may lead to unexpected behaviors.

Parameters
  • flag (int) – Flag/Advertisement to be modified

  • mode (int) –

    • Disabled (0)

    • Enable (1)

    • Auto (2) default

Returns (int):

Non-zero BrainStem error code on failure.

setOverride(overrides)[source]

Sets the current overrides.

Parameters

overrides (int) – Overrides to be set in a bit mapped representation.

Returns (int):

Non-zero BrainStem error code on failure.

setPeakCurrentConfiguration(config)[source]

Sets the Peak Current Configuration for the Local Source. The peak current configuration refers to the allowable tolerance/overload capabilities in regards to the devices max current. This tolerance includes a maximum value and a time unit.

Parameters

config (int) – An enumerated value referring to the configuration to be set - Allowable values are 0 - 4

Returns (int):

Non-zero BrainStem error code on failure.

setPowerDataObject(powerRole, ruleIndex, pdo)[source]

Sets the Power Data Object (PDO) of the local partner for a given power role and index.

Parameters
  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

  • ruleIndex (int) – The index of the PDO in question. Valid index are 1-7.

  • pdo (int) – Power Data Object to be set.

Returns (int):

Non-zero BrainStem error code on failure.

setPowerDataObjectEnabled(powerRole, ruleIndex, enable)[source]

Sets the enabled state of the Local Power Data Object (PDO) for a given powerRole and index. Enabled refers to whether the PDO will be advertised when a PD connection is made. This does not indicate the currently active rule index. This information can be found in Request Data Object (RDO).

Parameters
  • powerRole (int) –

    • Source = 1 = powerdeliveryPowerRoleSource

    • Sink = 2 = powerdeliveryPowerRoleSink

  • ruleIndex (int) – The index of the PDO in question. Valid index are 1-7.

  • enable (bool) – The enabled state to be set.

Returns (int):

Non-zero BrainStem error code on failure.

setPowerRole(powerRole)[source]

Sets the power role to be advertised by the Local partner. (CC Strapping).

Parameters

powerRole (int) –

  • Disabled = 0 = powerdeliveryPowerRoleDisabled

  • Source = 1= powerdeliveryPowerRoleSource

  • Sink = 2 = powerdeliveryPowerRoleSink

  • Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)

Returns (int):

Non-zero BrainStem error code on failure.

setPowerRolePreferred(powerRole)[source]

Set the preferred power role to be advertised by the Local partner (CC Strapping).

Parameters

powerRole (int) –

  • Disabled = 0 = powerdeliveryPowerRoleDisabled

  • Source = 1= powerdeliveryPowerRoleSource

  • Sink = 2 = powerdeliveryPowerRoleSink

Returns (int):

Non-zero BrainStem error code on failure.

setRequestDataObject(partner, rdo)[source]

Sets the current Request Data Object (RDO) for a given partner. (Only the local partner can be changed.)

RDOs:
  • Are provided by the sinking device.

  • Exist only after a successful PD negotiation (Otherwise zero).

  • Only one RDO can exist at a time. i.e. Either the Local or Remote partner RDO

Parameters
  • partner (int) – Indicates which side of the PD connection is in question. Local = 0 = powerdeliveryPartnerLocal

  • rdo (int) – RDO to be applied.

Returns (int):

Non-zero BrainStem error code on failure.