Valentin Bruchet / Mbed 2 deprecated a_programme_bts

Dependencies:   mbed ID12RFID SDFileSystem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "mbed_genie.h"
00003 #include "eeprom_flash.h"
00004 #include "SDFileSystem.h"
00005 #include "ID12RFID.h"
00006 
00007 Serial pc(USBTX, USBRX);
00008 ID12RFID rfid(PA_10);
00009 
00010 DigitalOut myled(LED1);
00011 DigitalOut led1(PA_8);
00012 DigitalOut led2(PB_14);
00013 DigitalOut led3(PB_11);
00014 DigitalOut led4(PA_11);
00015 DigitalOut led5(PA_12);
00016 DigitalOut led6(PC_5);
00017 DigitalOut led7(PC_6);
00018 DigitalOut led8(PC_8);
00019 DigitalOut ledmasse(PB_3);
00020 
00021 int flag_contraste;
00022 int valeur_clavier;
00023 int i;
00024 unsigned int lecture;
00025 int chrono = 99;
00026 int led = 99;
00027 int tab[40] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
00028 int code1 = 49;
00029 int code2 = 50;
00030 int code3 = 51;
00031 int y = 15;
00032 int flag = 0;
00033 int adressetempo = 0x0000;
00034 int adresserfid = 0x00000000;
00035 unsigned int tempo1, tempo2, tempo3, tempo4, tempo5, tempo6, tempo7,tempo8, rfid1, rfid2, rfid3, rfid4, rfid5;
00036 
00037 
00038 void enableEEPROMWriting()
00039 {
00040     HAL_StatusTypeDef status = HAL_FLASH_Unlock();
00041     FLASH_PageErase(EEPROM_START_ADDRESS); // required to re-write
00042     CLEAR_BIT(FLASH->CR, FLASH_CR_PER); // Bug fix: bit PER has been set in Flash_PageErase(), must clear it here
00043 }
00044 
00045 void disableEEPROMWriting()
00046 {
00047     HAL_FLASH_Lock();
00048 }
00049 
00050 HAL_StatusTypeDef writeEEPROMWord(uint32_t address, uint32_t data)
00051 {
00052     HAL_StatusTypeDef status;
00053     address = address + EEPROM_START_ADDRESS;
00054     status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data);
00055     return status;
00056 }
00057 
00058 uint32_t readEEPROMWord(uint32_t address)
00059 {
00060     uint32_t val = 0;
00061     address = address + EEPROM_START_ADDRESS;
00062     val = *(__IO uint32_t*)address;
00063     return val;
00064 }
00065 
00066 void myGenieEventHandler(void)
00067 {
00068     genieFrame Event;
00069     genieDequeueEvent(&Event);
00070     if(Event.reportObject.cmd == GENIE_REPORT_EVENT) 
00071     {
00072         if (Event.reportObject.object == GENIE_OBJ_KEYBOARD)
00073              { 
00074                 if (Event.reportObject.index == 0)
00075                 {
00076                     valeur_clavier = Event.reportObject.data_lsb;
00077                     printf("%c\n\r", valeur_clavier);
00078                     if ((valeur_clavier == code1) || (valeur_clavier== code2) || (valeur_clavier == code3))
00079                     {
00080                         printf("Acces autorise\n\r");
00081                     }
00082                     else
00083                     {
00084                         printf("Acces refuse\n\r");
00085                     }
00086                 }
00087              }
00088         if (Event.reportObject.object == GENIE_OBJ_4DBUTTON)
00089         {              
00090             if (Event.reportObject.index == 3) //Start
00091             {
00092                 printf("Depart\n\r");
00093                 flag=1;
00094             }
00095             if (Event.reportObject.index == 5) //Stop
00096             {
00097                 printf("Stop\n\r");
00098                 flag=0;
00099             }
00100             /*if (Event.reportObject.index == 8) // Contraste +
00101             { 
00102                 if (y<15)
00103                 { 
00104                  y++;
00105                  printf("Contraste=%d\r\n",y);
00106                  flag_contraste=1;
00107                 }
00108                 genieWriteContrast(y);
00109             }
00110             if (Event.reportObject.index == 7) // Contraste -
00111             { 
00112                 if (y>0)
00113                 {
00114                     y--;
00115                     printf("Contraste=%d\r\n",y);
00116                     flag_contraste=1;
00117                 }
00118                 genieWriteContrast(y);
00119             }*/
00120             if (Event.reportObject.index == 6) //Lecture tempo
00121                 {
00122                 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
00123                 char numberstring[100];      
00124                 FILE *fp = fopen("/sd/valeur_temporisation.txt", "r");
00125                 fgets(numberstring, 100, fp);  
00126                     
00127                 if(fp == NULL)
00128                 {
00129                     error("Impossible d'ouvrir le fichier pour la lecture\n\r");
00130                     fclose(fp);  
00131                 }
00132                 else
00133                 {
00134                     printf("Lecture temporisation\n\r");
00135                     enableEEPROMWriting();
00136                     sscanf(numberstring, "%d", &tempo1);
00137                     writeEEPROMWord(adressetempo, tempo1);
00138                     lecture=readEEPROMWord(adressetempo);
00139                     printf ("eeprom: %d\n\r",lecture);
00140                     printf ("carte : %d\n\r",tempo1);
00141                     sscanf(numberstring+3, "%d", &tempo2);
00142                     writeEEPROMWord(adressetempo+4, tempo2);
00143                     lecture=readEEPROMWord(adressetempo+4);
00144                     printf ("eeprom: %d\n\r",lecture);
00145                     printf ("carte : %d\n\r",tempo2);
00146                     sscanf(numberstring+6, "%d", &tempo3);
00147                     writeEEPROMWord(adressetempo+8, tempo3);
00148                     lecture=readEEPROMWord(adressetempo+8);
00149                     printf ("eeprom: %d\n\r",lecture);
00150                     printf ("carte : %d\n\r",tempo3);
00151                     sscanf(numberstring+9, "%d", &tempo4);
00152                     writeEEPROMWord(adressetempo+12, tempo4);
00153                     lecture=readEEPROMWord(adressetempo+12);
00154                     printf ("eeprom: %d\n\r",lecture);
00155                     printf ("carte : %d\n\r",tempo4);
00156                     sscanf(numberstring+11, "%d", &tempo5);
00157                     writeEEPROMWord(adressetempo+16, tempo5);
00158                     lecture=readEEPROMWord(adressetempo+16);
00159                     printf ("eeprom: %d\n\r",lecture);
00160                     printf ("carte : %d\n\r",tempo5);
00161                     sscanf(numberstring+14, "%d", &tempo6);
00162                     writeEEPROMWord(adressetempo+20, tempo6);
00163                     lecture=readEEPROMWord(adressetempo+20);
00164                     printf ("eeprom: %d\n\r",lecture);
00165                     printf ("carte : %d\n\r",tempo6);
00166                     sscanf(numberstring+16, "%d", &tempo7);
00167                     writeEEPROMWord(adressetempo+24, tempo7);
00168                     lecture=readEEPROMWord(adressetempo+24);
00169                     printf ("eeprom: %d\n\r",lecture);
00170                     printf ("carte : %d\n\r",tempo7);
00171                     sscanf(numberstring+18, "%d", &tempo8);
00172                     writeEEPROMWord(adressetempo+28, tempo8);
00173                     lecture=readEEPROMWord(adressetempo+28);
00174                     printf ("eeprom: %d\n\r",lecture);
00175                     printf ("carte : %d\n\r",tempo8);
00176                     fclose(fp);                 
00177                     printf("Lecture finie!\n\r");
00178                     disableEEPROMWriting();
00179                 }
00180                 }
00181             if (Event.reportObject.index == 7) //Lecture code RFID
00182             {
00183                 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
00184                 char numberrfid[100];
00185                 FILE *fp1 = fopen("/sd/valeur_rfid.txt", "r");
00186                 fgets(numberrfid, 100, fp1);    
00187                 
00188                 if(fp1 == NULL)
00189                  {
00190                     error("Impossible d'ouvrir le fichier pour la lecture\n\r");
00191                 }
00192                 flag = 2;
00193                 printf("Lecture code rfid\n\r");
00194                 enableEEPROMWriting();
00195                 sscanf(numberrfid, "%d", &rfid1);
00196                 writeEEPROMWord(adresserfid, rfid1);
00197                 lecture=readEEPROMWord(adresserfid);
00198                 printf ("eeprom: %d\n\r",lecture);
00199                 printf ("carte : %d\n\r", rfid1);
00200                 sscanf(numberrfid+8, "%d", &rfid2);
00201                 writeEEPROMWord(adresserfid+8, rfid2);
00202                 lecture=readEEPROMWord(adresserfid+8);
00203                 printf ("eeprom: %d\n\r",lecture);;
00204                 printf ("carte : %d\n\r", rfid2);
00205                 sscanf(numberrfid+17, "%d", &rfid3);
00206                 writeEEPROMWord(adresserfid+16, rfid3);
00207                 lecture=readEEPROMWord(adresserfid+16);
00208                 printf ("eeprom: %d\n\r",lecture);
00209                 printf ("carte : %d\n\r", rfid3);
00210                 sscanf(numberrfid+25, "%d", &rfid4);
00211                 writeEEPROMWord(adresserfid+24, rfid4);
00212                 lecture=readEEPROMWord(adresserfid+24);
00213                 printf ("eeprom: %d\n\r",lecture);
00214                 printf ("carte : %d\n\r", rfid4);
00215                 sscanf(numberrfid+34, "%d", &rfid5);
00216                 writeEEPROMWord(adresserfid+32, rfid5);
00217                 lecture=readEEPROMWord(adresserfid+32);
00218                 printf ("eeprom: %d\n\r",lecture);
00219                 printf ("carte : %d\n\r", rfid5);
00220                 fclose(fp1); 
00221                 printf("Lecture finie!\n\r");
00222                 disableEEPROMWriting();
00223                 } 
00224             }
00225     }
00226         return; 
00227 }
00228 int main()
00229 {
00230     pc.baud(9600);
00231     ledmasse = 1;
00232     SetupGenie();
00233     genieAttachEventHandler(&myGenieEventHandler);
00234     genieWriteContrast(15);
00235     
00236     while(1)
00237     {
00238         if (flag == 1) 
00239         {
00240             led1 = 1;
00241             led2 = 1;
00242             led3 = 1;
00243             led4 = 1;
00244             led5 = 0;
00245             led6 = 0;
00246             led7 = 0;
00247             led8 = 0;
00248             wait(1);
00249             if (chrono == 0)
00250             {
00251                 chrono=tab[i];
00252                 i=i+1;
00253             }
00254         }
00255 
00256         else if(flag == 0)
00257         {
00258             led1 = 0;
00259             led2 = 0;
00260             led3 = 0;
00261             led4 = 0;
00262             led5 = 1;
00263             led6 = 1;
00264             led7 = 1;
00265             led8 = 1;
00266             chrono=tab[i];
00267             wait(1);
00268         }
00269         else if(flag == 2)
00270         {
00271             if(rfid.read() == rfid1) 
00272             {
00273                 printf("RFID Tag number : %d\n\r", rfid.read());
00274                 genieWriteObject(GENIE_OBJ_LED, 0x00, 1); 
00275             }
00276         }
00277         /*if(rfid.read() == rfid1)
00278             {
00279                 genieWriteObject(GENIE_OBJ_LED, 0x00, chrono); 
00280             }*/
00281     }
00282 }