Mentions légales du service

Skip to content
Snippets Groups Projects

Resolve "Bug: Clang diagnostic double promotion"

Merged MONSEIGNE Thibaut requested to merge 148-bug-clang-diagnostic-double-promotion into development
11 files
+ 556
972
Compare changes
  • Side-by-side
  • Inline
Files
11
@@ -105,8 +105,7 @@ UBuffer Buffer[NB_MAX_BUFFER_IN_CACHE];
bool loadFilter(const char* filename, std::vector<double>& vFilter)
{
FILE* file = fopen(filename, "rb");
if (!file)
{
if (!file) {
vFilter.clear();
vFilter.push_back(1);
return false;
@@ -145,32 +144,27 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
// Opens device
// We change the working directory to be sure to have ActiChamp.bit in it
if (!SetCurrentDirectory(Directories::getBinDir()))
{
if (!SetCurrentDirectory(Directories::getBinDir())) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Can not change current working directory!" << m_deviceID << "\n";
return false;
}
int count = 0;
while (count++ < 5)
{
while (count++ < 5) {
m_handle = champOpen(m_deviceID);
if (m_handle == nullptr)
{
if (m_handle == nullptr) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Failed to open the device, retrying (" << count << ")" << "\n";
System::Time::sleep(500);
}
else { break; }
}
if (m_handle == nullptr)
{
if (m_handle == nullptr) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Can not open actiCHamp device id " << m_deviceID << "\n";
return false;
}
// set back to previous working directory
if (!SetCurrentDirectory(Directories::getDistRootDir()))
{
if (!SetCurrentDirectory(Directories::getDistRootDir())) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Can not change current working directory!" << m_deviceID << "\n";
return false;
}
@@ -178,23 +172,20 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
// Gets versions
t_champVersion version;
champGetVersion(m_handle, &version);
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Got actiCHamp version (Dll:" << size_t(version.Dll) << ", Driver:" <<
size_t(version.Driver) << ", Cypress:" << size_t(version.Cypress) << ", Fpga:" << size_t(version.Fpga) << ", Msp430:" <<
size_t(version.Msp430) << ")\n";
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Got actiCHamp version (Dll:" << size_t(version.Dll)
<< ", Driver:" << size_t(version.Driver) << ", Cypress:" << size_t(version.Cypress) << ", Fpga:" << size_t(version.Fpga)
<< ", Msp430:" << size_t(version.Msp430) << ")\n";
// Gets battery voltages
t_champVoltages voltage;
if (champGetVoltages(m_handle, &voltage))
{
if (champGetVoltages(m_handle, &voltage)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not get voltages - Got error [" << getError() << "]\n";
}
else
{
else {
int state = 0;
if (voltage.VDC < 5.5) { state = 1; }
if (voltage.VDC < 5.2) { state = 2; }
switch (state)
{
if (voltage.VDC < 5.5F) { state = 1; }
if (voltage.VDC < 5.2F) { state = 2; }
switch (state) {
case 0: m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Battery level is fine (" << float(voltage.VDC) << ")\n";
break;
case 1: m_driverCtx.getLogManager() << Kernel::LogLevel_Warning << "Battery level is critical (" << float(voltage.VDC) << ")\n";
@@ -214,8 +205,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Got modules status : Present=" << modules.Present << " / Enabled=" << modules.Enabled << "\n";
// Active shield
if (champSetActiveShieldGain(m_handle, m_activeShieldGain))
{
if (champSetActiveShieldGain(m_handle, m_activeShieldGain)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set active shield gain - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -229,8 +219,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
oSettings.Rate = t_champRate(m_physicalSampling);
oSettings.AdcFilter = t_champAdcFilter(m_adcDataFilter);
oSettings.Decimation = t_champDecimation(m_adcDataDecimation);
if (champSetSettingsEx(m_handle, &oSettings))
{
if (champSetSettingsEx(m_handle, &oSettings)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set settings - Got error [" << getError() << "]\n";
return false;
}
@@ -239,8 +228,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
// Gets properties
t_champProperty properties;
if (champGetProperty(m_handle, &properties))
{
if (champGetProperty(m_handle, &properties)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not get properties - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -253,8 +241,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
m_nEEG = properties.CountEeg;
m_nAux = (m_useAuxChannels ? properties.CountAux : 0);
m_nChannel = m_nEEG + m_nAux;
if (m_nChannel == 0)
{
if (m_nChannel == 0) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "No channels were selected [EEG: " << m_nEEG << "] [AUX: " << m_nAux <<
"]. Close device.\n";
champClose(m_handle);
@@ -276,8 +263,8 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
getSamplingFrequency() << "]\n";
size_t j = 0;
for (size_t i = 0; i < m_nEEG; i++, j++) { m_resolutions[j] = properties.ResolutionEeg * 1E6f; } // converts to µV
for (size_t i = 0; i < m_nAux; i++, j++) { m_resolutions[j] = properties.ResolutionAux * 1E6f; } // converts to µV
for (size_t i = 0; i < m_nEEG; i++, j++) { m_resolutions[j] = properties.ResolutionEeg * 1E6F; } // converts to µV
for (size_t i = 0; i < m_nAux; i++, j++) { m_resolutions[j] = properties.ResolutionAux * 1E6F; } // converts to µV
//@TODO ue of i & j are normals ?
j = 0;
@@ -286,8 +273,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
// Sets data pointers
// the amplifier model is depending on the number of channels, always including AUX
switch ((m_useAuxChannels ? m_nChannel : m_nChannel + 8))
{
switch ((m_useAuxChannels ? m_nChannel : m_nChannel + 8)) {
case 8: m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Data Model is [AUX]\n";
m_pAux = Buffer[0].ModelAux.Aux;
m_eeg = nullptr; // Buffer[0].ModelAux.Main;
@@ -338,8 +324,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
break;
}
if (m_size == 0)
{
if (m_size == 0) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Unknown device model " << m_nEEG << " EEG channels / " << m_nAux <<
" Auxiliary channels\n";
champClose(m_handle);
@@ -364,10 +349,8 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Setting up the FIR filter for signal decimation (physical rate > driver rate).\n";
bool valid = false;
switch (m_header.getSamplingFrequency())
{
case 128: switch (m_physicalSampling)
{
switch (m_header.getSamplingFrequency()) {
case 128: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_128", "f64_5k_128");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_128", "f64_25k_128");
@@ -378,8 +361,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
break;
case 256: switch (m_physicalSampling)
{
case 256: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_256", "f64_5k_256");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_256", "f64_25k_256");
@@ -390,8 +372,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
break;
case 512: switch (m_physicalSampling)
{
case 512: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_512", "f64_5k_512");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_512", "f64_25k_512");
@@ -402,8 +383,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
break;
case 1024: switch (m_physicalSampling)
{
case 1024: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_1024", "f64_5k_1024");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_1024", "f64_25k_1024");
@@ -414,8 +394,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
break;
case 2048: switch (m_physicalSampling)
{
case 2048: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_2048", "f64_5k_2048");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_2048", "f64_25k_2048");
@@ -426,8 +405,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
break;
case 4096: switch (m_physicalSampling)
{
case 4096: switch (m_physicalSampling) {
case CHAMP_RATE_10KHZ: __set_filter__("f64_10k_4096", "f64_5k_4096");
break;
case CHAMP_RATE_50KHZ: __set_filter__("f64_50k_4096", "f64_25k_4096");
@@ -449,8 +427,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
#undef __set_filter__
if (!valid)
{
if (!valid) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Unhandled soft sampling frequency / physical sampling frequency configuration [" << m_header.
getSamplingFrequency() << ", " << m_physicalSampling << "]\n";
champClose(m_handle);
@@ -470,16 +447,14 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
m_driverCtx.setInnerLatencySampleCount(-m_nDriftOffsetSample);
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Driver inner latency set to 50ms to compensate FIR filtering.\n";
if (m_driverCtx.isImpedanceCheckRequested())
{
if (m_driverCtx.isImpedanceCheckRequested()) {
// Sets settings manually for impedance check
t_champSettingsEx settings;
settings.Mode = CHAMP_MODE_IMPEDANCE;
settings.Rate = CHAMP_RATE_10KHZ;
settings.AdcFilter = CHAMP_ADC_NATIVE;
settings.Decimation = CHAMP_DECIMATION_0;
if (champSetSettingsEx(m_handle, &settings))
{
if (champSetSettingsEx(m_handle, &settings)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set settings - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -493,8 +468,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
setup.Bad = m_badImpedanceLimit; //10000; // 10kOhm
setup.LedsDisable = 0;
setup.TimeOut = 5;
if (champImpedanceSetSetup(m_handle, &setup))
{
if (champImpedanceSetSetup(m_handle, &setup)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set impedance setup - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -505,8 +479,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
// Gets/Sets impedance mode
t_champImpedanceMode mode;
if (champImpedanceGetMode(m_handle, &mode))
{
if (champImpedanceGetMode(m_handle, &mode)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not get impedance mode - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -514,8 +487,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
}
mode.Splitter = mode.Splitters;
if (champImpedanceSetMode(m_handle, &mode))
{
if (champImpedanceSetMode(m_handle, &mode)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set impedance mode - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -524,8 +496,7 @@ bool CDriverBrainProductsActiCHamp::initialize(const uint32_t /*nSamplePerSentBl
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Impedance splitters set to [" << size_t(mode.Splitters) << "]\n";
// Starts impedance check
if (champStart(m_handle))
{
if (champStart(m_handle)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Can not start device id " << m_deviceID << " - Got error [" << getError() << "]\n";
champClose(m_handle);
m_handle = nullptr;
@@ -549,8 +520,7 @@ bool CDriverBrainProductsActiCHamp::start()
settings.Rate = t_champRate(m_physicalSampling);
settings.AdcFilter = t_champAdcFilter(m_adcDataFilter);
settings.Decimation = t_champDecimation(m_adcDataDecimation);
if (champSetSettingsEx(m_handle, &settings))
{
if (champSetSettingsEx(m_handle, &settings)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Could not set settings - Got error [" << getError() << "]\n";
return false;
}
@@ -558,8 +528,7 @@ bool CDriverBrainProductsActiCHamp::start()
m_physicalSampling << "] [ADCDataFilter: " << m_adcDataFilter << "] [ADCDataDecimation: " << m_adcDataDecimation << "]\n";
// Starts acquisition
if (champStart(m_handle))
{
if (champStart(m_handle)) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "Can not start device id " << m_deviceID << " - Got error [" << getError() << "]\n";
return false;
}
@@ -573,8 +542,7 @@ bool CDriverBrainProductsActiCHamp::loop()
{
if (!m_driverCtx.isConnected()) { return false; }
if (m_driverCtx.isStarted())
{
if (m_driverCtx.isStarted()) {
t_champDataStatus dataStatus;
champGetDataStatus(m_handle, &dataStatus);
//m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Status : Samples:" << size_t(l_oDataStatus.Samples) << " Errors:" << size_t(l_oDataStatus.Errors) << " Rate:" << float(l_oDataStatus.Rate) << " Speed:" << float(l_oDataStatus.Speed) << "\n";
@@ -582,12 +550,10 @@ bool CDriverBrainProductsActiCHamp::loop()
// Reads all the data.
// Buffers are aligned : with one call to champGetData we get as much buffers as possible
int code;
while ((code = champGetData(m_handle, &Buffer[0], m_size * NB_MAX_BUFFER_IN_CACHE)) > 0)
{
while ((code = champGetData(m_handle, &Buffer[0], m_size * NB_MAX_BUFFER_IN_CACHE)) > 0) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Debug << "Received " << float(code) / m_size << " new buffers with champGetData.\n";
for (int buf = 0; buf < int(code / m_size); ++buf)
{
for (int buf = 0; buf < int(code / m_size); ++buf) {
uint32_t i, j = 0;
// we find the good pointers (m_eeg and m_pAux being on the first buffer)
@@ -609,20 +575,17 @@ bool CDriverBrainProductsActiCHamp::loop()
// Downsamples and sends samples only when relevant
m_counter += m_counterStep;
if (m_counter >= (1LL << 32))
{
if (m_counter >= (1LL << 32)) {
//m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Enough samples received to build a new buffer. Applying FIR filter.\n";
m_counter -= (1LL << 32);
// Filters last samples
for (i = 0; i < m_samples.size(); ++i)
{
for (i = 0; i < m_samples.size(); ++i) {
m_samples[i] = 0;
auto it = m_sampleCaches.begin();
for (j = 0; j < m_filters.size(); ++j)
{
for (j = 0; j < m_filters.size(); ++j) {
//m_samples[i]+=m_filters[j]*m_sampleCaches[j][i];
m_samples[i] += float(m_filters[j] * (*it)[i]);
m_samples[i] += float(m_filters[j]) * (*it)[i];
++it;
}
}
@@ -652,8 +615,7 @@ bool CDriverBrainProductsActiCHamp::loop()
(*trigger) &= 0x800000ff;
// Now we can test for modification on the interesting part (input triggers and MyButton)
if (*trigger != m_uiLastTriggers)
{
if (*trigger != m_uiLastTriggers) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Trace << "Current input triggers state [";
m_driverCtx.getLogManager() << ((*trigger & 0x00000001)) << " ";
m_driverCtx.getLogManager() << ((*trigger & 0x00000002) >> 1) << " ";
@@ -678,16 +640,14 @@ bool CDriverBrainProductsActiCHamp::loop()
// special case : MyButton
// The MyButton trigger bit is too far in the trigger bytes to have a valid value
// We use 2 dedicated stims OVTK_StimulationId_Button1_Pressed and OVTK_StimulationId_Button1_Released
if (bSwitch)
{
if (bSwitch) {
m_stimSet.push_back((m_bMyButtonstate ? OVTK_StimulationId_Button1_Pressed : OVTK_StimulationId_Button1_Released), date, 0);
}
}
m_uiLastTriggers = *trigger;
}
}
if (code < 0)
{
if (code < 0) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Error << "An error occured with last sample request - Got error [" << code << "]\n";
return false;
}
@@ -698,22 +658,17 @@ bool CDriverBrainProductsActiCHamp::loop()
// Inner latency was set accordingly.
m_driverCtx.correctDriftSampleCount(m_driverCtx.getSuggestedDriftCorrectionSampleCount());
}
else
{
if (m_driverCtx.isImpedanceCheckRequested())
{
else {
if (m_driverCtx.isImpedanceCheckRequested()) {
// Reads impedances
if (champImpedanceGetData(m_handle, &m_impedances[0], m_impedances.size() * sizeof(uint32_t)))
{
if (champImpedanceGetData(m_handle, &m_impedances[0], m_impedances.size() * sizeof(uint32_t))) {
m_driverCtx.getLogManager() << Kernel::LogLevel_Warning << "Can not read impedances on device id " << m_deviceID << " - Got error [" <<
getError() << "]\n";
}
else
{
else {
// Updates impedances
m_driverCtx.getLogManager() << Kernel::LogLevel_Debug << "Impedances are [ ";
for (size_t j = 0; j < m_nEEG; ++j)
{
for (size_t j = 0; j < m_nEEG; ++j) {
m_driverCtx.updateImpedance(j, m_impedances[j]);
m_driverCtx.getLogManager() << m_impedances[j] << " ";
}
Loading