Exemplo n.º 1
0
void* realloc(void* p, long newSize) {
    if (p == 0) {
        return malloc(newSize);
    }
    if (newSize == 0) {
        free(p);
        return 0;
    }
    int idx = ((((long) p) - ((long) array)) / 4) - 1;
    sanity(idx);
    if (!isTaken(idx)) {
        //Debug::panic("freeing free block %p %d\n",p,idx);
        return 0;
    }

    long sz = size(idx) * 4;

    void* newPtr = malloc(newSize);
    if (newPtr) {
        long m = (newSize > sz) ? sz : newSize;
        memcpy(newPtr,p,m);
    }    

    free(p);
    return newPtr;
}
Exemplo n.º 2
0
void free(void* p) {
    if (p == 0) return;
    if (p == (void*) array) return;

    int idx = ((((long) p) - ((long) array)) / 4) - 1;
    sanity(idx);
    if (!isTaken(idx)) {
        //Debug::panic("freeing free block %p %d\n",p,idx);
        return;
    }

    int sz = size(idx);

    int leftIndex = left(idx);
    int rightIndex = right(idx);

    if (isAvail(leftIndex)) {
        remove(leftIndex);
        idx = leftIndex;
        sz += size(leftIndex);
    }

    if (isAvail(rightIndex)) {
        remove(rightIndex);
        sz += size(rightIndex);
    }

    makeAvail(idx,sz);
}
Exemplo n.º 3
0
// ESTE MÉTODO NÃO É UTILIZADO NESTE EXEMPLO, MAS PODE SER ÚTIL.
// Desactiva o bit no local adequado dentro do addressRegister
// para guardar a informação de que o sensor está activo
// e o endereço é "tomado" (taken). 
boolean AgroShield::setVacant(byte i){
  boolean initStatus = isTaken(i);
  i = charToDec(i); // e.g. convert '0' to 0, 'a' to 10, 'Z' to 61. 
  byte j = i / 8;   // byte #
  byte k = i % 8;   // bit #
  addressRegister[j] &= ~(1 << k); 
  return initStatus; // returna falso se já esta livre (vacant).
}
Exemplo n.º 4
0
// Define o bit no local adequado dentro do addressRegister
// para guardar a informação de que o sensor está activo
// e o endereço é "tomado" (taken). 
boolean AgroShield::setTaken(byte i){          
  boolean initStatus = isTaken(i);
  i = charToDec(i); // e.g. convert '0' to 0, 'a' to 10, 'Z' to 61. 
  byte j = i / 8;   // byte #
  byte k = i % 8;   // bit #
  addressRegister[j] |= (1 << k); 
  //Serial.println("set taken");
  return !initStatus; // returna falso se já está "tomado" (already taken).
}
Exemplo n.º 5
0
bool DuplicateFaceFinder::haveSameRects(FaceData *f1, FaceData *f2)
{
	FaceRectsByFaceIDQuery frq;
	frq.setFaceID(f1->ID);
	frq.exec(_sqlConn);
	vector<FaceRect> f1rects = frq.faceRects;

	frq.clear();
	frq.setFaceID(f2->ID);
	frq.exec(_sqlConn);
	vector<FaceRect> f2rects = frq.faceRects;

	if (f1rects.size() != f2rects.size())
		return false;

	// check if for each rectangle in f1rects there is one exactly same in f2rects
	bool foundAll = true;
	int numRects = f1rects.size();
	vector<bool> isTaken(numRects,false);
	for (int i = 0; i < numRects; ++i)
	{
		bool foundOne = false;
		for (int j = 0; j < numRects; ++j)
		{
			if (isTaken[j])
				continue;

			if (f1rects[i].equals(f2rects[j]))
			{
				foundOne = true;
				isTaken[j] = true;
				break;
			}
		}
		if (!foundOne)
		{
			foundAll = false;
			break;
		}
	}

	return foundAll;
}
Exemplo n.º 6
0
void
AGWorkPosition::print() const {
    std::cout << "- AGWorkPosition: open=" << myOpeningTime << " closingTime=" << myClosingTime << " taken=" << isTaken() << std::endl;
    std::cout << "\t";
    myLocation.print();
}
Exemplo n.º 7
0
void AgroShield::SDI12(uint8_t mode)
{
	switch( mode )
	{
	case	CHECK_ALL			:	mySDI12.begin(); 
									delay(500); 						// Tempo para que mySDI12 seja iniciado.
									
									/*
										Efectua um Scan rápido de todos os endereços.
									*/
									Serial.println("                    | SEARCH FOR SENSORS");
									Serial.println("                    | Scanning all addresses, please wait...");
									for(byte i = '0'; i <= '9'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre 0-9

									for(byte i = 'a'; i <= 'z'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre a-z

									for(byte i = 'A'; i <= 'Z'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre A-Z

									/*
										Imprime a informação actual de cada sensor activo.
									*/
								  
									// Scan dos endereços entre 0-9
									for(char i = '0'; i <= '9'; i++) if(isTaken(i)){
									
										Serial.println("");
										getDateTime();
										found_check_all = true;
									
										Serial.print("Sensor ");
										Serial.print(i);
										Serial.print(":");
										printInfo(i);   
										//Serial.println(); 
									}
								  
									// Scan dos endereços entre a-z
									for(char i = 'a'; i <= 'z'; i++) if(isTaken(i)){
									
										Serial.println("");
										getDateTime();
										found_check_all = true;
									
										Serial.print("Sensor ");
										Serial.print(i);
										Serial.print(": ");
										printInfo(i);   
										//Serial.println(); 
									} 
								  
									// Scan dos endereços entre A-Z
									for(char i = 'A'; i <= 'Z'; i++) if(isTaken(i)){
									
										Serial.println("");
										getDateTime();
										found_check_all = true;
									
										Serial.print("Sensor ");
										Serial.print(i);
										Serial.print(":");
										printInfo(i);   
										//Serial.println();  
									};
									
									
									
									if(!found_check_all) {
										Serial.println("                    | No sensors found, please check connections and restart the Arduino.\n"); 
										//while(true);
										//break;
									} // stop here
									
									
									
									mySDI12.end();
									delay(500);
									found_check_all = false;
									break;

									
	case	WILD_CARD			:	mySDI12.begin();
									delay(500);							// Tempo para que mySDI12 seja iniciado.
									mySDI12.sendCommand(wild_card_Command); 
									delay(300);							// Espera um tempo pela resposta.
									Serial.println("                    | SENSORS CONNECTED");
									getDateTime();
									
									while(mySDI12.available()){			// Escreve a resposta no Serial Monitor.
										Serial.write(mySDI12.read());
										
										//Serial.print("                    | ");
										
									}
									Serial.println("");
									mySDI12.end();
									delay(500);
									break;
									
									
	case	SIMPLE_LOGGER		:	mySDI12.begin();
									delay(500); 						// Tempo para que mySDI12 seja iniciado.
									//////////////////////////////////////////////
									Serial.println();
									Serial.println("                    | SENSORS INFORMATION AND MEASUREMENTS "); 
									Serial.println("                    | Scanning all addresses, please wait..."); 
									
									/*
									  Efectua um Scan rápido de todos os endereços.
									*/

									for(byte i = '0'; i <= '9'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre 0-9

									for(byte i = 'a'; i <= 'z'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre a-z

									for(byte i = 'A'; i <= 'Z'; i++) if(checkActive(i)) setTaken(i);   // Scan dos endereços entre A-Z

									/*
									  Verificar se existem sensores activos.
									*/
									
//									for(byte i = 0; i < 62; i++){
//										if(isTaken(i)){
//										  found = true;
//										  break;
//										}
//									}
									
									for(char i = '0'; i <= '9'; i++){
										if(isTaken(i)){
											found = true;
											
											//Serial.print("Checking address ");
											//Serial.print(i);
											//Serial.print("..."); 
											
											break;
										}
									}
									for(char i = 'a'; i <= 'z'; i++){
										if(isTaken(i)){
											found = true;
											
											//Serial.print("Checking address ");
											//Serial.print(i);
											//Serial.print("..."); 
											
											break;
										}
									}
									for(char i = 'A'; i <= 'Z'; i++){
										if(isTaken(i)){
											found = true;
											
											//Serial.print("Checking address ");
											//Serial.print(i);
											//Serial.print("..."); 
											
											break;
										}
									}

									if(!found) {
										Serial.println("                    | No sensors found, please check connections and restart the Arduino.\n"); 
										//while(true);
										break;
									} // stop here

									Serial.println();
									Serial.println("                    | Time Elapsed (s), Sensor Address and ID");
									Serial.println("                    | Sensor Address, Measurement 1, Measurement 2, ... etc."); 
									Serial.println("                    | -------------------------------------------------------------------------------");
									//////////////////////////////////////////////
									// Scan dos endereços entre 0-9
									for(char i = '0'; i <= '9'; i++) if(isTaken(i)){
									
										getDateTime();
									
										Serial.print(millis()/1000);
										Serial.print(",");
										printInfo(i); 

										//getDateTime();
										
										takeMeasurement(i);
										
										Serial.println("");
									}

									// Scan dos endereços entre a-z
									for(char i = 'a'; i <= 'z'; i++) if(isTaken(i)){
									
										getDateTime();
									
										Serial.print(millis()/1000);
										Serial.print(",");
										printInfo(i); 

										//getDateTime();
										
										takeMeasurement(i);
										
										Serial.println("");
									} 

									// Scan dos endereços entre A-Z
									for(char i = 'A'; i <= 'Z'; i++) if(isTaken(i)){
									
										getDateTime();
									
										Serial.print(millis()/1000);
										Serial.print(",");
										printInfo(i); 

										//getDateTime();
										
										takeMeasurement(i);
										
										Serial.println("");
									};   
									//////////////////////////////////////////////
									mySDI12.end();
									delay(500);
									break;									

	case	INTERFACE			:	mySDI12.begin();
									delay(500);							// Tempo para que mySDI12 seja iniciado.
									mySDI12.sendCommand("");
									
									Serial.println("                    | INTERFACE COM SENSORES SDI-12");
									Serial.println("                    | Insira o comando a enviar (''exit'' para sair)...");
									Serial.println("");
									
									while(estado){
										if(Serial.available() > 0)
										{
											myCommand = Serial.readStringUntil('\n');
											//x = Serial.parseInt();

											if (myCommand == "exit")
											{
											  Serial.println("                    | Saiu do envio de comandos");
											  Serial.println("");
											  estado = false;
											}

											if (estado){    
												//if ( (myCommand[0] >= '0' && myCommand[0] <= '9' || myCommand[0] >= 'a' && myCommand[0] <= 'z' || 
												//myCommand[0] >= 'A' && myCommand[0] <= 'Z' || myCommand[0] == '?') && (myCommand[1] == 'I' || 
												//myCommand[1] == 'M' || myCommand[1] == 'D' || myCommand[1] == 'A') && (myCommand[2] == '!' || 
												//(myCommand[3] == '!' && (myCommand[2] >= '0' && myCommand[2] <= '9' || myCommand[2] >= 'a' && 
												//myCommand[2] <= 'z' || myCommand[2] >= 'A' && myCommand[2] <= 'Z')) ) )
												if ( (myCommand[0] >= '0' && myCommand[0] <= '9' || myCommand[0] >= 'a' && myCommand[0] <= 'z' || 
												myCommand[0] >= 'A' && myCommand[0] <= 'Z' || myCommand[0] == '?') && (myCommand[1] == '!' || 
												myCommand[1] == 'I' || myCommand[1] == 'M' || myCommand[1] == 'D' || myCommand[1] == 'A') && 
												(myCommand[1] == '!' || myCommand[2] == '!' || (myCommand[3] == '!' && (myCommand[2] >= '0' && 
												myCommand[2] <= '9' || myCommand[2] >= 'a' && myCommand[2] <= 'z' || myCommand[2] >= 'A' && 
												myCommand[2] <= 'Z')) ) ) 
												{

													getDateTime();
													Serial.println(myCommand);

													for(int j = 0; j < 1; j++){
													  mySDI12.sendCommand(myCommand);
													  //      mySDI12.flush();
													  delay(300); 
													  if(mySDI12.available()>1) break;
													  if(mySDI12.available()) mySDI12.read(); 
													}

													delay(300);


													//mySDI12.read(); //consume sensor address (you can keep it if you'd like)

													if(mySDI12.available()){
														getDateTime();
													}
													
//													while(mySDI12.available()){
//														comandorecebido = (String)mySDI12.read();
//														if(comandorecebido == "\n"){
//															Serial.println("                    | ");
//															Serial.println(comandorecebido);
//														}
//														Serial.println(comandorecebido);
//														delay(5); 
//													}
													
													while(mySDI12.available()){
														Serial.write(mySDI12.read()); 
														delay(5); 
													}
													
													Serial.println("");
												}

												else{
													Serial.println("                    | Comando Invalido");
													Serial.println("");
												}
											}
										}
									}
									

//									if(!estado)
//										while(!estado){
//											if(Serial.available() > 0)
//											{
//												myCommand = Serial.readStringUntil('\n');
//												//if (myCommand == "run sdi monitor")
//												if (myCommand == "run")
//												{      
//													estado = true;
//													Serial.println("Entrou do envio de comandos");  
//												}
//											}
//										}
																		
								
									
									mySDI12.end();
									delay(500);
									estado = true;
									break;
									
									
									
	default						:	;							
	}
}