Removed ScreenConfig, SDCardConfig and PinMapping. They are now replaced by a single object : BoardConfig

This commit is contained in:
anschrammh 2019-10-17 21:38:28 +02:00
parent bd3d17c5c2
commit 6be6c7256d
12 changed files with 179 additions and 193 deletions

91
src/app/BoardConfig.cpp Normal file
View File

@ -0,0 +1,91 @@
#include "BoardConfig.h"
BoardConfig::BoardConfig(const uint16_t I2C_screenAddress,
const uint16_t screenWidth,
const uint16_t screenHeight,
const uint16_t I2C_IOExpanderAddress,
const uint16_t _I2C_RTCFlashAddress,
const Pin SPI_SDCard_cs,
const Pin I2C_sda,
const Pin I2C_scl,
const Pin SPI_mosi,
const Pin SPI_miso,
const Pin SPI_clk//,
//const SPISettings spiSpeed
):
_I2C_sda(I2C_sda == DEFAULT_PIN ? GPIO_4_SDA : I2C_sda),
_I2C_scl(I2C_scl == DEFAULT_PIN ? GPIO_5_SCL : I2C_scl),
_SPI_mosi(SPI_mosi == DEFAULT_PIN ? GPIO_13_MOSI : SPI_mosi),
_SPI_miso(SPI_miso == DEFAULT_PIN ? GPIO_12_MISO : SPI_miso),
_SPI_clk(SPI_clk == DEFAULT_PIN ? GPIO_14_CLK : SPI_clk),
_SPI_SDCard_cs(_SPI_SDCard_cs == DEFAULT_PIN ? GPIO_2 : SPI_SDCard_cs),
_I2C_screenAddress(I2C_screenAddress),
_I2C_IOExpanderAddress(I2C_IOExpanderAddress),
_I2C_RTCFlashAddress(_I2C_RTCFlashAddress),
//_SPISpeed(spiSpeed),
_screenWidth(screenWidth),
_screenHeight(screenHeight)
{
}
Pin BoardConfig::getI2C_sda() const
{
return _I2C_sda;
}
Pin BoardConfig::getI2C_scl() const
{
return _I2C_scl;
}
Pin BoardConfig::getSPI_mosi() const
{
return _SPI_mosi;
}
Pin BoardConfig::getSPI_miso() const
{
return _SPI_miso;
}
Pin BoardConfig::getSPI_clk() const
{
return _SPI_clk;
}
Pin BoardConfig::getSPI_SDCard_cs() const
{
return _SPI_SDCard_cs;
}
uint16_t BoardConfig::getI2C_screenAddress() const
{
return _I2C_screenAddress;
}
uint16_t BoardConfig::getI2C_IOExpanderAddress() const
{
return _I2C_IOExpanderAddress;
}
uint16_t BoardConfig::getRTCFlashAddress() const
{
return _I2C_RTCFlashAddress;
}
/*SPISettings BoardConfig::getSPISpeed() const
{
return _SPISpeed;
}*/
uint16_t BoardConfig::getScreenWidth() const
{
return _screenWidth;
}
uint16_t BoardConfig::getScreenHeight() const
{
return _screenHeight;
}

68
src/app/BoardConfig.h Normal file
View File

@ -0,0 +1,68 @@
/**
This file is used to define the hardware parameters of the whole board and thus replacing the following files :
ScreenConfig.h, SDcardConfig.h, PinMapping.h
It contains parameters Pins parameters, I2C addresses and more.
**/
#ifndef BOARDCONFIG_H
#define BOARDCONFIG_H
#include "definition.h"
//#include <SdFat.h>
class BoardConfig
{
public:
BoardConfig(const uint16_t I2C_screenAddress = 0x3C,
const uint16_t screenWidth = 128,
const uint16_t screenHeight = 64,
const uint16_t I2C_IOExpanderAddress = 0x27,
const uint16_t _I2C_RTCFlashAddress = 0x0,
const Pin SPI_SDCard_cs = GPIO_2,
const Pin I2C_sda = GPIO_4_SDA,
const Pin I2C_scl = GPIO_5_SCL,
const Pin SPI_mosi = GPIO_13_MOSI,
const Pin SPI_miso = GPIO_12_MISO,
const Pin SPI_clk = GPIO_14_CLK//,
//const SPISettings spiSpeed = SPI_FULL_SPEED
);
Pin getI2C_sda() const;
Pin getI2C_scl() const;
Pin getSPI_mosi() const;
Pin getSPI_miso() const;
Pin getSPI_clk() const;
Pin getSPI_SDCard_cs() const;
uint16_t getI2C_screenAddress() const;
uint16_t getI2C_IOExpanderAddress() const;
uint16_t getRTCFlashAddress() const;
//SPISettings getSPISpeed() const;
uint16_t getScreenWidth() const;
uint16_t getScreenHeight() const;
protected:
private:
//1) Pins
const Pin _I2C_sda;
const Pin _I2C_scl;
const Pin _SPI_mosi;
const Pin _SPI_miso;
const Pin _SPI_clk;
const Pin _SPI_SDCard_cs;
//2) I2C Addresses
const uint16_t _I2C_screenAddress;
const uint16_t _I2C_IOExpanderAddress;
const uint16_t _I2C_RTCFlashAddress;
//3) SPI Speed
//const SPISettings _SPISpeed;
//4) Miscellaneous
const uint16_t _screenWidth;
const uint16_t _screenHeight;
};
#endif //BOARDCONFIG_H

View File

@ -1,59 +0,0 @@
#include "PinMapping.h"
/**
* Helper class to define the pin mapping
*/
//Default pin mapping
PinMapping::PinMapping() :
_I2C_sda(GPIO_4_SDA),
_I2C_scl(GPIO_5_SCL),
_SPI_mosi(GPIO_13_MOSI),
_SPI_miso(GPIO_12_MISO),
_SPI_clk(GPIO_14_CLK),
_SPI_sdCard_cs(GPIO_2)
{
}
//Custom pin mapping
PinMapping::PinMapping(const Pin I2C_sda, const Pin I2C_scl, const Pin SPI_mosi, const Pin SPI_miso, const Pin SPI_clk, const Pin SPI_sdCard_cs) :
_I2C_sda(I2C_sda == DEFAULT_PIN ? GPIO_4_SDA : I2C_sda),
_I2C_scl(I2C_scl == DEFAULT_PIN ? GPIO_5_SCL : I2C_scl),
_SPI_mosi(SPI_mosi == DEFAULT_PIN ? GPIO_13_MOSI : SPI_mosi),
_SPI_miso(SPI_miso == DEFAULT_PIN ? GPIO_12_MISO : SPI_miso),
_SPI_clk(SPI_clk == DEFAULT_PIN ? GPIO_14_CLK : SPI_clk),
_SPI_sdCard_cs(SPI_sdCard_cs == DEFAULT_PIN ? GPIO_2 : SPI_sdCard_cs)
{
}
//Accessors
Pin PinMapping::getI2C_sda() const
{
return _I2C_sda;
}
Pin PinMapping::getI2C_scl() const
{
return _I2C_scl;
}
Pin PinMapping::getSPI_mosi() const
{
return _SPI_mosi;
}
Pin PinMapping::getSPI_miso() const
{
return _SPI_miso;
}
Pin PinMapping::getSPI_clk() const
{
return _SPI_clk;
}
Pin PinMapping::getSPI_sdCard_cs() const
{
return _SPI_sdCard_cs;
}

View File

@ -1,27 +0,0 @@
#ifndef PINMAPPING_H
#define PINMAPPING_H
#include "definition.h"
class PinMapping
{
public:
PinMapping();
PinMapping(const Pin I2C_sda, const Pin I2C_scl, const Pin SPI_mosi, const Pin SPI_miso, const Pin SPI_clk, const Pin SPI_sdCard_cs);
Pin getI2C_sda() const;
Pin getI2C_scl() const;
Pin getSPI_mosi() const;
Pin getSPI_miso() const;
Pin getSPI_clk() const;
Pin getSPI_sdCard_cs() const;
private:
const Pin _I2C_sda;
const Pin _I2C_scl;
const Pin _SPI_mosi;
const Pin _SPI_miso;
const Pin _SPI_clk;
const Pin _SPI_sdCard_cs;
};
#endif //PINMAPPING_H

View File

@ -1,16 +1,13 @@
#include "SAB.h"
SAB::SAB() : _screenConfig(128, 64, 0x3C),
_sdCardConfig(SPI_FULL_SPEED),
_display(_screenConfig.getWidth(),
_screenConfig.getHeight(), &Wire),
SAB::SAB() : _display(_boardConfig.getScreenWidth(), _boardConfig.getScreenHeight(), &Wire),
_screenManager(_display), _rtc(),
_rtcManager(_rtc), _sdCardManager(),
_connectivityManager(NULL),
//_webServerManager(80, &_sdCardManager),
_webServer(80, &_sdCardManager),
_ftpServer(21, &_sdCardManager, "ESP8266", "12345678"),
_pcf(0x27, Wire),
_pcf(_boardConfig.getI2C_IOExpanderAddress(), Wire),
_ioManager(_pcf),
_taskSchedulerManager(_rtcManager),
_error(0)
@ -22,18 +19,16 @@ _error(0)
delay(200);
//We initialize the pins for the I2C communication
Wire.begin(_pinConfig.getI2C_sda(), _pinConfig.getI2C_scl());
Wire.begin(_boardConfig.getI2C_sda(), _boardConfig.getI2C_scl());
if(!_rtc.begin()) _error |= RTC_BEGIN_ERR;
if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())){ _error |= DISP_BEGIN_ERR; }
if(!_sdCardManager.begin(_pinConfig.getSPI_sdCard_cs(), _sdCardConfig.getSPISpeed())){ _error |= SDCARD_INIT_ERR; Serial.print("Failed to init SDCard : SPI_SPEED : "); Serial.print(_sdCardConfig.getSPISpeed()); Serial.print(" CS PIN : "); Serial.println(_pinConfig.getSPI_sdCard_cs());}
if(!_display.begin(SSD1306_SWITCHCAPVCC, _boardConfig.getI2C_screenAddress())){ _error |= DISP_BEGIN_ERR; }
if(!_sdCardManager.begin(_boardConfig.getSPI_SDCard_cs(), 8000000)){ _error |= SDCARD_INIT_ERR; Serial.print("Failed to init SDCard : SPI_SPEED : "); Serial.print(8000000); Serial.print(" CS PIN : "); Serial.println(_boardConfig.getSPI_SDCard_cs());}
_connectivityManager = new ConnectivityManager(_sdCardManager);
if(!_pcf.begin()){_error |= IO_INIT_ERR;}
}
SAB::SAB(const PinMapping pinConfig, const ScreenConfig screenConfig, const SDCardConfig sdCardConfig, const unsigned int webServerPort) : _pinConfig(pinConfig),
_screenConfig(screenConfig),
_sdCardConfig(sdCardConfig),
_display(_screenConfig.getWidth(), _screenConfig.getHeight(), &Wire),
SAB::SAB(const BoardConfig boardConfig, const unsigned int webServerPort, const unsigned int ftpServerPort) : _boardConfig(boardConfig),
_display(_boardConfig.getScreenWidth(), _boardConfig.getScreenHeight(), &Wire),
_screenManager(_display),
_rtc(),
_rtcManager(_rtc),
@ -41,8 +36,8 @@ _sdCardManager(),
_connectivityManager(NULL),
//_webServerManager(webServerPort, &_sdCardManager),
_webServer(webServerPort, &_sdCardManager),
_ftpServer(21, &_sdCardManager, "ESP8266", "12345678"),
_pcf(0x27, Wire),
_ftpServer(ftpServerPort, &_sdCardManager, "ESP8266", "12345678"),
_pcf(_boardConfig.getI2C_IOExpanderAddress(), Wire),
_ioManager(_pcf),
_taskSchedulerManager(_rtcManager),
_error(0)
@ -53,10 +48,10 @@ _error(0)
Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
delay(200);
//We initialize the pins for the I2C communication
Wire.begin(_pinConfig.getI2C_sda(), _pinConfig.getI2C_scl());
Wire.begin(_boardConfig.getI2C_sda(), _boardConfig.getI2C_scl());
if(!_rtc.begin()) _error |= RTC_BEGIN_ERR;
if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())) _error |= DISP_BEGIN_ERR;
if(!_sdCardManager.begin(_pinConfig.getSPI_sdCard_cs(), _sdCardConfig.getSPISpeed())){ _error |= SDCARD_INIT_ERR; Serial.print("Failed to init SDCard : SPI_SPEED : "); Serial.print(_sdCardConfig.getSPISpeed()); Serial.print(" CS PIN : "); Serial.println(_pinConfig.getSPI_sdCard_cs());}
if(!_display.begin(SSD1306_SWITCHCAPVCC, _boardConfig.getI2C_screenAddress())) _error |= DISP_BEGIN_ERR;
if(!_sdCardManager.begin(_boardConfig.getSPI_SDCard_cs(), 8000000)){ _error |= SDCARD_INIT_ERR; Serial.print("Failed to init SDCard : SPI_SPEED : "); Serial.print(8000000); Serial.print(" CS PIN : "); Serial.println(_boardConfig.getSPI_SDCard_cs());}
_connectivityManager = new ConnectivityManager(_sdCardManager);
if(!_pcf.begin()){_error |= IO_INIT_ERR;}
}
@ -116,19 +111,9 @@ PowerManager& SAB::getPowerManager()
return _powerManager;
}
ScreenConfig SAB::getScreenConfig() const
BoardConfig SAB::getBoardConfig() const
{
return _screenConfig;
}
PinMapping SAB::getPinConfig() const
{
return _pinConfig;
}
SDCardConfig SAB::getSdCardConfig() const
{
return _sdCardConfig;
return _boardConfig;
}
const char *SAB::getSoftVersion() const

View File

@ -1,8 +1,7 @@
#ifndef SAB_H
#define SAB_H
#include "PinMapping.h"
#include "ScreenConfig.h"
#include "SDCardConfig.h"
#include "BoardConfig.h"
#include "RtcManager.h"
#include "ScreenManager.h"
#include "SDCardManager.h"
@ -24,7 +23,7 @@ class SAB
enum Error {RTC_BEGIN_ERR = 1, DISP_BEGIN_ERR = 2, SDCARD_INIT_ERR = 4, IO_INIT_ERR = 8};
SAB();
SAB(const PinMapping pinConfig, const ScreenConfig screenConfig, const SDCardConfig sdCardConfig, const unsigned int webServerPort);
SAB(const BoardConfig boardConfig, const unsigned int webServerPort = 80, const unsigned int ftpServerPort = 21);
~SAB()
{
delete _connectivityManager;
@ -40,16 +39,12 @@ class SAB
IOManager& getIoManager();
TaskSchedulerManager& getTaskSchedulerManager();
PowerManager& getPowerManager();
ScreenConfig getScreenConfig() const;
PinMapping getPinConfig() const;
SDCardConfig getSdCardConfig() const;
BoardConfig getBoardConfig() const;
const char *getSoftVersion() const;
unsigned char getError() const;
private:
void initGPIO();
const PinMapping _pinConfig;
const ScreenConfig _screenConfig;
const SDCardConfig _sdCardConfig;
const BoardConfig _boardConfig;
Adafruit_SSD1306 _display;
ScreenManager _screenManager;

View File

@ -1,12 +0,0 @@
#include <Arduino.h>
#include "SDCardConfig.h"
SDCardConfig::SDCardConfig(const uint32_t spiSpeed) : _spiSpeed(spiSpeed)
{
}
const uint32_t SDCardConfig::getSPISpeed() const
{
return _spiSpeed;
}

View File

@ -1,13 +0,0 @@
#ifndef SDCARDCONFIG_H
#define SDCARDCONFIG_H
class SDCardConfig
{
public:
SDCardConfig(const uint32_t spiSpeed);
const uint32_t getSPISpeed() const;
private:
const uint32_t _spiSpeed;
};
#endif //SDCARDCONFIG_H

View File

@ -1,24 +0,0 @@
#include "ScreenConfig.h"
ScreenConfig::ScreenConfig(const unsigned char width, const unsigned char height, const unsigned char address) :
_width(width),
_height(height),
_address(address)
{
}
unsigned char ScreenConfig::getWidth() const
{
return _width;
}
unsigned char ScreenConfig::getHeight() const
{
return _height;
}
unsigned char ScreenConfig::getAddress() const
{
return _address;
}

View File

@ -1,17 +0,0 @@
#ifndef SCREENCONFIG_H
#define SCREENCONFIG_H
class ScreenConfig
{
public:
ScreenConfig(const unsigned char width, const unsigned char height, const unsigned char address);
unsigned char getWidth() const;
unsigned char getHeight() const;
unsigned char getAddress() const;
private:
const unsigned char _width;
const unsigned char _height;
const unsigned char _address;
};
#endif //SCREENCONFIG_H

View File

@ -1,5 +1,4 @@
#include "definition.h"
#include "PinMapping.h"
#include "SAB.h"
#include "views.h"
#include "webApi.h"

View File

@ -121,7 +121,7 @@ boolean sdCardMountApi(WEBServer<WEBClient>::HttpRequestData &HRD, WiFiClient *w
float *sdCardSize = (float *) &pV->pView->sdCardSize;
char buffer[200];
if(p->getSdCardManager().begin(p->getPinConfig().getSPI_sdCard_cs(), p->getSdCardConfig().getSPISpeed()))
if(p->getSdCardManager().begin(p->getBoardConfig().getSPI_SDCard_cs(), 8000000))
{
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"card\" : \"mounted\" }");
*sdCardSize = p->getSdCardManager().getSize(GBYTE);