diff --git a/Makefile b/Makefile index ebc317f..caffdb0 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,6 @@ DIR := $(shell dirname $(lastword $(MAKEFILE_LIST))) NODE_MODS := $(DIR)/node_modules PUG := $(NODE_MODS)/.bin/pug -STYLUS := $(NODE_MODS)/.bin/stylus TARGET_DIR := build/http HTML := index @@ -16,14 +15,12 @@ GPLAN_MOD := rpi-share/camotics/gplan.so GPLAN_TARGET := src/py/camotics/gplan.so GPLAN_IMG := gplan-dev.img -RSYNC_EXCLUDE := \*.pyc __pycache__ \*.egg-info \\\#* \*~ .\\\#\* -RSYNC_EXCLUDE := $(patsubst %,--exclude %,$(RSYNC_EXCLUDE)) -RSYNC_OPTS := $(RSYNC_EXCLUDE) -rv --no-g --delete --force +VERSION := $(shell jq -r '.version' package.json) +PY_VERSION := $(shell jq -r '.version' package.json | sed -E 's|([0-9]+)\.([0-9]+)\.([0-9]+)(-(b)eta\.(.*))?|\1.\2.\3\5\6|g') +PKG_NAME := dist/bbctrl-$(PY_VERSION).tar.bz2 +FINAL_PKG_NAME := dist/onefinity-$(VERSION).tar.bz2 -VERSION := $(shell sed -n 's/^.*"version": "\([^"]*\)",.*$$/\1/p' package.json) -PKG_NAME := bbctrl-$(VERSION) - -SUBPROJECTS := avr boot pwr jig +SUBPROJECTS := avr boot pwr ifndef HOST HOST=onefinity @@ -38,6 +35,7 @@ all: $(HTML) $(RESOURCES) pkg: all $(AVR_FIRMWARE) bbserial ./setup.py sdist + mv $(PKG_NAME) $(FINAL_PKG_NAME) bbserial: $(MAKE) -C src/bbserial @@ -61,8 +59,8 @@ $(AVR_FIRMWARE): $(MAKE) -C src/avr update: pkg - http_proxy= curl -i -X PUT -H "Content-Type: multipart/form-data" \ - -F "firmware=@dist/$(PKG_NAME).tar.bz2" -F "password=$(PASSWORD)" \ + curl -i -X PUT -H "Content-Type: multipart/form-data" \ + -F "firmware=@$(FINAL_PKG_NAME)" -F "password=$(PASSWORD)" \ http://$(HOST)/api/firmware/update @-tput sgr0 && echo # Fix terminal output diff --git a/installer/config/bbctrl-logrotate b/installer/config/onefinity-logrotate similarity index 100% rename from installer/config/bbctrl-logrotate rename to installer/config/onefinity-logrotate diff --git a/installer/config/bbctrl-poweroff.service b/installer/config/onefinity-poweroff.service similarity index 100% rename from installer/config/bbctrl-poweroff.service rename to installer/config/onefinity-poweroff.service diff --git a/package-lock.json b/package-lock.json index 7585cb7..750f928 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,19 @@ { - "name": "bbctrl", - "version": "1.1.0", + "name": "onefinity", + "version": "1.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "bbctrl", - "version": "1.1.0", + "name": "onefinity", + "version": "1.1.1", "hasInstallScript": true, "license": "GPL-3.0+", "devDependencies": { + "@aws-sdk/client-ssm": "^3.168.0", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", + "aws-cli": "^0.0.2", "browserify": "^17.0.0", "eslint": "^8.23.0", "eslint-config-standard-with-typescript": "^22.0.0", @@ -25,9 +27,1240 @@ "jstransformer-scss": "^2.0.0", "jstransformer-stylus": "^1.5.0", "lodash.merge": "4.6.2", - "pug-cli": "^1.0.0-alpha6" + "node-fetch": "^2.6.7", + "pug-cli": "^1.0.0-alpha6", + "semver": "^7.3.7" } }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "dev": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "dev": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "dev": true, + "dependencies": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "dev": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/abort-controller": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.168.0.tgz", + "integrity": "sha512-mvFXmdoIVV3cUmPuwzzHLB1YNjxzm7sHk99zE0zvT653kc7slThLMfO5Kc1WtblXAKbE6eqPDMcA0zg6eRM1cw==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/abort-controller/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/client-ssm": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.168.0.tgz", + "integrity": "sha512-MtRR4OrKpgUySZsiT0ms/gk4ToL4p3r7+OgICYS2hvMYbQdL0PA/ItAYNnk6IY0L6DxFBFHtkEuaskPneJudgg==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.168.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-node": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "@aws-sdk/util-waiter": "3.168.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.168.0.tgz", + "integrity": "sha512-QOUmaHKu2K7XlAGlC9zlbldYwm0kSoJ8bJqZQqGI2xhUsSdjJDTaJUm1oOOhg2f3afsluZbCiQvttJpy+y+qnA==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.168.0.tgz", + "integrity": "sha512-9R6I+d6W3Qx/thQYEwVrpAYRywDLQtVWY6LhOt2NguW5GTUi/NZ7QDc6s9QyDdlZGO62DzO24UKnlpc5y4XWxQ==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-node": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-sdk-sts": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.168.0.tgz", + "integrity": "sha512-eSGHsa5kDIpBtBr1HhM9n0Deb+uSyr5pvk39WPFf5CTGvIqe52Fg9s1/Jz54rDwlgsfPzufX7TrCXgUhMwb8+w==", + "dev": true, + "dependencies": { + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-config-provider": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.168.0.tgz", + "integrity": "sha512-dzblFOkmH0FzYuckCJYVH/d+HEGO814B0gVt0HnaIvsS5skDSDBXD+/S9AX6BAKTNBWP8BVcn7+u+oS5l7GBkQ==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.168.0.tgz", + "integrity": "sha512-Ua2zTmo0eep/fGh3SL9W0ERlGRkEAiP2IEC63QbRZKK+5Xg6RIgqij7hQHvKLY78zBDd7exnU9W1AMnt9lOd1A==", + "dev": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.168.0.tgz", + "integrity": "sha512-CYs9ctzxMHpj+alfrw2qRbej9VD8nAdhoVWm88hdtEta9GsaRvX2foNQbnkX6uoBca1AUSHdQ4d9v8dcOhQTNQ==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/credential-provider-sso": "3.168.0", + "@aws-sdk/credential-provider-web-identity": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.168.0.tgz", + "integrity": "sha512-gGsVp68cVBntrMj6jSzDDNJIw3mp2TA18eQf5Rayl7LWZM60kqvEmhWbVRXFrLNKFcUiiTfSACGtkS/Pz60Sog==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/credential-provider-ini": "3.168.0", + "@aws-sdk/credential-provider-process": "3.168.0", + "@aws-sdk/credential-provider-sso": "3.168.0", + "@aws-sdk/credential-provider-web-identity": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.168.0.tgz", + "integrity": "sha512-Yni2S+yHLkUvDI30ZNkEOao2hSBj1eeQvWBUEJsgCFvHdlFDwOYwIueDmrBggqUISUgCLb6y/eylqeMvjN3Eyw==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.168.0.tgz", + "integrity": "sha512-X4hv5aLcySHGB2jPl1hTQ+AhBqWsyEYyjtBvi5N1fJLbNtYQR4XwbAeU3uf/SPph+TqTzGjigb9T/sjyO2/sBg==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.168.0.tgz", + "integrity": "sha512-hz7wj8htY6s3/TubzH/YOd6f4bxO26GYupCTvKZlWdErLUmZ8h3hG/9xO/5kWOakD40T3MXT7HIo2rvEWg1GWw==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.168.0.tgz", + "integrity": "sha512-D4vN6zbF/RA7czw34gFhjsfOD5fkkLxLvmW8zbrJSsrex79Ju96NFuNBs7TtaV2btfXC7SkhhI/z+E81BxqRpg==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/querystring-builder": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/fetch-http-handler/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.168.0.tgz", + "integrity": "sha512-W2kMIuMric2Q2D4787DGubHz3Pw5fWDndM2gMjs/MB1psC/N74/ggRUIlUmsjSBFUHY1BYMfjsxe8DS9dSj77A==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/hash-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.168.0.tgz", + "integrity": "sha512-KuDn4e1XsxBQi+dAoRfSOExICq+Gt5zGA7/dI2jnfqejBNHVmJ8ksOnV/HmilFscPxdJx5POECQosf3p/N4t9w==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/invalid-dependency/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.168.0.tgz", + "integrity": "sha512-Zvt8a/g1UfvwmhxOnt/hDrFprC3+DQivFQGnzwBpv+ZyM1BfdgAruAkUZF+GtXI22DXZUumBrposCH1CcgjeIA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/is-array-buffer/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.168.0.tgz", + "integrity": "sha512-PHvoNIuXkLkBZ/0OSmFlCmA1o+RdqkNWwNm7/rIMe9cV+ZgtP9kQs+e4itibQb82veHTwG37+B7OAGa0DGqIvg==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.168.0.tgz", + "integrity": "sha512-420rWpd/fsoPzRnMkyUFW1in6jpa1kbVCuewY5cqoH9uQcthrNJ0l9IgePDEMdymIMxGBfwiQERvUYogUadxrw==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.168.0.tgz", + "integrity": "sha512-5xeBlHQz/iWVor04eZLTfygj5T9zvLsngrUVb8FkHDzzNqT9+QwoA0iZoT8Vq5khfZK7UE7SWm2Hi/13t9T9+w==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.168.0.tgz", + "integrity": "sha512-4sr3E37PUDQSpE205d+kGcaJmZj7kE/I50qyf39U0jphk121AZXdKCWDs/T7g/d4LVJLoe6N+zzZIg4ZWVUUZw==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.168.0.tgz", + "integrity": "sha512-LriHTAccnfEpeV+IccbWN59JVz+De97pvmJMu5NyUUq/+c2VIJAM+n0MDbHJP6EXuKFGOAXJZf8HVC2sbnXwCw==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/service-error-classification": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.168.0.tgz", + "integrity": "sha512-uE5VYczEkoCG/G63Whp4dGKFouDjx0Jj4vZj7Z4oEQSv/eynBm1+AQAtWA4zJQfYO60lFKOSiBykv/c1hk09Mg==", + "dev": true, + "dependencies": { + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.168.0.tgz", + "integrity": "sha512-6z3iySqCjhV5NVEF3o++TgvK1XOBauYdZFCZk4foMxyh/wZ4MB+uIQ/D2AeHExzFGyrPjx0S0gZb4z8st6q9mA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.168.0.tgz", + "integrity": "sha512-yQme9D4bNRdrPQH50a3oJfbf+54Dm1MkW4yjwIwpRoGkxAs2T7sjc3/u/Wo/Jy3g5yzM1Ven3KU+nlKOMNOpAw==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.168.0.tgz", + "integrity": "sha512-tUMa6gQFqyRC9xRy1cfQAX/K84LkFC+NAyENoDn4cbLvTJpH6tLPINFktaXLkKl2bdzGGWLHefxriBjTqZB+rg==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.168.0.tgz", + "integrity": "sha512-nwcWN1tz39s4IWyx1lxak/W9LdLnusQEdb+0pnJFWTCNhba3BvlAnt1sZFDwbFRmRUbU3x+hhpNB+Xub2hFttg==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.168.0.tgz", + "integrity": "sha512-8su32ifopNLb835NudTdxyv4fQ+7Eie17MjbqnvOeWmjFAgzJyIVJjyvMI+N8Gu3dDCTxSbBh3hl++VOzL+oXg==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.168.0.tgz", + "integrity": "sha512-yO68M12LUJa/bhuljSRCtLbmWvnS0eopoE3P2+xzV2JzkIg5r+bJmh/VtpDz8D2PxZhRALwBchjq8h+Po6rhcQ==", + "dev": true, + "dependencies": { + "@aws-sdk/abort-controller": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/querystring-builder": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.168.0.tgz", + "integrity": "sha512-syvXTexP2t9HQY3dsfpPgUP5GjFcpBVzPfxd8GjLWFRcqBCQ5frdetkAfvnhPpytL/stauXuT1xv6jcN1vBAZQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/property-provider/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.168.0.tgz", + "integrity": "sha512-5g7T5WqeU1W/TShfOYiczZFOK5svsQajjSGs1drB2DBQlbepF5YSmVbFGrfX6003h4TV9hpA6CqOjbgd59NgGA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.168.0.tgz", + "integrity": "sha512-cCjdmRKf+zVc/Whc9fP3DqB6QTBz0MsJ2uGqYCWG8kqBr4W8nDZVNRVj4Q1zZjQzipU7+77xJAE8NSIl+RsubA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-uri-escape": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.168.0.tgz", + "integrity": "sha512-O82vxPyoLRuqcCFxAQYuvDwOdMOaQ/hqlaC8Tw6qNE3wpJ1296M51Zgb7lPfIlSxzAc96H//Q+d1t5MViK2SFg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.168.0.tgz", + "integrity": "sha512-cW1U3YMMRLukx5/Fl7NpCsaFgcDkOOZVUaW2qLghJOakt1dc6OwgtPlS7toC9A7zjMIovqYwcksHO5mCyqrPlA==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.168.0.tgz", + "integrity": "sha512-K97HWEySV6HJC4CLyimVuqit4FILW4BtTU62jCaEwoPvg1XPAolCzzWfLClJ0GWfyf32+o30wJj8SgHuIuN2Qw==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.168.0.tgz", + "integrity": "sha512-jb98UrZ4d07Wr1mUVDY1HRlbEOVoPFZ38e4k20AUEXybxhsvlQhfAfaDITFg3UwMO978m4VAsjpzw8h8WGsNQw==", + "dev": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-hex-encoding": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "@aws-sdk/util-uri-escape": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.168.0.tgz", + "integrity": "sha512-B2wuTg5ymTYA7eVkt73bdRlWNWvdWNRY3QQizTWn0Ch3nOZXyVZSdH4mGmuWcpiQXEX/YYGmTLY7nCKWrk1E6Q==", + "dev": true, + "dependencies": { + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/types": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.168.0.tgz", + "integrity": "sha512-J9VmQAakmqrdYKt3N0T/zQR6ZkfvQ7Y3WufjEWRTdslYcQ9f7UyI93Q21baCHvgcp3E5c4w62x18o6mEA/cHPQ==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.168.0.tgz", + "integrity": "sha512-spFHA6NpsmAF3NCYyljjvl7uavHRvFDCNN32ce9RuRUXXuK8emAtwzXW95OUqtgCcyyKIA5p5p+gujrT7Npmeg==", + "dev": true, + "dependencies": { + "@aws-sdk/querystring-parser": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/url-parser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-base64-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.168.0.tgz", + "integrity": "sha512-awyUvPXWbV5SrpUY8vTA58RTdTnDFJJmVlCXGB8JCtWYVuAQ5FfKA/K0ZD6p+AP6AsCgHSvXCuZm8vFyZldJ2Q==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64-browser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-base64-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.168.0.tgz", + "integrity": "sha512-NqU7t3Fes0QngHwAZoIKeXyUZOoszEwGuerj1wZk6+Jd6X4L5NdBcBg8AA2VMyRdSFhCP+irgVRZrYSn0Ii66g==", + "dev": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-base64-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.168.0.tgz", + "integrity": "sha512-s51E8ctLKCoLqcj4a1YsIVX1sMLwf1f9lNfhnE8H7U85BeqTAtjAifdejDdFtxS4ECF95cupzN6PgqFmgdrzpQ==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-body-length-browser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.168.0.tgz", + "integrity": "sha512-vKG9iylTshwzHsVsRpx3oLDMtBvG47b3TIMGQFSuCDPEwD91+s1ORe3r+RxJIWDYJtmw5Y5ZPveYib4p4rWSUQ==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.168.0.tgz", + "integrity": "sha512-NDQIBdJfK95N/zewOcEJC9NqNVRXzWHrgKJTdCTW4UuRBADg3YTeDmqmNA2TUaWydQZa0ubpX3JyaKz4l3DDZw==", + "dev": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.168.0.tgz", + "integrity": "sha512-4AyBOlV2w8fqQ1Os9khnjrsAogBN7ou0bRS1Q34Y9zwtFL+T+xhHO0pp9+Yfw+E6s2Uy3DZWbq8PWyBZze6nuw==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.168.0.tgz", + "integrity": "sha512-5lB9eDMkaittKbdugurzJx32quGrQar+ki3oebjJQZl4/gsDVRqOT9qwz95RVeXdEIUdA4U3T/1OgSNUT9aMyA==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.168.0.tgz", + "integrity": "sha512-462U5waEl495rP0WaKHXS6rrKHusMMBYvHzMzD3/gpSEwMZti0ZWLzhHNRcWp7d3uRVVdAsjF4UM6QwhJrScmA==", + "dev": true, + "dependencies": { + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.168.0.tgz", + "integrity": "sha512-KmJkd0eKXGd2z5h2N0yV6WUBqulwumq2eppv6pYrVfyQc0bBwSOYRG0NcXDvQB7rd+spbQjgbeqrHnsk34fQbQ==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.168.0.tgz", + "integrity": "sha512-bCKN6rbTTA41cqm7TYuiSkXR8peSXR/t8GioeEOExPESNgR7kuwVU4pQ2LZYjnD1HqLtz3FKKKddvBJhmqpG8Q==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.168.0.tgz", + "integrity": "sha512-PInwsmxfXj4HhZytF5kZP6BYJ3mVW2QTzxSnKobkIfRnZHwBEGL74voaArfbbAfqvxzptDY6x4vo4N5Mo7M4hA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.168.0.tgz", + "integrity": "sha512-EnNdhxRif4B4PM+CQcq+2s+dRiYVBPMZHZepq6W/eSOvZfW/T8BvDjUzRW9NjGV/Ld3XKk6dMuoWmBKt7J6I7g==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.168.0.tgz", + "integrity": "sha512-wh3E0FXLzCbpgsi/+NQn2dK/nD//lOKAndzyPsx1uXvKAiqQCkIqAPz5fiGuSkYBZHkjvRxTNSXjL+1tJn+lVQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.168.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.168.0.tgz", + "integrity": "sha512-grL671IO1kkAD3BjofoN0SJE0ldrHjEbevIa4i9eif/Y3LIoCgmUP6tUtRzR7K9CDdjeGuvo0vJ9HfwZWH/B/g==", + "dev": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.168.0.tgz", + "integrity": "sha512-ZXEnVC/AcBdf2wQrITq4bkLnwiPKoBnhJwfPjZdpMHsDssKLquaHQf+QLOB/2s2U+jxl6c2Q7+rL4dv7x545Bg==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-utf8-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.168.0.tgz", + "integrity": "sha512-m9EfLgh0QQrgJfuYowPQW2+a3f848F92cVTnCyeUtjiT59lkW9QPJhVVajRcfmNUUT4S/ikxvmkhzDzzMYH+gA==", + "dev": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-utf8-node/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@aws-sdk/util-waiter": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.168.0.tgz", + "integrity": "sha512-RdUapfJHeqjVeFtafKY+PLvKxEKi2IS+rt475YRoDGqzTegJLV1BO89j4wq/VWyGVljvpRI2/6RqG2Q0K/ozPA==", + "dev": true, + "dependencies": { + "@aws-sdk/abort-controller": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-waiter/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, "node_modules/@eslint/eslintrc": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", @@ -270,21 +1503,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/parser": { "version": "5.36.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.1.tgz", @@ -465,21 +1683,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "5.36.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.1.tgz", @@ -827,6 +2030,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-cli": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/aws-cli/-/aws-cli-0.0.2.tgz", + "integrity": "sha512-340A6bn3I5p/yc8MGQiWRofW3oUpmZ/k6LIZticzDOKWT4/F+TP54hki9SWmSS6XnvNIVAw4k9oPocq6ya4L1g==", + "deprecated": "Recommend using the official aws cli tools for python", + "dev": true, + "dependencies": { + "aws-sdk": "~2.0.0-rc13", + "operetta": "0.0.5" + }, + "bin": { + "aws-cli": "bin/aws.js" + } + }, + "node_modules/aws-sdk": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.0.31.tgz", + "integrity": "sha512-rgmExM3/LjhI95PfjwDs1hks/RYrQ/V3qLybFCzBqr8Y3Hz9Qq3jp+WR1BaWhUckgoVJs/ZE4VSvMKZeNwuFoA==", + "dev": true, + "dependencies": { + "xml2js": "0.2.6", + "xmlbuilder": "0.4.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -948,6 +2178,12 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1208,21 +2444,6 @@ "semver": "^7.0.0" } }, - "node_modules/builtins/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/cached-path-relative": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", @@ -2291,21 +3512,6 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-promise": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz", @@ -2656,6 +3862,19 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==", + "dev": true, + "bin": { + "xml2js": "cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -4172,6 +5391,26 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4267,6 +5506,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/operetta": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/operetta/-/operetta-0.0.5.tgz", + "integrity": "sha512-b9E0Z5nvkHf9IQ0q7VaWpDfj/nX/pRAcMBoGh4SLrGhC2gE3BD6GwLc2qp64AsZgEwBe2gqIgBc5fqu/WDL9uQ==", + "dev": true, + "engines": [ + "node >= 0.4.6" + ] + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -5104,12 +6352,18 @@ "dev": true }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/sha.js": { @@ -5478,6 +6732,15 @@ "node": ">=10" } }, + "node_modules/stylus/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/stylus/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -5599,6 +6862,12 @@ "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==", "dev": true }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -5809,6 +7078,15 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -5833,6 +7111,22 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5992,6 +7286,30 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xml2js": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.6.tgz", + "integrity": "sha512-h+Nzgo0eLwideldZGqSquNtrsuX5zcDREImBa1GSNw9QljlXiFcM3E1kWjLprRjJe2jRuvnVk0j3WgQo9Deoog==", + "dev": true, + "dependencies": { + "sax": "0.4.2" + } + }, + "node_modules/xml2js/node_modules/sax": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.4.2.tgz", + "integrity": "sha512-6Zsl4gnHjiTQfrOzsWdc0bHJepF5KJAVuM5fcyEJrqGyszkx2c55IclWP4D692rJrl1w0tExhbvYKjKNZl5wHg==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.2.tgz", + "integrity": "sha512-h/+ncQQSU/iYycmI2wTN25t7RYN7O2oq9uvI+2+UObi4KcmQh/jUS4N31g5vJttQt7MODsnmBtbcll3YbNyvfw==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -6033,6 +7351,1186 @@ } }, "dependencies": { + "@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + }, + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "dev": true, + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "dev": true, + "requires": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + }, + "@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "dev": true, + "requires": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "@aws-sdk/abort-controller": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.168.0.tgz", + "integrity": "sha512-mvFXmdoIVV3cUmPuwzzHLB1YNjxzm7sHk99zE0zvT653kc7slThLMfO5Kc1WtblXAKbE6eqPDMcA0zg6eRM1cw==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/client-ssm": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.168.0.tgz", + "integrity": "sha512-MtRR4OrKpgUySZsiT0ms/gk4ToL4p3r7+OgICYS2hvMYbQdL0PA/ItAYNnk6IY0L6DxFBFHtkEuaskPneJudgg==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.168.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-node": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "@aws-sdk/util-waiter": "3.168.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/client-sso": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.168.0.tgz", + "integrity": "sha512-QOUmaHKu2K7XlAGlC9zlbldYwm0kSoJ8bJqZQqGI2xhUsSdjJDTaJUm1oOOhg2f3afsluZbCiQvttJpy+y+qnA==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/client-sts": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.168.0.tgz", + "integrity": "sha512-9R6I+d6W3Qx/thQYEwVrpAYRywDLQtVWY6LhOt2NguW5GTUi/NZ7QDc6s9QyDdlZGO62DzO24UKnlpc5y4XWxQ==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-node": "3.168.0", + "@aws-sdk/fetch-http-handler": "3.168.0", + "@aws-sdk/hash-node": "3.168.0", + "@aws-sdk/invalid-dependency": "3.168.0", + "@aws-sdk/middleware-content-length": "3.168.0", + "@aws-sdk/middleware-host-header": "3.168.0", + "@aws-sdk/middleware-logger": "3.168.0", + "@aws-sdk/middleware-recursion-detection": "3.168.0", + "@aws-sdk/middleware-retry": "3.168.0", + "@aws-sdk/middleware-sdk-sts": "3.168.0", + "@aws-sdk/middleware-serde": "3.168.0", + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/middleware-user-agent": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/node-http-handler": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/smithy-client": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "@aws-sdk/util-base64-node": "3.168.0", + "@aws-sdk/util-body-length-browser": "3.168.0", + "@aws-sdk/util-body-length-node": "3.168.0", + "@aws-sdk/util-defaults-mode-browser": "3.168.0", + "@aws-sdk/util-defaults-mode-node": "3.168.0", + "@aws-sdk/util-user-agent-browser": "3.168.0", + "@aws-sdk/util-user-agent-node": "3.168.0", + "@aws-sdk/util-utf8-browser": "3.168.0", + "@aws-sdk/util-utf8-node": "3.168.0", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/config-resolver": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.168.0.tgz", + "integrity": "sha512-eSGHsa5kDIpBtBr1HhM9n0Deb+uSyr5pvk39WPFf5CTGvIqe52Fg9s1/Jz54rDwlgsfPzufX7TrCXgUhMwb8+w==", + "dev": true, + "requires": { + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-config-provider": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.168.0.tgz", + "integrity": "sha512-dzblFOkmH0FzYuckCJYVH/d+HEGO814B0gVt0HnaIvsS5skDSDBXD+/S9AX6BAKTNBWP8BVcn7+u+oS5l7GBkQ==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.168.0.tgz", + "integrity": "sha512-Ua2zTmo0eep/fGh3SL9W0ERlGRkEAiP2IEC63QbRZKK+5Xg6RIgqij7hQHvKLY78zBDd7exnU9W1AMnt9lOd1A==", + "dev": true, + "requires": { + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/url-parser": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.168.0.tgz", + "integrity": "sha512-CYs9ctzxMHpj+alfrw2qRbej9VD8nAdhoVWm88hdtEta9GsaRvX2foNQbnkX6uoBca1AUSHdQ4d9v8dcOhQTNQ==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/credential-provider-sso": "3.168.0", + "@aws-sdk/credential-provider-web-identity": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.168.0.tgz", + "integrity": "sha512-gGsVp68cVBntrMj6jSzDDNJIw3mp2TA18eQf5Rayl7LWZM60kqvEmhWbVRXFrLNKFcUiiTfSACGtkS/Pz60Sog==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/credential-provider-ini": "3.168.0", + "@aws-sdk/credential-provider-process": "3.168.0", + "@aws-sdk/credential-provider-sso": "3.168.0", + "@aws-sdk/credential-provider-web-identity": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.168.0.tgz", + "integrity": "sha512-Yni2S+yHLkUvDI30ZNkEOao2hSBj1eeQvWBUEJsgCFvHdlFDwOYwIueDmrBggqUISUgCLb6y/eylqeMvjN3Eyw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.168.0.tgz", + "integrity": "sha512-X4hv5aLcySHGB2jPl1hTQ+AhBqWsyEYyjtBvi5N1fJLbNtYQR4XwbAeU3uf/SPph+TqTzGjigb9T/sjyO2/sBg==", + "dev": true, + "requires": { + "@aws-sdk/client-sso": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.168.0.tgz", + "integrity": "sha512-hz7wj8htY6s3/TubzH/YOd6f4bxO26GYupCTvKZlWdErLUmZ8h3hG/9xO/5kWOakD40T3MXT7HIo2rvEWg1GWw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.168.0.tgz", + "integrity": "sha512-D4vN6zbF/RA7czw34gFhjsfOD5fkkLxLvmW8zbrJSsrex79Ju96NFuNBs7TtaV2btfXC7SkhhI/z+E81BxqRpg==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/querystring-builder": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-base64-browser": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/hash-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.168.0.tgz", + "integrity": "sha512-W2kMIuMric2Q2D4787DGubHz3Pw5fWDndM2gMjs/MB1psC/N74/ggRUIlUmsjSBFUHY1BYMfjsxe8DS9dSj77A==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.168.0.tgz", + "integrity": "sha512-KuDn4e1XsxBQi+dAoRfSOExICq+Gt5zGA7/dI2jnfqejBNHVmJ8ksOnV/HmilFscPxdJx5POECQosf3p/N4t9w==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.168.0.tgz", + "integrity": "sha512-Zvt8a/g1UfvwmhxOnt/hDrFprC3+DQivFQGnzwBpv+ZyM1BfdgAruAkUZF+GtXI22DXZUumBrposCH1CcgjeIA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-content-length": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.168.0.tgz", + "integrity": "sha512-PHvoNIuXkLkBZ/0OSmFlCmA1o+RdqkNWwNm7/rIMe9cV+ZgtP9kQs+e4itibQb82veHTwG37+B7OAGa0DGqIvg==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.168.0.tgz", + "integrity": "sha512-420rWpd/fsoPzRnMkyUFW1in6jpa1kbVCuewY5cqoH9uQcthrNJ0l9IgePDEMdymIMxGBfwiQERvUYogUadxrw==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.168.0.tgz", + "integrity": "sha512-5xeBlHQz/iWVor04eZLTfygj5T9zvLsngrUVb8FkHDzzNqT9+QwoA0iZoT8Vq5khfZK7UE7SWm2Hi/13t9T9+w==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.168.0.tgz", + "integrity": "sha512-4sr3E37PUDQSpE205d+kGcaJmZj7kE/I50qyf39U0jphk121AZXdKCWDs/T7g/d4LVJLoe6N+zzZIg4ZWVUUZw==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-retry": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.168.0.tgz", + "integrity": "sha512-LriHTAccnfEpeV+IccbWN59JVz+De97pvmJMu5NyUUq/+c2VIJAM+n0MDbHJP6EXuKFGOAXJZf8HVC2sbnXwCw==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/service-error-classification": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.168.0.tgz", + "integrity": "sha512-uE5VYczEkoCG/G63Whp4dGKFouDjx0Jj4vZj7Z4oEQSv/eynBm1+AQAtWA4zJQfYO60lFKOSiBykv/c1hk09Mg==", + "dev": true, + "requires": { + "@aws-sdk/middleware-signing": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.168.0.tgz", + "integrity": "sha512-6z3iySqCjhV5NVEF3o++TgvK1XOBauYdZFCZk4foMxyh/wZ4MB+uIQ/D2AeHExzFGyrPjx0S0gZb4z8st6q9mA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.168.0.tgz", + "integrity": "sha512-yQme9D4bNRdrPQH50a3oJfbf+54Dm1MkW4yjwIwpRoGkxAs2T7sjc3/u/Wo/Jy3g5yzM1Ven3KU+nlKOMNOpAw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/signature-v4": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.168.0.tgz", + "integrity": "sha512-tUMa6gQFqyRC9xRy1cfQAX/K84LkFC+NAyENoDn4cbLvTJpH6tLPINFktaXLkKl2bdzGGWLHefxriBjTqZB+rg==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.168.0.tgz", + "integrity": "sha512-nwcWN1tz39s4IWyx1lxak/W9LdLnusQEdb+0pnJFWTCNhba3BvlAnt1sZFDwbFRmRUbU3x+hhpNB+Xub2hFttg==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.168.0.tgz", + "integrity": "sha512-8su32ifopNLb835NudTdxyv4fQ+7Eie17MjbqnvOeWmjFAgzJyIVJjyvMI+N8Gu3dDCTxSbBh3hl++VOzL+oXg==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/shared-ini-file-loader": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.168.0.tgz", + "integrity": "sha512-yO68M12LUJa/bhuljSRCtLbmWvnS0eopoE3P2+xzV2JzkIg5r+bJmh/VtpDz8D2PxZhRALwBchjq8h+Po6rhcQ==", + "dev": true, + "requires": { + "@aws-sdk/abort-controller": "3.168.0", + "@aws-sdk/protocol-http": "3.168.0", + "@aws-sdk/querystring-builder": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/property-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.168.0.tgz", + "integrity": "sha512-syvXTexP2t9HQY3dsfpPgUP5GjFcpBVzPfxd8GjLWFRcqBCQ5frdetkAfvnhPpytL/stauXuT1xv6jcN1vBAZQ==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/protocol-http": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.168.0.tgz", + "integrity": "sha512-5g7T5WqeU1W/TShfOYiczZFOK5svsQajjSGs1drB2DBQlbepF5YSmVbFGrfX6003h4TV9hpA6CqOjbgd59NgGA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.168.0.tgz", + "integrity": "sha512-cCjdmRKf+zVc/Whc9fP3DqB6QTBz0MsJ2uGqYCWG8kqBr4W8nDZVNRVj4Q1zZjQzipU7+77xJAE8NSIl+RsubA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-uri-escape": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.168.0.tgz", + "integrity": "sha512-O82vxPyoLRuqcCFxAQYuvDwOdMOaQ/hqlaC8Tw6qNE3wpJ1296M51Zgb7lPfIlSxzAc96H//Q+d1t5MViK2SFg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.168.0.tgz", + "integrity": "sha512-cW1U3YMMRLukx5/Fl7NpCsaFgcDkOOZVUaW2qLghJOakt1dc6OwgtPlS7toC9A7zjMIovqYwcksHO5mCyqrPlA==", + "dev": true + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.168.0.tgz", + "integrity": "sha512-K97HWEySV6HJC4CLyimVuqit4FILW4BtTU62jCaEwoPvg1XPAolCzzWfLClJ0GWfyf32+o30wJj8SgHuIuN2Qw==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/signature-v4": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.168.0.tgz", + "integrity": "sha512-jb98UrZ4d07Wr1mUVDY1HRlbEOVoPFZ38e4k20AUEXybxhsvlQhfAfaDITFg3UwMO978m4VAsjpzw8h8WGsNQw==", + "dev": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.168.0", + "@aws-sdk/types": "3.168.0", + "@aws-sdk/util-hex-encoding": "3.168.0", + "@aws-sdk/util-middleware": "3.168.0", + "@aws-sdk/util-uri-escape": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/smithy-client": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.168.0.tgz", + "integrity": "sha512-B2wuTg5ymTYA7eVkt73bdRlWNWvdWNRY3QQizTWn0Ch3nOZXyVZSdH4mGmuWcpiQXEX/YYGmTLY7nCKWrk1E6Q==", + "dev": true, + "requires": { + "@aws-sdk/middleware-stack": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/types": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.168.0.tgz", + "integrity": "sha512-J9VmQAakmqrdYKt3N0T/zQR6ZkfvQ7Y3WufjEWRTdslYcQ9f7UyI93Q21baCHvgcp3E5c4w62x18o6mEA/cHPQ==", + "dev": true + }, + "@aws-sdk/url-parser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.168.0.tgz", + "integrity": "sha512-spFHA6NpsmAF3NCYyljjvl7uavHRvFDCNN32ce9RuRUXXuK8emAtwzXW95OUqtgCcyyKIA5p5p+gujrT7Npmeg==", + "dev": true, + "requires": { + "@aws-sdk/querystring-parser": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-base64-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.168.0.tgz", + "integrity": "sha512-awyUvPXWbV5SrpUY8vTA58RTdTnDFJJmVlCXGB8JCtWYVuAQ5FfKA/K0ZD6p+AP6AsCgHSvXCuZm8vFyZldJ2Q==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-base64-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.168.0.tgz", + "integrity": "sha512-NqU7t3Fes0QngHwAZoIKeXyUZOoszEwGuerj1wZk6+Jd6X4L5NdBcBg8AA2VMyRdSFhCP+irgVRZrYSn0Ii66g==", + "dev": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.168.0.tgz", + "integrity": "sha512-s51E8ctLKCoLqcj4a1YsIVX1sMLwf1f9lNfhnE8H7U85BeqTAtjAifdejDdFtxS4ECF95cupzN6PgqFmgdrzpQ==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.168.0.tgz", + "integrity": "sha512-vKG9iylTshwzHsVsRpx3oLDMtBvG47b3TIMGQFSuCDPEwD91+s1ORe3r+RxJIWDYJtmw5Y5ZPveYib4p4rWSUQ==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.168.0.tgz", + "integrity": "sha512-NDQIBdJfK95N/zewOcEJC9NqNVRXzWHrgKJTdCTW4UuRBADg3YTeDmqmNA2TUaWydQZa0ubpX3JyaKz4l3DDZw==", + "dev": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.168.0.tgz", + "integrity": "sha512-4AyBOlV2w8fqQ1Os9khnjrsAogBN7ou0bRS1Q34Y9zwtFL+T+xhHO0pp9+Yfw+E6s2Uy3DZWbq8PWyBZze6nuw==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.168.0.tgz", + "integrity": "sha512-5lB9eDMkaittKbdugurzJx32quGrQar+ki3oebjJQZl4/gsDVRqOT9qwz95RVeXdEIUdA4U3T/1OgSNUT9aMyA==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.168.0.tgz", + "integrity": "sha512-462U5waEl495rP0WaKHXS6rrKHusMMBYvHzMzD3/gpSEwMZti0ZWLzhHNRcWp7d3uRVVdAsjF4UM6QwhJrScmA==", + "dev": true, + "requires": { + "@aws-sdk/config-resolver": "3.168.0", + "@aws-sdk/credential-provider-imds": "3.168.0", + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/property-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.168.0.tgz", + "integrity": "sha512-KmJkd0eKXGd2z5h2N0yV6WUBqulwumq2eppv6pYrVfyQc0bBwSOYRG0NcXDvQB7rd+spbQjgbeqrHnsk34fQbQ==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.168.0.tgz", + "integrity": "sha512-bCKN6rbTTA41cqm7TYuiSkXR8peSXR/t8GioeEOExPESNgR7kuwVU4pQ2LZYjnD1HqLtz3FKKKddvBJhmqpG8Q==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-middleware": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.168.0.tgz", + "integrity": "sha512-PInwsmxfXj4HhZytF5kZP6BYJ3mVW2QTzxSnKobkIfRnZHwBEGL74voaArfbbAfqvxzptDY6x4vo4N5Mo7M4hA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.168.0.tgz", + "integrity": "sha512-EnNdhxRif4B4PM+CQcq+2s+dRiYVBPMZHZepq6W/eSOvZfW/T8BvDjUzRW9NjGV/Ld3XKk6dMuoWmBKt7J6I7g==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.168.0.tgz", + "integrity": "sha512-wh3E0FXLzCbpgsi/+NQn2dK/nD//lOKAndzyPsx1uXvKAiqQCkIqAPz5fiGuSkYBZHkjvRxTNSXjL+1tJn+lVQ==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.168.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.168.0.tgz", + "integrity": "sha512-grL671IO1kkAD3BjofoN0SJE0ldrHjEbevIa4i9eif/Y3LIoCgmUP6tUtRzR7K9CDdjeGuvo0vJ9HfwZWH/B/g==", + "dev": true, + "requires": { + "@aws-sdk/node-config-provider": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.168.0.tgz", + "integrity": "sha512-ZXEnVC/AcBdf2wQrITq4bkLnwiPKoBnhJwfPjZdpMHsDssKLquaHQf+QLOB/2s2U+jxl6c2Q7+rL4dv7x545Bg==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.168.0.tgz", + "integrity": "sha512-m9EfLgh0QQrgJfuYowPQW2+a3f848F92cVTnCyeUtjiT59lkW9QPJhVVajRcfmNUUT4S/ikxvmkhzDzzMYH+gA==", + "dev": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@aws-sdk/util-waiter": { + "version": "3.168.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.168.0.tgz", + "integrity": "sha512-RdUapfJHeqjVeFtafKY+PLvKxEKi2IS+rt475YRoDGqzTegJLV1BO89j4wq/VWyGVljvpRI2/6RqG2Q0K/ozPA==", + "dev": true, + "requires": { + "@aws-sdk/abort-controller": "3.168.0", + "@aws-sdk/types": "3.168.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, "@eslint/eslintrc": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", @@ -6203,15 +8701,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -6318,15 +8807,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -6589,6 +9069,26 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true }, + "aws-cli": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/aws-cli/-/aws-cli-0.0.2.tgz", + "integrity": "sha512-340A6bn3I5p/yc8MGQiWRofW3oUpmZ/k6LIZticzDOKWT4/F+TP54hki9SWmSS6XnvNIVAw4k9oPocq6ya4L1g==", + "dev": true, + "requires": { + "aws-sdk": "~2.0.0-rc13", + "operetta": "0.0.5" + } + }, + "aws-sdk": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.0.31.tgz", + "integrity": "sha512-rgmExM3/LjhI95PfjwDs1hks/RYrQ/V3qLybFCzBqr8Y3Hz9Qq3jp+WR1BaWhUckgoVJs/ZE4VSvMKZeNwuFoA==", + "dev": true, + "requires": { + "xml2js": "0.2.6", + "xmlbuilder": "0.4.2" + } + }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -6675,6 +9175,12 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6916,17 +9422,6 @@ "dev": true, "requires": { "semver": "^7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "cached-path-relative": { @@ -7889,17 +10384,6 @@ "minimatch": "^3.1.2", "resolve": "^1.22.1", "semver": "^7.3.7" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "eslint-plugin-promise": { @@ -8071,6 +10555,12 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==", + "dev": true + }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -9225,6 +11715,15 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9290,6 +11789,12 @@ "mimic-fn": "^2.1.0" } }, + "operetta": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/operetta/-/operetta-0.0.5.tgz", + "integrity": "sha512-b9E0Z5nvkHf9IQ0q7VaWpDfj/nX/pRAcMBoGh4SLrGhC2gE3BD6GwLc2qp64AsZgEwBe2gqIgBc5fqu/WDL9uQ==", + "dev": true + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -9948,10 +12453,13 @@ "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "sha.js": { "version": "2.4.11", @@ -10237,6 +12745,12 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -10336,6 +12850,12 @@ "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -10507,6 +13027,12 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -10528,6 +13054,22 @@ "defaults": "^1.0.3" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -10643,6 +13185,29 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "xml2js": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.6.tgz", + "integrity": "sha512-h+Nzgo0eLwideldZGqSquNtrsuX5zcDREImBa1GSNw9QljlXiFcM3E1kWjLprRjJe2jRuvnVk0j3WgQo9Deoog==", + "dev": true, + "requires": { + "sax": "0.4.2" + }, + "dependencies": { + "sax": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.4.2.tgz", + "integrity": "sha512-6Zsl4gnHjiTQfrOzsWdc0bHJepF5KJAVuM5fcyEJrqGyszkx2c55IclWP4D692rJrl1w0tExhbvYKjKNZl5wHg==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.2.tgz", + "integrity": "sha512-h/+ncQQSU/iYycmI2wTN25t7RYN7O2oq9uvI+2+UObi4KcmQh/jUS4N31g5vJttQt7MODsnmBtbcll3YbNyvfw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 92c287a..5ef81b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "bbctrl", - "version": "1.1.0", + "name": "onefinity", + "version": "1.1.1", "homepage": "https://onefinitycnc.com/", "repository": "https://github.com/OneFinityCNC/onefinity", "license": "GPL-3.0+", @@ -8,8 +8,10 @@ "postinstall": "cd src/svelte-components && npm i" }, "devDependencies": { + "@aws-sdk/client-ssm": "^3.168.0", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", + "aws-cli": "^0.0.2", "browserify": "^17.0.0", "eslint": "^8.23.0", "eslint-config-standard-with-typescript": "^22.0.0", @@ -23,6 +25,8 @@ "jstransformer-scss": "^2.0.0", "jstransformer-stylus": "^1.5.0", "lodash.merge": "4.6.2", - "pug-cli": "^1.0.0-alpha6" + "node-fetch": "^2.6.7", + "pug-cli": "^1.0.0-alpha6", + "semver": "^7.3.7" } } \ No newline at end of file diff --git a/scripts/create-sdcard-image.js b/scripts/create-sdcard-image.js index 88fdc10..24ae6d7 100755 --- a/scripts/create-sdcard-image.js +++ b/scripts/create-sdcard-image.js @@ -14,8 +14,9 @@ async function main() { const { uid } = statSync("."); - const devices = runCommand("df -T msdos") + const devices = runCommand("df -H -T msdos") .split("\n") + .filter(line => !line.includes("Filesystem")) .map(line => { const [ disk ] = line.split(/\s+/); return { @@ -38,5 +39,5 @@ async function main() { runCommand(`dd if=${device} of=${IMAGE_FILENAME} status=progress`, { stdio: "inherit" }); - runCommand(`chown ${uid} 1f.img`); + runCommand(`chown ${uid} ${IMAGE_FILENAME}`); } diff --git a/scripts/install.sh b/scripts/install.sh index d9eaa1e..340e90f 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -4,6 +4,15 @@ UPDATE_AVR=true UPDATE_PY=true REBOOT=false +remove_services() { + for service in "$@" + do + systemctl stop "${service}.service" + systemctl disable "${service}.service" + find /etc/systemd -name "${service}.service" -exec rm -f {} \; + done +} + while [ $# -gt 0 ]; do case "$1" in --no-avr) UPDATE_AVR=false ;; @@ -27,7 +36,13 @@ if $UPDATE_AVR; then ./installer/scripts/avr109-flash.py src/avr/bbctrl-avr-firmware.hex fi -# Update config.txt +# Set a default time-zone, if one has not been set +timedatectl | grep 'Time zone: Etc/UTC' >/dev/null +if [ $? -eq 0 ]; then + timedatectl set-timezone America/Los_Angeles +fi + +# Update /boot/config.txt ./installer/scripts/edit-boot-config \ disable_overscan=1 \ framebuffer_width=1280 \ @@ -85,6 +100,8 @@ if [ $? -ne 0 ]; then update-locale en_US.UTF-8 fi +localectl set-locale LC_TIME=en_US.UTF-8 + # Setup USB stick automount diff ./installer/config/11-automount.rules /etc/udev/rules.d/11-automount.rules >/dev/null if [ $? -ne 0 ]; then @@ -177,9 +194,10 @@ if $UPDATE_PY; then fi # Install the service that turns off the screen during shutdown -cp ./installer/config/bbctrl-poweroff.service /etc/systemd/system/ +remove_services bbctrl-poweroff onefinity-poweroff +cp ./installer/config/onefinity-poweroff.service /etc/systemd/system/ systemctl daemon-reload -systemctl enable bbctrl-poweroff +systemctl enable onefinity-poweroff # Expand the file system if necessary chmod +x ./installer/scripts/resize_root_fs.sh @@ -189,8 +207,9 @@ if [ $? -eq 0 ]; then fi # Install our logrotate config -cp ./installer/config/bbctrl-logrotate /etc/logrotate.d/bbctrl -chown root:root /etc/logrotate.d/bbctrl +rm -f /etc/logrotate.d/{bbctrl,onefinity} +cp ./installer/config/onefinity-logrotate /etc/logrotate.d/onefinity +chown root:root /etc/logrotate.d/onefinity # Ensure logrotate runs on every boot (for systems with no network, thus bad clock) if [ ! -e /etc/cron.d/reboot ]; then diff --git a/scripts/next-rc b/scripts/next-rc deleted file mode 100755 index 2edc50a..0000000 --- a/scripts/next-rc +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env python3 - -import os -import json - -if os.path.exists('dist/latest-beta.txt'): - with open('dist/latest-beta.txt', 'r') as f: - latest_beta = f.read().strip() - -else: latest_beta = '' - -with open('package.json', 'r') as f: - version = json.load(f)['version'] - -if latest_beta.startswith(version + '-rc'): - print(int(latest_beta[len(version) + 3:]) + 1) - -else: - print(1) diff --git a/scripts/prep-controller-for-imaging.js b/scripts/prep-controller-for-imaging.js index 3616c52..0bdd682 100755 --- a/scripts/prep-controller-for-imaging.js +++ b/scripts/prep-controller-for-imaging.js @@ -4,6 +4,7 @@ const inquirer = require("inquirer"); const { runCommand, logErrorAndExit, initSignalHandlers, assertInstalled, info } = require("./util"); const PACKAGES_TO_PURGE = [ + "aptitude", "dphys-swapfile", "gdb", "geoip-database", @@ -47,6 +48,7 @@ async function main() { }); ssh("apt-get update"); + ssh("apt-get install usbutils"); ssh(`apt-get purge -y ${PACKAGES_TO_PURGE.join(" ")}`); ssh("apt-get autoremove -y"); ssh("touch /root/.prep-controller-completed"); diff --git a/scripts/prep-sd-image.js b/scripts/prep-sd-image.js index a85c6e8..72ac36f 100755 --- a/scripts/prep-sd-image.js +++ b/scripts/prep-sd-image.js @@ -50,6 +50,7 @@ const REQUIRED_TOOLS = [ ]; const SYSTEM_FILES = [ + "/media/*", "/tmp/*", "/usr/**/__pycache__", "/usr/**/*.py[co]", diff --git a/scripts/support.js b/scripts/support.js new file mode 100755 index 0000000..41fda70 --- /dev/null +++ b/scripts/support.js @@ -0,0 +1,214 @@ +#!/usr/bin/env node + +const inquirer = require("inquirer"); +const { SSM } = require("@aws-sdk/client-ssm"); +const { initSignalHandlers } = require("./util"); +const fetch = require("node-fetch"); + +let ssm; + +initSignalHandlers(); +main(); + +async function main() { + await getAWSCredentials(); + + // eslint-disable-next-line no-constant-condition + while (true) { + const { command } = await inquirer.prompt({ + type: "list", + name: "command", + choices: [ + "code", + "info", + "disconnect" + ] + }); + + switch (command) { + case "code": + await commandCode(); + break; + + case "info": + await commandInfo(); + break; + + case "disconnect": + await commandDisconnect(); + break; + } + } +} + +async function commandCode() { + const tunnels = await loadTunnels(); + + if (tunnels?.length) { + console.log("There are active tunnels. Disconnect first."); + return; + } + + await updateNgrokAuthToken(); + + const code = `000000${Math.random() * 999999}`.slice(-6); + await saveParam("code", code); + + console.log(`The code is: ${code}`); +} + +async function commandInfo() { + const tunnels = await loadTunnels(); + + if (!tunnels.length) { + console.log("There are no tunnels!"); + return; + } + + const webTunnel = tunnels.find(tunnel => tunnel.proto === "https"); + const sshTunnel = tunnels.find(tunnel => tunnel.proto === "tcp"); + const [ , host, port ] = sshTunnel.public_url.match(/tcp:\/\/([^:]+):(\d+)/); + + console.log("Connection info:"); + console.log(webTunnel.public_url); + console.log(`ssh bbmc@${host} -p ${port}`); + console.log(); +} + +async function commandDisconnect() { + const tunnels = await loadTunnels(); + + if (!tunnels.length) { + console.log("There are no tunnels!"); + return; + } + + const webTunnel = tunnels.find(tunnel => tunnel.proto === "https"); + + const response = await fetch(`${webTunnel.public_url}/api/remote-diagnostics?command=disconnect`, { + headers: { + Authorization: `Basic ${Buffer.from("onefinity:onefinity").toString("base64")}` + } + }); + + console.log(); + console.log(await response.text()); + console.log(); + console.log("We now need a new ngrok auth token."); + + await promptForNewAuthToken(); +} + +async function updateNgrokAuthToken() { + const storedAuthToken = await loadParam("ngrok-auth-token", ""); + + const apiKey = await loadParam("ngrok-api-key"); + const response = await fetch("https://api.ngrok.com/credentials", { + headers: { + "Authorization": `Bearer ${apiKey}`, + "Ngrok-Version": "2" + } + }); + + const result = await response.json(); + let authToken = result.credentials[0].token; + + if (authToken === storedAuthToken) { + console.warn("The nGrok AuthToken is stale."); + + const { ignore } = await inquirer.prompt({ + type: "confirm", + name: "ignore" + }); + + if (!ignore) { + authToken = await promptForNewAuthToken(); + } + } + + await saveParam("ngrok-auth-token", authToken); +} + +async function promptForNewAuthToken() { + console.warn("To re-issue, visit: https://dashboard.ngrok.com/get-started/your-authtoken"); + const { newAuthToken } = await inquirer.prompt({ + type: "input", + name: "newAuthToken" + }); + + return newAuthToken; +} + +function getParamName(name) { + return `/onefinity-support/${name}`; +} + +async function loadParam(name, defaultValue = undefined) { + name = getParamName(name); + + try { + const response = await ssm.getParameter({ Name: name }); + return response.Parameter.Value; + } catch (error) { + if (error.name !== "ParameterNotFound") { + console.log(`Error getting parameter "${name}"`, JSON.stringify({ + name: error.name, + message: error.message, + stack: error.stack, + cause: error.cause + }, null, 4)); + } + + if (defaultValue === undefined) { + throw error; + } + + return defaultValue; + } +} + +async function saveParam(name, value) { + await ssm.putParameter({ + Name: getParamName(name), + Value: value, + DataType: "text", + Overwrite: true, + Tier: "Standard", + Type: "String" + }); +} + +async function getAWSCredentials() { + const { accessKeyId, secretAccessKey } = await inquirer.prompt([ + { + type: "input", + name: "accessKeyId" + }, + { + type: "input", + name: "secretAccessKey" + } + ]); + + ssm = new SSM({ + credentials: { + accessKeyId, + secretAccessKey + }, + region: "us-east-1" + }); +} + +async function loadTunnels() { + const apiKey = await loadParam("ngrok-api-key"); + const response = await fetch("https://api.ngrok.com/tunnels", { + headers: { + Authorization: `Bearer ${apiKey}`, + "Ngrok-Version": 2 + } + }); + + const { tunnels } = await response.json(); + + return tunnels; +} diff --git a/setup.py b/setup.py index 5005f9b..3718fc4 100755 --- a/setup.py +++ b/setup.py @@ -6,27 +6,19 @@ import json pkg = json.load(open('package.json', 'r')) setup( - name=pkg['name'], + name='bbctrl', version=pkg['version'], - description='Buildbotics Machine Controller', + description='Onefinity Controller', long_description=open('README.md', 'rt').read(), - author='Joseph Coffland', - author_email='joseph@buildbotics.org', + maintainer='support@onefinitycnc.com', + maintainer_email='support@onefinitycnc.com', platforms=['any'], license=pkg['license'], url=pkg['homepage'], package_dir={'': 'src/py'}, - packages=[ - 'bbctrl', - 'camotics', - 'iw_parse' - ], + packages=['bbctrl', 'camotics', 'iw_parse'], include_package_data=True, - entry_points={ - 'console_scripts': [ - 'bbctrl = bbctrl:run' - ] - }, + entry_points={'console_scripts': ['bbctrl = bbctrl:run']}, scripts=[ 'installer/scripts/update-bbctrl', 'installer/scripts/upgrade-bbctrl', @@ -37,12 +29,7 @@ setup( 'installer/scripts/browser', ], install_requires=[ - 'tornado', - 'sockjs-tornado', - 'pyserial', - 'pyudev', - 'smbus2', - 'watchdog' + 'tornado', 'sockjs-tornado', 'pyserial', 'pyudev', 'smbus2', 'watchdog' ], zip_safe=False, ) diff --git a/src/avr/data_usage.py b/src/avr/data_usage.py deleted file mode 100644 index 27863ec..0000000 --- a/src/avr/data_usage.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python3 - -################################################################################ -# # -# This file is part of the Buildbotics firmware. # -# # -# Copyright (c) 2015 - 2018, Buildbotics LLC # -# All rights reserved. # -# # -# This file ("the software") is free software: you can redistribute it # -# and/or modify it under the terms of the GNU General Public License, # -# version 2 as published by the Free Software Foundation. You should # -# have received a copy of the GNU General Public License, version 2 # -# along with the software. If not, see . # -# # -# The software is distributed in the hope that it will be useful, but # -# WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # -# Lesser General Public License for more details. # -# # -# You should have received a copy of the GNU Lesser General Public # -# License along with the software. If not, see # -# . # -# # -# For information regarding this software email: # -# "Joseph Coffland" # -# # -################################################################################ - -import os -import re -import shlex -import subprocess - - -lineRE = r'%(addr)s ' -command = 'avr-objdump -j .bss -t buildbotics.elf' - -proc = subprocess.Popen(shlex.split(command), stdout = subprocess.PIPE) - -out, err = proc.communicate() - -if proc.returncode: - print(out) - raise Exception('command failed') - -def get_sizes(data): - for line in data.decode().split('\n'): - if not re.match(r'^[0-9a-f]{8} .*', line): continue - - size, name = int(line[22:30], 16), line[31:] - if not size: continue - - yield (size, name) - -sizes = sorted(get_sizes(out)) -total = sum(x[0] for x in sizes) - -for size, name in sizes: - print('% 6d %5.2f%% %s' % (size, size / total * 100, name)) - -print('-' * 40) -print('% 6d Total' % total) diff --git a/src/avr/emu/src/avr/eeprom.h b/src/avr/emu/src/avr/eeprom.h index bafb8b0..7766515 100644 --- a/src/avr/emu/src/avr/eeprom.h +++ b/src/avr/emu/src/avr/eeprom.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define EEMEM diff --git a/src/avr/emu/src/avr/interrupt.h b/src/avr/emu/src/avr/interrupt.h index 10fd67b..cc18461 100644 --- a/src/avr/emu/src/avr/interrupt.h +++ b/src/avr/emu/src/avr/interrupt.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "io.h" diff --git a/src/avr/emu/src/avr/io.h b/src/avr/emu/src/avr/io.h index 3d0e145..36f240d 100644 --- a/src/avr/emu/src/avr/io.h +++ b/src/avr/emu/src/avr/io.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - /***************************************************************************** * * Copyright (C) 2015 Atmel Corporation diff --git a/src/avr/emu/src/avr/pgmspace.h b/src/avr/emu/src/avr/pgmspace.h index 5377eb9..734832c 100644 --- a/src/avr/emu/src/avr/pgmspace.h +++ b/src/avr/emu/src/avr/pgmspace.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define PRPSTR "s" diff --git a/src/avr/emu/src/avr/wdt.h b/src/avr/emu/src/avr/wdt.h index bcf6f99..d66983b 100644 --- a/src/avr/emu/src/avr/wdt.h +++ b/src/avr/emu/src/avr/wdt.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define WDTO_250MS 0 diff --git a/src/avr/emu/src/emu.c b/src/avr/emu/src/emu.c index a0b06a5..48457ac 100644 --- a/src/avr/emu/src/emu.c +++ b/src/avr/emu/src/emu.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include #include diff --git a/src/avr/emu/src/util/atomic.h b/src/avr/emu/src/util/atomic.h index 86dab20..0c32a86 100644 --- a/src/avr/emu/src/util/atomic.h +++ b/src/avr/emu/src/util/atomic.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define ATOMIC_BLOCK(x) diff --git a/src/avr/emu/src/util/crc16.h b/src/avr/emu/src/util/crc16.h index e343874..bb3321e 100644 --- a/src/avr/emu/src/util/crc16.h +++ b/src/avr/emu/src/util/crc16.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define _crc16_update(...) 0 diff --git a/src/avr/emu/src/util/delay.h b/src/avr/emu/src/util/delay.h index e67c76a..0dd03f2 100644 --- a/src/avr/emu/src/util/delay.h +++ b/src/avr/emu/src/util/delay.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/SCurve.cpp b/src/avr/src/SCurve.cpp index 73bbe30..f090733 100644 --- a/src/avr/src/SCurve.cpp +++ b/src/avr/src/SCurve.cpp @@ -1,31 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - - #include "SCurve.h" #include diff --git a/src/avr/src/SCurve.h b/src/avr/src/SCurve.h index d48786a..c0967ad 100644 --- a/src/avr/src/SCurve.h +++ b/src/avr/src/SCurve.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/analog.c b/src/avr/src/analog.c index 918f4fa..6eb3411 100644 --- a/src/avr/src/analog.c +++ b/src/avr/src/analog.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "analog.h" #include "config.h" diff --git a/src/avr/src/analog.h b/src/avr/src/analog.h index 6aaf592..0a3aa17 100644 --- a/src/avr/src/analog.h +++ b/src/avr/src/analog.h @@ -1,33 +1,5 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once - void analog_init(); float analog_get(unsigned port); void analog_rtc_callback(); diff --git a/src/avr/src/axis.c b/src/avr/src/axis.c index 1f891f5..19b5e64 100644 --- a/src/avr/src/axis.c +++ b/src/avr/src/axis.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "axis.h" #include "motor.h" #include "switch.h" diff --git a/src/avr/src/axis.h b/src/avr/src/axis.h index 50aae9b..38cafdc 100644 --- a/src/avr/src/axis.h +++ b/src/avr/src/axis.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "config.h" diff --git a/src/avr/src/base64.c b/src/avr/src/base64.c index e6bbe99..2908ed8 100644 --- a/src/avr/src/base64.c +++ b/src/avr/src/base64.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "base64.h" #include "util.h" diff --git a/src/avr/src/base64.h b/src/avr/src/base64.h index ed6e6a6..82204e9 100644 --- a/src/avr/src/base64.h +++ b/src/avr/src/base64.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/command.c b/src/avr/src/command.c index 916c388..f84dc2e 100644 --- a/src/avr/src/command.c +++ b/src/avr/src/command.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "command.h" #include "usart.h" diff --git a/src/avr/src/command.def b/src/avr/src/command.def index c413a90..1349b71 100644 --- a/src/avr/src/command.def +++ b/src/avr/src/command.def @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - //(CODE, NAME, SYNC) CMD('$', var, 0) // Set or get variable CMD('#', sync_var, 1) // Set variable synchronous diff --git a/src/avr/src/command.h b/src/avr/src/command.h index 24fa928..bb7c774 100644 --- a/src/avr/src/command.h +++ b/src/avr/src/command.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "config.h" diff --git a/src/avr/src/commands.c b/src/avr/src/commands.c index 8796b09..3949b30 100644 --- a/src/avr/src/commands.c +++ b/src/avr/src/commands.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "config.h" #include "stepper.h" #include "command.h" diff --git a/src/avr/src/config.h b/src/avr/src/config.h index 702fb2a..28da9e9 100644 --- a/src/avr/src/config.h +++ b/src/avr/src/config.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "pins.h" diff --git a/src/avr/src/cpp_magic.h b/src/avr/src/cpp_magic.h index f677c1a..ed6b211 100644 --- a/src/avr/src/cpp_magic.h +++ b/src/avr/src/cpp_magic.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - /* This header file contains a library of advanced C Pre-Processor (CPP) macros * which implement various useful functions, such as iteration, in the * pre-processor. diff --git a/src/avr/src/drv8711.c b/src/avr/src/drv8711.c index 5db2355..4c06134 100644 --- a/src/avr/src/drv8711.c +++ b/src/avr/src/drv8711.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "drv8711.h" #include "status.h" #include "stepper.h" diff --git a/src/avr/src/drv8711.h b/src/avr/src/drv8711.h index 78c3859..bcffea8 100644 --- a/src/avr/src/drv8711.h +++ b/src/avr/src/drv8711.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/emu.h b/src/avr/src/emu.h index cb3d605..772347a 100644 --- a/src/avr/src/emu.h +++ b/src/avr/src/emu.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #ifdef __AVR__ #define emu_init() #define emu_callback() diff --git a/src/avr/src/estop.c b/src/avr/src/estop.c index 1e9bacb..5b30d00 100644 --- a/src/avr/src/estop.c +++ b/src/avr/src/estop.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "estop.h" #include "motor.h" #include "stepper.h" diff --git a/src/avr/src/estop.h b/src/avr/src/estop.h index 652f5c0..33811e1 100644 --- a/src/avr/src/estop.h +++ b/src/avr/src/estop.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "status.h" diff --git a/src/avr/src/exec.c b/src/avr/src/exec.c index bc4d9df..d5261af 100644 --- a/src/avr/src/exec.c +++ b/src/avr/src/exec.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "exec.h" #include "stepper.h" diff --git a/src/avr/src/exec.h b/src/avr/src/exec.h index af238cd..9602143 100644 --- a/src/avr/src/exec.h +++ b/src/avr/src/exec.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/hardware.c b/src/avr/src/hardware.c index ec18f75..d619d75 100644 --- a/src/avr/src/hardware.c +++ b/src/avr/src/hardware.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "hardware.h" #include "rtc.h" #include "usart.h" diff --git a/src/avr/src/hardware.h b/src/avr/src/hardware.h index e2be012..6bbd792 100644 --- a/src/avr/src/hardware.h +++ b/src/avr/src/hardware.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "status.h" diff --git a/src/avr/src/huanyang.c b/src/avr/src/huanyang.c index 26481e1..1610cd0 100644 --- a/src/avr/src/huanyang.c +++ b/src/avr/src/huanyang.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "huanyang.h" #include "config.h" #include "modbus.h" diff --git a/src/avr/src/huanyang.h b/src/avr/src/huanyang.h index ccad449..23e5ec9 100644 --- a/src/avr/src/huanyang.h +++ b/src/avr/src/huanyang.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "spindle.h" diff --git a/src/avr/src/i2c.c b/src/avr/src/i2c.c index 5832d3c..cdbfea2 100644 --- a/src/avr/src/i2c.c +++ b/src/avr/src/i2c.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "i2c.h" #include diff --git a/src/avr/src/i2c.h b/src/avr/src/i2c.h index 7cd55ca..0ea082a 100644 --- a/src/avr/src/i2c.h +++ b/src/avr/src/i2c.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "config.h" diff --git a/src/avr/src/io.c b/src/avr/src/io.c index 94ffcda..fe63e0d 100644 --- a/src/avr/src/io.c +++ b/src/avr/src/io.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "io.h" #include "status.h" diff --git a/src/avr/src/io.h b/src/avr/src/io.h index 1f8948b..4bdaf60 100644 --- a/src/avr/src/io.h +++ b/src/avr/src/io.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/jog.c b/src/avr/src/jog.c index 64df035..dd9f48c 100644 --- a/src/avr/src/jog.c +++ b/src/avr/src/jog.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "jog.h" #include "axis.h" diff --git a/src/avr/src/jog.h b/src/avr/src/jog.h index ea093ab..d9b7b0a 100644 --- a/src/avr/src/jog.h +++ b/src/avr/src/jog.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "status.h" diff --git a/src/avr/src/line.c b/src/avr/src/line.c index a94d186..23c6720 100644 --- a/src/avr/src/line.c +++ b/src/avr/src/line.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "config.h" #include "exec.h" #include "command.h" diff --git a/src/avr/src/main.c b/src/avr/src/main.c index 3bdbec3..ddec6dd 100644 --- a/src/avr/src/main.c +++ b/src/avr/src/main.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "hardware.h" #include "stepper.h" #include "motor.h" diff --git a/src/avr/src/messages.def b/src/avr/src/messages.def index 2f9aa33..62b39b2 100644 --- a/src/avr/src/messages.def +++ b/src/avr/src/messages.def @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - STAT_MSG(OK, "OK") STAT_MSG(AGAIN, "Run command again") STAT_MSG(NOP, "No op") diff --git a/src/avr/src/modbus.c b/src/avr/src/modbus.c index 2e63c1e..4822f13 100644 --- a/src/avr/src/modbus.c +++ b/src/avr/src/modbus.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "modbus.h" #include "usart.h" #include "status.h" diff --git a/src/avr/src/modbus.h b/src/avr/src/modbus.h index 89b2cbb..e2ee1f1 100644 --- a/src/avr/src/modbus.h +++ b/src/avr/src/modbus.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - /******************************************************************************\ Modbus RTU command format is as follows: diff --git a/src/avr/src/motor.c b/src/avr/src/motor.c index adb0b63..26682e6 100644 --- a/src/avr/src/motor.c +++ b/src/avr/src/motor.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "motor.h" #include "config.h" #include "hardware.h" diff --git a/src/avr/src/motor.h b/src/avr/src/motor.h index 242e771..018929c 100644 --- a/src/avr/src/motor.h +++ b/src/avr/src/motor.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "status.h" diff --git a/src/avr/src/outputs.c b/src/avr/src/outputs.c index f989ec7..0f4899b 100644 --- a/src/avr/src/outputs.c +++ b/src/avr/src/outputs.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "outputs.h" #include "config.h" diff --git a/src/avr/src/outputs.h b/src/avr/src/outputs.h index e0f6636..83a1d95 100644 --- a/src/avr/src/outputs.h +++ b/src/avr/src/outputs.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/pgmspace.h b/src/avr/src/pgmspace.h index 9d7f25f..0c0aa33 100644 --- a/src/avr/src/pgmspace.h +++ b/src/avr/src/pgmspace.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/pins.c b/src/avr/src/pins.c index 65782fd..bddc8db 100644 --- a/src/avr/src/pins.c +++ b/src/avr/src/pins.c @@ -1,31 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "pins.h" - PORT_t *pin_ports[] = {&PORTA, &PORTB, &PORTC, &PORTD, &PORTE, &PORTF}; diff --git a/src/avr/src/pins.h b/src/avr/src/pins.h index 6d6cd8b..2ceddc0 100644 --- a/src/avr/src/pins.h +++ b/src/avr/src/pins.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once enum {PORT_A = 1, PORT_B, PORT_C, PORT_D, PORT_E, PORT_F}; diff --git a/src/avr/src/pwm.c b/src/avr/src/pwm.c index 1659964..fa2a643 100644 --- a/src/avr/src/pwm.c +++ b/src/avr/src/pwm.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "pwm.h" #include "config.h" diff --git a/src/avr/src/pwm.h b/src/avr/src/pwm.h index 23c723b..a7293fc 100644 --- a/src/avr/src/pwm.h +++ b/src/avr/src/pwm.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "spindle.h" diff --git a/src/avr/src/report.c b/src/avr/src/report.c index 5e9d032..34a55ff 100644 --- a/src/avr/src/report.c +++ b/src/avr/src/report.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "report.h" #include "config.h" #include "usart.h" diff --git a/src/avr/src/report.h b/src/avr/src/report.h index 4a7dcff..1da9977 100644 --- a/src/avr/src/report.h +++ b/src/avr/src/report.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/ringbuf.def b/src/avr/src/ringbuf.def index 1f4bad9..cbc25e5 100644 --- a/src/avr/src/ringbuf.def +++ b/src/avr/src/ringbuf.def @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - /* This file defines an X-Macro ring buffer. It can be used like this: * * #define RING_BUF_NAME tx_buf diff --git a/src/avr/src/rtc.c b/src/avr/src/rtc.c index f52c4fc..b95d144 100644 --- a/src/avr/src/rtc.c +++ b/src/avr/src/rtc.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "rtc.h" #include "switch.h" diff --git a/src/avr/src/rtc.h b/src/avr/src/rtc.h index 6313ae9..95af283 100644 --- a/src/avr/src/rtc.h +++ b/src/avr/src/rtc.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/seek.c b/src/avr/src/seek.c index 56f010d..39698c0 100644 --- a/src/avr/src/seek.c +++ b/src/avr/src/seek.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "seek.h" #include "command.h" diff --git a/src/avr/src/seek.h b/src/avr/src/seek.h index aa1d7fa..dc191fe 100644 --- a/src/avr/src/seek.h +++ b/src/avr/src/seek.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "switch.h" diff --git a/src/avr/src/spindle.c b/src/avr/src/spindle.c index 2be4a3b..38ca891 100644 --- a/src/avr/src/spindle.c +++ b/src/avr/src/spindle.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "spindle.h" #include "pwm.h" #include "huanyang.h" diff --git a/src/avr/src/spindle.h b/src/avr/src/spindle.h index 4728631..e47ecae 100644 --- a/src/avr/src/spindle.h +++ b/src/avr/src/spindle.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/state.c b/src/avr/src/state.c index e94069c..5f42089 100644 --- a/src/avr/src/state.c +++ b/src/avr/src/state.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "state.h" #include "exec.h" diff --git a/src/avr/src/state.h b/src/avr/src/state.h index d3488ab..4f4c7e2 100644 --- a/src/avr/src/state.h +++ b/src/avr/src/state.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "pgmspace.h" diff --git a/src/avr/src/status.c b/src/avr/src/status.c index 4279637..af4fdd7 100644 --- a/src/avr/src/status.c +++ b/src/avr/src/status.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "status.h" #include "estop.h" #include "usart.h" diff --git a/src/avr/src/status.h b/src/avr/src/status.h index d363a1d..c050609 100644 --- a/src/avr/src/status.h +++ b/src/avr/src/status.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "pgmspace.h" diff --git a/src/avr/src/stepper.c b/src/avr/src/stepper.c index 68453f7..516a9c5 100644 --- a/src/avr/src/stepper.c +++ b/src/avr/src/stepper.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "stepper.h" #include "config.h" diff --git a/src/avr/src/stepper.h b/src/avr/src/stepper.h index d365e34..b669d10 100644 --- a/src/avr/src/stepper.h +++ b/src/avr/src/stepper.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "spindle.h" diff --git a/src/avr/src/switch.c b/src/avr/src/switch.c index 6994b15..fa8d962 100644 --- a/src/avr/src/switch.c +++ b/src/avr/src/switch.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "switch.h" #include "config.h" diff --git a/src/avr/src/switch.h b/src/avr/src/switch.h index fb3a9d7..fc2eff7 100644 --- a/src/avr/src/switch.h +++ b/src/avr/src/switch.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/type.c b/src/avr/src/type.c index 272e1f6..5f2488c 100644 --- a/src/avr/src/type.c +++ b/src/avr/src/type.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "type.h" #include "base64.h" diff --git a/src/avr/src/type.def b/src/avr/src/type.def index 5f350fa..48c042d 100644 --- a/src/avr/src/type.def +++ b/src/avr/src/type.def @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - // TYPE DEF TYPEDEF(str, const char *) TYPEDEF(pstr, PGM_P) diff --git a/src/avr/src/type.h b/src/avr/src/type.h index 322ebd6..8e4e331 100644 --- a/src/avr/src/type.h +++ b/src/avr/src/type.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "pgmspace.h" diff --git a/src/avr/src/usart.c b/src/avr/src/usart.c index d035c0e..18c6a4a 100644 --- a/src/avr/src/usart.c +++ b/src/avr/src/usart.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "usart.h" #include "cpp_magic.h" #include "config.h" diff --git a/src/avr/src/usart.h b/src/avr/src/usart.h index b59f4ed..690a335 100644 --- a/src/avr/src/usart.h +++ b/src/avr/src/usart.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include diff --git a/src/avr/src/util.c b/src/avr/src/util.c index 61137fe..8516944 100644 --- a/src/avr/src/util.c +++ b/src/avr/src/util.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "util.h" #include "base64.h" diff --git a/src/avr/src/util.h b/src/avr/src/util.h index 300fb1a..bd4ad67 100644 --- a/src/avr/src/util.h +++ b/src/avr/src/util.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once diff --git a/src/avr/src/vars.c b/src/avr/src/vars.c index 244ae08..e286660 100644 --- a/src/avr/src/vars.c +++ b/src/avr/src/vars.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "vars.h" #include "type.h" diff --git a/src/avr/src/vars.def b/src/avr/src/vars.def index ecb48a0..0281bbc 100644 --- a/src/avr/src/vars.def +++ b/src/avr/src/vars.def @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #define AXES_LABEL "xyzabc" #define MOTORS_LABEL "0123" #define OUTS_LABEL "ed12ft" diff --git a/src/avr/src/vars.h b/src/avr/src/vars.h index 949f5aa..bd114e5 100644 --- a/src/avr/src/vars.h +++ b/src/avr/src/vars.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "status.h" diff --git a/src/avr/src/vfd_spindle.c b/src/avr/src/vfd_spindle.c index fb247fe..be8f5d6 100644 --- a/src/avr/src/vfd_spindle.c +++ b/src/avr/src/vfd_spindle.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "vfd_spindle.h" #include "modbus.h" #include "rtc.h" diff --git a/src/avr/src/vfd_spindle.h b/src/avr/src/vfd_spindle.h index 1bfc3d9..6498ecb 100644 --- a/src/avr/src/vfd_spindle.h +++ b/src/avr/src/vfd_spindle.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "spindle.h" diff --git a/src/bbserial/bbserial.c b/src/bbserial/bbserial.c index 0c00d5d..00ae6cc 100644 --- a/src/bbserial/bbserial.c +++ b/src/bbserial/bbserial.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2019, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include #include #include diff --git a/src/boot/src/boot.c b/src/boot/src/boot.c index 5137617..2bdd9af 100644 --- a/src/boot/src/boot.c +++ b/src/boot/src/boot.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "boot.h" #include "sp_driver.h" diff --git a/src/boot/src/boot.h b/src/boot/src/boot.h index def2d06..68baa51 100644 --- a/src/boot/src/boot.h +++ b/src/boot/src/boot.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #define INITIAL_WAIT 1000 // In ms diff --git a/src/boot/src/sp_driver.h b/src/boot/src/sp_driver.h index 0cb9180..01aeaee 100644 --- a/src/boot/src/sp_driver.h +++ b/src/boot/src/sp_driver.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - /******************************************************************************* * $Revision: 1691 $ * $Date: 2008-07-29 13:25:40 +0200 (ti, 29 jul 2008) $ \n diff --git a/src/jig/.gitignore b/src/jig/.gitignore deleted file mode 100644 index fa21f96..0000000 --- a/src/jig/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/build -/*.hex -/*.elf diff --git a/src/jig/Makefile b/src/jig/Makefile deleted file mode 100644 index e872121..0000000 --- a/src/jig/Makefile +++ /dev/null @@ -1,131 +0,0 @@ -# Makefile for the project Bulidbotics firmware -PROJECT = bbctrl-jig-firmware -MCU = atxmega192a3u -CLOCK = 32000000 -VERSION = 0.0.1 - -TARGET = $(PROJECT).elf - -# Compile flags -CC = avr-gcc -CPP = avr-g++ - -COMMON = -mmcu=$(MCU) -flto -fwhole-program - -CFLAGS += $(COMMON) -CFLAGS += -Wall -Werror -CFLAGS += -Wno-error=strict-aliasing # for _invsqrt -CFLAGS += -std=gnu99 -DF_CPU=$(CLOCK)UL -O3 -CFLAGS += -funsigned-bitfields -fpack-struct -fshort-enums -funsigned-char -CFLAGS += -MD -MP -MT $@ -MF build/dep/$(@F).d -CFLAGS += -Isrc -DVERSION=\"$(VERSION)\" - -# Linker flags -LDFLAGS += $(COMMON) -Wl,-u,vfprintf -lprintf_flt -lm -LIBS += -lm - -# EEPROM flags -EEFLAGS += -j .eeprom -EEFLAGS += --set-section-flags=.eeprom="alloc,load" -EEFLAGS += --change-section-lma .eeprom=0 --no-change-warnings - -# Programming flags -PROGRAMMER = avrispmkII -#PROGRAMMER = jtag3pdi -PDEV = usb -AVRDUDE_OPTS = -c $(PROGRAMMER) -p $(MCU) -P $(PDEV) - -FUSE0=0xff -FUSE1=0x00 -FUSE2=0xbe -FUSE4=0xff -FUSE5=0xeb - -# SRC -SRC = $(wildcard src/*.c) -OBJ = $(patsubst src/%.c,build/%.o,$(SRC)) - -# Build -all: - @$(MAKE) $(PROJECT).hex - @$(MAKE) size - -# Compile -build/%.o: src/%.c - @mkdir -p $(shell dirname $@) - $(CC) $(INCLUDES) $(CFLAGS) -c -o $@ $< - -build/%.o: src/%.S - @mkdir -p $(shell dirname $@) - $(CC) $(INCLUDES) $(CFLAGS) -c -o $@ $< - -# Link -$(TARGET): $(OBJ) - $(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $@ - -%.hex: %.elf - avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ - -%.eep: %.elf - avr-objcopy $(EEFLAGS) -O ihex $< $@ - -%.lss: %.elf - avr-objdump -h -S $< > $@ - -_size: - @for X in A B C; do\ - echo '****************************************************************' ;\ - avr-size -$$X --mcu=$(MCU) $(SIZE_TARGET) ;\ - done - -size: $(TARGET) - @$(MAKE) SIZE_TARGET=$< _size - -# Program -init: - $(MAKE) erase - -$(MAKE) fuses - $(MAKE) program - -reset: - avrdude $(AVRDUDE_OPTS) - -erase: - avrdude $(AVRDUDE_OPTS) -e - -program: $(PROJECT).hex - avrdude $(AVRDUDE_OPTS) -U flash:w:$(PROJECT).hex:i - -verify: $(PROJECT).hex - avrdude $(AVRDUDE_OPTS) -U flash:v:$(PROJECT).hex:i - -fuses: - avrdude $(AVRDUDE_OPTS) -U fuse0:w:$(FUSE0):m -U fuse1:w:$(FUSE1):m \ - -U fuse2:w:$(FUSE2):m -U fuse4:w:$(FUSE4):m -U fuse5:w:$(FUSE5):m - -read_fuses: - avrdude $(AVRDUDE_OPTS) -q -q -U fuse0:r:-:h -U fuse1:r:-:h -U fuse2:r:-:h \ - -U fuse4:r:-:h -U fuse5:r:-:h - -signature: - avrdude $(AVRDUDE_OPTS) -q -q -U signature:r:-:h - -prodsig: - avrdude $(AVRDUDE_OPTS) -q -q -U prodsig:r:-:h - -usersig: - avrdude $(AVRDUDE_OPTS) -q -q -U usersig:r:-:h - -# Clean -tidy: - rm -f $(shell find -name \*~ -o -name \#\*) - -clean: tidy - rm -rf $(PROJECT).elf $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss \ - $(PROJECT).map build - -.PHONY: tidy clean size all reset erase program fuses read_fuses prodsig -.PHONY: signature usersig - -# Dependencies --include $(shell mkdir -p build/dep) $(wildcard build/dep/*) diff --git a/src/jig/src/config.h b/src/jig/src/config.h deleted file mode 100644 index ae699d0..0000000 --- a/src/jig/src/config.h +++ /dev/null @@ -1,103 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#pragma once - -#include "pins.h" - - -// Pins -enum { - STALL_X_PIN = PORT_A << 3, - STALL_Y_PIN, - STALL_Z_PIN, - STALL_A_PIN, - SPIN_DIR_PIN, - SPIN_ENABLE_PIN, - ANALOG_PIN, - PROBE_PIN, - - MIN_X_PIN = PORT_B << 3, - MAX_X_PIN, - MIN_A_PIN, - MAX_A_PIN, - MIN_Y_PIN, - MAX_Y_PIN, - MIN_Z_PIN, - MAX_Z_PIN, - - SDA_PIN = PORT_C << 3, - SCL_PIN, - SERIAL_RX_PIN, - SERIAL_TX_PIN, - SERIAL_CTS_PIN, - SPI_CLK_PIN, - SPI_MISO_PIN, - SPI_MOSI_PIN, - - ENCODER_X_A_PIN = PORT_D << 3, - ENCODER_X_B_PIN, - SPI_CS_A_PIN, - SPI_CS_Z_PIN, - SPIN_PWM_PIN, - SWITCH_1_PIN, - RS485_RO_PIN, - RS485_DI_PIN, - - STEP_Y_PIN = PORT_E << 3, - SPI_CS_Y_PIN, - DIR_X_PIN, - DIR_Y_PIN, - STEP_A_PIN, - SWITCH_2_PIN, - DIR_Z_PIN, - DIR_A_PIN, - - STEP_Z_PIN = PORT_F << 3, - RS485_RW_PIN, - FAULT_PIN, - ESTOP_PIN, - MOTOR_FAULT_PIN, - MOTOR_ENABLE_PIN, - NC_0_PIN, - NC_1_PIN, -}; - - -// Serial settings -#define SERIAL_BAUD USART_BAUD_115200 -#define SERIAL_PORT USARTC0 -#define SERIAL_DRE_vect USARTC0_DRE_vect -#define SERIAL_RXC_vect USARTC0_RXC_vect - - -// Input -#define INPUT_BUFFER_LEN 255 // text buffer size (255 max) - - -// Encoder -#define ENCODER_LINES 600 diff --git a/src/jig/src/encoder.c b/src/jig/src/encoder.c deleted file mode 100644 index 3ef3004..0000000 --- a/src/jig/src/encoder.c +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#include "encoder.h" - -#include "pins.h" -#include "config.h" - -#include - - -typedef struct { - int8_t pin_a; - int8_t pin_b; - - uint16_t position; - float velocity; -} encoder_t; - - -encoder_t encoders[] = { - {ENCODER_X_A_PIN, ENCODER_X_B_PIN}, - {0, 0} -}; - - -void encoder_init() { - for (int i = 0; encoders[i].pin_a; i++) { - // Inputs - DIRCLR_PIN(encoders[i].pin_a); - DIRCLR_PIN(encoders[i].pin_b); - - // Pullup and level sensing - PINCTRL_PIN(encoders[i].pin_a) = PORT_OPC_PULLUP_gc | PORT_ISC_LEVEL_gc; - PINCTRL_PIN(encoders[i].pin_b) = PORT_OPC_PULLUP_gc | PORT_ISC_LEVEL_gc; - } - - // Event channel - EVSYS_CH0MUX = EVSYS_CHMUX_PORTD_PIN0_gc; - EVSYS_CH0CTRL = EVSYS_QDEN_bm | EVSYS_DIGFILT_2SAMPLES_gc; - - // Timer config - TCC0.CTRLD = TC_EVACT_QDEC_gc | TC_EVSEL_CH0_gc; - TCC0.PER = ENCODER_LINES * 4 - 1; - TCC0.CTRLA = TC_CLKSEL_DIV1_gc; // Enable -} - - -void encoder_rtc_callback() { - uint16_t position = TCC0.CNT; - - int32_t delta = - ((int32_t)position - encoders[0].position) % (ENCODER_LINES * 4); - - encoders[0].position = position; - encoders[0].velocity = encoders[0].velocity * 0.95 + delta * 5.0; // steps/sec -} - - -uint16_t encoder_get_position(int i) {return encoders[i].position;} -float encoder_get_velocity(int i) {return encoders[i].velocity;} diff --git a/src/jig/src/encoder.h b/src/jig/src/encoder.h deleted file mode 100644 index 1153b7b..0000000 --- a/src/jig/src/encoder.h +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#pragma once - -#include - -void encoder_init(); -void encoder_rtc_callback(); - -uint16_t encoder_get_position(int i); -float encoder_get_velocity(int i); diff --git a/src/jig/src/main.c b/src/jig/src/main.c deleted file mode 100644 index 3397475..0000000 --- a/src/jig/src/main.c +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#include "usart.h" -#include "rtc.h" -#include "encoder.h" - -#include -#include - -#include - -#include -#include - - -static void _clock_init() { - // 12-16 MHz crystal; 0.4-16 MHz XTAL w/ 16K CLK startup - OSC.XOSCCTRL = OSC_FRQRANGE_12TO16_gc | OSC_XOSCSEL_XTAL_16KCLK_gc; - OSC.CTRL = OSC_XOSCEN_bm; // enable external crystal oscillator - while (!(OSC.STATUS & OSC_XOSCRDY_bm)); // wait for oscillator ready - - OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | 2; // PLL source, 2x (32 MHz sys clock) - OSC.CTRL = OSC_PLLEN_bm | OSC_XOSCEN_bm; // Enable PLL & External Oscillator - while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL ready - - CCP = CCP_IOREG_gc; - CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL clock - - OSC.CTRL &= ~OSC_RC2MEN_bm; // disable internal 2 MHz clock -} - - -int main() { - // Init - cli(); // disable interrupts - - _clock_init(); - rtc_init(); // real-time clock - usart_init(); // serial port - encoder_init(); // rotary encoders - - sei(); // enable interrupts - - // Splash - fprintf_P(stdout, PSTR("\nBuildbotics Jig " VERSION "\n")); - - usart_set(USART_ECHO, true); - - uint32_t timer = 0; - uint16_t last = 0; - - // Main loop - while (true) { - char *line = usart_readline(); - if (line) { - printf("\n%s\n", line); - printf("%ld\n", rtc_get_time()); - } - - if (rtc_expired(timer)) { - timer += 100; - - uint16_t encoder = encoder_get_position(0); - if (encoder != last) { - last = encoder; - printf("%5d step %8.2f step/sec\n", encoder, encoder_get_velocity(0)); - } - } - } - - return 0; -} diff --git a/src/jig/src/pins.c b/src/jig/src/pins.c deleted file mode 100644 index 65782fd..0000000 --- a/src/jig/src/pins.c +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#include "pins.h" - - -PORT_t *pin_ports[] = {&PORTA, &PORTB, &PORTC, &PORTD, &PORTE, &PORTF}; diff --git a/src/jig/src/pins.h b/src/jig/src/pins.h deleted file mode 100644 index 49ae19e..0000000 --- a/src/jig/src/pins.h +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#pragma once - -enum {PORT_A = 1, PORT_B, PORT_C, PORT_D, PORT_E, PORT_F}; - -#define PORT(PIN) pin_ports[(PIN >> 3) - 1] -#define BM(PIN) (1 << (PIN & 7)) - -#ifdef __AVR__ -#include - -extern PORT_t *pin_ports[]; - -#define DIRSET_PIN(PIN) PORT(PIN)->DIRSET = BM(PIN) -#define DIRCLR_PIN(PIN) PORT(PIN)->DIRCLR = BM(PIN) -#define OUTCLR_PIN(PIN) PORT(PIN)->OUTCLR = BM(PIN) -#define OUTSET_PIN(PIN) PORT(PIN)->OUTSET = BM(PIN) -#define OUTTGL_PIN(PIN) PORT(PIN)->OUTTGL = BM(PIN) -#define OUT_PIN(PIN) (!!(PORT(PIN)->OUT & BM(PIN))) -#define IN_PIN(PIN) (!!(PORT(PIN)->IN & BM(PIN))) -#define PINCTRL_PIN(PIN) ((&PORT(PIN)->PIN0CTRL)[PIN & 7]) - -#define SET_PIN(PIN, X) \ - do {if (X) OUTSET_PIN(PIN); else OUTCLR_PIN(PIN);} while (0); - -#endif // __AVR__ diff --git a/src/jig/src/ringbuf.def b/src/jig/src/ringbuf.def deleted file mode 100644 index 5717a6d..0000000 --- a/src/jig/src/ringbuf.def +++ /dev/null @@ -1,158 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -/* This file defines an X-Macro ring buffer. It can be used like this: - * - * #define RING_BUF_NAME tx_buf - * #define RING_BUF_SIZE 256 - * #include "ringbuf.def" - * - * This will define the following functions: - * - * void _init(); - * int _empty(); - * int _full(); - * _peek(); - * void _pop(); - * void _push( data); - * - * Where is defined by RING_BUF_NAME and by RING_BUF_TYPE. - * RING_BUF_SIZE defines the length of the ring buffer and must be a power of 2. - * - * The data type and index type both default to uint8_t but can be changed by - * defining RING_BUF_TYPE and RING_BUF_INDEX_TYPE respectively. - * - * By default these functions are declared static inline but this can be changed - * by defining RING_BUF_FUNC. - */ - -#include - -#ifndef RING_BUF_NAME -#error Must define RING_BUF_NAME -#endif - -#ifndef RING_BUF_SIZE -#error Must define RING_BUF_SIZE -#endif - -#ifndef RING_BUF_TYPE -#define RING_BUF_TYPE uint8_t -#endif - -#ifndef RING_BUF_INDEX_TYPE -#define RING_BUF_INDEX_TYPE uint8_t -#endif - -#ifndef RING_BUF_FUNC -#define RING_BUF_FUNC static inline -#endif - -#define RING_BUF_MASK (RING_BUF_SIZE - 1) -#if (RING_BUF_SIZE & RING_BUF_MASK) -#error RING_BUF_SIZE is not a power of 2 -#endif - -#ifndef CONCAT -#define _CONCAT(prefix, name) prefix##name -#define CONCAT(prefix, name) _CONCAT(prefix, name) -#endif - -#define RING_BUF_STRUCT CONCAT(RING_BUF_NAME, _ring_buf_t) -#define RING_BUF CONCAT(RING_BUF_NAME, _ring_buf) - -typedef struct { - RING_BUF_TYPE buf[RING_BUF_SIZE]; - volatile RING_BUF_INDEX_TYPE head; - volatile RING_BUF_INDEX_TYPE tail; -} RING_BUF_STRUCT; - -static RING_BUF_STRUCT RING_BUF; - - -RING_BUF_FUNC void CONCAT(RING_BUF_NAME, _init)() { - RING_BUF.head = RING_BUF.tail = 0; -} - - -#define RING_BUF_INC CONCAT(RING_BUF_NAME, _inc) -RING_BUF_FUNC RING_BUF_INDEX_TYPE RING_BUF_INC(RING_BUF_INDEX_TYPE x) { - return (x + 1) & RING_BUF_MASK; -} - - -RING_BUF_FUNC int CONCAT(RING_BUF_NAME, _empty)() { - return RING_BUF.head == RING_BUF.tail; -} - - -RING_BUF_FUNC int CONCAT(RING_BUF_NAME, _full)() { - return RING_BUF.head == RING_BUF_INC(RING_BUF.tail); -} - - -RING_BUF_FUNC int CONCAT(RING_BUF_NAME, _fill)() { - return (RING_BUF.tail - RING_BUF.head) & RING_BUF_MASK; -} - - -RING_BUF_FUNC int CONCAT(RING_BUF_NAME, _space)() { - return RING_BUF_SIZE - CONCAT(RING_BUF_NAME, _fill)(); -} - - -RING_BUF_FUNC RING_BUF_TYPE CONCAT(RING_BUF_NAME, _peek)() { - return RING_BUF.buf[RING_BUF.head]; -} - - -RING_BUF_FUNC RING_BUF_TYPE CONCAT(RING_BUF_NAME, _get)(int offset) { - return RING_BUF.buf[(RING_BUF.head + offset) & RING_BUF_MASK]; -} - - -RING_BUF_FUNC void CONCAT(RING_BUF_NAME, _pop)() { - RING_BUF.head = RING_BUF_INC(RING_BUF.head); -} - - -RING_BUF_FUNC void CONCAT(RING_BUF_NAME, _push)(RING_BUF_TYPE data) { - RING_BUF.buf[RING_BUF.tail] = data; - RING_BUF.tail = RING_BUF_INC(RING_BUF.tail); -} - - -#undef RING_BUF -#undef RING_BUF_STRUCT -#undef RING_BUF_INC -#undef RING_BUF_MASK - -#undef RING_BUF_NAME -#undef RING_BUF_SIZE -#undef RING_BUF_TYPE -#undef RING_BUF_INDEX_TYPE -#undef RING_BUF_FUNC diff --git a/src/jig/src/rtc.c b/src/jig/src/rtc.c deleted file mode 100644 index 9ec4d3c..0000000 --- a/src/jig/src/rtc.c +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#include "rtc.h" - -#include "encoder.h" - -#include -#include - - -static uint32_t ticks; - - -ISR(RTC_OVF_vect) { - ticks++; - encoder_rtc_callback(); -} - - -/// Initialize and start the clock -/// This routine follows the code in app note AVR1314. -void rtc_init() { - ticks = 0; - - PR.PRGEN &= ~PR_RTC_bm; // Disable power reduction - - OSC.CTRL |= OSC_RC32KEN_bm; // enable internal 32kHz. - while (!(OSC.STATUS & OSC_RC32KRDY_bm)); // 32kHz osc stabilize - while (RTC.STATUS & RTC_SYNCBUSY_bm); // wait RTC not busy - - CLK.RTCCTRL = CLK_RTCSRC_RCOSC32_gc | CLK_RTCEN_bm; // 32kHz clock as RTC src - while (RTC.STATUS & RTC_SYNCBUSY_bm); // wait RTC not busy - - // the following must be in this order or it doesn't work - RTC.PER = 33; // overflow period ~1ms - RTC.INTCTRL = RTC_OVFINTLVL_LO_gc; // overflow LO interrupt - RTC.CTRL = RTC_PRESCALER_DIV1_gc; // no prescale - - PMIC.CTRL |= PMIC_LOLVLEN_bm; // Interrupt level on -} - - -uint32_t rtc_get_time() {return ticks;} -bool rtc_expired(uint32_t t) {return 0 <= (int32_t)(ticks - t);} diff --git a/src/jig/src/rtc.h b/src/jig/src/rtc.h deleted file mode 100644 index 6313ae9..0000000 --- a/src/jig/src/rtc.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#pragma once - - -#include -#include - -void rtc_init(); -uint32_t rtc_get_time(); -int32_t rtc_diff(uint32_t t); -bool rtc_expired(uint32_t t); diff --git a/src/jig/src/usart.c b/src/jig/src/usart.c deleted file mode 100644 index 38e723e..0000000 --- a/src/jig/src/usart.c +++ /dev/null @@ -1,282 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#include "usart.h" -//#include "cpp_magic.h" -#include "config.h" - -#include -#include - -#include -#include - -// Ring buffers -#define RING_BUF_NAME tx_buf -#define RING_BUF_SIZE USART_TX_RING_BUF_SIZE -#include "ringbuf.def" - -#define RING_BUF_NAME rx_buf -#define RING_BUF_SIZE USART_RX_RING_BUF_SIZE -#include "ringbuf.def" - -static int usart_flags = USART_CRLF; - - -static void _set_dre_interrupt(bool enable) { - if (enable) SERIAL_PORT.CTRLA |= USART_DREINTLVL_HI_gc; - else SERIAL_PORT.CTRLA &= ~USART_DREINTLVL_HI_gc; -} - - -static void _set_rxc_interrupt(bool enable) { - if (enable) { - SERIAL_PORT.CTRLA |= USART_RXCINTLVL_HI_gc; - if (4 <= rx_buf_space()) OUTCLR_PIN(SERIAL_CTS_PIN); // CTS Lo (enable) - - } else SERIAL_PORT.CTRLA &= ~USART_RXCINTLVL_HI_gc; -} - - -// Data register empty interrupt vector -ISR(SERIAL_DRE_vect) { - if (tx_buf_empty()) _set_dre_interrupt(false); // Disable interrupt - - else { - SERIAL_PORT.DATA = tx_buf_peek(); - tx_buf_pop(); - } -} - - -// Data received interrupt vector -ISR(SERIAL_RXC_vect) { - if (rx_buf_full()) _set_rxc_interrupt(false); // Disable interrupt - - else { - uint8_t data = SERIAL_PORT.DATA; - rx_buf_push(data); - if (rx_buf_space() < 4) OUTSET_PIN(SERIAL_CTS_PIN); // CTS Hi (disable) - } -} - - -static int _usart_putchar(char c, FILE *f) { - usart_putc(c); - return 0; -} - -static FILE _stdout = FDEV_SETUP_STREAM(_usart_putchar, 0, _FDEV_SETUP_WRITE); - - -void usart_init(void) { - // Setup ring buffer - tx_buf_init(); - rx_buf_init(); - - PR.PRPC &= ~PR_USART0_bm; // Disable power reduction - - // Setup pins - OUTSET_PIN(SERIAL_CTS_PIN); // CTS Hi (disable) - DIRSET_PIN(SERIAL_CTS_PIN); // CTS Output - OUTSET_PIN(SERIAL_TX_PIN); // Tx High - DIRSET_PIN(SERIAL_TX_PIN); // Tx Output - DIRCLR_PIN(SERIAL_RX_PIN); // Rx Input - - // Set baud rate - usart_set_baud(SERIAL_BAUD); - - // No parity, 8 data bits, 1 stop bit - SERIAL_PORT.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | USART_PMODE_DISABLED_gc | - USART_CHSIZE_8BIT_gc; - - // Configure receiver and transmitter - SERIAL_PORT.CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_CLK2X_bm; - - PMIC.CTRL |= PMIC_HILVLEN_bm; // Interrupt level on - - // Connect IO - stdout = &_stdout; - stderr = &_stdout; - - // Enable Rx - _set_rxc_interrupt(true); -} - - -static void _set_baud(uint16_t bsel, uint8_t bscale) { - SERIAL_PORT.BAUDCTRLB = (uint8_t)((bscale << 4) | (bsel >> 8)); - SERIAL_PORT.BAUDCTRLA = bsel; -} - - -void usart_set_baud(int baud) { - // The BSEL / BSCALE values provided below assume a 32 Mhz clock - // Assumes CTRLB CLK2X bit (0x04) is set - // See http://www.avrcalc.elektronik-projekt.de/xmega/baud_rate_calculator - - switch (baud) { - case USART_BAUD_9600: _set_baud(3325, 0b1101); break; - case USART_BAUD_19200: _set_baud(3317, 0b1100); break; - case USART_BAUD_38400: _set_baud(3301, 0b1011); break; - case USART_BAUD_57600: _set_baud(1095, 0b1100); break; - case USART_BAUD_115200: _set_baud(1079, 0b1011); break; - case USART_BAUD_230400: _set_baud(1047, 0b1010); break; - case USART_BAUD_460800: _set_baud(983, 0b1001); break; - case USART_BAUD_921600: _set_baud(107, 0b1011); break; - case USART_BAUD_500000: _set_baud(1, 0b0010); break; - case USART_BAUD_1000000: _set_baud(1, 0b0001); break; - } -} - - -void usart_set(int flag, bool enable) { - if (enable) usart_flags |= flag; - else usart_flags &= ~flag; -} - - -bool usart_is_set(int flags) { - return (usart_flags & flags) == flags; -} - - -void usart_putc(char c) { - while (tx_buf_full() || (usart_flags & USART_FLUSH)) continue; - - tx_buf_push(c); - - _set_dre_interrupt(true); // Enable interrupt - - if ((usart_flags & USART_CRLF) && c == '\n') usart_putc('\r'); -} - - -void usart_puts(const char *s) { - while (*s) usart_putc(*s++); -} - - -int8_t usart_getc() { - while (rx_buf_empty()) continue; - - uint8_t data = rx_buf_peek(); - rx_buf_pop(); - - _set_rxc_interrupt(true); // Enable interrupt - - return data; -} - - -char *usart_readline() { - static char line[INPUT_BUFFER_LEN]; - static int i = 0; - bool eol = false; - - while (!rx_buf_empty()) { - char data = usart_getc(); - - if (usart_flags & USART_ECHO) usart_putc(data); - - switch (data) { - case '\r': case '\n': eol = true; break; - - case '\b': // BS - backspace - if (usart_flags & USART_ECHO) { - usart_putc(' '); - usart_putc('\b'); - } - if (i) i--; - break; - - case 0x18: // CAN - Cancel or CTRL-X - if (usart_flags & USART_ECHO) - while (i) { - usart_putc('\b'); - usart_putc(' '); - usart_putc('\b'); - i--; - } - - i = 0; - break; - - default: - line[i++] = data; - if (i == INPUT_BUFFER_LEN - 1) eol = true; - break; - } - - if (eol) { - line[i] = 0; - i = 0; - return line; - } - } - - return 0; -} - - -int16_t usart_peek() { - return rx_buf_empty() ? -1 : rx_buf_peek(); -} - - -void usart_flush() { - usart_set(USART_FLUSH, true); - - while (!tx_buf_empty() || !(SERIAL_PORT.STATUS & USART_DREIF_bm) || - !(SERIAL_PORT.STATUS & USART_TXCIF_bm)) - continue; -} - - -void usart_rx_flush() { - rx_buf_init(); -} - - -int16_t usart_rx_space() { - return rx_buf_space(); -} - - -int16_t usart_rx_fill() { - return rx_buf_fill(); -} - - -int16_t usart_tx_space() { - return tx_buf_space(); -} - - -int16_t usart_tx_fill() { - return tx_buf_fill(); -} diff --git a/src/jig/src/usart.h b/src/jig/src/usart.h deleted file mode 100644 index 1c95f1c..0000000 --- a/src/jig/src/usart.h +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - -#pragma once - - -#include -#include - -#define USART_TX_RING_BUF_SIZE 256 -#define USART_RX_RING_BUF_SIZE 256 - -enum { - USART_BAUD_9600, - USART_BAUD_19200, - USART_BAUD_38400, - USART_BAUD_57600, - USART_BAUD_115200, - USART_BAUD_230400, - USART_BAUD_460800, - USART_BAUD_921600, - USART_BAUD_500000, - USART_BAUD_1000000 -}; - -enum { - USART_CRLF = 1 << 0, - USART_ECHO = 1 << 1, - USART_XOFF = 1 << 2, - USART_FLUSH = 1 << 3, -}; - -void usart_init(); -void usart_set_baud(int baud); -void usart_set(int flag, bool enable); -bool usart_is_set(int flags); -void usart_putc(char c); -void usart_puts(const char *s); -int8_t usart_getc(); -char *usart_readline(); -int16_t usart_peek(); -void usart_flush(); - -void usart_rx_flush(); -int16_t usart_rx_fill(); -int16_t usart_rx_space(); -inline bool usart_rx_empty() {return !usart_rx_fill();} -inline bool usart_rx_full() {return !usart_rx_space();} - -int16_t usart_tx_fill(); -int16_t usart_tx_space(); -inline bool usart_tx_empty() {return !usart_tx_fill();} -inline bool usart_tx_full() {return !usart_tx_space();} diff --git a/src/js/app.js b/src/js/app.js index b34f3c6..7de773e 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -3,38 +3,40 @@ const api = require("./api"); const cookie = require("./cookie")("bbctrl-"); const Sock = require("./sock"); +const semverLt = require("semver/functions/lt"); SvelteComponents.createComponent("DialogHost", document.getElementById("svelte-dialog-host") ); -function is_newer_version(current, latest) { - const pattern = /(\d+)\.(\d+)\.(\d+)(.*)/; - const currentParts = current.match(pattern); - const latestParts = latest.match(pattern); +function parse_version(v) { + const pattern = /^(\d+)\.(\d+)\.(\d+)(?:[-.]?(.*))?$/; + const [ version, major, minor, patch, pre ] = v.trim().match(pattern) || []; - if (!currentParts || !latestParts) { - return false; + return { + version, + major, + minor, + patch, + pre + }; +} + +function fixup_version_number(version) { + const v = parse_version(version); + + version = `${v.major}.${v.minor}.${v.patch}`; + if (v.pre) { + const [ , prefix, num ] = v.pre.match(/([a-zA-Z])(\d+)/); + + const suffix = prefix === "b" + ? `beta.${num}` + : v.pre; + + version = `${version}-${suffix}`; } - // Normal version comparisons - const major = latestParts[1] - currentParts[1]; - const minor = latestParts[2] - currentParts[2]; - const patch = latestParts[3] - currentParts[3]; - - // If current is a pre-release, and latest is a release - const betaToRelease = latestParts[4].length === 0 && currentParts[4].length > 0; - - switch (true) { - case major > 0: - case major === 0 && minor > 0: - case major === 0 && minor === 0 && patch > 0: - case major === 0 && minor === 0 && patch === 0 && betaToRelease: - return true; - - default: - return false; - } + return version; } function is_object(o) { @@ -133,7 +135,7 @@ module.exports = new Vue({ "io-view": require("./io-view"), "admin-general-view": require("./admin-general-view"), "admin-network-view": require("./admin-network-view"), - "help-view": { template: "#help-view-template" }, + "help-view": require("./help-view"), "cheat-sheet-view": { template: "#cheat-sheet-view-template", data: function() { @@ -294,7 +296,7 @@ module.exports = new Vue({ return false; } - return is_newer_version(this.config.version, this.latestVersion); + return semverLt(this.config.full_version, this.latestVersion); }, showShutdownDialog: function() { @@ -305,6 +307,7 @@ module.exports = new Vue({ const config = await api.get("config/load"); update_object(this.config, config, true); + this.config.full_version = fixup_version_number(this.config.full_version); this.parse_hash(); if (!this.checkedUpgrade) { @@ -327,9 +330,12 @@ module.exports = new Vue({ return; } - if ("log" in e.data) { - if (e.data.log.msg !== "Switch not found") { - this.$broadcast("log", e.data.log); + if (e.data.log && e.data.log.msg !== "Switch not found") { + this.$broadcast("log", e.data.log); + + if (Object.keys(e.data).length === 1) { + // If there's only log data, we're done + return; } } diff --git a/src/js/console.js b/src/js/console.js index 90cf8bf..ccaf5eb 100644 --- a/src/js/console.js +++ b/src/js/console.js @@ -2,8 +2,8 @@ function _msg_equal(a, b) { return a.level == b.level - && a.source == b.source - && a.where == b.where + && a.source == b.source + && a.where == b.where && a.msg == b.msg; } @@ -43,6 +43,11 @@ module.exports = { messages.pop(); } } + + if (messages[0].repeat > 1) { + return; + } + msg.ts = Date.now(); // Write message to browser console for debugging diff --git a/src/js/help-view.js b/src/js/help-view.js new file mode 100644 index 0000000..c6ee6b0 --- /dev/null +++ b/src/js/help-view.js @@ -0,0 +1,14 @@ +module.exports = { + template: "#help-view-template", + + attached: function() { + this.svelteComponent = SvelteComponents.createComponent( + "HelpView", + document.getElementById("help") + ); + }, + + detached: function() { + this.svelteComponent.$destroy(); + } +}; diff --git a/src/pug/index.pug b/src/pug/index.pug index d5ba622..7d6fce8 100644 --- a/src/pug/index.pug +++ b/src/pug/index.pug @@ -76,8 +76,7 @@ html(lang="en") | v{{config.full_version}} a.upgrade-link(v-if="show_upgrade()", href="#admin-general") | Upgrade to v{{latestVersion}} - .upgrade-attention(v-if="show_upgrade()") - | ! + .fa.fa-exclamation-circle.upgrade-attention(v-if="show_upgrade()") .pi-temp-warning .fa.fa-thermometer-full(class="error", diff --git a/src/pug/templates/admin-general-view.pug b/src/pug/templates/admin-general-view.pug index 8eb358a..c0a22ab 100644 --- a/src/pug/templates/admin-general-view.pug +++ b/src/pug/templates/admin-general-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#admin-general-view-template(type="text/x-template") #admin-general h2 Firmware diff --git a/src/pug/templates/admin-network-view.pug b/src/pug/templates/admin-network-view.pug index dd7d4a9..6c24c77 100644 --- a/src/pug/templates/admin-network-view.pug +++ b/src/pug/templates/admin-network-view.pug @@ -1,2 +1,2 @@ script#admin-network-view-template(type="text/x-template") - #admin-network \ No newline at end of file + #admin-network diff --git a/src/pug/templates/axis-control.pug b/src/pug/templates/axis-control.pug index 77764b9..9707aff 100644 --- a/src/pug/templates/axis-control.pug +++ b/src/pug/templates/axis-control.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#axis-control-template(type="text/x-template") svg(xmlns="http://www.w3.org/2000/svg", xmlns:xlink="http://www.w3.org/1999/xlink", diff --git a/src/pug/templates/cheat-sheet-view.pug b/src/pug/templates/cheat-sheet-view.pug index 4f63351..d23ee1e 100644 --- a/src/pug/templates/cheat-sheet-view.pug +++ b/src/pug/templates/cheat-sheet-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#cheat-sheet-view-template(type="text/x-template") // Modified from http://linuxcnc.org/docs/html/gcode.html - var base = 'http://linuxcnc.org/docs/html/gcode'; diff --git a/src/pug/templates/console.pug b/src/pug/templates/console.pug index 0fe66f0..02d65e2 100644 --- a/src/pug/templates/console.pug +++ b/src/pug/templates/console.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#console-template(type="text/x-template") .console .toolbar diff --git a/src/pug/templates/estop.pug b/src/pug/templates/estop.pug index 2af3df0..393fa88 100644 --- a/src/pug/templates/estop.pug +++ b/src/pug/templates/estop.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#estop-template(type="text/x-template") svg(version="1.1", xmlns:svg="http://www.w3.org/2000/svg", xmlns="http://www.w3.org/2000/svg", diff --git a/src/pug/templates/gcode-viewer.pug b/src/pug/templates/gcode-viewer.pug index 4a00617..3ae500c 100644 --- a/src/pug/templates/gcode-viewer.pug +++ b/src/pug/templates/gcode-viewer.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#gcode-viewer-template(type="text/x-template") .gcode .clusterize diff --git a/src/pug/templates/help-view.pug b/src/pug/templates/help-view.pug index cb68321..80aed01 100644 --- a/src/pug/templates/help-view.pug +++ b/src/pug/templates/help-view.pug @@ -1,43 +1,2 @@ script#help-view-template(type="text/x-template") #help - h2 Support & Contact Info - p - | Please visit - | - a(href="https://onefinitycnc.com/support", target="_blank") - | onefinitycnc.com/support - | - | for a variety of support resources, and to find our contact information. - - h2 Discussion Forum - p - | Check out our support and discussion forum at - | - a(href="https://forum.onefinitycnc.com", target="_blank") - | forum.onefinitycnc.com - | . Register on the site and post a message. We can't wait to hear from you. - p - | We also maintain a list of - | - a(href="https://forum.onefinitycnc.com/t/what-cad-cam-software-can-be-used-to-make-gcode-files-for-the-onefinity-cnc/10253", target="_blank") - | recommended software packages - | - | on the forum. - - h2 Credits & Acknowledgements - h4(style="margin-bottom: 0;") Artwork - p(style="margin-top: 0;") - | Special thanks to - | - a(href="https://www.instagram.com/fierysquirrelart/", target="_blank") - | @fierysquirrelart - | - | for many of the graphics used in the controller. - - h4(style="margin-bottom: 0;") Buildbotics - p(style="margin-top: 0;") - | This controller is based on the - | - a(href="http://buildbotics.com", target="_blank") - | Buildbotics CNC Controller - | . diff --git a/src/pug/templates/indicators.pug b/src/pug/templates/indicators.pug index 8414680..dc65c48 100644 --- a/src/pug/templates/indicators.pug +++ b/src/pug/templates/indicators.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#indicators-template(type="text/x-template") .indicators table.legend diff --git a/src/pug/templates/io-indicator.pug b/src/pug/templates/io-indicator.pug index 8baf875..8479b9e 100644 --- a/src/pug/templates/io-indicator.pug +++ b/src/pug/templates/io-indicator.pug @@ -1,29 +1,2 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#io-indicator-template(type="text/x-template") .fa.io(:class="klass", :title="tooltip") diff --git a/src/pug/templates/io-view.pug b/src/pug/templates/io-view.pug index ffb3800..616e856 100644 --- a/src/pug/templates/io-view.pug +++ b/src/pug/templates/io-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#io-view-template(type="text/x-template") #io h1 I/O Configuration diff --git a/src/pug/templates/message.pug b/src/pug/templates/message.pug index 7257547..dc63219 100644 --- a/src/pug/templates/message.pug +++ b/src/pug/templates/message.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#message-template(type="text/x-template") .modal-mask(v-if="show", :class="class") .modal-wrapper diff --git a/src/pug/templates/modbus-reg-view.pug b/src/pug/templates/modbus-reg-view.pug index ac86cfd..e9da884 100644 --- a/src/pug/templates/modbus-reg-view.pug +++ b/src/pug/templates/modbus-reg-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#modbus-reg-view-template(type="text/x-template") tr.modbus-reg td.reg-index {{index}} diff --git a/src/pug/templates/motor-view.pug b/src/pug/templates/motor-view.pug index a0ea712..9b7b2aa 100644 --- a/src/pug/templates/motor-view.pug +++ b/src/pug/templates/motor-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#motor-view-template(type="text/x-template") .motor(:class="{slave: is_slave}") h1 Motor {{index}} Configuration diff --git a/src/pug/templates/path-viewer.pug b/src/pug/templates/path-viewer.pug index 8b60c2a..51a3290 100644 --- a/src/pug/templates/path-viewer.pug +++ b/src/pug/templates/path-viewer.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#path-viewer-template(type="text/x-template") .path-viewer(v-show="enabled", :class="{small: small}") .path-viewer-toolbar diff --git a/src/pug/templates/templated-input.pug b/src/pug/templates/templated-input.pug index 7e69979..2507a95 100644 --- a/src/pug/templates/templated-input.pug +++ b/src/pug/templates/templated-input.pug @@ -11,22 +11,17 @@ script#templated-input-template(type="text/x-template") input(v-if="template.type == 'float'", v-model.number="view", number, :min="template.min", :max="template.max", :step="template.step || 'any'", - type="number", :name="name", @change="change") + type="number", :name="name", @keyup="change") input(v-if="template.type == 'int' && !template.values", number, v-model.number="view", :min="template.min", :max="template.max", - type="number", :name="name", @change="change") + type="number", :name="name", @keyup="change") input(v-if="template.type == 'string'", v-model="view", type="text", - :name="name", @change="change") + :name="name", @keyup="change") textarea(v-if="template.type == 'text'", v-model="view", :name="name", - @change="change") - - span.range(v-if="template.type == 'percent'") - input(type="range", v-model="view", :name="name", number, min="0", - max="100", step="1", @change="change") - | {{view}} + @keyup="change") label.units {{units}} diff --git a/src/pug/templates/tool-view.pug b/src/pug/templates/tool-view.pug index c5e442a..e41511a 100644 --- a/src/pug/templates/tool-view.pug +++ b/src/pug/templates/tool-view.pug @@ -1,30 +1,3 @@ -//-///////////////////////////////////////////////////////////////////////////// -//- // -//- This file is part of the Buildbotics firmware. // -//- // -//- Copyright (c) 2015 - 2018, Buildbotics LLC // -//- All rights reserved. // -//- // -//- This file ("the software") is free software: you can redistribute it // -//- and/or modify it under the terms of the GNU General Public License, // -//- version 2 as published by the Free Software Foundation. You should // -//- have received a copy of the GNU General Public License, version 2 // -//- along with the software. If not, see . // -//- // -//- The software is distributed in the hope that it will be useful, but // -//- WITHOUT ANY WARRANTY; without even the implied warranty of // -//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -//- Lesser General Public License for more details. // -//- // -//- You should have received a copy of the GNU Lesser General Public // -//- License along with the software. If not, see // -//- . // -//- // -//- For information regarding this software email: // -//- "Joseph Coffland" // -//- // -//-///////////////////////////////////////////////////////////////////////////// - script#tool-view-template(type="text/x-template") #tool h1 Tool Configuration diff --git a/src/pwr/config.h b/src/pwr/config.h index 8449518..dd125f3 100644 --- a/src/pwr/config.h +++ b/src/pwr/config.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once #include "pins.h" diff --git a/src/pwr/main.c b/src/pwr/main.c index 3d8a915..b22113d 100644 --- a/src/pwr/main.c +++ b/src/pwr/main.c @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "config.h" #include diff --git a/src/pwr/pins.c b/src/pwr/pins.c index 7d3f51a..47f4edb 100644 --- a/src/pwr/pins.c +++ b/src/pwr/pins.c @@ -1,31 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #include "pins.h" - uint16_t io_base[] = {0xf, 0xb, 0x7}; diff --git a/src/pwr/pins.h b/src/pwr/pins.h index 3852aa9..67b992a 100644 --- a/src/pwr/pins.h +++ b/src/pwr/pins.h @@ -1,30 +1,3 @@ -/******************************************************************************\ - - This file is part of the Buildbotics firmware. - - Copyright (c) 2015 - 2018, Buildbotics LLC - All rights reserved. - - This file ("the software") is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License, - version 2 as published by the Free Software Foundation. You should - have received a copy of the GNU General Public License, version 2 - along with the software. If not, see . - - The software is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the software. If not, see - . - - For information regarding this software email: - "Joseph Coffland" - -\******************************************************************************/ - #pragma once enum {PORT_A = 1, PORT_B, PORT_C}; diff --git a/src/py/bbctrl/Comm.py b/src/py/bbctrl/Comm.py index cbed8fd..9bd1bca 100644 --- a/src/py/bbctrl/Comm.py +++ b/src/py/bbctrl/Comm.py @@ -133,7 +133,7 @@ class Comm(object): if level == 'error': self.comm_error() # Treat machine alarmed warning as an error - if level == 'warning' and 'code' in msg and msg['code'] == 11: + if level == 'warning' and 'code' in msg and msg['code'] == 12: self.comm_error() def _log_motor_flags(self, update): diff --git a/src/py/bbctrl/Config.py b/src/py/bbctrl/Config.py index 3395189..7f20fb6 100644 --- a/src/py/bbctrl/Config.py +++ b/src/py/bbctrl/Config.py @@ -29,6 +29,8 @@ class Config(object): self.log.exception( 'Internal error: Failed to load config template') + self.reload() + def load(self): path = self.ctrl.get_path('config.json') diff --git a/src/py/bbctrl/Ctrl.py b/src/py/bbctrl/Ctrl.py index f9b8247..68c52d9 100644 --- a/src/py/bbctrl/Ctrl.py +++ b/src/py/bbctrl/Ctrl.py @@ -32,7 +32,7 @@ class Ctrl(object): self.mach = bbctrl.Mach(self, self.avr) self.preplanner = bbctrl.Preplanner(self) if not args.demo: - self.jog = bbctrl.Jog(self) + self.gamepadSupport = bbctrl.GamepadSupport(self) self.pwr = bbctrl.Pwr(self) self.mach.connect() diff --git a/src/py/bbctrl/FileHandler.py b/src/py/bbctrl/FileHandler.py index f267cba..3a77964 100644 --- a/src/py/bbctrl/FileHandler.py +++ b/src/py/bbctrl/FileHandler.py @@ -24,7 +24,10 @@ class FileHandler(bbctrl.APIHandler): filename = self.request.path.split('/')[-1] self.uploadFilename = url_unescape(filename) \ - .replace('\\', '/') \ + .encode("ascii", errors="replace") \ + .decode() \ + .replace('\\', '_') \ + .replace('/', '_') \ .replace('#', '-') \ .replace('?', '-') @@ -53,7 +56,7 @@ class FileHandler(bbctrl.APIHandler): if not os.path.exists(self.get_upload()): os.mkdir(self.get_upload()) - filename = self.get_upload(self.uploadFilename).encode('utf8') + filename = self.get_upload(self.uploadFilename) safe_remove(filename) os.link(self.uploadFile.name, filename) @@ -62,7 +65,7 @@ class FileHandler(bbctrl.APIHandler): del (self.uploadFile) self.get_ctrl().preplanner.invalidate(self.uploadFilename) - self.get_ctrl().state.add_file(self.uploadFilename) + self.get_ctrl().state.load_files() self.get_log('FileHandler').info('GCode received: ' + self.uploadFilename) @@ -72,10 +75,11 @@ class FileHandler(bbctrl.APIHandler): def get(self, filename): if not filename: raise HTTPError(400, 'Missing filename') - filename = os.path.basename(filename) + + filename = os.path.basename(url_unescape(filename)) try: - with open(self.get_upload(filename).encode('utf8'), 'r') as f: + with open(self.get_upload(filename), 'r') as f: self.write(f.read()) except Exception: self.get_ctrl().state.select_file('') diff --git a/src/py/bbctrl/Jog.py b/src/py/bbctrl/GamepadSupport.py similarity index 77% rename from src/py/bbctrl/Jog.py rename to src/py/bbctrl/GamepadSupport.py index 162602e..931d0c2 100644 --- a/src/py/bbctrl/Jog.py +++ b/src/py/bbctrl/GamepadSupport.py @@ -4,7 +4,6 @@ from evdev.ecodes import EV, EV_ABS, EV_KEY import errno import evdev import functools -import hashlib import json import os import pyudev @@ -14,16 +13,16 @@ import typing userGamepadConfigs = {} -gamepadConfigs = { +factoryGamepadConfigs = { "default": { "sign-x": 1, "sign-y": -1, "sign-z": -1, "deadband": 0.15, "debug": False, + "type": "XBOX", }, - "9E2B3A63": { - "description": "Logitech 710, X mode", + "XBOX": { "EV_KEY:308": "speed-4", "EV_KEY:305": "speed-3", "EV_KEY:304": "speed-2", @@ -38,8 +37,7 @@ gamepadConfigs = { "EV_ABS:2": "lock-y", "EV_ABS:5": "lock-x", }, - "B98EF4EC": { - "description": "Logitech 710, D mode", + "PLAYSTATION": { "EV_KEY:307": "speed-4", "EV_KEY:306": "speed-3", "EV_KEY:305": "speed-2", @@ -54,24 +52,7 @@ gamepadConfigs = { "EV_KEY:310": "lock-y", "EV_KEY:311": "lock-x", }, - "268256FD": { - "description": "EasySMX ESM-9013, top lights mode", - "EV_KEY:308": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:304": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:4": "axis-z", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - "EV_ABS:2": "lock-y", - "EV_ABS:5": "lock-x", - }, - "23CEC0CB": { - "description": "EasySMX ESM-9013, left lights mode", + "SMX-LEFT": { "EV_KEY:304": "speed-4", "EV_KEY:305": "speed-3", "EV_KEY:306": "speed-2", @@ -86,8 +67,7 @@ gamepadConfigs = { "EV_KEY:310": "lock-y", "EV_KEY:311": "lock-x", }, - "370DCB72": { - "description": "EasySMX ESM-9013, bottom lights mode", + "SMX-BOTTOM": { "EV_KEY:308": "speed-4", "EV_KEY:305": "speed-3", "EV_KEY:304": "speed-2", @@ -102,117 +82,84 @@ gamepadConfigs = { "EV_KEY:312": "lock-y", "EV_KEY:313": "lock-x", }, - "0BD0841F": { - "description": "Sony Playstation 4 Dual-Shock Controller", - "EV_KEY:307": "speed-4", - "EV_KEY:306": "speed-3", - "EV_KEY:305": "speed-2", - "EV_KEY:304": "speed-1", + "LOGITECH-F310-D": { + "EV_KEY:291": "speed-4", + "EV_KEY:290": "speed-3", + "EV_KEY:289": "speed-2", + "EV_KEY:288": "speed-1", "EV_ABS:0": "axis-x", "EV_ABS:16": "axis-x", "EV_ABS:1": "axis-y", "EV_ABS:17": "axis-y", "EV_ABS:5": "axis-z", - "EV_KEY:308": "lock-y", - "EV_KEY:309": "lock-x", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", + "EV_KEY:292": "lock-y", + "EV_KEY:293": "lock-x", + "EV_KEY:294": "lock-y", + "EV_KEY:295": "lock-x", }, - "D09463DD": { - "description": "Sony Playstation 5 Controller", - "EV_KEY:307": "speed-4", - "EV_KEY:306": "speed-3", - "EV_KEY:305": "speed-2", - "EV_KEY:304": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:5": "axis-z", - "EV_KEY:308": "lock-y", - "EV_KEY:309": "lock-x", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - }, - "06656EBD": { - "description": "XBox One Controller", - "EV_KEY:308": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:304": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:4": "axis-z", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - "EV_ABS:2": "lock-y", - "EV_ABS:5": "lock-x", - }, - "BFF99E89": { + "045E:02A1": { "description": "XBox 360 Controller", - "EV_KEY:308": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:304": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:4": "axis-z", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - "EV_ABS:2": "lock-y", - "EV_ABS:5": "lock-x", + "type": "XBOX" }, - "4E0C75F7": { - "description": "EasySMX ESM-9100 XBox Controller, top lights mode", - "EV_KEY:308": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:304": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:4": "axis-z", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - "EV_ABS:17": "axis-y", - "EV_ABS:4": "axis-z" + "045E:028E": { + "description": "Xbox360 Controller", + "type": "XBOX", }, - "E310BCC0": { - "description": "EasySMX ESM-9100, left lights mode", - "EV_KEY:304": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:306": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:5": "axis-z", - "EV_KEY:308": "lock-y", - "EV_KEY:309": "lock-x", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", + "045E:028F": { + "description": "Xbox360 Wireless Controller", + "type": "XBOX", }, - "96D2AC48": { + "045E:0B12": { + "description": "XBox One Controller", + "type": "XBOX" + }, + "046D:C216": { + "description": "Logitech F310, D mode", + "type": "LOGITECH-F310-D" + }, + "046D:C219": { + "description": "Logitech F710, D mode", + "type": "PLAYSTATION" + }, + "046D:C21D": { + "description": "Logitech F310, X mode", + "type": "XBOX" + }, + "046D:C21F": { + "description": "Logitech 710, X mode", + "type": "XBOX" + }, + "054C:05C4": { + "description": "Sony Playstation 4 DualShock Controller", + "type": "PLAYSTATION" + }, + "054C:09CC": { + "description": "Sony Playstation 4 DualShock Controller", + "type": "PLAYSTATION" + }, + "054C:0BA0": { + "description": "Sony Playstation 4 DualShock Controller", + "type": "PLAYSTATION" + }, + "054C:0CE6": { + "description": "Sony Playstation 5 DualSense Controller", + "type": "PLAYSTATION" + }, + "11C0:5500": { + "description": "EasySMX ESM-9013, bottom lights mode", + "type": "SMX-BOTTOM" + }, + "11C1:9101": { + "description": "EasySMX ESM-9013, left lights mode", + "type": "SMX-LEFT" + }, + "20BC:5500": { "description": "EasySMX ESM-9100, bottom lights mode", - "EV_KEY:308": "speed-4", - "EV_KEY:305": "speed-3", - "EV_KEY:304": "speed-2", - "EV_KEY:307": "speed-1", - "EV_ABS:0": "axis-x", - "EV_ABS:16": "axis-x", - "EV_ABS:1": "axis-y", - "EV_ABS:17": "axis-y", - "EV_ABS:5": "axis-z", - "EV_KEY:310": "lock-y", - "EV_KEY:311": "lock-x", - "EV_KEY:312": "lock-y", - "EV_KEY:313": "lock-x", + "type": "SMX-BOTTOM" + }, + "20BC:9100": { + "description": "EasySMX ESM-9100, left lights mode", + "type": "SMX-LEFT" }, } @@ -254,6 +201,25 @@ def processCapabilities(capabilities): return result +def loadConfig(id): + config = { + **factoryGamepadConfigs.get("default"), + **userGamepadConfigs.get("default", {}), + **factoryGamepadConfigs.get(id, {}), + **userGamepadConfigs.get(id, {}) + } + + while "type" in config: + type = config.pop("type") + config = { + **factoryGamepadConfigs.get(type, {}), + **userGamepadConfigs.get(type, {}), + **config, + } + + return config + + # A forward declaration, so Command can reference it class Gamepad(object): pass @@ -298,15 +264,11 @@ class Gamepad(object): for key in _udev.properties} } - json = sorted_json(self._details["evdev"]) - self.hash = hashlib.sha256(json.encode()).hexdigest()[-8:].upper() + self.id = "{:04X}:{:04X}".format(_evdev.info.vendor, + _evdev.info.product) + self.config = loadConfig(self.id) - self.config = { - **gamepadConfigs.get("default"), - **userGamepadConfigs.get("default", {}), - **gamepadConfigs.get(self.hash, {}), - **userGamepadConfigs.get(self.hash, {}) - } + self.log("Configuration Settings: {}".format(self.config)) def read(self): return self._evdev.read() @@ -374,7 +336,7 @@ class Gamepad(object): return round(value, 3) def log(self, msg): - self._log.info("{}: {}".format(self.hash, msg)) + self._log.info("{}: {}".format(self.id, msg)) def logOnce(self, msg): if self.config.get("debug") or msg not in self._logOnceRecord: @@ -390,11 +352,11 @@ class Gamepad(object): "devicePath": self.devicePath, "bustype": self._evdev.info.bustype, "details": self._details, - "hash": self.hash + "id": self.id }) -class Jog(object): +class GamepadSupport(object): gamepads = {} # type: dict[typing.Union[int, str], Gamepad] lock = {"x": False, "y": False} axes = {"x": 0, "y": 0, "z": 0} @@ -419,8 +381,9 @@ class Jog(object): global userGamepadConfigs userGamepadConfigs = json.load(f) except: + self.log.info("Failed to read 'gamepads.json':") self.log.info(traceback.format_exc()) - self.log.info("Failed to read 'gamepads.json'") + userGamepadConfigs = {} def _startMonitoring(self): self.udev_context = pyudev.Context() @@ -465,6 +428,8 @@ class Jog(object): self._listen("/dev/input/{}".format(match.group())) def _listen(self, devicePath: str): + self._refreshDefaultGamepadType() + gamepad = Gamepad( self.log, evdev.InputDevice(devicePath), pyudev.Devices.from_device_file(self.udev_context, devicePath)) @@ -558,6 +523,18 @@ class Jog(object): def _processDisabled(self, command: Command): pass + def _refreshDefaultGamepadType(self): + defaultGamepadType = self.ctrl.config.get("gamepad-default-type") + + if defaultGamepadType is not None: + default = factoryGamepadConfigs.get("default", {}) + default["type"] = defaultGamepadType + factoryGamepadConfigs["default"] = default + + default = userGamepadConfigs.get("default") + if default is not None: + default.pop("type", None) + def _updateJogging(self): try: if not self.changed: diff --git a/src/py/bbctrl/Log.py b/src/py/bbctrl/Log.py index f034650..81651b5 100644 --- a/src/py/bbctrl/Log.py +++ b/src/py/bbctrl/Log.py @@ -126,7 +126,9 @@ class Log(object): def _log(self, msg, level=INFO, prefix='', where=None): if not msg: return - hdr = '%s:%s:' % ('DIMWE'[level], prefix) + timestamp = datetime.datetime.now().strftime("%H:%M:%S") + + hdr = '%s:%s:%s:' % ('DIMWE'[level], prefix, timestamp) s = hdr + ('\n' + hdr).join(msg.split('\n')) if self.f is not None: diff --git a/src/py/bbctrl/State.py b/src/py/bbctrl/State.py index b988850..76cd420 100644 --- a/src/py/bbctrl/State.py +++ b/src/py/bbctrl/State.py @@ -10,6 +10,7 @@ import threading import time import traceback import uuid +import glob def call_get_output(cmd): @@ -122,18 +123,16 @@ class State(object): self.set('offset_' + axis, 0) def load_files(self): - files = [] - upload = self.ctrl.get_upload() if not os.path.exists(upload): os.mkdir(upload) - for path in os.listdir(upload): - if os.path.isfile(upload + '/' + path): - files.append(path) + files = filter(os.path.isfile, glob.glob(upload + '/*')) + # Sort list of files based on last modification time in ascending order + files = sorted(files, key=os.path.getmtime, reverse=True) + files = list(map(lambda f: f.replace("./upload/", ""), files)) - files.sort() self.set('files', files) if len(files): diff --git a/src/py/bbctrl/Web.py b/src/py/bbctrl/Web.py index b65682b..a8b7872 100644 --- a/src/py/bbctrl/Web.py +++ b/src/py/bbctrl/Web.py @@ -8,6 +8,7 @@ import socket import sockjs.tornado import subprocess import tornado +from urllib.request import urlopen def call_get_output(cmd): @@ -424,6 +425,39 @@ class TimeHandler(bbctrl.APIHandler): subprocess.Popen(['timedatectl', 'set-timezone', timezone]) +class RemoteDiagnosticsHandler(bbctrl.APIHandler): + + def get(self): + code = self.get_query_argument("code", "") + command = self.get_query_argument("command", "") + + log = self.get_log('RemoteDiagnostics') + + if command == "disconnect": + subprocess.Popen(['killall', 'ngrok']) + self.write_json({'message': "Succesfully disconnected"}) + + if command == "connect": + try: + url = 'https://tinyurl.com/1f-remote?code={}'.format(code) + with urlopen(url) as response: + body = response.read() + + os.makedirs("/tmp/ngrok", exist_ok=True) + with open("/tmp/ngrok/1f-ngrok.sh", 'wb') as f: + f.write(body) + + subprocess.Popen(['/bin/bash', "/tmp/ngrok/1f-ngrok.sh"]) + self.write_json({'success': True}) + except Exception as e: + log.info("Failed: {}".format(str(e))) + self.write_json({ + 'success': False, + 'code': e.code or None, + 'message': e.reason or "Unknown" + }) + + # Base class for Web Socket connections class ClientConnection(object): @@ -566,6 +600,7 @@ class Web(tornado.web.Application): (r'/api/video', bbctrl.VideoHandler), (r'/api/screen-rotation', ScreenRotationHandler), (r'/api/time', TimeHandler), + (r'/api/remote-diagnostics', RemoteDiagnosticsHandler), (r'/(.*)', StaticFileHandler, { 'path': bbctrl.get_resource('http/'), 'default_filename': 'index.html' diff --git a/src/py/bbctrl/__init__.py b/src/py/bbctrl/__init__.py index d80df7a..d64bc26 100644 --- a/src/py/bbctrl/__init__.py +++ b/src/py/bbctrl/__init__.py @@ -14,7 +14,7 @@ from bbctrl.FileHandler import FileHandler from bbctrl.Config import Config from bbctrl.Mach import Mach from bbctrl.Web import Web -from bbctrl.Jog import Jog +from bbctrl.GamepadSupport import GamepadSupport from bbctrl.Ctrl import Ctrl from bbctrl.Pwr import Pwr from bbctrl.I2C import I2C diff --git a/src/resources/config-template.json b/src/resources/config-template.json index fad50fb..99cbd15 100644 --- a/src/resources/config-template.json +++ b/src/resources/config-template.json @@ -1,540 +1,714 @@ { - "settings": { - "units": { - "type": "enum", - "values": ["METRIC", "IMPERIAL"], - "default": "METRIC" - }, - "max-deviation": { - "help": - "Default allowed deviation from programmed path. Also see G64 & G61.", - "type": "float", - "min": 0.05, - "max": 100, - "unit": "mm", - "default": 0.1 - }, - "junction-accel": { - "help": - "Higher values will increasing cornering speed but may cause stalls.", - "type": "float", - "min": 10000, - "max": 100000000, - "unit": "mm/min²", - "default": 200000 - } - }, - - "motors": { - "type": "list", - "index": "0123", - "default": [ - {"axis": "X"}, - {"axis": "Y"}, - {"axis": "Z"}, - {"axis": "A"} - ], - "template": { - "general": { - "axis": { - "type": "enum", - "values": ["X", "Y", "Z", "A", "B", "C"], - "default": "X", - "code": "an" + "settings": { + "units": { + "type": "enum", + "values": [ + "METRIC", + "IMPERIAL" + ], + "default": "METRIC" + }, + "max-deviation": { + "help": "Default allowed deviation from programmed path. Also see G64 & G61.", + "type": "float", + "min": 0.05, + "max": 100, + "unit": "mm", + "default": 0.1 + }, + "junction-accel": { + "help": "Higher values will increasing cornering speed but may cause stalls.", + "type": "float", + "min": 10000, + "max": 100000000, + "unit": "mm/min²", + "default": 200000 + }, + "probing-prompts": { + "help": "Enable or disable safety prompts during and after probing", + "type": "bool", + "default": true + }, + "gamepad-default-type": { + "help": "When a gamepad is not recognized, treat it as the selected type of gamepad.", + "type": "enum", + "values": [ + { + "title": "XBox", + "value": "XBOX" + }, + { + "title": "Playstation", + "value": "PLAYSTATION" + }, + { + "title": "SMX Left-lights mode", + "value": "SMX-LEFT" + }, + { + "title": "SMX Bottom-lights mode", + "value": "SMX-BOTTOM" + }, + { + "title": "Logitech F310, D-mode", + "value": "LOGITECH-F310-D" + } + ], + "default": "XBOX" } - }, - - "power": { - "enabled": { - "type": "bool", - "default": true, - "code": "me" - }, - "drive-current": { - "type": "float", - "min": 0, - "max": 6, - "unit": "amps", - "default": 1.5, - "code": "dc" - }, - "idle-current": { - "type": "float", - "min": 0, - "max": 2, - "unit": "amps", - "default": 0, - "code": "ic" + }, + "motors": { + "type": "list", + "index": "0123", + "default": [ + { + "axis": "X" + }, + { + "axis": "Y" + }, + { + "axis": "Z" + }, + { + "axis": "A" + } + ], + "template": { + "general": { + "axis": { + "type": "enum", + "values": [ + "X", + "Y", + "Z", + "A", + "B", + "C" + ], + "default": "X", + "code": "an" + } + }, + "power": { + "enabled": { + "type": "bool", + "default": true, + "code": "me" + }, + "drive-current": { + "type": "float", + "min": 0, + "max": 6, + "unit": "amps", + "default": 1.5, + "code": "dc" + }, + "idle-current": { + "type": "float", + "min": 0, + "max": 2, + "unit": "amps", + "default": 0, + "code": "ic" + } + }, + "motion": { + "reverse": { + "type": "bool", + "default": false, + "code": "rv" + }, + "microsteps": { + "type": "int", + "values": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64, + 128, + 256 + ], + "unit": "per full step", + "default": 32, + "code": "mi" + }, + "max-velocity": { + "type": "float", + "min": 0, + "unit": "m/min", + "iunit": "IPM", + "scale": 0.0254, + "default": 5, + "code": "vm" + }, + "max-accel": { + "type": "float", + "min": 0, + "unit": "km/min²", + "iunit": "g-force", + "scale": 35.304, + "default": 10, + "code": "am" + }, + "max-jerk": { + "type": "float", + "min": 0, + "unit": "km/min³", + "iunit": "g/min", + "scale": 35.304, + "default": 50, + "code": "jm" + }, + "step-angle": { + "type": "float", + "min": 0, + "max": 360, + "step": 0.1, + "unit": "degrees", + "default": 1.8, + "code": "sa" + }, + "travel-per-rev": { + "type": "float", + "unit": "mm", + "iunit": "in", + "scale": 25.4, + "default": 5, + "code": "tr" + } + }, + "limits": { + "min-soft-limit": { + "type": "float", + "unit": "mm", + "iunit": "in", + "scale": 25.4, + "default": 0, + "code": "tn" + }, + "max-soft-limit": { + "type": "float", + "unit": "mm", + "iunit": "in", + "scale": 25.4, + "default": 0, + "code": "tm" + }, + "min-switch": { + "type": "enum", + "values": [ + "disabled", + "normally-open", + "normally-closed" + ], + "default": "disabled", + "code": "ls", + "pins": [ + 3, + 5, + 9, + 11 + ] + }, + "max-switch": { + "type": "enum", + "values": [ + "disabled", + "normally-open", + "normally-closed" + ], + "default": "disabled", + "code": "xs", + "pins": [ + 4, + 8, + 10, + 12 + ] + } + }, + "homing": { + "homing-mode": { + "type": "enum", + "values": [ + "manual", + "switch-min", + "switch-max", + "stall-min", + "stall-max" + ], + "default": "manual", + "code": "ho" + }, + "stall-microstep": { + "type": "int", + "values": [ + 2, + 4, + 8, + 16, + 32, + 64, + 128, + 256 + ], + "unit": "per full step", + "default": 8, + "code": "lm", + "hmodes": [ + "stall-min", + "stall-max" + ] + }, + "search-velocity": { + "type": "float", + "min": 0, + "unit": "m/min", + "iunit": "IPM", + "scale": 0.0254, + "default": 0.5, + "code": "sv", + "hmodes": [ + "switch-min", + "switch-max", + "stall-min", + "stall-max" + ] + }, + "latch-velocity": { + "type": "float", + "min": 0, + "unit": "m/min", + "iunit": "IPM", + "scale": 0.0254, + "default": 0.1, + "code": "lv", + "hmodes": [ + "switch-min", + "switch-max" + ] + }, + "latch-backoff": { + "type": "float", + "min": 0, + "unit": "mm", + "iunit": "in", + "scale": 25.4, + "default": 100, + "code": "lb", + "hmodes": [ + "switch-min", + "switch-max" + ] + }, + "stall-volts": { + "type": "float", + "min": 0, + "unit": "v", + "default": 6, + "code": "tv", + "hmodes": [ + "stall-min", + "stall-max" + ] + }, + "stall-sample-time": { + "type": "int", + "values": [ + 50, + 100, + 200, + 300, + 400, + 600, + 800, + 1000 + ], + "default": 50, + "unit": "µsec", + "code": "sp", + "hmodes": [ + "stall-min", + "stall-max" + ] + }, + "stall-current": { + "type": "float", + "min": 0, + "unit": "amps", + "default": 1.5, + "code": "tc", + "hmodes": [ + "stall-min", + "stall-max" + ] + }, + "zero-backoff": { + "type": "float", + "min": 0, + "unit": "mm", + "iunit": "in", + "scale": 25.4, + "default": 5, + "code": "zb", + "hmodes": [ + "switch-min", + "switch-max", + "stall-min", + "stall-max" + ] + } + } } - }, - - "motion": { - "reverse": { - "type": "bool", - "default": false, - "code": "rv" + }, + "tool": { + "selected-tool": { + "type": "string", + "default": "disabled" }, - "microsteps": { - "type": "int", - "values": [1, 2, 4, 8, 16, 32, 64, 128, 256], - "unit": "per full step", - "default": 32, - "code": "mi" + "tool-type": { + "type": "enum", + "values": [ + "Disabled", + "PWM Spindle", + "Huanyang VFD", + "Custom Modbus VFD", + "AC-Tech VFD", + "Nowforever VFD", + "Delta VFD015M21A (Beta)", + "YL600, YL620, YL620-A VFD (Beta)", + "FR-D700 (Beta)", + "Sunfar E300 (Beta)", + "OMRON MX2" + ], + "default": "Disabled", + "code": "st" }, - "max-velocity": { - "type": "float", - "min": 0, - "unit": "m/min", - "iunit": "IPM", - "scale": 0.0254, - "default": 5, - "code": "vm" + "tool-reversed": { + "type": "bool", + "default": false, + "code": "sr" }, - "max-accel": { - "type": "float", - "min": 0, - "unit": "km/min²", - "iunit": "g-force", - "scale": 35.304, - "default": 10, - "code": "am" + "max-spin": { + "type": "float", + "unit": "RPM", + "min": 0, + "default": 10000, + "code": "sx" }, - "max-jerk": { - "type": "float", - "min": 0, - "unit": "km/min³", - "iunit": "g/min", - "scale": 35.304, - "default": 50, - "code": "jm" + "min-spin": { + "type": "float", + "unit": "RPM", + "min": 0, + "default": 0, + "code": "sm" }, - "step-angle": { - "type": "float", - "min": 0, - "max": 360, - "step": 0.1, - "unit": "degrees", - "default": 1.8, - "code": "sa" + "tool-enable-mode": { + "type": "enum", + "values": [ + "disabled", + "lo-hi", + "hi-lo", + "tri-lo", + "tri-hi", + "lo-tri", + "hi-tri" + ], + "default": "lo-hi", + "code": "eom", + "pin": 15 }, - "travel-per-rev": { - "type": "float", - "unit": "mm", - "iunit": "in", - "scale": 25.4, - "default": 5, - "code": "tr" + "tool-direction-mode": { + "type": "enum", + "values": [ + "disabled", + "lo-hi", + "hi-lo", + "tri-lo", + "tri-hi", + "lo-tri", + "hi-tri" + ], + "default": "lo-hi", + "code": "dom", + "pin": 16 } - }, - - "limits": { - "min-soft-limit": { - "type": "float", - "unit": "mm", - "iunit": "in", - "scale": 25.4, - "default": 0, - "code": "tn" + }, + "modbus-spindle": { + "bus-id": { + "type": "int", + "default": "1", + "code": "hi" }, - "max-soft-limit": { - "type": "float", - "unit": "mm", - "iunit": "in", - "scale": 25.4, - "default": 0, - "code": "tm" + "baud": { + "type": "enum", + "values": [ + "9600", + "19200", + "38400", + "57600", + "115200" + ], + "default": "9600", + "code": "mb" }, - "min-switch": { - "type": "enum", - "values": ["disabled", "normally-open", "normally-closed"], - "default": "disabled", - "code": "ls", - "pins": [3, 5, 9, 11] + "parity": { + "type": "enum", + "values": [ + "None", + "Even", + "Odd" + ], + "default": "None", + "code": "ma" }, - "max-switch": { - "type": "enum", - "values": ["disabled", "normally-open", "normally-closed"], - "default": "disabled", - "code": "xs", - "pins": [4, 8, 10, 12] + "multi-write": { + "help": "Use Modbus multi register write. Function 16 vs. 6.", + "type": "bool", + "default": false, + "code": "mw" + }, + "regs": { + "type": "list", + "index": "0123456789abcdefghijklmnopqrstuv", + "default": [], + "template": { + "reg-type": { + "type": "enum", + "values": [ + "disabled", + "connect-write", + "max-freq-read", + "max-freq-fixed", + "freq-set", + "freq-signed-set", + "stop-write", + "forward-write", + "reverse-write", + "freq-read", + "freq-signed-read", + "freq-actech-read", + "status-read", + "disconnect-write" + ], + "default": "disabled", + "code": "vt" + }, + "reg-addr": { + "type": "int", + "min": 0, + "max": 65535, + "default": 0, + "code": "va" + }, + "reg-value": { + "type": "int", + "min": 0, + "max": 65535, + "default": 0, + "code": "vv" + } + } } - }, - - "homing": { - "homing-mode": { - "type": "enum", - "values": ["manual", "switch-min", "switch-max","stall-min","stall-max"], - "default": "manual", - "code": "ho" + }, + "pwm-spindle": { + "pwm-inverted": { + "help": "Invert the PWM signal output.", + "type": "bool", + "default": false, + "code": "pi" }, - "stall-microstep": { - "type": "int", - "values": [2, 4, 8, 16, 32, 64, 128, 256], - "unit": "per full step", - "default": 8, - "code": "lm", - "hmodes": ["stall-min","stall-max"] + "pwm-min-duty": { + "type": "float", + "unit": "%", + "min": 0, + "max": 100, + "default": 1, + "code": "nd" }, - "search-velocity": { - "type": "float", - "min": 0, - "unit": "m/min", - "iunit": "IPM", - "scale": 0.0254, - "default": 0.5, - "code": "sv", - "hmodes": ["switch-min", "switch-max", "stall-min","stall-max"] + "pwm-max-duty": { + "type": "float", + "unit": "%", + "min": 0, + "max": 100, + "default": 99.99, + "code": "md" }, - "latch-velocity": { - "type": "float", - "min": 0, - "unit": "m/min", - "iunit": "IPM", - "scale": 0.0254, - "default": 0.1, - "code": "lv", - "hmodes": ["switch-min", "switch-max"] + "pwm-freq": { + "type": "int", + "unit": "Hz", + "min": 8, + "max": 320000, + "default": 1000, + "code": "sf" }, - "latch-backoff": { - "type": "float", - "min": 0, - "unit": "mm", - "iunit": "in", - "scale": 25.4, - "default": 100, - "code": "lb", - "hmodes": ["switch-min", "switch-max"] + "rapid-auto-off": { + "help": "Turn tool off during rapid moves. Useful for LASERs.", + "type": "bool", + "default": false }, - "stall-volts": { - "type": "float", - "min": 0, - "unit": "v", - "default": 6, - "code": "tv", - "hmodes": ["stall-min","stall-max"] - }, - "stall-sample-time": { - "type": "int", - "values": [50, 100, 200, 300, 400, 600, 800, 1000], - "default": 50, - "unit": "µsec", - "code": "sp", - "hmodes": ["stall-min","stall-max"] - }, - "stall-current": { - "type": "float", - "min": 0, - "unit": "amps", - "default": 1.5, - "code": "tc", - "hmodes": ["stall-min","stall-max"] - }, - "zero-backoff": { - "type": "float", - "min": 0, - "unit": "mm", - "iunit": "in", - "scale": 25.4, - "default": 5, - "code": "zb", - "hmodes": ["switch-min", "switch-max", "stall-min","stall-max"] + "dynamic-power": { + "help": "Adjust tool power based on velocity and feed rate. Useful for LASERs.", + "type": "bool", + "default": false, + "code": "dp" } - } - } - }, - - "tool": { - "selected-tool": { - "type": "string", - "default": "disabled" }, - "tool-type": { - "type": "enum", - "values": [ - "Disabled", - "PWM Spindle", - "Huanyang VFD", - "Custom Modbus VFD", - "AC-Tech VFD", - "Nowforever VFD", - "Delta VFD015M21A (Beta)", - "YL600, YL620, YL620-A VFD (Beta)", - "FR-D700 (Beta)", - "Sunfar E300 (Beta)", - "OMRON MX2" - ], - "default": "Disabled", - "code": "st" - }, - "tool-reversed": { - "type": "bool", - "default": false, - "code": "sr" - }, - "max-spin": { - "type": "float", - "unit": "RPM", - "min": 0, - "default": 10000, - "code": "sx" - }, - "min-spin": { - "type": "float", - "unit": "RPM", - "min": 0, - "default": 0, - "code": "sm" - }, - "tool-enable-mode": { - "type": "enum", - "values": ["disabled", "lo-hi", "hi-lo", "tri-lo", "tri-hi", "lo-tri", - "hi-tri"], - "default": "lo-hi", - "code": "eom", - "pin": 15 - }, - "tool-direction-mode": { - "type": "enum", - "values": ["disabled", "lo-hi", "hi-lo", "tri-lo", "tri-hi", "lo-tri", - "hi-tri"], - "default": "lo-hi", - "code": "dom", - "pin": 16 - } - }, - - "modbus-spindle": { - "bus-id": { - "type": "int", - "default": "1", - "code": "hi" - }, - "baud": { - "type": "enum", - "values": ["9600", "19200", "38400", "57600", "115200"], - "default": "9600", - "code": "mb" - }, - "parity": { - "type": "enum", - "values": ["None", "Even", "Odd"], - "default": "None", - "code": "ma" - }, - "multi-write": { - "help": "Use Modbus multi register write. Function 16 vs. 6.", - "type": "bool", - "default": false, - "code": "mw" - }, - "regs": { - "type": "list", - "index": "0123456789abcdefghijklmnopqrstuv", - "default": [], - "template": { - "reg-type": { - "type": "enum", - "values": [ - "disabled", - "connect-write", - "max-freq-read", "max-freq-fixed", - "freq-set", "freq-signed-set", - "stop-write", "forward-write", "reverse-write", - "freq-read", "freq-signed-read", "freq-actech-read", - "status-read", - "disconnect-write"], - "default": "disabled", - "code": "vt" + "switches": { + "estop": { + "type": "enum", + "values": [ + "disabled", + "normally-open", + "normally-closed" + ], + "default": "disabled", + "code": "et", + "pin": 23 }, - "reg-addr": { - "type": "int", - "min": 0, - "max": 65535, - "default": 0, - "code": "va" + "probe": { + "type": "enum", + "values": [ + "disabled", + "normally-open", + "normally-closed" + ], + "default": "normally-open", + "code": "pt", + "pin": 22 }, - "reg-value": { - "type": "int", - "min": 0, - "max": 65535, - "default": 0, - "code": "vv" + "switch-debounce": { + "type": "int", + "min": 1, + "max": 5000, + "unit": "ms", + "default": 5, + "code": "sd", + "help": "Minimum time in ms before a switch change is acknowledged." + }, + "switch-lockout": { + "type": "int", + "min": 0, + "max": 60000, + "unit": "ms", + "default": 250, + "code": "sc", + "help": "Time in ms to ignore switch changes after an acknowledge change." } - } - } - }, - - "pwm-spindle": { - "pwm-inverted": { - "help": "Invert the PWM signal output.", - "type": "bool", - "default": false, - "code": "pi" }, - "pwm-min-duty": { - "type": "float", - "unit": "%", - "min": 0, - "max": 100, - "default": 1, - "code": "nd" - }, - "pwm-max-duty": { - "type": "float", - "unit": "%", - "min": 0, - "max": 100, - "default": 99.99, - "code": "md" - }, - "pwm-freq": { - "type": "int", - "unit": "Hz", - "min": 8, - "max": 320000, - "default": 1000, - "code": "sf" - }, - "rapid-auto-off": { - "help": "Turn tool off during rapid moves. Useful for LASERs.", - "type": "bool", - "default": false - }, - "dynamic-power": { - "help": - "Adjust tool power based on velocity and feed rate. Useful for LASERs.", - "type": "bool", - "default": false, - "code": "dp" - } - }, - - "switches": { - "estop": { - "type": "enum", - "values": ["disabled", "normally-open", "normally-closed"], - "default": "disabled", - "code": "et", - "pin": 23 + "outputs": { + "load-1": { + "type": "enum", + "values": [ + "disabled", + "lo-hi", + "hi-lo", + "tri-lo", + "tri-hi", + "lo-tri", + "hi-tri" + ], + "default": "lo-hi", + "code": "1om", + "pin": 2 + }, + "load-2": { + "type": "enum", + "values": [ + "disabled", + "lo-hi", + "hi-lo", + "tri-lo", + "tri-hi", + "lo-tri", + "hi-tri" + ], + "default": "lo-hi", + "code": "2om", + "pin": 1 + }, + "fault": { + "type": "enum", + "values": [ + "disabled", + "lo-hi", + "hi-lo", + "tri-lo", + "tri-hi", + "lo-tri", + "hi-tri" + ], + "default": "lo-hi", + "code": "fom", + "pin": 21 + } }, "probe": { - "type": "enum", - "values": ["disabled", "normally-open", "normally-closed"], - "default": "normally-open", - "code": "pt", - "pin": 22 + "probe-diameter": { + "type": "float", + "min": 0, + "max": 25.4, + "unit": "mm", + "default": 6.35 + }, + "probe-xdim": { + "type": "float", + "unit": "mm", + "min": 0, + "max": 1000, + "default": 53.975 + }, + "probe-ydim": { + "type": "float", + "unit": "mm", + "min": 0, + "max": 1000, + "default": 53.975 + }, + "probe-zdim": { + "type": "float", + "unit": "mm", + "min": 0, + "max": 1000, + "default": 15.4 + }, + "probe-fast-seek": { + "type": "float", + "unit": "mm/min", + "min": 0, + "max": 1000, + "default": 200 + }, + "probe-slow-seek": { + "type": "float", + "unit": "mm/min", + "min": 0, + "max": 1000, + "default": 25 + } }, - "switch-debounce": { - "type": "int", - "min": 1, - "max": 5000, - "unit": "ms", - "default": 5, - "code": "sd", - "help": "Minimum time in ms before a switch change is acknowledged." + "gcode": { + "program-start": { + "type": "text", + "default": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n" + }, + "tool-change": { + "type": "text", + "default": "(Runs on M6, tool change)\nM0 M6 (MSG, Change tool)" + }, + "program-end": { + "type": "text", + "default": "(Runs on M2, program end)\nM2" + } }, - "switch-lockout": { - "type": "int", - "min": 0, - "max": 60000, - "unit": "ms", - "default": 250, - "code": "sc", - "help": "Time in ms to ignore switch changes after an acknowledge change." + "admin": { + "auto-check-upgrade": { + "type": "bool", + "default": true + } } - }, - - "outputs": { - "load-1": { - "type": "enum", - "values": ["disabled", "lo-hi", "hi-lo", "tri-lo", "tri-hi", "lo-tri", - "hi-tri"], - "default": "lo-hi", - "code": "1om", - "pin": 2 - }, - "load-2": { - "type": "enum", - "values": ["disabled", "lo-hi", "hi-lo", "tri-lo", "tri-hi", "lo-tri", - "hi-tri"], - "default": "lo-hi", - "code": "2om", - "pin": 1 - }, - "fault": { - "type": "enum", - "values": ["disabled", "lo-hi", "hi-lo", "tri-lo", "tri-hi", "lo-tri", - "hi-tri"], - "default": "lo-hi", - "code": "fom", - "pin": 21 - } - }, - - "probe": { - "probe-diameter": { - "type": "float", - "min": 0, - "max": 25.4, - "unit": "mm", - "default": 6.35 - }, - "probe-xdim": { - "type": "float", - "unit": "mm", - "min": 0, - "max": 1000, - "default": 53.975 - }, - "probe-ydim": { - "type": "float", - "unit": "mm", - "min": 0, - "max": 1000, - "default": 53.975 - }, - "probe-zdim": { - "type": "float", - "unit": "mm", - "min": 0, - "max": 1000, - "default": 15.4 - }, - "probe-fast-seek": { - "type": "float", - "unit": "mm/min", - "min": 0, - "max": 1000, - "default": 200 - }, - "probe-slow-seek": { - "type": "float", - "unit": "mm/min", - "min": 0, - "max": 1000, - "default": 25 - } - }, - - "gcode": { - "program-start": { - "type": "text", - "default": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n" - }, - "tool-change": { - "type": "text", - "default": "(Runs on M6, tool change)\nM0 M6 (MSG, Change tool)" - }, - "program-end": { - "type": "text", - "default": "(Runs on M2, program end)\nM2" - } - }, - - "admin": { - "auto-check-upgrade": { - "type": "bool", - "default": true - } - } -} +} \ No newline at end of file diff --git a/src/stylus/style.styl b/src/stylus/style.styl index caed3a5..cf73d8f 100644 --- a/src/stylus/style.styl +++ b/src/stylus/style.styl @@ -60,16 +60,10 @@ tt color blue .upgrade-attention - background-color red - width 20px - height 20px - display inline-block - border-radius 50% - color white - font-size 13pt - font-weight 1000 - margin-left 5px + color red + font-size 18pt align-self center + margin-left 5px .pi-temp-warning align-self center diff --git a/src/svelte-components/src/components/ConfigTemplatedInput.svelte b/src/svelte-components/src/components/ConfigTemplatedInput.svelte index 1d5fa4a..71c5d00 100644 --- a/src/svelte-components/src/components/ConfigTemplatedInput.svelte +++ b/src/svelte-components/src/components/ConfigTemplatedInput.svelte @@ -4,9 +4,14 @@ import { ControllerMethods } from "$lib/RegisterControllerMethods"; import { onMount } from "svelte"; + type ValueType = + | string + | number + | { title: string; value: string | number }; + type Template = { type?: string; - values?: (string | number)[]; + values?: Array; unit?: "string"; iunit?: "string"; min?: number; @@ -17,6 +22,21 @@ scale?: number; }; + const namesByKey = { + "gamepad-default-type": "Default type", + "probing-prompts": "Show safety prompts", + "probe-xdim": "Probe block width", + "probe-ydim": "Probe block length", + "probe-zdim": "Probe block height", + "probe-fast-seek": "Fast seek speed", + "probe-slow-seek": "Slow seek speed", + "program-start": "On program start", + "tool-change": "On tool change", + "program-end": "On program end", + "max-deviation": "Maximum deviation", + "junction-accel": "Junction acceleration", + }; + export let key: string; let keyParts: string[]; let template: Template; @@ -28,7 +48,9 @@ onMount(() => { keyParts = (key || "").split("."); template = getTemplate(); + name = keyParts[keyParts.length - 1]; + name = namesByKey[name] || name; title = getTitle(); value = getValue(); }); @@ -69,13 +91,14 @@ return value; } - function onChange() { + function onChange(event) { Config.update((config) => { let target = config; for (const part of keyParts.slice(0, -1)) { target = target[part]; } + const value = getValueFromElement(event.target); target[keyParts[keyParts.length - 1]] = value; return config; @@ -83,6 +106,40 @@ ControllerMethods.dispatch("config-changed"); } + + function getValueFromElement(element) { + switch (template.type) { + case "float": + case "int": + return Number(element.value); + + case "bool": + return element.checked; + + default: + return element.value; + } + } + + function getOptionValue(opt: ValueType) { + switch (typeof opt) { + case "object": + return opt.value || opt; + + default: + return opt; + } + } + + function getOptionTitle(opt: ValueType) { + switch (typeof opt) { + case "object": + return opt.title || opt; + + default: + return opt; + } + } {#if template} @@ -92,13 +149,21 @@ {#if template.values} {:else if template.type === "bool"} - + {:else if template.type === "float"} {:else if template.type === "int"} {:else if template.type === "string"} - + {:else if template.type == "text"} -