コード例 #1
1
float Photoresistor::read(Photoresistor::Unit unit) {
	switch (unit)
    {
    case Photoresistor::VOLT:
        return getVoltage();
        break;
    case Photoresistor::LUX:
        return getLightLevel();
        break;
    }
}
コード例 #2
0
ファイル: meegoals.cpp プロジェクト: KDE/android-qt-mobility
void meegoals::start(){
    Unsigned data(((ALSSensorChannelInterface*)m_sensorInterface)->lux());
    m_reading.setLightLevel(getLightLevel(data.x()));
    m_reading.setTimestamp(data.UnsignedData().timestamp_);
    newReadingAvailable();
    meegosensorbase::start();
}
コード例 #3
0
ファイル: meegoals.cpp プロジェクト: Koi-foo/qt-mobility
void meegoals::slotDataAvailable(const Unsigned& data)
{
    QAmbientLightReading::LightLevel level = getLightLevel(data.x());
    if (level != m_reading.lightLevel()) {
        m_reading.setLightLevel(level);
        m_reading.setTimestamp(data.UnsignedData().timestamp_);
        newReadingAvailable();
    }
}
コード例 #4
0
void DimmableLight::handleDimming(QString actionName, void *serviceToken, const QHash<QString, QString> &arguments)
{
    if (actionName == "SetLoadLevelTarget") {
        QString raw = QString();
        if (arguments.contains("newLoadlevelTarget"))
            raw = arguments.value("newLoadlevelTarget");

        if (raw.isEmpty() == false) {
            bool parseResult;
            int parsed = raw.toInt(&parseResult);
            if (parseResult) {
                if(parseResult < 0 || parseResult > 100){
                    _outArgs["__errorCode"]    = QString::number(601);
                    _outArgs["__errorMessage"] = "Argument Value Out of range";
                }else{
                    _dimming->setDimmingLevel(parsed);

                    lightLoadLevelChanged(getLightLoadLevel());
                    lightLevelChanged(getLightLevel());

                    QString serviceId(DIMMING_SERV_ID);
                    if (_udaStack != NULL)
                        _udaStack->sendEvent(serviceId, serviceToken, "LoadLevelStatus", raw);
                    if (_ucaStack != NULL)
                        _ucaStack->sendEvent(serviceId, NULL, "LoadLevelStatus", raw);
                    }
            } else {
                _outArgs["__errorCode"]    = QString::number(402);
                _outArgs["__errorMessage"] = "Wrong value, expected number.";
            }
        }else{
            _outArgs["__errorCode"]    = QString::number(402);
            _outArgs["__errorMessage"] = "Missing argument newLoadlevelTarget";
        }
    } else if (actionName == "GetLoadLevelTarget") {
        _outArgs["retLoadlevelTarget"] = QString::number(getLightLoadLevel());
    } else if (actionName == "GetLoadLevelStatus") {
        _outArgs["retLoadlevelStatus"] = QString::number(getLightLoadLevel());
    } else{
        _outArgs["__errorCode"] = QString::number(401);
        _outArgs["__errorMessage"] = "Invalid action";
    }
}
コード例 #5
0
void DimmableLight::handleSwitchPower(QString actionName, void *serviceToken, const QHash<QString, QString> &arguments)
{
    if (actionName == "SetTarget") {
        QString raw = QString();
        if (arguments.contains("NewTargetValue"))
            raw = arguments.value("NewTargetValue");

        if (raw.isEmpty() == false) {
            bool parseResult;
            int parsed = raw.toInt(&parseResult);
            if (parseResult) {
                _switch->setEnabled(parsed);

                lightEnabledChanged(_switch->getEnabled() > 0);
                lightLevelChanged(getLightLevel());

                QString serviceId(SWITCHPOWER_SERV_ID);
                if (_udaStack != NULL)
                    _udaStack->sendEvent(serviceId, serviceToken, "Status", raw);
                if (_ucaStack != NULL)
                    _ucaStack->sendEvent(serviceId, NULL, "Status", raw);
            } else {
                _outArgs["__errorCode"]    = QString::number(402);
                _outArgs["__errorMessage"] = "Wrong value, expected boolean.";
            }
        }else{
            _outArgs["__errorCode"]    = QString::number(402);
            _outArgs["__errorMessage"] = "Missing argument NewTargetValue";
        }
    } else if (actionName == "GetTarget") {
        _outArgs["RetTargetValue"] = QString::number(getLightEnabled());
    } else if (actionName == "GetStatus") {
        _outArgs["ResultStatus"] = QString::number(getLightEnabled());
    } else{
        _outArgs["__errorCode"] = QString::number(401);
        _outArgs["__errorMessage"] = "Invalid action";
    }
}
コード例 #6
0
// Update function to be called from main loop() method
void PetduinoSerial::update() {

  // Update Petduino
  Petduino::update();

  // Process incoming serial data, and perform callbacks
  cmdMessenger.feedinSerialData();

  // Check for btn1 state change
  bool btn1StateChanged = Petduino::debounce(BTN1, serialBtn1State, serialBtn1LastState, serialBtn1DebounceTimestamp);
  if(btn1StateChanged) {
    cmdMessenger.sendCmd(BTN1_EVENT, serialBtn1State == LOW);
  }

  // Check for btn2 state change
  bool btn2StateChanged = Petduino::debounce(BTN2, serialBtn2State, serialBtn2LastState, serialBtn2DebounceTimestamp);
  if(btn2StateChanged) {
    cmdMessenger.sendCmd(BTN2_EVENT, serialBtn2State == LOW);
  }

  // Check for temperature state changed
  if(tempBroadcastThreshold > 0){
    float reading = getTemperature();
    int readingInt = (int)floor(reading + 0.5);
    int readingDir = (lastTempReading - reading)/abs(lastTempReading - reading);
    if(abs(lastTempReading - reading) >= tempBroadcastThreshold) {
      if(tempReadingDir == 0 || tempReadingDir == readingDir) {
        if(tempReadingCount >= tempConsecutiveReadings){
          tempReadingCount = 0;
          tempReadingDir = 0;
          lastTempReading = reading;
          cmdMessenger.sendCmd(TEMPERATURE_EVENT, reading);
        } else  {
          tempReadingCount++;
          tempReadingDir = readingDir;
        }
      } else {
        tempReadingCount = 0;
        tempReadingDir = readingDir;
      }
    } else {
      tempReadingCount = 0;
      tempReadingDir = 0;
    }
  }

  // Check for light level state changes
  if(ldrBroadcastThreshold > 0) {
    int reading = getLightLevel();
    int readingDir = (lastLdrReading - reading)/abs(lastLdrReading - reading);
    if(abs(lastLdrReading - reading) >= ldrBroadcastThreshold) {
      if(ldrReadingDir == 0 || ldrReadingDir == readingDir) {
        if(ldrReadingCount >= ldrConsecutiveReadings) {
          ldrReadingCount = 0;
          ldrReadingDir = 0;
          lastLdrReading = reading;
          cmdMessenger.sendCmd(LIGHT_LEVEL_EVENT, reading);
        } else {
          ldrReadingCount++;
          ldrReadingDir = readingDir;
        }
      } else {
        ldrReadingCount = 0;
        ldrReadingDir = readingDir;
      }
    } else {
      ldrReadingCount = 0;
      ldrReadingDir = 0;
    }
  }

}
コード例 #7
0
// Get temperature command handler
void PetduinoSerial::onGetLightLevel()
{
  // Send status that describes the led state manually
  cmdMessenger.sendCmd(LIGHT_LEVEL_EVENT, getLightLevel());
}