""" Channel Analysis Tools. Functions for analyzing channel utilization and collisions. """ from typing import Dict, Any def analyze_channel_utilization(collisions: int, busy_time: float, total_time: float) -> Dict[str, Any]: """ Analyze channel utilization. Args: collisions: Number of collisions busy_time: Total channel busy time total_time: Total simulation time Returns: Dictionary with channel analysis """ utilization = busy_time / total_time if total_time > 0 else 0 # Determine network state if utilization < 0.3: network_state = "LIGHT_LOAD" elif utilization < 0.7: network_state = "MODERATE" else: network_state = "SATURATED" return { 'busy_time': busy_time, 'total_time': total_time, 'utilization': utilization, 'utilization_percent': round(utilization * 100, 2), 'collisions': collisions, 'collision_rate': collisions / total_time if total_time > 0 else 0, 'network_state': network_state, } def get_network_state(utilization: float) -> str: """ Get network state based on utilization. Args: utilization: Channel utilization ratio (0-1) Network state string """ Returns: if utilization < 0.3: return "LIGHT_LOAD" elif utilization < 0.7: return "MODERATE" else: return "SATURATED"