diff --git a/.gencode_hash.txt b/.gencode_hash.txt index df28f1ed03..205c6b6b38 100644 --- a/.gencode_hash.txt +++ b/.gencode_hash.txt @@ -1,21 +1,22 @@ -f5cf191b0151d2142fa634d1deafb93e35041d5b9ae89b26beab32fa25fb9521 gencode/docs/config.html +6e1a32e071eb2df1fa40908767277bd648a821772dfeb57c58d905e10323d238 gencode/docs/config.html 90679d3d866579501e7aa00b515af05d42fc9fe399eafacaacf297d1e4a22884 gencode/docs/envelope.html -368f12b9b695b31d97e65509c461f56c12762ec50b9baff89fd7fd85713e8fce gencode/docs/event_discovery.html +9362682fa830ce9d98b3c074cab05ba44fae96a82de316a3520df3956e9325dc gencode/docs/event_discovery.html 8133e380e40f27c56accbffc665b2eeb56ec84a4da3b52ba7aa5e439c9c40572 gencode/docs/event_pointset.html -076eb51e75281ed065a9f0236a1e19b6bf3c277b51ceca84f6aa3f76d5bb6022 gencode/docs/event_system.html -465a940ab96c32e040ae14b62f384ae9c472f646f3de1ea96288fd4c11de1409 gencode/docs/event_validation.html +06a8831025ad3cba59ed1831842db537525c26a713de92f6dd6c48656e3d772d gencode/docs/event_system.html +a471b2ded89ceb93dd4c70e9702db179fdd517fd45bfd2b43a95f8b9f287b50b gencode/docs/event_validation.html f48026471ae3cd7867bce416dc21c2fb728f48d8476a8d6e95f6acaf1d8b6cf3 gencode/docs/index.html 6d5081d04c86f8bd444efb41cd788826aa66802d37e8f98e93b6b75425542d5e gencode/docs/metadata.html 741b880216be3743f6747800a042f2dbd89f3b0344c6b0a965f4bc010f03a930 gencode/docs/schema_doc.css 878ea88206c974f40643c3cc430875f9c4e8c5e3fd6bcd6358bd3eb6d48699a9 gencode/docs/schema_doc.min.js 7ed934930aee763e0beebc349725ba3909115e8d346bb762f28bcbe745bb163a gencode/docs/schema_extras.js -16d46783ef2271abef54f071bb3723a4d124a95ec4fb5a536a7dee5c266d8899 gencode/docs/state.html +ffe0596792d14a35c395f84d5ee1ec76032fd29e0dd9c440984db8f8a5f1be1d gencode/docs/state.html d39d7fe37a41c74a40080af7b0a429d201ab1fdff7444428c4b98eb7b38c332b gencode/java/udmi/schema/Asset.java 0825a5cec83003bb0a6488c4ed7010a04ae0d3848ef36fe01bb4e6718ba7b96d gencode/java/udmi/schema/Aux.java d326a550d75ab7f558f165f1a5e8c24eee2b0b52290a7472f529bb1e15d79fb2 gencode/java/udmi/schema/BlobBlobsetConfig.java 2c03651cb2ecda072b1418222eebb5560185669f8ffdd03021ad5ad8ff7ba3b0 gencode/java/udmi/schema/BlobBlobsetState.java 3fccb6bc6714fdc3dd912c8b1155e7ce19b0ac8a7ec48a01be9eb27bdd034a75 gencode/java/udmi/schema/BlobsetConfig.java fcbed49f1af8b791d8c52bcbe18f65521a79d9ac3eb33ec3afd9b342ab2bfc56 gencode/java/udmi/schema/BlobsetState.java +0c908ea34ee54aa66f9ce472ad23ecaec3c091f2afbba7b509e1515b5557f82c gencode/java/udmi/schema/Category.java d6875f63ce67d1b945a0b75a4a660bd083cc52492371a7350c4109f6bf54968b gencode/java/udmi/schema/CloudIotConfig.java a2eeff86f4302272736d84602e2ca36a64d27c8ef6761cc05ffb8ad17b030d4d gencode/java/udmi/schema/CloudModel.java ff79de9390aa25bb45fb3e2ebb682c865ccab764f56d9644377d9d28c0ab10e4 gencode/java/udmi/schema/Config.java @@ -26,7 +27,7 @@ d8a80ab3180d33bfa17564c969018e1d4350a47dbc70c4ae8a5abbfb25cfedc9 gencode/java/u 04112dd47b0f761131c276c67d3cd8b789d25e6716b5732be9fef14fc6831f1d gencode/java/udmi/schema/DiscoveryModel.java 9962b0eb7d5adf52af6160e9f3131f8eeb52ae9e518954dbb6aead1bcad0245e gencode/java/udmi/schema/DiscoveryState.java 4e64cf10484266a297fb418b165dd84a9f4b8c2e53520b33915cc96365151fc2 gencode/java/udmi/schema/EndpointConfiguration.java -090bbaf1508aa6ca8380af936af990673f300eb5a940c9e8ab94deb64efa2b7b gencode/java/udmi/schema/Entry.java +885859ea9de29217186c34f3a90b112411d1beddaf58a88b85e7934cd3c92b6f gencode/java/udmi/schema/Entry.java cd362f94454eba8fd5ce3fce5d5e2b5f046d0dd9c35b01de69ef4d2e38413cc5 gencode/java/udmi/schema/Envelope.java e9f5c77be81486b6b8c6d88f70f2d50583d8c3fafa2ac09ead80f44b8d5e751e gencode/java/udmi/schema/Event.java aa0885ca43ab38c7597eacc38b7c512940a1a9fa061abd47d02c28e66b6fd93e gencode/java/udmi/schema/FamilyDiscoveryConfig.java @@ -57,13 +58,13 @@ fc3a9415c04d8a06954dbdbfdff5d68ab113cce3948532c19df555778ffb04fa gencode/java/u ca2e7566106818ca7e5190c8041eb86f0c9b3251b0bda8c3ea7ce11a0c891a0a gencode/java/udmi/schema/Position.java 3df66bb1a37a9e0b2b6cf392f8c64d404a73c83e5e13c02bb4844f09b9a04b70 gencode/java/udmi/schema/Properties.java faa1cd11467f9e58742cfee7124d4af04dbf481eb5a80549bbd2eb77bcc8059d gencode/java/udmi/schema/PubberConfiguration.java -e767077a73430254f7365dbb3f242a1bb5a953a4016c116663d31ae3fbf00509 gencode/java/udmi/schema/PubberOptions.java +a5737c70324cf13322c019049f80e334bf699dea2f434859762fe3553fee8308 gencode/java/udmi/schema/PubberOptions.java 7bc53cb9a61df8f804a75aa4860403d19281f7c665cbddd5364a2aa746a1f651 gencode/java/udmi/schema/ReflectorConfig.java abe99dd74122c186403baa6982300a9d5968f8bbb7a67b1689104111b98f32fb gencode/java/udmi/schema/ReflectorState.java 5a44075bc03f2b9b2cc090f007fd1692832871f0981dcb02579d8dda96a96206 gencode/java/udmi/schema/SetupReflectorConfig.java 649c0291ad81421fc51da0c2f7da3286628127157a5a6eef77610e8c37c14941 gencode/java/udmi/schema/SetupReflectorState.java 580df660dad1b97399002271716d597f72aa1a6110a49de9e162104c231752f4 gencode/java/udmi/schema/State.java -e0f70f8e2c4793ebd05a38dc249d329eaa5b0171097ecc5fad4630fa0df3536d gencode/java/udmi/schema/SystemConfig.java +a21ef284dcc82b0addbb10fdc429d1ef543f2353d2374a4b23c0d01e6ee2c2f9 gencode/java/udmi/schema/SystemConfig.java 7de481ba531ea915a57cb6c5b23278db4fac6588354683cf63613b20c522af24 gencode/java/udmi/schema/SystemDiscoveryEvent.java 247652dd11714452adc27ffa542e3d5915f8e9b7b255d181723d6fe1e897b565 gencode/java/udmi/schema/SystemEvent.java 2cf23174ef4e2876511fb471d3f9fcb5cefe2fde324db844c2d0d505fd2c8844 gencode/java/udmi/schema/SystemHardware.java @@ -71,10 +72,12 @@ e0f70f8e2c4793ebd05a38dc249d329eaa5b0171097ecc5fad4630fa0df3536d gencode/java/u 127cd1f0f137cd79c8f42e289bd80e8509b7cc269f69d9ac10874706a7a1a0b6 gencode/java/udmi/schema/SystemState.java 7d6dd13e368e7f073738fee69c15e18652a9b7d7ac63bde0a200f747e3aa1b1d gencode/java/udmi/schema/TargetTestingModel.java d3968b92497e83a63f18cc0e74484a9807f1bb92db0c92d556ec2caaa143d645 gencode/java/udmi/schema/TestingModel.java +8a7dd590b84944de25392b1437184608edd2f8305a183eced8b1b40eae27c6d2 gencode/java/udmi/schema/TestingSystemConfig.java 347da3d586ff6e5dcf3ce8ec0c800ec0efd5fed4e0c80eef35de65ad92ae48bf gencode/java/udmi/schema/ValidationEvent.java e007ddd1ceeae3603c85110c33e1bb4a418ff9c7a791ca0df25b7ea3caeafd36 gencode/java/udmi/schema/ValidationSummary.java -32e82ac7f7e20c77ab5d40d3de0a06c3934267d449b243bb9cad48493974c306 gencode/python/udmi/schema/__init__.py +7b1c07e966ca1b74f6465f9313e64391fe64a2935337c7293e901e2d6e5863b4 gencode/python/udmi/schema/__init__.py 4b25dd95f863059b761269f93adcae7049507924a1c6e74d6856849203c179db gencode/python/udmi/schema/ancillary_properties.py +70f9b662321b8acded5943749539fb9376f1247e986918ea2cfac65e3d307953 gencode/python/udmi/schema/category.py a61b1c5732f01b7efda41a773d5786fad755f371193ce4478b458387ca2a8fe8 gencode/python/udmi/schema/cloud_iot_config.py 6578d68f65b87b781086e72566de910db4bef365599fe3188862d4d8a81e84fb gencode/python/udmi/schema/command_discovery.py 2082a9f3ff4d37bb13a647932fcacb99499f71569cd9dc12d5e63dead34fee63 gencode/python/udmi/schema/common.py @@ -87,7 +90,8 @@ b461bdc24310ef972faf579b5be577b5af67fb0977d6afb4c42955211b26e3d5 gencode/python 8b2bf3e753c09e375f0fd59dcf1f0be61205ed247160b7a8718cb3b9ebef2c30 gencode/python/udmi/schema/config_localnet.py 9eab64849e04b25203d5da47856c3f8dda2b96903e4dc43ab932ee35014700bd gencode/python/udmi/schema/config_pointset.py 607c5047df878a1333df3ce88dcce34668959b0b315f6954bf1a4963dcf7839e gencode/python/udmi/schema/config_pointset_point.py -68685118163ea55f23938aafd10308faad1e2bf86c4f2fa9341cb53e19e2a260 gencode/python/udmi/schema/config_system.py +2a016b8d45868db8a146a6b84badc13c0668b94d55ab2647630645e71c4e4419 gencode/python/udmi/schema/config_system.py +97c2e5fadc6da0d84660f3296de885ab59f4b04154179b6717f77ec366f1544b gencode/python/udmi/schema/config_system_testing.py 998ce105f88686f27b85f3630a396ed04b106f830c133a684ea5c505ca95b1c3 gencode/python/udmi/schema/envelope.py 1eb9019b9d0b4ff7de2df8beb625a4f89292d636ece0c02f160495c537bd6c2c gencode/python/udmi/schema/event.py 82182e3f569ad80dc0751027959c7db9135d10072fbe79f896d63a4cd2f4771f gencode/python/udmi/schema/event_discovery.py @@ -113,7 +117,7 @@ aafe6e70c281152db958adf77a024e3e9fab8293927106297c5ec48c11f54e27 gencode/python 5c50847e136a033ea511209238bb570499b43fbee6189dae06603132dcb9f01f gencode/python/udmi/schema/model_testing_target.py a58f8c98e837a5b56126ca0f410e02f1e9cfcd80a8cb429e0ef522defab1f690 gencode/python/udmi/schema/properties.py 1b2dba2ff079366560c7106aecc5289db19312816fa34a86459e429c94972761 gencode/python/udmi/schema/pubber_configuration.py -68b34e6aed281e62e2b62d0aaea57a57f1d3a657ed39cbd849ddd69659d9d454 gencode/python/udmi/schema/pubber_options.py +0c895896f4bad5b50a9332706adb0f751618c37a125dbe6780ff92bd729923d7 gencode/python/udmi/schema/pubber_options.py 1f521678016ad267ad1c817896c7900ba30a85fc694669577b71148193db32c1 gencode/python/udmi/schema/reflect_config.py 1a4eef286957d77418777eb7f4cd1ee13aa24c2d916ec71a7ff4e56de76e303e gencode/python/udmi/schema/reflect_state.py 32bc70a30e37e89cfae14b44add18d546a6f9e00a3ec3519ede9c7486114d39c gencode/python/udmi/schema/state.py diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 813d57a9f2..40f5b0acfc 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -106,15 +106,16 @@ jobs: run: | bin/test_sequencer $GCP_TARGET_PROJECT more /tmp/sequencer.out + echo Comparing test run results with golden file: diff -u /tmp/sequencer.out etc/sequencer.out && echo No output diff detected. - name: telemetry validator env: GCP_TARGET_PROJECT: ${{ secrets.GCP_TARGET_PROJECT }} if: "${{ env.GCP_TARGET_PROJECT != '' }}" run: | - # Run after sequencer to device config starts in a known state bin/test_validator $GCP_TARGET_PROJECT more /tmp/validator.out + echo Comparing test run results with golden file: diff -u /tmp/validator.out etc/validator.out && echo No validator diff detected. - name: output logs env: @@ -128,4 +129,4 @@ jobs: if: ${{ always() }} run: | cat pubber.out || true - more out/*.json + more pubber/out/*.json diff --git a/bin/gencode_categories b/bin/gencode_categories new file mode 100755 index 0000000000..8fb47505b7 --- /dev/null +++ b/bin/gencode_categories @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 + +import hashlib +import json +import re +import os +import shutil +import sys + +GENCODE_MARKER = '@@ ' +CATEGORY_MARKER = '* ' +CATEGORY_REGEX = ' *\\* _([a-z]+)_: (\(\*\*([A-Z]+)\*\*\) )?(.*)' +JSON_FORMAT = '%s%s{ "pattern": "^%s$" }' + +JAVA_DESCRIPTION = "\n%s// %s\n" +JAVA_TARGET = '%spublic static final String %s = "%s";\n' +JAVA_LEVEL = '%spublic static final Level %s_LEVEL = %s;\n' +JAVA_MAP_ADD = '%sstatic { LEVEL.put(%s, %s); }\n' + +doc_in = os.path.join('docs/specs/categories.md') +schema_in = os.path.join('etc/category.json') +schema_out = os.path.join('schema/category.json') +java_in = os.path.join('etc/Category.java') +java_out = os.path.join('gencode/java/udmi/schema/Category.java') + +def read_categories(): + categories = [] + prefix = [] + previous = -1 + group = None + with open(doc_in) as doc: + while line := doc.readline(): + indent = line.find(CATEGORY_MARKER)//2 + match = re.match(CATEGORY_REGEX, line) + if indent < 0 or not match: + continue + if indent < previous: + for _ in range(indent, previous): + rem = prefix.pop(len(prefix) - 1) + elif indent > previous: + if group: + prefix.append(group) + previous = indent + group = match.group(1) + category = '.'.join(prefix + [group]) + level = match.group(3) + description = match.group(4) + if level: + entry = (category, level, description) + categories.append(entry) + return categories + +def write_schema_out(categories): + with open(schema_in) as inp: + with open(schema_out, 'w') as out: + while line := inp.readline(): + index = line.find(GENCODE_MARKER) + if index >= 0: + write_schema_categories(out, line[0:index], categories) + else: + out.write(line) + +def write_schema_categories(out, indent, categories): + prefix = '' + for category in categories: + target = category[0].replace('.', '\\\\.') + out.write(JSON_FORMAT % (prefix, indent, target)) + prefix = ',\n' + out.write('\n') + +def write_java_out(categories): + os.makedirs(os.path.dirname(java_out), exist_ok=True) + with open(java_in) as inp: + with open(java_out, 'w') as out: + while line := inp.readline(): + index = line.find(GENCODE_MARKER) + if index >= 0: + indent = line[0:index] + write_java_categories(out, indent, categories) + else: + out.write(line) + +def write_java_categories(out, indent, categories): + for category in categories: + target = category[0] + level = category[1] + desc = category[2] + const = target.replace('.', '_').upper() + out.write(JAVA_DESCRIPTION % (indent, desc)) + out.write(JAVA_TARGET % (indent, const, target)) + out.write(JAVA_LEVEL % (indent, const, level)) + out.write(JAVA_MAP_ADD % (indent, const, level)) + + +categories = read_categories() +write_schema_out(categories) +write_java_out(categories) diff --git a/bin/gencode_docs b/bin/gencode_docs index 6e598c3891..eec2ab4236 100755 --- a/bin/gencode_docs +++ b/bin/gencode_docs @@ -19,15 +19,21 @@ ROOT_DIR=$(realpath $(dirname $0)/..) cd $ROOT_DIR +OP= +if [[ -n $1 ]]; then + OP=$1 + shift +fi + OUTPUT_DIR=$ROOT_DIR/gencode/docs TMP_DIR=$ROOT_DIR/tmp/schema schema_files=`ls schema/*.json` -if [ "$1" == gen_bucket ]; then - shift 1 +if [ "$OP" == gen_bucket ]; then + rm -rf $OUTPUT_DIR $TMP_DIR - input_file=$1 + input_file=$OP output_file=$2 tmp_file=$output_file.tmp @@ -50,7 +56,7 @@ if [ "$1" == gen_bucket ]; then fi -if [ "$1" == check_links ]; then +if [ "$OP" == check_links ]; then if [ -d venv ]; then source venv/bin/activate fi @@ -71,7 +77,6 @@ if [ -d venv ]; then source venv/bin/activate fi -rm -rf $OUTPUT_DIR mkdir -p $OUTPUT_DIR # Make a copy of the schema files into a tmp folder for any pre generator fixes diff --git a/bin/gencode_java b/bin/gencode_java index a5a8b9b958..36fd3ca987 100755 --- a/bin/gencode_java +++ b/bin/gencode_java @@ -6,9 +6,11 @@ JBASENAME=jsonschema2pojo ROOT_DIR=$(realpath $(dirname $0)/..) cd $ROOT_DIR -rm -rf gencode +rm -rf gencode/java codegen/java mkdir -p codegen gencode +bin/gencode_categories + OUTDIR=$ROOT_DIR/gencode/java cd codegen GENDIR=$PWD diff --git a/bin/gencode_python b/bin/gencode_python index 030e64e2d1..e1f271152c 100755 --- a/bin/gencode_python +++ b/bin/gencode_python @@ -3,6 +3,7 @@ import hashlib import json import os +import shutil import sys FILE_PREFIX="file:" @@ -261,6 +262,7 @@ def generate_class(contents): write_class(writer, contents) def generate_module(in_files): + shutil.rmtree(out_dir) os.makedirs(out_dir, exist_ok=True) full_path = os.path.join(out_dir, '__init__.py') with open(full_path, 'w') as fd: diff --git a/bin/pubber b/bin/pubber index 35d7b03c82..505dd32b77 100755 --- a/bin/pubber +++ b/bin/pubber @@ -18,6 +18,9 @@ if [ ! -f $site_path/cloud_iot_config.json ]; then false fi +echo Cleaning output direction $ROOT_DIR/pubber/out +rm -rf $ROOT_DIR/pubber/out + echo Building pubber... $ROOT_DIR/pubber/bin/build diff --git a/bin/reset_config b/bin/reset_config index b084c514f9..f40201868f 100755 --- a/bin/reset_config +++ b/bin/reset_config @@ -24,7 +24,8 @@ dst_config=/tmp/${device_id}_config.json src_config=${site_dir}/devices/${device_id}/out/$config_file now_date=$(python3 -c 'import datetime; print(datetime.datetime.utcnow().isoformat() + "Z")') echo Setting config timestamp ${now_date} -jq .timestamp=\"${now_date}\" < ${src_config} > ${dst_config} +jq < ${src_config} .timestamp=\"${now_date}\" |\ + jq .system.testing.sqeuence_name=\"${config_file%.json}\" > ${dst_config} echo Resetting device ${device_id} config... validator/bin/reflector ${site_dir} ${project_id} ${device_id} update/config:${dst_config} diff --git a/bin/test_sequencer b/bin/test_sequencer index b355765201..f7f12c9b21 100755 --- a/bin/test_sequencer +++ b/bin/test_sequencer @@ -55,15 +55,19 @@ if [[ $i -eq $WAITING ]]; then false fi -bin/sequencer $site_path $project_id $device_id $serial_no +bin/sequencer -vv $site_path $project_id $device_id $serial_no +echo Completed execution of sequencer test run. sed -i -e 's/.*sequencer RESULT/RESULT/' /tmp/sequencer.out +echo Copied output to /tmp/sequencer.out for later examination. pids=`ps ax | fgrep pubber | fgrep java | awk '{print $1}'` if [[ -n $pids ]]; then echo Killing pubber pids $pids kill $pids else - echo No pubber pids found, likely due to premature termination. + echo No pubber pids found, likely due to premature termination: failing test run. false fi + +echo Done with base test_sequencer run. diff --git a/docs/specs/categories.md b/docs/specs/categories.md index 207acc8b21..510c0a6ef1 100644 --- a/docs/specs/categories.md +++ b/docs/specs/categories.md @@ -10,9 +10,9 @@ implicit expected `level` values, indicated by '(**LEVEL**)' in the hierarchy be * _system_: Basic system operation * _base_: Baseline system operational messages - * _start_ (**NOTICE**): System is in the process of (re)starting and essentially offline - * _shutdown_ (**NOTICE**): System is shutting down - * _ready_: (**NOTICE**): System is fully ready for operation + * _start_: (**NOTICE**) System is in the process of (re)starting and essentially offline + * _shutdown_: (**NOTICE**) System is shutting down + * _ready_: (**NOTICE**) System is fully ready for operation * _comms_: Baseline message handling * _config_: Configuration message handling * _receive_: (**DEBUG**) Receiving a config message @@ -26,9 +26,21 @@ implicit expected `level` values, indicated by '(**LEVEL**)' in the hierarchy be * _logout_: (**NOTICE**) Successful logout * _fail_: (**WARNING**) Failed authentication attempt. The entry message should include the application * _pointset_: Handling managing data point conditions - * _point_: Conditions relating to a specific point, the entry `message` field should - start with "Point _pointname_" followed by descriptive information. - * _applied_ (**INFO**): The `set_value` for a point has been implied - * _updating_ (**NOTICE**): The point is in the process of updating - * _overridden_ (**WARNING**): The reported value has been overridden locally - * _invalid_ (**ERROR**): A `config` parameter for the point is invalid in some way + * _point_: Conditions relating to a specific point, the entry `message` should start with "Point _pointname_" + * _applied_: (**INFO**) The `set_value` for a point has been applied + * _updating_: (**NOTICE**) The point is in the process of updating + * _overridden_: (**WARNING**) The reported value has been overridden locally + * _failure_: (**ERROR**) The system failed to read/write the point + * _invalid_: (**ERROR**) A `config` parameter for the point is invalid in some way +* _discovery_: Handling on-prem discovery flow + * _family_: Conditions specific to an entire address family (e.g. bacnet) + * _scan_: (**INFO**) Relating to scanning a particular address family + * _device_: Conditions specific to device scanning + * _enumerate_: (**INFO**) Handling point enumeration for a given device + * _point_: Conditions specific to point enumeration + * _describe_: (**INFO**) Relating to describing a particular point +* _blobset_: Handling update of device data blobs + * _blob_: Conditions specific to an individual blob + * _received_: (**DEBUG**) Request for an update has been received + * _fetched_: (**DEBUG**) Update blob has been successfully fetched + * _applied_: (**NOTICE**) Update has been successfully applied diff --git a/docs/tools/pubber.md b/docs/tools/pubber.md index b3ff10437a..cb125e342a 100644 --- a/docs/tools/pubber.md +++ b/docs/tools/pubber.md @@ -22,22 +22,24 @@ Pubber is run from the CLI within the UDMI directory. * `SERIAL_NO` - serial number to use (can be any alphanumeric string) * `[options]` - optional configuration parameters which change pubber behavior +Output will be collected in `pubber/out/`, including a complete log and message traces. + ### Options The following parameters are currently supported from the CLI: -* `extraPoint=` - adds an extra point with the given name to the device +* `extraPoint=`: Adds an extra point with the given name to the device which does not exist in device's metadata with a random value (will trigger validation additional point error) -* `missingPoint=` - removes the point with the given name (if exists) from +* `missingPoint=`: Removes the point with the given name (if exists) from the device's active pointset at initialization (will trigger validation missing point) -* `extraField=` - adds an extra schema invalidating field to pointset events +* `extraField=`: Adds an extra schema invalidating field to pointset events (will trigger validation schema error) -* `noHardware` - omits the `system.hardware` field from state messages (will +* `noHardware`: Omits the `system.hardware` field from state messages (will trigger validation error, missing required field) -* `noConfigAck` - subscribes to the `config` topic with a QoS of 0, therefore +* `noConfigAck`: Subscribes to the `config` topic with a QoS of 0, therefore will not send PUBACK's for config messages - +* `messageTrace`: More verbose output of captured messages (to `pubber/out/`) More advanced options can be set by by calling pubber directly with the path a configuration file: `pubber/bin/run path/to/config.json` @@ -153,3 +155,21 @@ specific setup. The relevant bits of configuration are the information in the LEVEL = new HashMap(); + + @@ gencode stuff goes here +} diff --git a/etc/category.json b/etc/category.json new file mode 100644 index 0000000000..39ec940909 --- /dev/null +++ b/etc/category.json @@ -0,0 +1,6 @@ +{ + "$comment": "Auto-generated category mappings from bin/gencode_categories.", + "oneOf": [ + @@ gencode stuff goes here + ] +} diff --git a/etc/sequencer.out b/etc/sequencer.out index eeddae8818..c76eaf0044 100644 --- a/etc/sequencer.out +++ b/etc/sequencer.out @@ -5,6 +5,7 @@ RESULT pass periodic_scan Sequence complete RESULT pass self_enumeration Sequence complete RESULT pass single_scan Sequence complete RESULT pass system_last_update Sequence complete +RESULT pass system_min_loglevel Sequence complete RESULT pass valid_serial_no Sequence complete RESULT pass valid_serial_no Sequence complete RESULT pass valid_serial_no Sequence complete diff --git a/etc/validator.out b/etc/validator.out index 2383f0c1aa..7746ae533b 100644 --- a/etc/validator.out +++ b/etc/validator.out @@ -16,3 +16,17 @@ sites/udmi_site_model/out/devices/AHU-1/event_pointset.out }, "pointset" : { } } +:::::::::::::: +sites/udmi_site_model/out/devices/AHU-1/event_system.out +:::::::::::::: +{ + "timestamp" : "1999-10-20T01:02:03Z", + "version" : "1.3.14", + "sub_folder" : "system", + "sub_type" : "event", + "status" : { + "message" : "While converting to json node: 1 schema violations found", + "category" : "validation.error.simple", + "level" : 500 + } +} diff --git a/gencode/docs/config.html b/gencode/docs/config.html index 1f1ec80861..4d2a38bb50 100644 --- a/gencode/docs/config.html +++ b/gencode/docs/config.html @@ -257,6 +257,97 @@

Must be one of:

+ + + + +
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Configuration parameters for device-under-test

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

The sequence name currently being tested (for debug logging)

+
+ + + + + + +
+
+
+
diff --git a/gencode/docs/event_discovery.html b/gencode/docs/event_discovery.html index 2a38e77fbe..140b81682c 100644 --- a/gencode/docs/event_discovery.html +++ b/gencode/docs/event_discovery.html @@ -284,36 +284,165 @@

d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z" /> - category

Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + categoryType: object
+ + +

+ +

+
- + Type: object
+Must match regular expression: ^system\.base\.start$ -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
- -
-
-
-

- -

-
+ + -
-
+ +
+ Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ category + + + + oneOf + + + + item 1
Type: object
+Must match regular expression: ^system\.base\.shutdown$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
- -
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
+ category + + + + oneOf + + + + item 2
Type: object
+Must match regular expression: ^system\.base\.ready$ -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ -
-
Example:
-
600
-
-
-
-
-
- - - - - -
-
-
-

- -

-
+ +
+ -
-
+ Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ Type: string
-

The primary scan discovery address family

-
+ status + + + + category + + + + oneOf + + + + item 4
Type: object
+Must match regular expression: ^system\.config\.parse$ -
-
-
- -
-
-
-

- -

-
+
+ -
-
+ Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ Type: string
-

The primary id of the device (for scan_family)

-
+ status + + + + category + + + + oneOf + + + + item 6
Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+ + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

The primary scan discovery address family

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

The primary id of the device (for scan_family)

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Address family results for a scan. Not included for device enumeration messages.

+
No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^iot|bacnet|ipv4|ipv6|ethmac$ +
+ + Type: object
+

Discovery information for an individual protocol family.

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Device id in the namespace of the given family

+
Must match regular expression: ^[-_.:0-9A-Z]+$ + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Collection of data points available for this device.

+
No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^[-_.:/a-zA-Z0-9]+$ +
+ + Type: object
+

Object representation for for a single point enumeration

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Friendly name for the point, if known

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+

List of possible enumerated values for the point

+
+ + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Current or default unit for this point

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Current or default type for this point

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Reference parameter for this point (e.g. BACnet object)

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: boolean
+

Indicates if this point is writable or not

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Human-readable description of this point

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
-

Address family results for a scan. Not included for device enumeration messages.

-
No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^iot|bacnet|ipv4|ipv6|ethmac$ -
- - Type: object
-

Discovery information for an individual protocol family.

-
- - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

Device id in the namespace of the given family

-
Must match regular expression: ^[-_.:0-9A-Z]+$ + item 12
Type: object
+Must match regular expression: ^pointset\.point\.updating$ -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
-

Collection of data points available for this device.

-
No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^[-_.:/a-zA-Z0-9]+$ -
- - Type: object
-

Object representation for for a single point enumeration

-
- - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

Friendly name for the point, if known

-
+ item 13
Type: object
+Must match regular expression: ^pointset\.point\.overridden$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: array of string
-

List of possible enumerated values for the point

-
+ status + + + + category + + + + oneOf + + + + item 14
Type: object
+Must match regular expression: ^pointset\.point\.failure$ -

Each item of this array must be:

-
-
+ +
Type: string
- - - - + category + + + + oneOf + + + + item 15
Type: object
+Must match regular expression: ^pointset\.point\.invalid$ - -
-
-
-
-
-
-
-
-
-

- -

-
+ + -
-
+ +
+ Type: string
-

Current or default unit for this point

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: string
-

Current or default type for this point

-
+ item 16
Type: object
+Must match regular expression: ^discovery\.family\.scan$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

Reference parameter for this point (e.g. BACnet object)

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: boolean
-

Indicates if this point is writable or not

-
+ item 17
Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

Human-readable description of this point

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: object
- - - No Additional Properties + item 18
Type: object
+Must match regular expression: ^discovery\.point\.describe$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ category + + + + oneOf + + + + item 19
Type: object
+Must match regular expression: ^blobset\.blob\.received$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ category + + + + oneOf + + + + item 20
Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category + + + + oneOf + + + + item 21
Type: object
+Must match regular expression: ^blobset\.blob\.applied$ -
-
Example:
-
"pointset.points.config"
-
-
+ +
+ + + + + +
diff --git a/gencode/docs/event_system.html b/gencode/docs/event_system.html index a338c37cca..30eb7ad09a 100644 --- a/gencode/docs/event_system.html +++ b/gencode/docs/event_system.html @@ -293,19 +293,1163 @@

d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z" /> - category

Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category
Type: object
+ + +

+ +

+
+ Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + +
-
-
Example:
-
"pointset.points.config"
-
-
+ Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + +
diff --git a/gencode/docs/event_validation.html b/gencode/docs/event_validation.html index 0dd1d7a15c..632b1e9a07 100644 --- a/gencode/docs/event_validation.html +++ b/gencode/docs/event_validation.html @@ -348,36 +348,205 @@

d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z" /> - category

Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category
Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
+ +
+ -
-
+ Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ category + + + + oneOf + + + + item 2
Type: object
+Must match regular expression: ^system\.base\.ready$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
+ +
+ -
-
+ Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
+ category + + + + oneOf + + + + item 4
Type: object
+Must match regular expression: ^system\.config\.parse$ -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
+ +
+ -
-
+ Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ Type: object
-

Errors specific to pointset handling

-
No Additional Properties + status + + + + category + + + + oneOf + + + + item 6
Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+ + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+ + + + +
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Errors specific to pointset handling

+
No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+

Missing points discovered while validating a device

+
+ + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+

Extra points discovered while validating a device

+
+ + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array
+

List of errors encountered while validating a device

+
+ + + + + +

Each item of this array must be:

+
+
+ + + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+ + + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+ + + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+ + + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: array of string
+ + + + + + +

Each item of this array must be:

+
+
+ + + Type: string
+ + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^[A-Z]{2,6}-[0-9]{1,6}$ +
+ + Type: object
+

Validation summary information for an individual device.

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Last time any message from this device was received

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Oldest recorded mark for this device

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ -
-
-
-

- -

-
- -
-
+
+ Type: array of string
-

Missing points discovered while validating a device

-
- - - - - -

Each item of this array must be:

-
-
- - - Type: string
- + oneOf + + + + item 8
Type: object
+Must match regular expression: ^system\.auth\.login$ -
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: array of string
-

Extra points discovered while validating a device

-
- - - - - -

Each item of this array must be:

-
-
- - - Type: string
- - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: array
-

List of errors encountered while validating a device

-
+ item 9
Type: object
+Must match regular expression: ^system\.auth\.logout$ -

Each item of this array must be:

-
-
+ +
Type: object
- - - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

A human-readable one-line description of the entry

-
+ oneOf + + + + item 10
Type: object
+Must match regular expression: ^system\.auth\.fail$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + item 11
Type: object
+Must match regular expression: ^pointset\.point\.applied$ - - -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ + + +
+ Type: string
-

Timestamp the condition was triggered, or most recently updated

-
- - - - - -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
+ item 12
Type: object
+Must match regular expression: ^pointset\.point\.updating$ -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
+ -
-
+ +
+ Type: object
- No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: array of string
- - - - - - -

Each item of this array must be:

-
-
- - - Type: string
- + item 13
Type: object
+Must match regular expression: ^pointset\.point\.overridden$ -
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: array of string
- - - - - - -

Each item of this array must be:

-
- Type: object
+Must match regular expression: ^pointset\.point\.failure$ -
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: array of string
- - - - - - -

Each item of this array must be:

-
- Type: object
+Must match regular expression: ^pointset\.point\.invalid$ -
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: array of string
- - - - - - -

Each item of this array must be:

-
- Type: object
+Must match regular expression: ^discovery\.family\.scan$ -
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
- No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^[A-Z]{2,6}-[0-9]{1,6}$ -
- - Type: object
-

Validation summary information for an individual device.

-
- - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

Last time any message from this device was received

-
+ item 17
Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

Oldest recorded mark for this device

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: object
- - - No Additional Properties + item 18
Type: object
+Must match regular expression: ^discovery\.point\.describe$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ category + + + + oneOf + + + + item 19
Type: object
+Must match regular expression: ^blobset\.blob\.received$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ category + + + + oneOf + + + + item 20
Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category + + + + oneOf + + + + item 21
Type: object
+Must match regular expression: ^blobset\.blob\.applied$ -
-
Example:
-
"pointset.points.config"
-
-
+ +
+ + + + + +
diff --git a/gencode/docs/state.html b/gencode/docs/state.html index 315a3848f7..57169fa560 100644 --- a/gencode/docs/state.html +++ b/gencode/docs/state.html @@ -1025,37 +1025,126 @@

d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z" /> - category

Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category
Type: object
+ + +

+ +

+
- - - -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ category + + + + oneOf + + + + item 0
Type: object
+Must match regular expression: ^system\.base\.start$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
- - - -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-

- -

-
- -
-
- - Type: object
-

Gateway Documentation

-
- - No Additional Properties + oneOf + + + + item 1
Type: object
+Must match regular expression: ^system\.base\.shutdown$ -
-
-
-

- -

-
- -
-
+
+ Type: object
- - - - - - - -
-
-
-

- -

-
- -
-

Each additional property must conform to the following schema

- - Type: object
- No Additional Properties + item 2
Type: object
+Must match regular expression: ^system\.base\.ready$ -
-
-
-

- -

-
- -
-
+
+ Type: object
- - - No Additional Properties + oneOf + + + + item 3
Type: object
+Must match regular expression: ^system\.config\.receive$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ item 4
Type: object
+Must match regular expression: ^system\.config\.parse$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ item 5
Type: object
+Must match regular expression: ^system\.config\.apply$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + item 6
Type: object
+Must match regular expression: ^system\.network\.connect$ -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ item 7
Type: object
+Must match regular expression: ^system\.network\.disconnect$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
+ item 8
Type: object
+Must match regular expression: ^system\.auth\.login$ -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - -
-
-
-

- -

-
- -
-
- - Type: object
-

State for discovery

-
- - No Additional Properties +
- -
-
-
-

- -

-
- -
-
- Type: object
-

State for discovery

-
- - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

Generational marker for controlling discovery

-
+ item 9
Type: object
+Must match regular expression: ^system\.auth\.logout$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: boolean
-

Indicates if the discovery process is currently active

-
+ category + + + + oneOf + + + + item 10
Type: object
+Must match regular expression: ^system\.auth\.fail$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
-

Status information about the discovery operation

-
- - No Additional Properties + category + + + + oneOf + + + + item 11
Type: object
+Must match regular expression: ^pointset\.point\.applied$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ oneOf + + + + item 12
Type: object
+Must match regular expression: ^pointset\.point\.updating$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ oneOf + + + + item 13
Type: object
+Must match regular expression: ^pointset\.point\.overridden$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + oneOf + + + + item 14
Type: object
+Must match regular expression: ^pointset\.point\.failure$ -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ oneOf + + + + item 15
Type: object
+Must match regular expression: ^pointset\.point\.invalid$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
+ oneOf + + + + item 16
Type: object
+Must match regular expression: ^discovery\.family\.scan$ -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
- - - - -
-
-
-

- -

-
+ -
-
+ +
+ Type: object
-

Discovery protocol families

-
No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^iot|bacnet|ipv4|ipv6|ethmac$ -
- - Type: object
-

State for discovery

-
- - No Additional Properties + item 17
Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

Generational marker for controlling discovery

-
- - - - - - -
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: boolean
-

Indicates if the discovery process is currently active

-
+ item 18
Type: object
+Must match regular expression: ^discovery\.point\.describe$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
-

Status information about the discovery operation

-
- - No Additional Properties + oneOf + + + + item 19
Type: object
+Must match regular expression: ^blobset\.blob\.received$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ item 20
Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ item 21
Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
@@ -2550,18 +2186,18 @@

-
+
-
+

- +

-
+
Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + timestamp
Type: string
+

Timestamp the condition was triggered, or most recently updated

+
@@ -2609,25 +2231,25 @@


Example:
-
"pointset.points.config"
+
"2018-08-26T21:39:28.364Z"
 

-
+
-
+

- +

-
+
Type: string
-

Timestamp the condition was triggered, or most recently updated

+ level
Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

- +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1


Example:
-
"2018-08-26T21:39:28.364Z"
+
600
 
-
+
+
+
+
+
+
+
+
+
-
+

- +

-
+
Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+ gateway
Type: object
+

Gateway Documentation

- - - -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - -
-
-
-

- -

-
- -
-
- - Type: object
- No Additional Properties @@ -2795,18 +2330,18 @@

-
+
-
+

- +

-
+
Type: object
- No Additional Properties + devices
Type: object
+ -
+
-
+

- +

-
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^_?[a-z][a-z0-9]*(_[a-z0-9]+)*$ -
+
+

Each additional property must conform to the following schema

Type: object
- - - No Additional Properties + additionalProperties
Type: object
+ No Additional Properties -
+
-
+

- +

-
+
Type: object
+ status
Type: object
No Additional Properties @@ -2933,18 +2461,18 @@

-
+
-
+

- +

-
+
Type: string
+ message
Type: string

A human-readable one-line description of the entry

@@ -2992,25 +2520,25 @@


Example:
-
"Point is not writable"
+
"Point is not writable"
 

-
+
-
+

- +

-
+
Type: string
+ detail
Type: string

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

@@ -3061,18 +2589,18 @@

-
+
-
+

- +

-
+
Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ - - - + category
Type: object
+ + +

+ +

+
-
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

State for discovery

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: object
+

State for discovery

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Generational marker for controlling discovery

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: boolean
+

Indicates if the discovery process is currently active

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Status information about the discovery operation

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Discovery protocol families

+
No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^iot|bacnet|ipv4|ipv6|ethmac$ +
+ + Type: object
+

State for discovery

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Generational marker for controlling discovery

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: boolean
+

Indicates if the discovery process is currently active

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Status information about the discovery operation

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: object
+ No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^_?[a-z][a-z0-9]*(_[a-z0-9]+)*$ +
+ + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ level
Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

A set of points reporting telemetry data.

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

RFC 3339 timestamp the configuration was generated

+
+ + + + + +
+
Example:
+
"2019-01-17T14:02:29.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Version of the UDMI schema

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An identifier which uniquely represents the state, and used by a device avoid race conditions where the incoming config is based off an obsolete state. Additional information on implementation

+
+ + + +

Must be at most 32 characters long

+ + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Optional status information about pointset

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.login$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.logout$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.auth\.fail$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.applied$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.updating$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.overridden$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.failure$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^pointset\.point\.invalid$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.family\.scan$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^discovery\.point\.describe$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.received$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^blobset\.blob\.applied$ + + + + + + +
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

Timestamp the condition was triggered, or most recently updated

+
+ + + + + +
+
Example:
+
"2018-08-26T21:39:28.364Z"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: integer
+

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

+
+ + + +

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

+ +
+
Example:
+
600
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Collection of point names, defining the representative point set for this device.

+
No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+

+ +

+

All property whose name matches the following regular expression must respect the following conditions

+ Property name regular expression: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$ +
+ + Type: object
+

Object representation for for a single point

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

If specified, indicates a programmed point unit. If empty, means unspecified or matches configured point.

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: enum (of string)
+

Optional enumeration indicating the state of the points value.

+
+

Must be one of:

+
  • "applied"
  • "updating"
  • "overridden"
  • "invalid"
  • "failure"
+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+

Optional status information about this point, subject to log severity level

+
+ + No Additional Properties + + + + + + +
+
+
+

+ +

+
+ +
+
+ + Type: string
+

A human-readable one-line description of the entry

+
+ + + + + +
+
Example:
+
"Point is not writable"
+
+
+
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: string
+

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

+
+ + + + + + +
+
+
+
+
+
+
+

+ +

+
+ +
+
+ + Type: object
+ + +

+ +

+
+ + + Type: object
+Must match regular expression: ^system\.base\.start$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.shutdown$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.base\.ready$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.receive$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.parse$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.config\.apply$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.connect$ + + + + + + +
+ + + Type: object
+Must match regular expression: ^system\.network\.disconnect$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
- - - -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: object
-

A set of points reporting telemetry data.

-
- - No Additional Properties + oneOf + + + + item 8
Type: object
+Must match regular expression: ^system\.auth\.login$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

RFC 3339 timestamp the configuration was generated

-
+ points + + + + Point Pointset State + + + + status + + + + category + + + + oneOf + + + + item 9
Type: object
+Must match regular expression: ^system\.auth\.logout$ -
-
Example:
-
"2019-01-17T14:02:29.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

Version of the UDMI schema

-
+ points + + + + Point Pointset State + + + + status + + + + category + + + + oneOf + + + + item 10
Type: object
+Must match regular expression: ^system\.auth\.fail$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

An identifier which uniquely represents the state, and used by a device avoid race conditions where the incoming config is based off an obsolete state. Additional information on implementation

-
+ item 11
Type: object
+Must match regular expression: ^pointset\.point\.applied$ -

Must be at most 32 characters long

- -
-
-
-
-
-
-
-

- -

-
-
-
+ +
+ Type: object
-

Optional status information about pointset

-
- - No Additional Properties + points + + + + Point Pointset State + + + + status + + + + category + + + + oneOf + + + + item 12
Type: object
+Must match regular expression: ^pointset\.point\.updating$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
- - - - - -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ oneOf + + + + item 13
Type: object
+Must match regular expression: ^pointset\.point\.overridden$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ - - - - - -
-
Example:
-
"pointset.points.config"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: string
-

Timestamp the condition was triggered, or most recently updated

-
+ oneOf + + + + item 14
Type: object
+Must match regular expression: ^pointset\.point\.failure$ -
-
Example:
-
"2018-08-26T21:39:28.364Z"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: integer
-

The status level should conform to the numerical Stackdriver LogEntry levels. The DEFAULT value of 0 is not allowed (lowest value is 100, maximum 800).

-
- - - -

Value must be greater or equal to 100 and lesser or equal to 800 and a multiple of 1

- -
-
Example:
-
600
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
- - Type: object
-

Collection of point names, defining the representative point set for this device.

-
No Additional Properties + item 15
Type: object
+Must match regular expression: ^pointset\.point\.invalid$ -
-
-
-

- -

-
- -
-

- -

-

All property whose name matches the following regular expression must respect the following conditions

- Property name regular expression: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$ -
+
+ Type: object
-

Object representation for for a single point

-
- - No Additional Properties - - - - - - -
-
-
-

- -

-
- -
-
- - Type: string
-

If specified, indicates a programmed point unit. If empty, means unspecified or matches configured point.

-
+ item 16
Type: object
+Must match regular expression: ^discovery\.family\.scan$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: enum (of string)
-

Optional enumeration indicating the state of the points value.

-
-

Must be one of:

-
  • "applied"
  • "updating"
  • "overridden"
  • "invalid"
  • "failure"
-
+ status + + + + category + + + + oneOf + + + + item 17
Type: object
+Must match regular expression: ^discovery\.device\.enumerate$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: object
-

Optional status information about this point, subject to log severity level

-
- - No Additional Properties + status + + + + category + + + + oneOf + + + + item 18
Type: object
+Must match regular expression: ^discovery\.point\.describe$ -
-
-
-

- -

-
- -
-
+
+ Type: string
-

A human-readable one-line description of the entry

-
+ category + + + + oneOf + + + + item 19
Type: object
+Must match regular expression: ^blobset\.blob\.received$ -
-
Example:
-
"Point is not writable"
-
-
-
-
-
-
-
-
-
-

- -

-
- -
-
+ +
+ Type: string
-

An optional extensive entry which can include more detail, e.g. a complete program stack-trace

-
+ category + + + + oneOf + + + + item 20
Type: object
+Must match regular expression: ^blobset\.blob\.fetched$ -
-
-
-
-
-
-
-

- -

-
- -
-
+
+ Type: string
-

A device-specific representation of the category an entry pertains to

-
Must match regular expression: ^[a-z][._a-zA-Z]*[a-zA-Z]$ + category + + + + oneOf + + + + item 21
Type: object
+Must match regular expression: ^blobset\.blob\.applied$ -
-
Example:
-
"pointset.points.config"
-
-
+ +
+ + + + + +
diff --git a/gencode/java/udmi/schema/Category.java b/gencode/java/udmi/schema/Category.java new file mode 100644 index 0000000000..55ebd11c0c --- /dev/null +++ b/gencode/java/udmi/schema/Category.java @@ -0,0 +1,127 @@ +package udmi.schema; + +import static udmi.schema.Level.DEBUG; +import static udmi.schema.Level.INFO; +import static udmi.schema.Level.NOTICE; +import static udmi.schema.Level.WARNING; +import static udmi.schema.Level.ERROR; + +import java.util.HashMap; +import java.util.Map; + +// This class is manually curated, auto-generated, and then copied into the gencode directory. +// Look for the proper source and don't be fooled! Ultimately sourced from docs/specs/categories.md +public class Category { + public static final Map LEVEL = new HashMap(); + + + // System is in the process of (re)starting and essentially offline + public static final String SYSTEM_BASE_START = "system.base.start"; + public static final Level SYSTEM_BASE_START_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_BASE_START, NOTICE); } + + // System is shutting down + public static final String SYSTEM_BASE_SHUTDOWN = "system.base.shutdown"; + public static final Level SYSTEM_BASE_SHUTDOWN_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_BASE_SHUTDOWN, NOTICE); } + + // System is fully ready for operation + public static final String SYSTEM_BASE_READY = "system.base.ready"; + public static final Level SYSTEM_BASE_READY_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_BASE_READY, NOTICE); } + + // Receiving a config message + public static final String SYSTEM_CONFIG_RECEIVE = "system.config.receive"; + public static final Level SYSTEM_CONFIG_RECEIVE_LEVEL = DEBUG; + static { LEVEL.put(SYSTEM_CONFIG_RECEIVE, DEBUG); } + + // Parsing a received message + public static final String SYSTEM_CONFIG_PARSE = "system.config.parse"; + public static final Level SYSTEM_CONFIG_PARSE_LEVEL = DEBUG; + static { LEVEL.put(SYSTEM_CONFIG_PARSE, DEBUG); } + + // Application of a parsed config message + public static final String SYSTEM_CONFIG_APPLY = "system.config.apply"; + public static final Level SYSTEM_CONFIG_APPLY_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_CONFIG_APPLY, NOTICE); } + + // Connected to the network + public static final String SYSTEM_NETWORK_CONNECT = "system.network.connect"; + public static final Level SYSTEM_NETWORK_CONNECT_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_NETWORK_CONNECT, NOTICE); } + + // Disconnected from a network + public static final String SYSTEM_NETWORK_DISCONNECT = "system.network.disconnect"; + public static final Level SYSTEM_NETWORK_DISCONNECT_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_NETWORK_DISCONNECT, NOTICE); } + + // Successful login. The entry message should include the username and application + public static final String SYSTEM_AUTH_LOGIN = "system.auth.login"; + public static final Level SYSTEM_AUTH_LOGIN_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_AUTH_LOGIN, NOTICE); } + + // Successful logout + public static final String SYSTEM_AUTH_LOGOUT = "system.auth.logout"; + public static final Level SYSTEM_AUTH_LOGOUT_LEVEL = NOTICE; + static { LEVEL.put(SYSTEM_AUTH_LOGOUT, NOTICE); } + + // Failed authentication attempt. The entry message should include the application + public static final String SYSTEM_AUTH_FAIL = "system.auth.fail"; + public static final Level SYSTEM_AUTH_FAIL_LEVEL = WARNING; + static { LEVEL.put(SYSTEM_AUTH_FAIL, WARNING); } + + // The `set_value` for a point has been applied + public static final String POINTSET_POINT_APPLIED = "pointset.point.applied"; + public static final Level POINTSET_POINT_APPLIED_LEVEL = INFO; + static { LEVEL.put(POINTSET_POINT_APPLIED, INFO); } + + // The point is in the process of updating + public static final String POINTSET_POINT_UPDATING = "pointset.point.updating"; + public static final Level POINTSET_POINT_UPDATING_LEVEL = NOTICE; + static { LEVEL.put(POINTSET_POINT_UPDATING, NOTICE); } + + // The reported value has been overridden locally + public static final String POINTSET_POINT_OVERRIDDEN = "pointset.point.overridden"; + public static final Level POINTSET_POINT_OVERRIDDEN_LEVEL = WARNING; + static { LEVEL.put(POINTSET_POINT_OVERRIDDEN, WARNING); } + + // The system failed to read/write the point + public static final String POINTSET_POINT_FAILURE = "pointset.point.failure"; + public static final Level POINTSET_POINT_FAILURE_LEVEL = ERROR; + static { LEVEL.put(POINTSET_POINT_FAILURE, ERROR); } + + // A `config` parameter for the point is invalid in some way + public static final String POINTSET_POINT_INVALID = "pointset.point.invalid"; + public static final Level POINTSET_POINT_INVALID_LEVEL = ERROR; + static { LEVEL.put(POINTSET_POINT_INVALID, ERROR); } + + // Relating to scanning a particular address family + public static final String DISCOVERY_FAMILY_SCAN = "discovery.family.scan"; + public static final Level DISCOVERY_FAMILY_SCAN_LEVEL = INFO; + static { LEVEL.put(DISCOVERY_FAMILY_SCAN, INFO); } + + // Handling point enumeration for a given device + public static final String DISCOVERY_DEVICE_ENUMERATE = "discovery.device.enumerate"; + public static final Level DISCOVERY_DEVICE_ENUMERATE_LEVEL = INFO; + static { LEVEL.put(DISCOVERY_DEVICE_ENUMERATE, INFO); } + + // Relating to describing a particular point + public static final String DISCOVERY_POINT_DESCRIBE = "discovery.point.describe"; + public static final Level DISCOVERY_POINT_DESCRIBE_LEVEL = INFO; + static { LEVEL.put(DISCOVERY_POINT_DESCRIBE, INFO); } + + // Request for an update has been received + public static final String BLOBSET_BLOB_RECEIVED = "blobset.blob.received"; + public static final Level BLOBSET_BLOB_RECEIVED_LEVEL = DEBUG; + static { LEVEL.put(BLOBSET_BLOB_RECEIVED, DEBUG); } + + // Update blob has been successfully fetched + public static final String BLOBSET_BLOB_FETCHED = "blobset.blob.fetched"; + public static final Level BLOBSET_BLOB_FETCHED_LEVEL = DEBUG; + static { LEVEL.put(BLOBSET_BLOB_FETCHED, DEBUG); } + + // Update has been successfully applied + public static final String BLOBSET_BLOB_APPLIED = "blobset.blob.applied"; + public static final Level BLOBSET_BLOB_APPLIED_LEVEL = NOTICE; + static { LEVEL.put(BLOBSET_BLOB_APPLIED, NOTICE); } +} diff --git a/gencode/java/udmi/schema/Entry.java b/gencode/java/udmi/schema/Entry.java index b280dcd889..105a88a6f1 100644 --- a/gencode/java/udmi/schema/Entry.java +++ b/gencode/java/udmi/schema/Entry.java @@ -42,13 +42,12 @@ public class Entry { @JsonPropertyDescription("An optional extensive entry which can include more detail, e.g. a complete program stack-trace") public String detail; /** - * A device-specific representation of the category an entry pertains to + * Auto-generated category mappings from bin/gencode_categories. * (Required) * */ @JsonProperty("category") - @JsonPropertyDescription("A device-specific representation of the category an entry pertains to") - public String category; + public Object category; /** * Timestamp the condition was triggered, or most recently updated * (Required) diff --git a/gencode/java/udmi/schema/PubberOptions.java b/gencode/java/udmi/schema/PubberOptions.java index 50ac5d562d..abe27070fe 100644 --- a/gencode/java/udmi/schema/PubberOptions.java +++ b/gencode/java/udmi/schema/PubberOptions.java @@ -17,6 +17,7 @@ @JsonPropertyOrder({ "noHardware", "noConfigAck", + "messageTrace", "extraPoint", "missingPoint", "extraField", @@ -29,6 +30,8 @@ public class PubberOptions { public Boolean noHardware; @JsonProperty("noConfigAck") public Boolean noConfigAck; + @JsonProperty("messageTrace") + public Boolean messageTrace; @JsonProperty("extraPoint") public String extraPoint; @JsonProperty("missingPoint") @@ -44,6 +47,7 @@ public int hashCode() { result = ((result* 31)+((this.redirectRegistry == null)? 0 :this.redirectRegistry.hashCode())); result = ((result* 31)+((this.noHardware == null)? 0 :this.noHardware.hashCode())); result = ((result* 31)+((this.extraField == null)? 0 :this.extraField.hashCode())); + result = ((result* 31)+((this.messageTrace == null)? 0 :this.messageTrace.hashCode())); result = ((result* 31)+((this.missingPoint == null)? 0 :this.missingPoint.hashCode())); result = ((result* 31)+((this.noConfigAck == null)? 0 :this.noConfigAck.hashCode())); result = ((result* 31)+((this.extraPoint == null)? 0 :this.extraPoint.hashCode())); @@ -59,7 +63,7 @@ public boolean equals(Object other) { return false; } PubberOptions rhs = ((PubberOptions) other); - return (((((((this.redirectRegistry == rhs.redirectRegistry)||((this.redirectRegistry!= null)&&this.redirectRegistry.equals(rhs.redirectRegistry)))&&((this.noHardware == rhs.noHardware)||((this.noHardware!= null)&&this.noHardware.equals(rhs.noHardware))))&&((this.extraField == rhs.extraField)||((this.extraField!= null)&&this.extraField.equals(rhs.extraField))))&&((this.missingPoint == rhs.missingPoint)||((this.missingPoint!= null)&&this.missingPoint.equals(rhs.missingPoint))))&&((this.noConfigAck == rhs.noConfigAck)||((this.noConfigAck!= null)&&this.noConfigAck.equals(rhs.noConfigAck))))&&((this.extraPoint == rhs.extraPoint)||((this.extraPoint!= null)&&this.extraPoint.equals(rhs.extraPoint)))); + return ((((((((this.redirectRegistry == rhs.redirectRegistry)||((this.redirectRegistry!= null)&&this.redirectRegistry.equals(rhs.redirectRegistry)))&&((this.noHardware == rhs.noHardware)||((this.noHardware!= null)&&this.noHardware.equals(rhs.noHardware))))&&((this.extraField == rhs.extraField)||((this.extraField!= null)&&this.extraField.equals(rhs.extraField))))&&((this.messageTrace == rhs.messageTrace)||((this.messageTrace!= null)&&this.messageTrace.equals(rhs.messageTrace))))&&((this.missingPoint == rhs.missingPoint)||((this.missingPoint!= null)&&this.missingPoint.equals(rhs.missingPoint))))&&((this.noConfigAck == rhs.noConfigAck)||((this.noConfigAck!= null)&&this.noConfigAck.equals(rhs.noConfigAck))))&&((this.extraPoint == rhs.extraPoint)||((this.extraPoint!= null)&&this.extraPoint.equals(rhs.extraPoint)))); } } diff --git a/gencode/java/udmi/schema/SystemConfig.java b/gencode/java/udmi/schema/SystemConfig.java index 4f6d3752c2..6f7840febe 100644 --- a/gencode/java/udmi/schema/SystemConfig.java +++ b/gencode/java/udmi/schema/SystemConfig.java @@ -22,7 +22,8 @@ @JsonPropertyOrder({ "min_loglevel", "metrics_rate_sec", - "mode" + "mode", + "testing" }) @Generated("jsonschema2pojo") public class SystemConfig { @@ -50,6 +51,15 @@ public class SystemConfig { @JsonProperty("mode") @JsonPropertyDescription("Operating mode for the device. Defaults is 'active'.") public SystemConfig.SystemMode mode; + /** + * Testing System Config + *

+ * Configuration parameters for device-under-test + * + */ + @JsonProperty("testing") + @JsonPropertyDescription("Configuration parameters for device-under-test") + public TestingSystemConfig testing; @Override public int hashCode() { @@ -57,6 +67,7 @@ public int hashCode() { result = ((result* 31)+((this.metrics_rate_sec == null)? 0 :this.metrics_rate_sec.hashCode())); result = ((result* 31)+((this.mode == null)? 0 :this.mode.hashCode())); result = ((result* 31)+((this.min_loglevel == null)? 0 :this.min_loglevel.hashCode())); + result = ((result* 31)+((this.testing == null)? 0 :this.testing.hashCode())); return result; } @@ -69,7 +80,7 @@ public boolean equals(Object other) { return false; } SystemConfig rhs = ((SystemConfig) other); - return ((((this.metrics_rate_sec == rhs.metrics_rate_sec)||((this.metrics_rate_sec!= null)&&this.metrics_rate_sec.equals(rhs.metrics_rate_sec)))&&((this.mode == rhs.mode)||((this.mode!= null)&&this.mode.equals(rhs.mode))))&&((this.min_loglevel == rhs.min_loglevel)||((this.min_loglevel!= null)&&this.min_loglevel.equals(rhs.min_loglevel)))); + return (((((this.metrics_rate_sec == rhs.metrics_rate_sec)||((this.metrics_rate_sec!= null)&&this.metrics_rate_sec.equals(rhs.metrics_rate_sec)))&&((this.mode == rhs.mode)||((this.mode!= null)&&this.mode.equals(rhs.mode))))&&((this.min_loglevel == rhs.min_loglevel)||((this.min_loglevel!= null)&&this.min_loglevel.equals(rhs.min_loglevel))))&&((this.testing == rhs.testing)||((this.testing!= null)&&this.testing.equals(rhs.testing)))); } diff --git a/gencode/java/udmi/schema/TestingSystemConfig.java b/gencode/java/udmi/schema/TestingSystemConfig.java new file mode 100644 index 0000000000..088a194404 --- /dev/null +++ b/gencode/java/udmi/schema/TestingSystemConfig.java @@ -0,0 +1,51 @@ + +package udmi.schema; + +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + +/** + * Testing System Config + *

+ * Configuration parameters for device-under-test + * + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "sequence_name" +}) +@Generated("jsonschema2pojo") +public class TestingSystemConfig { + + /** + * The sequence name currently being tested (for debug logging) + * + */ + @JsonProperty("sequence_name") + @JsonPropertyDescription("The sequence name currently being tested (for debug logging)") + public String sequence_name; + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.sequence_name == null)? 0 :this.sequence_name.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof TestingSystemConfig) == false) { + return false; + } + TestingSystemConfig rhs = ((TestingSystemConfig) other); + return ((this.sequence_name == rhs.sequence_name)||((this.sequence_name!= null)&&this.sequence_name.equals(rhs.sequence_name))); + } + +} diff --git a/gencode/python/udmi/schema/__init__.py b/gencode/python/udmi/schema/__init__.py index 032b8e2d38..c580a9dfcc 100644 --- a/gencode/python/udmi/schema/__init__.py +++ b/gencode/python/udmi/schema/__init__.py @@ -1,4 +1,5 @@ from .ancillary_properties import AncillaryProperties +from .category import ObjectBC07E246 from .cloud_iot_config import CloudIotConfig from .command_discovery import DiscoveryCommand from .common import Common @@ -12,6 +13,7 @@ from .config_pointset import PointsetConfig from .config_pointset_point import PointPointsetConfig from .config_system import SystemConfig +from .config_system_testing import TestingSystemConfig from .envelope import Envelope from .event import Event from .event_discovery import DiscoveryEvent diff --git a/gencode/python/udmi/schema/category.py b/gencode/python/udmi/schema/category.py new file mode 100644 index 0000000000..a8a9bd44f3 --- /dev/null +++ b/gencode/python/udmi/schema/category.py @@ -0,0 +1,35 @@ +"""Generated class for category.json""" + + +class ObjectBC07E246: + """Generated schema class""" + + def __init__(self): + pass + + @staticmethod + def from_dict(source): + if not source: + return None + result = ObjectBC07E246() + return result + + @staticmethod + def map_from(source): + if not source: + return None + result = {} + for key in source: + result[key] = ObjectBC07E246.from_dict(source[key]) + return result + + @staticmethod + def expand_dict(input): + result = {} + for property in input: + result[property] = input[property].to_dict() if input[property] else {} + return result + + def to_dict(self): + result = {} + return result diff --git a/gencode/python/udmi/schema/config_system.py b/gencode/python/udmi/schema/config_system.py index 289b48c7ef..5ff3a74d0c 100644 --- a/gencode/python/udmi/schema/config_system.py +++ b/gencode/python/udmi/schema/config_system.py @@ -1,4 +1,5 @@ """Generated class for config_system.json""" +from .config_system_testing import TestingSystemConfig class SystemConfig: @@ -8,6 +9,7 @@ def __init__(self): self.min_loglevel = None self.metrics_rate_sec = None self.mode = None + self.testing = None @staticmethod def from_dict(source): @@ -17,6 +19,7 @@ def from_dict(source): result.min_loglevel = source.get('min_loglevel') result.metrics_rate_sec = source.get('metrics_rate_sec') result.mode = source.get('mode') + result.testing = TestingSystemConfig.from_dict(source.get('testing')) return result @staticmethod @@ -43,4 +46,6 @@ def to_dict(self): result['metrics_rate_sec'] = self.metrics_rate_sec # 5 if self.mode: result['mode'] = self.mode # 5 + if self.testing: + result['testing'] = self.testing.to_dict() # 4 return result diff --git a/gencode/python/udmi/schema/config_system_testing.py b/gencode/python/udmi/schema/config_system_testing.py new file mode 100644 index 0000000000..e6be8a1b9f --- /dev/null +++ b/gencode/python/udmi/schema/config_system_testing.py @@ -0,0 +1,38 @@ +"""Generated class for config_system_testing.json""" + + +class TestingSystemConfig: + """Generated schema class""" + + def __init__(self): + self.sequence_name = None + + @staticmethod + def from_dict(source): + if not source: + return None + result = TestingSystemConfig() + result.sequence_name = source.get('sequence_name') + return result + + @staticmethod + def map_from(source): + if not source: + return None + result = {} + for key in source: + result[key] = TestingSystemConfig.from_dict(source[key]) + return result + + @staticmethod + def expand_dict(input): + result = {} + for property in input: + result[property] = input[property].to_dict() if input[property] else {} + return result + + def to_dict(self): + result = {} + if self.sequence_name: + result['sequence_name'] = self.sequence_name # 5 + return result diff --git a/gencode/python/udmi/schema/pubber_options.py b/gencode/python/udmi/schema/pubber_options.py index bc74aa19ed..40d7446650 100644 --- a/gencode/python/udmi/schema/pubber_options.py +++ b/gencode/python/udmi/schema/pubber_options.py @@ -7,6 +7,7 @@ class PubberOptions: def __init__(self): self.noHardware = None self.noConfigAck = None + self.messageTrace = None self.extraPoint = None self.missingPoint = None self.extraField = None @@ -19,6 +20,7 @@ def from_dict(source): result = PubberOptions() result.noHardware = source.get('noHardware') result.noConfigAck = source.get('noConfigAck') + result.messageTrace = source.get('messageTrace') result.extraPoint = source.get('extraPoint') result.missingPoint = source.get('missingPoint') result.extraField = source.get('extraField') @@ -47,6 +49,8 @@ def to_dict(self): result['noHardware'] = self.noHardware # 5 if self.noConfigAck: result['noConfigAck'] = self.noConfigAck # 5 + if self.messageTrace: + result['messageTrace'] = self.messageTrace # 5 if self.extraPoint: result['extraPoint'] = self.extraPoint # 5 if self.missingPoint: diff --git a/pubber/.idea/runConfigurations/Pubber.xml b/pubber/.idea/runConfigurations/Pubber.xml index 71f95c4348..256b3f031d 100644 --- a/pubber/.idea/runConfigurations/Pubber.xml +++ b/pubber/.idea/runConfigurations/Pubber.xml @@ -2,7 +2,7 @@