class Header
Defined at line 71 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
Type-safe serialization and de-serialization of USB PD message headers.
For best readability, use the fully-qualified name `usb_pd::Header`.
usbpd3.1 6.2.1.1 "Message Header"
Public Members
static const int kMaxDataObjectCount
Public Methods
typename std::remove_reference_t<decltype(bits_)> is_extended ()
True for extended PD messages. Not handled by this driver.
usbpd3.1 6.2.1.1.1 "Extended"
Defined at line 86 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
usb_pd::Header & set_is_extended (typename std::remove_reference_t<decltype(bits_)> val)
True for extended PD messages. Not handled by this driver.
usbpd3.1 6.2.1.1.1 "Extended"
Defined at line 86 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
typename std::remove_reference_t<decltype(bits_)> data_object_count ()
Message payload size, in 32-bit objects. Zero (0) for Control messages.
usbpd3.1 6.2.1.1.2 "Number of Data Objects"
Defined at line 91 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
usb_pd::Header & set_data_object_count (typename std::remove_reference_t<decltype(bits_)> val)
Message payload size, in 32-bit objects. Zero (0) for Control messages.
usbpd3.1 6.2.1.1.2 "Number of Data Objects"
Defined at line 91 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
MessageId message_id ()
Message nonce generated by a 3-bit rolling counter.
The nonces are unique per-Port. In other words, each side needs to track
separate rolling counters for transmitted and received messages.
usbpd3.1 6.2.1.1.3 "Message ID"
Defined at line 99 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
Header & set_message_id (MessageId message_id)
Defined at line 100 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
PowerRole power_role ()
The message sender's power role. Only valid for SOP messages.
The USB PD spec description of this header field prohibits checking the
field in received messages. In particular, incorrect values don't lead to
Soft Reset or Hard Reset.
usbpd3.1 6.2.1.1.4 "Port Power Role"
Defined at line 111 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
usb_pd::Header & set_power_role (PowerRole val)
The message sender's power role. Only valid for SOP messages.
The USB PD spec description of this header field prohibits checking the
field in received messages. In particular, incorrect values don't lead to
Soft Reset or Hard Reset.
usbpd3.1 6.2.1.1.4 "Port Power Role"
Defined at line 111 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
usb_pd::Header & set_spec_revision (SpecRevision val)
The PD specification revision used by the message sender.
Source_Capabilities messages have the maximum PD spec revision supported by
the Source. Request messages have the maximum PD spec revision supported by
both the Source and Sink.
The USB PD spec mandates ignoring the revision field in GoodCRC messages.
usbpd3.1 6.2.1.1.5 "Specification Revision"
Defined at line 122 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
SpecRevision spec_revision ()
The PD specification revision used by the message sender.
Source_Capabilities messages have the maximum PD spec revision supported by
the Source. Request messages have the maximum PD spec revision supported by
both the Source and Sink.
The USB PD spec mandates ignoring the revision field in GoodCRC messages.
usbpd3.1 6.2.1.1.5 "Specification Revision"
Defined at line 122 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
DataRole data_role ()
The message sender's data role. Only valid for SOP messages.
SOP' and SOP" messages use the underlying bit for the Cable Plug field
instead. (usbpd3.1 6.2.1.1.7)
usbpd3.1 6.2.1.1.6 "Port Data Role"
Defined at line 130 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
usb_pd::Header & set_data_role (DataRole val)
The message sender's data role. Only valid for SOP messages.
SOP' and SOP" messages use the underlying bit for the Cable Plug field
instead. (usbpd3.1 6.2.1.1.7)
usbpd3.1 6.2.1.1.6 "Port Data Role"
Defined at line 130 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
MessageType message_type ()
Determines the message's type, together with `data_object_count`.
usbpd3.1 6.2.1.1.8 "Message Type"
Defined at line 135 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
Header & set_message_type (MessageType message_type)
`data_object_count()` must already be set to a valid value.
Defined at line 145 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
Header CreateFromBytes (uint8_t byte1, uint8_t byte2)
Defined at line 158 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
void Header (MessageType message_type, uint8_t data_object_count, MessageId message_id, PowerRole power_role, SpecRevision spec_revision, DataRole data_role)
Defined at line 163 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
void Header (const Header & )
Value type, copying is allowed.
Defined at line 178 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
Header & operator= (const Header & )
Defined at line 179 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
void ~Header ()
Trivially destructible.
Defined at line 182 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
std::pair<uint8_t, uint8_t> bytes ()
Expected usage: std::tie(byte1, byte2) = header.bytes();
Defined at line 185 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
int8_t payload_bytes ()
The size of the message's payload, in bytes.
Defined at line 190 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h
int8_t message_bytes ()
The size of the message, including the header.
Defined at line 197 of file ../../src/devices/power/drivers/fusb302/usb-pd-message.h