Max Prokhorov
3145e8be24
Rework settings ( #2282 )
* wip based on early draft. todo benchmarking
* fixup eraser, assume keys are unique
* fix cursor copy, test removal at random
* small benchmark via permutations. todo lambdas and novirtual
* fix empty condition / reset
* overwrite optimizations, fix move offsets overflows
* ...erase using 0xff instead of 0
* test the theory with code, different length kv were bugged
* try to check for out-of-bounds writes / reads
* style
* trying to fix mover again
* clarify length, defend against reading len on edge
* fix uncommited rewind change
* prove space assumptions
* more concise traces, fix move condition (agrh!!!)
* slightly more internal knowledge (estimates API?)
* make sure cursor is only valid within the range
* ensure 0 does not blow things
* go back up
* cursor comments
* comments
* rewrite writes through cursor
* in del too
* estimate kv storage requirements, return available size
* move raw erase / move into a method, allow ::set to avoid scanning storage twice
* refactor naming, use in code
* amend storage slicing test
* fix crash handler offsets, cleanup configuration
* start -> begin
* eeprom readiness
* dependencies
* unused
* SPI_FLASH constants for older Core
* vtables -> templates
* less include dependencies
* gcov help, move estimate outside of the class
* writer position can never match, use begin + offset
* tweak save_crash to trigger only once in a serious crash
* doh, header function should be inline
* foreach api, tweak structs for public api
* use test helper class
* when not using foreach, move cursor reset closer to the loop using read_kv
* coverage comments, fix typo in tests decltype
* ensure set() does not break with offset
* make codacy happy again
4 years ago
Max Prokhorov
b8fc8cd1fd
Terminal: change command-line parser ( #2247 )
Change the underlying command line handling:
- switch to a custom parser, inspired by redis / sds
- update terminalRegisterCommand signature, pass only bare minimum
- clean-up `help` & `commands`. update settings `set`, `get` and `del`
- allow our custom test suite to run command-line tests
- clean-up Stream IO to allow us to print large things into debug stream (for example, `eeprom.dump`)
- send parsing errors to the debug log
As a proof of concept, introduce `TERMINAL_MQTT_SUPPORT` and `TERMINAL_WEB_API_SUPPORT`
- MQTT subscribes to the `<root>/cmd/set` and sends response to the `<root>/cmd`. We can't output too much, as we don't have any large-send API.
- Web API listens to the `/api/cmd?apikey=...&line=...` (or PUT, params inside the body). This one is intended as a possible replacement of the `API_SUPPORT`. Internals introduce a 'task' around the AsyncWebServerRequest object that will simulate what WiFiClient does and push data into it continuously, switching between CONT and SYS.
Both are experimental. We only accept a single command and not every command is updated to use Print `ctx.output` object. We are also somewhat limited by the Print / Stream overall, perhaps I am overestimating the usefulness of Arduino compatibility to such an extent :)
Web API handler can also sometimes show only part of the result, whenever the command tries to yield() by itself waiting for something. Perhaps we would need to create a custom request handler for that specific use-case.
4 years ago
Max Prokhorov
edb23dbfc4
Convert .ino -> .cpp ( #2228 )
- general conversion from .ino modules into a separate .cpp files
- clean-up internal headers, place libraries into .h. guard .cpp with _SUPPORT flags
- fix some instances of shared variables instead of public methods
- tweak build system to still build a single source file via os environment variable ESPURNA_BUILD_SINGLE_SOURCE
4 years ago
Max Prokhorov
f7f41980b6
Headers cleanup ( #2134 )
* Config: remove prototypes.h
* fixup order
* word
* add missing
* fix warning while still using .ino
* bad at c/p;
4 years ago
arihant daga
fbf2b71749
Backup EEPROM before performing OTA ( #1808 , #1809 )
* [Fix] Backing up EEPROM before performing OTA.For fixing - [#1808 ]
* Guard ArduinoOTA, different handler for async
5 years ago
Xose Pérez
d47ae2e4a4
Helper terminal methods terminalOK and terminalError
6 years ago
Xose Pérez
b9e13446fc
Revert "Wrap embeddis commands and move feedback to caller"
This reverts commit 7ad0e3a02b
.
6 years ago
Xose Pérez
7ad0e3a02b
Wrap embeddis commands and move feedback to caller
6 years ago
Xose Pérez
27e7b9ae89
Move terminal methods to own module
6 years ago
Max Prokhorov
f8cb3d12f3
Show sector info in EEPROM command
6 years ago
Max Prokhorov
7c85225764
Trigger commit in eeprom module
6 years ago
Xose Pérez
88e2ecccce
Improve memory info
6 years ago
Xose Pérez
390d39d05e
Remove wifi info from File: dir, Node: Top, This is the top of the INFO tree.
This is the Info main menu (aka directory node).
A few useful Info commands:
'q' quits;
'?' lists all Info commands;
'h' starts the Info tutorial;
'mTexinfo RET' visits the Texinfo manual, etc.
* Menu:
Basics
* Common options: (coreutils)Common options.
* Coreutils: (coreutils). Core GNU (file, text, shell) utilities.
* Date input formats: (coreutils)Date input formats.
* Ed: (ed). The GNU line editor
* File permissions: (coreutils)File permissions.
Access modes.
* Finding files: (find). Operating on files matching certain criteria.
C++ libraries
* autosprintf: (autosprintf). Support for printf format strings in C++.
Compression
* Gzip: (gzip). General (de)compression of files (lzw).
Development
* SSIP: (ssip). Speech Synthesis Interface Protocol.
* Speech Dispatcher: (speech-dispatcher).
Speech Dispatcher.
* libffi: (libffi). Portable foreign-function interface library.
DOS
* Mtools: (mtools). Mtools: utilities to access DOS disks in Unix.
Editors
* nano: (nano). Small and friendly text editor.
General Commands
* Screen: (screen). Full-screen window manager.
GNU Gettext Utilities
* autopoint: (gettext)autopoint Invocation.
Copy gettext infrastructure.
* envsubst: (gettext)envsubst Invocation.
Expand environment variables.
* gettextize: (gettext)gettextize Invocation.
Prepare a package for gettext.
* gettext: (gettext). GNU gettext utilities.
* ISO3166: (gettext)Country Codes.
ISO 3166 country codes.
* ISO639: (gettext)Language Codes.
ISO 639 language codes.
* msgattrib: (gettext)msgattrib Invocation.
Select part of a PO file.
* msgcat: (gettext)msgcat Invocation.
Combine several PO files.
* msgcmp: (gettext)msgcmp Invocation.
Compare a PO file and template.
* msgcomm: (gettext)msgcomm Invocation.
Match two PO files.
* msgconv: (gettext)msgconv Invocation.
Convert PO file to encoding.
* msgen: (gettext)msgen Invocation.
Create an English PO file.
* msgexec: (gettext)msgexec Invocation.
Process a PO file.
* msgfilter: (gettext)msgfilter Invocation.
Pipe a PO file through a filter.
* msgfmt: (gettext)msgfmt Invocation.
Make MO files out of PO files.
* msggrep: (gettext)msggrep Invocation.
Select part of a PO file.
* msginit: (gettext)msginit Invocation.
Create a fresh PO file.
* msgmerge: (gettext)msgmerge Invocation.
Update a PO file from template.
* msgunfmt: (gettext)msgunfmt Invocation.
Uncompile MO file into PO file.
* msguniq: (gettext)msguniq Invocation.
Unify duplicates for PO file.
* ngettext: (gettext)ngettext Invocation.
Translate a message with plural.
* xgettext: (gettext)xgettext Invocation.
Extract strings into a PO file.
GNU organization
* Maintaining Findutils: (find-maint).
Maintaining GNU findutils
GNU Utilities
* dirmngr-client: (gnupg). X.509 CRL and OCSP client.
* dirmngr: (gnupg). X.509 CRL and OCSP server.
* gpg: (gnupg1). OpenPGP encryption and signing tool (v1).
* gpg-agent: (gnupg). The secret key daemon.
* gpg2: (gnupg). OpenPGP encryption and signing tool.
* gpgsm: (gnupg). S/MIME encryption and signing tool.
Individual utilities
* aclocal-invocation: (automake-1.15)aclocal Invocation.
Generating aclocal.m4.
* arch: (coreutils)arch invocation. Print machine hardware name.
* automake-invocation: (automake-1.15)automake Invocation.
Generating Makefile.in.
* base32: (coreutils)base32 invocation. Base32 encode/decode data.
* base64: (coreutils)base64 invocation. Base64 encode/decode data.
* basename: (coreutils)basename invocation. Strip directory and suffix.
* bibtex: (web2c)bibtex invocation. Maintaining bibliographies.
* cat: (coreutils)cat invocation. Concatenate and write files.
* chcon: (coreutils)chcon invocation. Change SELinux CTX of files.
* chgrp: (coreutils)chgrp invocation. Change file groups.
* chmod: (coreutils)chmod invocation. Change access permissions.
* chown: (coreutils)chown invocation. Change file owners and groups.
* chroot: (coreutils)chroot invocation. Specify the root directory.
* cksum: (coreutils)cksum invocation. Print POSIX CRC checksum.
* cmp: (diffutils)Invoking cmp. Compare 2 files byte by byte.
* comm: (coreutils)comm invocation. Compare sorted files by line.
* cp: (coreutils)cp invocation. Copy files.
* csplit: (coreutils)csplit invocation. Split by context.
* cut: (coreutils)cut invocation. Print selected parts of lines.
* date: (coreutils)date invocation. Print/set system date and time.
* dd: (coreutils)dd invocation. Copy and convert a file.
* df: (coreutils)df invocation. Report file system disk usage.
* diff: (diffutils)Invoking diff. Compare 2 files line by line.
* diff3: (diffutils)Invoking diff3. Compare 3 files line by line.
* dir: (coreutils)dir invocation. List directories briefly.
* dircolors: (coreutils)dircolors invocation. Color setup for ls.
* dirname: (coreutils)dirname invocation. Strip last file name component.
* du: (coreutils)du invocation. Report on disk usage.
* dvicopy: (web2c)dvicopy invocation. Virtual font expansion
* dvitomp: (web2c)dvitomp invocation. DVI to MPX (MetaPost pictures).
* dvitype: (web2c)dvitype invocation. DVI to human-readable text.
* echo: (coreutils)echo invocation. Print a line of text.
* env: (coreutils)env invocation. Modify the environment.
* expand: (coreutils)expand invocation. Convert tabs to spaces.
* expr: (coreutils)expr invocation. Evaluate expressions.
* factor: (coreutils)factor invocation. Print prime factors
* false: (coreutils)false invocation. Do nothing, unsuccessfully.
* find: (find)Invoking find. Finding and acting on files.
* fmt: (coreutils)fmt invocation. Reformat paragraph text.
* fold: (coreutils)fold invocation. Wrap long input lines.
* gftodvi: (web2c)gftodvi invocation. Generic font proofsheets.
* gftopk: (web2c)gftopk invocation. Generic to packed fonts.
* gftype: (web2c)gftype invocation. GF to human-readable text.
* groups: (coreutils)groups invocation. Print group names a user is in.
* gunzip: (gzip)Overview. Decompression.
* gzexe: (gzip)Overview. Compress executables.
* head: (coreutils)head invocation. Output the first part of files.
* hostid: (coreutils)hostid invocation. Print numeric host identifier.
* hostname: (coreutils)hostname invocation. Print or set system name.
* id: (coreutils)id invocation. Print user identity.
* install: (coreutils)install invocation. Copy files and set attributes.
* join: (coreutils)join invocation. Join lines on a common field.
* kill: (coreutils)kill invocation. Send a signal to processes.
* link: (coreutils)link invocation. Make hard links between files.
* ln: (coreutils)ln invocation. Make links between files.
* locate: (find)Invoking locate. Finding files in a database.
* logname: (coreutils)logname invocation. Print current login name.
* ls: (coreutils)ls invocation. List directory contents.
* md5sum: (coreutils)md5sum invocation. Print or check MD5 digests.
* mf: (web2c)mf invocation. Creating typeface families.
* mft: (web2c)mft invocation. Prettyprinting Metafont source.
* mkdir: (coreutils)mkdir invocation. Create directories.
* mkfifo: (coreutils)mkfifo invocation. Create FIFOs (named pipes).
* mknod: (coreutils)mknod invocation. Create special files.
* mktemp: (coreutils)mktemp invocation. Create temporary files.
* mltex: (web2c)MLTeX. Multi-lingual TeX.
* mpost: (web2c)mpost invocation. Creating technical diagrams.
* mv: (coreutils)mv invocation. Rename files.
* nice: (coreutils)nice invocation. Modify niceness.
* nl: (coreutils)nl invocation. Number lines and write files.
* nohup: (coreutils)nohup invocation. Immunize to hangups.
* nproc: (coreutils)nproc invocation. Print the number of processors.
* numfmt: (coreutils)numfmt invocation. Reformat numbers.
* od: (coreutils)od invocation. Dump files in octal, etc.
* paste: (coreutils)paste invocation. Merge lines of files.
* patch: (diffutils)Invoking patch. Apply a patch to a file.
* patgen: (web2c)patgen invocation. Creating hyphenation patterns.
* pathchk: (coreutils)pathchk invocation. Check file name portability.
* pktogf: (web2c)pktogf invocation. Packed to generic fonts.
* pktype: (web2c)pktype invocation. PK to human-readable text.
* pltotf: (web2c)pltotf invocation. Property list to TFM.
* pooltype: (web2c)pooltype invocation. Display WEB pool files.
* pr: (coreutils)pr invocation. Paginate or columnate files.
* printenv: (coreutils)printenv invocation. Print environment variables.
* printf: (coreutils)printf invocation. Format and print data.
* ptx: (coreutils)ptx invocation. Produce permuted indexes.
* pwd: (coreutils)pwd invocation. Print working directory.
* readlink: (coreutils)readlink invocation. Print referent of a symlink.
* realpath: (coreutils)realpath invocation. Print resolved file names.
* rm: (coreutils)rm invocation. Remove files.
* rmdir: (coreutils)rmdir invocation. Remove empty directories.
* runcon: (coreutils)runcon invocation. Run in specified SELinux CTX.
* sdiff: (diffutils)Invoking sdiff. Merge 2 files side-by-side.
* seq: (coreutils)seq invocation. Print numeric sequences
* sha1sum: (coreutils)sha1sum invocation. Print or check SHA-1 digests.
* sha2: (coreutils)sha2 utilities. Print or check SHA-2 digests.
* shred: (coreutils)shred invocation. Remove files more securely.
* shuf: (coreutils)shuf invocation. Shuffling text files.
* sleep: (coreutils)sleep invocation. Delay for a specified time.
* sort: (coreutils)sort invocation. Sort text files.
* split: (coreutils)split invocation. Split into pieces.
* stat: (coreutils)stat invocation. Report file(system) status.
* stdbuf: (coreutils)stdbuf invocation. Modify stdio buffering.
* stty: (coreutils)stty invocation. Print/change terminal settings.
* sum: (coreutils)sum invocation. Print traditional checksum.
* sync: (coreutils)sync invocation. Synchronize memory to disk.
* tac: (coreutils)tac invocation. Reverse files.
* tail: (coreutils)tail invocation. Output the last part of files.
* tangle: (web2c)tangle invocation. WEB to Pascal.
* tee: (coreutils)tee invocation. Redirect to multiple files.
* test: (coreutils)test invocation. File/string tests.
* tex: (web2c)tex invocation. Typesetting.
* tftopl: (web2c)tftopl invocation. TFM -> property list.
* time: (time). Run programs and summarize
system resource usage.
* timeout: (coreutils)timeout invocation. Run with time limit.
* touch: (coreutils)touch invocation. Change file timestamps.
* tr: (coreutils)tr invocation. Translate characters.
* true: (coreutils)true invocation. Do nothing, successfully.
* truncate: (coreutils)truncate invocation. Shrink/extend size of a file.
* tsort: (coreutils)tsort invocation. Topological sort.
* tty: (coreutils)tty invocation. Print terminal name.
* uname: (coreutils)uname invocation. Print system information.
* unexpand: (coreutils)unexpand invocation. Convert spaces to tabs.
* uniq: (coreutils)uniq invocation. Uniquify files.
* unlink: (coreutils)unlink invocation. Removal via unlink(2).
* updatedb: (find)Invoking updatedb. Building the locate database.
* uptime: (coreutils)uptime invocation. Print uptime and load.
* users: (coreutils)users invocation. Print current user names.
* vdir: (coreutils)vdir invocation. List directories verbosely.
* vftovp: (web2c)vftovp invocation. Virtual font -> virtual pl.
* vptovf: (web2c)vptovf invocation. Virtual pl -> virtual font.
* wc: (coreutils)wc invocation. Line, word, and byte counts.
* weave: (web2c)weave invocation. WEB to TeX.
* who: (coreutils)who invocation. Print who is logged in.
* whoami: (coreutils)whoami invocation. Print effective user ID.
* xargs: (find)Invoking xargs. Operating on many files.
* yes: (coreutils)yes invocation. Print a string indefinitely.
* zcat: (gzip)Overview. Decompression to stdout.
* zdiff: (gzip)Overview. Compare compressed files.
* zforce: (gzip)Overview. Force .gz extension on files.
* zgrep: (gzip)Overview. Search compressed files.
* zmore: (gzip)Overview. Decompression output by pages.
Kernel
* GRUB: (grub). The GRand Unified Bootloader
* grub-dev: (grub-dev). The GRand Unified Bootloader Dev
* grub-install: (grub)Invoking grub-install.
Install GRUB on your drive
* grub-mkconfig: (grub)Invoking grub-mkconfig.
Generate GRUB configuration
* grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2.
* grub-mkrelpath: (grub)Invoking grub-mkrelpath.
* grub-mkrescue: (grub)Invoking grub-mkrescue.
Make a GRUB rescue image
* grub-mount: (grub)Invoking grub-mount.
Mount a file system using GRUB
* grub-probe: (grub)Invoking grub-probe.
Probe device information
* grub-script-check: (grub)Invoking grub-script-check.
Libraries
* RLuserman: (rluserman). The GNU readline library User's Manual.
Man-pages
* Latex2man: (latex2man). Its Man-Page
Math
* bc: (bc). An arbitrary precision calculator language.
* dc: (dc). Arbitrary precision RPN "Desktop Calculator".
Network applications
* Wget: (wget). Non-interactive network downloader.
Programming
* flex: (flex). Fast lexical analyzer generator (lex
replacement).
* gnucash: (gnucash-design). Design of the GnuCash program
Programming Tools
* Gperf: (gperf). Perfect Hash Function Generator.
Software development
* Autoconf Archive: (autoconf-archive).
A collection of re-usable Autoconf macros.
* Automake: (automake-1.15). Making GNU standards-compliant Makefiles.
Sound
* SSIP: (ssip). Speech Synthesis Interface Protocol.
* Say for Speech Dispatcher: (spd-say).
Say.
* Speech Dispatcher: (speech-dispatcher).
Speech Dispatcher.
TeX
* DVI-to-PNG: (dvipng). Translating TeX DVI files to Portable Network
Graphics (PNG).
* DVI-to-Postscript: (dvips). Translating TeX DVI files to PostScript.
* Eplain: (eplain). Expanding on plain Tex.
* EpsPDF: (epspdf). Portable GUI- and command-line EPS/PS/PDF
conversion
* Kpathsea: (kpathsea). File lookup along search paths.
* LaTeX2e: (latex2e). Unofficial LaTeX reference manual.
* LaTeX2e-es: (latex2e-es). Manual de extraoficial de LaTeX.
* Naming TeX fonts: (fontname). Filenames for TeX fonts.
* TL-build: (tlbuild). TeX Live configuration and development.
* TeX Directories: (tds). A directory structure for TeX files.
* TeXdraw: (texdraw). A system for producing PostScript drawings
from TeX.
* Web2c: (web2c). TeX, Metafont, and companion programs.
* afm2tfm: (dvips)Invoking afm2tfm.
Making Type 1 fonts available to TeX.
* dvipng: (dvipng). A DVI-to-PNG translator.
* dvips: (dvips)Invoking Dvips. DVI-to-PostScript translator.
* kpsewhich: (kpathsea)Invoking kpsewhich.
TeX file searching.
* mf2pt1: (mf2pt1). PostScript Type 1 fonts from Metafont source.
* mktexfmt: (kpathsea)mktex scripts.
Format (fmt/base/mem) generation.
* mktexlsr: (kpathsea)Filename database.
Update ls-R.
* mktexmf: (kpathsea)mktex scripts.
MF source generation.
* mktexpk: (kpathsea)mktex scripts.
PK bitmap generation.
* mktextex: (kpathsea)mktex scripts.
TeX source generation.
* mktextfm: (kpathsea)mktex scripts.
TeX font metric generation.
Text creation and manipulation
* Diffutils: (diffutils). Comparing and merging files.
* M4: (m4). A powerful macro processor.
* grep: (grep). Print lines matching a pattern.
* sed: (sed). Stream EDitor. command. Use * SSID MODE CHAN RATE SIGNAL BARS SECURITY to get current connections
6 years ago
Maxim Prokhorov
8a0b3bca42
Fix compiler warnings
Add button definitions to the travis02 and travis03
IR_BUTTON should be uint32_t to properly work with new macro
eepromRotate return value is not used
6 years ago
Xose Pérez
0ef74d0dc0
Update EEPROM_Rotate to 0.9.1 and use rotate(false) before OTA
6 years ago
Xose Pérez
87d961b186
Update to latest version of EEPROM_Rotate
6 years ago
Xose Pérez
33780edc5b
Better memory layout info, multi-sector memory layouts
6 years ago
Xose Pérez
a83115cb1b
Update API, backup EEPROM to last sector before OTA upgrades
6 years ago
Xose Pérez
bc30b9e2f6
Specific EEPROM module
6 years ago