""" Parallel Data decoder for Chapter 10 data types Supports Parallel Data Format 0 (0x60) """ import struct from typing import Dict, Any, Optional from .base import DataTypeDecoder, DecodedPayload class ParallelDecoder(DataTypeDecoder): """Decoder for Parallel Data type (0x60)""" def __init__(self): super().__init__() self.data_type_base = 0x60 self.data_type_name = "Parallel Data" self.supported_formats = [0x60] def can_decode(self, data_type: int) -> bool: return data_type == 0x60 def get_data_type_name(self, data_type: int) -> str: return "Parallel Data Format 0" def decode(self, payload: bytes, ch10_header: Dict[str, Any]) -> Optional[DecodedPayload]: """Decode Parallel Data payload""" decoded_data = {} errors = [] # Parse IPH iph = self._parse_intra_packet_header(payload) if iph: decoded_data.update(iph) data_start = iph['data_start'] else: data_start = 0 errors.append("Failed to parse intra-packet header") # Parse parallel data header if data_start + 8 <= len(payload): par_header = self._safe_unpack('= 4: # Sample first few words words = [] for i in range(0, min(len(par_data), 32), 4): if i + 4 <= len(par_data): word = struct.unpack('