Eth Bus Listener Module

class mtf.network_port.eth_bus_listener.EthBusListener

combines two base classes: BusListener and ControllerBase. This structure indicates that EthBusListener is designed to handle both Ethernet bus listening aspects (BusListener) and controller management functionalities (ControllerBase)

__init__(bus_name: str, protocol: ~mtf.proto_common.EthProtocolType | ~mtf.libs.mtf_pybinder.mtf_eth_filter = <mtf_eth_protocol_type.EthernetII: 1>)
register_callback(callback_fnc: Callable[[IEthernetProtocol], None])
Parameters:

callback_fnc – callback function with parameter of type MessageEthernet

Setting a callback
# ...
from andisdk import MessageEthernet
# ...

def eth_listener_callback(msg: MessageEthernet):
    # do things

# ... creating listener
# register our callback
listener.register_callback(eth_listener_callback)

Warning

The callback function should be lightweight without logs. Otherwise, it will reduce the performance dramatically. The object that is passed to callback functions is mutable. So the user must be careful. In case of silent mode, the callback functions will be invoked only when getting the queue.

unregister_callback(callback_fnc: Callable[[IEthernetProtocol], None])
Parameters:

callback_fnc – callback function with parameter of type MessageEthernet

Remove a callback
# ...
from andisdk import MessageEthernet
# ...

def eth_listener_callback(msg: MessageEthernet):
    # do things

# ... creating listener
# ... do work
# unregister our callback
listener.unregister_callback(eth_listener_callback)
get_timestamp_queue() list[int]

Retrieve the private attribute _timestamp_queue Return:

list[int]

get_message_queue() list[dict[str, Any]]

Get messages queue :return: :rtype:

get_queue() list[dict[str, Any]]

Reset the internal state of an instance of the EthBusListener class

reset() None

Reset the state of the bus listener by clearing its history and emptying the event queue

start_listening(keep_cache=False, silent_mode: bool = False) bool

Starts listening on a bus and can be configured to operate in silent mode or to reset cached data before beginning to listen

Args:

keep_cache (bool) silent_mode (bool): Specify whether the listening should be done in silent mode or not

Return:

bool

stop_listening() bool

Stop listening for events on a communication bus Return:

bool

start(channel=None, keep_cache=False, silent_mode: bool = False)

Start a listener on a specific channel Args:

channel (str) keep_cache (bool) silent_mode (bool): Specify whether the listening should be done in silent mode or not

Return:

bool

stop()

Stop a listener on a specific channel

Return:

bool

adapt_queue_elements() Queue[BaseEvent]

ensure the object.timestamp, object.payload

clean_up()

Clean up all controller instances. This method should be overridden to precise the specific cleanup logic. If an instance does not override it, a default message will appear to inform that there are no cleanup logic is implemented.

Return:

bool: True when the cleanup was successful, otherwise False if cleanup failed. By default, it returns True, yet this method should be overridden to present the actual cleanup status.

static __new__(cls, *args, **kwargs)

Initializes a new instance of the ControllerBase.

The instance will be automatically added to the list of controllers to be cleaned up later. It guarantees that all the controller instances are followed up and cleaned up when the associate method ‘controllers_cleanup(cls)’ is called.

Note:

Do not override this method in subclasses to maintain this functionality.

Args:

*args: Suitable arguments passed to the constructor of the ControllerBase class. **kwargs: keywords passed to the constructor of the ControllerBase class.

Returns:

instance(ControllerBase): The new instance of the class that has been created.

callback_(data_frame: BusEvent)

used as a callback function when an event or frame is received on the communication bus Args:

data_frame (BusEvent): The data frame

classmethod controllers_cleanup()

Cleans up all controller instances.

It Calls the clean_up() method for each instance, since it iterates through the list of controllers to realize any needed cleanup which can fail so an error will be raised. Then, the remaining instances will continue processing.

Returns:

bool: True indicating that all the controllers are successfully cleaned up, otherwise False when an error occurred during the operation of the cleanup.