PowerDelivery¶
See the PowerDelivery Entity for generic information.
- 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.
- getAttachTimeElapsed(buffer_length=16384)[source]¶
Gets the length of time that the port has been in the attached state. Returned as a list of two unsigned integers, first seconds, then microseconds.
- Parameters:
buffer_length (unsigned int) – Length of the buffer to be filed
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valuelist(unsigned int)
Pointer to list of unsigned integers to fill with attach time elapsed
- Return type:
- getCableCurrentMax()[source]¶
Gets the maximum current capability report by the e-mark of the attached cable.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filled with an enumerated representation of current.
Unknown/Unattached (0)
3 Amps (1)
5 Amps (2)
- Return type:
- getCableOrientation()[source]¶
Gets the current orientation being used for PD communication
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable filled with an enumeration of the orientation.
Unconnected (0)
CC1 (1)
CC2 (2)
- Return type:
- getCableSpeedMax()[source]¶
Gets the maximum data rate capability reported by the e-mark of the attached cable.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filled with an enumerated representation of data 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)
- Return type:
- getCableType()[source]¶
Gets the cable type reported by the e-mark of the attached cable.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filled with an enumerated representation of the cable type.
Invalid, no e-mark and not Vconn powered (0)
Passive cable with e-mark (1)
Active cable (2)
- Return type:
- getCableVoltageMax()[source]¶
Gets the maximum voltage capability reported by the e-mark of the attached cable.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filled with an enumerated representation of voltage.
Unknown/Unattached (0)
20 Volts DC (1)
30 Volts DC (2)
40 Volts DC (3)
50 Volts DC (4)
- Return type:
- getConnectionState()[source]¶
Gets the current state of the connection in the form of an enumeration.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
Pointer to be filled with the current connection state.
- Return type:
- getDataRoleCapabilities()[source]¶
Gets the data roles that may be advertised by the local partner.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filed with the data role
None = 0 = pdDataRoleCapabilities_None
DFP = 1 = pdDataRoleCapabilities_DFP
UFP = 2 = pdDataRoleCapabilities_UFP
DFP/UFP = 3 = pdDataRoleCapabilities_DualRole (Dual Role Port)
- Return type:
- 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:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- An enumerated value referring to current swap value.
0A (0)
900mA (1)
1.5A (2)
3A (3)
- Return type:
- 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 (unsigned char) – Flag/Advertisement to be modified
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filled with the current mode.
Disabled (0)
Enabled (1)
Auto (2) default
- Return type:
- getLinkState()[source]¶
Gets the current state of the connection in the form of a bitmask.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned int
Pointer to be filled with the current connection state bits.
- Return type:
- getNumberOfPowerDataObjects(partner, power_role)[source]¶
Gets the number of Power Data Objects (PDOs) for a given partner and power role.
- Parameters:
partner (unsigned char) –
- Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
Variable to be filled with the number of PDOs.
- Return type:
- getOverride()[source]¶
Gets the current enabled overrides
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned int
Bit mapped representation of the current override configuration.
- Return type:
- 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:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- An enumerated value referring to the current configuration.
Allowable values are 0 - 4
- Return type:
- getPowerDataObject(partner, power_role, rule_index)[source]¶
Gets the Power Data Object (PDO) for the requested partner, powerRole and index.
- Parameters:
partner (unsigned char) –
- Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – The index of the PDO in question. Valid index are 1-7.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned int
Variable to be filled with the requested power rule.
- Return type:
- getPowerDataObjectEnabled(power_role, rule_index)[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:
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – The index of the PDO in question. Valid index are 1-7.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valuebool
Variable to be filled with enabled state.
- Return type:
- getPowerDataObjectEnabledList(power_role)[source]¶
Gets all Power Data Object enables for a given power role. Equivalent of calling PowerDeliveryClass::getPowerDataObjectEnabled() for all indexes.
- Parameters:
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
Variable to be filled with a 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)
- Return type:
- getPowerDataObjectList(buffer_length=16384)[source]¶
Gets all Power Data Objects (PDOs). Equivalent to calling PowerDeliveryClass::getPowerDataObject() on all partners, power roles, and index’s.
- Parameters:
buffer_length (unsigned int) – Length of the buffer to be filed
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valuelist(unsigned int)
pointer to the start of a c style buffer to be filled The order of which is:
Rules 1-7 Local Source
Rules 1-7 Local Sink
Rules 1-7 Partner Source
Rules 1-7 Partner Sink.
- Return type:
- getPowerRole()[source]¶
Gets the power role that is currently being advertised by the local partner. (CC Strapping).
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filed with the power role
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)
- Return type:
- getPowerRoleCapabilities()[source]¶
Gets the power roles that may be advertised by the local partner. (CC Strapping).
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Variable to be filed with the power role
None = 0 = pdPowerRoleCapabilities_None
Source = 1 = pdPowerRoleCapabilities_Source
Sink = 2 = pdPowerRoleCapabilities_Sink
Source/Sink = 3 = pdPowerRoleCapabilities_DualRole (Dual Role Port)
- Return type:
- getPowerRolePreferred()[source]¶
Gets the preferred power role currently being advertised by the Local partner. (CC Strapping).
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
- Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- Return type:
- getRequestDataObject(partner)[source]¶
Gets the current Request Data Object (RDO) for a given partner. RDOs are provided by the sinking device and 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 (unsigned char) –
- Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned int
Variable to be filled with the current RDO. Zero indicates the RDO is not active.
- Return type:
- static packDataObjectAttributes(partner, power_role, rule_index)[source]¶
Helper function for packing Data Object attributes. This value is used as a subindex for all Data Object calls with the BrainStem Protocol.
- Parameters:
partner (unsigned char) –
- Indicates which side of the PD connection.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
power_role (unsigned char) –
- Indicates which power role of PD connection.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – Data object index.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned char
Variable to be filled with packed values.
- Return type:
- request(request)[source]¶
Requests an action of the Remote partner. Actions are not guaranteed to occur.
- Parameters:
request (unsigned char) –
- Request to be issued to the remote partner
pdRequestHardReset (0)
pdRequestSoftReset (1)
pdRequestDataReset (2)
pdRequestPowerRoleSwap (3)
pdRequestPowerFastRoleSwap (4)
pdRequestDataRoleSwap (5)
pdRequestVconnSwap (6)
pdRequestSinkGoToMinimum (7)
pdRequestRemoteSourcePowerDataObjects (8)
pdRequestRemoteSinkPowerDataObjects (9)
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- requestStatus()[source]¶
Gets the status of the last request command sent.
- Returns:
- Object containing error code and returned value on success.
- errorunsigned byte
An error result from the list of defined error codes
- valueunsigned int
Variable to be filled with the status
- Return type:
- resetPowerDataObjectToDefault(power_role, rule_index)[source]¶
Resets the Power Data Object (PDO) of the Local partner for a given power role and index.
- Parameters:
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – The index of the PDO in question. Valid index are 1-7.
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setFastRoleSwapCurrent(swap_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:
swap_current (unsigned char) –
- An enumerated value referring to value to be set.
0A (0)
900mA (1)
1.5A (2)
3A (3)
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- 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 (unsigned char) – Flag/Advertisement to be modified
mode (unsigned char) –
- Value to be applied.
Disabled (0)
Enabled (1)
Auto (2) default
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setOverride(overrides)[source]¶
Sets the current enabled overrides
- Parameters:
overrides (unsigned int) – Overrides to be set in a bit mapped representation.
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setPeakCurrentConfiguration(configuration)[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:
configuration (unsigned char) –
- An enumerated value referring to the configuration to be set
Allowable values are 0 - 4
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setPowerDataObject(power_role, rule_index, pdo)[source]¶
Sets the Power Data Object (PDO) of the local partner for a given power role and index.
- Parameters:
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – The index of the PDO in question. Valid index are 1-7.
pdo (unsigned int) – Power Data Object to be set.
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setPowerDataObjectEnabled(power_role, rule_index, enabled)[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:
power_role (unsigned char) –
- Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
rule_index (unsigned char) – The index of the PDO in question. Valid index are 1-7.
enabled (bool) – The state to be set.
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setPowerRole(power_role)[source]¶
Set the current power role to be advertised by the Local partner. (CC Strapping).
- Parameters:
power_role (unsigned char) –
- Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setPowerRolePreferred(power_role)[source]¶
Set the preferred power role to be advertised by the Local partner (CC Strapping).
- Parameters:
power_role (unsigned char) –
- Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- setRequestDataObject(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 and 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:
rdo (unsigned int) – Request Data Object to be set.
- Returns:
An error result from the list of defined error codes in brainstem.result.Result
- Return type:
unsigned byte
- static unpackDataObjectAttributes(attributes)[source]¶
Helper function for unpacking Data Object attributes. This value is used as a subindex for all Data Object calls with the BrainStem Protocol.
- Parameters:
attributes (unsigned char) – Variable to be filled with packed values.
- Returns:
- Object containing error code and returned values on success.
- errorunsigned byte
An error result from the list of defined error codes
- partnerunsigned char
- Indicates which side of the PD connection.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
- power_roleunsigned char
- Indicates which power role of PD connection.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- rule_indexunsigned char
Data object index.
- Return type: