
    zh                    z    d Z ddlmZ ddlZddlmZmZ ddlmZ  G d dej	                  Z
 G d d	          ZdS )
z5Supervisor module implementing a basic state machine.    )annotationsN)CallableDict)LOGGERc                  *    e Zd ZdZdZdZdZdZdZdZ	dS )	ModezOperational modes for SkullPi.idleaccueilmusiqueiacalibrationsleepN)
__name__
__module____qualname____doc__IDLEACCUEILMUSIQUEIACALIBRATIONSLEEP     /opt/SkullPi/supervisor.pyr   r      s2        ((DGG	BKEEEr   r   c                  Z    e Zd ZdZddZddZddZdd	Zdd
ZddZ	ddZ
ddZddZdS )
Supervisorz"Simple event driven state machine.returnNonec                   t           j        | _        t           j        | j        t           j        | j        t           j        | j        t           j        | j	        t           j
        | j        t           j        | j        i| _        d S )N)r   r   mode_handle_idler   _handle_accueilr   _handle_musiquer   
_handle_iar   _handle_calibrationr   _handle_sleephandlersselfs    r   __init__zSupervisor.__init__   sT    I	It(L$.L$.GT_d6J*9
r   r!   r   c                J    t          j        d| j        |           || _        d S )NzSwitching mode %s -> %s)r   infor!   )r*   r!   s     r   set_modezSupervisor.set_mode$   s$    -ty$???			r   c                `    | j                             | j                  }|r |             dS dS )z'Run one iteration of the state machine.N)r(   getr!   )r*   handlers     r   stepzSupervisor.step(   s:    -##DI.. 	GIIIII	 	r   c                .    t          j        d           d S )NzIdle mode runningr   debugr)   s    r   r"   zSupervisor._handle_idle.   s    ()))))r   c                l    t          j        d           |                     t          j                   d S )NzAccueil mode runningr   r5   r.   r   r   r)   s    r   r#   zSupervisor._handle_accueil1   -    +,,,di     r   c                l    t          j        d           |                     t          j                   d S )NzMusique mode runningr7   r)   s    r   r$   zSupervisor._handle_musique5   r8   r   c                l    t          j        d           |                     t          j                   d S )NzIA mode runningr7   r)   s    r   r%   zSupervisor._handle_ia9   s-    &'''di     r   c                l    t          j        d           |                     t          j                   d S )NzCalibration mode runningr7   r)   s    r   r&   zSupervisor._handle_calibration=   s-    /000di     r   c                .    t          j        d           d S )NzSleep mode runningr4   r)   s    r   r'   zSupervisor._handle_sleepA   s    )*****r   N)r   r   )r!   r   r   r   )r   r   r   r   r+   r.   r2   r"   r#   r$   r%   r&   r'   r   r   r   r   r      s        ,,	
 	
 	
 	
      * * * *! ! ! !! ! ! !! ! ! !! ! ! !+ + + + + +r   r   )r   
__future__r   enumtypingr   r   loggerr   Enumr   r   r   r   r   <module>rB      s    ; ; " " " " " "  ! ! ! ! ! ! ! !          49   ,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+r   