#roomba.cpp
roomba.cpp
#roomba.cpp
roomba.cpp
Quaxton Hale
- 2.6k
- 1
- 36
- 52
Text-Based Simulator in C++/Qt with many commands
Removed excessive indentation; removed [optimization] tag in favor of [design-patterns]
200_success
- 145.5k
- 22
- 190
- 479
#roomba.cpp #include "roomba.h"
/* OpCode Structs */
struct roombaCommand {
QString commandName;
int opCode;
int dataBytes;
};
roombaCommand cmdStart,
cmdBaud,
Roomba::Roomba()
{
setRoombaToDefaultValues();
initRoombaCommands();
}
Roomba::~Roomba()
#include {"roomba.h"
/* OpCode Structs */
struct }roombaCommand {
QString commandName;
QStringint Roomba::getError()opCode;
{int dataBytes;
};
roombaCommand cmdStart,
return roombaErrorMessage; cmdBaud,
Roomba::Roomba()
{
}setRoombaToDefaultValues();
initRoombaCommands();
}
Roomba::~Roomba()
{
}
QString Roomba::getError()
{
return roombaErrorMessage;
}
void Roomba::setError(int32_t error_tmp = 0, QString opcode_tmp = "")
{
roombaErrorNumber = error_tmp;
switch(roombaErrorNumber){
default: roombaErrorMessage =
"An error ocurred, but no error message was specified.";
break;
case 1: roombaErrorMessage =
"An unknown error ocurred.";
break;
case 2: roombaErrorMessage =
"Invalid number op parameters for OpCode \"" + opcode_tmp + "\".";
break;
case 3: roombaErrorMessage =
"Invalid baudcode specified for OpCode \"Baud\". Only the values 0-11 are accepted.";
break;
case 4: roombaErrorMessage =
"Invalid operating mode for opcode \"" + opcode_tmp + "\". OpCode not availabe in " + roombaOperatingMode + " mode.";
break;
}
}
QString Roomba::getMessage()
{
return roombaMessage;
}
}
QString Roomba::getMessage()
{
return roombaMessage;
}
void Roomba::setMessage(int32_t message_tmp = 0, QString parameter_tmp = "")
{
switch(message_tmp){
default: roombaMessage =
"";
break;
case 1: roombaMessage =
"Changed roomba operating mode to \"" + parameter_tmp + "\".";
break;
case 2: roombaMessage =
"Roomba operating mode was already set to \"" + parameter_tmp + "\". Operating mode remains unchanged.";
break;
case 3: roombaMessage =
"Changed roomba baudcode to \"" + parameter_tmp + "\".";
break;
case 4: roombaMessage =
"Roomba baudcode was already set to \"" + parameter_tmp + "\". Baudcode remains unchanged.";
break;
}
}
}
int16_t Roomba::getRoombaBaudCode()
{
int16_treturn roombaBaudCode;
}
void Roomba::getRoombaBaudCodesetRoombaBaudCode(int16_t baudCode)
{
if (baudCode >= 0 && baudCode <= 11)
{
roombaBaudCode return= roombaBaudCode;baudCode;
}
void Roomba::setRoombaBaudCode(int16_t baudCode)else
{
if (baudCode >= 0 && baudCode <= 11)
{
roombaBaudCode = baudCode;
}
else
{
setError(3);
}
}
}
QString Roomba::getRoombaOperatingMode()
{
QStringreturn roombaOperatingMode;
}
void Roomba::getRoombaOperatingModesetRoombaOperatingMode(QString modeName)
{
if ( modeName == "Off"
|| modeName == "Passive"
|| modeName == "Safe"
|| modeName == "Full" )
{
returnRoomba::roombaOperatingMode roombaOperatingMode;= modeName;
}
}
int16_t Roomba::getOpCode()
{
return roombaCurrentOpCodeValue;
}
void Roomba::setRoombaOperatingModesetOpCode(QString modeNamereceivedCommandParameters)
{
QStringList params_temp = receivedCommandParameters.split(",");
int opCode_tmp = params_temp[0].toInt();
switch(opCode_tmp){
if/* Unknown OpCode (-1) */
modeName == "Off" default:
||roombaCurrentOpCodeName modeName= =="Unknown";
"Passive" roombaCurrentOpCodeValue = -1;
||break;
modeName == "Safe" case ROOMBA_START:
||if( modeNameparams_temp.size() == "Full"(cmdStart.dataBytes + 1) )
{
Roomba: opCode_Start();
}
else
{
setError(2, cmdStart.commandName);
}
break;
case ROOMBA_BAUD:roombaOperatingMode = modeName; if( params_temp.size() == (cmdBaud.dataBytes + 1) )
{
opCode_Baud(params_temp[1].toInt());
}
else
{
setError(2, cmdBaud.commandName);
}
break;
}
}
void Roomba::opCode_Start()
{
roombaCurrentOpCodeName = cmdStart.commandName;
int16_troombaCurrentOpCodeValue Roomba::getOpCode= cmdStart.opCode;
if(roombaOperatingMode == "Off")
{
returnsetMessage(1, roombaCurrentOpCodeValue;"Passive");
}
void Roomba::setOpCode(QString receivedCommandParameters)else
{
QStringList params_temp = receivedCommandParameters.split(",");
int opCode_tmp = params_temp[0].toInt();
switch(opCode_tmp){
/* Unknown OpCode (-1) */
default:
roombaCurrentOpCodeName = "Unknown";
roombaCurrentOpCodeValue = -1;
break;
case ROOMBA_START:
if( params_temp.size() == (cmdStart.dataBytes + 1) )
{
opCode_Start();
}
else
{
setError(2, cmdStart.commandName);
}
break;
case ROOMBA_BAUD:
if( params_temp.size() == (cmdBaud.dataBytes + 1) )
{
opCode_Baud(params_temp[1].toInt());
}
else
{
setErrorsetMessage(2, cmdBaud.commandName"Passive");
}
break;
}
}
setRoombaOperatingMode("Passive");
}
void Roomba::opCode_StartopCode_Baud(int16_t baudCode_tmp)
{
if(roombaOperatingMode != "Off")
{
roombaCurrentOpCodeName = cmdStartcmdBaud.commandName;
roombaCurrentOpCodeValue = cmdStartcmdBaud.opCode;
if(roombaOperatingModeroombaBaudCode ==!= "Off"baudCode_tmp)
{
setMessage(13, "Passive"QString::number(baudCode_tmp));
}
else
{
setMessage(24, "Passive"QString::number(baudCode_tmp));
}
setRoombaOperatingModesetRoombaBaudCode("Passive"baudCode_tmp);
}
void Roomba::opCode_Baud(int16_t baudCode_tmp)else
{
if(roombaOperatingMode != "Off")
{
roombaCurrentOpCodeName = cmdBaud.commandName;
roombaCurrentOpCodeValue = cmdBaud.opCode;
if(roombaBaudCode != baudCode_tmp)
{
setMessage(3, QString::number(baudCode_tmp));
}
else
{
setMessage(4, QString::number(baudCode_tmp));
}
setRoombaBaudCode(baudCode_tmp);
}
else
{
setError(4, cmdBaud.commandName);
}
}
void Roomba::initRoombaCommands(){
// Set Commands
cmdStart.commandName = "Start";
cmdStart.opCode = ROOMBA_START;
cmdStart.dataBytes = 0;
cmdBaud.commandName = "Baud";
cmdBaud.opCode = ROOMBA_BAUD;
cmdBaud.dataBytes = 1;
}
void Roomba::setRoombaToDefaultValues(){
// Set Default Values
roombaBaudCode = 11; // Baudrate: 115200 Baud
roombaOperatingMode = "Off"; // Mode: Safe
roombaCurrentOpCodeName = ""; // OpCode: None (Idle)
roombaCurrentOpCodeValue = -1; // OpCode: -1 (None)
roombaErrorNumber = 0; // Error Code 0, no error
roombaMessage = ""; // No Message
}
}
void Roomba::initRoombaCommands(){
// Set Commands
cmdStart.commandName = "Start";
cmdStart.opCode = ROOMBA_START;
cmdStart.dataBytes = 0;
cmdBaud.commandName = "Baud";
cmdBaud.opCode = ROOMBA_BAUD;
cmdBaud.dataBytes = 1;
}
void Roomba::setRoombaToDefaultValues(){
// Set Default Values
roombaBaudCode = 11; // Baudrate: 115200 Baud
roombaOperatingMode = "Off"; // Mode: Safe
roombaCurrentOpCodeName = ""; // OpCode: None (Idle)
roombaCurrentOpCodeValue = -1; // OpCode: -1 (None)
roombaErrorNumber = 0; // Error Code 0, no error
roombaMessage = ""; // No Message
}
Many thanks in advance for any input you offer.
#roomba.cpp #include "roomba.h"
/* OpCode Structs */
struct roombaCommand {
QString commandName;
int opCode;
int dataBytes;
};
roombaCommand cmdStart,
cmdBaud,
Roomba::Roomba()
{
setRoombaToDefaultValues();
initRoombaCommands();
}
Roomba::~Roomba()
{
}
QString Roomba::getError()
{
return roombaErrorMessage;
}
void Roomba::setError(int32_t error_tmp = 0, QString opcode_tmp = "")
{
roombaErrorNumber = error_tmp;
switch(roombaErrorNumber){
default: roombaErrorMessage =
"An error ocurred, but no error message was specified.";
break;
case 1: roombaErrorMessage =
"An unknown error ocurred.";
break;
case 2: roombaErrorMessage =
"Invalid number op parameters for OpCode \"" + opcode_tmp + "\".";
break;
case 3: roombaErrorMessage =
"Invalid baudcode specified for OpCode \"Baud\". Only the values 0-11 are accepted.";
break;
case 4: roombaErrorMessage =
"Invalid operating mode for opcode \"" + opcode_tmp + "\". OpCode not availabe in " + roombaOperatingMode + " mode.";
break;
}
}
QString Roomba::getMessage()
{
return roombaMessage;
}
void Roomba::setMessage(int32_t message_tmp = 0, QString parameter_tmp = "")
{
switch(message_tmp){
default: roombaMessage =
"";
break;
case 1: roombaMessage =
"Changed roomba operating mode to \"" + parameter_tmp + "\".";
break;
case 2: roombaMessage =
"Roomba operating mode was already set to \"" + parameter_tmp + "\". Operating mode remains unchanged.";
break;
case 3: roombaMessage =
"Changed roomba baudcode to \"" + parameter_tmp + "\".";
break;
case 4: roombaMessage =
"Roomba baudcode was already set to \"" + parameter_tmp + "\". Baudcode remains unchanged.";
break;
}
}
int16_t Roomba::getRoombaBaudCode()
{
return roombaBaudCode;
}
void Roomba::setRoombaBaudCode(int16_t baudCode)
{
if (baudCode >= 0 && baudCode <= 11)
{
roombaBaudCode = baudCode;
}
else
{
setError(3);
}
}
QString Roomba::getRoombaOperatingMode()
{
return roombaOperatingMode;
}
void Roomba::setRoombaOperatingMode(QString modeName)
{
if ( modeName == "Off"
|| modeName == "Passive"
|| modeName == "Safe"
|| modeName == "Full" )
{
Roomba::roombaOperatingMode = modeName;
}
}
int16_t Roomba::getOpCode()
{
return roombaCurrentOpCodeValue;
}
void Roomba::setOpCode(QString receivedCommandParameters)
{
QStringList params_temp = receivedCommandParameters.split(",");
int opCode_tmp = params_temp[0].toInt();
switch(opCode_tmp){
/* Unknown OpCode (-1) */
default:
roombaCurrentOpCodeName = "Unknown";
roombaCurrentOpCodeValue = -1;
break;
case ROOMBA_START:
if( params_temp.size() == (cmdStart.dataBytes + 1) )
{
opCode_Start();
}
else
{
setError(2, cmdStart.commandName);
}
break;
case ROOMBA_BAUD:
if( params_temp.size() == (cmdBaud.dataBytes + 1) )
{
opCode_Baud(params_temp[1].toInt());
}
else
{
setError(2, cmdBaud.commandName);
}
break;
}
}
void Roomba::opCode_Start()
{
roombaCurrentOpCodeName = cmdStart.commandName;
roombaCurrentOpCodeValue = cmdStart.opCode;
if(roombaOperatingMode == "Off")
{
setMessage(1, "Passive");
}
else
{
setMessage(2, "Passive");
}
setRoombaOperatingMode("Passive");
}
void Roomba::opCode_Baud(int16_t baudCode_tmp)
{
if(roombaOperatingMode != "Off")
{
roombaCurrentOpCodeName = cmdBaud.commandName;
roombaCurrentOpCodeValue = cmdBaud.opCode;
if(roombaBaudCode != baudCode_tmp)
{
setMessage(3, QString::number(baudCode_tmp));
}
else
{
setMessage(4, QString::number(baudCode_tmp));
}
setRoombaBaudCode(baudCode_tmp);
}
else
{
setError(4, cmdBaud.commandName);
}
}
void Roomba::initRoombaCommands(){
// Set Commands
cmdStart.commandName = "Start";
cmdStart.opCode = ROOMBA_START;
cmdStart.dataBytes = 0;
cmdBaud.commandName = "Baud";
cmdBaud.opCode = ROOMBA_BAUD;
cmdBaud.dataBytes = 1;
}
void Roomba::setRoombaToDefaultValues(){
// Set Default Values
roombaBaudCode = 11; // Baudrate: 115200 Baud
roombaOperatingMode = "Off"; // Mode: Safe
roombaCurrentOpCodeName = ""; // OpCode: None (Idle)
roombaCurrentOpCodeValue = -1; // OpCode: -1 (None)
roombaErrorNumber = 0; // Error Code 0, no error
roombaMessage = ""; // No Message
}
Many thanks in advance for any input you offer.
#roomba.cpp
#include "roomba.h"
/* OpCode Structs */
struct roombaCommand {
QString commandName;
int opCode;
int dataBytes;
};
roombaCommand cmdStart,
cmdBaud,
Roomba::Roomba()
{
setRoombaToDefaultValues();
initRoombaCommands();
}
Roomba::~Roomba()
{
}
QString Roomba::getError()
{
return roombaErrorMessage;
}
void Roomba::setError(int32_t error_tmp = 0, QString opcode_tmp = "")
{
roombaErrorNumber = error_tmp;
switch(roombaErrorNumber){
default: roombaErrorMessage =
"An error ocurred, but no error message was specified.";
break;
case 1: roombaErrorMessage =
"An unknown error ocurred.";
break;
case 2: roombaErrorMessage =
"Invalid number op parameters for OpCode \"" + opcode_tmp + "\".";
break;
case 3: roombaErrorMessage =
"Invalid baudcode specified for OpCode \"Baud\". Only the values 0-11 are accepted.";
break;
case 4: roombaErrorMessage =
"Invalid operating mode for opcode \"" + opcode_tmp + "\". OpCode not availabe in " + roombaOperatingMode + " mode.";
break;
}
}
QString Roomba::getMessage()
{
return roombaMessage;
}
void Roomba::setMessage(int32_t message_tmp = 0, QString parameter_tmp = "")
{
switch(message_tmp){
default: roombaMessage =
"";
break;
case 1: roombaMessage =
"Changed roomba operating mode to \"" + parameter_tmp + "\".";
break;
case 2: roombaMessage =
"Roomba operating mode was already set to \"" + parameter_tmp + "\". Operating mode remains unchanged.";
break;
case 3: roombaMessage =
"Changed roomba baudcode to \"" + parameter_tmp + "\".";
break;
case 4: roombaMessage =
"Roomba baudcode was already set to \"" + parameter_tmp + "\". Baudcode remains unchanged.";
break;
}
}
int16_t Roomba::getRoombaBaudCode()
{
return roombaBaudCode;
}
void Roomba::setRoombaBaudCode(int16_t baudCode)
{
if (baudCode >= 0 && baudCode <= 11)
{
roombaBaudCode = baudCode;
}
else
{
setError(3);
}
}
QString Roomba::getRoombaOperatingMode()
{
return roombaOperatingMode;
}
void Roomba::setRoombaOperatingMode(QString modeName)
{
if ( modeName == "Off"
|| modeName == "Passive"
|| modeName == "Safe"
|| modeName == "Full" )
{
Roomba::roombaOperatingMode = modeName;
}
}
int16_t Roomba::getOpCode()
{
return roombaCurrentOpCodeValue;
}
void Roomba::setOpCode(QString receivedCommandParameters)
{
QStringList params_temp = receivedCommandParameters.split(",");
int opCode_tmp = params_temp[0].toInt();
switch(opCode_tmp){
/* Unknown OpCode (-1) */
default:
roombaCurrentOpCodeName = "Unknown";
roombaCurrentOpCodeValue = -1;
break;
case ROOMBA_START:
if( params_temp.size() == (cmdStart.dataBytes + 1) )
{
opCode_Start();
}
else
{
setError(2, cmdStart.commandName);
}
break;
case ROOMBA_BAUD: if( params_temp.size() == (cmdBaud.dataBytes + 1) )
{
opCode_Baud(params_temp[1].toInt());
}
else
{
setError(2, cmdBaud.commandName);
}
break;
}
}
void Roomba::opCode_Start()
{
roombaCurrentOpCodeName = cmdStart.commandName;
roombaCurrentOpCodeValue = cmdStart.opCode;
if(roombaOperatingMode == "Off")
{
setMessage(1, "Passive");
}
else
{
setMessage(2, "Passive");
}
setRoombaOperatingMode("Passive");
}
void Roomba::opCode_Baud(int16_t baudCode_tmp)
{
if(roombaOperatingMode != "Off")
{
roombaCurrentOpCodeName = cmdBaud.commandName;
roombaCurrentOpCodeValue = cmdBaud.opCode;
if(roombaBaudCode != baudCode_tmp)
{
setMessage(3, QString::number(baudCode_tmp));
}
else
{
setMessage(4, QString::number(baudCode_tmp));
}
setRoombaBaudCode(baudCode_tmp);
}
else
{
setError(4, cmdBaud.commandName);
}
}
void Roomba::initRoombaCommands(){
// Set Commands
cmdStart.commandName = "Start";
cmdStart.opCode = ROOMBA_START;
cmdStart.dataBytes = 0;
cmdBaud.commandName = "Baud";
cmdBaud.opCode = ROOMBA_BAUD;
cmdBaud.dataBytes = 1;
}
void Roomba::setRoombaToDefaultValues(){
// Set Default Values
roombaBaudCode = 11; // Baudrate: 115200 Baud
roombaOperatingMode = "Off"; // Mode: Safe
roombaCurrentOpCodeName = ""; // OpCode: None (Idle)
roombaCurrentOpCodeValue = -1; // OpCode: -1 (None)
roombaErrorNumber = 0; // Error Code 0, no error
roombaMessage = ""; // No Message
}
lang-cpp