mirror of https://github.com/EspoTek/Labrador.git
241 lines
5.6 KiB
C++
241 lines
5.6 KiB
C++
#include "buffercontrol.h"
|
|
|
|
bufferControl::bufferControl(QWidget *parent) : QLabel(parent)
|
|
{
|
|
//refreshImage();
|
|
}
|
|
|
|
void bufferControl::refreshImage(void){
|
|
//qDebug() << "Trying to show bitmap " << numBuffers;
|
|
|
|
switch(numBuffers){
|
|
case 0:
|
|
bufferImage = QPixmap(":/bitmap/buffer_0.bmp");
|
|
break;
|
|
case 1:
|
|
bufferImage = QPixmap(":/bitmap/buffer_1.bmp");
|
|
break;
|
|
case 2:
|
|
bufferImage = QPixmap(":/bitmap/buffer_2.bmp");
|
|
break;
|
|
}
|
|
|
|
if(bufferImage.isNull()) qFatal("Resource not found\n");
|
|
|
|
this->setPixmap(bufferImage);
|
|
//qDebug() << this->text();
|
|
this->show();
|
|
return;
|
|
}
|
|
|
|
void bufferControl::scopeIn_CH1(bool state){ //What about DSR!?
|
|
scopeState_CH1 = state;
|
|
|
|
if (scopeState_CH2){ //Implicitly state is false
|
|
scopeState_CH2 = false;
|
|
//updateBuffer(0); - Causes issues because the uncheck below called scopeIn_CH2 (but only when toggle)!!!
|
|
scopeUncheck(0);
|
|
}
|
|
|
|
scopeDsrOut(state);
|
|
scopeOut_CH2(state);
|
|
|
|
updateBuffer(state,1); // Do this last to ensure anything accidentally enabled is immediately switched off
|
|
qDebug() << "scopeIn_CH1" << state;
|
|
updateMode();
|
|
}
|
|
|
|
void bufferControl::scopeIn_CH2(bool state){
|
|
scopeState_CH2 = state;
|
|
|
|
updateBuffer(state,1);
|
|
qDebug() << "scopeIn_CH2" << state;
|
|
updateMode();
|
|
}
|
|
|
|
void bufferControl::scopeDsrIn(bool state){
|
|
scopeDsrState = state;
|
|
|
|
updateBuffer(state,1);
|
|
qDebug() << "scopeDsrIn" << state;
|
|
updateMode();
|
|
}
|
|
|
|
/*void bufferControl::signalGenIn(bool state){
|
|
signalGenState = state;
|
|
|
|
updateBuffer(state,1);
|
|
qDebug() << "signalGenIn" << state;
|
|
updateMode();
|
|
}*/
|
|
|
|
void bufferControl::busSnifferIn_CH1(bool state){
|
|
busSnifferState_CH1 = state;
|
|
|
|
if (busSnifferState_CH2){ //Implicitly state is false
|
|
busSnifferState_CH2 = false;
|
|
//updateBuffer(0); - Causes issues because the uncheck below called scopeIn_CH2 (but only when toggle)!!!
|
|
busSnifferUncheck(0);
|
|
}
|
|
|
|
busSnifferOut_CH2(state);
|
|
|
|
updateBuffer(state,1);
|
|
qDebug() << "busSnifferIn_CH1" << state;
|
|
updateMode();
|
|
}
|
|
|
|
void bufferControl::busSnifferIn_CH2(bool state){
|
|
busSnifferState_CH2 = state;
|
|
|
|
updateBuffer(state,1);
|
|
qDebug() << "busSnifferIn_CH2" << state;
|
|
updateMode();
|
|
}
|
|
|
|
void bufferControl::multimeterIn(bool state){
|
|
multimeterState = state;
|
|
|
|
updateBuffer(state,2);
|
|
qDebug() << "multimeterIn" << state;
|
|
updateMode();
|
|
}
|
|
|
|
|
|
|
|
void bufferControl::updateBuffer(bool decrement, int amount){
|
|
if(decrement){
|
|
numBuffers-=amount;
|
|
}
|
|
else{
|
|
numBuffers+=amount;
|
|
}
|
|
refreshImage();
|
|
|
|
//Write new state
|
|
switch(numBuffers){
|
|
case 0:
|
|
if(scopeState_CH1 == false) scopeOut_CH1(0);
|
|
if(scopeState_CH2 == false) scopeOut_CH2(0);
|
|
if(scopeDsrState == false) scopeDsrOut(0);
|
|
//if(signalGenState == false) signalGenOut(0);
|
|
if(busSnifferState_CH1 == false) busSnifferOut_CH1(0);
|
|
if(busSnifferState_CH2 == false) busSnifferOut_CH2(0);
|
|
if(multimeterState == false) multimeterOut(0);
|
|
break;
|
|
case 1:
|
|
scopeOut_CH1(1);
|
|
if(scopeState_CH1 == true){
|
|
scopeDsrOut(1);
|
|
scopeOut_CH2(1);
|
|
}
|
|
//signalGenOut(1);
|
|
busSnifferOut_CH1(1);
|
|
if(busSnifferState_CH1 == true){
|
|
busSnifferOut_CH2(1);
|
|
}
|
|
|
|
//busSnifferOut_CH2(1);
|
|
multimeterOut(0);
|
|
break;
|
|
case 2:
|
|
scopeOut_CH1(1);
|
|
//scopeOut_CH2(1);
|
|
if(scopeState_CH1 == true) scopeDsrOut(1);
|
|
//signalGenOut(1);
|
|
busSnifferOut_CH1(1);
|
|
//busSnifferOut_CH2(1);
|
|
multimeterOut(1);
|
|
break;
|
|
default:
|
|
qFatal("numBuffers is not equal to 0, 1 or 2");
|
|
}
|
|
|
|
}
|
|
|
|
void bufferControl::digIn_CH1(bool state){
|
|
unsigned char mask = 0x01;
|
|
if(state){
|
|
digState |= mask;
|
|
}
|
|
else{
|
|
digState &= (unsigned char) 0xff - mask;
|
|
}
|
|
updateDig(digState);
|
|
}
|
|
|
|
void bufferControl::digIn_CH2(bool state){
|
|
unsigned char mask = 0x02;
|
|
if(state){
|
|
digState |= mask;
|
|
}
|
|
else{
|
|
digState &= (unsigned char) 0xff - mask;
|
|
} updateDig(digState);
|
|
}
|
|
|
|
void bufferControl::digIn_CH3(bool state){
|
|
unsigned char mask = 0x04;
|
|
if(state){
|
|
digState |= mask;
|
|
}
|
|
else{
|
|
digState &= (unsigned char) 0xff - mask;
|
|
} updateDig(digState);
|
|
}
|
|
|
|
void bufferControl::digIn_CH4(bool state){
|
|
unsigned char mask = 0x08;
|
|
if(state){
|
|
digState |= mask;
|
|
}
|
|
else{
|
|
digState &= (unsigned char) 0xff - mask;
|
|
} updateDig(digState);
|
|
}
|
|
|
|
void bufferControl::updateMode(void){
|
|
if(multimeterState){
|
|
modeChange(7);
|
|
qDebug() << "Changed to mode 7";
|
|
return;
|
|
}
|
|
if(scopeDsrState){
|
|
modeChange(6);
|
|
qDebug() << "Changed to mode 6";
|
|
return;
|
|
}
|
|
|
|
if (busSnifferState_CH2){
|
|
modeChange(4);
|
|
qDebug() << "Changed to mode 4";
|
|
return;
|
|
}
|
|
if(busSnifferState_CH1 && scopeState_CH1){
|
|
modeChange(1);
|
|
qDebug() << "Changed to mode 1";
|
|
return;
|
|
}
|
|
if (scopeState_CH2){
|
|
modeChange(2);
|
|
qDebug() << "Changed to mode 2";
|
|
return;
|
|
}
|
|
if(busSnifferState_CH1){
|
|
modeChange(3);
|
|
qDebug() << "Changed to mode 3";
|
|
return;
|
|
}
|
|
if(scopeState_CH1){
|
|
modeChange(0);
|
|
qDebug() << "Changed to mode 0";
|
|
return;
|
|
}
|
|
|
|
modeChange(5);
|
|
qDebug() << "Changed to mode 5";
|
|
return;
|
|
|
|
}
|
|
|