void Controller::setProfileID( uint8_t pid ){ if ( pid == getProfileID() ){ return; } EEPROM.write( EEPROM_TEMP_BASE + _cid * EEPROM_CONTROLLER_SETTING_SIZE, pid ); sendSettings(); }
void Controller::sendSettings(){ #ifdef SUPPORT_MQTT if ( isSwitch() ){ MQTT::publishSwitch( getName(), false ); } else { MQTT::publishTempSetup( getName(), getTargetT(), getMinimumLevel(), getProfileID() ); } #endif }
QByteArray NodeIdentificationIndicator::getFrameData() { QByteArray frameData; frameData += getFrameType(); frameData += getSourceAddress64(); frameData += getSourceAddress16(); frameData += getReceiveOptions(); frameData += getRemoteAddress16(); frameData += getRemoteAddress64(); frameData += getNIString(); frameData += (char)0x00; frameData += getParentAddress16(); frameData += getDeviceType(); frameData += getSourceEvent(); frameData += getProfileID(); frameData += getManufacturerID(); frameData += getDeviceTypeID(); frameData += getRSSI(); return frameData; }
bool LCDbWorkEntry::createRecord( LQuery cQuery, const String & reason ) { cQuery.setSQL( "Insert into c_buddy_worklist" " (machine_cid, barcode, test_cid, group_id, category_id, sample_id, range_set," " min_value, max_value, project_cid, profile_id, profile_name, buddy_read," " time_stamp, in_date, trigger_id, lower_trigger_limit, upper_trigger_limit," " buddy_result_id, private_result, status, diluent)" " values ( :mid, :bar, :tid, :grp, :cat, :sid, :rs, :mnv, :mxv, :proj, :pfid," " :pnm, 'N', 'now', :ind, :trid, :ltl, :utl, :rid, :prv, 'Q', :dil)" ); cQuery.setParam( "bar", getBarcode() ); cQuery.setParam( "grp", getGroupID() ); cQuery.setParam( "cat", getCategoryID() ); cQuery.setParam( "pfid", getProfileID() ); cQuery.setParam( "pnm", reason ); cQuery.setParam( "dil", diluent ); cQuery.setParam( "ind", getInDate() ); cQuery.setParam( "rid", getResultID() ); std::pair< int, int > specimen = getSpecimen(); cQuery.setParam( "proj", specimen.first ); cQuery.setParam( "sid", specimen.second ); cQuery.setParam( "tid", limits.getID() ); cQuery.setParam( "mid", limits.getAnalyserID() ); std::pair< double, double > range = limits.getRange().asDoubles(); if( range.first == 0 && range.second == 0 ) cQuery.setParam( "rs", 'N' ); else cQuery.setParam( "rs", 'Y' ); cQuery.setParam( "mnv", range.first ); cQuery.setParam( "mxv", range.second ); range = limits.getTriggerLimits().asDoubles(); cQuery.setParam( "trid", limits.getTriggerProfile() ); cQuery.setParam( "ltl", range.first ); cQuery.setParam( "utl", range.second ); cQuery.setParam( "prv", limits.isPrivate() ? 'Y' : 'N' ); return cQuery.execSQL() == 1; // don't add to cache - Marty's RFPs add record_no and ts_sequence }
bool LBDbWorkEntry::createRecord( LQuery cluster, String reason ) { int machine = limits.getAnalyserID(); if( machine == 0 ) { // QCs should stay on the same analyser; others on cluster machine = LCDbAnalysers::getCurrentID(); const LCDbAnalyser * an = LCDbAnalysers::records().findByID( machine ); if( an != NULL && !isQC() ) { std::set< int > machineIDs = an -> getClusterIDs(); if( !machineIDs.empty() ) machine = *(machineIDs.begin()); } limits.setAnalyserID( machine ); } if( reason.IsEmpty() && getProfileID() != 0 ) { const LPDbProfiles & profiles = LPDbProfiles::records( getProjectID() ); const LPDbProfile * pp = profiles.findByID( getProfileID() ); if( pp != NULL ) reason = pp -> getName(); } setTimeStamp( Now() ); char fromCentral = LCDbWorkEntry::NEW_RECORD; switch( getStage() ) { case NEW_ENTRY: break; case RE_RUN: resultID = nextRerun --; break; case TRIGGERED: resultID = TRIGGER_ID; break; default: fromCentral = LCDbWorkEntry::COPIED; } cluster.setSQL( "Insert into buddy_worklist (machine_cid, barcode, duplicate, test_name, test_id," " sample_id, range_set, min_value, max_value, status, project_cid, profile_name," " buddy_read, in_date, time_stamp, lower_warning, upper_warning, trigger_id," " trigger_lower_limit, trigger_upper_limit, private_result, delete_status, category_id)" " values ( :mid, :bar, :dup, :tnm, :tid, :aid, :rs, :min, :max, :sts, :prj," " :prn, :brd, :ind, :dts, :wlo, :wup, :trd, :tlo, :tup, :prv, 0, :cat )" ); cluster.setParam( "mid", machine ); cluster.setParam( "bar", getBarcode() ); cluster.setParam( "dup", resultID ); std::pair< int, int > specimen = getSpecimen(); cluster.setParam( "prj", specimen.first ); cluster.setParam( "aid", specimen.second ); const LCDbTest & test = LCDbTests::records().get( limits.getID() ); cluster.setParam( "tid", test.getID() ); cluster.setParam( "tnm", test.getName() ); cluster.setParam( "prn", reason ); std::pair< double, double > range = limits.getRange().asDoubles(); cluster.setParam( "min", range.first ); cluster.setParam( "max", range.second ); cluster.setParam( "rs", (range.first == 0 && range.second == 0) ? 'N' : 'Y' ); cluster.setParam( "sts", makeStatus( getStage() ) ); cluster.setParam( "brd", fromCentral ); cluster.setParam( "ind", getInDate() ); cluster.setParam( "dts", getTimeStamp() ); cluster.setParam( "trd", limits.getTriggerProfile() ); if( limits.getTriggerProfile() == 0 ) { cluster.setParam( "tup", "0" ); cluster.setParam( "tlo", "0" ); } else { range = limits.getTriggerLimits().asDoubles(); cluster.setParam( "tlo", range.first ); cluster.setParam( "tup", range.second ); } range = limits.getWarnLevels().asDoubles(); cluster.setParam( "wlo", range.first ); cluster.setParam( "wup", range.second ); cluster.setParam( "prv", limits.isPrivate() ? 'Y' : 'N' ); cluster.setParam( "cat", getCategoryID() ); if( cluster.execSQL() != 1 ) { return false; } duplicate = resultID; LBDbWorkList::records().insert( *this ); return true; }
void Client::handleGetPD(char *buff,int len) { MYSQL_RES *res; MYSQL_ROW row; int pid = find_paramint("pid",buff); persisttype_t type = (persisttype_t) find_paramint("ptype",buff); if(type == pd_private_ro || type == pd_private_rw) { if(pid != getProfileID()) { formatSend(sd,true,2,"\\getpdr\\0\\lid\\0\\pid\\%d\\errmsg\\No authentication",pid); return; } } int index = find_paramint("dindex",buff); //the 1 = success char query[256]; char kstr[256]; if(!find_param("keys",buff,kstr,sizeof(kstr))) { //sendError(sd,true,"There was an error parsing a request.",GP_PARSE,1); //return; } else { for(int x=0;x<strlen(kstr);x++) { if(kstr[x] == '\x01') { kstr[x] = '\\'; } } } sprintf_s(query,sizeof(query),"SELECT `data`,unix_timestamp(`modified`) FROM `Persist`.`data` WHERE `gameid` = %d AND `index` = %d AND `type` = %d AND `profileid` = %d",game->id,index,type,pid); if (mysql_query(server.conn, query)) { fprintf(stderr, "%s\n", mysql_error(server.conn)); return; } res = mysql_store_result(server.conn); if(mysql_num_rows(res) < 1) { formatSend(sd,true,2,"\\getpdr\\1\\lid\\0\\pid\\%d\\length\\%d\\data\\",pid,0); } else { row = mysql_fetch_row(res); int mlen = 1024; char *sendstr = NULL; int i=0; char buff2[256]; int modified = atoi(row[1]); if(strlen(kstr) < 1) { mlen = strlen(kstr) + 1; sendstr = (char *)malloc(mlen); memset(sendstr,0,mlen); strcat(sendstr,row[0]); } else { sendstr = (char *)malloc(mlen); memset(sendstr,0,mlen); while(find_param(i++,kstr,buff2,sizeof(buff2))) { char buff3[256]; // printf("%s is kstr\n",buff2); // memset(&buff2,0,sizeof(buff2)); if(find_param((char *)&buff2,row[0],(char *)&buff3,sizeof(buff3))) { strcat(sendstr,"\\"); strcat(sendstr,buff2); strcat(sendstr,"\\"); if((strlen(buff2) + strlen(sendstr) + strlen(buff3)) > (mlen-256)) { mlen += strlen(buff2) + strlen(buff3) + 1024; sendstr = (char *)realloc(sendstr,mlen); } strcat(sendstr,buff3); } } } formatSend(sd,true,2,"\\getpdr\\1\\lid\\0\\pid\\%d\\mod\\%d\\length\\%d\\data\\%s",pid,modified,strlen(sendstr),sendstr); free((void *)sendstr); } mysql_free_result(res); }