Major UI Update

- Bug fixes 
- Jack doesn't show as plugged in if no jack detection is configured 
- New layout
- Updated jQuery to latest version
- Updated bootstrap to latest version
- Updated the command processing backend to support UI interactions
- Added a number of accessors to normalize read/update various configuration entries 
- Added more GPIOs to the status tab GPIO list
- Added several configuration sections for hardware and system
- Removed pop-over windows from system messages
- Added a message count pill to the status tab
- Added support for message count pill based on the highest severity 
- Updated the message list table to set colours based on messages severity
- Added command processing message area close to the action buttons to provide feedback from running the commands
This commit is contained in:
Sebastien
2020-10-08 17:19:22 -04:00
parent 6ae47a908b
commit be1d841039
60 changed files with 3885 additions and 1319 deletions

View File

@@ -2,7 +2,7 @@ idf_component_register( SRC_DIRS .
INCLUDE_DIRS . ${IDF_PATH}/components/esp_http_server/src ${IDF_PATH}/components/esp_http_server/src/port/esp32 ${IDF_PATH}/components/esp_http_server/src/util ${IDF_PATH}/components/esp_http_server/src/
REQUIRES squeezelite-ota json mdns
PRIV_REQUIRES tools services platform_config esp_common json newlib freertos spi_flash nvs_flash mdns pthread wpa_supplicant platform_console esp_http_server console
EMBED_FILES style.css code.js index.html bootstrap.min.css.gz jquery.min.js.gz popper.min.js.gz bootstrap.min.js.gz favicon.ico
EMBED_FILES res/style.css.gz res/code.js.gz index.html res/bootstrap.css.gz res/jquery.js.gz res/bootstrap.js.gz res/favicon.ico
)

View File

@@ -0,0 +1,650 @@
{
"commands": [{
"help": "Squeezelite Options",
"hascb": true,
"argtable": [{
"datatype": "<server>[:<port>]",
"glossary": "Connect to specified server, otherwise uses autodiscovery to find server",
"longopts": "server",
"shortopts": "s",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<stream>:<output>",
"glossary": "Internal Stream and Output buffer sizes in Kbytes",
"longopts": "buffers",
"shortopts": "b",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<codec1>,<codec2>",
"glossary": "Restrict codecs to those specified, otherwise load all available codecs; known codecs",
"longopts": "codecs",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 20
}, {
"datatype": "<n>",
"glossary": "Close output device when idle after timeout seconds, default is to keep it open while player is 'on",
"longopts": "timeout",
"shortopts": "C",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "log=level",
"glossary": "Set logging level, logs: all|slimproto|stream|decode|output|ir, level: info|debug|sdebug",
"longopts": "loglevel",
"shortopts": "d",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<string>",
"glossary": "Output device",
"longopts": "output_device",
"shortopts": "o",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<string>",
"glossary": "Mac address, format: ab:cd:ef:12:34:56",
"longopts": "mac_addr",
"shortopts": "m",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<string>",
"glossary": "Squeezelite player model name sent to the server",
"longopts": "modelname",
"shortopts": "M",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<string>",
"glossary": "Player name",
"longopts": "name",
"shortopts": "n",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Read wave and aiff format from header, ignore server parameters",
"longopts": "header_format",
"shortopts": "W",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<rates>[:<delay>]",
"glossary": "Sample rates supported, allows output to be off when squeezelite is started; rates = <maxrate>|<minrate>-<maxrate>|<rate1>,<rate2>,<rate3>; delay = optional delay switching rates in ms\n",
"longopts": "rates",
"shortopts": "r",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Report rate to server in helo as the maximum sample rate we can support",
"longopts": "max_rate",
"shortopts": "Z",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-W] [-s <server>[:<port>]] [-b <stream>:<output>] [-c <codec1>,<codec2>]... [-C <n>] [-d log=level] [-o <string>] [-m <string>] [-M <string>] [-n <string>] [-r <rates>[:<delay>]] [-Z <n>]",
"name": "cfg-syst-squeezelite"
}, {
"help": "DAC Options",
"hascb": true,
"argtable": [{
"datatype": "TAS57xx|TAS5713|AC101|I2S",
"glossary": "DAC Model Name",
"longopts": "model_name",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Clock GPIO. e.g. 33",
"longopts": "clock",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Word Select GPIO. e.g. 25",
"longopts": "wordselect",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Data GPIO. e.g. 32",
"longopts": "data",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Mute GPIO. e.g. 14",
"longopts": "mute_gpio",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Mute active GPIO level",
"longopts": "mute_level",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "SDA GPIO. e.g. 27",
"longopts": "dac_sda",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "SCL GPIO. e.g. 26",
"longopts": "dac_scl",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "I2C device address. e.g. 106",
"longopts": "dac_i2c",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Clear configuration",
"longopts": "clear",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}],
"hint": " --model_name=TAS57xx|TAS5713|AC101|I2S --clock=<n> --wordselect=<n> --data=<n> [--mute_gpio=<n>] [--mute_level] [--dac_sda=<n>] [--dac_scl=<n>] [--dac_i2c=<n>] [--clear]",
"name": "cfg-hw-dac"
}, {
"help": "Get the current size of free heap memory",
"hascb": false,
"name": "free"
}, {
"help": "Services",
"hascb": true,
"argtable": [{
"glossary": "Bluetooth Speaker",
"longopts": "BT_Speaker",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "AirPlay",
"longopts": "AirPlay",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "Disabled|Telnet Only|Telnet and Serial",
"glossary": "Telnet server. Use only for troubleshooting",
"longopts": "telnet",
"shortopts": "t",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "System Statistics. Use only for troubleshooting",
"longopts": "stats",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}],
"hint": " [--BT_Speaker] [--AirPlay] [-t Disabled|Telnet Only|Telnet and Serial] [--stats]",
"name": "cfg-syst-services"
}, {
"help": "Get minimum size of free heap memory found during execution",
"hascb": false,
"name": "heap"
}, {
"help": "Device Name",
"hascb": true,
"argtable": [{
"datatype": "\"squeezelite-test3\"",
"glossary": "New Name",
"longopts": "name",
"shortopts": "n",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-n \"squeezelite-test3\"]",
"name": "cfg-syst-name"
}, {
"help": "Get version of chip and SDK",
"hascb": false,
"name": "version"
}, {
"help": "Software reset of the chip",
"hascb": false,
"name": "restart"
}, {
"help": "Resets and boot to recovery (if available)",
"hascb": false,
"name": "recovery"
}, {
"help": "Selects the ota app partition to boot from and performa a software reset of the chip",
"hascb": false,
"name": "restart_ota"
}, {
"help": "I2C Bus Parameters",
"hascb": true,
"argtable": [{
"datatype": "0|1",
"glossary": "Port",
"longopts": "port",
"shortopts": "p",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "int",
"glossary": "Frequency (Hz) e.g. 100000",
"longopts": "speed",
"shortopts": "f",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "SDA GPIO. e.g. 19",
"longopts": "sda",
"shortopts": "d",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "SCL GPIO. e.g. 18",
"longopts": "scl",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Load Existing Configuration",
"longopts": "load",
"shortopts": "l",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Clear configuration",
"longopts": "clear",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-l] [-p 0|1] [-f int] [-d <n>] [-c <n>] [--clear]",
"name": "cfg-hw-i2c"
}, {
"help": "SPI Bus Parameters",
"hascb": true,
"argtable": [{
"datatype": "<n>",
"glossary": "Data GPIO",
"longopts": "data",
"shortopts": "d",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Clock GPIO",
"longopts": "clk",
"shortopts": "k",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "DC GPIO",
"longopts": "dc",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "int",
"glossary": "SPI Host Number",
"longopts": "host",
"shortopts": "h",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Clear configuration",
"longopts": "clear",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-d <n>] [-k <n>] [-c <n>] [-h int] [--clear]",
"name": "cfg-hw-spi"
}, {
"help": "Scan I2C bus for devices",
"hascb": false,
"name": "i2cdetect"
}, {
"help": "Read registers visible through the I2C bus",
"hascb": false,
"argtable": [{
"datatype": "<chip_addr>",
"glossary": "Specify the address of the chip on that bus",
"longopts": "chip",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<register_addr>",
"glossary": "Specify the address on that chip to read from",
"longopts": "register",
"shortopts": "r",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<length>",
"glossary": "Specify the length to read from that data address",
"longopts": "length",
"shortopts": "l",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " -c <chip_addr> [-r <register_addr>] [-l <length>]",
"name": "i2cget"
}, {
"help": "Set registers visible through the I2C bus",
"hascb": false,
"argtable": [{
"datatype": "<chip_addr>",
"glossary": "Specify the address of the chip on that bus",
"longopts": "chip",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Specify the i2c port (0|2)",
"longopts": "port",
"shortopts": "p",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<register_addr>",
"glossary": "Specify the address on that chip to read from",
"longopts": "register",
"shortopts": "r",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<data>",
"glossary": "Specify the data to write to that data address",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 256
}],
"hint": " -c <chip_addr> [-p <n>] [-r <register_addr>] [<data>]...",
"name": "i2cset"
}, {
"help": "Examine registers visible through the I2C bus",
"hascb": false,
"argtable": [{
"datatype": "<chip_addr>",
"glossary": "Specify the address of the chip on that bus",
"longopts": "chip",
"shortopts": "c",
"checkbox": false,
"hasvalue": true,
"mincount": 1,
"maxcount": 1
}, {
"datatype": "<size>",
"glossary": "Specify the size of each read",
"longopts": "size",
"shortopts": "s",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " -c <chip_addr> [-s <size>]",
"name": "i2cdump"
}, {
"help": "Display",
"hascb": true,
"argtable": [{
"datatype": "<I2C|SPI>",
"glossary": "Interface (default I2C)",
"longopts": "type",
"shortopts": "t",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<SH1106|SSD1306|SSD1322|SSD1326|SSD1327|SSD1675|SSD1351|ST77xx|ILI9341|>",
"glossary": "Driver (default SSD1306)",
"longopts": "driver",
"shortopts": "d",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "I2C address (default 60)",
"longopts": "address",
"shortopts": "a",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Width",
"longopts": "width",
"shortopts": "w",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Height",
"longopts": "height",
"shortopts": "h",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Rotate 180 degrees",
"longopts": "rotate",
"shortopts": "r",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Flip horizontally",
"longopts": "hf",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "Flip vertically",
"longopts": "vf",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Bus Speed (Default 8000000 for SPI, 250000 for I2C). SPI interface can work up to 26MHz~40MHz",
"longopts": "speed",
"shortopts": "s",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"datatype": "<n>",
"glossary": "Backlight GPIO (if applicable)",
"longopts": "back",
"shortopts": "b",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}, {
"glossary": "clear configuration and return",
"longopts": "clear",
"checkbox": true,
"hasvalue": false,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-r] [-t <I2C|SPI>] [-d <SH1106|SSD1306|SSD1322|SSD1326|SSD1327|SSD1675|SSD1351|ST77xx|ILI9341|>] [-a <n>] [-w <n>] [-h <n>] [--hf] [--vf] [-s <n>] [-b <n>] [--clear]",
"name": "cfg-hw-display"
}, {
"help": "Shows display options and global i2c configuration",
"hascb": false,
"name": "getdisplay"
}, {
"help": "Stop the I2C bus",
"hascb": false,
"argtable": [{
"datatype": "<0|1>",
"glossary": "I2C bus port number",
"longopts": "port",
"shortopts": "p",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-p <0|1>]",
"name": "i2cstop"
}, {
"help": "Check if the I2C bus is installed",
"hascb": false,
"argtable": [{
"datatype": "<0|1>",
"glossary": "Set the I2C bus port number",
"longopts": "port",
"shortopts": "p",
"checkbox": false,
"hasvalue": true,
"mincount": 0,
"maxcount": 1
}],
"hint": " [-p <0|1>]",
"name": "i2ccheck"
}],
"values": {
"cfg-syst-squeezelite": {
"buffers": "500:2000",
"header_format": true,
"loglevel": "all=info",
"output_device": "I2S",
"name": "squeezelite",
"timeout": 30
},
"cfg-hw-dac": {
"model_name": "i2s"
},
"cfg-syst-services": {
"BT_Speaker": false,
"AirPlay": false,
"telnet": "Telnet and Serial",
"stats": true
},
"cfg-syst-name": {
"name": "\"squeezelite-test3\""
},
"cfg-hw-i2c": {
"freq": 400000
},
"cfg-hw-spi": {
},
"cfg-hw-display": {
"address": 0,
"width": 0,
"height": 0,
"driver": "SSD1306",
"hf": false,
"vf": false,
"rotate": false
}
}
}

View File

@@ -0,0 +1,343 @@
{
"gpio": [
{
"gpio": 33,
"name": "bck",
"group": "spdif",
"fixed": false
},
{
"gpio": 25,
"name": "ws",
"group": "spdif",
"fixed": false
},
{
"gpio": 15,
"name": "do",
"group": "spdif",
"fixed": false
},
{
"gpio": -1,
"name": "bck",
"group": "dac",
"fixed": false
},
{
"gpio": -1,
"name": "ws",
"group": "dac",
"fixed": false
},
{
"gpio": -1,
"name": "do",
"group": "dac",
"fixed": false
},
{
"gpio": -1,
"name": "sda",
"group": "dac",
"fixed": false
},
{
"gpio": -1,
"name": "scl",
"group": "dac",
"fixed": false
},
{
"gpio": -1,
"name": "mute",
"group": "dac",
"fixed": false
},
{
"gpio": 17,
"name": "clk",
"group": "psram",
"fixed": true
},
{
"gpio": 16,
"name": "cs",
"group": "psram",
"fixed": true
},
{
"gpio": 7,
"name": "spiq_sd0_io",
"group": "psram",
"fixed": true
},
{
"gpio": 8,
"name": "spid_sd1_io",
"group": "psram",
"fixed": true
},
{
"gpio": 10,
"name": "spiwp_sd3_io",
"group": "psram",
"fixed": true
},
{
"gpio": 9,
"name": "spihd_sd2_io",
"group": "psram",
"fixed": true
},
{
"gpio": 6,
"name": "clk",
"group": "flash",
"fixed": true
},
{
"gpio": 11,
"name": "cs",
"group": "flash",
"fixed": true
}
],
"config": {
"a2dp_sink_name": {
"type": 33,
"value": "SMSL BT4.2",
"chg": false
},
"a2dp_ctmt": {
"type": 33,
"value": "1000",
"chg": false
},
"a2dp_ctrld": {
"type": 33,
"value": "500",
"chg": false
},
"bt_sink_pin": {
"type": 33,
"value": "1234",
"chg": false
},
"release_url": {
"type": 33,
"value": "https://github.com/sle118/squeezelite-esp32/releases",
"chg": false
},
"ap_ip_address": {
"type": 33,
"value": "192.168.4.1",
"chg": false
},
"ap_ip_gateway": {
"type": 33,
"value": "192.168.4.1",
"chg": false
},
"ap_ip_netmask": {
"type": 33,
"value": "255.255.255.0",
"chg": false
},
"ap_channel": {
"type": 33,
"value": "1",
"chg": false
},
"ap_pwd": {
"type": 33,
"value": "squeezelite",
"chg": false
},
"airplay_port": {
"type": 33,
"value": "5000",
"chg": false
},
"bypass_wm": {
"type": 33,
"value": "0",
"chg": false
},
"actrls_config": {
"type": 33,
"value": "",
"chg": false
},
"lms_ctrls_raw": {
"type": 33,
"value": "n",
"chg": false
},
"rotary_config": {
"type": 33,
"value": "",
"chg": false
},
"ota_erase_blk": {
"type": 33,
"value": "249856",
"chg": false
},
"ota_stack": {
"type": 33,
"value": "10240",
"chg": false
},
"ota_prio": {
"type": 33,
"value": "6",
"chg": false
},
"display_config": {
"type": 33,
"value": "",
"chg": false
},
"i2c_config": {
"type": 33,
"value": "",
"chg": false
},
"spi_config": {
"type": 33,
"value": "",
"chg": false
},
"set_GPIO": {
"type": 33,
"value": "",
"chg": false
},
"led_brightness": {
"type": 33,
"value": "",
"chg": false
},
"dac_config": {
"type": 33,
"value": "",
"chg": false
},
"dac_controlset": {
"type": 33,
"value": "",
"chg": false
},
"jack_mutes_amp": {
"type": 33,
"value": "n",
"chg": false
},
"bat_config": {
"type": 33,
"value": "",
"chg": false
},
"metadata_config": {
"type": 33,
"value": "",
"chg": false
},
"telnet_buffer": {
"type": 33,
"value": "40000",
"chg": false
},
"telnet_block": {
"type": 33,
"value": "500",
"chg": false
},
"spdif_config": {
"type": 33,
"value": "bck=33,ws=25,do=15",
"chg": false
},
"enable_bt_sink": {
"type": 33,
"value": "N",
"chg": false
},
"enable_airplay": {
"type": 33,
"value": "N",
"chg": false
},
"wifi_smode": {
"type": 33,
"value": "a",
"chg": false
},
"disable_ps": {
"type": 33,
"value": "n",
"chg": false
},
"stats": {
"type": 33,
"value": "Y",
"chg": false
},
"autoexec": {
"type": 33,
"value": "1",
"chg": false
},
"autoexec1_spdif": {
"type": 33,
"value": "squeezelite -b 500:2000 -d all=info -C 30 -W -n \"squeezelite-test3\" -o SPDIF -Z 192000",
"chg": false
},
"autoexec1_i2s": {
"type": 33,
"value": "squeezelite -b 500:2000 -d all=info -C 30 -W -n \"squeezelite-test3\" -o I2S",
"chg": false
},
"autoexec1_bt": {
"type": 33,
"value": "squeezelite -b 500:2000 -d all=info -C 30 -W -n \"squeezelite-test3\" -o \"BT -n 'test'\" -Z 192000",
"chg": false
},
"autoexec1": {
"type": 33,
"value": "squeezelite -b 500:2000 -d all=info -C 30 -W -n \"squeezelite-test3\" -o \"BT -n 'test'\" -Z 192000",
"chg": false
},
"bt_name": {
"type": 33,
"value": "squeezelite-test3",
"chg": false
},
"host_name": {
"type": 33,
"value": "squeezelite-test3",
"chg": false
},
"airplay_name": {
"type": 33,
"value": "squeezelite-test3",
"chg": false
},
"ap_ssid": {
"type": 33,
"value": "squeezelite-test3",
"chg": false
},
"a2dp_dev_name": {
"type": 33,
"value": "squeezelite-test3",
"chg": false
},
"telnet_enable": {
"type": 33,
"value": "D",
"chg": false
}
}
}

View File

@@ -89,18 +89,18 @@ static const char redirect_payload3[]="'>here</a> to login.</p></body></html>";
* @see file "component.mk"
* @see https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html#embedding-binary-data
*/
extern const uint8_t style_css_start[] asm("_binary_style_css_start");
extern const uint8_t style_css_end[] asm("_binary_style_css_end");
extern const uint8_t jquery_gz_start[] asm("_binary_jquery_min_js_gz_start");
extern const uint8_t jquery_gz_end[] asm("_binary_jquery_min_js_gz_end");
extern const uint8_t popper_gz_start[] asm("_binary_popper_min_js_gz_start");
extern const uint8_t popper_gz_end[] asm("_binary_popper_min_js_gz_end");
extern const uint8_t bootstrap_js_gz_start[] asm("_binary_bootstrap_min_js_gz_start");
extern const uint8_t bootstrap_js_gz_end[] asm("_binary_bootstrap_min_js_gz_end");
extern const uint8_t bootstrap_css_gz_start[] asm("_binary_bootstrap_min_css_gz_start");
extern const uint8_t bootstrap_css_gz_end[] asm("_binary_bootstrap_min_css_gz_end");
extern const uint8_t code_js_start[] asm("_binary_code_js_start");
extern const uint8_t code_js_end[] asm("_binary_code_js_end");
extern const uint8_t style_css_start[] asm("_binary_style_css_gz_start");
extern const uint8_t style_css_end[] asm("_binary_style_css_gz_end");
extern const uint8_t jquery_gz_start[] asm("_binary_jquery_js_gz_start");
extern const uint8_t jquery_gz_end[] asm("_binary_jquery_js_gz_end");
// extern const uint8_t popper_gz_start[] asm("_binary_popper_min_js_gz_start");
// extern const uint8_t popper_gz_end[] asm("_binary_popper_min_js_gz_end");
extern const uint8_t bootstrap_js_gz_start[] asm("_binary_bootstrap_js_gz_start");
extern const uint8_t bootstrap_js_gz_end[] asm("_binary_bootstrap_js_gz_end");
extern const uint8_t bootstrap_css_gz_start[] asm("_binary_bootstrap_css_gz_start");
extern const uint8_t bootstrap_css_gz_end[] asm("_binary_bootstrap_css_gz_end");
extern const uint8_t code_js_start[] asm("_binary_code_js_gz_start");
extern const uint8_t code_js_end[] asm("_binary_code_js_gz_end");
extern const uint8_t index_html_start[] asm("_binary_index_html_start");
extern const uint8_t index_html_end[] asm("_binary_index_html_end");
extern const uint8_t favicon_ico_start[] asm("_binary_favicon_ico_start");
@@ -232,31 +232,31 @@ bool is_captive_portal_host_name(httpd_req_t *req){
/* Custom function to free context */
void free_ctx_func(void *ctx)
{
START_FREE_MEM_CHECK(ff);
session_context_t * context = (session_context_t *)ctx;
if(context){
ESP_LOGD(TAG, "Freeing up socket context");
FREE_AND_NULL(context->auth_token);
FREE_AND_NULL(context->sess_ip_address);
free(context);
CHECK_RESET_FREE_MEM_CHECK(ff,"free_ctx");
}
}
session_context_t* get_session_context(httpd_req_t *req){
START_FREE_MEM_CHECK(ff);
bool newConnection=false;
if (! req->sess_ctx) {
ESP_LOGD(TAG,"New connection context. Allocating session buffer");
req->sess_ctx = malloc(sizeof(session_context_t));
memset(req->sess_ctx,0x00,sizeof(session_context_t));
req->free_ctx = free_ctx_func;
newConnection = true;
// get the remote IP address only once per session
}
session_context_t *ctx_data = (session_context_t*)req->sess_ctx;
FREE_AND_NULL(ctx_data->sess_ip_address);
ctx_data->sess_ip_address = http_alloc_get_socket_address(req, 0, &ctx_data->port);
ESP_LOGD_LOC(TAG, "serving %s to peer %s port %u", req->uri, ctx_data->sess_ip_address , ctx_data->port);
CHECK_RESET_FREE_MEM_CHECK(ff,"get sess context");
if(newConnection){
ESP_LOGI(TAG, "serving %s to peer %s port %u", req->uri, ctx_data->sess_ip_address , ctx_data->port);
}
return (session_context_t *)req->sess_ctx;
}
@@ -408,11 +408,13 @@ esp_err_t resource_filehandler(httpd_req_t *req){
}
if(strstr(filename, "code.js")) {
const size_t file_size = (code_js_end - code_js_start);
set_content_type_from_file(req, filename);
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
const size_t file_size = (code_js_end - code_js_start);
httpd_resp_send(req, (const char *)code_js_start, file_size);
} else if(strstr(filename, "style.css")) {
set_content_type_from_file(req, filename);
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
const size_t file_size = (style_css_end - style_css_start);
httpd_resp_send(req, (const char *)style_css_start, file_size);
} else if(strstr(filename, "favicon.ico")) {
@@ -424,11 +426,11 @@ esp_err_t resource_filehandler(httpd_req_t *req){
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
const size_t file_size = (jquery_gz_end - jquery_gz_start);
httpd_resp_send(req, (const char *)jquery_gz_start, file_size);
} else if(strstr(filename, "popper.js")) {
set_content_type_from_file(req, filename);
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
const size_t file_size = (popper_gz_end - popper_gz_start);
httpd_resp_send(req, (const char *)popper_gz_start, file_size);
// } else if(strstr(filename, "popper.js")) {
// set_content_type_from_file(req, filename);
// httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
// const size_t file_size = (popper_gz_end - popper_gz_start);
// httpd_resp_send(req, (const char *)popper_gz_start, file_size);
} else if(strstr(filename, "bootstrap.js")) {
set_content_type_from_file(req, filename);
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
@@ -487,7 +489,8 @@ esp_err_t console_cmd_get_handler(httpd_req_t *req){
return err;
}
esp_err_t console_cmd_post_handler(httpd_req_t *req){
char success[]="{}";
char success[]="{\"Result\" : \"Success\" }";
char failed[]="{\"Result\" : \"Failed\" }";
ESP_LOGD_LOC(TAG, "serving [%s]", req->uri);
//bool bOTA=false;
//char * otaURL=NULL;
@@ -522,14 +525,18 @@ esp_err_t console_cmd_post_handler(httpd_req_t *req){
ESP_LOGE_LOC(TAG, "Command not found. Received content was: %s",command);
httpd_resp_send_err(req, HTTPD_400_BAD_REQUEST, "Malformed command json. Unable to parse content.");
err = ESP_FAIL;
}
else{
// navigate to the first child of the config structure
run_command(cJSON_GetStringValue(item));
if(run_command(cJSON_GetStringValue(item))!=ESP_OK){
httpd_resp_send(req, (const char *)failed, strlen(failed));
}
else {
httpd_resp_send(req, (const char *)success, strlen(success));
}
}
httpd_resp_send(req, (const char *)success, strlen(success));
ESP_LOGD_LOC(TAG, "done serving [%s]", req->uri);
return err;
}
@@ -1041,7 +1048,11 @@ esp_err_t redirect_processor(httpd_req_t *req, httpd_err_code_t error){
bool connected_to_sta_ip_interface = false;
bool useragentiscaptivenetwork = false;
ESP_LOGW_LOC(TAG, "Invalid URL requested: [%s]", req->uri);
in_port_t port=0;
ESP_LOGV_LOC(TAG, "Getting remote socket address");
remote_ip = http_alloc_get_socket_address(req,0, &port);
ESP_LOGW_LOC(TAG, "%s requested invalid URL: [%s]",remote_ip, req->uri);
if(wifi_manager_lock_sta_ip_string(portMAX_DELAY)){
sta_ip_address = strdup(wifi_manager_get_sta_ip_string());
wifi_manager_unlock_sta_ip_string();
@@ -1051,9 +1062,6 @@ esp_err_t redirect_processor(httpd_req_t *req, httpd_err_code_t error){
httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR , NULL);
}
in_port_t port=0;
ESP_LOGV_LOC(TAG, "Getting remote socket address");
remote_ip = http_alloc_get_socket_address(req,0, &port);
ESP_LOGV_LOC(TAG, "Getting host name from request");
char *req_host = alloc_get_http_header(req, "Host");
@@ -1128,34 +1136,24 @@ esp_err_t redirect_ev_handler(httpd_req_t *req){
esp_err_t messages_get_handler(httpd_req_t *req){
ESP_LOGD_LOC(TAG, "serving [%s]", req->uri);
START_FREE_MEM_CHECK(before);
START_FREE_MEM_CHECK(all);
if(!is_user_authenticated(req)){
// todo: redirect to login page
// return ESP_OK;
}
CHECK_RESET_FREE_MEM_CHECK(before, "after user auth");
esp_err_t err = set_content_type_from_req(req);
if(err != ESP_OK){
return err;
}
CHECK_RESET_FREE_MEM_CHECK(before, "after set_content_type");
cJSON * json_messages= messaging_retrieve_messages(messaging);
CHECK_RESET_FREE_MEM_CHECK(before, "after receiving messages");
if(json_messages!=NULL){
char * json_text= cJSON_Print(json_messages);
CHECK_RESET_FREE_MEM_CHECK(before, "after json print");
httpd_resp_send(req, (const char *)json_text, strlen(json_text));
CHECK_RESET_FREE_MEM_CHECK(before, "after http send");
free(json_text);
CHECK_RESET_FREE_MEM_CHECK(before, "after free json message");
cJSON_Delete(json_messages);
CHECK_RESET_FREE_MEM_CHECK(before, "after free json");
}
else {
httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR , "Unable to retrieve messages");
}
CHECK_RESET_FREE_MEM_CHECK(all, "before returning");
return ESP_OK;
}

View File

@@ -4,11 +4,11 @@
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="shortcut icon" type="image/x-icon" href="/res/favicon.ico">
<link rel="stylesheet" href="/res/bootstrap.css">
<link rel="stylesheet" href="/res/style.css">
<script src="/res/jquery.js"></script>
<script src="/res/popper.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="/res/favicon.ico">
<link rel="stylesheet" href="/res/style.css">
<!-- <script src="/res/popper.js"></script> -->
<script src="/res/bootstrap.js"></script>
<script src="/res/code.js"></script>
<title>esp32-wifi-manager</title>
@@ -52,36 +52,28 @@
<path d="M19 8v8h-17v-8h17zm2-2h-21v12h21v-12zm1 9h.75c.69 0 1.25-.56 1.25-1.25v-3.5c0-.69-.56-1.25-1.25-1.25h-.75v6zm-16-6h-3v6h3v-6zm4 0h-3v6h3v-6zm4 0h-3v6h3v-6zm4 0h-3v6h3v-6z"/>
</g>
</svg>
</div>
<ul id="navbar" class="nav nav-tabs">
<ul class="nav nav-tabs bg-primary" id="mainnav">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#tab-wifi">WiFi</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-audio">Audio + LMS</a>
</li>
<a class="nav-link" data-toggle="tab" href="#tab-configuration">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-firmware">Firmware</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-setdisplay">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-syslog">Status</a>
<a class="nav-link" data-toggle="tab" href="#tab-syslog">Status<span class="badge badge-success badge-pill" id="msgcnt"></span></a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-commands">Advanced</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-nvs">NVS editor</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-credits">Credits</a>
</li>
</ul>
<div id="message"></div>
<div id="content">
<div id="myTabContent" class="tab-content">
<div id="content" >
<div id="myTabContent" class="tab-content mt-3">
<div class="tab-pane fade active show" id="tab-wifi">
<div id="wifi">
<div id="wifi-status">
@@ -205,119 +197,154 @@
</div>
</div>
</div>
<!-- wifi -->
<div class="tab-pane fade" id="tab-setdisplay">
<div id="set_services-list"></div>
<div id="setname-list"></div>
<div id="setdisplay-list"></div>
<div id="i2cconfig-list"></div>
<div id="spiconfig-list"></div>
</div>
<!-- display -->
<div class="tab-pane fade" id="tab-audio">
<div id="audioout">
<h1>Audio output</h1>
<div class="form-group">
<div class="custom-control custom-radio">
<input type="radio" id="i2s" name="audio" class="custom-control-input" checked='checked' />
<label for="i2s" class="custom-control-label">I2S</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="spdif" name="audio" class="custom-control-input" />
<label for="spdif" class="custom-control-label">SPDIF</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="bt" name="audio" class="custom-control-input" />
<label for="bt" class="custom-control-label">Bluetooth</label>
</div>
<!-- Config -->
<div class="tab-pane fade mt-2" id="tab-configuration">
<ul class="nav nav-tabs bg-info" name="secnav">
<li class="nav-link" style="padding: inherit; border: none;">
<a class="nav-link active" data-toggle="tab" href="#tab-audio">Audio + LMS</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-cfg-syst">System</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-cfg-hw" >Hardware</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-cfg-fw" >Updates</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#tab-nvs">NVS editor</a>
</li>
</ul>
<div id="myTabContent2" class="tab-content mt-3">
<div class="tab-pane fade" id="tab-cfg-hw"></div>
<div class="tab-pane fade" id="tab-cfg-syst"></div>
<div class="tab-pane fade" id="tab-cfg-gen"></div>
<div class="tab-pane fade" id="tab-cfg-fw">
<div id="boot-div">
<form id="boot-form" action="/recovery.json" method="post" target="dummyframe">
<button id="boot-button" type="submit" class="btn btn-primary">Recovery</button>
</form>
</div>
<h1>Check for firmware upgrade</h1>
<div class="buttons">
<input type="button" id="fwcheck" class="btn btn-info" value="Check for updates" />
</div>
<div id="searchfw" class="form-group">
<select class="custom-select" id="fwbranch">
<option selected="">Choose FW branch</option>
</select>
<input class="form-control form-control-sm" id="searchinput" type="text" placeholder="search releases" id="inputSmall">
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Firmware version</th>
<th scope="col">Release date</th>
<th scope="col">HW platform</th>
<th scope="col">IDF version</th>
<th scope="col">Branch</th>
<th scope="col">Flash this FW</th>
</tr>
</thead>
<tbody id="releaseTable">
</tbody>
</table>
<h2>Firmware URL:</h2>
<textarea id="fwurl" maxlength="1000"></textarea>
<div class="buttons">
<input type="button" id="flash" class="btn btn-danger" value="Flash!" /><span id="flash-status"></span>
</div>
<p>OR</p>
<div class="form-group">
<input type="file" class="form-control-file" id="flashfilename" aria-describedby="fileHelp">
<div class="buttons">
<button type="button" class="btn btn-danger" id="fwUpload">Upload!</button>
</div>
</div>
<div id="otadiv">
<div class="progress" id="progress">
<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:0%">
0%
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="tab-nvs">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Key</th>
<th scope="col">Value</th>
</tr>
</thead>
<tbody id="nvsTable">
</tbody>
</table>
<div class="buttons">
<div id="boot-div">
<form id="reboot-form" action="/reboot.json" method="post" target="dummyframe">
<button id="reboot-button" type="submit" class="btn btn-primary">Reboot</button>
</form>
</div>
<input id="save-nvs" type="button" class="btn btn-success" value="Commit">
<input id="save-as-nvs" type="button" class="btn btn-success" value="Download config">
<input id="load-nvs" type="button" class="btn btn-success" value="Load File">
<input aria-describedby="fileHelp" onchange="onChooseFile(event, onFileLoad.bind(this))" id="nvsfilename" type="file" style="display:none">
</div>
</div>
</div>
<div id="btsinkdiv">
<input id="btsink" type="text" value="BT sink name" />
</div>
<div>
<h1>Player name</h1>
<input id="player" type="text" value="squeezelite" />
</div>
<div>
<h1>Optional setting (e.g. for LMS IP address)</h1>
<input id="optional" type="text" value="" placeholder="-s 192.168.0.1" />
</div>
<div class="buttons">
<input id="generate-command" type="button" class="btn btn-success" value="Generate" />
</div>
<h1>Squeezelite command to run</h1>
<section id="command-list">
<textarea id="autoexec1" maxlength="120">squeezelite -o I2S -b 500:2000 -d all=info -C 30 - W</textarea>
</section>
<div class="buttons">
<input id="save-autoexec1" type="button" class="btn btn-success" value="Save" />
</div>
<h1>Start Squeezelite (toggle to activate changes)</h1>
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="autoexec-cb" checked="checked">
<label class="custom-control-label" for="autoexec-cb"></label>
</div>
<br />
</div>
<!-- audio -->
<div class="tab-pane fade" id="tab-firmware">
<div id="boot-div">
<form id="boot-form" action="/recovery.json" method="post" target="dummyframe">
<button id="boot-button" type="submit" class="btn btn-primary">Recovery</button>
</form>
</div>
<h1>Check for firmware upgrade</h1>
<div class="buttons">
<input type="button" id="fwcheck" class="btn btn-info" value="Check for updates" />
</div>
<div id="searchfw" class="form-group">
<select class="custom-select" id="fwbranch">
<option selected="">Choose FW branch</option>
</select>
<input class="form-control form-control-sm" id="searchinput" type="text" placeholder="search releases" id="inputSmall">
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Firmware version</th>
<th scope="col">Release date</th>
<th scope="col">HW platform</th>
<th scope="col">IDF version</th>
<th scope="col">Branch</th>
<th scope="col">Flash this FW</th>
</tr>
</thead>
<tbody id="releaseTable">
</tbody>
</table>
<h2>Firmware URL:</h2>
<textarea id="fwurl" maxlength="1000"></textarea>
<div class="buttons">
<input type="button" id="flash" class="btn btn-danger" value="Flash!" /><span id="flash-status"></span>
</div>
<p>OR</p>
<div class="form-group">
<input type="file" class="form-control-file" id="flashfilename" aria-describedby="fileHelp">
<div class="buttons">
<button type="button" class="btn btn-danger" id="fwUpload">Upload!</button>
</div>
</div>
<div id="otadiv">
<div class="progress" id="progress">
<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:0%">
0%
<div class="tab-pane fade active show" id="tab-audio">
<div class="card text-white bg-primary mb-3">
<div class="card-header">Command Line Templates</div>
<div class="card-body">
<fieldset >
<fieldset class="form-group" id="output-tmpl">
<legend>Audio Output</legend>
<div class="form-check">
<label class="form-check-label">
<input type="radio" class="form-check-input" name="output-tmpl" id="i2s" >
I2S Dac
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input type="radio" class="form-check-input" name="output-tmpl" id="spdif" >
SPDIF
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input type="radio" class="form-check-input" name="output-tmpl" id="bt" >
Bluetooth
</label>
</div>
</fieldset>
<div class="form-group"><label for="player">Player Name</label><input type="text" class="form-control " placeholder="Squeezelite" id="player" ></div>
<div class="form-group" style="display: none;"><label for="btsinkdiv">Bluetooth Speaker Name To Connect To</label><input type="text" class="form-control" id="btsinkdiv" ></div>
<div class="form-group"><label for="optional">Optional setting (e.g. for LMS IP address)</label><input type="text" class="form-control" id="optional" ></div>
<div class="form-group"><div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" id="disable-squeezelite" value="" checked="" >
Disable Squeezelite
</label>
</div></div>
<div class="toast show" role="alert" aria-live="assertive" aria-atomic="true" style="display: none;" id="toast_cfg-audio-tmpl"><div class="toast-header"><strong class="mr-auto">Result</strong><button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close" onclick="$(this).parent().parent().hide()"><span aria-hidden="true">×</span></button></div><div class="toast-body" id="msg_cfg-audio-tmpl"></div></div>
<button id="save-autoexec1" type="submit" class="btn btn-info" cmdname="cfg-audio-tmpl" onclick="save_autoexec1(false)">Save</button>
<button id="commit-autoexec1" type="submit" class="btn btn-warning" cmdname="cfg-audio-tmpl" onclick="save_autoexec1(true)">Apply</button>
</fieldset>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- firmware -->
<div class="tab-pane fade" id="tab-commands">
</div>
<div class="tab-pane fade " id="tab-commands">
<fieldset id="commands-list"></fieldset>
</div>
<!-- Status -->
<div class="tab-pane fade" id="tab-syslog">
<div class="card border-primary mb-3" style="">
<div class="tab-pane fade " id="tab-syslog">
<div class="card border-primary mb-3" >
<div class="card-header">Logs</div>
<div class="card-body">
<table class="table table-hover">
@@ -333,40 +360,24 @@
<div class="buttons">
<input id="clear-syslog" type="button" class="btn btn-danger btn-sm" value="Clear" />
</div></div></div>
<div class="card border-primary mb-3" style="">
<div class="card border-primary mb-3">
<div class="card-header">Pin Assignments</div>
<div class="card-body">
<table class="table table-hover">
<thead><tr><th scope="col">Device</th><th scope="col">Pin Name</th><th scope="col">GPIO Number</th><th scope="col">Type</th></tr></thead>
<tbody id="gpiotable"></tbody></table></div></div></div>
<!-- syslog -->
<div class="tab-pane fade" id="tab-nvs">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Key</th>
<th scope="col">Value</th>
</tr>
</thead>
<tbody id="nvsTable">
</tbody>
</table>
<div class="buttons">
<div id="boot-div">
<form id="reboot-form" action="/reboot.json" method="post" target="dummyframe">
<button id="reboot-button" type="submit" class="btn btn-primary">Reboot</button>
</form>
</div>
<input id="save-nvs" type="button" class="btn btn-success" value="Commit">
<input id="save-as-nvs" type="button" class="btn btn-success" value="Download config">
<input id="load-nvs" type="button" class="btn btn-success" value="Load File">
<input aria-describedby="fileHelp" onchange="onChooseFile(event, onFileLoad.bind(this))" id="nvsfilename" type="file" style="display:none">
<tbody id="gpiotable"></tbody></table></div></div>
<div class="card border-primary mb-3" style="visibility: collapse;" id="tasks_sect">
<div class="card-header">Tasks</div>
<div class="card-body">
<table class="table table-hover">
<!-- console.log(msg_time.toLocaleString() + '\tname' + '\tcpu' + '\tstate' + '\tminstk' + '\tbprio' + '\tcprio' + '\tnum'); -->
<thead><tr><th scope="col">#</th><th scope="col">Task Name</th><th scope="col">CPU</th><th scope="col">State</th><th scope="col">Min Stack</th><th scope="col">Base Priority</th><th scope="col">Cur Priority</th></tr></thead>
<tbody id="tasks"></tbody></table></div></div>
</div>
</div>
<!-- nvs -->
<div class="tab-pane fade" id="tab-credits">
<!-- syslog -->
<div class="tab-pane fade " id="tab-credits">
<div class="jumbotron">
<p><strong><a href="https://github.com/sle118/squeezelite-esp32">squeezelite-esp32</a></strong>, &copy; 2020, philippe44, sle118, daduke<br />Licensed under the GPL</p>
<p><strong><a href="https://github.com/sle118/squeezelite-esp32">squeezelite-esp32</a></strong>, &copy; 2020, philippe44, sle118, daduke<br /><a href="https://opensource.org/licenses/MIT">This software is released under the MIT License.</a></p>
<p>
This app would not be possible without the following libraries:
</p>
@@ -393,7 +404,10 @@
</div>
<!-- credits -->
</div>
<footer class="footer"><span id="foot-fw"></span><span id="foot-wifi"></span></footer>
<footer class="footer">
<button class="btn-warning" id="reboot_nav" type="submit" onclick="$('#reboot_nav').removeClass('active'); delay_reboot(500,'', false);" style="display: none;">Reboot</button>
<button class="btn-danger" id="reboot_ota_nav" type="submit" onclick="$('#reboot_ota_nav').removeClass('active'); delay_reboot(500,'', true);" style="display: none;">Exit Recovery</button><br>
<span id="foot-fw"></span><span id="foot-wifi"></span></footer>
<iframe width="0" height="0" border="0" name="dummyframe" id="dummyframe"></iframe>
</div>
</body>

File diff suppressed because one or more lines are too long

View File

@@ -1,29 +0,0 @@
/*
Copyright (c) 2017-2019 Tony Pottier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@file main.c
@author Tony Pottier
@brief Entry point for the ESP32 application.
@see https://idyl.io
@see https://github.com/tonyp7/esp32-wifi-manager
*/

View File

@@ -0,0 +1,56 @@
[{
"message": "{\"free_iram\":190232,\"min_free_iram\":184520,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":3468,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":2,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 61257,
"current_time": 147316
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":3468,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 71255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 81256,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 91255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 101255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":98,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 111255,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 121256,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183872,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 131255,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183872,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 141256,
"current_time": 147319
}
]

View File

@@ -0,0 +1,90 @@
[{
"message": "{\"free_iram\":190232,\"min_free_iram\":184520,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":3468,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":2,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 61257,
"current_time": 147316
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":3468,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 71255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 81256,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 91255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 101255,
"current_time": 147317
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":98,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 111255,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183992,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 121256,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183872,\"free_spiram\":4048488,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 131255,
"current_time": 147318
}, {
"message": "{\"free_iram\":190232,\"min_free_iram\":183872,\"free_spiram\":4048492,\"min_free_spiram\":4026220,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":400,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":97,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":1580,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":0,\"minstk\":708,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":3436,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 141256,
"current_time": 147319
},
{
"message": "Info Message",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_SYSTEM",
"sent_time": 3519,
"current_time": 24674
},
{
"message": "Warning Message",
"type": "MESSAGING_WARNING",
"class": "MESSAGING_CLASS_SYSTEM",
"sent_time": 3519,
"current_time": 24674
},
{
"message": "Warning Message",
"type": "MESSAGING_ERROR",
"class": "MESSAGING_CLASS_SYSTEM",
"sent_time": 3519,
"current_time": 24674
},
{
"message": "{\"free_iram\":194144,\"min_free_iram\":185048,\"free_spiram\":4061372,\"min_free_spiram\":4050012,\"ntasks\":13,\"tasks\":[]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 11201,
"current_time": 24674
}, {
"message": "{\"free_iram\":193848,\"min_free_iram\":185048,\"free_spiram\":4049576,\"min_free_spiram\":4049576,\"ntasks\":13,\"tasks\":[{\"cpu\":0,\"minstk\":480,\"bprio\":1,\"cprio\":1,\"nme\":\"Tmr Svc\",\"st\":1,\"num\":8},{\"cpu\":99,\"minstk\":1000,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE1\",\"st\":1,\"num\":7},{\"cpu\":98,\"minstk\":992,\"bprio\":0,\"cprio\":0,\"nme\":\"IDLE0\",\"st\":1,\"num\":6},{\"cpu\":0,\"minstk\":2184,\"bprio\":18,\"cprio\":18,\"nme\":\"tiT\",\"st\":2,\"num\":12},{\"cpu\":0,\"minstk\":1948,\"bprio\":5,\"cprio\":5,\"nme\":\"console\",\"st\":2,\"num\":18},{\"cpu\":0,\"minstk\":528,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc0\",\"st\":2,\"num\":2},{\"cpu\":0,\"minstk\":676,\"bprio\":20,\"cprio\":20,\"nme\":\"sys_evt\",\"st\":2,\"num\":13},{\"cpu\":0,\"minstk\":2096,\"bprio\":5,\"cprio\":5,\"nme\":\"wifi_manager\",\"st\":2,\"num\":15},{\"cpu\":0,\"minstk\":3468,\"bprio\":22,\"cprio\":22,\"nme\":\"esp_timer\",\"st\":2,\"num\":1},{\"cpu\":0,\"minstk\":2524,\"bprio\":5,\"cprio\":5,\"nme\":\"httpd\",\"st\":2,\"num\":16},{\"cpu\":1,\"minstk\":868,\"bprio\":23,\"cprio\":23,\"nme\":\"wifi\",\"st\":2,\"num\":14},{\"cpu\":0,\"minstk\":536,\"bprio\":24,\"cprio\":24,\"nme\":\"ipc1\",\"st\":2,\"num\":3},{\"cpu\":0,\"minstk\":7244,\"bprio\":1,\"cprio\":1,\"nme\":\"telnet\",\"st\":2,\"num\":17}]}",
"type": "MESSAGING_INFO",
"class": "MESSAGING_CLASS_STATS",
"sent_time": 21267,
"current_time": 24674
}
]

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

2
components/wifi-manager/res/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
{}

View File

@@ -1 +0,0 @@
{"ssid":"zodmgbbq","ip":"192.168.1.119","netmask":"255.255.255.0","gw":"192.168.1.1","urc":0}

View File

@@ -0,0 +1 @@
{"project_name":"recovery","version":"custom.build","recovery":1,"Jack":"1","Voltage":0,"disconnect_count":0,"avg_conn_time":0,"is_i2c_locked":false,"urc":0,"ssid":"Abyssin","ip":"192.168.10.225","netmask":"255.255.255.0","gw":"192.168.10.1"}

View File

@@ -0,0 +1,15 @@
{
"project_name": "recovery",
"version": "custom.build",
"recovery": 1,
"Jack": "1",
"Voltage": 0,
"disconnect_count": 0,
"avg_conn_time": 0,
"is_i2c_locked": false,
"urc": 0,
"ssid": "MyTestSSID",
"ip": "192.168.10.225",
"netmask": "255.255.255.0",
"gw": "192.168.10.1"
}

View File

@@ -459,6 +459,7 @@ cJSON * wifi_manager_get_new_array_json(cJSON **old){
return cJSON_CreateArray();
}
cJSON * wifi_manager_get_basic_info(cJSON **old){
monitor_gpio_t *mgpio= get_jack_insertion_gpio();
const esp_app_desc_t* desc = esp_ota_get_app_description();
ESP_LOGV(TAG, "wifi_manager_get_basic_info called");
cJSON *root = wifi_manager_get_new_json(old);
@@ -466,7 +467,7 @@ cJSON * wifi_manager_get_basic_info(cJSON **old){
cJSON_AddItemToObject(root, "version", cJSON_CreateString(desc->version));
if(release_url !=NULL) cJSON_AddItemToObject(root, "release_url", cJSON_CreateString(release_url));
cJSON_AddNumberToObject(root,"recovery", is_recovery_running?1:0);
cJSON_AddItemToObject(root, "Jack", cJSON_CreateString(jack_inserted_svc() ? "1" : "0"));
cJSON_AddItemToObject(root, "Jack", cJSON_CreateString(mgpio->gpio>=0 && jack_inserted_svc() ? "1" : "0"));
cJSON_AddNumberToObject(root,"Voltage", battery_value_svc());
cJSON_AddNumberToObject(root,"disconnect_count", num_disconnect );
cJSON_AddNumberToObject(root,"avg_conn_time", num_disconnect>0?(total_connected_time/num_disconnect):0 );