Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################################
- ###### Include ##############
- ########################################
- #include <stdio.h>
- #include <stdlib.h>
- #include "TSVME_IO.h"
- ########################################
- ###### Defines ##############
- ########################################
- #define ESTTL_INIT 0x31
- #define ACQUIT_IT 0x33
- #define ACCES_R1_LIRQ1 0x01
- #define ACCES_R1_LIRQ5 0x05
- #define LIRQ1_FR_DESC 0x06
- #define NUM_VECTEUR_IT 0x40
- #define NUM_VECTEUR_IT_CLAVIER 0x44
- #define LIRQ5_FR_DESC 0x02
- #define DEMASQ_LIRQ1 0x02
- #define DEMASQ_LIRQ5 0x20
- #define DEMASQ_CLAVIER 0x02
- #define MAX_ESSAIS 3
- ########################################
- ###### Variables globales ##############
- ########################################
- /* extern { */
- unsigned char affichage_demande;
- unsigned char info_analyse_code;
- char affichage_mvt_bar;
- char controle_barriere;
- /*}*/
- char code[4]="1234";
- static unsigned char caractere;
- char flag_char = 0;
- char code_operateur[5] = "plopi"; /* 5 caracteres , sensible à la casse */
- ########################################
- ##### Déclarations fonctions ###########
- ########################################
- void initialisation(void);
- char verification_code_operateur();
- void mode_operateur(void);
- void attente_chgt_mdp(int secondes);
- char chgt_code_operateur(void);
- ########################################
- ### verification_code_operateur() ###
- ########################################
- /**
- *** Demande le code operateur et
- *** le verifie.
- *** Renvoi -1 si trop de code faux
- *** 1 sinon
- **/
- char verification_code_operateur(){
- char code_rentre[6];
- char longueur=0, code_bon=1,i;
- puts("\r\n Rentrez le mot de passe operateur -5 carac. \r\n");
- caractere=0;
- longueur=0;
- flag_char=0; /*pour eviter de prendre un ancien caractere */
- while( (caractere != 13) || (longueur>6) )
- {
- while(!flag_char);
- code_rentre[longueur]=caractere;
- printf("*");
- flag_char=0;
- longueur++;
- }
- /* Verification du code */
- for(i=0;i<5;i++){
- if (code_rentre[i]!=code_operateur[i]) code_bon=-1;
- }
- return code_bon;
- }
- ########################################
- ##### mode_operateur() #########
- ########################################
- /**
- ***
- ***
- ***
- ***
- **/
- void mode_operateur(){
- int valide=0;
- char choix_menu=0,j;
- valide=verification_code_operateur();
- if ( valide < 0 ) {
- puts("\r Trop de code operateur faux, sortie de menu operateur");
- return;
- }
- else {
- puts("\r Code valide ... acces a la console administrateur ");
- puts("\r Choisir votre action ...");
- puts("\r [1]... Changer le code de la barriere ");
- puts("\r [2]... Commander la barriere en mode manuel");
- while ( (choix_menu !='1') && (choix_menu !='2') )
- {
- flag_char=0;
- puts("\r Rentrez le numero du menu choisi");
- while(!flag_char);
- choix_menu=caractere;
- }
- if (choix_menu=='1'){
- printf("\r\n Ancien code barriere : %s",code);
- puts("\r\n Rentrez le nouveau code barriere - 4 chiffres \r");
- j=0;
- flag_char=0;
- while( (caractere != 13) )
- {
- while(!flag_char);
- printf("*");
- code[j]=caractere;
- flag_char=0;
- j++;
- }
- printf("\r Nouveau code barriere : %s",code);
- /* Attente chgt mdp à implanter */
- }
- else if (choix_menu=='2')
- {
- puts("\r Choisir votre action ...");
- puts("\r [0]... Revenir au mode normal ");
- puts("\r [1]... Lever la barriere ");
- puts("\r [2]... Baisser la barriere");
- flag_char=0;
- choix_menu=0;
- while ( (choix_menu !='1') && (choix_menu !='2') )
- {
- flag_char=0;
- puts("\r Rentrez le numero du menu choisi");
- while(!flag_char);
- choix_menu=caractere;
- }
- controle_barriere=choix_menu-48; /* 1 pour ouvrir et 2 pour fermer et 0 pour normal*/
- printf("\r\ Ordre barriere retenu : %d",controle_barriere);
- }
- }
- }
- ########################################
- ## attente_chgt_mdp(int secondes) #####
- ########################################
- /**
- ***
- ***
- ***
- ***
- **/
- ########################################
- ##### Fonction RECEPTION_CHAR() ######
- ########################################
- void interrupt RECEPTION_CHAR()
- {
- flag_char=0;
- caractere = DUART1->RHRA_THRA;
- /*ESTTL->OutPort2 = caractere;*/
- ESTTL->CR_SR = ACQUIT_IT;
- flag_char=1;
- }
- ########################################
- ##### Fonction main() ###########
- ########################################
- void main()
- {
- asm(" move.l #_RECEPTION_CHAR,$110");
- puts("\r\n Hello !!\r");
- initialisation();
- while (1)
- {
- /* Si une demande d'ouverte par un visiteur est faîte */
- if (affichage_demande)
- {
- puts("\r Demande d'ouverture de la barriere par un visiteur");
- affichage_demande=0; /* Pour éviter les rebonds */
- }
- /* Si un code a été tapé */
- if (info_analyse_code)
- {
- switch (info_analyse_code) {
- case 1:
- puts("\r\n Un code JUSTE a ete tape");
- break;
- case 2:
- puts("\r\n Un code FAUX a ete tape");
- break;
- default:
- break;
- }
- info_analyse_code=0; /* Pour éviter les rebonds */
- }
- /* Si une demande d'ouverte par un visiteur est faîte */
- if (affichage_mvt_bar)
- {
- switch (affichage_mvt_bar) {
- case 1:
- puts("\r\n Un code JUSTE a ete tape");
- break;
- case 2:
- puts("\r\n Un code FAUX a ete tape");
- break;
- default:
- break;
- }
- affichage_mvt_bar=0; /* Pour éviter les rebonds */
- }
- if (flag_char){
- if (caractere == 3) mode_operateur();
- else printf("\r\n Caractere tape : %c",caractere);
- flag_char=0;
- }
- }
- }
- ########################################
- ##### Fonction initialisation() #####
- ########################################
- void initialisation(void){
- /* Configuration des registres */
- /*******************************/
- ESTTL->CR_SR = ESTTL_INIT;
- /* Configuration des interruptions */
- IVHC->R0 = ACCES_R1_LIRQ5;
- IVHC->R1 = LIRQ5_FR_DESC;
- /*IVHC->R2 = NUM_VECTEUR_IT;*/
- IVHC->R3 |= DEMASQ_LIRQ5;
- DUART1->ISR_IMR = DEMASQ_CLAVIER;
- DUART1->IVR = NUM_VECTEUR_IT_CLAVIER;
- asm(" move.w #$2000,sr");
- /* D4 et D5 à 1
- ESTTL->CR_SR = RC_D4D5; */
- }
Add Comment
Please, Sign In to add comment