tm_mercury v0.6.0 TM.Mercury.Message.Framing

Link to this section Summary

Functions

Add framing to the passed in data

This is called when the user invokes Circuits.UART.flush/2. Any partially received frames should be dropped

If remove_framing/2 returned :in_frame and a user-specified timeout for reassembling frames has elapsed, then this function is called. Depending on the semantics of the framing, a partial frame may be returned or the incomplete frame may be dropped

Initialize the state of the framer based on options passed to Circuits.UART.open/3

Remove the framing off received data. If a partial frame is left over at the end, then :in_frame should be returned. All of the frames received should be returned in the second tuple

Link to this section Functions

Link to this function

add_framing(data, state)

Add framing to the passed in data.

The returned frame_data will be sent out the UART.

Callback implementation for Circuits.UART.Framing.add_framing/2.

Link to this function

buffer_empty?(map)

Link to this function

crc(arg1, crc \\ 65535)

Link to this function

flush(direction, state)

This is called when the user invokes Circuits.UART.flush/2. Any partially received frames should be dropped.

Callback implementation for Circuits.UART.Framing.flush/2.

Link to this function

frame_timeout(state)

If remove_framing/2 returned :in_frame and a user-specified timeout for reassembling frames has elapsed, then this function is called. Depending on the semantics of the framing, a partial frame may be returned or the incomplete frame may be dropped.

Callback implementation for Circuits.UART.Framing.frame_timeout/1.

Initialize the state of the framer based on options passed to Circuits.UART.open/3.

This function should return the initial state for the framer or an error.

Callback implementation for Circuits.UART.Framing.init/1.

Link to this function

remove_framing(data, state)

Remove the framing off received data. If a partial frame is left over at the end, then :in_frame should be returned. All of the frames received should be returned in the second tuple.

The terms returned as the second part of the tuple can be anything. They can be the binary messages without the framing, structs based on your commands, or anything else. If you have errors in the protocol, for example a bad checksum, one convention is to return an error tuple {:error, :echksum, message}. For debugging you may want to include the message and framing with the error for simpler debugging.

Callback implementation for Circuits.UART.Framing.remove_framing/2.