mirror of
				https://github.com/manuelbl/ttn-esp32.git
				synced 2025-10-31 10:40:35 +01:00 
			
		
		
		
	Improve documentation
This commit is contained in:
		
							
								
								
									
										3
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| xml/ | ||||
| api.md | ||||
| node_modules/ | ||||
							
								
								
									
										2553
									
								
								doc/Doxyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2553
									
								
								doc/Doxyfile
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3
									
								
								doc/generate.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								doc/generate.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,3 @@ | ||||
| #!/bin/sh | ||||
| doxygen Doxyfile | ||||
| npx moxygen xml | ||||
							
								
								
									
										330
									
								
								doc/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										330
									
								
								doc/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,330 @@ | ||||
| { | ||||
|   "requires": true, | ||||
|   "lockfileVersion": 1, | ||||
|   "dependencies": { | ||||
|     "@dabh/diagnostics": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", | ||||
|       "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", | ||||
|       "requires": { | ||||
|         "colorspace": "1.1.x", | ||||
|         "enabled": "2.0.x", | ||||
|         "kuler": "^2.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "async": { | ||||
|       "version": "3.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", | ||||
|       "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" | ||||
|     }, | ||||
|     "color": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", | ||||
|       "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", | ||||
|       "requires": { | ||||
|         "color-convert": "^1.9.1", | ||||
|         "color-string": "^1.5.2" | ||||
|       } | ||||
|     }, | ||||
|     "color-convert": { | ||||
|       "version": "1.9.3", | ||||
|       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||||
|       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||||
|       "requires": { | ||||
|         "color-name": "1.1.3" | ||||
|       } | ||||
|     }, | ||||
|     "color-name": { | ||||
|       "version": "1.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||||
|       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||||
|     }, | ||||
|     "color-string": { | ||||
|       "version": "1.5.3", | ||||
|       "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", | ||||
|       "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", | ||||
|       "requires": { | ||||
|         "color-name": "^1.0.0", | ||||
|         "simple-swizzle": "^0.2.2" | ||||
|       } | ||||
|     }, | ||||
|     "colors": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", | ||||
|       "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" | ||||
|     }, | ||||
|     "colorspace": { | ||||
|       "version": "1.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", | ||||
|       "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", | ||||
|       "requires": { | ||||
|         "color": "3.0.x", | ||||
|         "text-hex": "1.0.x" | ||||
|       } | ||||
|     }, | ||||
|     "commander": { | ||||
|       "version": "2.20.3", | ||||
|       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", | ||||
|       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" | ||||
|     }, | ||||
|     "core-util-is": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", | ||||
|       "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" | ||||
|     }, | ||||
|     "fast-safe-stringify": { | ||||
|       "version": "2.0.7", | ||||
|       "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", | ||||
|       "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" | ||||
|     }, | ||||
|     "fecha": { | ||||
|       "version": "4.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", | ||||
|       "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" | ||||
|     }, | ||||
|     "fn.name": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", | ||||
|       "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" | ||||
|     }, | ||||
|     "handlebars": { | ||||
|       "version": "4.7.6", | ||||
|       "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", | ||||
|       "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", | ||||
|       "requires": { | ||||
|         "minimist": "^1.2.5", | ||||
|         "neo-async": "^2.6.0", | ||||
|         "source-map": "^0.6.1", | ||||
|         "uglify-js": "^3.1.4", | ||||
|         "wordwrap": "^1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "inherits": { | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||
|       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||||
|     }, | ||||
|     "is-arrayish": { | ||||
|       "version": "0.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", | ||||
|       "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" | ||||
|     }, | ||||
|     "is-stream": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", | ||||
|       "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" | ||||
|     }, | ||||
|     "isarray": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||||
|       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||
|     }, | ||||
|     "kuler": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", | ||||
|       "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" | ||||
|     }, | ||||
|     "logform": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", | ||||
|       "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", | ||||
|       "requires": { | ||||
|         "colors": "^1.2.1", | ||||
|         "fast-safe-stringify": "^2.0.4", | ||||
|         "fecha": "^4.2.0", | ||||
|         "ms": "^2.1.1", | ||||
|         "triple-beam": "^1.3.0" | ||||
|       } | ||||
|     }, | ||||
|     "minimist": { | ||||
|       "version": "1.2.5", | ||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||
|       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" | ||||
|     }, | ||||
|     "moxygen": { | ||||
|       "version": "0.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/moxygen/-/moxygen-0.8.0.tgz", | ||||
|       "integrity": "sha512-648PiF5SDqT3kQERtBxlGFV5MS53fESO2rS+ez+NaxmW/WQH2Xm5qUClZFMAkYnpCssnMQgPcZunSrFCF1cPFA==", | ||||
|       "requires": { | ||||
|         "commander": "^2.19.0", | ||||
|         "handlebars": "^4.0.12", | ||||
|         "object-assign": "^4.1.1", | ||||
|         "winston": "^3.2.1", | ||||
|         "xml2js": "^0.4.19" | ||||
|       } | ||||
|     }, | ||||
|     "ms": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
|       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||||
|     }, | ||||
|     "neo-async": { | ||||
|       "version": "2.6.2", | ||||
|       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", | ||||
|       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" | ||||
|     }, | ||||
|     "object-assign": { | ||||
|       "version": "4.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||||
|       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" | ||||
|     }, | ||||
|     "one-time": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", | ||||
|       "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", | ||||
|       "requires": { | ||||
|         "fn.name": "1.x.x" | ||||
|       } | ||||
|     }, | ||||
|     "process-nextick-args": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||||
|       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||||
|     }, | ||||
|     "readable-stream": { | ||||
|       "version": "3.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||||
|       "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||||
|       "requires": { | ||||
|         "inherits": "^2.0.3", | ||||
|         "string_decoder": "^1.1.1", | ||||
|         "util-deprecate": "^1.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "safe-buffer": { | ||||
|       "version": "5.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||||
|       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" | ||||
|     }, | ||||
|     "sax": { | ||||
|       "version": "1.2.4", | ||||
|       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", | ||||
|       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" | ||||
|     }, | ||||
|     "simple-swizzle": { | ||||
|       "version": "0.2.2", | ||||
|       "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", | ||||
|       "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", | ||||
|       "requires": { | ||||
|         "is-arrayish": "^0.3.1" | ||||
|       } | ||||
|     }, | ||||
|     "source-map": { | ||||
|       "version": "0.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | ||||
|     }, | ||||
|     "stack-trace": { | ||||
|       "version": "0.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", | ||||
|       "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" | ||||
|     }, | ||||
|     "string_decoder": { | ||||
|       "version": "1.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", | ||||
|       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", | ||||
|       "requires": { | ||||
|         "safe-buffer": "~5.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "text-hex": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", | ||||
|       "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" | ||||
|     }, | ||||
|     "triple-beam": { | ||||
|       "version": "1.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", | ||||
|       "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" | ||||
|     }, | ||||
|     "uglify-js": { | ||||
|       "version": "3.10.0", | ||||
|       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz", | ||||
|       "integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==", | ||||
|       "optional": true | ||||
|     }, | ||||
|     "util-deprecate": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||
|       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||||
|     }, | ||||
|     "winston": { | ||||
|       "version": "3.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", | ||||
|       "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", | ||||
|       "requires": { | ||||
|         "@dabh/diagnostics": "^2.0.2", | ||||
|         "async": "^3.1.0", | ||||
|         "is-stream": "^2.0.0", | ||||
|         "logform": "^2.2.0", | ||||
|         "one-time": "^1.0.0", | ||||
|         "readable-stream": "^3.4.0", | ||||
|         "stack-trace": "0.0.x", | ||||
|         "triple-beam": "^1.3.0", | ||||
|         "winston-transport": "^4.4.0" | ||||
|       } | ||||
|     }, | ||||
|     "winston-transport": { | ||||
|       "version": "4.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", | ||||
|       "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", | ||||
|       "requires": { | ||||
|         "readable-stream": "^2.3.7", | ||||
|         "triple-beam": "^1.2.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "readable-stream": { | ||||
|           "version": "2.3.7", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||||
|           "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
|             "inherits": "~2.0.3", | ||||
|             "isarray": "~1.0.0", | ||||
|             "process-nextick-args": "~2.0.0", | ||||
|             "safe-buffer": "~5.1.1", | ||||
|             "string_decoder": "~1.1.1", | ||||
|             "util-deprecate": "~1.0.1" | ||||
|           } | ||||
|         }, | ||||
|         "safe-buffer": { | ||||
|           "version": "5.1.2", | ||||
|           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||||
|           "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||||
|         }, | ||||
|         "string_decoder": { | ||||
|           "version": "1.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||||
|           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||||
|           "requires": { | ||||
|             "safe-buffer": "~5.1.0" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "wordwrap": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | ||||
|       "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" | ||||
|     }, | ||||
|     "xml2js": { | ||||
|       "version": "0.4.23", | ||||
|       "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", | ||||
|       "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", | ||||
|       "requires": { | ||||
|         "sax": ">=0.6.0", | ||||
|         "xmlbuilder": "~11.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "xmlbuilder": { | ||||
|       "version": "11.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", | ||||
|       "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -156,67 +156,65 @@ typedef void (*TTNMessageCallback)(const uint8_t* payload, size_t length, port_t | ||||
| /** | ||||
|  * @brief TTN device | ||||
|  *  | ||||
|  * The 'TheThingsNetwork' class enables ESP32 devices with SX1272/73/76/77/78/79 LoRaWAN chips | ||||
|  * This class enables ESP32 devices with SX1272/73/76/77/78/79 LoRaWAN chips | ||||
|  * to communicate via The Things Network. | ||||
|  *  | ||||
|  * Only one instance of this class must be created. | ||||
|  * Only one instance of this class may be created. | ||||
|  */ | ||||
| class TheThingsNetwork | ||||
| { | ||||
| public: | ||||
|     /** | ||||
|      * @brief Construct a new The Things Network device instance. | ||||
|      * @brief Constructs a new The Things Network device instance. | ||||
|      */ | ||||
|     TheThingsNetwork(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Destroy the The Things Network device instance. | ||||
|      * @brief Destroys the The Things Network device instance. | ||||
|      */ | ||||
|     ~TheThingsNetwork(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Reset the LoRaWAN radio. | ||||
|      * @brief Resets the LoRaWAN radio. | ||||
|      *  | ||||
|      * To restart communication, `join()` must be called. | ||||
|      * Neither clears the provisioned keys nor the configured pins. | ||||
|      * To restart communication, join() must be called. | ||||
|      * It neither clears the provisioned keys nor the configured pins. | ||||
|      */ | ||||
|     void reset(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Configures the pins used to communicate with the LoRaWAN radio chip. | ||||
|      *  | ||||
|      *  | ||||
|      * Before calling this member function, the SPI bus needs to be configured using `spi_bus_initialize()`.  | ||||
|      * Additionally, `gpio_install_isr_service()` must have been called to initialize the GPIO ISR handler service. | ||||
|      *  | ||||
|      * @param spi_host  The SPI bus/peripherial to use (SPI_HOST, HSPI_HOST or VSPI_HOST). | ||||
|      * @param spi_host  The SPI bus/peripherial to use (`SPI_HOST`, `HSPI_HOST` or `VSPI_HOST`). | ||||
|      * @param nss       The GPIO pin number connected to the radio chip's NSS pin (serving as the SPI chip select) | ||||
|      * @param rxtx      The GPIO pin number connected to the radio chip's RXTX pin (TTN_NOT_CONNECTED if not connected) | ||||
|      * @param rst       The GPIO pin number connected to the radio chip's RST pin (TTN_NOT_CONNECTED if not connected) | ||||
|      * @param rxtx      The GPIO pin number connected to the radio chip's RXTX pin (`TTN_NOT_CONNECTED` if not connected) | ||||
|      * @param rst       The GPIO pin number connected to the radio chip's RST pin (`TTN_NOT_CONNECTED` if not connected) | ||||
|      * @param dio0      The GPIO pin number connected to the radio chip's DIO0 pin | ||||
|      * @param dio1      The GPIO pin number connected to the radio chip's DIO1 pin | ||||
|      */ | ||||
|     void configurePins(spi_host_device_t spi_host, uint8_t nss, uint8_t rxtx, uint8_t rst, uint8_t dio0, uint8_t dio1); | ||||
|  | ||||
|     /** | ||||
|      * @brief Sets the information needed to activate the device via OTAA, without actually activating. | ||||
|      * @brief Sets the credentials needed to activate the device via OTAA, without activating it. | ||||
|      *  | ||||
|      * The provided device EUI, app EUI and app key are saved in non-volatile memory. Before | ||||
|      * this function is called, 'nvs_flash_init' must have been called once. | ||||
|      * this function is called, `nvs_flash_init()` must have been called once. | ||||
|      *  | ||||
|      * Call join() without arguments to activate. | ||||
|      * Call join() to activate the device. | ||||
|      *  | ||||
|      * @param devEui  Device EUI (16 character string with hexadecimal data) | ||||
|      * @param appEui  Application EUI of the device (16 character string with hexadecimal data) | ||||
|      * @param appKey  App Key of the device (32 character string with hexadecimal data) | ||||
|      * @return true   if the provisioning was successful | ||||
|      * @return false  if the provisioning failed | ||||
|      * @return `true` if the provisioning was successful, `false`  if the provisioning failed | ||||
|      */ | ||||
|     bool provision(const char *devEui, const char *appEui, const char *appKey); | ||||
|  | ||||
|     /** | ||||
|      * @brief Sets the information needed to activate the device via OTAA, using the MAC to generate the device EUI | ||||
|      * and without actually activating. | ||||
|      * and without activating it. | ||||
|      *  | ||||
|      * The generated device EUI and the provided app EUI and app key are saved in non-volatile memory. Before | ||||
|      * this function is called, 'nvs_flash_init' must have been called once. | ||||
| @ -230,47 +228,45 @@ public: | ||||
|      * it is okay for that the LoRa communication of your application can easily be intercepted and that | ||||
|      * forged data can be injected. | ||||
|      *  | ||||
|      * Call join() without arguments to activate. | ||||
|      * Call join() to activate. | ||||
|      *  | ||||
|      * @param appEui  Application EUI of the device (16 character string with hexadecimal data) | ||||
|      * @param appKey  App Key of the device (32 character string with hexadecimal data) | ||||
|      * @return true   if the provisioning was successful | ||||
|      * @return false  if the provisioning failed | ||||
|      * @return `true` if the provisioning was successful, `false`  if the provisioning failed | ||||
|      */ | ||||
|     bool provisionWithMAC(const char *appEui, const char *appKey); | ||||
|  | ||||
|     /** | ||||
|      * @brief Start task that listens on configured UART for AT commands. | ||||
|      * @brief Starts task listening on configured UART for AT commands. | ||||
|      *  | ||||
|      * Run 'make menuconfig' to configure it. | ||||
|      * Run `make menuconfig` to configure it. | ||||
|      */ | ||||
|     void startProvisioningTask(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Wait until the device EUI, app EUI and app key have been provisioned | ||||
|      * via the provisioning task. | ||||
|      * @brief Waits until the device EUI, app EUI and app key have been provisioned | ||||
|      * by the provisioning task. | ||||
|      *  | ||||
|      * If device is already provisioned (stored data in NVS, call to 'provision()' | ||||
|      * or call to 'join(const char*, const char*, const char*)', this function | ||||
|      * If the device has already been provisioned (stored data in NVS, call of provision() | ||||
|      * or call of join(const char*, const char*, const char*), this function | ||||
|      * immediately returns. | ||||
|      */ | ||||
|     void waitForProvisioning(); | ||||
|  | ||||
|      /** | ||||
|      * @brief Activate the device via OTAA. | ||||
|      * @brief Activates the device via OTAA. | ||||
|      *  | ||||
|      * The app EUI, app key and dev EUI must already have been provisioned by a call to 'provision()'. | ||||
|      * Before this function is called, 'nvs_flash_init' must have been called once. | ||||
|      * The app EUI, app key and dev EUI must have already been provisioned by a call to provision(). | ||||
|      * Before this function is called, `nvs_flash_init()` must have been called once. | ||||
|      *  | ||||
|      * The function blocks until the activation has completed or failed. | ||||
|      *  | ||||
|      * @return true   if the activation was succeful | ||||
|      * @return false  if the activation failed | ||||
|      * @return `true` if the activation was succesful, `false` if the activation failed | ||||
|      */ | ||||
|     bool join(); | ||||
|  | ||||
|    /** | ||||
|      * @brief Set the device EUI, app EUI and app key and activate the device via OTAA. | ||||
|      * @brief Sets the device EUI, app EUI and app key and activate the device via OTAA. | ||||
|      *  | ||||
|      * The device EUI, app EUI and app key are NOT saved in non-volatile memory. | ||||
|      *  | ||||
| @ -279,13 +275,12 @@ public: | ||||
|      * @param devEui  Device EUI (16 character string with hexadecimal data) | ||||
|      * @param appEui  Application EUI of the device (16 character string with hexadecimal data) | ||||
|      * @param appKey  App Key of the device (32 character string with hexadecimal data) | ||||
|      * @return true   if the activation was succeful | ||||
|      * @return false  if the activation failed | ||||
|      * @return `true` if the activation was succesful, `false` if the activation failed | ||||
|      */ | ||||
|     bool join(const char *devEui, const char *appEui, const char *appKey); | ||||
|  | ||||
|     /** | ||||
|      * @brief Transmit a message | ||||
|      * @brief Transmits a message | ||||
|      *  | ||||
|      * The function blocks until the message could be transmitted and a message has been received | ||||
|      * in the subsequent receive window (or the window expires). Additionally, the function will | ||||
| @ -293,23 +288,21 @@ public: | ||||
|      *  | ||||
|      * @param payload  bytes to be transmitted | ||||
|      * @param length   number of bytes to be transmitted | ||||
|      * @param port     port (default to 1) | ||||
|      * @param confirm  flag indicating if a confirmation should be requested. Default to 'false' | ||||
|      * @return TkTTNSuccessfulTransmission   Successful transmission | ||||
|      * @return kTTNErrorTransmissionFailed   Transmission failed | ||||
|      * @return TkTTNErrorUnexpected          Unexpected error | ||||
|      * @param port     port (defaults to 1) | ||||
|      * @param confirm  flag indicating if a confirmation should be requested. Defaults to `false` | ||||
|      * @return `kTTNSuccessfulTransmission` for successful transmission, `kTTNErrorTransmissionFailed` for failed transmission, `kTTNErrorUnexpected` for unexpected error | ||||
|      */ | ||||
|     TTNResponseCode transmitMessage(const uint8_t *payload, size_t length, port_t port = 1, bool confirm = false); | ||||
|  | ||||
|     /** | ||||
|      * @brief Set the function to be called when a message is received | ||||
|      * @brief Sets the function to be called when a message is received | ||||
|      *  | ||||
|      * When a message is received, the specified function is called. The | ||||
|      * message, its length and the port number are provided as | ||||
|      * parameters. The values are only valid during the duration of the | ||||
|      * callback. So they must be immediately processed or copied. | ||||
|      *  | ||||
|      * Messages are received as a result of 'transmitMessage'. The callback is called | ||||
|      * Messages are received as a result of transmitMessage(). The callback is called | ||||
|      * in the task that called any of these functions and it occurs before these functions | ||||
|      * return control to the caller. | ||||
|      *  | ||||
| @ -319,10 +312,9 @@ public: | ||||
|  | ||||
|     /** | ||||
|      * @brief Checks if device EUI, app EUI and app key have been stored in non-volatile storage | ||||
|      * or have been provided as by a call to 'join(const char*, const char*, const char*)'. | ||||
|      * or have been provided as by a call to join(const char*, const char*, const char*). | ||||
|      *  | ||||
|      * @return true   if they are stored, complete and of the correct size | ||||
|      * @return false  otherwise | ||||
|      * @return `true` if they are stored, complete and of the correct size, `false` otherwise | ||||
|      */ | ||||
|     bool isProvisioned(); | ||||
|  | ||||
| @ -340,8 +332,7 @@ public: | ||||
|     /** | ||||
|      * Returns whether Adaptive Data Rate (ADR) is enabled. | ||||
|      *  | ||||
|      * @return true  if enabled | ||||
|      * @return false if disabled | ||||
|      * @return `true` if enabled, `false` if disabled | ||||
|      */ | ||||
|     bool adrEnabled(); | ||||
|  | ||||
| @ -358,20 +349,20 @@ public: | ||||
|     /** | ||||
|      * @brief Stops all activies and shuts down the RF module and the background tasks. | ||||
|      *  | ||||
|      * To restart communication, `startup()` and `join()` must be called. | ||||
|      * Neither clears the provisioned keys nor the configured pins. | ||||
|      * To restart communication, startup() and join() must be called. | ||||
|      * it neither clears the provisioned keys nor the configured pins. | ||||
|      */ | ||||
|     void shutdown(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Restarts the background tasks and RF module. | ||||
|      *  | ||||
|      * This member function must only be called after a call to `shutdowna()`. | ||||
|      * This member function must only be called after a call to shutdowna(). | ||||
|      */ | ||||
|     void startup(); | ||||
|  | ||||
|     /** | ||||
|      * @brief Gets currentRX/TX window | ||||
|      * @brief Gets current RX/TX window | ||||
|      * @return window | ||||
|      */ | ||||
|     TTNRxTxWindow rxTxWindow(); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user