
    g                         d dl mZ ddlmZ ddlmZ dedefdZdedee	         fdZ
dedee	         fd	Zdedee	         fd
Zdedee         fdZdedee         fdZdS )    )Optional   )common)aeromsgreturnc                 f   t          j        |           rdS t          j        t          j        |                     }t          j        |ddd          rdS t          j        |ddd          rdS t          j        |dd	d
          rdS t          j        |ddd          rdS t          j        |ddd          rdS t          |           }||dk    rdS t          |           }||dk    rdS t          |           }|t          |          dk    rdS t          |           }|t          |          dk    rdS |w|ut          j
        |           dk    r]t          j        |           }|Gt          j        ||t          j        z            t          j        z  }t          ||z
            dk    rdS dS )zCheck if a message is likely to be BDS code 6,0

    Args:
        msg (str): 28 hexdigits string

    Returns:
        bool: True or False
    F                        "   #   $   -   .   /   8   Ni  ip     T)r   allzeroshex2bindatawrongstatusias60mach60vr60baroabsvr60insdfaltcoder   mach2casftkts)r   diasmachvr_barovr_insaltias_s           K/home/andy/.local/lib/python3.11/site-packages/pyModeS/decoder/bds/bds60.pyis60r0      s    s uv{3''((A !Q2&& u!RR(( u!RR(( u!RR(( u!RR(( u
**C
399u#;;DD1HHusmmGs7||d22uS\\Fc&kkD00u 	sVYs^^r5I5InS!!?=sTW}55@D3:##u4    c                    t          j        t          j        |                     }|d         dk    rdS t          |d                   }t          j        |dd                   }|r|dz
  }|dz  d	z  }|dk     rd
|z   }|S )zMegnetic heading of aircraft

    Args:
        msg (str): 28 hexdigits string

    Returns:
        float: heading in degrees to megnetic north (from 0 to 360)
    r   0Nr
   r   r   i   Z      ih  r   r   r   intbin2int)r   r(   signvaluehdgs        r/   hdg60r<   G   s     	v{3''((Ats{{tqt99DN1QrT7##E 
"*s
C QwwCiJr1   c                     t          j        t          j        |                     }|d         dk    rdS t          j        |dd                   }|S )zIndicated airspeed

    Args:
        msg (str): 28 hexdigits string

    Returns:
        int: indicated airspeed in knots
    r   r3   Nr   r   r   r   r   r8   )r   r(   r)   s      r/   r   r   d   sK     	v{3''((Au||t
.2b5
"
"CJr1   c                     t          j        t          j        |                     }|d         dk    rdS t          j        |dd                   dz  dz  }|S )ztAircraft MACH number

    Args:
        msg (str): 28 hexdigits string

    Returns:
        float: MACH number
    r   r3   Nr   r   gMb @g      @r>   )r   r(   r*   s      r/   r   r   v   sU     	v{3''((Au||t>!BrE(##e+e3DKr1   c                     t          j        t          j        |                     }|d         dk    rdS t          |d                   }t          j        |dd                   }|r|dz
  }|dz  }|S )	zVertical rate from barometric measurement, this value may be very noisy.

    Args:
        msg (str): 28 hexdigits string

    Returns:
        int: vertical rate in feet/minutes
    r   r3   Nr   r   r   r5       r6   r   r(   r9   r:   rocs        r/   r    r       t     	v{3''((Au||tqu::DN1RU8$$E 
"*CJr1   c                     t          j        t          j        |                     }|d         dk    rdS t          |d                   }t          j        |dd                   }|r|dz
  }|dz  }|S )	zVertical rate measurd by onbard equiments (IRS, AHRS)

    Args:
        msg (str): 28 hexdigits string

    Returns:
        int: vertical rate in feet/minutes
    r   r3   Nr   r   r   r5   rA   r6   rB   s        r/   r"   r"      rD   r1   N)typingr    r   extrar   strboolr0   floatr<   r   r   r7   r    r"    r1   r/   <module>rM      s(                    8c 8d 8 8 8 8vs x    :s x    $     $# (3-    0 #      r1   