Read operations

Read operations differ from write operations in the way they are started. The engine never explicitly requests to read a complete message. The protocol driver runtime assumes that a read operation should start when data becomes available on the line, the driver is idle, and a phrase is detected.

To the PDL program, the implicit initiation of a read operation looks the same as the explicit initiation of the other operations: the driver moves to the READING state and calls the hci_pd.read procedure. The protocol driver runtime also initiates a read operation as long as data is available in the input buffer.

To prevent an infinite loop of read operations, which fails to process an input, runtime enforces a requirement that an operation consume any input it receives. For example, using hci_pd_accept or hci_pd_ignore_input.

Note: If an operation fails to consume the received input, then the driver shuts down in panic mode.