Polytech Tours - Projet C++ embarqué sur cible mbed
ConfigFile.hpp@0:21e183c9ef81, 2016-04-24 (annotated)
- Committer:
- LecomteDelys
- Date:
- Sun Apr 24 15:43:51 2016 +0000
- Revision:
- 0:21e183c9ef81
Programme final
Who changed what in which revision?
User | Revision | Line number | New 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 |