PowerDelivery Entity¶
See the PowerDelivery Entity for generic information.
- group PowerDeliveryEntity
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.
-
void powerdelivery_getConnectionState(unsigned int *id, struct Result *result, const int index)¶
Gets the current state of the connection in the form of an enumeration.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Pointer to be filled with the current connection state.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getNumberOfPowerDataObjects(unsigned int *id, struct Result *result, const int index, const unsigned char partner, const unsigned char powerRole)¶
Gets the number of Power Data Objects (PDOs) for a given partner and power role.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with the number of PDOs.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
partner – Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
-
void powerdelivery_getPowerDataObject(unsigned int *id, struct Result *result, const int index, const unsigned char partner, const unsigned char powerRole, const unsigned char ruleIndex)¶
Gets the Power Data Object (PDO) for the requested partner, powerRole and index.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with the requested power rule.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
partner – Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – The index of the PDO in question. Valid index are 1-7.
-
void powerdelivery_setPowerDataObject(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole, const unsigned char ruleIndex, const unsigned int pdo)¶
Sets the Power Data Object (PDO) of the local partner for a given power role and index.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – The index of the PDO in question. Valid index are 1-7.
pdo – Power Data Object to be set.
-
void powerdelivery_resetPowerDataObjectToDefault(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole, const unsigned char ruleIndex)¶
Resets the Power Data Object (PDO) of the Local partner for a given power role and index.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – The index of the PDO in question. Valid index are 1-7.
-
void powerdelivery_getPowerDataObjectList(unsigned int *id, struct Result *result, const int index, unsigned int *buffer, const unsigned int bufferLength)¶
Gets all Power Data Objects (PDOs). Equivalent to calling PowerDeliveryClass::getPowerDataObject() on all partners, power roles, and index’s.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Length that was actually received and filled. On success this value should be 28 (7 rules * 2 partners * 2 power roles)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
buffer – 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.
bufferLength – Length of the buffer to be filed
-
void powerdelivery_getPowerDataObjectEnabled(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole, const unsigned char ruleIndex)¶
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).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with enabled state.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – The index of the PDO in question. Valid index are 1-7.
-
void powerdelivery_setPowerDataObjectEnabled(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole, const unsigned char ruleIndex, const unsigned char enabled)¶
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).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – The index of the PDO in question. Valid index are 1-7.
enabled – The state to be set.
-
void powerdelivery_getPowerDataObjectEnabledList(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole)¶
Gets all Power Data Object enables for a given power role. Equivalent of calling PowerDeliveryClass::getPowerDataObjectEnabled() for all indexes.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
powerRole – Indicates which power role of PD connection is in question.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
-
void powerdelivery_getRequestDataObject(unsigned int *id, struct Result *result, const int index, const unsigned char partner)¶
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
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with the current RDO. Zero indicates the RDO is not active.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
partner – Indicates which side of the PD connection is in question.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
-
void powerdelivery_setRequestDataObject(unsigned int *id, struct Result *result, const int index, const unsigned int rdo)¶
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
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
rdo – Request Data Object to be set.
-
void powerdelivery_getLinkState(unsigned int *id, struct Result *result, const int index)¶
Gets the current state of the connection in the form of a bitmask.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Pointer to be filled with the current connection state bits.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getAttachTimeElapsed(unsigned int *id, struct Result *result, const int index, unsigned int *secondsAndMicroseconds, const unsigned int bufferLength)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Length that was actually received and filled.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
secondsAndMicroseconds – Pointer to list of unsigned integers to fill with attach time elapsed
bufferLength – Length of the buffer to be filed
-
void powerdelivery_getPowerRoleCapabilities(unsigned int *id, struct Result *result, const int index)¶
Gets the power roles that may be advertised by the local partner. (CC Strapping).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getPowerRole(unsigned int *id, struct Result *result, const int index)¶
Gets the power role that is currently being advertised by the local partner. (CC Strapping).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filed with the power role
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_setPowerRole(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole)¶
Set the current power role to be advertised by the Local partner. (CC Strapping).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
powerRole – Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
Source/Sink = 3 = powerdeliveryPowerRoleSourceSink (Dual Role Port)
-
void powerdelivery_getPowerRolePreferred(unsigned int *id, struct Result *result, const int index)¶
Gets the preferred power role currently being advertised by the Local partner. (CC Strapping).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_setPowerRolePreferred(unsigned int *id, struct Result *result, const int index, const unsigned char powerRole)¶
Set the preferred power role to be advertised by the Local partner (CC Strapping).
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
powerRole – Value to be applied.
Disabled = 0 = powerdeliveryPowerRoleDisabled
Source = 1= powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
-
void powerdelivery_getDataRoleCapabilities(unsigned int *id, struct Result *result, const int index)¶
Gets the data roles that may be advertised by the local partner.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getCableVoltageMax(unsigned int *id, struct Result *result, const int index)¶
Gets the maximum voltage capability reported by the e-mark of the attached cable.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getCableCurrentMax(unsigned int *id, struct Result *result, const int index)¶
Gets the maximum current capability report by the e-mark of the attached cable.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with an enumerated representation of current.
Unknown/Unattached (0)
3 Amps (1)
5 Amps (2)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getCableSpeedMax(unsigned int *id, struct Result *result, const int index)¶
Gets the maximum data rate capability reported by the e-mark of the attached cable.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getCableType(unsigned int *id, struct Result *result, const int index)¶
Gets the cable type reported by the e-mark of the attached cable.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: 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)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getCableOrientation(unsigned int *id, struct Result *result, const int index)¶
Gets the current orientation being used for PD communication
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable filled with an enumeration of the orientation.
Unconnected (0)
CC1 (1)
CC2 (2)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_request(unsigned int *id, struct Result *result, const int index, const unsigned char request)¶
Requests an action of the Remote partner. Actions are not guaranteed to occur.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
request – 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)
-
void powerdelivery_requestStatus(unsigned int *id, struct Result *result, const int index)¶
Gets the status of the last request command sent.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with the status
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_getOverride(unsigned int *id, struct Result *result, const int index)¶
Gets the current enabled overrides
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Bit mapped representation of the current override configuration.
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_setOverride(unsigned int *id, struct Result *result, const int index, const unsigned int overrides)¶
Sets the current enabled overrides
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
overrides – Overrides to be set in a bit mapped representation.
-
void powerdelivery_getFlagMode(unsigned int *id, struct Result *result, const int index, const unsigned char flag)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with the current mode.
Disabled (0)
Enabled (1)
Auto (2) default
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
flag – Flag/Advertisement to be modified
-
void powerdelivery_setFlagMode(unsigned int *id, struct Result *result, const int index, const unsigned char flag, const unsigned char mode)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
flag – Flag/Advertisement to be modified
mode – Value to be applied.
Disabled (0)
Enabled (1)
Auto (2) default
-
void powerdelivery_getPeakCurrentConfiguration(unsigned int *id, struct Result *result, const int index)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: An enumerated value referring to the current configuration.
Allowable values are 0 - 4
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_setPeakCurrentConfiguration(unsigned int *id, struct Result *result, const int index, const unsigned char configuration)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
configuration – An enumerated value referring to the configuration to be set
Allowable values are 0 - 4
-
void powerdelivery_getFastRoleSwapCurrent(unsigned int *id, struct Result *result, const int index)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: An enumerated value referring to current swap value.
0A (0)
900mA (1)
1.5A (2)
3A (3)
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code and the requested value if successful.
index – The index of the entity in question.
-
void powerdelivery_setFastRoleSwapCurrent(unsigned int *id, struct Result *result, const int index, const unsigned char swapCurrent)¶
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.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
id – ID assigned through “module_createStem”
result – Output object containing result code.
index – The index of the entity in question.
swapCurrent – An enumerated value referring to value to be set.
0A (0)
900mA (1)
1.5A (2)
3A (3)
-
void powerdelivery_packDataObjectAttributes(struct Result *result, const unsigned char partner, const unsigned char powerRole, const unsigned char ruleIndex)¶
Helper function for packing Data Object attributes. This value is used as a subindex for all Data Object calls with the BrainStem Protocol.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
value: Variable to be filled with packed values.
- Parameters:
result – Output object containing result code and the requested value if successful.
partner – Indicates which side of the PD connection.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
powerRole – Indicates which power role of PD connection.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – Data object index.
-
void powerdelivery_unpackDataObjectAttributes(struct Result *result, const unsigned char attributes, unsigned char *partner, unsigned char *powerRole, unsigned char *ruleIndex)¶
Helper function for unpacking Data Object attributes. This value is used as a subindex for all Data Object calls with the BrainStem Protocol.
The result parameter will output the following fields:
error: Common EntityClass Return Values common entity return value
- Parameters:
result – Output object containing result code.
attributes – Variable to be filled with packed values.
partner – Indicates which side of the PD connection.
Local = 0 = powerdeliveryPartnerLocal
Remote = 1 = powerdeliveryPartnerRemote
powerRole – Indicates which power role of PD connection.
Source = 1 = powerdeliveryPowerRoleSource
Sink = 2 = powerdeliveryPowerRoleSink
ruleIndex – Data object index.