Exemplo n.º 1
0
void Controller::setProfileID( uint8_t pid ){
  if ( pid == getProfileID() ){
    return;
  }
  EEPROM.write( EEPROM_TEMP_BASE + _cid * EEPROM_CONTROLLER_SETTING_SIZE, pid );
  sendSettings();
}
Exemplo n.º 2
0
void Controller::sendSettings(){
#ifdef SUPPORT_MQTT
  if ( isSwitch() ){
    MQTT::publishSwitch( getName(), false );
  } else {
    MQTT::publishTempSetup( getName(), getTargetT(), getMinimumLevel(), getProfileID() );
  }
#endif
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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);
	
}