
    g	                         d dl 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 )    N)Optional   )commonmsgreturnc                     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          j        |d
d                   dk    rdS t          j        |dd                   dk    rdS dS )zCheck if a message is likely to be BDS code 4,0

    Args:
        msg (str): 28 hexdigits string

    Returns:
        bool: True or False
    F                        '   0   1   3   6   7   8   /   r   5   T)r   allzeroshex2bindatawrongstatusbin2int)r   ds     K/home/andy/.local/lib/python3.11/site-packages/pyModeS/decoder/bds/bds40.pyis40r!      s    s uv{3''((A !Q2&& u!RR(( u!RR(( u!RR(( u!RR(( u ~a2h1$$u~a2h1$$u4    c                     t          j        t          j        |                     }|d         dk    rdS t          j        |dd                   dz  }|S )z}Selected altitude, MCP/FCU

    Args:
        msg (str): 28 hexdigits string

    Returns:
        int: altitude in feet
    r   0Nr	   r      r   r   r   r   r   r   alts      r    selalt40mcpr)   7   sP     	v{3''((Ats{{t
.1R4
!
!B
&CJr"   c                     t          j        t          j        |                     }|d         dk    rdS t          j        |dd                   dz  }|S )zySelected altitude, FMS

    Args:
        msg (str): 28 hexdigits string

    Returns:
        int: altitude in feet
    r   r$   Nr   r   r%   r&   r'   s      r    selalt40fmsr+   I   sP     	v{3''((Au||t
.2b5
"
"R
'CJr"   c                     t          j        t          j        |                     }|d         dk    rdS t          j        |dd                   dz  dz   }|S )zBarometric pressure setting

    Args:
        msg (str): 28 hexdigits string

    Returns:
        float: pressure in millibar
    r   r$   Nr   r   g?i   r&   )r   r   ps      r    p40baror.   [   sU     	v{3''((Au||tqBx  3&,AHr"   c                 T    t          j        dt                     t          |           S )NzWalt40mcp() has been renamed to selalt40mcp().
        It will be removed in the future.)warningswarnDeprecationWarningr)   r   s    r    alt40mcpr4   m   .    M	-  
 sr"   c                 T    t          j        dt                     t          |           S )NzWalt40fms() has been renamed to selalt40fms().
        It will be removed in the future.)r0   r1   r2   r+   r3   s    r    alt40fmsr7   v   r5   r"   )r0   typingr    r   strboolr!   intr)   r+   floatr.   r4   r7    r"   r    <module>r?      s               (c (d ( ( ( (VS Xc]    $S Xc]    $ %    $# (3-    # (3-      r"   