Polytech Tours - Projet C++ embarqué sur cible mbed

Dependencies:   mbed

Committer:
LecomteDelys
Date:
Sun Apr 24 15:43:51 2016 +0000
Revision:
0:21e183c9ef81
Programme final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LecomteDelys 0:21e183c9ef81 1 #ifndef CONFIGURATION_FILE_H
LecomteDelys 0:21e183c9ef81 2 #define CONFIGURATION_FILE_H
LecomteDelys 0:21e183c9ef81 3
LecomteDelys 0:21e183c9ef81 4 #include "mbed.h"
LecomteDelys 0:21e183c9ef81 5 #include "rpc.h"
LecomteDelys 0:21e183c9ef81 6 #include <fstream>
LecomteDelys 0:21e183c9ef81 7 #include <iostream>
LecomteDelys 0:21e183c9ef81 8
LecomteDelys 0:21e183c9ef81 9 struct configSPI {
LecomteDelys 0:21e183c9ef81 10 PinName mosi;
LecomteDelys 0:21e183c9ef81 11 PinName miso;
LecomteDelys 0:21e183c9ef81 12 PinName sck;
LecomteDelys 0:21e183c9ef81 13 };
LecomteDelys 0:21e183c9ef81 14
LecomteDelys 0:21e183c9ef81 15 struct configI2C {
LecomteDelys 0:21e183c9ef81 16 PinName sda;
LecomteDelys 0:21e183c9ef81 17 PinName scl;
LecomteDelys 0:21e183c9ef81 18 };
LecomteDelys 0:21e183c9ef81 19
LecomteDelys 0:21e183c9ef81 20 class ConfigFile
LecomteDelys 0:21e183c9ef81 21 {
LecomteDelys 0:21e183c9ef81 22 public:
LecomteDelys 0:21e183c9ef81 23 /*Constructeur*/
LecomteDelys 0:21e183c9ef81 24 ConfigFile(const char* fileName, uint8_t &level, uint8_t &numLeds, configSPI &spi, configI2C &i2c, PinName &latchPin) {
LecomteDelys 0:21e183c9ef81 25 int l, n;
LecomteDelys 0:21e183c9ef81 26 char configPins[6][3];
LecomteDelys 0:21e183c9ef81 27
LecomteDelys 0:21e183c9ef81 28 /*Utiliser le système de fichier local*/
LecomteDelys 0:21e183c9ef81 29 LocalFileSystem local("local");
LecomteDelys 0:21e183c9ef81 30
LecomteDelys 0:21e183c9ef81 31 /*Ouvrir le fichier de configuration*/
LecomteDelys 0:21e183c9ef81 32 FILE* ConfigFile = fopen(fileName, "r");
LecomteDelys 0:21e183c9ef81 33
LecomteDelys 0:21e183c9ef81 34 if(ConfigFile) {
LecomteDelys 0:21e183c9ef81 35
LecomteDelys 0:21e183c9ef81 36 /*Lire les données de configuration*/
LecomteDelys 0:21e183c9ef81 37 fscanf(ConfigFile,
LecomteDelys 0:21e183c9ef81 38 "Difficulte = %d\nNombre de LEDs = %d\n\nMOSI pin = %s\nMISO pin = %s\nSCK pin = %s\nLatch pin = %s\n\nSDA pin = %s\nSCL pin = %s",
LecomteDelys 0:21e183c9ef81 39 &l, &n, configPins[0], configPins[1], configPins[2], configPins[3], configPins[4], configPins[5]);
LecomteDelys 0:21e183c9ef81 40
LecomteDelys 0:21e183c9ef81 41 /*Niveau du jeu*/
LecomteDelys 0:21e183c9ef81 42 level = (uint8_t) l;
LecomteDelys 0:21e183c9ef81 43
LecomteDelys 0:21e183c9ef81 44 /*Nombre de LEDs sur le bandeau*/
LecomteDelys 0:21e183c9ef81 45 numLeds = (uint8_t) n;
LecomteDelys 0:21e183c9ef81 46
LecomteDelys 0:21e183c9ef81 47 /*SPI*/
LecomteDelys 0:21e183c9ef81 48 spi.mosi = parse_pins(configPins[0]);
LecomteDelys 0:21e183c9ef81 49 spi.miso = parse_pins(configPins[1]);
LecomteDelys 0:21e183c9ef81 50 spi.sck = parse_pins(configPins[2]);
LecomteDelys 0:21e183c9ef81 51
LecomteDelys 0:21e183c9ef81 52 /*Latch pin*/
LecomteDelys 0:21e183c9ef81 53 latchPin = parse_pins(configPins[3]);
LecomteDelys 0:21e183c9ef81 54
LecomteDelys 0:21e183c9ef81 55 /*I2C*/
LecomteDelys 0:21e183c9ef81 56 i2c.sda = parse_pins(configPins[4]);
LecomteDelys 0:21e183c9ef81 57 i2c.scl = parse_pins(configPins[5]);
LecomteDelys 0:21e183c9ef81 58
LecomteDelys 0:21e183c9ef81 59 /*Fermer le fichier de configuration*/
LecomteDelys 0:21e183c9ef81 60 fclose(ConfigFile);
LecomteDelys 0:21e183c9ef81 61
LecomteDelys 0:21e183c9ef81 62 } else {
LecomteDelys 0:21e183c9ef81 63 std::cerr << "Erreur lors de l'ouverture du fichier de configuration !" << std::endl;
LecomteDelys 0:21e183c9ef81 64 }
LecomteDelys 0:21e183c9ef81 65 }
LecomteDelys 0:21e183c9ef81 66 };
LecomteDelys 0:21e183c9ef81 67 #endif