#include "Elmu.h"

/* ========================================== **
**                                            **
** ElmuUsr.c                                  **
**                                            **
** Auteur : Stéphane Caron                    **
** Date :   Fevrier 2006                      **
** Projet : PPE - ELMU                        **
**                                            **
**   Implementation de  l'interface  utilisa- **
** teur ainsi que des methodes de gestion des **
** signaux.                                   **
**                                            **
** ========================================== */

// ElmuShiftScreen
// 
// Passer a un autre ecran d'interface.
// 
void ElmuShiftScreen(char next_screen)
{
    // Régler l'état des bits du PORTA pour l'interface
    // puissance (ouverture ou fermeture de l'électro-
    // vanne) lors des transitions vers ou depuis l'écran
    // de décompte du volume.

    if (next_screen == SCREEN_TIMER)
        PORTA = 0xFF;
    else if (_screen == SCREEN_TIMER)
        PORTA = 0x00;

    // Mettre à jour les données globales de gestion des
    // signaux et de l'état.
    
    _screen = next_screen;
    _sig_update = 1;
}

// ElmuDrawLCD
//
// Raffraichir l'afficheur LCD en fonction
// de l'état actuel de fonctionnement.
//
void ElmuDrawLCD()
{
    // On vérifie la présence d'un signal de mise-à-jour
    // de l'affichage issu des autres modules du programme.

    if (!_sig_update)
        return;
    _sig_update = 0;

    // Ensuite, on efface l'écran en vue de l'actualisation.

    ElmuLCDClear();

    // On commence par compléter la première ligne en fonction
    // du mode actuel de fonctionnement et des données internes.

    ElmuLCDCursor(0, 0);

    if (_screen == SCREEN_EMPTY || _screen == SCREEN_CLEAN_1 || _screen == SCREEN_CLEAN_3)
        ElmuLCDPrintString("VIDANGE EN COURS");
    else if (_screen == SCREEN_CLEAN_2)
        ElmuLCDPrintString("RINCER RECIPIENT");
    else if (_screen == SCREEN_VOLUME || _screen == SCREEN_TIMER) {
        ElmuLCDPrintString("Volume : ");
        ElmuLCDPrintNum(volume);
        ElmuLCDPrintASCII(' ');
        ElmuLCDPrintASCII(UNITS[unit]);
        ElmuLCDPrintASCII('L');
    } else // (_screen == SCREEN_MAIN)
        ElmuLCDPrintString(" ELMU  PPE 2006 ");

    // Après quoi on s'intéresse à la seconde ligne de la
    // même manière.

    ElmuLCDCursor(0, 1);

    if (_screen == SCREEN_EMPTY || _screen == SCREEN_CLEAN_1 || _screen == SCREEN_CLEAN_3)
        ElmuLCDPrintString("[A] : PASSER.");
    else if (_screen == SCREEN_CLEAN_2)
        ElmuLCDPrintString("[A] : CONTINUER.");
    else if (_screen == SCREEN_TIMER) {
        ElmuLCDPrintString("Temps : ");
        ElmuLCDPrintNum(volume);
        ElmuLCDPrintString(" s");
    } else // (_screen == SCREEN_MAIN || _screen == SCREEN_VOLUME)
        ElmuLCDPrintString("[A] : VERSER.");
}
