示例#1
0
unsigned char savePassword(long g){
	if(g>0){
		processNumber(g);
		unsigned char ca=getFCell();
		
		writeEEPROM(ca,num1);
		writeEEPROM((ca+1),num2);
		writeEEPROM((ca+2),num3);
	}
	return 1;
}
示例#2
0
bool Weather::ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n)
{
    //  first check if it's for our device
    if (dev != nullptr && strcmp(dev, getDeviceName()) == 0)
    {
        if (strcmp(name, "GEOGRAPHIC_COORD") == 0)
        {
            int latindex       = IUFindIndex("LAT", names, n);
            int longindex      = IUFindIndex("LONG", names, n);
            int elevationindex = IUFindIndex("ELEV", names, n);

            if (latindex == -1 || longindex == -1 || elevationindex == -1)
            {
                LocationNP.s = IPS_ALERT;
                IDSetNumber(&LocationNP, "Location data missing or corrupted.");
            }

            double targetLat  = values[latindex];
            double targetLong = values[longindex];
            double targetElev = values[elevationindex];

            return processLocationInfo(targetLat, targetLong, targetElev);
        }

        // Update period
        if (strcmp(name, "WEATHER_UPDATE") == 0)
        {
            IUUpdateNumber(&UpdatePeriodNP, values, names, n);

            UpdatePeriodNP.s = IPS_OK;
            IDSetNumber(&UpdatePeriodNP, nullptr);

            if (UpdatePeriodN[0].value == 0)
                DEBUG(Logger::DBG_SESSION, "Periodic updates are disabled.");
            else
            {
                if (updateTimerID > 0)
                    RemoveTimer(updateTimerID);

                updateTimerID = SetTimer(UpdatePeriodN[0].value * 1000);
            }
            return true;
        }

        // Pass to weather interface
        if (processNumber(dev, name, values, names, n))
            return true;
    }

    return DefaultDevice::ISNewNumber(dev, name, values, names, n);
}
示例#3
0
unsigned char validatePassword(long f){
	if(f>0){
		processNumber(f);
		for(int i=0;i<1024;i++){
			if(i%3==0){
				unsigned char a=readEEPROM(i);
				if(a==num1){
					unsigned char b=readEEPROM((i+1));
					if(b==num2){
						unsigned char c=readEEPROM((i+2));
						if(c==num3){
							return 1;
						}
					}
				}
			}
			i+=3;
		}
	}
	return 0;
}
示例#4
0
unsigned char deletePassword(long number){
	if(number>0){
		processNumber(number);
		for(int i=0;i<1024;i++){
			if(i%3==0){
				unsigned char a=readEEPROM(i);
				if(a==num1){
					unsigned char b=readEEPROM((i+1));
					if(b==num2){
						unsigned char c=readEEPROM((i+2));
						if(c==num3){
							writeEEPROM(i,0);
							writeEEPROM((i+1),0);
							writeEEPROM((i+2),0);
							return 1;
						}
					}
				}
			}
			i+=3;
		}
	}
	return 0;
}