From 26c29e1d4ed8cb228e6c46716393ee17db804ce2 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 31 Jul 2018 12:54:08 -0400 Subject: [PATCH] 2018-07-31 Fred Gleason * Refactored 'RDMacro' to handle UTF-8 strings correctly. --- ChangeLog | 2 + lib/rdconfig.cpp | 56 ++--- lib/rdlogplay.cpp | 3 +- lib/rdmacro.cpp | 384 ++++++++++++++++------------------- lib/rdmacro.h | 25 ++- lib/rdmacro_event.cpp | 145 ++++++------- lib/rdmacro_event.h | 2 +- lib/rdripc.cpp | 34 ++-- lib/rdsound_panel.cpp | 3 +- rdadmin/edit_ttys.cpp | 5 +- rdadmin/list_gpis.cpp | 21 +- rdadmin/list_matrices.cpp | 3 +- rdairplay/local_macros.cpp | 36 ++-- rdairplay/rdairplay.cpp | 18 +- rdcatchd/rdcatchd.cpp | 34 ++-- rdlibrary/edit_macro.cpp | 7 +- rdlibrary/macro_cart.cpp | 8 +- rdvairplayd/local_macros.cpp | 10 +- rdvairplayd/rdvairplayd.cpp | 17 +- ripcd/acu1p.cpp | 20 +- ripcd/bt16x2.cpp | 20 +- ripcd/btacs82.cpp | 20 +- ripcd/btadms4422.cpp | 20 +- ripcd/btsrc16.cpp | 20 +- ripcd/btsrc8iii.cpp | 20 +- ripcd/btss164.cpp | 20 +- ripcd/btss42.cpp | 20 +- ripcd/btss44.cpp | 20 +- ripcd/btss82.cpp | 20 +- ripcd/harlond.cpp | 2 +- ripcd/kernelgpio.cpp | 8 +- ripcd/livewire_lwrpgpio.cpp | 12 +- ripcd/livewire_mcastgpio.cpp | 8 +- ripcd/local_gpio.cpp | 8 +- ripcd/local_macros.cpp | 134 +++++++++--- ripcd/modbus.cpp | 14 +- ripcd/modemlines.cpp | 8 +- ripcd/ripcd.cpp | 88 ++++---- ripcd/ripcd.h | 2 +- ripcd/sas64000gpi.cpp | 2 +- ripcd/sasusi.cpp | 9 +- ripcd/swauthority.cpp | 9 +- ripcd/switcher.cpp | 3 +- ripcd/vguest.cpp | 7 +- ripcd/wheatnet_lio.cpp | 14 +- ripcd/wheatnet_slio.cpp | 14 +- utils/sas_shim/sas_shim.cpp | 7 +- 47 files changed, 676 insertions(+), 686 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1d2bbb29..b8cf973f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17287,3 +17287,5 @@ * Fixed bugs in 'RDCmdSwitch' that caused corruption in UTF-8 strings. * Refactored rmlsend(1) to handle UTF-8 strings correctly. +2018-07-31 Fred Gleason + * Refactored 'RDMacro' to handle UTF-8 strings correctly. diff --git a/lib/rdconfig.cpp b/lib/rdconfig.cpp index a2cf4734..9ea72373 100644 --- a/lib/rdconfig.cpp +++ b/lib/rdconfig.cpp @@ -243,36 +243,36 @@ void RDConfig::log(const QString &module,LogPriority prio,const QString &msg) FILE *f=NULL; switch(conf_log_facility) { - case RDConfig::LogSyslog: - syslog((int)prio,"%s",(const char *)msg); - break; + case RDConfig::LogSyslog: + syslog((int)prio,"%s",(const char *)msg.utf8()); + break; - case RDConfig::LogFile: - if(conf_log_directory.isEmpty()||conf_log_pattern.isEmpty()) { - return; - } - filename=QString().sprintf("%s/%s",(const char *)conf_log_directory, - (const char *)conf_log_pattern); - dt=QDateTime(QDate::currentDate(),QTime::currentTime()); - filename.replace("%n",module); - filename.replace("%d",dt.date().toString("dd")); - filename.replace("%M",dt.date().toString("MM")); - filename.replace("%Y",dt.date().toString("yyyy")); - filename.replace("%h",dt.time().toString("hh")); - filename.replace("%m",dt.time().toString("mm")); - filename.replace("%s",dt.time().toString("ss")); - if((f=fopen(filename,"a"))!=NULL) { - fprintf(f,"%s: %s\n",(const char *)dt. - toString("dd/MM/yyyy - hh:mm:ss.zzz "), - (const char *)msg); - fclose(f); - } - chmod(filename,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH); - chown(filename,uid(),gid()); - break; + case RDConfig::LogFile: + if(conf_log_directory.isEmpty()||conf_log_pattern.isEmpty()) { + return; + } + filename=QString().sprintf("%s/%s",(const char *)conf_log_directory, + (const char *)conf_log_pattern); + dt=QDateTime(QDate::currentDate(),QTime::currentTime()); + filename.replace("%n",module); + filename.replace("%d",dt.date().toString("dd")); + filename.replace("%M",dt.date().toString("MM")); + filename.replace("%Y",dt.date().toString("yyyy")); + filename.replace("%h",dt.time().toString("hh")); + filename.replace("%m",dt.time().toString("mm")); + filename.replace("%s",dt.time().toString("ss")); + if((f=fopen(filename,"a"))!=NULL) { + fprintf(f,"%s: %s\n",(const char *)dt. + toString("dd/MM/yyyy - hh:mm:ss.zzz "), + (const char *)msg); + fclose(f); + } + chmod(filename,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH); + chown(filename,uid(),gid()); + break; - case RDConfig::LogNone: - break; + case RDConfig::LogNone: + break; } #endif // WIN32 } diff --git a/lib/rdlogplay.cpp b/lib/rdlogplay.cpp index 82602f63..2202dcc4 100644 --- a/lib/rdlogplay.cpp +++ b/lib/rdlogplay.cpp @@ -1981,8 +1981,7 @@ bool RDLogPlay::StartEvent(int line,RDLogLine::TransType trans_type, rml->setAddress(addr); rml->setRole(RDMacro::Cmd); rml->setEchoRequested(false); - rml->setArgQuantity(1); - rml->setArg(0,logline->cartNumber()); + rml->addArg(logline->cartNumber()); // Arg 0 rda->ripc()->sendRml(rml); delete rml; emit played(line); diff --git a/lib/rdmacro.cpp b/lib/rdmacro.cpp index 5e991711..2a404bff 100644 --- a/lib/rdmacro.cpp +++ b/lib/rdmacro.cpp @@ -2,7 +2,7 @@ // // A container class for a Rivendell Macro Language Command // -// (C) Copyright 2002-2004,2016 Fred Gleason +// (C) Copyright 2002-2018 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -19,8 +19,9 @@ // #include +#include -#include +#include "rdmacro.h" RDMacro::RDMacro() { @@ -88,259 +89,214 @@ void RDMacro::setEchoRequested(bool state) } -QVariant RDMacro::arg(int n) const +QString RDMacro::arg(int n) const { - if(n>=RD_RML_MAX_ARGS) { - return QVariant(); - } - return rml_arg[n]; + return rml_args[n]; } -void RDMacro::setArg(int n,QVariant arg) +int RDMacro::addArg(const QString &arg) { - if(n>=RD_RML_MAX_ARGS) { - return; - } - rml_arg[n]=arg; + rml_args.push_back(arg); + return rml_args.size()-1; +} + + +int RDMacro::addArg(int arg) +{ + rml_args.push_back(QString().sprintf("%d",arg)); + return rml_args.size()-1; +} + + +int RDMacro::addArg(unsigned arg) +{ + rml_args.push_back(QString().sprintf("%u",arg)); + return rml_args.size()-1; +} + + +void RDMacro::setArg(int n,const QString &arg) +{ + rml_args[n]=arg; +} + + +void RDMacro::setArg(int n,int arg) +{ + rml_args[n]=QString().sprintf("%d",arg); +} + + +void RDMacro::setArg(int n,unsigned arg) +{ + rml_args[n]=QString().sprintf("%u",arg); } int RDMacro::argQuantity() const { - return rml_arg_quantity; + return rml_args.size(); } void RDMacro::acknowledge(bool state) { rml_role=RDMacro::Reply; - if(rml_arg_quantity>8); + ret+=+QChar(0xFF&((uint16_t)rml_cmd)); + ret+=" "; + ret+=rml_args.join(" "); + ret+="!"; - if(n<3) { - return false; - } - - // - // Command Mneumonic - // - rml_cmd=(RDMacro::Command)((str[0]<<8)+str[1]); - switch(rml_cmd) { - case RDMacro::AG: - case RDMacro::AL: - case RDMacro::BO: - case RDMacro::CC: - case RDMacro::CE: - case RDMacro::CL: - case RDMacro::CP: - case RDMacro::DB: - case RDMacro::DL: - case RDMacro::DP: - case RDMacro::DS: - case RDMacro::DX: - case RDMacro::EX: - case RDMacro::FS: - case RDMacro::GE: - case RDMacro::GI: - case RDMacro::GO: - case RDMacro::JC: - case RDMacro::JD: - case RDMacro::LB: - case RDMacro::LC: - case RDMacro::LL: - case RDMacro::LO: - case RDMacro::MB: - case RDMacro::MD: - case RDMacro::MN: - case RDMacro::MT: - case RDMacro::NN: - case RDMacro::PB: - case RDMacro::PC: - case RDMacro::PE: - case RDMacro::PL: - case RDMacro::PM: - case RDMacro::PN: - case RDMacro::PP: - case RDMacro::PS: - case RDMacro::PT: - case RDMacro::PU: - case RDMacro::PW: - case RDMacro::PX: - case RDMacro::RL: - case RDMacro::RS: - case RDMacro::RR: - case RDMacro::RN: - case RDMacro::SN: - case RDMacro::ST: - case RDMacro::SA: - case RDMacro::SC: - case RDMacro::SD: - case RDMacro::SG: - case RDMacro::SI: - case RDMacro::SO: - case RDMacro::SP: - case RDMacro::SR: - case RDMacro::SL: - case RDMacro::SX: - case RDMacro::SY: - case RDMacro::SZ: - case RDMacro::TA: - case RDMacro::UO: - case RDMacro::PD: - break; - - default: - return false; - } - if(str[2]=='!') { - rml_arg_quantity=0; - return true; - } - if(!isblank(str[2])) { - rml_arg_quantity=0; - rml_cmd=RDMacro::NN; - return false; - } - - // - // Arguments - // - for(int i=3;i=RD_RML_MAX_ARGS)||(argptr>=RD_RML_MAX_LENGTH)) { - rml_arg_quantity=0; - rml_cmd=RDMacro::NN; - for(int j=0;j=n) { - return -1; - } - sprintf(str,"%c%c",rml_cmd>>8,rml_cmd&0xFF); - for(int i=0;i +// (C) Copyright 2002-2018 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -21,8 +21,11 @@ #ifndef RDMACRO_H #define RDMACRO_H -#include +#include + #include +#include +#include #include #include @@ -58,16 +61,21 @@ class RDMacro void setPort(Q_UINT16 port); bool echoRequested() const; void setEchoRequested(bool state); - QVariant arg(int n) const; - void setArg(int n,QVariant arg); + QString arg(int n) const; + int addArg(const QString &arg); + int addArg(int arg); + int addArg(unsigned arg); + void setArg(int n,const QString &arg); + void setArg(int n,int arg); + void setArg(int n,unsigned arg); int argQuantity() const; - void setArgQuantity(int n); void acknowledge(bool state); QString rollupArgs(int n); - bool parseString(const char *str,int n); - int generateString(char *str,int n) const; + QString toString() const; unsigned length() const; + bool isNull() const; void clear(); + static RDMacro fromString(const QString &str,Role role=RDMacro::Cmd); private: RDMacro::Role rml_role; @@ -75,8 +83,7 @@ class RDMacro QHostAddress rml_addr; Q_UINT16 rml_port; bool rml_echo_requested; - QVariant rml_arg[RD_RML_MAX_ARGS]; - int rml_arg_quantity; + QStringList rml_args; }; diff --git a/lib/rdmacro_event.cpp b/lib/rdmacro_event.cpp index 9ac0cac8..48bf1480 100644 --- a/lib/rdmacro_event.cpp +++ b/lib/rdmacro_event.cpp @@ -108,29 +108,24 @@ unsigned RDMacroEvent::length() const } -bool RDMacroEvent::load(QString str) +bool RDMacroEvent::load(const QString &str) { - char buffer[RD_RML_MAX_LENGTH]; RDMacro cmd; - int ptr=0; - char c; + QString rmlstr=""; for(unsigned i=0;igenerateString(buffer,RD_RML_MAX_LENGTH-1); - str+=QString(buffer); + str+=event_cmds[i]->toString(); } return str; } @@ -235,64 +228,61 @@ void RDMacroEvent::exec(int line) RDMacro::Command cmd; emit started(line); switch(event_cmds[line]->command()) { - case RDMacro::SP: // Sleep - event_sleeping_line=line; - event_sleep_timer->start(event_cmds[line]->arg(0).toInt(),true); - break; + case RDMacro::SP: // Sleep + event_sleeping_line=line; + event_sleep_timer->start(event_cmds[line]->arg(0).toInt(),true); + break; - case RDMacro::CC: // Send Command - args=args.split(":",event_cmds[line]->arg(0).toString()); - stationname=args[0]; - if(args.size()==2) { - port=args[1].toUInt(); - } - if(stationname.lower()=="localhost") { - addr.setAddress("127.0.0.2"); - rml.setAddress(addr); - } - else { - sql=QString("select VARVALUE from HOSTVARS where ")+ - "(STATION_NAME=\""+RDEscapeString(event_ripc->station())+"\")&&"+ - "(NAME=\""+RDEscapeString(stationname)+"\")"; - q=new RDSqlQuery(sql); - if(q->first()) { - stationname=q->value(0).toString(); - } - delete q; - station=new RDStation(stationname); - if(station->exists()) { - rml.setAddress(station->address()); - } - else { - addr.setAddress(stationname); - if(addr.isNull()) { - emit finished(line); - delete station; - return; - } - rml.setAddress(addr); - } + case RDMacro::CC: // Send Command + args=args.split(":",event_cmds[line]->arg(0)); + stationname=args[0]; + if(args.size()==2) { + port=args[1].toUInt(); + } + if(stationname.lower()=="localhost") { + addr.setAddress("127.0.0.2"); + rml.setAddress(addr); + } + else { + sql=QString("select VARVALUE from HOSTVARS where ")+ + "(STATION_NAME=\""+RDEscapeString(event_ripc->station())+"\")&&"+ + "(NAME=\""+RDEscapeString(stationname)+"\")"; + q=new RDSqlQuery(sql); + if(q->first()) { + stationname=q->value(0).toString(); + } + delete q; + station=new RDStation(stationname); + if(station->exists()) { + rml.setAddress(station->address()); + } + else { + addr.setAddress(stationname); + if(addr.isNull()) { + emit finished(line); delete station; + return; } - rml.setArgQuantity(event_cmds[line]->argQuantity()-2); - cmd= - (RDMacro::Command)(256*event_cmds[line]->arg(1).toString().ascii()[0]+ - event_cmds[line]->arg(1).toString().ascii()[1]); - rml.setCommand(cmd); - for(int i=0;iarg(i+2)); - } - rml.setRole(RDMacro::Cmd); - rml.setPort(port); - rml.setEchoRequested(event_cmds[line]->echoRequested()); - event_ripc->sendRml(&rml); - emit finished(line); - break; + rml.setAddress(addr); + } + delete station; + } + cmd=event_cmds[line]->command(); + rml.setCommand(cmd); + for(int i=0;iarg(i+2)); + } + rml.setRole(RDMacro::Cmd); + rml.setPort(port); + rml.setEchoRequested(event_cmds[line]->echoRequested()); + event_ripc->sendRml(&rml); + emit finished(line); + break; - default: - event_ripc->sendRml(event_cmds[line]); - emit finished(line); - break; + default: + event_ripc->sendRml(event_cmds[line]); + emit finished(line); + break; } } @@ -328,14 +318,13 @@ void RDMacroEvent::ExecList(int line) } for(unsigned i=line;icommand()) { - case RDMacro::SP: // Sleep - exec(i); - return; - break; + case RDMacro::SP: // Sleep + exec(i); + return; - default: - exec(i); - break; + default: + exec(i); + break; } } event_whole_list=false; diff --git a/lib/rdmacro_event.h b/lib/rdmacro_event.h index c03d3f7f..f19a08fd 100644 --- a/lib/rdmacro_event.h +++ b/lib/rdmacro_event.h @@ -46,7 +46,7 @@ class RDMacroEvent : public QObject RDMacro *command(int line); int size() const; unsigned length() const; - bool load(QString str); + bool load(const QString &str); bool load(unsigned cartnum); QString save(); void insert(int line,const RDMacro *cmd); diff --git a/lib/rdripc.cpp b/lib/rdripc.cpp index 167d0e74..f33377d4 100644 --- a/lib/rdripc.cpp +++ b/lib/rdripc.cpp @@ -153,8 +153,8 @@ void RDRipc::sendOnairFlag() void RDRipc::sendRml(RDMacro *macro) { - char buffer[RD_RML_MAX_LENGTH]; - char cmd[RD_RML_MAX_LENGTH+4]; + // char buffer[RD_RML_MAX_LENGTH]; + QString cmd; Q_UINT16 port=RD_RML_NOECHO_PORT; QDateTime now=QDateTime::currentDateTime(); @@ -164,8 +164,7 @@ void RDRipc::sendRml(RDMacro *macro) if(macro->port()>0) { port=macro->port(); } - macro->generateString(buffer,RD_RML_MAX_LENGTH-1); - QString rmlline(buffer); + QString rmlline=macro->toString(); QString sql=QString("select NAME,VARVALUE from HOSTVARS where ")+ "STATION_NAME=\""+RDEscapeString(ripc_station->name())+"\""; RDSqlQuery *q=new RDSqlQuery(sql); @@ -175,18 +174,18 @@ void RDRipc::sendRml(RDMacro *macro) delete q; rmlline=RDDateTimeDecode(rmlline,now,ripc_station,ripc_config); switch(macro->role()) { - case RDMacro::Cmd: - sprintf(cmd,"MS %s %d %s",(const char *)macro->address().toString(), - port,(const char *)rmlline.utf8()); - break; + case RDMacro::Cmd: + cmd=QString("MS ")+macro->address().toString()+ + QString().sprintf(" %d ",port)+rmlline; + break; - case RDMacro::Reply: - sprintf(cmd,"ME %s %d %s",(const char *)macro->address().toString(), - port,(const char *)rmlline.utf8()); - break; + case RDMacro::Reply: + cmd=QString("ME ")+macro->address().toString()+ + QString().sprintf(" %d ",port)+rmlline; + break; - default: - break; + default: + break; } SendCommand(cmd); } @@ -309,14 +308,14 @@ void RDRipc::DispatchCommand() str+=" "+cmds[i]; } str+="!"; - if(macro.parseString(str,str.length())) { + macro=RDMacro::fromString(str,RDMacro::Cmd); + if(!macro.isNull()) { QHostAddress addr; addr.setAddress(cmds[1]); if(cmds[2].left(0)=="1") { macro.setEchoRequested(true); } macro.setAddress(addr); - macro.setRole(RDMacro::Cmd); emit rmlReceived(¯o); } return; @@ -331,7 +330,8 @@ void RDRipc::DispatchCommand() str+=" "+cmds[i]; } str+="!"; - if(macro.parseString(str,str.length())) { + macro=RDMacro::fromString(str,RDMacro::Reply); + if(!macro.isNull()) { macro.setAddress(QHostAddress().setAddress(cmds[1])); macro.setRole(RDMacro::Reply); emit rmlReceived(¯o); diff --git a/lib/rdsound_panel.cpp b/lib/rdsound_panel.cpp index 13ac6d81..816b6e0c 100644 --- a/lib/rdsound_panel.cpp +++ b/lib/rdsound_panel.cpp @@ -1063,8 +1063,7 @@ void RDSoundPanel::PlayMacro(RDPanelButton *button,RDCart *cart) rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); rml.setCommand(RDMacro::EX); - rml.setArgQuantity(1); - rml.setArg(0,cart->number()); + rml.addArg(cart->number()); rda->ripc()->sendRml(&rml); if(!panel_svcname.isEmpty()) { LogTrafficMacro(button); diff --git a/rdadmin/edit_ttys.cpp b/rdadmin/edit_ttys.cpp index a4bff948..eb1026d7 100644 --- a/rdadmin/edit_ttys.cpp +++ b/rdadmin/edit_ttys.cpp @@ -276,18 +276,17 @@ void EditTtys::closeData() macro.setCommand(RDMacro::SY); macro.setRole(RDMacro::Cmd); macro.setEchoRequested(false); - macro.setArgQuantity(1); for(int i=0;ifirst()) { macro.setCommand(RDMacro::SZ); - macro.setArg(0,q->value(0).toInt()); + macro.addArg(q->value(0).toInt()); } else { macro.setCommand(RDMacro::SY); - macro.setArg(0,i); + macro.addArg(i); } macro.setAddress(rmt_station->address()); rda->ripc()->sendRml(¯o); diff --git a/rdadmin/list_gpis.cpp b/rdadmin/list_gpis.cpp index 6618415b..c114d080 100644 --- a/rdadmin/list_gpis.cpp +++ b/rdadmin/list_gpis.cpp @@ -291,16 +291,15 @@ void ListGpis::okData() RDStation *station=new RDStation(list_matrix->station()); rml.setCommand(RDMacro::GI); rml.setRole(RDMacro::Cmd); - rml.setArgQuantity(5); - rml.setArg(0,list_matrix->matrix()); + rml.addArg(list_matrix->matrix()); switch(list_type) { - case RDMatrix::GpioInput: - rml.setArg(1,"I"); - break; + case RDMatrix::GpioInput: + rml.addArg("I"); + break; - case RDMatrix::GpioOutput: - rml.setArg(1,"O"); - break; + case RDMatrix::GpioOutput: + rml.addArg("O"); + break; } rml.setAddress(station->address()); rml.setEchoRequested(false); @@ -316,9 +315,9 @@ void ListGpis::okData() QString().sprintf("OFF_MACRO_CART=%d",item->text(3).toInt()); q=new RDSqlQuery(sql); delete q; - rml.setArg(2,item->text(0).toInt()); - rml.setArg(3,true); - rml.setArg(4,item->text(1).toInt()); + rml.addArg(item->text(0).toInt()); + rml.addArg(true); + rml.addArg(item->text(1).toInt()); rda->ripc()->sendRml(&rml); rml.setArg(3,false); rml.setArg(4,item->text(3).toInt()); diff --git a/rdadmin/list_matrices.cpp b/rdadmin/list_matrices.cpp index 93a0c84a..26ff3702 100644 --- a/rdadmin/list_matrices.cpp +++ b/rdadmin/list_matrices.cpp @@ -226,11 +226,10 @@ void ListMatrices::closeData() macro.setCommand(RDMacro::SZ); macro.setRole(RDMacro::Cmd); macro.setEchoRequested(false); - macro.setArgQuantity(1); for(int i=0;iaddress()); - macro.setArg(0,i); + macro.addArg(i); rda->ripc()->sendRml(¯o); } } diff --git a/rdairplay/local_macros.cpp b/rdairplay/local_macros.cpp index 1d865c24..b035c51f 100644 --- a/rdairplay/local_macros.cpp +++ b/rdairplay/local_macros.cpp @@ -54,9 +54,9 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } else { for(int i=0;i<(rml->argQuantity()-1);i++) { - str+=(rml->arg(i).toString()+" "); + str+=(rml->arg(i)+" "); } - str+=rml->arg(rml->argQuantity()-1).toString(); + str+=rml->arg(rml->argQuantity()-1); pal=air_message_label->palette(); pal.setColor(QPalette::Active,QColorGroup::Foreground,QColor(black)); pal.setColor(QPalette::Inactive,QColorGroup::Foreground, @@ -76,14 +76,14 @@ void MainWidget::RunLocalMacros(RDMacro *rml) air_message_label->clear(); } else { - QColor color(rml->arg(0).toString()); + QColor color(rml->arg(0)); if(!color.isValid()) { color=QColor(black); } for(int i=1;i<(rml->argQuantity()-1);i++) { - str+=(rml->arg(i).toString()+" "); + str+=(rml->arg(i)+" "); } - str+=rml->arg(rml->argQuantity()-1).toString(); + str+=rml->arg(rml->argQuantity()-1); pal=air_message_label->palette(); pal.setColor(QPalette::Active,QColorGroup::Foreground,color); pal.setColor(QPalette::Inactive,QColorGroup::Foreground,color); @@ -116,7 +116,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) air_log[rml->arg(0).toInt()-1]->clear(); } else { // Load Log - logname=rml->arg(1).toString(); + logname=rml->arg(1); if(!RDLog::exists(logname)) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -181,7 +181,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - logname=rml->arg(1).toString(); + logname=rml->arg(1); if(!RDLog::exists(logname)) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -253,7 +253,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -271,14 +271,14 @@ void MainWidget::RunLocalMacros(RDMacro *rml) return; } for(int i=3;i<(rml->argQuantity()-1);i++) { - label+=(rml->arg(i).toString()+" "); + label+=(rml->arg(i)+" "); } label=label.left(label.length()-1); air_panel->setText(panel_type,panel_number,rml->arg(2).toInt()-1, rml->arg(1).toInt()-1,label); air_panel->setColor(panel_type,panel_number,rml->arg(2).toInt()-1, rml->arg(1).toInt()-1, - rml->arg(rml->argQuantity()-1).toString()); + rml->arg(rml->argQuantity()-1)); if(rml->echoRequested()) { rml->acknowledge(true); rda->ripc()->sendRml(rml); @@ -293,7 +293,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -469,7 +469,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -609,7 +609,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -678,7 +678,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -717,7 +717,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(!GetPanel(rml->arg(0).toString(),&panel_type,&panel_number)) { + if(!GetPanel(rml->arg(0),&panel_type,&panel_number)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -852,8 +852,8 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if((rml->arg(0).toString().lower()!="now")&& - (rml->arg(0).toString().lower()!="next")) { + if((rml->arg(0).lower()!="now")&& + (rml->arg(0).lower()!="next")) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -874,7 +874,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(rml->arg(0).toString().lower()=="now") { + if(rml->arg(0).lower()=="now") { air_log[rml->arg(1).toInt()-1]->setNowCart(rml->arg(2).toUInt()); } else { diff --git a/rdairplay/rdairplay.cpp b/rdairplay/rdairplay.cpp index c4846d86..a00a78c7 100644 --- a/rdairplay/rdairplay.cpp +++ b/rdairplay/rdairplay.cpp @@ -1010,9 +1010,8 @@ void MainWidget::ripcConnectedData(bool state) q=new RDSqlQuery(sql); if(q->first()) { rml.setCommand(RDMacro::LL); // Load Log - rml.setArgQuantity(2); - rml.setArg(0,i+1); - rml.setArg(1,air_start_logname[i]); + rml.addArg(i+1); + rml.addArg(air_start_logname[i]); rda->ripc()->sendRml(&rml); } else { @@ -1408,15 +1407,18 @@ void MainWidget::logReloadedData(int log) if(air_start_line[log]size()) { rml.setCommand(RDMacro::MN); // Make Next - rml.setArgQuantity(2); - rml.setArg(0,log+1); - rml.setArg(1,air_start_line[log]); + rml.addArg(log+1); + rml.addArg(air_start_line[log]); rda->ripc()->sendRml(&rml); if(air_start_start[log]) { + rml.clear(); + rml.setRole(RDMacro::Cmd); + addr.setAddress("127.0.0.1"); + rml.setAddress(addr); + rml.setEchoRequested(false); rml.setCommand(RDMacro::PN); // Start Next - rml.setArgQuantity(1); - rml.setArg(0,log+1); + rml.addArg(log+1); rda->ripc()->sendRml(&rml); } } diff --git a/rdcatchd/rdcatchd.cpp b/rdcatchd/rdcatchd.cpp index 391437d9..34bbc6fd 100644 --- a/rdcatchd/rdcatchd.cpp +++ b/rdcatchd/rdcatchd.cpp @@ -1253,20 +1253,14 @@ bool MainObject::StartRecording(int event) rml->setRole(RDMacro::Cmd); rml->setAddress(catch_swaddress[deck-1]); rml->setEchoRequested(false); - rml->setArgQuantity(3); rml->setCommand(RDMacro::ST); - rml->setArg(0,catch_swmatrix[deck-1]); - rml->setArg(1,catch_events[event].switchInput()); - rml->setArg(2,catch_swoutput[deck-1]); - char str[RD_RML_MAX_LENGTH]; - if(rml->generateString(str,RD_RML_MAX_LENGTH)) { - rda->ripc()->sendRml(rml); - LogLine(RDConfig::LogDebug,QString(). - sprintf("sending switcher command: %s",str)); - } - else { - LogLine(RDConfig::LogNotice,"switcher command is malformed!"); - } + rml->addArg(catch_swmatrix[deck-1]); + rml->addArg(catch_events[event].switchInput()); + rml->addArg(catch_swoutput[deck-1]); + QString str; + str=rml->toString(); + rda->ripc()->sendRml(rml); + LogLine(RDConfig::LogDebug,QString("sending switcher command: ")+str); delete rml; } @@ -1457,20 +1451,16 @@ void MainObject::StartMacroEvent(int event) void MainObject::StartSwitchEvent(int event) { - char cmd[RD_RML_MAX_LENGTH]; - RDMacro *rml=new RDMacro(); rml->setAddress(rda->station()->address()); rml->setRole(RDMacro::Cmd); rml->setEchoRequested(false); rml->setCommand(RDMacro::ST); - rml->setArgQuantity(3); - rml->setArg(0,catch_events[event].channel()); - rml->setArg(1,catch_events[event].switchInput()); - rml->setArg(2,catch_events[event].switchOutput()); - rml->generateString(cmd,RD_RML_MAX_LENGTH); - LogLine(RDConfig::LogInfo,QString(). - sprintf("sent switch event, rml: %s",cmd)); + rml->addArg(catch_events[event].channel()); + rml->addArg(catch_events[event].switchInput()); + rml->addArg(catch_events[event].switchOutput()); + QString str=rml->toString(); + LogLine(RDConfig::LogInfo,QString("sent switch event, rml: ")+str); rda->ripc()->sendRml(rml); delete rml; if(catch_events[event].oneShot()) { diff --git a/rdlibrary/edit_macro.cpp b/rdlibrary/edit_macro.cpp index 0da80f2c..14d5e311 100644 --- a/rdlibrary/edit_macro.cpp +++ b/rdlibrary/edit_macro.cpp @@ -77,9 +77,7 @@ EditMacro::EditMacro(RDMacro *cmd,bool highlight,QWidget *parent) edit_cancel_button->setText(tr("&Cancel")); connect(edit_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData())); - char cmdstr[RD_RML_MAX_LENGTH]; - edit_macro->generateString(cmdstr,RD_RML_MAX_LENGTH); - edit_macro_edit->setText(cmdstr); + edit_macro_edit->setText(edit_macro->toString()); if(highlight) { edit_macro_edit->selectAll(); } @@ -100,8 +98,7 @@ QSizePolicy EditMacro::sizePolicy() const void EditMacro::okData() { - edit_macro->parseString((const char *)edit_macro_edit->text(), - edit_macro_edit->text().length()); + *edit_macro=RDMacro::fromString(edit_macro_edit->text()); done(0); } diff --git a/rdlibrary/macro_cart.cpp b/rdlibrary/macro_cart.cpp index b11c68e4..a44cfa6d 100644 --- a/rdlibrary/macro_cart.cpp +++ b/rdlibrary/macro_cart.cpp @@ -308,25 +308,21 @@ void MacroCart::doubleClickedData(QListViewItem *,const QPoint &,int) void MacroCart::RefreshList() { QListViewItem *item; - char cmdstr[RD_RML_MAX_LENGTH]; item=new QListViewItem(rdcart_macro_list); item->setText(1,tr("--- End of cart ---")); for(int i=0;isize();i++) { item=new QListViewItem(rdcart_macro_list); - rdcart_events->command(i)->generateString(cmdstr,RD_RML_MAX_LENGTH); item->setText(0,QString().sprintf("%03d",i+1)); - item->setText(1,cmdstr); + item->setText(1,rdcart_events->command(i)->toString()); } } void MacroCart::RefreshLine(QListViewItem *item) { - char cmdstr[RD_RML_MAX_LENGTH]; int line=item->text(0).toInt()-1; - rdcart_events->command(line)->generateString(cmdstr,RD_RML_MAX_LENGTH); - item->setText(1,cmdstr); + item->setText(1,rdcart_events->command(line)->toString()); } diff --git a/rdvairplayd/local_macros.cpp b/rdvairplayd/local_macros.cpp index fbaa4183..e4cf03c5 100644 --- a/rdvairplayd/local_macros.cpp +++ b/rdvairplayd/local_macros.cpp @@ -64,7 +64,7 @@ void MainObject::rmlReceivedData(RDMacro *rml) rml->arg(0).toInt())); } else { // Load Log - logname=rml->arg(1).toString(); + logname=rml->arg(1); if(!RDLog::exists(logname)) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -157,7 +157,7 @@ void MainObject::rmlReceivedData(RDMacro *rml) } return; } - logname=rml->arg(1).toString(); + logname=rml->arg(1); if(!RDLog::exists(logname)) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -562,8 +562,8 @@ void MainObject::rmlReceivedData(RDMacro *rml) } return; } - if((rml->arg(0).toString().lower()!="now")&& - (rml->arg(0).toString().lower()!="next")) { + if((rml->arg(0).lower()!="now")&& + (rml->arg(0).lower()!="next")) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -584,7 +584,7 @@ void MainObject::rmlReceivedData(RDMacro *rml) } return; } - if(rml->arg(0).toString().lower()=="now") { + if(rml->arg(0).lower()=="now") { air_logs[index]->setNowCart(rml->arg(2).toUInt()); rda->log(RDConfig::LogInfo,QString(). sprintf("set default \"now\" cart to %06u on log machine %d", diff --git a/rdvairplayd/rdvairplayd.cpp b/rdvairplayd/rdvairplayd.cpp index e2834f66..2cc1d8d9 100644 --- a/rdvairplayd/rdvairplayd.cpp +++ b/rdvairplayd/rdvairplayd.cpp @@ -281,9 +281,8 @@ void MainObject::ripcConnectedData(bool state) q=new RDSqlQuery(sql); if(q->first()) { rml.setCommand(RDMacro::LL); // Load Log - rml.setArgQuantity(2); - rml.setArg(0,mach+1); - rml.setArg(1,air_start_lognames[i]); + rml.addArg(mach+1); + rml.addArg(air_start_lognames[i]); rda->ripc()->sendRml(&rml); } else { @@ -321,15 +320,17 @@ void MainObject::logReloadedData(int log) if(air_start_lines[log]size()) { rml.setCommand(RDMacro::MN); // Make Next - rml.setArgQuantity(2); - rml.setArg(0,mach+1); - rml.setArg(1,air_start_lines[log]); + rml.addArg(mach+1); + rml.addArg(air_start_lines[log]); rda->ripc()->sendRml(&rml); if(air_start_starts[log]) { + rml.clear(); + rml.setRole(RDMacro::Cmd); + rml.setAddress(addr); + rml.setEchoRequested(false); rml.setCommand(RDMacro::PN); // Start Next - rml.setArgQuantity(1); - rml.setArg(0,mach+1); + rml.addArg(mach+1); rda->ripc()->sendRml(&rml); } } diff --git a/ripcd/acu1p.cpp b/ripcd/acu1p.cpp index 869f9249..d60f3de0 100644 --- a/ripcd/acu1p.cpp +++ b/ripcd/acu1p.cpp @@ -128,14 +128,14 @@ void Acu1p::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -143,14 +143,14 @@ void Acu1p::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SetRelay(cmd->arg(2).toInt()-1,false); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); } @@ -170,20 +170,20 @@ void Acu1p::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SetRelay(cmd->arg(2).toInt()-1,true); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -191,7 +191,7 @@ void Acu1p::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { PulseRelay(cmd->arg(2).toInt()-1); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpo_oneshot->start(cmd->arg(2).toInt()-1,500); diff --git a/ripcd/bt16x2.cpp b/ripcd/bt16x2.cpp index 8c2d4b37..5a7f2c64 100644 --- a/ripcd/bt16x2.cpp +++ b/ripcd/bt16x2.cpp @@ -124,14 +124,14 @@ void Bt16x2::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -139,14 +139,14 @@ void Bt16x2::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dF",BT16X2_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); @@ -167,21 +167,21 @@ void Bt16x2::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dL",BT16X2_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -189,7 +189,7 @@ void Bt16x2::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dP",BT16X2_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); diff --git a/ripcd/btacs82.cpp b/ripcd/btacs82.cpp index 0e0145c9..88b79163 100644 --- a/ripcd/btacs82.cpp +++ b/ripcd/btacs82.cpp @@ -127,14 +127,14 @@ void BtAcs82::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -142,14 +142,14 @@ void BtAcs82::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dF",BTACS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); @@ -170,21 +170,21 @@ void BtAcs82::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dL",BTACS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -192,7 +192,7 @@ void BtAcs82::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dP",BTACS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); diff --git a/ripcd/btadms4422.cpp b/ripcd/btadms4422.cpp index d4bed828..cad397eb 100644 --- a/ripcd/btadms4422.cpp +++ b/ripcd/btadms4422.cpp @@ -134,14 +134,14 @@ void BtAdms4422::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -149,14 +149,14 @@ void BtAdms4422::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOR%dF\r\n",BTADMS4422_UNIT_ID, cmd->arg(2).toInt()); @@ -185,7 +185,7 @@ void BtAdms4422::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -194,7 +194,7 @@ void BtAdms4422::processCommand(RDMacro *cmd) } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOR%dL\r\n",BTADMS4422_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,8); @@ -208,7 +208,7 @@ void BtAdms4422::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -216,7 +216,7 @@ void BtAdms4422::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOR%dP\r\n",BTADMS4422_UNIT_ID, cmd->arg(2).toInt()); diff --git a/ripcd/btsrc16.cpp b/ripcd/btsrc16.cpp index 75724826..2116eb31 100644 --- a/ripcd/btsrc16.cpp +++ b/ripcd/btsrc16.cpp @@ -122,14 +122,14 @@ void BtSrc16::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -137,14 +137,14 @@ void BtSrc16::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dF\r\n",BTSRC16_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,9); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); @@ -165,14 +165,14 @@ void BtSrc16::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dL\r\n", BTSRC16_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,9); @@ -180,7 +180,7 @@ void BtSrc16::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -188,7 +188,7 @@ void BtSrc16::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%02dP%02d\r\n", BTSRC16_UNIT_ID,cmd->arg(2).toInt(), cmd->arg(4).toInt()/100+1); diff --git a/ripcd/btsrc8iii.cpp b/ripcd/btsrc8iii.cpp index 672b3960..6a84d286 100644 --- a/ripcd/btsrc8iii.cpp +++ b/ripcd/btsrc8iii.cpp @@ -122,14 +122,14 @@ void BtSrc8Iii::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -137,14 +137,14 @@ void BtSrc8Iii::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dF\r\n",BTSRC8III_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,8); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); @@ -165,14 +165,14 @@ void BtSrc8Iii::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dL\r\n", BTSRC8III_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,8); @@ -180,7 +180,7 @@ void BtSrc8Iii::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -188,7 +188,7 @@ void BtSrc8Iii::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dP%02d\r\n", BTSRC8III_UNIT_ID,cmd->arg(2).toInt(), cmd->arg(4).toInt()/100+1); diff --git a/ripcd/btss164.cpp b/ripcd/btss164.cpp index 38a3cd92..54474bd2 100644 --- a/ripcd/btss164.cpp +++ b/ripcd/btss164.cpp @@ -124,14 +124,14 @@ void BtSs164::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -139,14 +139,14 @@ void BtSs164::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<8) { sprintf(str,"*%dOR%dF",BTSS164_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); @@ -174,14 +174,14 @@ void BtSs164::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<8) { sprintf(str,"*%dOR%dL",BTSS164_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); @@ -195,7 +195,7 @@ void BtSs164::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -203,7 +203,7 @@ void BtSs164::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<8) { sprintf(str,"*%dOR%dP",BTSS164_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); diff --git a/ripcd/btss42.cpp b/ripcd/btss42.cpp index 1292c47b..3e67b2bd 100644 --- a/ripcd/btss42.cpp +++ b/ripcd/btss42.cpp @@ -124,14 +124,14 @@ void BtSs42::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -139,14 +139,14 @@ void BtSs42::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dF",BTSS42_UNIT_ID,cmd->arg(2).toInt()); } @@ -172,14 +172,14 @@ void BtSs42::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dL",BTSS42_UNIT_ID,cmd->arg(2).toInt()); } @@ -191,7 +191,7 @@ void BtSs42::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -199,7 +199,7 @@ void BtSs42::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dP",BTSS42_UNIT_ID,cmd->arg(2).toInt()); } diff --git a/ripcd/btss44.cpp b/ripcd/btss44.cpp index ebdb0b3b..d9b897e0 100644 --- a/ripcd/btss44.cpp +++ b/ripcd/btss44.cpp @@ -125,14 +125,14 @@ void BtSs44::processCommand(RDMacro *cmd) case RDMacro::GO: // NEW if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -140,14 +140,14 @@ void BtSs44::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dF",BTSS44_UNIT_ID,cmd->arg(2).toInt()); } @@ -173,14 +173,14 @@ void BtSs44::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dL",BTSS44_UNIT_ID,cmd->arg(2).toInt()); } @@ -192,7 +192,7 @@ void BtSs44::processCommand(RDMacro *cmd) } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -200,7 +200,7 @@ void BtSs44::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(2).toInt()<=4) { sprintf(str,"*%dOO%dP",BTSS44_UNIT_ID,cmd->arg(2).toInt()); } diff --git a/ripcd/btss82.cpp b/ripcd/btss82.cpp index 0172bdaf..658d21e1 100644 --- a/ripcd/btss82.cpp +++ b/ripcd/btss82.cpp @@ -124,14 +124,14 @@ void BtSs82::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>bt_gpos)|| (cmd->arg(2).toInt()>bt_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -139,14 +139,14 @@ void BtSs82::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,false); bt_gpi_state[cmd->arg(2).toInt()-1]=false; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dF",BTSS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,false); @@ -167,21 +167,21 @@ void BtSs82::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; } bt_gpi_mask[cmd->arg(2).toInt()-1]=true; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dL",BTSS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(!bt_gpi_state[cmd->arg(2).toInt()-1]) { emit gpiChanged(bt_matrix,cmd->arg(2).toInt()-1,true); bt_gpi_state[cmd->arg(2).toInt()-1]=true; @@ -189,7 +189,7 @@ void BtSs82::processCommand(RDMacro *cmd) bt_gpi_mask[cmd->arg(2).toInt()-1]=true; bt_gpi_oneshot->start(cmd->arg(2).toInt()-1,500); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { sprintf(str,"*%dOR%dP",BTSS82_UNIT_ID,cmd->arg(2).toInt()); bt_device->writeBlock(str,6); emit gpoChanged(bt_matrix,cmd->arg(2).toInt()-1,true); diff --git a/ripcd/harlond.cpp b/ripcd/harlond.cpp index 3831bad9..e0551552 100644 --- a/ripcd/harlond.cpp +++ b/ripcd/harlond.cpp @@ -133,7 +133,7 @@ void Harlond::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(!ProcessGpo(cmd->arg(2).toInt(),cmd->arg(3).toBool(), + if(!ProcessGpo(cmd->arg(2).toInt(),cmd->arg(3).toInt(), cmd->arg(4).toInt())) { cmd->acknowledge(false); emit rmlEcho(cmd); diff --git a/ripcd/kernelgpio.cpp b/ripcd/kernelgpio.cpp index 6acddebd..ee12b3da 100644 --- a/ripcd/kernelgpio.cpp +++ b/ripcd/kernelgpio.cpp @@ -113,8 +113,8 @@ void KernelGpio::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>gpio_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& (cmd->arg(3).toInt()!=-1))||(cmd->arg(4).toInt()<0)) { @@ -122,7 +122,7 @@ void KernelGpio::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(cmd->arg(3).toInt()==0) { emit gpiChanged(gpio_matrix,cmd->arg(2).toInt()-1,false); gpio_gpi_mask[cmd->arg(2).toInt()-1]=true; @@ -148,7 +148,7 @@ void KernelGpio::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(3).toInt()==0) { gpio_gpio->setValue(gpio_gpis+cmd->arg(2).toInt()-1,false); if(cmd->arg(4).toInt()>0) { diff --git a/ripcd/livewire_lwrpgpio.cpp b/ripcd/livewire_lwrpgpio.cpp index 3d490d38..3cfc3a4d 100644 --- a/ripcd/livewire_lwrpgpio.cpp +++ b/ripcd/livewire_lwrpgpio.cpp @@ -101,15 +101,15 @@ void LiveWireLwrpGpio::processCommand(RDMacro *cmd) case RDMacro::GO: if((cmd->argQuantity()!=5)|| (cmd->arg(2).toInt()<1)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))) { + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))) { cmd->acknowledge(false); emit rmlEcho(cmd); return; } - if(((cmd->arg(1).toString().lower()=="i")&& + if(((cmd->arg(1).lower()=="i")&& (cmd->arg(2).toUInt()>gpio_gpi_limit))|| - ((cmd->arg(1).toString().lower()=="o")&& + ((cmd->arg(1).lower()=="o")&& (cmd->arg(2).toUInt()>gpio_gpo_limit))) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -117,7 +117,7 @@ void LiveWireLwrpGpio::processCommand(RDMacro *cmd) } slot=(cmd->arg(2).toInt()-1)/5; line=(cmd->arg(2).toInt()-1)%5; - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(cmd->arg(3).toInt()==0) { if(gpio_is_virtual) { gpio_livewire->gpoReset(slot,line,cmd->arg(4).toInt()); @@ -135,7 +135,7 @@ void LiveWireLwrpGpio::processCommand(RDMacro *cmd) } } } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(3).toInt()==0) { if(gpio_is_virtual) { gpio_livewire->gpiReset(slot,line,cmd->arg(4).toInt()); diff --git a/ripcd/livewire_mcastgpio.cpp b/ripcd/livewire_mcastgpio.cpp index cdda41db..23305ddc 100644 --- a/ripcd/livewire_mcastgpio.cpp +++ b/ripcd/livewire_mcastgpio.cpp @@ -217,14 +217,14 @@ void LiveWireMcastGpio::processCommand(RDMacro *cmd) if((cmd->argQuantity()!=5)|| (cmd->arg(2).toInt()<1)|| (cmd->arg(2).toInt()>(int)livewire_gpios)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))) { + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))) { cmd->acknowledge(false); emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { slot=(cmd->arg(2).toInt()-1)/5; line=(cmd->arg(2).toInt()-1)%5; if(livewire_source_numbers[slot]<=0) { @@ -239,7 +239,7 @@ void LiveWireMcastGpio::processCommand(RDMacro *cmd) ProcessGpoIn(livewire_source_numbers[slot],line,cmd->arg(3).toInt()); livewire_gpo_in_states[cmd->arg(2).toInt()-1]=cmd->arg(3).toInt(); } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { slot=(cmd->arg(2).toInt()-1)/5; line=(cmd->arg(2).toInt()-1)%5; if(livewire_source_numbers[slot]<=0) { diff --git a/ripcd/local_gpio.cpp b/ripcd/local_gpio.cpp index e2091064..c8a726f3 100644 --- a/ripcd/local_gpio.cpp +++ b/ripcd/local_gpio.cpp @@ -108,8 +108,8 @@ void LocalGpio::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((!gpio_open)||(cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>gpio_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& (cmd->arg(3).toInt()!=-1))||(cmd->arg(4).toInt()<0)) { @@ -117,7 +117,7 @@ void LocalGpio::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(cmd->arg(3).toInt()==0) { emit gpiChanged(gpio_matrix,cmd->arg(2).toInt()-1,false); gpio_gpi_mask[cmd->arg(2).toInt()-1]=true; @@ -143,7 +143,7 @@ void LocalGpio::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(3).toInt()==0) { gpio_gpio->gpoReset(cmd->arg(2).toInt()-1,cmd->arg(4).toInt()); } diff --git a/ripcd/local_macros.cpp b/ripcd/local_macros.cpp index 1bf376c8..f0549ead 100644 --- a/ripcd/local_macros.cpp +++ b/ripcd/local_macros.cpp @@ -119,8 +119,7 @@ void MainObject::ExecCart(int cartnum) rml.setCommand(RDMacro::EX); rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); - rml.setArgQuantity(1); - rml.setArg(0,cartnum); + rml.addArg(cartnum); sendRml(&rml); } @@ -222,7 +221,7 @@ void MainObject::LoadLocalMacros() } -void MainObject::RunLocalMacros(RDMacro *rml) +void MainObject::RunLocalMacros(RDMacro *rml_in) { int matrix_num; int gpi; @@ -234,17 +233,18 @@ void MainObject::RunLocalMacros(RDMacro *rml) RDSqlQuery *q; QHostAddress addr; RDUser *rduser; - char logstr[RD_RML_MAX_LENGTH]; + QString logstr; char bin_buf[RD_RML_MAX_LENGTH]; int d; RDMatrix::GpioType gpio_type; QByteArray data; - rml->generateString(logstr,RD_RML_MAX_LENGTH-1); - LogLine(RDConfig::LogInfo,QString().sprintf("received rml: \'%s\' from %s", - (const char *)logstr,(const char *)rml->address().toString())); + rda->log(RDConfig::LogInfo,QString("received rml: \'")+rml_in->toString()+ + "\' from "+rml_in->address().toString()); - ForwardConvert(rml); + RDMacro *rml=new RDMacro(); + *rml=ForwardConvert(*rml_in); + // ForwardConvert(rml); switch(rml->command()) { case RDMacro::BO: @@ -262,7 +262,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } for(int i=1;i<(rml->argQuantity());i++) { - sscanf((const char *)rml->arg(i).toString(),"%x",&d); + sscanf((const char *)rml->arg(i),"%x",&d); bin_buf[i-1]=0xFF&d; } ripcd_tty_dev[tty_port]->writeBlock(bin_buf,rml->argQuantity()-1); @@ -284,7 +284,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) (const char *)rda->config()->mysqlHostname(), (const char *)rda->config()->mysqlUsername(), (const char *)rda->config()->mysqlPassword(), - (const char *)rml->arg(0).toString()); + (const char *)rml->arg(0)); system((const char *)cmd); exit(0); } @@ -303,11 +303,11 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } matrix_num=rml->arg(0).toInt(); - if(rml->arg(1).toString().lower()=="i") { + if(rml->arg(1).lower()=="i") { gpio_type=RDMatrix::GpioInput; } else { - if(rml->arg(1).toString().lower()=="o") { + if(rml->arg(1).lower()=="o") { gpio_type=RDMatrix::GpioOutput; } else { @@ -364,11 +364,11 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } matrix_num=rml->arg(0).toInt(); - if(rml->arg(1).toString().lower()=="i") { + if(rml->arg(1).lower()=="i") { gpio_type=RDMatrix::GpioInput; } else { - if(rml->arg(1).toString().lower()=="o") { + if(rml->arg(1).lower()=="o") { gpio_type=RDMatrix::GpioOutput; } else { @@ -427,7 +427,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) } return; } - rda->cae()->connectJackPorts(rml->arg(0).toString(),rml->arg(1).toString()); + rda->cae()->connectJackPorts(rml->arg(0),rml->arg(1)); if(rml->echoRequested()) { rml->acknowledge(true); sendRml(rml); @@ -442,7 +442,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) } return; } - rda->cae()->disconnectJackPorts(rml->arg(0).toString(),rml->arg(1).toString()); + rda->cae()->disconnectJackPorts(rml->arg(0),rml->arg(1)); if(rml->echoRequested()) { rml->acknowledge(true); sendRml(rml); @@ -461,7 +461,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) rduser=new RDUser(rda->station()->defaultName()); } else { - rduser=new RDUser(rml->arg(0).toString()); + rduser=new RDUser(rml->arg(0)); if(!rduser->exists()) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -470,7 +470,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) delete rduser; return; } - if(!rduser->checkPassword(rml->arg(1).toString(),false)) { + if(!rduser->checkPassword(rml->arg(1),false)) { if(rml->echoRequested()) { rml->acknowledge(false); sendRml(rml); @@ -526,8 +526,8 @@ void MainObject::RunLocalMacros(RDMacro *rml) } if(system(QString(). sprintf("rdpopup -display %s %s %s", - (const char *)rml->arg(0).toString(), - (const char *)rml->arg(1).toString(), + (const char *)rml->arg(0), + (const char *)rml->arg(1), (const char *)RDEscapeString(rml->rollupArgs(2))))<0) { LogLine(RDConfig::LogWarning,"RDPopup returned an error"); } @@ -585,9 +585,9 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } if(fork()==0) { - QString cmd=rml->arg(0).toString(); + QString cmd=rml->arg(0); for(int i=1;i<=rml->argQuantity();i++) { - cmd+=" "+rml->arg(i).toString(); + cmd+=" "+rml->arg(i); } if(getuid()==0) { if(setgid(rda->config()->gid())<0) { @@ -633,9 +633,9 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } for(int i=2;i<(rml->argQuantity()-1);i++) { - str+=(rml->arg(i).toString()+" "); + str+=(rml->arg(i)+" "); } - str+=rml->arg(rml->argQuantity()-1).toString(); + str+=rml->arg(rml->argQuantity()-1); ripcd_tty_trap[tty_port]->addTrap(rml->arg(1).toInt(), str,str.length()); rml->acknowledge(true); @@ -678,8 +678,8 @@ void MainObject::RunLocalMacros(RDMacro *rml) case 3: ripcd_tty_trap[tty_port]->removeTrap(rml->arg(1).toInt(), - (const char *)rml->arg(2).toString(), - rml->arg(2).toString().length()); + (const char *)rml->arg(2), + rml->arg(2).length()); if(rml->echoRequested()) { rml->acknowledge(true); sendRml(rml); @@ -711,9 +711,9 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } for(int i=1;i<(rml->argQuantity()-1);i++) { - str+=(rml->arg(i).toString()+" "); + str+=(rml->arg(i)+" "); } - str+=rml->arg(rml->argQuantity()-1).toString(); + str+=rml->arg(rml->argQuantity()-1); switch(ripcd_tty_term[tty_port]) { case RDTty::CrTerm: str+=QString().sprintf("\x0d"); @@ -888,7 +888,7 @@ void MainObject::RunLocalMacros(RDMacro *rml) } return; } - if(!addr.setAddress(rml->arg(0).toString())) { + if(!addr.setAddress(rml->arg(0))) { if(rml->echoRequested()) { rml->acknowledge(false); sendRml(rml); @@ -903,9 +903,9 @@ void MainObject::RunLocalMacros(RDMacro *rml) return; } for(int i=2;i<(rml->argQuantity()-1);i++) { - str+=(rml->arg(i).toString()+" "); + str+=(rml->arg(i)+" "); } - str+=rml->arg(rml->argQuantity()-1).toString(); + str+=rml->arg(rml->argQuantity()-1); LogLine(RDConfig::LogDebug,QString(). sprintf("Sending \"%s\" to %s:%d",(const char *)str, (const char *)addr.toString(),rml->arg(1).toInt())); @@ -920,12 +920,81 @@ void MainObject::RunLocalMacros(RDMacro *rml) default: // LogLine(RDConfig::LogDebug,QString().sprintf("unhandled rml: \'%s\' from %s", -// (const char *)logstr,(const char *)rml->address().toString())); +// (const char *)logstr,(const char *)rml->address())); break; } } +RDMacro MainObject::ForwardConvert(const RDMacro &rml) const +{ + RDMacro ret; + + ret.setCommand(rml.command()); + ret.setRole(rml.role()); + ret.setAddress(rml.address()); + ret.setEchoRequested(rml.echoRequested()); + + // + // Convert old RML syntax to current forms + // + switch(rml.command()) { + case RDMacro::GE: + if(rml.argQuantity()==3) { + ret.addArg(rml.arg(0)); + ret.addArg("I"); + ret.addArg(rml.arg(1)); + ret.addArg(rml.arg(2)); + } + else { + ret=rml; + } + break; + + case RDMacro::GI: + if(rml.argQuantity()==3) { + ret.addArg(rml.arg(0)); + ret.addArg("I"); + ret.addArg(rml.arg(1)); + ret.addArg(rml.arg(2)); + ret.addArg(0); + } + else { + if(rml.argQuantity()==4) { + ret.addArg(rml.arg(0)); + ret.addArg("I"); + ret.addArg(rml.arg(1)); + ret.addArg(rml.arg(2)); + ret.addArg(rml.arg(3)); + } + else { + ret=rml; + } + } + break; + + case RDMacro::GO: + if(rml.argQuantity()==4) { + ret.addArg(rml.arg(0)); + ret.addArg("O"); + ret.addArg(rml.arg(1)); + ret.addArg(rml.arg(2)); + ret.addArg(rml.arg(3)); + } + else { + ret=rml; + } + break; + + default: + break; + } + + return ret; +} + + +/* void MainObject::ForwardConvert(RDMacro *rml) const { // @@ -970,3 +1039,4 @@ void MainObject::ForwardConvert(RDMacro *rml) const break; } } +*/ diff --git a/ripcd/modbus.cpp b/ripcd/modbus.cpp index 6c2aeab7..ca3a4153 100644 --- a/ripcd/modbus.cpp +++ b/ripcd/modbus.cpp @@ -113,14 +113,14 @@ void Modbus::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>modbus_gpos)|| (cmd->arg(2).toInt()>modbus_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -128,7 +128,7 @@ void Modbus::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SetCoil(cmd->arg(2).toInt()-1,false); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,false); } @@ -143,13 +143,13 @@ void Modbus::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SetCoil(cmd->arg(2).toInt()-1,true); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SetCoil(cmd->arg(2).toInt()-1,cmd->arg(3).toInt()!=0); modbus_reset_states[cmd->arg(2).toInt()-1]=cmd->arg(3).toInt()==0; modbus_reset_timers[cmd->arg(2).toInt()-1]-> diff --git a/ripcd/modemlines.cpp b/ripcd/modemlines.cpp index 43333df4..ac359cc5 100644 --- a/ripcd/modemlines.cpp +++ b/ripcd/modemlines.cpp @@ -137,8 +137,8 @@ void ModemLines::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((gpio_fd<0)||(cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>gpio_gpos)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& (cmd->arg(3).toInt()!=-1))||(cmd->arg(4).toInt()<0)) { @@ -146,7 +146,7 @@ void ModemLines::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { if(cmd->arg(3).toInt()==0) { emit gpiChanged(gpio_matrix,cmd->arg(2).toInt()-1,false); gpio_gpi_mask[cmd->arg(2).toInt()-1]=true; @@ -172,7 +172,7 @@ void ModemLines::processCommand(RDMacro *cmd) emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { if(cmd->arg(3).toInt()==0) { ioctl(gpio_fd,TIOCMBIC,&gpio_gpo_table[cmd->arg(2).toInt()-1]); if(cmd->arg(4).toInt()>0) { diff --git a/ripcd/ripcd.cpp b/ripcd/ripcd.cpp index 248c3ad4..08b1d899 100644 --- a/ripcd/ripcd.cpp +++ b/ripcd/ripcd.cpp @@ -287,26 +287,27 @@ void MainObject::notificationReceivedData(const QString &msg, void MainObject::sendRml(RDMacro *rml) { - char buf[RD_RML_MAX_LENGTH]; - int n; + QString str; - if((n=rml->generateString(buf,RD_RML_MAX_LENGTH))<0) { + if(rml->isNull()) { return; } - buf[n]=0; + str=rml->toString(); switch(rml->role()) { - case RDMacro::Cmd: - ripcd_rml_send->writeBlock(buf,n,rml->address(),rml->port()); - break; + case RDMacro::Cmd: + ripcd_rml_send->writeBlock(str.utf8(),str.utf8().length(), + rml->address(),rml->port()); + break; - case RDMacro::Reply: - if(!(ripcd_host_addr==rml->address())) { - ripcd_rml_send->writeBlock(buf,n,rml->address(),RD_RML_REPLY_PORT); - } - break; + case RDMacro::Reply: + if(!(ripcd_host_addr==rml->address())) { + ripcd_rml_send->writeBlock(str.utf8(),str.utf8().length(), + rml->address(),RD_RML_REPLY_PORT); + } + break; - default: - break; + default: + break; } } @@ -470,8 +471,6 @@ bool MainObject::DispatchCommand(RipcdConnection *conn) { QString str; RDMacro macro; - char buffer[RD_RML_MAX_LENGTH]; - char cmd[RD_RML_MAX_LENGTH+4]; int echo=0; QHostAddress addr; @@ -527,7 +526,8 @@ bool MainObject::DispatchCommand(RipcdConnection *conn) } str+="!"; } - if(macro.parseString(str,str.length())) { + macro=RDMacro::fromString(str); + if(!macro.isNull()) { addr.setAddress(cmds[1]); macro.setAddress(addr); macro.setPort(cmds[2].toInt()); @@ -537,14 +537,12 @@ bool MainObject::DispatchCommand(RipcdConnection *conn) if(macro.address()==rda->station()->address()&& ((macro.port()==RD_RML_ECHO_PORT)|| (macro.port()==RD_RML_NOECHO_PORT))) { // Local Loopback - macro.generateString(buffer,RD_RML_MAX_LENGTH); if(macro.echoRequested()) { echo=1; } - sprintf(cmd,"MS %s %d %s",(const char *)macro.address().toString(), - echo,buffer); RunLocalMacros(¯o); - BroadcastCommand(cmd); + BroadcastCommand(QString("MS ")+macro.address().toString()+ + QString().sprintf(" %d ",echo)+macro.toString()); } else { sendRml(¯o); @@ -562,16 +560,14 @@ bool MainObject::DispatchCommand(RipcdConnection *conn) } str+="!"; } - if(macro.parseString(str,str.length())) { + macro=RDMacro::fromString(str,RDMacro::Reply); + if(!macro.isNull()) { QHostAddress addr; addr.setAddress(cmds[1]); macro.setAddress(addr); - macro.setRole(RDMacro::Reply); if(macro.address()==rda->station()->address()) { // Local Loopback - macro.generateString(buffer,RD_RML_MAX_LENGTH); - sprintf(cmd,"ME %s 0 %s",(const char *)macro.address().toString(), - buffer); - BroadcastCommand(cmd); + BroadcastCommand(QString("ME ")+macro.address().toString()+" 0 "+ + macro.toString()); } else { sendRml(¯o); @@ -656,22 +652,23 @@ void MainObject::BroadcastCommand(const QString &cmd,int except_ch) void MainObject::ReadRmlSocket(QSocketDevice *dev,RDMacro::Role role, bool echo) { - char buffer[RD_RML_MAX_LENGTH]; - char cmd[RD_RML_MAX_LENGTH+4]; + char buffer[1501]; QString output; int n; QHostAddress peer_addr; RDMacro macro; - while((n=dev->readBlock(buffer,RD_RML_MAX_LENGTH))>0) { + while((n=dev->readBlock(buffer,1501))>0) { buffer[n]=0; - if(macro.parseString(buffer,n)) { + macro=RDMacro::fromString(QString::fromUtf8(buffer)); + if(!macro.isNull()) { if(macro.command()==RDMacro::AG) { if(ripc_onair_flag) { - QStringList f0=f0.split(" ",buffer); + QStringList f0=f0.split(" ",QString::fromUtf8(buffer)); f0.pop_front(); QString rmlstr=f0.join(" "); - if(!macro.parseString(rmlstr,rmlstr.length())) { + macro=RDMacro::fromString(rmlstr); + if(macro.isNull()) { break; } } @@ -685,22 +682,16 @@ void MainObject::ReadRmlSocket(QSocketDevice *dev,RDMacro::Role role, macro.setRole(role); macro.setAddress(dev->peerAddress()); macro.setEchoRequested(echo); - macro.generateString(buffer,RD_RML_MAX_LENGTH); switch(role) { - case RDMacro::Cmd: - sprintf(cmd,"MS %s %d %s",(const char *)macro.address().toString(), - echo,buffer); - RunLocalMacros(¯o); - BroadcastCommand(cmd); - break; + case RDMacro::Cmd: + RunLocalMacros(¯o); + BroadcastCommand(QString("MS ")+macro.address().toString()+ + QString().sprintf(" %d ",echo)+ + macro.toString()); + break; - case RDMacro::Reply: - sprintf(cmd,"ME %s %d %s",(const char *)macro.address().toString(), - echo,buffer); - break; - - default: - break; + default: + break; } } else { @@ -712,8 +703,7 @@ void MainObject::ReadRmlSocket(QSocketDevice *dev,RDMacro::Role role, if(echo) { macro.setRole(RDMacro::Reply); macro.setCommand(RDMacro::NN); - macro.setArg(0,"-"); - macro.setArgQuantity(1); + macro.addArg("-"); macro.setAddress(dev->peerAddress()); sendRml(¯o); } diff --git a/ripcd/ripcd.h b/ripcd/ripcd.h index 8b53c3f7..4ce93de1 100644 --- a/ripcd/ripcd.h +++ b/ripcd/ripcd.h @@ -103,7 +103,7 @@ class MainObject : public QObject void RunSystemMaintRoutine(); void RunLocalMaintRoutine(); int GetMaintInterval() const; - void ForwardConvert(RDMacro *rml) const; + RDMacro ForwardConvert(const RDMacro &rml) const; bool LoadSwitchDriver(int matrix_num); QSqlDatabase *ripcd_db; QString ripcd_host; diff --git a/ripcd/sas64000gpi.cpp b/ripcd/sas64000gpi.cpp index 0af069e9..b30aad5b 100644 --- a/ripcd/sas64000gpi.cpp +++ b/ripcd/sas64000gpi.cpp @@ -123,7 +123,7 @@ void Sas64000Gpi::processCommand(RDMacro *cmd) break; case RDMacro::GO: - if((cmd->arg(1).toString().lower()!="o")|| + if((cmd->arg(1).lower()!="o")|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>sas_gpos)) { cmd->acknowledge(false); emit rmlEcho(cmd); diff --git a/ripcd/sasusi.cpp b/ripcd/sasusi.cpp index 6be13b09..6c1c3d5f 100644 --- a/ripcd/sasusi.cpp +++ b/ripcd/sasusi.cpp @@ -154,9 +154,9 @@ void SasUsi::processCommand(RDMacro *cmd) return; } for(int i=3;i<(cmd->argQuantity()-1);i++) { - label+=(cmd->arg(i).toString()+" "); + label+=(cmd->arg(i)+" "); } - label+=cmd->arg(cmd->argQuantity()-1).toString(); + label+=cmd->arg(cmd->argQuantity()-1); if(label.length()>8) { label=label.left(8); } @@ -272,7 +272,7 @@ void SasUsi::processCommand(RDMacro *cmd) break; case RDMacro::GO: - if((cmd->arg(1).toString().lower()!="o")|| + if((cmd->arg(1).lower()!="o")|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>sas_gpos)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -623,8 +623,7 @@ void SasUsi::ExecuteMacroCart(unsigned cartnum) rml.setCommand(RDMacro::EX); rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); - rml.setArgQuantity(1); - rml.setArg(0,cartnum); + rml.addArg(cartnum); emit rmlEcho(&rml); } diff --git a/ripcd/swauthority.cpp b/ripcd/swauthority.cpp index 64da8bc7..e9370fd9 100644 --- a/ripcd/swauthority.cpp +++ b/ripcd/swauthority.cpp @@ -120,14 +120,14 @@ void SoftwareAuthority::processCommand(RDMacro *cmd) break; case RDMacro::GO: - if(((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + if(((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>swa_gpos)) { cmd->acknowledge(false); emit rmlEcho(cmd); return; } - if(cmd->arg(1).toString().lower()=="i") { + if(cmd->arg(1).lower()=="i") { str="triggergpi"; } else { @@ -445,8 +445,7 @@ void SoftwareAuthority::ExecuteMacroCart(unsigned cartnum) rml.setCommand(RDMacro::EX); rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); - rml.setArgQuantity(1); - rml.setArg(0,cartnum); + rml.addArg(cartnum); emit rmlEcho(&rml); } diff --git a/ripcd/switcher.cpp b/ripcd/switcher.cpp index ae2ca195..5a202bd9 100644 --- a/ripcd/switcher.cpp +++ b/ripcd/switcher.cpp @@ -70,8 +70,7 @@ void Switcher::executeMacroCart(unsigned cartnum) rml.setCommand(RDMacro::EX); rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); - rml.setArgQuantity(1); - rml.setArg(0,cartnum); + rml.addArg(cartnum); emit rmlEcho(&rml); } diff --git a/ripcd/vguest.cpp b/ripcd/vguest.cpp index a59769e3..869794e5 100644 --- a/ripcd/vguest.cpp +++ b/ripcd/vguest.cpp @@ -368,8 +368,8 @@ void VGuest::processCommand(RDMacro *cmd) break; case RDMacro::GO: - if(((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + if(((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(2).toInt()>vguest_gpos)|| (cmd->arg(3).toInt()<0)||(cmd->arg(3).toInt()>1)|| (cmd->arg(4).toInt()<0)) { @@ -827,7 +827,6 @@ void VGuest::ExecuteMacroCart(unsigned cartnum) rml.setCommand(RDMacro::EX); rml.setAddress(rda->station()->address()); rml.setEchoRequested(false); - rml.setArgQuantity(1); - rml.setArg(0,cartnum); + rml.addArg(cartnum); emit rmlEcho(&rml); } diff --git a/ripcd/wheatnet_lio.cpp b/ripcd/wheatnet_lio.cpp index 75415061..581aa08c 100644 --- a/ripcd/wheatnet_lio.cpp +++ b/ripcd/wheatnet_lio.cpp @@ -106,14 +106,14 @@ void WheatnetLio::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>lio_gpios)|| (cmd->arg(2).toInt()>lio_gpios)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -121,7 +121,7 @@ void WheatnetLio::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("", cmd->arg(2).toInt()-1)); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,false); @@ -137,14 +137,14 @@ void WheatnetLio::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("", cmd->arg(2).toInt()-1)); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("", cmd->arg(2).toInt()-1, cmd->arg(3).toInt()!=0)); diff --git a/ripcd/wheatnet_slio.cpp b/ripcd/wheatnet_slio.cpp index 305d5af4..036846ec 100644 --- a/ripcd/wheatnet_slio.cpp +++ b/ripcd/wheatnet_slio.cpp @@ -105,14 +105,14 @@ void WheatnetSlio::processCommand(RDMacro *cmd) switch(cmd->command()) { case RDMacro::GO: if((cmd->argQuantity()!=5)|| - ((cmd->arg(1).toString().lower()!="i")&& - (cmd->arg(1).toString().lower()!="o"))|| + ((cmd->arg(1).lower()!="i")&& + (cmd->arg(1).lower()!="o"))|| (cmd->arg(2).toInt()<1)||(cmd->arg(3).toInt()>slio_gpios)|| (cmd->arg(2).toInt()>slio_gpios)|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(1).toString().lower()!="i"))|| + (cmd->arg(1).lower()!="i"))|| ((cmd->arg(3).toInt()!=1)&&(cmd->arg(3).toInt()!=0)&& - (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).toString().lower()=="i"))|| + (cmd->arg(3).toInt()!=-1)&&(cmd->arg(1).lower()=="i"))|| (cmd->arg(4).toInt()<0)) { cmd->acknowledge(false); emit rmlEcho(cmd); @@ -120,7 +120,7 @@ void WheatnetSlio::processCommand(RDMacro *cmd) } if(cmd->arg(3).toInt()==0) { // Turn OFF if(cmd->arg(4).toInt()==0) { - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("",cmd->arg(2).toInt())); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,false); } @@ -135,13 +135,13 @@ void WheatnetSlio::processCommand(RDMacro *cmd) } else { if(cmd->arg(4).toInt()==0) { // Turn ON - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("",cmd->arg(2).toInt())); emit gpoChanged(matrixNumber(),cmd->arg(2).toInt()-1,true); } } else { // Pulse - if(cmd->arg(1).toString().lower()=="o") { + if(cmd->arg(1).lower()=="o") { SendCommand(QString().sprintf("", cmd->arg(2).toInt(), cmd->arg(3).toInt()!=0)); diff --git a/utils/sas_shim/sas_shim.cpp b/utils/sas_shim/sas_shim.cpp index bc0cbfb1..64e62319 100644 --- a/utils/sas_shim/sas_shim.cpp +++ b/utils/sas_shim/sas_shim.cpp @@ -203,10 +203,9 @@ void MainObject::DispatchRml(int input,int output) rml.setRole(RDMacro::Cmd); rml.setAddress(shim_address); rml.setEchoRequested(false); - rml.setArgQuantity(3); - rml.setArg(0,rda->config()->sasMatrix()); - rml.setArg(1,input); - rml.setArg(2,output); + rml.addArg(rda->config()->sasMatrix()); + rml.addArg(input); + rml.addArg(output); rda->ripc()->sendRml(&rml); }