change to better UI and get information directly from .h file

This commit is contained in:
Gregor 2019-07-19 21:24:22 +02:00
parent dd1f875283
commit 5fafa6378c
5 changed files with 160 additions and 65 deletions

3
.gitignore vendored
View File

@ -6,6 +6,7 @@ local/
user_config.h
server-ca.crt
luac.cross
luac.cross.int
uz_unzip
uz_zip
tools/toolchains/
@ -15,4 +16,6 @@ tools/toolchains/
.project
.settings/
.vscode
#ignore temp file for build infos
buildinfo.h

View File

@ -120,24 +120,87 @@ static int node_sleep( lua_State* L )
#endif //PMSLEEP_ENABLE
static int node_info( lua_State* L )
{
lua_pushinteger(L, NODE_VERSION_MAJOR);
lua_pushinteger(L, NODE_VERSION_MINOR);
lua_pushinteger(L, NODE_VERSION_REVISION);
lua_pushinteger(L, system_get_chip_id()); // chip id
lua_pushinteger(L, spi_flash_get_id()); // flash id
lua_pushinteger(L, flash_rom_get_size_byte() / 1024); // flash size in KB
lua_pushinteger(L, flash_rom_get_mode());
lua_pushinteger(L, flash_rom_get_speed());
lua_pushstring(L, BUILDINFO_BRANCH);
lua_pushstring(L, BUILDINFO_COMMIT_ID);
lua_pushstring(L, BUILDINFO_RELEASE);
lua_pushstring(L, BUILDINFO_RELEASE_DTS);
lua_pushboolean(L, BUILDINFO_SSL);
lua_pushstring(L, BUILDINFO_LFS);
lua_pushstring(L, BUILDINFO_MODULES);
lua_pushstring(L, BUILDINFO_BUILD_TYPE);
const char* options[] = {"hw", "sw_version", "build_config", "legacy", NULL};
int option = luaL_checkoption (L, 1, options[3], options);
return 16;
switch (option) {
case 0: { // hw
lua_createtable (L, 0, 5);
int table_index = lua_gettop(L);
lua_pushliteral(L, "chip_id");
lua_pushinteger(L, system_get_chip_id()); // chip id
lua_settable(L, table_index);
lua_pushliteral(L, "flash_id");
lua_pushinteger(L, spi_flash_get_id()); // flash id
lua_settable(L, table_index);
lua_pushliteral(L, "flash_size");
lua_pushinteger(L, flash_rom_get_size_byte() / 1024); // flash size in KB
lua_settable(L, table_index);
lua_pushliteral(L, "flash_mode");
lua_pushinteger(L, flash_rom_get_mode());
lua_settable(L, table_index);
lua_pushliteral(L, "flash_speed");
lua_pushinteger(L, flash_rom_get_speed());
lua_settable(L, table_index);
return 1;
}
case 1: { // sw_version
lua_createtable (L, 0, 7);
int table_index = lua_gettop(L);
lua_pushliteral(L, "node_version_major");
lua_pushinteger(L, NODE_VERSION_MAJOR);
lua_settable(L, table_index);
lua_pushliteral(L, "node_version_minor");
lua_pushinteger(L, NODE_VERSION_MINOR);
lua_settable(L, table_index);
lua_pushliteral(L, "node_version_revision");
lua_pushinteger(L, NODE_VERSION_REVISION);
lua_settable(L, table_index);
lua_pushliteral(L, "git_branch");
lua_pushstring(L, BUILDINFO_BRANCH);
lua_settable(L, table_index);
lua_pushliteral(L, "git_commit_id");
lua_pushstring(L, BUILDINFO_COMMIT_ID);
lua_settable(L, table_index);
lua_pushliteral(L, "git_release");
lua_pushstring(L, BUILDINFO_RELEASE);
lua_settable(L, table_index);
lua_pushliteral(L, "git_commit_dts");
lua_pushstring(L, BUILDINFO_RELEASE_DTS);
lua_settable(L, table_index);
return 1;
}
case 2: { // build_config
lua_createtable (L, 0, 4);
int table_index = lua_gettop(L);
lua_pushliteral(L, "ssl");
lua_pushboolean(L, BUILDINFO_SSL);
lua_settable(L, table_index);
lua_pushliteral(L, "lfs_size");
lua_pushnumber(L, BUILDINFO_LFS);
lua_settable(L, table_index);
lua_pushliteral(L, "modules");
lua_pushstring(L, BUILDINFO_MODULES);
lua_settable(L, table_index);
lua_pushliteral(L, "number_type");
lua_pushstring(L, BUILDINFO_BUILD_TYPE);
lua_settable(L, table_index);
return 1;
}
default:
{
platform_print_deprecation_note("node.info() without parameter", "in the next version");
lua_pushinteger(L, NODE_VERSION_MAJOR);
lua_pushinteger(L, NODE_VERSION_MINOR);
lua_pushinteger(L, NODE_VERSION_REVISION);
lua_pushinteger(L, system_get_chip_id()); // chip id
lua_pushinteger(L, spi_flash_get_id()); // flash id
lua_pushinteger(L, flash_rom_get_size_byte() / 1024); // flash size in KB
lua_pushinteger(L, flash_rom_get_mode());
lua_pushinteger(L, flash_rom_get_speed());
return 8;
}
}
}
// Lua: chipid()

View File

@ -103,7 +103,7 @@ extern void _ResetHandler(void);
* the use of a partition table (PT) to control flash allocation. The NodeMCU uses
* this PT for overall allocation of its flash resources. The non_OS SDK calls the
* user_pre_init() entry to do all of this startup configuration. Note that this
* runs with Icache enabled -- that is the IROM0 partition is already mapped the
* runs with Icache enabled -- that is the IROM0 partition is already mapped to the
* address space at 0x40210000 and so that most SDK services are available, such
* as system_get_flash_size_map() which returns the valid flash size (including the
* 8Mb and 16Mb variants).

View File

@ -276,32 +276,50 @@ system heap size left in bytes (number)
## node.info()
Returns NodeMCU version, chipid, flashid, flash size, flash mode, flash speed, branch, git commit_id, release, release_dts, ssl, lfs info, modules and the build_type.
Returns information about hardware, software version and build configuration.
#### Syntax
`node.info()`
`node.info([kind])`
#### Parameters
none
`kind` kind of information (optional, if ommited return legacy information). May be one of `"hw"`, `"sw_version"`, `"build_config"`.
#### Returns
- `majorVer` (number)
- `minorVer` (number)
- `devVer` (number)
- `chipid` (number)
- `flashid` (number)
- `flashsize` (number)
- `flashmode` (number)
- `flashspeed` (number)
- `branch` (string)
- `git commit_id` (string)
- `release` (string) Release name +additional commits e.g. "2.0.0-master_20170202 +403"
- `release_dts` (string) in an ordering format. e.g. "201908111200"
- `ssl` (boolean)
- `lfs info` (string) "disabled" or "Size: {whatever is in user_config.h}"
- `modules` (string) comma separated list
- `build_type` (string) `integer` or `float`
if a `kind` is given the return value will be a table containing the following elements:
- for `kind` = `"hw"`
- `chip_id` (number)
- `flash_id` (number)
- `flash_size` (number)
- `flash_mode` (number) QIO = 0, QOUT = 1, DIO = 2, DOUT = 15.
- `flash_speed` (number)
- for `kind` = `"sw_version"`
- `git_branch` (string)
- `git_commit_id` (string)
- `git_release` (string) Release name +additional commits e.g. "2.0.0-master_20170202 +403"
- `git_commit_dts` (string) in an ordering format. e.g. "201908111200"
- `node_verion_major` (number)
- `node_verion_minor` (number)
- `node_verion_revision` (number)
- for `kind` = `"build_config"`
- `ssl` (boolean)
- `lfs_size` (number) as defined at build time
- `modules` (string) comma separated list
- `number_type` (string) `integer` or `float`
!!! attention
This interface is deprecated and will be removed in one of the next releases. Use the above calls instead.
- for no `kind` given: --deprecated
- `majorVer` (number)
- `minorVer` (number)
- `devVer` (number)
- `chipid` (number)
- `flashid` (number)
- `flashsize` (number)
- `flashmode` (number)
- `flashspeed` (number)
#### Example
```lua
@ -309,6 +327,17 @@ majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed =
print("NodeMCU "..majorVer.."."..minorVer.."."..devVer)
```
```lua
for k,v in pairs(node.info("build_config")) do
print (k,v)
end
```
```lua
print(node.info("sw_version").git_release)
```
## node.input()
Submits a string to the Lua interpreter. Similar to `pcall(loadstring(str))`, but without the single-line limitation.

View File

@ -9,28 +9,6 @@ BRANCH="$(git rev-parse --abbrev-ref HEAD | sed -r 's/[\/\\]+/_/g')"
RELEASE="$(git describe --tags --long | sed -r 's/(.*)-(.*)-.*/\1 +\2/g' | sed 's/ +0$//')"
RELEASE_DTS=$(git show -s --format=%cd --date=format:"%Y%m%d%H%M" HEAD)
# figure out whether SSL is enabled in user_config.h
if grep -Eq "^#define CLIENT_SSL_ENABLE" $USER_CONFIG_H; then
SSL="true"
else
SSL="false"
fi
# figure out whether LFS configuration in user_config.h
LFS=$(grep "^#define LUA_FLASH_STORE" $USER_CONFIG_H | tr -d '\r' | cut -d ' ' -f 3-)
if [ -z "$LFS" ]; then
LFS="disabled"
else
LFS="Size: ${LFS}"
fi
# figure out whether Int build is enabled in user_config.h
if grep -Eq "^#define LUA_NUMBER_INTEGRAL" $USER_CONFIG_H; then
BUILD_TYPE=integer
else
BUILD_TYPE=float
fi
MODULES=$(awk '/^[ \t]*#define LUA_USE_MODULES/{modules=modules sep tolower(substr($2,17));sep=","}END{if(length(modules)==0)modules="-";print modules}' $USER_MODULES_H | tr -d '\r')
# create temp buildinfo
@ -38,6 +16,32 @@ TEMPFILE=/tmp/buildinfo.h
cat > $TEMPFILE << EndOfMessage
#ifndef __BUILDINFO_H__
#define __BUILDINFO_H__
#include "user_config.h"
#define BUILDINFO_STR_HELPER(x) #x
#define BUILDINFO_TO_STR(x) BUILDINFO_STR_HELPER(x)
#ifdef LUA_FLASH_STORE
#define BUILDINFO_LFS LUA_FLASH_STORE
#else
#define BUILDINFO_LFS 0
#endif
#ifdef CLIENT_SSL_ENABLE
#define BUILDINFO_SSL true
#define BUILDINFO_SSL_STR "true"
#else
#define BUILDINFO_SSL false
#define BUILDINFO_SSL_STR "false"
#endif
#ifdef LUA_NUMBER_INTEGRAL
#define BUILDINFO_BUILD_TYPE "integer"
#else
#define BUILDINFO_BUILD_TYPE "float"
#endif
EndOfMessage
echo "#define USER_PROLOG \""$USER_PROLOG"\"" >> $TEMPFILE
@ -45,10 +49,6 @@ echo "#define BUILDINFO_BRANCH \""$BRANCH"\"" >> $TEMPFILE
echo "#define BUILDINFO_COMMIT_ID \""$COMMIT_ID"\"" >> $TEMPFILE
echo "#define BUILDINFO_RELEASE \""$RELEASE"\"" >> $TEMPFILE
echo "#define BUILDINFO_RELEASE_DTS \""$RELEASE_DTS"\"" >> $TEMPFILE
echo "#define BUILDINFO_SSL "$SSL >> $TEMPFILE
echo "#define BUILDINFO_SSL_STR \""$SSL"\"" >> $TEMPFILE
echo "#define BUILDINFO_BUILD_TYPE \""$BUILD_TYPE"\"" >> $TEMPFILE
echo "#define BUILDINFO_LFS \""$LFS"\"" >> $TEMPFILE
echo "#define BUILDINFO_MODULES \""$MODULES"\"" >> $TEMPFILE
cat >> $TEMPFILE << EndOfMessage2
@ -60,7 +60,7 @@ cat >> $TEMPFILE << EndOfMessage2
"\trelease DTS: " BUILDINFO_RELEASE_DTS "\n" \\
"\tSSL: " BUILDINFO_SSL_STR "\n" \\
"\tBuild type: " BUILDINFO_BUILD_TYPE "\n" \\
"\tLFS: " BUILDINFO_LFS "\n" \\
"\tLFS: " BUILDINFO_TO_STR(BUILDINFO_LFS) "\n" \\
"\tmodules: " BUILDINFO_MODULES "\n"
EndOfMessage2