int YRealTimeClock::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "unixTime")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _unixTime =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "dateTime")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _dateTime =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "utcOffset")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _utcOffset =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "timeSet")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _timeSet =  (Y_TIMESET_enum)atoi(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #2
0
int YAltitude::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "qnh")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _qnh =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "technology")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _technology =  _parseString(j);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
int YQuadratureDecoder::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "speed")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _speed =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "decoding")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _decoding =  (Y_DECODING_enum)atoi(j.token);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
int YCarbonDioxide::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "abcPeriod")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _abcPeriod =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "command")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _command =  _parseString(j);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
예제 #5
0
int YFiles::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "filesCount")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _filesCount =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "freeSpace")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _freeSpace =  atoi(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #6
0
int YLed::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "power")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _power =  (Y_POWER_enum)atoi(j.token);
        } else if(!strcmp(j.token, "luminosity")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _luminosity =  atoi(j.token);
        } else if(!strcmp(j.token, "blinking")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _blinking =  (Y_BLINKING_enum)atoi(j.token);
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
예제 #7
0
int YLightSensor::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "measureType")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _measureType =  (Y_MEASURETYPE_enum)atoi(j.token);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
예제 #8
0
int YGyro::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "xValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _xValue =  atof(j.token)/65536;
        return 1;
    }
    if(!strcmp(j.token, "yValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _yValue =  atof(j.token)/65536;
        return 1;
    }
    if(!strcmp(j.token, "zValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _zValue =  atof(j.token)/65536;
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
int YMagnetometer::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "xValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _xValue =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "yValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _yValue =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "zValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _zValue =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
int YGenericSensor::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "signalValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _signalValue =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "signalUnit")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _signalUnit =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "signalRange")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _signalRange =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "valueRange")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _valueRange =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "signalBias")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _signalBias =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "signalSampling")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _signalSampling =  (Y_SIGNALSAMPLING_enum)atoi(j.token);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
예제 #11
0
int YWireless::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "linkQuality")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _linkQuality =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "ssid")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ssid =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "channel")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _channel =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "security")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _security =  (Y_SECURITY_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "message")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _message =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "wlanConfig")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _wlanConfig =  _parseString(j);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #12
0
YFileRecord::YFileRecord(const string& json)
{
    yJsonStateMachine j;
    
    // Parse JSON data 
    j.src = json.c_str();
    j.end = j.src + strlen(j.src);
    j.st = YJSON_START;
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
        return ;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if (!strcmp(j.token, "name")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return ;
            }
            _name = (string)j.token;
            while(j.next == YJSON_PARSE_STRINGCONT && yJsonParse(&j) == YJSON_PARSE_AVAIL) {
                _name =(string)j.token;
            }
        } else if(!strcmp(j.token, "crc")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return;
            }
            _crc = atoi(j.token);;
        } else if(!strcmp(j.token, "size")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return;
            }
            _size = atoi(j.token);;
        } else {
            yJsonSkip(&j, 1);
        }
    }
}
예제 #13
0
YWlanRecord::YWlanRecord(const string& json):_ssid(""),_channel(-1),_sec(""),_rssi(-1)
{
    yJsonStateMachine j;
    
    // Parse JSON data 
    j.src = json.c_str();
    j.end = j.src + strlen(j.src);
    j.st = YJSON_START;
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
        return ;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if (!strcmp(j.token, "ssid")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return ;
            }
            _ssid = (string)j.token;
            while(j.next == YJSON_PARSE_STRINGCONT && yJsonParse(&j) == YJSON_PARSE_AVAIL) {
                _ssid +=(string)j.token;
            }
        }else if (!strcmp(j.token, "sec")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return ;
            }
            _sec = (string)j.token;
            while(j.next == YJSON_PARSE_STRINGCONT && yJsonParse(&j) == YJSON_PARSE_AVAIL) {
                _sec +=(string)j.token;
            }
        } else if(!strcmp(j.token, "channel")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return;
            }
            _channel = atoi(j.token);;
        } else if(!strcmp(j.token, "rssi")) {
            if (yJsonParse(&j) != YJSON_PARSE_AVAIL) {
                return;
            }
            _rssi = atoi(j.token);;
        } else {
            yJsonSkip(&j, 1);
        }
    }
}
예제 #14
0
int YNetwork::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "readiness")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _readiness =  (Y_READINESS_enum)atoi(j.token);
        } else if(!strcmp(j.token, "macAddress")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _macAddress =  _parseString(j);
        } else if(!strcmp(j.token, "ipAddress")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _ipAddress =  _parseString(j);
        } else if(!strcmp(j.token, "subnetMask")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _subnetMask =  _parseString(j);
        } else if(!strcmp(j.token, "router")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _router =  _parseString(j);
        } else if(!strcmp(j.token, "ipConfig")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _ipConfig =  _parseString(j);
        } else if(!strcmp(j.token, "primaryDNS")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _primaryDNS =  _parseString(j);
        } else if(!strcmp(j.token, "secondaryDNS")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _secondaryDNS =  _parseString(j);
        } else if(!strcmp(j.token, "userPassword")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _userPassword =  _parseString(j);
        } else if(!strcmp(j.token, "adminPassword")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _adminPassword =  _parseString(j);
        } else if(!strcmp(j.token, "discoverable")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _discoverable =  (Y_DISCOVERABLE_enum)atoi(j.token);
        } else if(!strcmp(j.token, "wwwWatchdogDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _wwwWatchdogDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "callbackUrl")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackUrl =  _parseString(j);
        } else if(!strcmp(j.token, "callbackMethod")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMethod =  (Y_CALLBACKMETHOD_enum)atoi(j.token);
        } else if(!strcmp(j.token, "callbackEncoding")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackEncoding =  (Y_CALLBACKENCODING_enum)atoi(j.token);
        } else if(!strcmp(j.token, "callbackCredentials")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackCredentials =  _parseString(j);
        } else if(!strcmp(j.token, "callbackMinDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMinDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "callbackMaxDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMaxDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "poeCurrent")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _poeCurrent =  atoi(j.token);
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
예제 #15
0
int YDisplay::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "powerState")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _powerState =  (Y_POWERSTATE_enum)atoi(j.token);
        } else if(!strcmp(j.token, "startupSeq")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _startupSeq =  _parseString(j);
        } else if(!strcmp(j.token, "brightness")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _brightness =  atoi(j.token);
        } else if(!strcmp(j.token, "orientation")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _orientation =  (Y_ORIENTATION_enum)atoi(j.token);
        } else if(!strcmp(j.token, "displayWidth")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _displayWidth =  atoi(j.token);
        } else if(!strcmp(j.token, "displayHeight")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _displayHeight =  atoi(j.token);
        } else if(!strcmp(j.token, "displayType")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _displayType =  (Y_DISPLAYTYPE_enum)atoi(j.token);
        } else if(!strcmp(j.token, "layerWidth")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _layerWidth =  atoi(j.token);
        } else if(!strcmp(j.token, "layerHeight")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _layerHeight =  atoi(j.token);
        } else if(!strcmp(j.token, "layerCount")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _layerCount =  atoi(j.token);
        } else if(!strcmp(j.token, "command")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _command =  _parseString(j);
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
예제 #16
0
int YRelay::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "state")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _state =  (Y_STATE_enum)atoi(j.token);
        } else if(!strcmp(j.token, "output")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _output =  (Y_OUTPUT_enum)atoi(j.token);
        } else if(!strcmp(j.token, "pulseTimer")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _pulseTimer =  atoi(j.token);
        } else if(!strcmp(j.token, "delayedPulseTimer")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            if(j.st != YJSON_PARSE_STRUCT) goto failed;
            while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
                if(!strcmp(j.token, "moving")) {
                    if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                    _delayedPulseTimer.moving = atoi(j.token);
                } else if(!strcmp(j.token, "target")) {
                    if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                    _delayedPulseTimer.target = atoi(j.token);
                } else if(!strcmp(j.token, "ms")) {
                    if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                    _delayedPulseTimer.ms = atoi(j.token);
                }
            }
            if(j.st != YJSON_PARSE_STRUCT) goto failed; 
            
        } else if(!strcmp(j.token, "countdown")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _countdown =  atoi(j.token);
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
예제 #17
0
int YAnButton::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "calibratedValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _calibratedValue =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "rawValue")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _rawValue =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "analogCalibration")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _analogCalibration =  (Y_ANALOGCALIBRATION_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "calibrationMax")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _calibrationMax =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "calibrationMin")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _calibrationMin =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "sensitivity")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _sensitivity =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "isPressed")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _isPressed =  (Y_ISPRESSED_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "lastTimePressed")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _lastTimePressed =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "lastTimeReleased")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _lastTimeReleased =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "pulseCounter")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _pulseCounter =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "pulseTimer")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _pulseTimer =  atol(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #18
0
int YColorLed::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "rgbColor")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _rgbColor =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "hslColor")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _hslColor =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "rgbMove")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "hslMove")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "rgbColorAtPowerOn")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _rgbColorAtPowerOn =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqSize")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqSize =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqMaxSize")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqMaxSize =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqSignature")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqSignature =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "command")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _command =  _parseString(j);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #19
0
int YCurrent::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "unit")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _unit =  _parseString(j);
        } else if(!strcmp(j.token, "currentValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _currentValue =  floor(atof(j.token)/65536.0+.5);
        } else if(!strcmp(j.token, "lowestValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _lowestValue =  floor(atof(j.token)/65536.0+.5);
        } else if(!strcmp(j.token, "highestValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _highestValue =  floor(atof(j.token)/65536.0+.5);
        } else if(!strcmp(j.token, "currentRawValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _currentRawValue =  atof(j.token)/65536.0;
        } else if(!strcmp(j.token, "calibrationParam")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _calibrationParam =  _parseString(j);
        } else if(!strcmp(j.token, "resolution")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _resolution =  (atoi(j.token) > 100 ? 1.0 / floor(65536.0/atof(j.token)+.5) : 0.001 / floor(67.0/atof(j.token)+.5));
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
예제 #20
0
int YServo::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "position")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _position =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "enabled")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _enabled =  (Y_ENABLED_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "range")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _range =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "neutral")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _neutral =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "move")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _move.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _move.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _move.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "positionAtPowerOn")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _positionAtPowerOn =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "enabledAtPowerOn")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _enabledAtPowerOn =  (Y_ENABLEDATPOWERON_enum)atoi(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #21
0
int YRelay::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "state")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _state =  (Y_STATE_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "stateAtPowerOn")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _stateAtPowerOn =  (Y_STATEATPOWERON_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "maxTimeOnStateA")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _maxTimeOnStateA =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "maxTimeOnStateB")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _maxTimeOnStateB =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "output")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _output =  (Y_OUTPUT_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "pulseTimer")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _pulseTimer =  atol(j.token);
        return 1;
    }
    if(!strcmp(j.token, "delayedPulseTimer")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _delayedPulseTimer.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _delayedPulseTimer.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _delayedPulseTimer.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "countdown")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _countdown =  atol(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
예제 #22
0
int YNetwork::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "readiness")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _readiness =  (Y_READINESS_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "macAddress")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _macAddress =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ipAddress")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ipAddress =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "subnetMask")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _subnetMask =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "router")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _router =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ipConfig")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ipConfig =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "primaryDNS")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _primaryDNS =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "secondaryDNS")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _secondaryDNS =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ntpServer")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ntpServer =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "userPassword")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _userPassword =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "adminPassword")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _adminPassword =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "httpPort")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _httpPort =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "defaultPage")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _defaultPage =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "discoverable")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _discoverable =  (Y_DISCOVERABLE_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "wwwWatchdogDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _wwwWatchdogDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackUrl")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackUrl =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "callbackMethod")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMethod =  (Y_CALLBACKMETHOD_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackEncoding")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackEncoding =  (Y_CALLBACKENCODING_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackCredentials")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackCredentials =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "callbackMinDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMinDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackMaxDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMaxDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "poeCurrent")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _poeCurrent =  atoi(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}