Band 5 Down-Converter Protocol

B5DC protocol interface.

class B5dcErrorCode(value)[source]

Band 5 down-converter specific protocol errors.

FAILED = 1
NETWORK = 4278190080
SUCCESS = 0
class B5dcProtocol(on_con_lost, logger, remote_addr, error_count_threshold=3)[source]

B5dcProtocol class.

__init__(on_con_lost, logger, remote_addr, error_count_threshold=3)[source]

Initialise B5dcProtocol class.

Parameters:
  • on_con_lost (Future[Any]) – Future to indicate when connection lost

  • logger (Logger) – logging handle

  • remote_addr (Tuple[str, int]) – IP and port of B5DC device

connection_lost(exc)[source]

Log connection lost.

Return type:

None

connection_made(transport)[source]

Set transport when connection is established.

Return type:

None

datagram_received(data, addr)[source]

Receive data from transport layer.

Return type:

None

error_received(exc)[source]

Log error received.

Return type:

None

set_connection_lost_flags()[source]

Set connection lost flag to false and complete on_con_lost future.

Return type:

None

async sync_read_register(address)[source]

Read address data synchronously from B5DC.

Parameters:

address (int) – address to read

Raises:

B5dcProtocolTimeout – when read times out

Return type:

Optional[int]

Returns:

data read from address

async sync_write_register(address, data)[source]

Write synchronously to B5DC and return whether successful.

Parameters:
  • address (int) – address field to write data to

  • data (int) – data to be written

Raises:

B5dcProtocolTimeout – when response is not received in timeout period

Return type:

None

exception B5dcProtocolException[source]

Exception class for B5dc protocol.

exception B5dcProtocolTimeout[source]

Exception class for response timeout.

class B5dcRequest(read, address, length=1, data=None)[source]

Dataclass that contains data related to a request.

__init__(read, address, length=1, data=None)
address: int
data: Optional[int] = None
length: int = 1
read: int
class B5dcResponse(error_code, length=0, data=None)[source]

Dataclass that contains data related to a response.

__init__(error_code, length=0, data=None)
data: Optional[int] = None
error_code: B5dcErrorCode
length: int = 0
class BaseB5dcProtocol(logger)[source]

Class that defines the B5DC protocol.

__init__(logger)[source]

Initialise band 5 down-converter protocol class.

Parameters:

logger (Logger) – logging handle

construct_request(address, data=None)[source]

Construct the payload for a request.

Parameters:
  • address (int) – memory address

  • data (Optional[int]) – data when write request is made, defaults to None

Return type:

bytes

Returns:

payload

static format_bytes_to_hexadecimal_string(data)[source]

Convert bytes representation to string hexadecimal representation.

Parameters:

data (bytes) – data in bytes

Return type:

str

Returns:

string formatted hexadecimal

async get_response(sequence_number)[source]

Fetch received message from buffer.

Parameters:

sequence_number (int) – message sequence number

Return type:

B5dcResponse

Returns:

response associated with sequence number

handle_received_messages(message)[source]

Decode raw data and store in dictionary.

Parameters:

message (bytes) – raw message

Return type:

None

pack_request(sequence_number, b5dc_request)[source]

Packs the data required to make a request to the B5DC.

Parameters:
  • sequence_number (int) – sequence number

  • b5dc_request (B5dcRequest) – request information

Return type:

bytes

Returns:

The packed data

pack_response(sequence_number, b5dc_response)[source]

Pack the expected response into bytes.

Parameters:
  • sequence_number (int) – sequence number

  • b5dc_response (B5dcResponse) – response data

Return type:

bytes

Returns:

Packed response in bytes

unpack_request(request)[source]

Unpack the bytes request.

Parameters:
  • sequence_number – expected sequence number

  • response – packed response data received from transport

Raises:
Return type:

Tuple[int, B5dcRequest]

Returns:

seqeunce number and request data

unpack_response(response)[source]

Unpack the response from the B5DC.

Parameters:

response (bytes) – packed response data received from transport

Raises:
Return type:

Tuple[int, B5dcResponse]

Returns:

sequence number, Decoded response