160 lines
4.0 KiB
C++
160 lines
4.0 KiB
C++
#include "SAB.h"
|
|
|
|
SAB::SAB() : _screenConfig(128, 64, 0x3C),
|
|
_sdCardConfig(SPI_FULL_SPEED),
|
|
_display(_screenConfig.getWidth(),
|
|
_screenConfig.getHeight(), &Wire),
|
|
_screenManager(_display), _rtc(),
|
|
_rtcManager(_rtc), _sdCardManager(),
|
|
_connectivityManager(NULL),
|
|
_webServerManager(80, &_sdCardManager),
|
|
_pcf(0x27, Wire),
|
|
_ioManager(_pcf),
|
|
_taskSchedulerManager(_rtcManager),
|
|
_error(0)
|
|
{
|
|
//We set the gpio up
|
|
initGPIO();
|
|
//Serial.begin(9600);
|
|
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());
|
|
if(!_rtc.begin()) _error |= RTC_BEGIN_ERR;
|
|
if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())){ _error |= DISP_BEGIN_ERR; }
|
|
if(!_sdCardManager.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _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());}
|
|
_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),
|
|
_screenManager(_display),
|
|
_rtc(),
|
|
_rtcManager(_rtc),
|
|
_sdCardManager(),
|
|
_connectivityManager(NULL),
|
|
_webServerManager(webServerPort, &_sdCardManager),
|
|
_pcf(0x27, Wire),
|
|
_ioManager(_pcf),
|
|
_taskSchedulerManager(_rtcManager),
|
|
_error(0)
|
|
{
|
|
//We set the gpio up
|
|
initGPIO();
|
|
//Serial.begin(9600);
|
|
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());
|
|
if(!_rtc.begin()) _error |= RTC_BEGIN_ERR;
|
|
if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())) _error |= DISP_BEGIN_ERR;
|
|
if(!_sdCardManager.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _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());}
|
|
_connectivityManager = new ConnectivityManager(_sdCardManager);
|
|
if(!_pcf.begin()){_error |= IO_INIT_ERR;}
|
|
}
|
|
|
|
void SAB::initGPIO()
|
|
{
|
|
pinMode(GPIO_0, INPUT);
|
|
}
|
|
|
|
ScreenManager& SAB::getScreenManager()
|
|
{
|
|
return _screenManager;
|
|
}
|
|
|
|
RtcManager& SAB::getRtcManager()
|
|
{
|
|
return _rtcManager;
|
|
}
|
|
|
|
SDCardManager& SAB::getSdCardManager()
|
|
{
|
|
return _sdCardManager;
|
|
}
|
|
|
|
ConnectivityManager& SAB::getConnectivityManager()
|
|
{
|
|
return *_connectivityManager;
|
|
}
|
|
|
|
WEBServerManager& SAB::getWebServerManager()
|
|
{
|
|
return _webServerManager;
|
|
}
|
|
|
|
IOManager& SAB::getIoManager()
|
|
{
|
|
return _ioManager;
|
|
}
|
|
|
|
TaskSchedulerManager& SAB::getTaskSchedulerManager()
|
|
{
|
|
return _taskSchedulerManager;
|
|
}
|
|
|
|
ScreenConfig SAB::getScreenConfig() const
|
|
{
|
|
return _screenConfig;
|
|
}
|
|
|
|
PinMapping SAB::getPinConfig() const
|
|
{
|
|
return _pinConfig;
|
|
}
|
|
|
|
SDCardConfig SAB::getSdCardConfig() const
|
|
{
|
|
return _sdCardConfig;
|
|
}
|
|
|
|
PowerInfo SAB::getPowerInfo(const unsigned char nbOfMeasures) const
|
|
{
|
|
uint16_t batteryMeasures(0), temp(0);
|
|
unsigned char i(0);
|
|
int checkLevel(0);
|
|
PowerInfo p;
|
|
|
|
for(;i < nbOfMeasures;i++)
|
|
{
|
|
temp = analogRead(ADC);
|
|
batteryMeasures += temp;
|
|
}
|
|
|
|
batteryMeasures /= nbOfMeasures;
|
|
|
|
if(batteryMeasures <= USB_THRESHOLD)
|
|
{
|
|
p.powerType = USB;
|
|
p.level = 0;
|
|
}
|
|
else
|
|
{
|
|
p.powerType = BATTERY;
|
|
checkLevel = ((double)(batteryMeasures-BATT_EMPTY)*100.0/(double)BATT_DIFF);
|
|
|
|
if(checkLevel > 100)
|
|
p.level = 100;
|
|
else if (checkLevel < 0)
|
|
p.level = 0;
|
|
else
|
|
p.level = checkLevel;
|
|
}
|
|
|
|
return p;
|
|
}
|
|
|
|
const char *SAB::getSoftVersion() const
|
|
{
|
|
return SOFT_VERSION;
|
|
}
|
|
|
|
unsigned char SAB::getError() const
|
|
{
|
|
return _error;
|
|
}
|