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); } } }
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; }
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; }
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; }
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); } } }
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; }
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; }