Maxime Kmiec / Mbed 2 deprecated PROJECT

Dependencies:   mbed SDFileSystem

main.cpp

Committer:
adragar
Date:
2021-05-04
Revision:
4:a73ad3555745

File content as of revision 4:a73ad3555745:


#include "mbed.h"
#include "mbed_genie.h"
#include "eeprom_flash.h"
#include "SDFileSystem.h"

Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);

void enableEEPROMWriting()
{
    HAL_StatusTypeDef status = HAL_FLASH_Unlock();
    FLASH_PageErase(EEPROM_START_ADDRESS);
    CLEAR_BIT(FLASH->CR, FLASH_CR_PER);
}

void disableEEPROMWriting()
{
    HAL_FLASH_Lock();
}

HAL_StatusTypeDef writeEEPROMHalfWord(uint32_t address, uint16_t data)
{
    HAL_StatusTypeDef status;
    address = address + EEPROM_START_ADDRESS;
    status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, data);
    return status;
}


uint16_t readEEPROMHalfWord(uint32_t address)
{
    uint16_t val = 0;
    address = address + EEPROM_START_ADDRESS;
    val = *(__IO uint16_t*)address;
    return val;
}

int flag = 0;
int chrono0;
int chrono1;
int i=0;
int tab[40];
int adresse = 0x00;
int lecture;

void myGenieEventHandler(void)
{
    genieFrame Event;
    genieDequeueEvent(&Event);
    if(Event.reportObject.cmd == GENIE_REPORT_EVENT) {

        if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) {
            if (Event.reportObject.index == 0) {
                wait(0.2);
                flag=1;
            }
            if (Event.reportObject.index == 1) {
                wait(0.2);
                flag=0;
            }
            if (Event.reportObject.index == 2) {
                pc.baud(9600);
                char numberstring[120];
                int number;
                SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
                pc.printf("Bienvenu!\n\r");
                FILE *fp = fopen("/sd/Temps.txt", "r");
                fgets(numberstring, 120, fp);
                if(fp == NULL) {
                    error("Impossible d'ouvrir le fichier pour la lecture\n\r");
                }
                sscanf(numberstring, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[0]=number;
                sscanf(numberstring+3, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[1]=number;
                sscanf(numberstring+6, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[2]=number;
                sscanf(numberstring+9, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[3]=number;
                sscanf(numberstring+12, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[4]=number;
                sscanf(numberstring+15, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[5]=number;
                sscanf(numberstring+18, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[6]=number;
                sscanf(numberstring+21, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[7]=number;
                sscanf(numberstring+24, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[8]=number;
                sscanf(numberstring+27, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[9]=number;
                sscanf(numberstring+30, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[10]=number;
                sscanf(numberstring+33, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[11]=number;
                sscanf(numberstring+36, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[12]=number;
                sscanf(numberstring+39, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[13]=number;
                sscanf(numberstring+42, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[14]=number;
                sscanf(numberstring+45, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[15]=number;
                sscanf(numberstring+48, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[16]=number;
                sscanf(numberstring+51, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[17]=number;
                sscanf(numberstring+54, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[18]=number;
                sscanf(numberstring+57, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[19]=number;
                sscanf(numberstring+60, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[20]=number;
                sscanf(numberstring+63, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[21]=number;
                sscanf(numberstring+66, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[22]=number;
                sscanf(numberstring+69, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[23]=number;
                sscanf(numberstring+72, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[24]=number;
                sscanf(numberstring+75, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[25]=number;
                sscanf(numberstring+78, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[26]=number;
                sscanf(numberstring+81, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[27]=number;
                sscanf(numberstring+84, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[28]=number;
                sscanf(numberstring+87, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[29]=number;
                sscanf(numberstring+90, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[30]=number;
                sscanf(numberstring+93, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[31]=number;
                sscanf(numberstring+96, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[32]=number;
                sscanf(numberstring+99, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[33]=number;
                sscanf(numberstring+102, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[34]=number;
                sscanf(numberstring+105, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[35]=number;
                sscanf(numberstring+108, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[36]=number;
                sscanf(numberstring+111, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[37]=number;
                sscanf(numberstring+114, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[38]=number;
                sscanf(numberstring+117, "%d", &number);
                pc.printf ("%d\n\r", number);
                tab[39]=number;
                /* Ecriture*/
                enableEEPROMWriting(); //autorisation d'ecriture dans l'eeprom

                writeEEPROMHalfWord(adresse, tab[0]);
                writeEEPROMHalfWord(adresse+2, tab[1]);
                writeEEPROMHalfWord(adresse+4, tab[2]);
                writeEEPROMHalfWord(adresse+6, tab[3]);
                writeEEPROMHalfWord(adresse+8, tab[4]);
                writeEEPROMHalfWord(adresse+10, tab[5]);
                writeEEPROMHalfWord(adresse+12, tab[6]);
                writeEEPROMHalfWord(adresse+14, tab[7]);
                writeEEPROMHalfWord(adresse+16, tab[8]);
                writeEEPROMHalfWord(adresse+18, tab[9]);
                writeEEPROMHalfWord(adresse+20, tab[10]);
                writeEEPROMHalfWord(adresse+22, tab[11]);
                writeEEPROMHalfWord(adresse+24, tab[12]);
                writeEEPROMHalfWord(adresse+26, tab[13]);
                writeEEPROMHalfWord(adresse+28, tab[14]);
                writeEEPROMHalfWord(adresse+30, tab[15]);
                writeEEPROMHalfWord(adresse+32, tab[16]);
                writeEEPROMHalfWord(adresse+34, tab[17]);
                writeEEPROMHalfWord(adresse+36, tab[18]);
                writeEEPROMHalfWord(adresse+38, tab[19]);
                writeEEPROMHalfWord(adresse+40, tab[20]);
                writeEEPROMHalfWord(adresse+42, tab[21]);
                writeEEPROMHalfWord(adresse+44, tab[22]);
                writeEEPROMHalfWord(adresse+46, tab[23]);
                writeEEPROMHalfWord(adresse+48, tab[24]);
                writeEEPROMHalfWord(adresse+50, tab[25]);
                writeEEPROMHalfWord(adresse+52, tab[26]);
                writeEEPROMHalfWord(adresse+54, tab[27]);
                writeEEPROMHalfWord(adresse+56, tab[28]);
                writeEEPROMHalfWord(adresse+58, tab[29]);
                writeEEPROMHalfWord(adresse+60, tab[30]);
                writeEEPROMHalfWord(adresse+62, tab[31]);
                writeEEPROMHalfWord(adresse+64, tab[32]);
                writeEEPROMHalfWord(adresse+66, tab[33]);
                writeEEPROMHalfWord(adresse+68, tab[34]);
                writeEEPROMHalfWord(adresse+70, tab[35]);
                writeEEPROMHalfWord(adresse+72, tab[36]);
                writeEEPROMHalfWord(adresse+74, tab[37]);
                writeEEPROMHalfWord(adresse+76, tab[38]);
                writeEEPROMHalfWord(adresse+78, tab[39]);
                disableEEPROMWriting(); //Interdiction d'ecriture

                /*lecture et affichage*/
                lecture=readEEPROMHalfWord(adresse);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+2);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+4);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+6);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+8);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+10);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+12);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+14);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+16);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+18);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+20);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+22);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+24);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+26);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+28);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+30);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+32);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+34);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+36);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+38);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+40);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+42);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+44);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+46);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+48);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+50);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+52);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+54);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+56);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+58);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+60);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+62);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+64);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+66);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+68);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+70);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+72);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+74);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+76);
                pc.printf ("valeur lue: %d\n\r",lecture);
                lecture=readEEPROMHalfWord(adresse+78);
                pc.printf ("valeur lue: %d\n\r",lecture);

            }
        }
    }
}

int main()

{
    SetupGenie();
    genieAttachEventHandler(&myGenieEventHandler);
    genieWriteContrast(15);

    while(1) {

        if (flag == 1) {
            printf("%d",flag); 
            genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, chrono0);
            genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x01, chrono1);
            chrono0=chrono0-1;
            chrono1=chrono1+1;
            wait (1);
            if(chrono0==0) {
                chrono0=tab[i];
                printf("%d\n\r",chrono0);
                i=i+1;
            }
            }
        else if(flag == 0) {
            genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, 0);
            genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x01, 0);
            chrono0=tab[i];
            wait (0.2);
        }
    }
}