Guest User

Untitled

a guest
Jul 20th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. ########################################
  2. ###### Include ##############
  3. ########################################
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "TSVME_IO.h"
  7. ########################################
  8. ###### Defines ##############
  9. ########################################
  10. #define ESTTL_INIT 0x31
  11. #define ACQUIT_IT 0x33
  12. #define ACCES_R1_LIRQ1 0x01
  13. #define ACCES_R1_LIRQ5 0x05
  14. #define LIRQ1_FR_DESC 0x06
  15. #define NUM_VECTEUR_IT 0x40
  16. #define NUM_VECTEUR_IT_CLAVIER 0x44
  17. #define LIRQ5_FR_DESC 0x02
  18. #define DEMASQ_LIRQ1 0x02
  19. #define DEMASQ_LIRQ5 0x20
  20. #define DEMASQ_CLAVIER 0x02
  21. #define MAX_ESSAIS 3
  22. ########################################
  23. ###### Variables globales ##############
  24. ########################################
  25. /* extern { */
  26. unsigned char affichage_demande;
  27. unsigned char info_analyse_code;
  28. char affichage_mvt_bar;
  29. char controle_barriere;
  30. /*}*/
  31. char code[4]="1234";
  32. static unsigned char caractere;
  33. char flag_char = 0;
  34. char code_operateur[5] = "plopi"; /* 5 caracteres , sensible à la casse */
  35. ########################################
  36. ##### Déclarations fonctions ###########
  37. ########################################
  38. void initialisation(void);
  39. char verification_code_operateur();
  40. void mode_operateur(void);
  41. void attente_chgt_mdp(int secondes);
  42. char chgt_code_operateur(void);
  43. ########################################
  44. ### verification_code_operateur() ###
  45. ########################################
  46. /**
  47. *** Demande le code operateur et
  48. *** le verifie.
  49. *** Renvoi -1 si trop de code faux
  50. *** 1 sinon
  51. **/
  52. char verification_code_operateur(){
  53. char code_rentre[6];
  54. char longueur=0, code_bon=1,i;
  55.  
  56. puts("\r\n Rentrez le mot de passe operateur -5 carac. \r\n");
  57.  
  58. caractere=0;
  59. longueur=0;
  60. flag_char=0; /*pour eviter de prendre un ancien caractere */
  61.  
  62. while( (caractere != 13) || (longueur>6) )
  63. {
  64. while(!flag_char);
  65. code_rentre[longueur]=caractere;
  66. printf("*");
  67. flag_char=0;
  68. longueur++;
  69. }
  70. /* Verification du code */
  71. for(i=0;i<5;i++){
  72. if (code_rentre[i]!=code_operateur[i]) code_bon=-1;
  73. }
  74.  
  75. return code_bon;
  76. }
  77. ########################################
  78. ##### mode_operateur() #########
  79. ########################################
  80. /**
  81. ***
  82. ***
  83. ***
  84. ***
  85. **/
  86. void mode_operateur(){
  87. int valide=0;
  88. char choix_menu=0,j;
  89.  
  90. valide=verification_code_operateur();
  91. if ( valide < 0 ) {
  92. puts("\r Trop de code operateur faux, sortie de menu operateur");
  93. return;
  94. }
  95. else {
  96. puts("\r Code valide ... acces a la console administrateur ");
  97. puts("\r Choisir votre action ...");
  98. puts("\r [1]... Changer le code de la barriere ");
  99. puts("\r [2]... Commander la barriere en mode manuel");
  100.  
  101. while ( (choix_menu !='1') && (choix_menu !='2') )
  102. {
  103. flag_char=0;
  104. puts("\r Rentrez le numero du menu choisi");
  105. while(!flag_char);
  106. choix_menu=caractere;
  107. }
  108.  
  109. if (choix_menu=='1'){
  110. printf("\r\n Ancien code barriere : %s",code);
  111. puts("\r\n Rentrez le nouveau code barriere - 4 chiffres \r");
  112. j=0;
  113. flag_char=0;
  114. while( (caractere != 13) )
  115. {
  116. while(!flag_char);
  117. printf("*");
  118. code[j]=caractere;
  119. flag_char=0;
  120. j++;
  121. }
  122. printf("\r Nouveau code barriere : %s",code);
  123. /* Attente chgt mdp à implanter */
  124. }
  125.  
  126. else if (choix_menu=='2')
  127. {
  128. puts("\r Choisir votre action ...");
  129. puts("\r [0]... Revenir au mode normal ");
  130. puts("\r [1]... Lever la barriere ");
  131. puts("\r [2]... Baisser la barriere");
  132.  
  133. flag_char=0;
  134. choix_menu=0;
  135. while ( (choix_menu !='1') && (choix_menu !='2') )
  136. {
  137. flag_char=0;
  138. puts("\r Rentrez le numero du menu choisi");
  139. while(!flag_char);
  140. choix_menu=caractere;
  141. }
  142. controle_barriere=choix_menu-48; /* 1 pour ouvrir et 2 pour fermer et 0 pour normal*/
  143. printf("\r\ Ordre barriere retenu : %d",controle_barriere);
  144.  
  145. }
  146.  
  147. }
  148. }
  149. ########################################
  150. ## attente_chgt_mdp(int secondes) #####
  151. ########################################
  152. /**
  153. ***
  154. ***
  155. ***
  156. ***
  157. **/
  158. ########################################
  159. ##### Fonction RECEPTION_CHAR() ######
  160. ########################################
  161. void interrupt RECEPTION_CHAR()
  162. {
  163. flag_char=0;
  164.  
  165. caractere = DUART1->RHRA_THRA;
  166. /*ESTTL->OutPort2 = caractere;*/
  167. ESTTL->CR_SR = ACQUIT_IT;
  168.  
  169. flag_char=1;
  170. }
  171. ########################################
  172. ##### Fonction main() ###########
  173. ########################################
  174. void main()
  175. {
  176. asm(" move.l #_RECEPTION_CHAR,$110");
  177.  
  178. puts("\r\n Hello !!\r");
  179. initialisation();
  180. while (1)
  181. {
  182. /* Si une demande d'ouverte par un visiteur est faîte */
  183. if (affichage_demande)
  184. {
  185. puts("\r Demande d'ouverture de la barriere par un visiteur");
  186. affichage_demande=0; /* Pour éviter les rebonds */
  187. }
  188. /* Si un code a été tapé */
  189. if (info_analyse_code)
  190. {
  191. switch (info_analyse_code) {
  192. case 1:
  193. puts("\r\n Un code JUSTE a ete tape");
  194. break;
  195. case 2:
  196. puts("\r\n Un code FAUX a ete tape");
  197. break;
  198. default:
  199. break;
  200. }
  201. info_analyse_code=0; /* Pour éviter les rebonds */
  202. }
  203. /* Si une demande d'ouverte par un visiteur est faîte */
  204. if (affichage_mvt_bar)
  205. {
  206. switch (affichage_mvt_bar) {
  207. case 1:
  208. puts("\r\n Un code JUSTE a ete tape");
  209. break;
  210. case 2:
  211. puts("\r\n Un code FAUX a ete tape");
  212. break;
  213. default:
  214. break;
  215. }
  216. affichage_mvt_bar=0; /* Pour éviter les rebonds */
  217. }
  218. if (flag_char){
  219. if (caractere == 3) mode_operateur();
  220. else printf("\r\n Caractere tape : %c",caractere);
  221. flag_char=0;
  222. }
  223.  
  224.  
  225. }
  226. }
  227. ########################################
  228. ##### Fonction initialisation() #####
  229. ########################################
  230. void initialisation(void){
  231. /* Configuration des registres */
  232. /*******************************/
  233. ESTTL->CR_SR = ESTTL_INIT;
  234. /* Configuration des interruptions */
  235. IVHC->R0 = ACCES_R1_LIRQ5;
  236. IVHC->R1 = LIRQ5_FR_DESC;
  237. /*IVHC->R2 = NUM_VECTEUR_IT;*/
  238. IVHC->R3 |= DEMASQ_LIRQ5;
  239.  
  240. DUART1->ISR_IMR = DEMASQ_CLAVIER;
  241. DUART1->IVR = NUM_VECTEUR_IT_CLAVIER;
  242.  
  243. asm(" move.w #$2000,sr");
  244. /* D4 et D5 à 1
  245. ESTTL->CR_SR = RC_D4D5; */
  246. }
Add Comment
Please, Sign In to add comment