From 7fc580fa21f2c61eaa5cc4e312d96a3074e4917d Mon Sep 17 00:00:00 2001 From: luatos_bot Date: Fri, 25 Oct 2024 10:29:39 +0000 Subject: [PATCH] ci auto translate docs --- docs/_static/luatos-emulator/vs/snippet.json | 2 +- docs/api/mobile.html | 2 +- docs/searchindex.js | 2 +- translated-docs/_static/luatos-emulator/vs/snippet.json | 2 +- translated-docs/api/mobile.md | 2 +- translation-data/api/mobile.txt | 2 ++ 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/_static/luatos-emulator/vs/snippet.json b/docs/_static/luatos-emulator/vs/snippet.json index 9a8f6e3c..f932965b 100644 --- a/docs/_static/luatos-emulator/vs/snippet.json +++ b/docs/_static/luatos-emulator/vs/snippet.json @@ -1 +1 @@ -{"_G": {"body": "_G(${0:...})", "description": "_G", "prefix": "_G"}, "_VERSION": {"body": "_VERSION(${0:...})", "description": "_VERSION", "prefix": "_VERSION"}, "assert": {"body": "assert(${1:v}${2:[, message]})", "description": "assert()", "prefix": "assert"}, "collectgarbage": {"body": "collectgarbage(${1:[opt]}${2:[, arg]})", "description": "collectgarbage()", "prefix": "collectgarbage"}, "coroutine.create": {"body": "coroutine.create( ${1:function} )", "description": "coroutine.create", "prefix": "coroutine.create"}, "coroutine.isyieldable": {"body": "coroutine.isyieldable( )", "description": "coroutine.isyieldable", "prefix": "coroutine.isyieldable"}, "coroutine.resume": {"body": "coroutine.resume( ${1:co}${2:[, val1, \u00b7\u00b7\u00b7]} )", "description": "coroutine.resume", "prefix": "coroutine.resume"}, "coroutine.running": {"body": "coroutine.running( )", "description": "coroutine.running", "prefix": "coroutine.running"}, "coroutine.status": {"body": "coroutine.status( ${1:co} )", "description": "coroutine.status", "prefix": "coroutine.status"}, "coroutine.wrap": {"body": "coroutine.wrap( ${1:function} )", "description": "coroutine.wrap", "prefix": "coroutine.wrap"}, "coroutine.yield": {"body": "coroutine.yield( ${1:...} )", "description": "coroutine.yield", "prefix": "coroutine.yield"}, "debug.debug": {"body": "debug.debug()", "description": "debug.debug ()", "prefix": "debug.debug"}, "debug.getfenv": {"body": "debug.getfenv(${0:...})", "description": "debug.getfenv (o)", "prefix": "debug.getfenv"}, "debug.gethook": {"body": "debug.gethook( ${1:[thread]} )", "description": "debug.gethook ([thread])", "prefix": "debug.gethook"}, "debug.getinfo": {"body": "debug.getinfo( ${1:[thread],}${2:f}${3:[, what]} )", "description": "debug.getinfo ([thread,] f [, what])", "prefix": "debug.getinfo"}, "debug.getlocal": {"body": "debug.getlocal( ${1:[thread],}${2:f}${3:[, local]} )", "description": "debug.getlocal ([thread,] f, local)", "prefix": "debug.getlocal"}, "debug.getmetatable": {"body": "debug.getmetatable( ${1:value} )", "description": "debug.getmetatable (value)", "prefix": "debug.getmetatable"}, "debug.getregistry": {"body": "debug.getregistry()", "description": "debug.getregistry ()", "prefix": "debug.getregistry"}, "debug.getupvalue": {"body": "debug.getupvalue( ${1:f}, ${2:up} )", "description": "debug.getupvalue (f, up)", "prefix": "debug.getupvalue"}, "debug.getuservalue": {"body": "debug.getuservalue(${0:...})", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue"}, "debug.getuservalue ": {"body": "debug.getuservalue ( ${1:u} )", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue "}, "debug.setfenv": {"body": "debug.setfenv(${0:...})", "description": "debug.setfenv (object, table)", "prefix": "debug.setfenv"}, "debug.sethook": {"body": "debug.sethook( ${1:[thead,]}${2:hook}, ${3:mask}${4:[, count]} )", "description": "debug.sethook ([thread,] hook, mask [, count])", "prefix": "debug.sethook"}, "debug.setlocal": {"body": "debug.setlocal( ${1:[thead,]}${2:level}, ${3:local}, ${4:value} )", "description": "debug.setlocal ([thread,] level, local, value)", "prefix": "debug.setlocal"}, "debug.setmetatable": {"body": "debug.setmetatable( ${1:value}, ${2:table} )", "description": "debug.setmetatable (value, table)", "prefix": "debug.setmetatable"}, "debug.setupvalue": {"body": "debug.setupvalue( ${1:f}, ${2:up}, ${3:value} )", "description": "debug.setupvalue (f, up, value)", "prefix": "debug.setupvalue"}, "debug.setuservalue": {"body": "debug.setuservalue( ${1:udata}, ${2:value} )", "description": "debug.setuservalue (udata, value)", "prefix": "debug.setuservalue"}, "debug.traceback": {"body": "debug.traceback( ${1:[thread,]}${2:[message]}${3:[, level]} )", "description": "debug.traceback ([thread,] [message [, level]])", "prefix": "debug.traceback"}, "debug.upvalueid": {"body": "debug.upvalueid( ${1:f}, ${2:n})", "description": "debug.upvalueid (f, n)", "prefix": "debug.upvalueid"}, "debug.upvaluejoin": {"body": "debug.upvaluejoin( ${1:f1}, ${2:n1}, ${3:f2}, ${4:n2} )", "description": "debug.upvaluejoin (f1, n1, f2, n2)", "prefix": "debug.upvaluejoin"}, "dofile": {"body": "dofile(${1:[filename]})", "description": "dofile ([filename])", "prefix": "dofile"}, "elif": {"body": "else if ${1:condition} then\n\t${0:-- body}\n", "description": "elif", "prefix": "elif"}, "error": {"body": "error(${0:...})", "description": "error (message [, level])", "prefix": "error"}, "file:close": {"body": "file:close(${0:...})", "description": "file:close ()", "prefix": "file:close"}, "file:flush": {"body": "file:flush(${0:...})", "description": "file:flush ()", "prefix": "file:flush"}, "file:lines": {"body": "file:lines(${0:...})", "description": "file:lines ()", "prefix": "file:lines"}, "file:read": {"body": "file:read(${0:...})", "description": "file:read (...)", "prefix": "file:read"}, "file:seek": {"body": "file:seek(${0:...})", "description": "file:seek ([whence] [, offset])", "prefix": "file:seek"}, "file:setvbuf": {"body": "file:setvbuf(${0:...})", "description": "file:setvbuf (mode [, size])", "prefix": "file:setvbuf"}, "file:write": {"body": "file:write(${0:...})", "description": "file:write (...)", "prefix": "file:write"}, "for": {"body": "for ${1:i}=${2:1},${3:10} do\n\t${0:print(i)}\nend", "description": "for i=1,10", "prefix": "for"}, "fori": {"body": "for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t${0:print(i,v)}\nend", "description": "for i,v in ipairs()", "prefix": "fori"}, "forp": {"body": "for ${1:k},${2:v} in pairs(${3:table_name}) do\n\t${0:print(k,v)}\nend", "description": "for k,v in pairs()", "prefix": "forp"}, "fun": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "fun"}, "function": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "function"}, "getfenv": {"body": "getfenv(${0:...})", "description": "getfenv ([f])", "prefix": "getfenv"}, "getmetatable": {"body": "getmetatable(${1:object})", "description": "getmetatable (object)", "prefix": "getmetatable"}, "if": {"body": "if ${1:condition} then\n\t${0:-- body}\nend", "description": "if", "prefix": "if"}, "ifel": {"body": "if ${1:condition} then\n\t${2:-- body}\nelse\n\t${0:-- body}\nend", "description": "ifel", "prefix": "ifel"}, "io.close": {"body": "io.close(${0:...})", "description": "io.close ([file])", "prefix": "io.close"}, "io.flush": {"body": "io.flush(${0:...})", "description": "io.flush ()", "prefix": "io.flush"}, "io.input": {"body": "io.input(${0:...})", "description": "io.input ([file])", "prefix": "io.input"}, "io.lines": {"body": "io.lines(${0:...})", "description": "io.lines ([filename])", "prefix": "io.lines"}, "io.open": {"body": "io.open(${0:...})", "description": "io.open (filename [, mode])", "prefix": "io.open"}, "io.output": {"body": "io.output(${0:...})", "description": "io.output ([file])", "prefix": "io.output"}, "io.popen": {"body": "io.popen(${0:...})", "description": "io.popen (prog [, mode])", "prefix": "io.popen"}, "io.read": {"body": "io.read(${0:...})", "description": "io.read (...)", "prefix": "io.read"}, "io.tmpfile": {"body": "io.tmpfile(${0:...})", "description": "io.tmpfile ()", "prefix": "io.tmpfile"}, "io.type": {"body": "io.type(${0:...})", "description": "io.type (obj)", "prefix": "io.type"}, "io.write": {"body": "io.write(${0:...})", "description": "io.write (...)", "prefix": "io.write"}, "ipairs": {"body": "ipairs(${0:...})", "description": "ipairs (t)", "prefix": "ipairs"}, "load": {"body": "load(${0:...})", "description": "load (func [, chunkname])", "prefix": "load"}, "loadfile": {"body": "loadfile(${0:...})", "description": "loadfile ([filename])", "prefix": "loadfile"}, "loadstring": {"body": "loadstring(${0:...})", "description": "loadstring (string [, chunkname])", "prefix": "loadstring"}, "local": {"body": "local ${1:x} = ${0:1}", "description": "local x = 1", "prefix": "local"}, "math.abs": {"body": "math.abs( ${1:x} )", "description": "math.abs", "prefix": "math.abs"}, "math.acos": {"body": "math.acos( ${1:x} )", "description": "math.acos", "prefix": "math.acos"}, "math.asin": {"body": "math.asin( ${1:x} )", "description": "math.asin", "prefix": "math.asin"}, "math.atan": {"body": "math.atan( ${1:y}${2:[, x]} )", "description": "math.atan", "prefix": "math.atan"}, "math.atan2": {"body": "math.atan2(${0:...})", "description": "math.atan2 (y, x)", "prefix": "math.atan2"}, "math.ceil": {"body": "math.ceil( ${1:x} )", "description": "math.ceil", "prefix": "math.ceil"}, "math.cos": {"body": "math.cos( ${1:x} )", "description": "math.cos", "prefix": "math.cos"}, "math.cosh": {"body": "math.cosh(${0:...})", "description": "math.cosh (x)", "prefix": "math.cosh"}, "math.deg": {"body": "math.deg( ${1:x} )", "description": "math.deg", "prefix": "math.deg"}, "math.exp": {"body": "math.exp( ${1:x} )", "description": "math.exp", "prefix": "math.exp"}, "math.floor": {"body": "math.floor( ${1:x} )", "description": "math.floor", "prefix": "math.floor"}, "math.fmod": {"body": "math.fmod( ${1:x},${2:y} )", "description": "math.fmod", "prefix": "math.fmod"}, "math.frexp": {"body": "math.frexp(${0:...})", "description": "math.frexp (x)", "prefix": "math.frexp"}, "math.huge": {"body": "math.huge(${0:...})", "description": "math.huge", "prefix": "math.huge"}, "math.ldexp": {"body": "math.ldexp(${0:...})", "description": "math.ldexp (m, e)", "prefix": "math.ldexp"}, "math.log": {"body": "math.log( ${1:x}${2:[, base]} )", "description": "math.log", "prefix": "math.log"}, "math.log10": {"body": "math.log10(${0:...})", "description": "math.log10 (x)", "prefix": "math.log10"}, "math.math.randomseed": {"body": "math.math.randomseed( ${1:x} )", "description": "math.math.randomseed", "prefix": "math.math.randomseed"}, "math.max": {"body": "math.max( ${1:x},${2:...} )", "description": "math.max", "prefix": "math.max"}, "math.maxinteger": {"body": "math.maxinteger(${0:...})", "description": "math.maxinteger", "prefix": "math.maxinteger"}, "math.min": {"body": "math.min( ${1:x},${2:...} )", "description": "math.min", "prefix": "math.min"}, "math.mininteger": {"body": "math.mininteger(${0:...})", "description": "math.mininteger", "prefix": "math.mininteger"}, "math.modf": {"body": "math.modf( ${1:x} )", "description": "math.modf", "prefix": "math.modf"}, "math.pi": {"body": "math.pi(${0:...})", "description": "math.pi", "prefix": "math.pi"}, "math.pow": {"body": "math.pow(${0:...})", "description": "math.pow (x, y)", "prefix": "math.pow"}, "math.rad": {"body": "math.rad(${0:...})", "description": "math.rad (x)", "prefix": "math.rad"}, "math.random": {"body": "math.random( ${1:[m]}${2:[, n]} )", "description": "math.random", "prefix": "math.random"}, "math.randomseed": {"body": "math.randomseed(${0:...})", "description": "math.randomseed (x)", "prefix": "math.randomseed"}, "math.sin": {"body": "math.sin( ${1:x} )", "description": "math.sin", "prefix": "math.sin"}, "math.sinh": {"body": "math.sinh(${0:...})", "description": "math.sinh (x)", "prefix": "math.sinh"}, "math.sqrt": {"body": "math.sqrt( ${1:x} )", "description": "math.sqrt", "prefix": "math.sqrt"}, "math.tan": {"body": "math.tan( ${1:x} )", "description": "math.tan", "prefix": "math.tan"}, "math.tanh": {"body": "math.tanh(${0:...})", "description": "math.tanh (x)", "prefix": "math.tanh"}, "math.tointeger": {"body": "math.tointeger( ${1:x} )", "description": "math.tointeger", "prefix": "math.tointeger"}, "math.type": {"body": "math.type( ${1:x} )", "description": "math.type", "prefix": "math.type"}, "math.ult": {"body": "math.ult(${0:...})", "description": "math.ult (m, n)", "prefix": "math.ult"}, "module": {"body": "module(${0:...})", "description": "module (name [, ...])", "prefix": "module"}, "next": {"body": "next(${1:table}${2:[, index]})", "description": "next (table [, index])", "prefix": "next"}, "os.clock": {"body": "os.clock()", "description": "os.clock() - \u8fd4\u56de\u7a0b\u5e8f\u4f7f\u7528\u7684\u6309\u79d2\u8ba1 CPU \u65f6\u95f4\u7684\u8fd1\u4f3c\u503c\n\u4f20\u5165\u503c\uff1a\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\n-- \u5982\u9700\u8981\u83b7\u53d6 \u65f6\u95f4\u6233, \u8bf7\u4f7f\u7528 os.time()\n-- \u5982\u9700\u83b7\u53d6\u7cfb\u7edf\u8fd0\u884c\u65f6\u957f, \u8bf7\u4f7f\u7528 mcu.ticks()\n", "prefix": "os.clock"}, "os.date": {"body": "os.date(${1:fmt},${2:time})", "description": "os.date(fmt, time) - \u65e5\u671f\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring \u683c\u5f0f\u5316\u5b57\u7b26\u4e32,\u53ef\u4ee5\u662fnil\ntable \u65e5\u671f\u65f6\u95f4\u7684table\n\u8fd4\u56de\u503c\uff1a\ntable/string \u6839\u636efmt\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n\n-- \u503c\u5f97\u6ce8\u610f\u7684\u51e0\u70b9:\n-- 1. \u82e5\u9700\u8981UTC\u65f6\u95f4, fmt\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u5199\"!\"\n-- 2. fmt\u7684\u683c\u5f0f\u5316\u9075\u5faa C \u51fd\u6570 strftime, \u53ef\u4ee5\u67e5\u9605 https://developer.aliyun.com/article/320480\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date())\n-- \u83b7\u53d6UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%c\"))\n-- \u683c\u5f0f\u5316\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u7684\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0})))\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u7684table\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"*t\")))\n-- \u83b7\u53d6UTC\u65f6\u95f4\u7684table\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"!*t\")))\n", "prefix": "os.date"}, "os.difftime": {"body": "os.difftime(${1:timeA},${2:timeB})", "description": "os.difftime(timeA, timeB) - \u65f6\u95f4\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u95f4A,\u6570\u503c\u7c7b\u578b\nint \u65f6\u95f4B,\u6570\u503c\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nint \u65f6\u95f4\u5dee\u503c\n", "prefix": "os.difftime"}, "os.execute": {"body": "os.execute(${0:...})", "description": "os.execute ([command])", "prefix": "os.execute"}, "os.exit": {"body": "os.exit(${0:...})", "description": "os.exit ([code])", "prefix": "os.exit"}, "os.getenv": {"body": "os.getenv(${0:...})", "description": "os.getenv (varname)", "prefix": "os.getenv"}, "os.remove": {"body": "os.remove(${1:path})", "description": "os.remove(path) - \u79fb\u9664\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u79fb\u9664\u7684\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u5220\u9664\u6839\u76ee\u5f55\u4e0b\u7684\u67d0\u4e2a\u6587\u4ef6\nos.remove(\"/1.txt\")\n-- \u6ce8\u610f, \u7ebf\u5237\u65f6\u7684\u6587\u4ef6, \u4e00\u822c\u5728 /luadb \u76ee\u5f55, \u8fd9\u4e2a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u662f\u53ea\u8bfb\u7684\n-- \u4e5f\u5c31\u662f\u65e0\u6cd5\u6267\u884c os.remove(\"/luadb/xxx.bin\")\n", "prefix": "os.remove"}, "os.rename": {"body": "os.rename(${1:old_path},${2:new_path})", "description": "os.rename(old_path, new_path) - \u6587\u4ef6\u91cd\u547d\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u6e90\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\nstring \u76ee\u6807\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u53ea\u6709\u5728\u76f8\u540c\u6587\u4ef6\u7cfb\u7edf\u4e0b\u7684\u6587\u4ef6\u53ef\u4ee5\u91cd\u547d\u540d\n-- \u4f8b\u5982:\nos.rename(\"/1.txt\", \"/2.txt\")\n-- \u4e0d\u540c\u6587\u4ef6\u7cfb\u7edf, \u6216\u8005\u6e90\u6587\u4ef6\u7cfb\u7edf\u662f\u53ea\u8bfb\u7684, \u5219\u65e0\u6cd5\u6267\u884c\n--os.rename(\"/luadb/1.txt\", \"/luadb/2.txt\")\n--os.rename(\"/luadb/1.txt\", \"/2.txt\")\n", "prefix": "os.rename"}, "os.setlocale": {"body": "os.setlocale(${0:...})", "description": "os.setlocale (locale [, category])", "prefix": "os.setlocale"}, "os.time": {"body": "os.time(${1:mytime})", "description": "os.time(mytime) - \u65f6\u95f4\u6233\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\ntable \u65e5\u671f\u65f6\u95f4\u7684table\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\u6ce8\u610f, \u8fd9\u4e2a\u51fd\u6570\u8fd4\u56de\u7684\u662fUTC\u65f6\u95f4\u6233\n-- \u65f6\u95f4\u6233, \u4f46lua\u4e0b\u7684\u7cbe\u5ea6\u53ea\u80fd\u5230\u79d2\nlog.info(\"UTC\u65f6\u95f4\u6233\", os.time())\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u6233\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0}))\n", "prefix": "os.time"}, "os.tmpname": {"body": "os.tmpname(${0:...})", "description": "os.tmpname ()", "prefix": "os.tmpname"}, "package.config": {"body": "package.config(${0:...})", "description": "package.config", "prefix": "package.config"}, "package.cpath": {"body": "package.cpath(${0:...})", "description": "package.cpath", "prefix": "package.cpath"}, "package.loaded": {"body": "package.loaded(${0:...})", "description": "package.loaded", "prefix": "package.loaded"}, "package.loaders": {"body": "package.loaders(${0:...})", "description": "package.loaders", "prefix": "package.loaders"}, "package.loadlib": {"body": "package.loadlib(${0:...})", "description": "package.loadlib (libname, funcname)", "prefix": "package.loadlib"}, "package.path": {"body": "package.path(${0:...})", "description": "package.path", "prefix": "package.path"}, "package.preload": {"body": "package.preload(${0:...})", "description": "package.preload", "prefix": "package.preload"}, "package.searchers": {"body": "package.searchers(${0:...})", "description": "package.searchers", "prefix": "package.searchers"}, "package.searchpath": {"body": "package.searchpath(${0:...})", "description": "package.searchpath (name, path [, sep [, rep]])", "prefix": "package.searchpath"}, "package.seeall": {"body": "package.seeall(${0:...})", "description": "package.seeall (module)", "prefix": "package.seeall"}, "pairs": {"body": "pairs(${0:...})", "description": "pairs (t)", "prefix": "pairs"}, "pcall": {"body": "pcall(${0:...})", "description": "pcall (f, arg1, ...)", "prefix": "pcall"}, "print": {"body": "print(${1:...})", "description": "print(...)", "prefix": "print"}, "require": {"body": "require\"${1:module}\"", "description": "require()", "prefix": "require"}, "ret": {"body": "return ${1:...}", "description": "return ...", "prefix": "ret"}, "select": {"body": "select(${1:index}, ${2:...})", "description": "select (index, \u00b7\u00b7\u00b7)", "prefix": "select"}, "setfenv": {"body": "setfenv(${0:...})", "description": "setfenv (f, table)", "prefix": "setfenv"}, "setmetatable": {"body": "setmetatable(${1:table}, ${2:metatable})", "description": "setmetatable (table, metatable)", "prefix": "setmetatable"}, "tonumber": {"body": "tonumber(${1:e}${2:[, base]})", "description": "tonumber (e [, base])", "prefix": "tonumber"}, "tostring": {"body": "tostring(${1:v})", "description": "tostring (v)", "prefix": "tostring"}, "type": {"body": "type(${1:v})", "description": "type (v)", "prefix": "type"}, "unpack": {"body": "unpack(${0:...})", "description": "unpack (list [, i [, j]])", "prefix": "unpack"}, "xpcall": {"body": "xpcall(${0:...})", "description": "xpcall (f, err)", "prefix": "xpcall"}, "sys.publish(...)": {"body": "sys.publish(${1:...})", "description": "\u53d1\u5e03\u5185\u90e8\u6d88\u606f\uff0c\u5b58\u50a8\u5728\u5185\u90e8\u6d88\u606f\u961f\u5217\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\npublish(\"NET_STATUS_IND\")\r\n", "prefix": "sys.publish(...)"}, "sys.restart(r)": {"body": "sys.restart(${1:r})", "description": "\u8f6f\u4ef6\u91cd\u542f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.restart('\u7a0b\u5e8f\u8d85\u65f6\u8f6f\u4ef6\u91cd\u542f')\r\n", "prefix": "sys.restart(r)"}, "sys.run()": {"body": "sys.run()", "description": "run()\u4ece\u5e95\u5c42\u83b7\u53d6core\u6d88\u606f\u5e76\u53ca\u65f6\u5904\u7406\u76f8\u5173\u6d88\u606f\uff0c\u67e5\u8be2\u5b9a\u65f6\u5668\u5e76\u8c03\u5ea6\u5404\u6ce8\u518c\u6210\u529f\u7684\u4efb\u52a1\u7ebf\u7a0b\u8fd0\u884c\u548c\u6302\u8d77\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.run()\r\n", "prefix": "sys.run()"}, "sys.setRollBack(flag, secs)": {"body": "sys.setRollBack(${1:flag},${2: secs})", "description": "\u8bbe\u7f6e\u201clua\u811a\u672c\u8fd0\u884c\u51fa\u9519\u65f6\uff0c\u662f\u5426\u56de\u9000\u539f\u59cb\u70e7\u5199\u7248\u672c\u201d\u7684\u529f\u80fd\u5f00\u5173\u3002\u5982\u679c\u6ca1\u6709\u8c03\u7528\u6b64\u63a5\u53e3\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u56de\u6eda\r\n\u8fd4\u56de\u503c\uff1a\r\nnil\r\n\u4f8b\u5b50\uff1a\r\nsys.setRollBack(true)\r\nsys.setRollBack(false)\r\n", "prefix": "sys.setRollBack(flag, secs)"}, "sys.subscribe(id, callback)": {"body": "sys.subscribe(${1:id},${2: callback})", "description": "\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.subscribe(id, callback)"}, "sys.taskInit(fun, ...)": {"body": "sys.taskInit(${1:fun},${2: ...})", "description": "\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570\uff0cmain.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\r\n\u8fd4\u56de\u503c\uff1a\r\nco \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\r\n\u4f8b\u5b50\uff1a\r\nsys.taskInit(task1,'a','b')\r\n", "prefix": "sys.taskInit(fun, ...)"}, "sys.timerIsActive(val, ...)": {"body": "sys.timerIsActive(${1:val},${2: ...})", "description": "\u5224\u65ad\u67d0\u4e2a\u5b9a\u65f6\u5668\u662f\u5426\u5904\u4e8e\u5f00\u542f\u72b6\u6001\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5f00\u542f\u72b6\u6001\u8fd4\u56detrue\uff0c\u5426\u5219nil", "prefix": "sys.timerIsActive(val, ...)"}, "sys.timerLoopStart(fnc, ms, ...)": {"body": "sys.timerLoopStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerLoopStart(fnc, ms, ...)"}, "sys.timerStart(fnc, ms, ...)": {"body": "sys.timerStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerStart(fnc, ms, ...)"}, "sys.timerStop(val, ...)": {"body": "sys.timerStop(${1:val},${2: ...})", "description": "\u5173\u95ed\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStop(1)\r\n", "prefix": "sys.timerStop(val, ...)"}, "sys.timerStopAll(fnc)": {"body": "sys.timerStopAll(${1:fnc})", "description": "\u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStopAll(cbFnc)\r\n", "prefix": "sys.timerStopAll(fnc)"}, "sys.unsubscribe(id, callback)": {"body": "sys.unsubscribe(${1:id},${2: callback})", "description": "\u53d6\u6d88\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nunsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.unsubscribe(id, callback)"}, "sys.wait(ms)": {"body": "sys.wait(${1:ms})", "description": "Task\u4efb\u52a1\u5ef6\u65f6\u51fd\u6570\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5b9a\u65f6\u7ed3\u675f\u8fd4\u56denil,\u88ab\u5176\u4ed6\u7ebf\u7a0b\u5524\u8d77\u8fd4\u56de\u8c03\u7528\u7ebf\u7a0b\u4f20\u5165\u7684\u53c2\u6570\r\n\u4f8b\u5b50\uff1a\r\nsys.wait(30)\r\n", "prefix": "sys.wait(ms)"}, "sys.waitUntil(id, ms)": {"body": "sys.waitUntil(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nresult \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56detrue\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntil(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntil(id, ms)"}, "sys.waitUntilExt(id, ms)": {"body": "sys.waitUntilExt(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\u6269\u5c55\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nmessage \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56demessage\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntilExt(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntilExt(id, ms)"}, "table.concat(t,s)": {"body": "table.concat(${1:t},${2: s})", "description": "\u8868\u8fde\u63a5\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n-- \u8fd4\u56de table \u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 bananaorangeapple\r\n\r\n-- \u6307\u5b9a\u8fde\u63a5\u5b57\u7b26\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \"))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 banana, orange, apple\r\n\r\n-- \u6307\u5b9a\u7d22\u5f15\u6765\u8fde\u63a5 table\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \", 2,3))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 orange, apple\r\n", "prefix": "table.concat()"}, "table.gsort(t, f)": {"body": "table.gsort(${1:t},${2: f})", "description": "\u8fd4\u56de\u4e00\u4e2a\u8fed\u4ee3\u5668\u51fd\u6570,\u6bcf\u6b21\u8c03\u7528\u51fd\u6570\u90fd\u4f1a\u8fd4\u56dehash\u8868\u7684\u6392\u5e8f\u540e\u7684\u952e\u503c\u5bf9\r\n\u8fd4\u56de\u503c\uff1a\r\nfunction.\r\n\u4f8b\u5b50\uff1a\r\ntest = {a=1,f=9,d=2,c=8,b=5}\r\nfor name,line in pairsByKeys(test) do print(name,line) end\r\n", "prefix": "table.gsort(t, f)"}, "table.insert(t,d)": {"body": "table.insert(${1:t},${2: d})", "description": "\u6dfb\u52a0table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n\r\n-- \u5728\u672b\u5c3e\u63d2\u5165\r\ntable.insert(fruits,\"mango\")\r\nprint(\"\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a \",fruits[4])\r\n--\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a mango\r\n\r\n-- \u5728\u7d22\u5f15\u4e3a 2 \u7684\u952e\u5904\u63d2\u5165\r\ntable.insert(fruits,2,\"grapes\")\r\nprint(\"\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a \",fruits[2])\r\n--\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a grapes\r\n\r\nprint(\"\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a \",fruits[5])\r\n--\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a mango\r\n", "prefix": "table.insert()"}, "table.remove(t,i)": {"body": "table.remove(${1:t},${2: i})", "description": "\u79fb\u9664table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table", "prefix": "table.remove()"}, "string.byte()": {"body": "string.byte()", "description": "\u63a5\u6536\u63a7\u5236\u5b57\u7b26\uff0c\u8fd4\u56deASCII\u7801\r\n\u8fd4\u56de\u503c\uff1a\r\n ASCII\u7801\r\n\u4f8b\u5b50\uff1a\r\nstring.byte(\"ABCD\") --65\r\nstring.byte(\"ABCD\",4) --68\r\n", "prefix": "string.byte()"}, "string.char()": {"body": "string.char()", "description": "\u63a5\u6536ASCII\u7801\uff0c\u8fd4\u56de\u5bf9\u5e94\u7684\u63a7\u5236\u5b57\u7b26\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\r\n\u4f8b\u5b50\uff1a\r\nstring.char(97,98,99,100) --abcd\r\n", "prefix": "string.char()"}, "string.find()": {"body": "string.find()", "description": "\u67e5\u627e\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0s\u00a0\u4e2d\u5339\u914d\u5230\u7684\u00a0pattern\r\n\u8fd4\u56de\u503c\uff1a\r\n \u8fd4\u56de\u5339\u914d\u5b57\u7b26\u5177\u4f53\u4f4d\u7f6e\u3002\u4e0d\u5b58\u5728\u5219\u8fd4\u56de nil\r\n\u4f8b\u5b50\uff1a\r\nstring.find(\"Hello Lua user\", \"Lua\", 1) --7 9\r\n", "prefix": "string.find()"}, "string.format()": {"body": "string.format()", "description": "\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.format(\"the value is:%d\",4) --the value is:4\r\n", "prefix": "string.format()"}, "string.gsub()": {"body": "string.gsub()", "description": "\u5b57\u7b26\u4e32\u66ff\u6362", "prefix": "string.gsub()"}, "string.len()": {"body": "string.len()", "description": "\u8ba1\u7b97\u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u4f8b\u5b50\uff1a\r\nstring.len(\"abc\") --3\r\n", "prefix": "string.len()"}, "string.lower()": {"body": "string.lower()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5c0f\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5c0f\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.lower()"}, "string.rep()": {"body": "string.rep()", "description": "\u5b57\u7b26\u4e32\u62f7\u8d1d\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.rep(\"abcd\",2) --abcdabcd\r\n", "prefix": "string.rep()"}, "string.reverse()": {"body": "string.reverse()", "description": "\u5b57\u7b26\u4e32\u53cd\u8f6c\r\n\u8fd4\u56de\u503c\uff1a\r\n \u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.reverse(\"Luat\") --tauL\r\n", "prefix": "string.reverse()"}, "string.split(str, delimiter)": {"body": "string.split(${1:str},${2: delimiter})", "description": "\u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u5217\u8868\r\n\u4f8b\u5b50\uff1a\r\n\"123,456,789\":split(',') -> {'123','456','789'}\r\n", "prefix": "string.split(str, delimiter)"}, "string.upper()": {"body": "string.upper()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5927\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5927\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.upper()"}, "adc.open": {"body": "adc.open(${1:id})", "description": "adc.open(id) - \u6253\u5f00adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90534,\u5e76\u8bfb\u53d6\nif adc.open(4) then\n log.info(\"adc\", adc.read(4)) -- \u8fd4\u56de\u503c\u67092\u4e2a, \u539f\u59cb\u503c\u548c\u8ba1\u7b97\u503c,\u901a\u5e38\u53ea\u9700\u8981\u540e\u8005\n log.info(\"adc\", adc.get(4)) -- \u8fd4\u56de\u503c\u67091\u4e2a, \u4ec5\u8ba1\u7b97\u503c\nend\nadc.close(4) -- \u82e5\u9700\u8981\u6301\u7eed\u8bfb\u53d6, \u5219\u4e0d\u9700\u8981close, \u529f\u8017\u4f1a\u9ad8\u4e00\u70b9.\n", "prefix": "adc.open"}, "adc.setRange": {"body": "adc.setRange(${1:range})", "description": "adc.setRange(range) - \u8bbe\u7f6eADC\u7684\u6d4b\u91cf\u8303\u56f4\uff0c\u6ce8\u610f\u8fd9\u4e2a\u548c\u5177\u4f53\u82af\u7247\u6709\u5173\uff0c\u76ee\u524d\u53ea\u652f\u6301air105/Air780E\u7cfb\u5217\n\u4f20\u5165\u503c\uff1a\nint range\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u6bd4\u5982air105\u586badc.ADC_RANGE_1_8\u548cadc.ADC_RANGE_3_6\nreturn nil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u8981\u5728\u8c03\u7528adc.open\u4e4b\u524d\u5c31\u8c03\u7528, \u4e4b\u540e\u8c03\u7528\u65e0\u6548!!!\n\n-- \u5173\u95edair105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_1_8)\n-- \u6253\u5f00air105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_6)\n\n\n-- EC618\u7cfb\u5217(Air780E\u7b49)/EC718E\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\u652f\u6301\u4ee5\u4e0b2\u79cd\nadc.setRange(adc.ADC_RANGE_1_2) -- \u5173\u95ed\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_8) -- \u542f\u7528\u5206\u538b\n", "prefix": "adc.setRange"}, "adc.read": {"body": "adc.read(${1:id})", "description": "adc.read(id) - \u8bfb\u53d6adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u539f\u59cb\u503c,\u4e00\u822c\u6ca1\u7528,\u53ef\u4ee5\u76f4\u63a5\u629b\u5f03\nint \u4ece\u539f\u59cb\u503c\u6362\u7b97\u5f97\u51fa\u7684\u5b9e\u9645\u503c\uff0c\u901a\u5e38\u5355\u4f4d\u662fmV\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n -- \u8fd9\u91cc\u4f7f\u7528\u7684\u662fadc.read\u4f1a\u8fd4\u56de2\u4e2a\u503c, \u63a8\u8350\u8d70adc.get\u51fd\u6570,\u76f4\u63a5\u53d6\u5b9e\u9645\u503c\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.read"}, "adc.get": {"body": "adc.get(${1:id})", "description": "adc.get(id) - \u83b7\u53d6adc\u8ba1\u7b97\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u5355\u4f4d\u901a\u5e38\u662fmV, \u90e8\u5206\u901a\u9053\u4f1a\u8fd4\u56de\u6e29\u5ea6\u503c,\u5355\u4f4d\u5343\u5206\u4e4b\u4e00\u6444\u6c0f\u5ea6. \u82e5\u8bfb\u53d6\u5931\u8d25,\u4f1a\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\n-- \u672cAPI \u5728 2022.10.01\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.get(2))\nend\nadc.close(2) -- \u6309\u9700\u5173\u95ed\n", "prefix": "adc.get"}, "adc.close": {"body": "adc.close(${1:id})", "description": "adc.close(id) - \u5173\u95edadc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.close"}, "antbot.init": {"body": "antbot.init()", "description": "antbot.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n\u4f8b\u5b50\uff1a\n\n-- \u521d\u59cb\u5316\u8682\u8681\u94fe\u7684\u5e95\u5c42\u9002\u914d\nantbot.init()\n", "prefix": "antbot.init"}, "antbot.app_sta_get": {"body": "antbot.app_sta_get()", "description": "antbot.app_sta_get() - \u83b7\u53d6\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u7801\n", "prefix": "antbot.app_sta_get"}, "antbot.version_get": {"body": "antbot.version_get()", "description": "antbot.version_get() - \u83b7\u53d6SDK\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u7248\u672c\u53f7,\u5982\u679c\u83b7\u53d6\u5931\u8d25\u8fd4\u56denil\n", "prefix": "antbot.version_get"}, "antbot.asset_register": {"body": "antbot.asset_register(${1:asset_id},${2:asset_type},${3:asset_dataver})", "description": "antbot.asset_register(asset_id, asset_type, asset_dataver) - asset\u8d44\u6e90\u6ce8\u518c\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\nstring asset_type \u8d44\u6e90\u7c7b\u578b\nstring asset_dataver \u8d44\u6e90\u6570\u636e\u7248\u672c\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_register"}, "antbot.asset_data_publish": {"body": "antbot.asset_data_publish(${1:data})", "description": "antbot.asset_data_publish(data) - asset\u8d44\u6e90\u53d1\u5e03\n\u4f20\u5165\u503c\uff1a\nstring data \u8d44\u6e90\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_data_publish"}, "antbot.device_status_get": {"body": "antbot.device_status_get()", "description": "antbot.device_status_get() - \u83b7\u53d6\u8bbe\u5907\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u5907\u72b6\u6001\n", "prefix": "antbot.device_status_get"}, "antbot.asset_status_get": {"body": "antbot.asset_status_get(${1:asset_id})", "description": "antbot.asset_status_get(asset_id) - \u83b7\u53d6assset\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\n\u8fd4\u56de\u503c\uff1a\nint \u8d44\u6e90\u72b6\u6001\n", "prefix": "antbot.asset_status_get"}, "antbot.channel_switch": {"body": "antbot.channel_switch(${1:cmd})", "description": "antbot.channel_switch(cmd) - \u5207\u6362channel\n\u4f20\u5165\u503c\uff1a\nint 0 - \u5173\u95ed, 1 - \u5f00\u542f\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.channel_switch"}, "antbot.config_set": {"body": "antbot.config_set(${1:config})", "description": "antbot.config_set(config) - \u914d\u7f6e\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nstring config \u914d\u7f6e\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.config_set"}, "antbot.config_get": {"body": "antbot.config_get()", "description": "antbot.config_get() - \u83b7\u53d6\u8bbe\u5907\u914d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u914d\u7f6e\u5185\u5bb9\n", "prefix": "antbot.config_get"}, "audio.start": {"body": "audio.start(${1:id},${2:audio_format},${3:num_channels},${4:sample_rate},${5:bits_per_sample},${6:is_signed})", "description": "audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed) - \u542f\u52a8\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u51c6\u5907\u64ad\u653e\u97f3\u9891\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\uff0c\u9ed8\u8ba4true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\naudio.start(0, audio.PCM, 1, 16000, 16)\n", "prefix": "audio.start"}, "audio.record": {"body": "audio.record(${1:id},${2:record_type},${3:record_time},${4:amr_quailty},${5:path})", "description": "audio.record(id, record_type, record_time, amr_quailty, path) - \u5f55\u97f3\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint record_type \u5f55\u97f3\u97f3\u9891\u683c\u5f0f,\u652f\u6301 audio.AMR audio.PCM (\u90e8\u5206\u5e73\u53f0\u652f\u6301audio.AMR_WB)\nint record_time \u5f55\u5236\u65f6\u957f \u5355\u4f4d\u79d2,\u53ef\u9009\uff0c\u9ed8\u8ba40\u5373\u8868\u793a\u4e00\u76f4\u5f55\u5236\nint amr_quailty \u8d28\u91cf,audio.AMR\u4e0b\u6709\u6548\nstring path \u5f55\u97f3\u6587\u4ef6\u8def\u5f84,\u53ef\u9009,\u4e0d\u6307\u5b9a\u5219\u4e0d\u4fdd\u5b58,\u53ef\u5728audio.on\u56de\u8c03\u51fd\u6570\u4e2d\u5904\u7406\u539f\u59cbPCM\u6570\u636e\nint record_callback_time \u4e0d\u6307\u5b9a\u5f55\u97f3\u6587\u4ef6\u8def\u5f84\u65f6\uff0c\u5355\u6b21\u5f55\u97f3\u56de\u8c03\u65f6\u957f\uff0c\u5355\u4f4d\u662f100ms\u3002\u9ed8\u8ba41\uff0c\u65e2100ms\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nerr,info = audio.record(id, type, record_time, quailty, path)\n", "prefix": "audio.record"}, "audio.recordStop": {"body": "audio.recordStop(${1:id})", "description": "audio.recordStop(id) - \u5f55\u97f3\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.recordStop(0)\n", "prefix": "audio.recordStop"}, "audio.write": {"body": "audio.write(${1:id},${2:data})", "description": "audio.write(id, data) - \u5f80\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u5199\u5165\u97f3\u9891\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u97f3\u9891\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.write(0, \"xxxxxx\")\n", "prefix": "audio.write"}, "audio.stop": {"body": "audio.stop(${1:id})", "description": "audio.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.stop(0)\n", "prefix": "audio.stop"}, "audio.pause": {"body": "audio.pause(${1:id},${2:pause})", "description": "audio.pause(id, pause) - \u6682\u505c/\u6062\u590d\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\nboolean onoff true \u6682\u505c\uff0cfalse \u6062\u590d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.pause(0, true) --\u6682\u505c\u901a\u90530\naudio.pause(0, false) --\u6062\u590d\u901a\u90530\n", "prefix": "audio.pause"}, "audio.on": {"body": "audio.on(${1:audio_id},${2:func})", "description": "audio.on(audio_id, func) - \u6ce8\u518caudio\u64ad\u653e\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint audio id, audio 0\u51990, audio 1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\uff0c\u56de\u8c03\u65f6\u4f20\u5165\u53c2\u6570\u4e3a1\u3001int \u901a\u9053ID 2\u3001int \u6d88\u606f\u503c\uff0c\u53ea\u6709audio.MORE_DATA\u548caudio.DONE\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.on(0, function(audio_id, msg)\n log.info(\"msg\", audio_id, msg)\nend)\n", "prefix": "audio.on"}, "audio.play": {"body": "audio.play(${1:id},${2:path},${3:errStop})", "description": "audio.play(id, path, errStop) - \u64ad\u653e\u6216\u8005\u505c\u6b62\u64ad\u653e\u4e00\u4e2a\u6587\u4ef6\uff0c\u64ad\u653e\u5b8c\u6210\u540e\uff0c\u4f1a\u56de\u8c03\u4e00\u4e2aaudio.DONE\u6d88\u606f\uff0c\u53ef\u4ee5\u7528pause\u6765\u6682\u505c\u6216\u8005\u6062\u590d\uff0c\u5176\u4ed6API\u4e0d\u53ef\u7528\u3002\u8003\u8651\u5230\u8bfbSD\u5361\u901f\u5ea6\u6bd4\u8f83\u6162\u800c\u62d6\u7d2fluavm\u8fdb\u7a0b\u7684\u901f\u5ea6\uff0c\u6240\u4ee5\u5c3d\u91cf\u4f7f\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/table \u6587\u4ef6\u540d\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u8868\u793a\u505c\u6b62\u64ad\u653e\uff0c\u5982\u679c\u662ftable\uff0c\u5219\u8868\u793a\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\uff0c\u4e3b\u8981\u5e94\u7528\u4e8e\u4e91\u5587\u53ed\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\uff0c\u5e76\u4e14\u4f1a\u7528\u5230errStop\u53c2\u6570\nboolean \u662f\u5426\u5728\u6587\u4ef6\u89e3\u7801\u5931\u8d25\u540e\u505c\u6b62\u89e3\u7801\uff0c\u53ea\u6709\u5728\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\u65f6\u624d\u6709\u7528\uff0c\u9ed8\u8ba4true\uff0c\u9047\u5230\u89e3\u7801\u9519\u8bef\u81ea\u52a8\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.play(0, \"xxxxxx\") --\u5f00\u59cb\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\naudio.play(0) --\u505c\u6b62\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\n", "prefix": "audio.play"}, "audio.tts": {"body": "audio.tts(${1:id},${2:data})", "description": "audio.tts(id, data) - TTS\u64ad\u653e\u6216\u8005\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/zbuff \u9700\u8981\u64ad\u653e\u7684\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "audio.tts"}, "audio.playStop": {"body": "audio.playStop(${1:id})", "description": "audio.playStop(id) - \u505c\u6b62\u64ad\u653e\u6587\u4ef6\uff0c\u548caudio.play(id)\u662f\u4e00\u6837\u7684\u4f5c\u7528\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.playStop(0)\n", "prefix": "audio.playStop"}, "audio.isEnd": {"body": "audio.isEnd(${1:id})", "description": "audio.isEnd(id) - \u68c0\u67e5\u5f53\u524d\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u64ad\u653e\u7ed3\u675f\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.isEnd(0)\n\n", "prefix": "audio.isEnd"}, "audio.getError": {"body": "audio.getError(${1:id})", "description": "audio.getError(id) - \u83b7\u53d6\u6700\u8fd1\u4e00\u6b21\u64ad\u653e\u7ed3\u679c\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\u7684\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5168\u90e8\u64ad\u653e\u6210\u529f\uff0ctrue\u6210\u529f\uff0cfalse\u6709\u6587\u4ef6\u64ad\u653e\u5931\u8d25\nboolean \u5982\u679c\u64ad\u653e\u5931\u8d25\uff0c\u662f\u5426\u662f\u7528\u6237\u505c\u6b62\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\nint \u7b2c\u51e0\u4e2a\u6587\u4ef6\u5931\u8d25\u4e86\uff0c\u4ece1\u5f00\u59cb\n\u4f8b\u5b50\uff1a\nlocal result, user_stop, file_no = audio.getError(0)\n", "prefix": "audio.getError"}, "audio.config": {"body": "audio.config(${1:id},${2:paPin},${3:onLevel},${4:dacDelay},${5:paDelay},${6:dacPin},${7:dacLevel},${8:dacTimeDelay})", "description": "audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u7279\u6027\uff0c\u6bd4\u5982\u5b9e\u73b0\u81ea\u52a8\u63a7\u5236PA\u5f00\u5173\u3002\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u662f\u5fc5\u987b\u7684\uff0c\u4e00\u822c\u5728\u8c03\u7528play\u7684\u65f6\u5019\u624d\u9700\u8981\u81ea\u52a8\u63a7\u5236\uff0c\u5176\u4ed6\u60c5\u51b5\u6bd4\u5982\u4f60\u624b\u52a8\u63a7\u5236\u64ad\u653e\u65f6\uff0c\u5c31\u53ef\u4ee5\u81ea\u5df1\u63a7\u5236PA\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint PA\u63a7\u5236IO\nint PA\u6253\u5f00\u65f6\u7684\u7535\u5e73\nint \u5728DAC\u542f\u52a8\u524d\u63d2\u5165\u7684\u5197\u4f59\u65f6\u95f4\uff0c\u5355\u4f4d100ms\uff0c\u4e00\u822c\u7528\u4e8e\u5916\u90e8DAC\nint \u5728DAC\u542f\u52a8\u540e\uff0c\u5ef6\u8fdf\u591a\u957f\u65f6\u95f4\u6253\u5f00PA\uff0c\u5355\u4f4d1ms\nint \u5916\u90e8dac\u7535\u6e90\u63a7\u5236IO\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u5219\u8868\u793a\u4f7f\u7528\u5e73\u53f0\u9ed8\u8ba4IO\uff0c\u6bd4\u5982Air780E\u4f7f\u7528DACEN\u811a\uff0cair105\u5219\u4e0d\u542f\u7528\nint \u5916\u90e8dac\u6253\u5f00\u65f6\uff0c\u7535\u6e90\u63a7\u5236IO\u7684\u7535\u5e73\uff0c\u9ed8\u8ba4\u62c9\u9ad8\nint \u97f3\u9891\u64ad\u653e\u5b8c\u6bd5\u65f6\uff0cPA\u4e0eDAC\u5173\u95ed\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d1ms\uff0c\u9ed8\u8ba40ms\n\u4f8b\u5b50\uff1a\naudio.config(0, pin.PC0, 1) --PA\u63a7\u5236\u811a\u662fPC0\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cair105\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\naudio.config(0, 25, 1, 6, 200) --PA\u63a7\u5236\u811a\u662fGPIO25\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cAir780E\u4e91\u5587\u53ed\u677f\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\n", "prefix": "audio.config"}, "audio.vol": {"body": "audio.vol(${1:id},${2:value})", "description": "audio.vol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u97f3\u91cf\u8c03\u8282\uff0c\u76f4\u63a5\u5c06\u539f\u59cb\u6570\u636e\u653e\u5927\u6216\u8005\u7f29\u5c0f\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u5efa\u8bae\u5c3d\u91cf\u7528\u786c\u4ef6\u65b9\u6cd5\u53bb\u7f29\u653e\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~1000%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.vol"}, "audio.micVol": {"body": "audio.micVol(${1:id},${2:value})", "description": "audio.micVol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684mic\u97f3\u91cf\u8c03\u8282\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint mic\u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~100%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dmic\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.micVol"}, "audio.setBus": {"body": "audio.setBus(${1:id},${2:bus_type})", "description": "audio.setBus(id, bus_type) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u786c\u4ef6\u8f93\u51fa\u603b\u7ebf\uff0c\u53ea\u6709\u5bf9\u5e94soc\u8f6f\u786c\u4ef6\u5e73\u53f0\u652f\u6301\u624d\u8bbe\u7f6e\u5bf9\u5e94\u7c7b\u578b\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053,\u4f8b\u59820\nint \u603b\u7ebf\u7c7b\u578b, \u4f8b\u5982 audio.BUS_SOFT_DAC\nint \u786c\u4ef6id, \u4f8b\u5982 \u603b\u7ebf\u7c7b\u578b\u4e3aaudio.BUS_I2S\u65f6,\u786c\u4ef6id\u5373\u4e3ai2s codec\u7684i2c id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.setBus(0, audio.BUS_SOFT_DAC) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3a\u8f6f\u4ef6DAC\naudio.setBus(0, audio.BUS_I2S) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3aI2S\n", "prefix": "audio.setBus"}, "audio.debug": {"body": "audio.debug(${1:on_off})", "description": "audio.debug(on_off) - \u914d\u7f6e\u8c03\u8bd5\u4fe1\u606f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00 false\u5173\n", "prefix": "audio.debug"}, "audio.pm": {"body": "audio.pm(${1:id},${2:pm_mode})", "description": "audio.pm(id,pm_mode) - audio \u4f11\u7720\u63a7\u5236(\u4e00\u822c\u4f1a\u81ea\u52a8\u8c03\u7528\u4e0d\u9700\u8981\u624b\u52a8\u6267\u884c)\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u4f11\u7720\u6a21\u5f0f \n\u8fd4\u56de\u503c\uff1a\nboolean true\u6210\u529f\n\u4f8b\u5b50\uff1a\naudio.pm(multimedia_id,audio.RESUME)\n", "prefix": "audio.pm"}, "bit64.to32": {"body": "bit64.to32(${1:data64bit})", "description": "bit64.to32(data64bit) - 64bit\u6570\u636e\u8f6c\u621032bit\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nany \u6839\u636e64bit\u6570\u636e\u8f93\u51faint\u6216\u8005number\n", "prefix": "bit64.to32"}, "bit64.to64": {"body": "bit64.to64(${1:data32bit})", "description": "bit64.to64(data32bit) - 32bit\u6570\u636e\u8f6c\u621064bit\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint/number 32bit\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.to64"}, "bit64.show": {"body": "bit64.show(${1:a},${2:type},${3:flag})", "description": "bit64.show(a,type,flag) - 64bit\u6570\u636e\u683c\u5f0f\u5316\u6253\u5370\u6210\u5b57\u7b26\u4e32\uff0c\u7528\u4e8e\u663e\u793a\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u6253\u5370\u768464bit\u6570\u636e\nint \u8fdb\u5236\uff0c10=10\u8fdb\u5236\uff0c16=16\u8fdb\u5236\uff0c\u9ed8\u8ba410\uff0c\u53ea\u652f\u630110\u6216\u800516\nboolean \u6574\u5f62\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\u6253\u5370\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring \u53ef\u4ee5\u6253\u5370\u7684\u503c\n", "prefix": "bit64.show"}, "bit64.plus": {"body": "bit64.plus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.plus(a,b,flag1,flag2) - 64bit\u6570\u636e\u52a0,a+b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.plus"}, "bit64.minus": {"body": "bit64.minus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.minus(a,b,flag1,flag2) - 64bit\u6570\u636e\u51cf,a-b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.minus"}, "bit64.multi": {"body": "bit64.multi(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.multi(a,b,flag1,flag2) - 64bit\u6570\u636e\u4e58,a*b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.multi"}, "bit64.pide": {"body": "bit64.pide(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.pide(a,b,flag1,flag2) - 64bit\u6570\u636e\u9664,a/b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.pide"}, "bit64.shift": {"body": "bit64.shift(${1:a},${2:b},${3:flag})", "description": "bit64.shift(a,b,flag) - 64bit\u6570\u636e\u4f4d\u79fb a>>b \u6216\u8005 a<>\uff0c\u9ed8\u8ba4false\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.shift"}, "bit64.strtoll": {"body": "bit64.strtoll(${1:data},${2:base})", "description": "bit64.strtoll(data, base) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u4e3aLongLong\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8f6c\u6362\u7684\u6570\u636e,\u5fc5\u987b\u5b58\u5728\nint \u8f6c\u6362\u8fdb\u5236, \u9ed8\u8ba410, \u53ef\u900916\u62168\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.27 \u6dfb\u52a0\n-- \u63d0\u9192, \u5982\u679c\u8f6c\u6362\u5931\u8d25, \u662f\u8fd4\u56de9\u4e2a\u5b57\u8282\u76840x00\nlocal data = bit64.strtoll(\"864040064024194\", 10)\nlog.info(\"data\", data:toHex())\nlog.info(\"data\", bit64.show(data))\n", "prefix": "bit64.strtoll"}, "camera.init": {"body": "camera.init(${1:InitReg_or_cspi_id},${2:cspi_speed},${3:mode},${4:is_msb},${5:rx_bit},${6:seq_type},${7:is_ddr},${8:only_y},${9:scan_mode},${10:w},${11:h})", "description": "camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h) - \u521d\u59cb\u5316\u6444\u50cf\u5934\n\u4f20\u5165\u503c\uff1a\ntable/integer \u5982\u679c\u662ftable,\u5219\u662fDVP\u6444\u50cf\u5934\u7684\u914d\u7f6e\u89c1demo/camera/AIR105,\u540c\u65f6\u5ffd\u7565\u540e\u7eed\u53c2\u6570;\u5982\u679c\u662f\u6570\u5b57,\u5219\u662fcamera spi\u603b\u7ebf\u5e8f\u53f7\nint camera spi\u603b\u7ebf\u901f\u5ea6\nint camera spi\u6a21\u5f0f,0~3\nint \u5b57\u8282\u7684bit\u987a\u5e8f\u662f\u5426\u662fmsb,0\u54261\u662f\nint \u540c\u65f6\u63a5\u6536bit\u6570,1,2,4\nint byte\u5e8f\u5217,0~1\nint \u53cc\u8fb9\u6cbf\u91c7\u6837\u914d\u7f6e,0\u4e0d\u542f\u7528,\u5176\u4ed6\u503c\u6839\u636e\u5b9e\u9645SOC\u51b3\u5b9a\nint \u53ea\u63a5\u6536Y\u5206\u91cf\uff0c0\u4e0d\u542f\u7528\uff0c1\u542f\u7528\uff0c\u626b\u7801\u5fc5\u987b\u542f\u7528\uff0c\u5426\u5219\u4f1a\u5931\u8d25\nint \u5de5\u4f5c\u6a21\u5f0f\uff0ccamera.AUTO\u81ea\u52a8,camera.SCAN\u626b\u7801\nint \u6444\u50cf\u5934\u5bbd\u5ea6\nint \u6444\u50cf\u5934\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint/false \u6210\u529f\u8fd4\u56decamera_id\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera_id = camera.init(GC032A_InitReg)--\u5c4f\u5e55\u8f93\u51fargb\u56fe\u50cf\n--\u521d\u59cb\u5316\u540e\u9700\u8981start\u624d\u5f00\u59cb\u8f93\u51fa/\u626b\u7801\ncamera.start(camera_id)--\u5f00\u59cb\u6307\u5b9a\u7684camera\n", "prefix": "camera.init"}, "camera.on": {"body": "camera.on(${1:id},${2:event},${3:func})", "description": "camera.on(id, event, func) - \u6ce8\u518c\u6444\u50cf\u5934\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint camera id, camera 0\u51990, camera 1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncamera.on(0, \"scanned\", function(id, str)\n--id int camera id\n--str \u591a\u79cd\u7c7b\u578b false \u6444\u50cf\u5934\u6ca1\u6709\u6b63\u5e38\u5de5\u4f5c\uff0ctrue \u62cd\u7167\u6a21\u5f0f\u4e0b\u62cd\u7167\u6210\u529f\u5e76\u4fdd\u5b58\u5b8c\u6210\uff0c int \u539f\u59cb\u6570\u636e\u6a21\u5f0f\u4e0b\u672c\u6b21\u8fd4\u56de\u7684\u6570\u636e\u5927\u5c0f\uff0c string \u626b\u7801\u6a21\u5f0f\u4e0b\u626b\u7801\u6210\u529f\u540e\u7684\u89e3\u7801\u503c\n print(id, str)\nend)\n", "prefix": "camera.on"}, "camera.start": {"body": "camera.start(${1:id})", "description": "camera.start(id) - \u5f00\u59cb\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.start(0)\n", "prefix": "camera.start"}, "camera.stop": {"body": "camera.stop(${1:id})", "description": "camera.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.stop(0)\n", "prefix": "camera.stop"}, "camera.close": {"body": "camera.close(${1:id})", "description": "camera.close(id) - \u5173\u95ed\u6307\u5b9a\u7684camera\uff0c\u91ca\u653e\u76f8\u5e94\u7684IO\u8d44\u6e90\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.close(0)\n", "prefix": "camera.close"}, "camera.capture": {"body": "camera.capture(${1:id},${2:save_path},${3:quality})", "description": "camera.capture(id, save_path, quality) - camera\u62cd\u7167\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nstring/zbuff/nil save_path,\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\uff0c\u7a7a\u5219\u5199\u5728\u4e0a\u6b21\u8def\u5f84\u91cc\uff0c\u9ed8\u8ba4\u662f/capture.jpg\uff0c\u5982\u679c\u662fzbuff\uff0c\u5219\u5c06\u56fe\u7247\u4fdd\u5b58\u5728buff\u5185\u4e0d\u5199\u5165\u6587\u4ef6\u7cfb\u7edf\nint quality, jpeg\u538b\u7f29\u8d28\u91cf\uff0c1\u6700\u5dee\uff0c\u5360\u7528\u7a7a\u95f4\u5c0f\uff0c3\u6700\u9ad8\uff0c\u5360\u7528\u7a7a\u95f4\u6700\u5927\u800c\u4e14\u8d39\u65f6\u95f4\uff0c\u9ed8\u8ba41\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse,\u771f\u6b63\u5b8c\u6210\u540e\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\ncamera.capture(0)\n", "prefix": "camera.capture"}, "camera.video": {"body": "camera.video(${1:id},${2:w},${3:h},${4:out_path})", "description": "camera.video(id, w, h, out_path) - camera\u8f93\u51fa\u89c6\u9891\u6d41\u5230USB\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nint \u8f93\u51fa\u8def\u5f84\uff0c\u76ee\u524d\u53ea\u80fd\u7528\u865a\u62df\u4e32\u53e30\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.video(0, 320, 240, uart.VUART_0)\n", "prefix": "camera.video"}, "camera.startRaw": {"body": "camera.startRaw(${1:id},${2:w},${3:h},${4:buff})", "description": "camera.startRaw(id, w, h, buff) - \u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u8c03\u7528camera.getRaw\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nzbuff \u7528\u4e8e\u5b58\u653e\u6570\u636e\u7684\u7f13\u5b58\u533a\uff0c\u5927\u5c0f\u5fc5\u987b\u4e0d\u5c0f\u4e8ew X h X 2 byte\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.startRaw(0, 320, 240, buff)\n", "prefix": "camera.startRaw"}, "camera.getRaw": {"body": "camera.getRaw(${1:id})", "description": "camera.getRaw(id) - \u518d\u6b21\u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u7ee7\u7eed\u8c03\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.getRaw(0)\n", "prefix": "camera.getRaw"}, "camera.preview": {"body": "camera.preview(${1:id},${2:onoff})", "description": "camera.preview(id, onoff) - \u542f\u505ccamera\u9884\u89c8\u529f\u80fd\uff0c\u76f4\u63a5\u8f93\u51fa\u5230LCD\u4e0a\uff0c\u53ea\u6709\u786c\u4ef6\u652f\u6301\u7684SOC\u53ef\u4ee5\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nboolean true\u5f00\u542f\uff0cfalse\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.preview(1, true)\n", "prefix": "camera.preview"}, "cc.lastNum": {"body": "cc.lastNum()", "description": "cc.lastNum() - \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n", "prefix": "cc.lastNum"}, "cc.dial": {"body": "cc.dial(${1:sim_id},${2:number})", "description": "cc.dial(sim_id, number) - \u62e8\u6253\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\nstring \u7535\u8bdd\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nbool \u62e8\u6253\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.dial"}, "cc.hangUp": {"body": "cc.hangUp(${1:sim_id})", "description": "cc.hangUp(sim_id) - \u6302\u65ad\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n", "prefix": "cc.hangUp"}, "cc.accept": {"body": "cc.accept(${1:sim_id})", "description": "cc.accept(sim_id) - \u63a5\u542c\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n\u8fd4\u56de\u503c\uff1a\nbool \u63a5\u542c\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.accept"}, "cc.init": {"body": "cc.init(${1:multimedia_id})", "description": "cc.init(multimedia_id) - \u521d\u59cb\u5316\u7535\u8bdd\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nnumber multimedia_id \u591a\u5a92\u4f53id\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "cc.init"}, "cc.record": {"body": "cc.record(${1:on_off},${2:upload_zbuff1},${3:upload_zbuff2},${4:download_zbuff1},${5:download_zbuff2})", "description": "cc.record(on_off,upload_zbuff1, upload_zbuff2, download_zbuff1, download_zbuff2) - \u5f55\u97f3\u901a\u8bdd\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u542f\u5173\u95ed\u901a\u8bdd\u5f55\u97f3\u529f\u80fd\uff0cfalse\u6216\u8005nil\u5173\u95ed\uff0c\u5176\u4ed6\u5f00\u542f\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1,zbuff\u521b\u5efa\u65f6\u7684\u7a7a\u95f4\u5bb9\u91cf\u5fc5\u987b\u662f640\u7684\u500d\u6570,\u4e0b\u540c\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\uff0c\u5982\u679c\u5904\u4e8e\u901a\u8bdd\u72b6\u6001\uff0c\u4f1a\u5931\u8d25\n\u4f8b\u5b50\uff1a\nbuff1 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff2 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff3 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff4 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\ncc.record(true, buff1, buff2, buff3, buff4)\n", "prefix": "cc.record"}, "cc.quality": {"body": "cc.quality()", "description": "cc.quality() - \u83b7\u53d6\u5f53\u524d\u901a\u8bdd\u8d28\u91cf\n\u8fd4\u56de\u503c\uff1a\nint 1\u4e3a\u4f4e\u97f3\u8d28(8K)\uff0c2\u4e3a\u9ad8\u97f3\u8d28(16k)\uff0c0\u6ca1\u6709\u5728\u901a\u8bdd\n", "prefix": "cc.quality"}, "cc.on": {"body": "cc.on(${1:event},${2:func})", "description": "cc.on(event, func) - \u6ce8\u518c\u901a\u8bdd\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u540d\u79f0 \u97f3\u9891\u5f55\u97f3\u6570\u636e\u4e3a\"record\"\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\n", "prefix": "cc.on"}, "codec.create": {"body": "codec.create(${1:type},${2:isDecoder},${3:quality})", "description": "codec.create(type, isDecoder, quality) - \u521b\u5efa\u7f16\u89e3\u7801\u7528\u7684codec\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u7c7b\u578b\uff0c\u76ee\u524d\u652f\u6301codec.MP3 codec.AMR\nboolean \u662f\u5426\u662f\u89e3\u7801\u5668\uff0ctrue\u89e3\u7801\u5668\uff0cfalse\u7f16\u7801\u5668\uff0c\u9ed8\u8ba4true\uff0c\u662f\u89e3\u7801\u5668\nint \u7f16\u7801\u7b49\u7ea7\uff0c\u90e8\u5206bsp\u6709\u5185\u90e8\u7f16\u7801\u5668\uff0c\u53ef\u80fd\u9700\u8981\u63d0\u524d\u8f93\u5165\u7f16\u7801\u7b49\u7ea7\uff0c\u6bd4\u5982air780ep\u7684\u5185\u90e8amr\u7f16\u7801\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u89e3\u7801\u5668\nlocal decoder = codec.create(codec.MP3)--\u521b\u5efa\u4e00\u4e2amp3\u7684decoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR, false)--\u521b\u5efa\u4e00\u4e2aamr\u7684encoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR_WB, false, 8)--\u521b\u5efa\u4e00\u4e2aamr-wb\u7684encoder\uff0c\u7f16\u7801\u7b49\u7ea7\u9ed8\u8ba48\n", "prefix": "codec.create"}, "codec.info": {"body": "codec.info(${1:decoder},${2:file_path})", "description": "codec.info(decoder, file_path) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u97f3\u9891\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, audio_format, num_channels, sample_rate, bits_per_sample, is_signed= codec.info(coder, \"xxx\")\n", "prefix": "codec.info"}, "codec.data": {"body": "codec.data(${1:decoder},${2:out_buff})", "description": "codec.data(decoder, out_buff) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u539f\u59cb\u97f3\u9891\u6570\u636e\uff0c\u6bd4\u5982\u4eceMP3\u6587\u4ef6\u91cc\u89e3\u6790\u51faPCM\u6570\u636e\uff0c\u8fd9\u91cc\u7684\u6587\u4ef6\u8def\u5f84\u5df2\u7ecf\u5728codec.info\u4f20\u5165\uff0c\u4e0d\u9700\u8981\u518d\u6b21\u4f20\u5165\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nzbuff \u5b58\u653e\u8f93\u51fa\u6570\u636e\u7684zbuff\uff0c\u7a7a\u95f4\u5fc5\u987b\u4e0d\u5c11\u4e8e16KB\nint \u6700\u5c11\u89e3\u7801\u51fa\u591a\u5c11\u5b57\u8282\u7684\u97f3\u9891\u6570\u636e,\u9ed8\u8ba416384\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\n\u4f8b\u5b50\uff1a\n-- \u5927\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(16*1024)\nlocal result = codec.data(coder, buff)\n-- \u5c0f\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(8*1024)\nlocal result = codec.data(coder, buff, 4096)\n", "prefix": "codec.data"}, "codec.encode": {"body": "codec.encode(${1:coder},${2:in_buffer},${3:out_buffer},${4:mode})", "description": "codec.encode(coder, in_buffer, out_buffer, mode) - \u7f16\u7801\u97f3\u9891\u6570\u636e\uff0c\u7531\u4e8eflash\u548cram\u7a7a\u95f4\u4e00\u822c\u6bd4\u8f83\u6709\u9650\uff0c\u9664\u4e86\u90e8\u5206bsp\u6709\u5185\u90e8amr\u7f16\u7801\u529f\u80fd\uff0c\u76ee\u524d\u53ea\u652f\u6301amr-nb\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nuserdata codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\nzbuff \u8f93\u5165\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u4ece0\u5230used\nzbuff \u8f93\u51fa\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u81ea\u52a8\u6dfb\u52a0\u5230buff\u7684\u5c3e\u90e8,\u5982\u679c\u7a7a\u95f4\u5927\u5c0f\u4e0d\u8db3,\u4f1a\u81ea\u52a8\u6269\u5c55,\u4f46\u662f\u4f1a\u989d\u5916\u6d88\u8017\u65f6\u95f4,\u751a\u81f3\u4f1a\u5931\u8d25,\u6240\u4ee5\u5c3d\u91cf\u4e00\u5f00\u59cb\u5c31\u7ed9\u8db3\u7a7a\u95f4\nint amr_nb\u7684\u7f16\u7801\u7b49\u7ea7 0~7(\u5373 MR475~MR122)\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40 amr_wb\u7684\u7f16\u7801\u7b49\u7ea7 0~8,\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncodec.encode(amr_coder, inbuf, outbuf, codec.AMR_)\n", "prefix": "codec.encode"}, "codec.release": {"body": "codec.release(${1:coder})", "description": "codec.release(coder) - \u91ca\u653e\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f20\u5165\u503c\uff1a\ncoder codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f8b\u5b50\uff1a\ncodec.release(coder)\n", "prefix": "codec.release"}, "coremark.run": {"body": "coremark.run()", "description": "coremark.run() - \u5f00\u59cb\u8dd1\u5206\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u7ed3\u679c\u76f4\u63a5\u6253\u5370\u5728\u65e5\u5fd7\u4e2d\n\u4f8b\u5b50\uff1a\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b, \u8fd9\u4e2a\u5e93\u90fd\u4e0d\u4f1a\u5305\u542b\u5728\u6b63\u5f0f\u7248\u56fa\u4ef6\u91cc\n-- \u82e5\u9700\u4f7f\u7528,\u53ef\u4ee5\u53c2\u8003wiki\u6587\u6863\u81ea\u884c\u7f16\u8bd1\u6216\u4f7f\u7528\u4e91\u7f16\u8bd1\n-- https://wiki.luatos.com/develop/compile.html\n\n-- \u8dd1\u5206\u7684main.lua \u5e94\u79fb\u9664\u786c\u72d7\u4ee3\u7801, \u9632\u6b62\u91cd\u542f\n-- \u82e5\u8bbe\u5907\u652f\u6301\u81ea\u52a8\u4f11\u7720, \u5e94\u5173\u95ed\u4f11\u7720\u529f\u80fd\n-- \u82e5\u8bbe\u5907\u652f\u6301\u66f4\u591a\u7684\u9891\u7387\u8fd0\u884c, \u5efa\u8bae\u8bbe\u7f6e\u5230\u6700\u9ad8\u9891\u7387\n-- \u4f7f\u7528 -O3 \u6bd4 -O2 -Os \u7684\u5206\u6570\u66f4\u9ad8, \u901a\u5e38\u60c5\u51b5\u4e0b\n\n-- \u4f1a\u4e00\u76f4\u72ec\u5360\u7ebf\u7a0b\u5230\u6267\u884c\u5b8c\u6bd5, \u7136\u540e\u5728\u63a7\u5236\u53f0\u8f93\u51fa\u7ed3\u679c\ncoremark.run()\n\n-- \u8dd1\u5206\u56fe\u4e00\u4e50^_^\n\n", "prefix": "coremark.run"}, "crypto.md5": {"body": "crypto.md5(${1:str})", "description": "crypto.md5(str) - \u8ba1\u7b97md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684md5\nlog.info(\"md5\", crypto.md5(\"abc\"))\n", "prefix": "crypto.md5"}, "crypto.hmac_md5": {"body": "crypto.hmac_md5(${1:str},${2:key})", "description": "crypto.hmac_md5(str, key) - \u8ba1\u7b97hmac_md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_md5\nlog.info(\"hmac_md5\", crypto.hmac_md5(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_md5"}, "crypto.sha1": {"body": "crypto.sha1(${1:str})", "description": "crypto.sha1(str) - \u8ba1\u7b97sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha1\nlog.info(\"sha1\", crypto.sha1(\"abc\"))\n", "prefix": "crypto.sha1"}, "crypto.hmac_sha1": {"body": "crypto.hmac_sha1(${1:str},${2:key})", "description": "crypto.hmac_sha1(str, key) - \u8ba1\u7b97hmac_sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha1\nlog.info(\"hmac_sha1\", crypto.hmac_sha1(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha1"}, "crypto.sha256": {"body": "crypto.sha256(${1:str})", "description": "crypto.sha256(str) - \u8ba1\u7b97sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha256\nlog.info(\"sha256\", crypto.sha256(\"abc\"))\n", "prefix": "crypto.sha256"}, "crypto.hmac_sha256": {"body": "crypto.hmac_sha256(${1:str},${2:key})", "description": "crypto.hmac_sha256(str, key) - \u8ba1\u7b97hmac_sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha256\nlog.info(\"hmac_sha256\", crypto.hmac_sha256(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha256"}, "crypto.sha512": {"body": "crypto.sha512(${1:str})", "description": "crypto.sha512(str) - \u8ba1\u7b97sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha512\nlog.info(\"sha512\", crypto.sha512(\"abc\"))\n", "prefix": "crypto.sha512"}, "crypto.hmac_sha512": {"body": "crypto.hmac_sha512(${1:str},${2:key})", "description": "crypto.hmac_sha512(str, key) - \u8ba1\u7b97hmac_sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha512\nlog.info(\"hmac_sha512\", crypto.hmac_sha512(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha512"}, "crypto.cipher_encrypt": {"body": "crypto.cipher_encrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_encrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97AES\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_encrypt(\"AES-128-CBC\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\", \"1234567890666666\")\n", "prefix": "crypto.cipher_encrypt"}, "crypto.cipher_decrypt": {"body": "crypto.cipher_decrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_decrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u89e3\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u7528AES\u52a0\u5bc6,\u7136\u540e\u7528AES\u89e3\u5bc6\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_decrypt(\"AES-128-ECB\", \"PKCS7\", data, \"1234567890123456\")\n-- data\u7684hex\u4e3a 757CCD0CDC5C90EADBEEECF638DD0000\n-- data2\u7684\u503c\u4e3a 1234567890123456\n", "prefix": "crypto.cipher_decrypt"}, "crypto.crc16": {"body": "crypto.crc16(${1:method},${2:data},${3:poly},${4:initial},${5:finally},${6:inReversemoutReverse})", "description": "crypto.crc16(method, data, poly, initial, finally, inReversem outReverse) - \u8ba1\u7b97CRC16\n\u4f20\u5165\u503c\uff1a\nstring CRC16\u6a21\u5f0f\uff08\"IBM\",\"MAXIM\",\"USB\",\"MODBUS\",\"CCITT\",\"CCITT-FALSE\",\"X25\",\"XMODEM\",\"DNP\",\"USER-DEFINED\"\uff09\nstring \u5b57\u7b26\u4e32\nint poly\u503c\nint initial\u503c\nint finally\u503c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16\nlocal crc = crypto.crc16(\"\")\n", "prefix": "crypto.crc16"}, "crypto.crc16_modbus": {"body": "crypto.crc16_modbus(${1:data},${2:start})", "description": "crypto.crc16_modbus(data, start) - \u76f4\u63a5\u8ba1\u7b97modbus\u7684crc16\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint \u521d\u59cb\u5316\u503c,\u9ed8\u8ba40xFFFF\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16 modbus\nlocal crc = crypto.crc16_modbus(data)\n-- 2023.11.06 \u65b0\u589e\u521d\u59cb\u503c\u8bbe\u7f6e\ncrc = crypto.crc16_modbus(data, 0xFFFF)\n", "prefix": "crypto.crc16_modbus"}, "crypto.crc32": {"body": "crypto.crc32(${1:data})", "description": "crypto.crc32(data) - \u8ba1\u7b97crc32\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC32\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC32\nlocal crc = crypto.crc32(data)\n", "prefix": "crypto.crc32"}, "crypto.crc8": {"body": "crypto.crc8(${1:data},${2:poly},${3:start},${4:revert})", "description": "crypto.crc8(data, poly, start, revert) - \u8ba1\u7b97crc8\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5c06\u5ffd\u7565\u9664\u4e86\u6570\u636e\u5916\u6240\u6709\u53c2\u6570\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40\nboolean \u662f\u5426\u9700\u8981\u9006\u5e8f\u5904\u7406\uff0c\u9ed8\u8ba4\u5426\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC8\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC8\nlocal crc = crypto.crc8(data)\nlocal crc = crypto.crc8(data, 0x31, 0xff, false)\n", "prefix": "crypto.crc8"}, "crypto.crc7": {"body": "crypto.crc7(${1:data},${2:poly},${3:start})", "description": "crypto.crc7(data, poly, start) - \u8ba1\u7b97crc7\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40xE5\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40x00\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC7\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC7, \u672cAPI\u4e8e2023.10.07\u65b0\u589e\nlocal crc = crypto.crc7(data)\nlocal crc = crypto.crc7(data, 0x31, 0xff)\n", "prefix": "crypto.crc7"}, "crypto.trng": {"body": "crypto.trng(${1:len})", "description": "crypto.trng(len) - \u751f\u6210\u771f\u968f\u673a\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6307\u5b9a\u968f\u673a\u6570\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u751f\u621032\u4f4d\u968f\u673a\u6570ir\nlocal r = crypto.trng(4)\nlocal _, ir = pack.unpack(r, \"I\")\n", "prefix": "crypto.trng"}, "crypto.totp": {"body": "crypto.totp(${1:secret},${2:time})", "description": "crypto.totp(secret,time) - \u8ba1\u7b97TOTP\u52a8\u6001\u5bc6\u7801\u7684\u7ed3\u679c\n\u4f20\u5165\u503c\uff1a\nstring \u7f51\u7ad9\u63d0\u4f9b\u7684\u5bc6\u94a5\uff08\u5c31\u662fBASE32\u7f16\u7801\u540e\u7684\u7ed3\u679c\uff09\nint \u53ef\u9009\uff0c\u65f6\u95f4\u6233\uff0c\u9ed8\u8ba4\u5f53\u524d\u65f6\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u8ba1\u7b97\u5f97\u51fa\u7684\u516d\u4f4d\u6570\u7ed3\u679c \u8ba1\u7b97\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--\u4f7f\u7528\u5f53\u524d\u7cfb\u7edf\u65f6\u95f4\u8ba1\u7b97\nlocal otp = crypto.totp(\"asdfassdfasdfass\")\n", "prefix": "crypto.totp"}, "crypto.base64_encode": {"body": "crypto.base64_encode(${1:data})", "description": "crypto.base64_encode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u7f16\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.toBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_encode"}, "crypto.base64_decode": {"body": "crypto.base64_decode(${1:data})", "description": "crypto.base64_decode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.fromBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_decode"}, "crypto.cipher_list": {"body": "crypto.cipher_list()", "description": "crypto.cipher_list() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.27\u6dfb\u52a0\nlocal ciphers = crypto.cipher_list()\nif ciphers then\n log.info(\"crypto\", \"ciphers list\", json.encode(ciphers))\nend\n", "prefix": "crypto.cipher_list"}, "crypto.cipher_suites": {"body": "crypto.cipher_suites()", "description": "crypto.cipher_suites() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.11.16\u6dfb\u52a0\nlocal suites = crypto.cipher_suites()\nif suites then\n log.info(\"crypto\", \"ciphers suites\", json.encode(suites))\nend\n", "prefix": "crypto.cipher_suites"}, "crypto.md_file": {"body": "crypto.md_file(${1:tp},${2:path},${3:hmac})", "description": "crypto.md_file(tp, path, hmac) - \u8ba1\u7b97\u6587\u4ef6\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u6587\u4ef6\u8def\u5f84, \u4f8b\u5982 /luadb/logo.jpg\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\"))\nlog.info(\"sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\"))\nlog.info(\"sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\", \"123456\"))\n", "prefix": "crypto.md_file"}, "crypto.md": {"body": "crypto.md(${1:tp},${2:data},${3:hmac})", "description": "crypto.md(tp, data, hmac) - \u8ba1\u7b97\u6570\u636e\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u5f85\u5904\u7406\u7684\u6570\u636e\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md(\"MD5\", \"1234567890\"))\nlog.info(\"sha1\", crypto.md(\"SHA1\", \"1234567890\"))\nlog.info(\"sha256\", crypto.md(\"SHA256\", \"1234567890\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md(\"MD5\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md(\"SHA1\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md(\"SHA256\", \"1234567890\", \"123456\"))\n", "prefix": "crypto.md"}, "crypto.hash_init": {"body": "crypto.hash_init(${1:tp})", "description": "crypto.hash_init(tp) - \u521b\u5efa\u6d41\u5f0fhash\u7528\u7684stream\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5199\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring hmac\u503c\uff0c\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u65e0hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\")\n\n-- \u5e26hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\", \"123456\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\", \"123456\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\", \"123456\")\n", "prefix": "crypto.hash_init"}, "crypto.hash_update": {"body": "crypto.hash_update(${1:stream},${2:data})", "description": "crypto.hash_update(stream, data) - \u6d41\u5f0fhash\u66f4\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream, \u5fc5\u9009\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nreturn \u65e0\n\u4f8b\u5b50\uff1a\ncrypto.hash_update(stream, \"OK\")\n", "prefix": "crypto.hash_update"}, "crypto.hash_finish": {"body": "crypto.hash_finish(${1:stream})", "description": "crypto.hash_finish(stream) - \u83b7\u53d6\u6d41\u5f0fhash\u6821\u9a8c\u503c\u5e76\u91ca\u653e\u521b\u5efa\u7684stream\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u8ba1\u7b97\u5f97\u51fa\u7684\u6d41\u5f0fhash\u503c\u7684hex\u5b57\u7b26\u4e32\uff0c\u5931\u8d25\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nlocal hashResult = crypto.hash_finish(stream)\n", "prefix": "crypto.hash_finish"}, "crypto.checksum": {"body": "crypto.checksum(${1:data},${2:mode})", "description": "crypto.checksum(data, mode) - \u8ba1\u7b97checksum\u6821\u9a8c\u548c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nint \u6a21\u5f0f,\u7d2f\u52a0\u6a21\u5f0f, 0 - \u5f02\u6216, 1 - \u7d2f\u52a0, \u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nint checksum\u503c,\u6821\u9a8c\u548c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728 2022.12.28 \u6dfb\u52a0\n-- \u5355\u7eaf\u8ba1\u7b97checksum\u503c\nlocal ck = crypto.checksum(\"OK\")\nlog.info(\"checksum\", \"ok\", string.format(\"%02X\", ck))\n-- \u7b2c\u4e8c\u4e2a\u53c2\u6570mode\u57282023.5.23\u65e5\u6dfb\u52a0\n", "prefix": "crypto.checksum"}, "dac.open": {"body": "dac.open(${1:ch},${2:freq},${3:mode})", "description": "dac.open(ch, freq, mode) - \u6253\u5f00DAC\u901a\u9053,\u5e76\u914d\u7f6e\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nint \u8f93\u51fa\u9891\u7387,\u5355\u4f4dhz\nint \u6a21\u5f0f,\u9ed8\u8ba4\u4e3a0,\u9884\u7559\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\nend\n\n", "prefix": "dac.open"}, "dac.write": {"body": "dac.write(${1:ch},${2:data})", "description": "dac.write(ch, data) - \u4ece\u6307\u5b9aDAC\u901a\u9053\u8f93\u51fa\u4e00\u6bb5\u6ce2\u5f62,\u6216\u8005\u5355\u4e2a\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nstring \u82e5\u8f93\u51fa\u56fa\u5b9a\u503c,\u53ef\u4ee5\u586b\u6570\u503c, \u82e5\u8f93\u51fa\u6ce2\u5f62,\u586bstring\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.write"}, "dac.close": {"body": "dac.close(${1:ch})", "description": "dac.close(ch) - \u5173\u95edDAC\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.close"}, "disp.init": {"body": "disp.init(${1:conf})", "description": "disp.init(conf) - \u663e\u793a\u5c4f\u521d\u59cb\u5316,\u8bf7\u4f7f\u7528u8g2\u5e93\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- disp\u5e93\u7684\u6240\u6709API\u5747\u5df2\u5408\u5e76\u5230u8g2\u5e93\n-- disp\u5e93\u5df2\u7ecf\u6620\u5c04\u4e3au8g2\u5e93,\u6240\u6709API\u5747\u4ee3\u7406\u5230u8g2,\u8bf7\u67e5\u9605u8g2\u5e93\u7684API\n", "prefix": "disp.init"}, "eink.init": {"body": "eink.init(${1:tp},${2:args},${3:spi_device})", "description": "eink.init(tp, args,spi_device) - eink\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nnumber eink\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1ahttps://wiki.luatos.com/api/eink.html#id1\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_busy\uff08busy\uff09
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1aeink\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1aeink\u590d\u4f4d\u5f15\u811a\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684eink.MODEL_4in2bc) \u6ce8\u610f:eink\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_eink = spi.deviceSetup(0,20,0,0,8,20000000,spi.MSB,1,1)\nlog.info(\"eink.init\",\neink.init(eink.MODEL_4in2bc,{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_eink))\n", "prefix": "eink.init"}, "eink.setup": {"body": "eink.setup(${1:full},${2:spiid},${3:pin_busy},${4:pin_reset},${5:pin_dc},${6:pin_cs})", "description": "eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs) - \u521d\u59cb\u5316eink\n\u4f20\u5165\u503c\uff1a\nint \u5168\u5c4f\u5237\u65b00,\u5c40\u90e8\u5237\u65b01,\u9ed8\u8ba4\u662f\u5168\u5c4f\u5237\u65b0\nint \u6240\u5728\u7684spi,\u9ed8\u8ba4\u662f0\nint Busy \u5fd9\u4fe1\u53f7\u7ba1\u811a\nint Reset \u590d\u4f4d\u7ba1\u811a\nint DC \u6570\u636e\u547d\u4ee4\u9009\u62e9\u7ba1\u811a\nint CS \u4f7f\u80fd\u7ba1\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "eink.setup"}, "eink.sleep": {"body": "eink.sleep()", "description": "eink.sleep() - \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\uff0c\u518d\u6b21\u4f7f\u7528\u65f6\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\n", "prefix": "eink.sleep"}, "eink.clear": {"body": "eink.clear(${1:color},${2:force})", "description": "eink.clear(color, force) - \u6e05\u9664\u7ed8\u56fe\u7f13\u51b2\u533a\uff0c\u9ed8\u8ba4\u4e0d\u4f1a\u9a6c\u4e0a\u5237\u65b0\u5230\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nnumber color \u53ef\u9009\uff0c\u9ed8\u8ba41\u3002\u5237\u5c4f\u989c\u8272\nbool force \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u9a6c\u4e0a\u6e05\u5c4f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.clear"}, "eink.setWin": {"body": "eink.setWin(${1:width},${2:height},${3:rotate})", "description": "eink.setWin(width, height, rotate) - \u8bbe\u7f6e\u7a97\u53e3\n\u4f20\u5165\u503c\uff1a\nint width \u5bbd\u5ea6\nint height \u9ad8\u5ea6\nint rotate \u663e\u793a\u65b9\u5411,0/1/2/3, \u76f8\u5f53\u4e8e\u65cb\u8f6c0\u5ea6/90\u5ea6/180\u5ea6/270\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.setWin"}, "eink.getWin": {"body": "eink.getWin()", "description": "eink.getWin() - \u83b7\u53d6\u7a97\u53e3\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint width \u5bbd\nint height \u9ad8\nint rotate \u65cb\u8f6c\u65b9\u5411\n", "prefix": "eink.getWin"}, "eink.setFont": {"body": "eink.setFont(${1:font})", "description": "eink.setFont(font) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata \u5b57\u4f53\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684print\u6709\u6548\neink.setFont(eink.font_opposansm12_chinese)\n", "prefix": "eink.setFont"}, "eink.print": {"body": "eink.print(${1:x},${2:y},${3:str},${4:colored})", "description": "eink.print(x, y, str, colored) - \u7ed8\u5236\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u5b57\u7b26\u4e32\nint \u989c\u8272, \u53ef\u4ee5\u662f0\u6216\u80051, \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5148\u8bbe\u7f6e\u5b57\u4f53, \u7136\u540e\u5199\u5b57\n-- \u53ef\u7528\u5b57\u4f53\u53d6\u51b3\u4e8e\u5177\u4f53\u7684\u56fa\u4ef6, \u5982\u679c\u6ca1\u6709\u4f60\u60f3\u8981\u7684\u5927\u5c0f,\u53ef\u4ee5\u4e91\u7f16\u8bd1\u4e00\u4efd\u81ea\u5b9a\u4e49\u56fa\u4ef6\n-- font_opposansm8_chinese\n-- font_opposansm10_chinese\n-- font_opposansm12_chinese\n-- font_opposansm14_chinese\n-- font_opposansm16_chinese\neink.setFont(eink.font_opposansm12_chinese)\neink.print(10, 20, \"LuatOS\")\n", "prefix": "eink.print"}, "eink.show": {"body": "eink.show(${1:x},${2:y},${3:noClear})", "description": "eink.show(x, y, noClear) - \u5c06\u7f13\u51b2\u533a\u56fe\u50cf\u8f93\u51fa\u5230\u5c4f\u5e55\n\u4f20\u5165\u503c\uff1a\nint x \u8f93\u51fa\u7684x\u5750\u6807,\u9ed8\u8ba40\nint y \u8f93\u51fa\u7684y\u5750\u6807,\u9ed8\u8ba40\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.show"}, "eink.draw": {"body": "eink.draw(${1:buff},${2:buff2},${3:noclear})", "description": "eink.draw(buff, buff2, noclear) - \u76f4\u63a5\u8f93\u51fa\u6570\u636e\u5230\u5c4f\u5e55,\u652f\u6301\u53cc\u8272\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u6307\u9488\nuserdata zbuff\u6307\u9488\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.draw"}, "eink.line": {"body": "eink.line(${1:x},${2:y},${3:x2},${4:y2},${5:colored})", "description": "eink.line(x, y, x2, y2, colored) - \u7f13\u51b2\u533a\u7ed8\u5236\u7ebf\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u70b9x\u5750\u6807\nint \u8d77\u70b9y\u5750\u6807\nint \u7ec8\u70b9x\u5750\u6807\nint \u7ec8\u70b9y\u5750\u6807\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.line(0, 0, 10, 20, 0)\n", "prefix": "eink.line"}, "eink.rect": {"body": "eink.rect(${1:x},${2:y},${3:x2},${4:y2},${5:colored},${6:fill})", "description": "eink.rect(x, y, x2, y2, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u77e9\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u9876\u70b9x\u5750\u6807\nint \u5de6\u4e0a\u9876\u70b9y\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9x\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9y\u5750\u6807\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.rect(0, 0, 10, 20)\neink.rect(0, 0, 10, 20,0, 1) -- Filled\n", "prefix": "eink.rect"}, "eink.circle": {"body": "eink.circle(${1:x},${2:y},${3:radius},${4:colored},${5:fill})", "description": "eink.circle(x, y, radius, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u5706\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3x\u5750\u6807\nint \u5706\u5fc3y\u5750\u6807\nint \u534a\u5f84\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.circle(0, 0, 10)\neink.circle(0, 0, 10, 1, 1) -- Filled\n", "prefix": "eink.circle"}, "eink.qrcode": {"body": "eink.qrcode(${1:x},${2:y},${3:str},${4:size})", "description": "eink.qrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.qrcode"}, "eink.bat": {"body": "eink.bat(${1:x},${2:y},${3:bat})", "description": "eink.bat(x, y, bat) - \u7f13\u51b2\u533a\u7ed8\u5236\u7535\u6c60\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u7535\u6c60\u7535\u538b,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.bat"}, "eink.weather_icon": {"body": "eink.weather_icon(${1:x},${2:y},${3:code})", "description": "eink.weather_icon(x, y, code) - \u7f13\u51b2\u533a\u7ed8\u5236\u5929\u6c14\u56fe\u6807\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u5929\u6c14\u4ee3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.weather_icon"}, "eink.model": {"body": "eink.model(${1:m})", "description": "eink.model(m) - \u8bbe\u7f6e\u58a8\u6c34\u5c4f\u9a71\u52a8\u578b\u53f7\n\u4f20\u5165\u503c\uff1a\nint \u578b\u53f7\u540d\u79f0, \u4f8b\u5982 eink.model(eink.MODEL_1in54_V2)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.model"}, "eink.drawXbm": {"body": "eink.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "eink.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\neink.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "eink.drawXbm"}, "eink.setCtx": {"body": "eink.setCtx(${1:index})", "description": "eink.setCtx(index) - \u5207\u6362\u989c\u8272\u753b\u677f, \u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u989c\u8272\u7d22\u5f15, \u9ed1\u8272\u4e3a0, \u7ea2\u8272\u4e3a1\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f, \u5bf9\u5355\u8272\u58a8\u6c34\u5c4f(\u53ea\u6709\u9ed1\u767d)\u7684\u65e0\u6548\neink.setCtx(1)\n-- \u5207\u6362\u540e, \u6240\u6709drawXXX\u90fd\u4f1a\u64cd\u4f5c\u5728\u6307\u5b9a\u989c\u8272\u7684\u753b\u677f\n", "prefix": "eink.setCtx"}, "eink.async": {"body": "eink.async(${1:index})", "description": "eink.async(index) - \u5f02\u6b65\u65b9\u5f0f\uff0c\u4f7f\u7528\u6b64\u65b9\u5f0f\u9700\u8981\u5148 require(\"sysplus\") \u4e4b\u540e eink.clear().wait() eink.show().wait()\u8fdb\u884c\u5237\u5c4f\n\u4f20\u5165\u503c\uff1a\nint 1 \u4f7f\u7528\u5f02\u6b65\n\u4f8b\u5b50\uff1a\n eink.async(1)\n spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,1)\n eink.init(eink.MODEL_1in54,\n {port = \"device\",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},\n spi_eink)\n eink.setWin(200, 200, 0)\n sys.wait(100)\n log.info(\"e-paper 1.54\", \"Testing Go\")\n eink.print(30, 20, \"LuatOS-AIR780E\",0x00)\n eink.show().wait()\n log.info(\"e-paper 1.54\", \"Testing End\")\n", "prefix": "eink.async"}, "errDump.dump": {"body": "errDump.dump(${1:zbuff},${2:type},${3:isDelete})", "description": "errDump.dump(zbuff, type, isDelete) - \u624b\u52a8\u8bfb\u53d6\u5f02\u5e38\u65e5\u5fd7\uff0c\u4e3b\u8981\u7528\u4e8e\u7528\u6237\u5c06\u65e5\u5fd7\u53d1\u9001\u7ed9\u81ea\u5df1\u7684\u670d\u52a1\u5668\u800c\u4e0d\u662fIOT\u5e73\u53f0\uff0c\u5982\u679c\u5728errDump.config\u914d\u7f6e\u4e86\u5468\u671f\u4e0a\u4f20\uff0c\u5219\u4e0d\u80fd\u4f7f\u7528\u672c\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nzbuff \u65e5\u5fd7\u4fe1\u606f\u7f13\u5b58\uff0c\u5982\u679c\u4e3anil\u5c31\u4e0d\u4f1a\u8bfb\u51fa\uff0c\u4e00\u822c\u5f53\nint \u65e5\u5fd7\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709errDump.TYPE_SYS\u548cerrDump.TYPE_USR\nboolean \u662f\u5426\u5220\u9664\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nboolean true\u8868\u793a\u672c\u6b21\u8bfb\u53d6\u524d\u5e76\u6ca1\u6709\u5199\u5165\u6570\u636e\uff0cfalse\u53cd\u4e4b\uff0c\u5728\u5220\u9664\u65e5\u5fd7\u524d\uff0c\u6700\u597d\u518d\u8bfb\u4e00\u4e0b\u786e\u4fdd\u6ca1\u6709\u65b0\u7684\u6570\u636e\u5199\u5165\u4e86\n\u4f8b\u5b50\uff1a\nlocal result = errDump.dump(buff, errDump.TYPE_SYS, false) --\u8bfb\u51fa\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\nlocal result = errDump.dump(nil, errDump.TYPE_SYS, true) --\u6e05\u9664\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\n", "prefix": "errDump.dump"}, "errDump.record": {"body": "errDump.record(${1:string})", "description": "errDump.record(string) - \u5199\u5165\u7528\u6237\u7684\u5f02\u5e38\u65e5\u5fd7\uff0c\u6ce8\u610f\u6700\u5927\u53ea\u67094KB\uff0c\u8d85\u8fc7\u90e8\u5206\u65b0\u7684\u8986\u76d6\u65e7\u7684\uff0c\u5f00\u542f\u81ea\u52a8\u4e0a\u4f20\u540e\u4f1a\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\n\u4f20\u5165\u503c\uff1a\nstring \u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.record(\"socket long time no connect\") --\u8bb0\u5f55\u4e0b\"socket long time no connect\"\n", "prefix": "errDump.record"}, "errDump.config": {"body": "errDump.config(${1:enable},${2:period},${3:user_flag},${4:custom_id},${5:host},${6:port})", "description": "errDump.config(enable, period, user_flag, custom_id, host, port) - \u914d\u7f6e\u5173\u952e\u65e5\u5fd7\u4e0a\u4f20IOT\u5e73\u53f0\uff0c\u8fd9\u91cc\u7684\u65e5\u5fd7\u5305\u62ec\u5f15\u8d77luavm\u5f02\u5e38\u9000\u51fa\u7684\u65e5\u5fd7\u548c\u7528\u6237\u901a\u8fc7record\u5199\u5165\u7684\u65e5\u5fd7\uff0c\u7c7b\u4f3c\u4e8eair\u7684errDump\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u542f\u7528\u8bb0\u5f55\u529f\u80fd\uff0cfalse\u7684\u8bdd\u5c06\u4e0d\u4f1a\u8bb0\u5f55\u4efb\u4f55\u65e5\u5fd7\nint \u5b9a\u65f6\u4e0a\u4f20\u5468\u671f\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4600\u79d2\uff0c\u8fd9\u4e2a\u662f\u81ea\u52a8\u4e0a\u4f20\u65f6\u5019\u540e\u7684\u91cd\u8bd5\u65f6\u95f4\u65f6\u95f4\uff0c\u5728\u5f00\u673a\u540e\u6216\u8005\u6709record\u64cd\u4f5c\u540e\u4f1a\u5f88\u5feb\u5c1d\u8bd5\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\u4e00\u6b21\uff0c\u5982\u679c\u4e3a0\uff0c\u5219\u4e0d\u4f1a\u4e0a\u4f20\uff0c\u7531\u7528\u6237dump\u540e\u81ea\u5df1\u4e0a\u4f20\u81ea\u5df1\u7684\u5e73\u53f0\nstring \u7528\u6237\u7684\u7279\u6b8a\u6807\u8bc6\uff0c\u53ef\u4ee5\u4e3a\u7a7a\nstring \u8bbe\u5907\u8bc6\u522b\u53f7, 4G\u8bbe\u5907\u9ed8\u8ba4\u662fimei,\u5176\u4ed6\u8bbe\u5907\u9ed8\u8ba4\u662fmcu.unique_id\nstring \u670d\u52a1\u5668\u57df\u540d,\u9ed8\u8ba4dev_msg1.openluat.com\nint \u670d\u52a1\u5668\u7aef\u53e3,\u9ed8\u8ba4\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.config(true, 3600, \"12345678\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f1a\u5728imei\u540e\u9644\u52a0\u4e0a12345678\nerrDump.config(false) --\u5173\u95ed\u8bb0\u5f55\u529f\u80fd\uff0c\u4e0d\u518d\u4e0a\u4f20\nerrDump.config(true, 0) --\u8bb0\u5f55\uff0c\u4f46\u662f\u4e0d\u4f1a\u4e3b\u52a8\u4e0a\u4f20\uff0c\u7531\u7528\u6237\u5b9e\u73b0\u4e0a\u4f20\u529f\u80fd\n\n-- 2023.09.22\u65b0\u589ecustom_id\u53c2\u6570\nerrDump.config(true, 3600, nil, \"ABC\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u8bbe\u5907\u8bc6\u522b\u53f7ABC\n\n-- 2023.12.8 \u65b0\u589ehost\u548cport\u53c2\u6570\nerrDump.config(true, 3600, nil, nil, \"dev_msg1.openluat.com\", 12425)\n", "prefix": "errDump.config"}, "fastlz.compress": {"body": "fastlz.compress(${1:data},${2:level})", "description": "fastlz.compress(data, level) - \u5feb\u901f\u538b\u7f29\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nint \u538b\u7f29\u7ea7\u522b,\u9ed8\u8ba41, \u53ef\u90091\u6216\u80052, 2\u7684\u538b\u7f29\u6bd4\u66f4\u9ad8(\u6709\u65f6\u5019)\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u538b\u7f29\u8fc7\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u5982\u4e0b\n-- \u7cfb\u7edf\u5185\u5b58, \u56fa\u5b9a32k\n-- lua\u5185\u5b58, \u539f\u59cb\u6570\u636e\u7684\u5927\u5c0f\u76841.05\u500d,\u6700\u5c0f\u5360\u75281024\u5b57\u8282.\n", "prefix": "fastlz.compress"}, "fastlz.uncompress": {"body": "fastlz.uncompress(${1:data},${2:maxout})", "description": "fastlz.uncompress(data, maxout) - \u5feb\u901f\u89e3\u538b\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e\nint \u89e3\u538b\u540e\u7684\u6700\u5927\u5927\u5c0f, \u9ed8\u8ba4\u662f4k, \u53ef\u6309\u9700\u8c03\u6574\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n", "prefix": "fastlz.uncompress"}, "fatfs.mount": {"body": "fatfs.mount(${1:mode},${2:mount_point},${3:spiid_or_spidevice},${4:spi_cs},${5:spi_speed},${6:power_pin},${7:power_on_delay},${8:auto_format})", "description": "fatfs.mount(mode,mount_point, spiid_or_spidevice, spi_cs, spi_speed, power_pin, power_on_delay, auto_format) - \u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nint fatfs\u6a21\u5f0f,\u53ef\u9009fatfs.SPI,fatfs.SDIO,fatfs.RAM,fatfs.USB\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f /fatfs\nint \u4f20\u5165spi device\u6307\u9488,\u6216\u8005spi\u7684id,\u6216\u8005sdio\u7684id\nint \u7247\u9009\u811a\u7684GPIO \u53f7, spi\u6a21\u5f0f\u6709\u6548,\u82e5\u524d\u4e00\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint SPI\u6700\u9ad8\u901f\u5ea6,\u9ed8\u8ba410M, \u82e5\u524d2\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u63a7\u5236\u811a,TF\u5361\u521d\u59cb\u524d\u5148\u62c9\u4f4e\u590d\u4f4d\u518d\u62c9\u9ad8,\u5982\u679c\u6ca1\u6709,\u6216\u8005\u662f\u5185\u7f6e\u7535\u6e90\u63a7\u5236\u65b9\u5f0f,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u590d\u4f4d\u8fc7\u7a0b\u65f6\u95f4,\u5355\u4f4dms,\u9ed8\u8ba4\u503c\u662f1\nbool \u6302\u8f7d\u5931\u8d25\u662f\u5426\u5c1d\u8bd5\u683c\u5f0f\u5316,\u9ed8\u8ba4\u662ftrue,\u5373\u81ea\u52a8\u683c\u5f0f\u5316. \u672c\u53c2\u6570\u57282023.8.16\u6dfb\u52a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nstring \u5931\u8d25\u7684\u539f\u56e0\n\u4f8b\u5b50\uff1a\n-- \u65b9\u6cd51, \u4f7f\u7528SPI\u6a21\u5f0f\n local spiId = 2\n local result = spi.setup(\n spiId,--\u4e32\u53e3id\n 255, -- \u4e0d\u4f7f\u7528\u9ed8\u8ba4CS\u811a\n 0,--CPHA\n 0,--CPOL\n 8,--\u6570\u636e\u5bbd\u5ea6\n 400*1000 -- \u521d\u59cb\u5316\u65f6\u4f7f\u7528\u8f83\u4f4e\u7684\u9891\u7387\n )\n local TF_CS = pin.PB3\n gpio.setup(TF_CS, 1)\n --fatfs.debug(1) -- \u82e5\u6302\u8f7d\u5931\u8d25,\u53ef\u4ee5\u5c1d\u8bd5\u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u67e5\u627e\u539f\u56e0\n -- \u63d0\u9192, \u82e5TF/SD\u6a21\u5757\u5e26\u7535\u5e73\u8f6c\u6362, \u901a\u5e38\u4e0d\u652f\u630110M\u4ee5\u4e0a\u7684\u6ce2\u7279\u7387!!\n fatfs.mount(fatfs.SPI,\"SD\", spiId, TF_CS, 24000000)\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n -- \u5f80\u4e0b\u7684\u64cd\u4f5c, \u4f7f\u7528 io.open(\"/sd/xxx\", \"w+\") \u7b49io\u5e93\u7684API\u5c31\u53ef\u4ee5\u4e86\n", "prefix": "fatfs.mount"}, "fatfs.unmount": {"body": "fatfs.unmount(${1:mount_point})", "description": "fatfs.unmount(mount_point) - \u53d6\u6d88\u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f fatfs,\u5fc5\u987b\u4e0efatfs.mount\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0, \u5426\u5219\u8fd4\u56de\u5931\u8d25\u7801\n\u4f8b\u5b50\uff1a\nfatfs.mount(\"SD\")\n", "prefix": "fatfs.unmount"}, "fatfs.getfree": {"body": "fatfs.getfree(${1:mount_point})", "description": "fatfs.getfree(mount_point) - \u83b7\u53d6\u53ef\u7528\u7a7a\u95f4\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9, \u9700\u8981\u8ddffatfs.mount\u4f20\u5165\u7684\u503c\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\ntable \u82e5\u6210\u529f\u4f1a\u8fd4\u56detable,\u5426\u5219\u8fd4\u56denil\nint \u5bfc\u81f4\u5931\u8d25\u7684\u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- table\u5305\u542b\u7684\u5185\u5bb9\u6709\n-- total_sectors \u603b\u6247\u533a\u6570\u91cf\n-- free_sectors \u7a7a\u95f2\u6247\u533a\u6570\u91cf\n-- total_kb \u603b\u5b57\u8282\u6570,\u5355\u4f4dkb\n-- free_kb \u7a7a\u95f2\u5b57\u8282\u6570, \u5355\u4f4dkb\n-- \u6ce8\u610f,\u5f53\u524d\u6247\u533a\u5927\u5c0f\u56fa\u5b9a\u5728512\u5b57\u8282\n\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n", "prefix": "fatfs.getfree"}, "fatfs.debug": {"body": "fatfs.debug(${1:value})", "description": "fatfs.debug(value) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,true\u4ee3\u8868\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,\u589e\u52a0\u8c03\u8bd5\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "fatfs.debug"}, "fdb.kvdb_init": {"body": "fdb.kvdb_init(${1:name},${2:partition})", "description": "fdb.kvdb_init(name, partition) - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u5e93\u540d,\u5f53\u524d\u4ec5\u652f\u6301env\nstring FAL\u5206\u533a\u540d,\u5f53\u524d\u4ec5\u652f\u6301onchip_fdb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- fdb\u5e93\u57fa\u4e8e flashdb , \u518d\u6b21\u8868\u793a\u611f\u8c22.\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fdb.kvdb_init \u540e \u6267\u884c fdb.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fdb.kvdb_init"}, "fdb.kv_set": {"body": "fdb.kv_set(${1:key},${2:value})", "description": "fdb.kv_set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u5927255\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nnumber \u7b2c\u4e8c\u4e2a\u4e3a\u8fd4\u56de\u4e3aflashdb\u7684fdb_kv_set_blob\u8fd4\u56de\u8be6\u7ec6\u72b6\u6001,0\uff1a\u65e0\u9519\u8bef 1:\u64e6\u9664\u9519\u8bef 2:\u8bfb\u9519\u8bef 3:\u5199\u9519\u8bef 4:\u672a\u627e\u5230 5:kv\u540d\u5b57\u9519\u8bef 6:kv\u540d\u5b57\u5b58\u5728 7:\u5df2\u4fdd\u5b58 8:\u521d\u59cb\u5316\u9519\u8bef\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_set(\"wendal\", \"goodgoodstudy\"))\nend\n", "prefix": "fdb.kv_set"}, "fdb.kv_get": {"body": "fdb.kv_get(${1:key},${2:skey})", "description": "fdb.kv_get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fdb.kv_get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_get(\"wendal\"))\nend\n", "prefix": "fdb.kv_get"}, "fdb.kv_del": {"body": "fdb.kv_del(${1:key})", "description": "fdb.kv_del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_del(\"wendal\"))\nend\n", "prefix": "fdb.kv_del"}, "fdb.kv_clr": {"body": "fdb.kv_clr()", "description": "fdb.kv_clr() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfdb.kv_clr()\n", "prefix": "fdb.kv_clr"}, "fdb.kv_iter": {"body": "fdb.kv_iter()", "description": "fdb.kv_iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_iter"}, "fdb.kv_next": {"body": "fdb.kv_next(${1:iter})", "description": "fdb.kv_next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fdb.kv_iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_next"}, "fdb.kv_stat": {"body": "fdb.kv_stat()", "description": "fdb.kv_stat() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.23 \u6dfb\u52a0\nlocal used,maxs,kv_count = fdb.kv_stat()\nlog.info(\"fdb\", \"kv\", used,maxs,kv_count)\n", "prefix": "fdb.kv_stat"}, "fonts.list": {"body": "fonts.list(${1:tp})", "description": "fonts.list(tp) - \u8fd4\u56de\u56fa\u4ef6\u652f\u6301\u7684\u5b57\u4f53\u5217\u8868\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\ntable \u5b57\u4f53\u5217\u8868\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-12\nif fonts.list then\n log.info(\"fonts\", \"u8g2\", json.encode(fonts.list(\"u8g2\")))\nend\n", "prefix": "fonts.list"}, "fonts.u8g2_get": {"body": "fonts.u8g2_get(${1:name},${2:tp})", "description": "fonts.u8g2_get(name, tp) - \u83b7\u53d6\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0, \u4f8b\u5982opposansm8_chinese unifont_t_symbols\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\noppo_8 = fonts.get(\"opposansm8_chinese\", \"u8g2\")\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n-- \u82e5\u4f7f\u7528\u4e91\u7f16\u8bd1\u7684\u81ea\u5b9a\u4e49\u5b57\u5e93, \u4f7f\u7528\u65b9\u5f0f\u5982\u4e0b\noppo_8 = fonts.get(\"oppo_bold_8\", \"u8g2\") -- oppo_bold_8 \u662f\u4e91\u7f16\u8bd1\u754c\u9762\u7684\u5b57\u5e93\u547d\u540d\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n", "prefix": "fonts.u8g2_get"}, "fonts.u8g2_load": {"body": "fonts.u8g2_load(${1:path},${2:path})", "description": "fonts.u8g2_load(path, path) - \u4ece\u6587\u4ef6\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84, \u4f8b\u5982 /luadb/abc.bin\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2. \u4e5f\u652f\u6301lvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-11\n-- \u63d0\u9192: \u82e5\u6587\u4ef6\u4f4d\u4e8e/luadb\u4e0b, \u4e0d\u9700\u8981\u5360\u7528\u5185\u5b58\n-- \u82e5\u6587\u4ef6\u5904\u4e8e\u5176\u4ed6\u8def\u5f84, \u4f8b\u5982tf/sd\u5361, spi flash, \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5230\u5185\u5b58, \u6d88\u8017lua vm\u7684\u5185\u5b58\u7a7a\u95f4\n-- \u52a0\u8f7d\u540e\u8bf7\u9002\u5f53\u5f15\u7528, \u4e0d\u5fc5\u53cd\u590d\u52a0\u8f7d\u540c\u4e00\u4e2a\u5b57\u4f53\u6587\u4ef6\noppo12 = fonts.load(\"/luadb/oppo12.bin\")\nif oppo12 then\n u8g2.SetFont(oppo12)\nelse\n log.warn(\"fonts\", \"no such font file oppo12.bin\")\nend\n", "prefix": "fonts.u8g2_load"}, "fota.init": {"body": "fota.init(${1:storge_location},${2:len},${3:param1},${4:param2})", "description": "fota.init(storge_location, len, param1, param2) - \u521d\u59cb\u5316fota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nint/string fota\u6570\u636e\u5b58\u50a8\u7684\u8d77\u59cb\u4f4d\u7f6e
\u5982\u679c\u662fint\uff0c\u5219\u662f\u7531\u82af\u7247\u5e73\u53f0\u5177\u4f53\u5224\u65ad
\u5982\u679c\u662fstring\uff0c\u5219\u5b58\u50a8\u5728\u6587\u4ef6\u7cfb\u7edf\u4e2d
\u5982\u679c\u4e3anil\uff0c\u5219\u7531\u5e95\u5c42\u51b3\u5b9a\u5b58\u50a8\u4f4d\u7f6e\nint \u6570\u636e\u5b58\u50a8\u7684\u6700\u5927\u7a7a\u95f4\nuserdata param1\uff0c\u5982\u679c\u6570\u636e\u5b58\u50a8\u5728spiflash\u65f6,\u4e3aspi_device\nint param2\uff0c\u76ee\u524d\u53ea\u7528\u4e8e\u5916\u90e8flash\u66f4\u65b0\u65f6, spiflash\u7535\u6e90\u63a7\u5236\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316fota\u6d41\u7a0b\nlocal result = fota.init(0, 0x00300000, spi_device) --\u7531\u4e8e105\u7684flash\u4ece0x01000000\u5f00\u59cb\uff0c\u6240\u4ee50\u5c31\u662f\u5916\u90e8spiflash\nlocal result = fota.init() --ec618\u7cfb\u5217/EC7XX\u7cfb\u5217\u4f7f\u7528\u56fa\u5b9a\u5185\u90e8\u5730\u5740\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u53c2\u6570\u4e86\nlocal result = fota.init(0xe0000000, 0, spi_device, 27) --EC7XX\u7cfb\u5217\u5141\u8bb8\u4f7f\u7528\u5916\u90e8flash\u66f4\u65b0\uff0c\u4f46\u662f\u5730\u5740\u5fc5\u987b\u52a0\u4e0a0xe0000000\u7684\u504f\u79fb\n", "prefix": "fota.init"}, "fota.wait": {"body": "fota.wait()", "description": "fota.wait() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u51c6\u5907\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u51c6\u5907\u597d\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal isDone = fota.wait()\n", "prefix": "fota.wait"}, "fota.run": {"body": "fota.run(${1:buff},${2:offset},${3:len})", "description": "fota.run(buff, offset, len) - \u5199\u5165fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nzbuff/string fota\u6570\u636e\uff0c\u5c3d\u91cf\u7528zbuff\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u957f\u5ea6,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662fzbuff:used()\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.run(buf) -- \u5199\u5165fota\u6d41\u7a0b\n\n-- \u63d0\u793a: \uff0c\u5982\u679c\u4f20\u5165\u7684\u662fzbuff\uff0c\u5199\u5165\u6210\u529f\u540e\uff0c\u8bf7\u81ea\u884c\u6e05\u7a7azbuff\u5185\u7684\u6570\u636e\n\n-- 2024.4.3\u65b0\u589eoffset, len\u53c2\u6570, \u4ec5\u5bf9zbuff\u6709\u6548\nfota.run(buff, 0, 1024)\n", "prefix": "fota.run"}, "fota.file": {"body": "fota.file(${1:path})", "description": "fota.file(path) - \u4ece\u6307\u5b9a\u6587\u4ef6\u8bfb\u53d6fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.file(\"/xxx.bin\") -- \u5199\u5165fota\u6d41\u7a0b\n-- \u672cAPI\u4e8e2023.03.23 \u6dfb\u52a0\n", "prefix": "fota.file"}, "fota.isDone": {"body": "fota.isDone()", "description": "fota.isDone() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u5b8c\u6210\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u5199\u5165\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal result, isDone = fota.isDone()\n", "prefix": "fota.isDone"}, "fota.finish": {"body": "fota.finish(${1:is_ok})", "description": "fota.finish(is_ok) - \u7ed3\u675ffota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7ed3\u675ffota\u6d41\u7a0b\nlocal result = fota.finish(true)\n", "prefix": "fota.finish"}, "fs.fsstat": {"body": "fs.fsstat(${1:path})", "description": "fs.fsstat(path) - \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84,\u9ed8\u8ba4\"/\",\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nboolean \u83b7\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u603b\u7684block\u6570\u91cf\nint \u5df2\u4f7f\u7528\u7684block\u6570\u91cf\nint block\u7684\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nstring \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b,\u4f8b\u5982lfs\u4ee3\u8868littlefs\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u6839\u5206\u533a\u7684\u4fe1\u606f\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\n", "prefix": "fs.fsstat"}, "fs.fsize": {"body": "fs.fsize(${1:path})", "description": "fs.fsize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u5927\u5c0f,\u82e5\u83b7\u53d6\u5931\u8d25\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370main.luac\u7684\u5927\u5c0f\nlog.info(\"fsize\", fs.fsize(\"/main.luac\"))\n", "prefix": "fs.fsize"}, "fskv.init": {"body": "fskv.init()", "description": "fskv.init() - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fskv.kvdb_init \u540e \u6267\u884c fskv.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fskv.init"}, "fskv.set": {"body": "fskv.set(${1:key},${2:value})", "description": "fskv.set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662fnil, function, userdata, task\nlog.info(\"fdb\", fskv.set(\"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.set(\"upgrade\", true))\nlog.info(\"fdb\", fskv.set(\"timer\", 1))\nlog.info(\"fdb\", fskv.set(\"bigd\", {name=\"wendal\",age=123}))\n", "prefix": "fskv.set"}, "fskv.sett": {"body": "fskv.sett(${1:key},${2:skey},${3:value})", "description": "fskv.sett(key, skey, value) - \u8bbe\u7f6etable\u5185\u7684\u952e\u503c\u5bf9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring table\u7684key\u540d\u79f0, \u5fc5\u586b, \u4e0d\u80fd\u662f\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse/nil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u57282023.7.26\u65b0\u589e,\u6ce8\u610f\u4e0eset\u51fd\u6570\u533a\u522b\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662ffunction, userdata, task\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"upgrade\", true))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"timer\", 1))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"bigd\", {name=\"wendal\",age=123}))\n\n-- \u4e0b\u5217\u8bed\u53e5\u5c06\u6253\u5370\u51fa4\u4e2a\u5143\u7d20\u7684table\nlog.info(\"fdb\", fskv.get(\"mytable\"), json.encode(fskv.get(\"mytable\")))\n-- \u6ce8\u610f: \u5982\u679ckey\u4e0d\u5b58\u5728, \u6216\u8005\u539f\u672c\u7684\u503c\u4e0d\u662ftable\u7c7b\u578b,\u5c06\u4f1a\u5b8c\u5168\u8986\u76d6\n-- \u4f8b\u5982\u4e0b\u5217\u5199\u6cd5,\u6700\u7ec8\u83b7\u53d6\u5230\u7684\u662ftable,\u800c\u975e\u7b2c\u4e00\u884c\u7684\u5b57\u7b26\u4e32\nlog.info(\"fdb\", fskv.set(\"mykv\", \"123\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"age\", \"123\")) -- \u4fdd\u5b58\u7684\u5c06\u662f {age:\"123\"}\n\n\n-- \u5982\u679c\u8bbe\u7f6e\u7684\u6570\u636e\u586bnil, \u4ee3\u8868\u5220\u9664\u5bf9\u5e94\u7684key\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\", \"wendal\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\")) -- \u76f8\u5f53\u4e8e\u5220\u9664\n-- \n", "prefix": "fskv.sett"}, "fskv.get": {"body": "fskv.get(${1:key},${2:skey})", "description": "fskv.get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fskv.get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", fskv.get(\"wendal\"))\nend\n\n-- \u82e5\u9700\u8981\"\u9ed8\u8ba4\u503c\", \u5bf9\u5e94\u975ebool\u5e03\u5c14\u503c, \u53ef\u4ee5\u8fd9\u6837\u5199\nlocal v = fskv.get(\"wendal\") or \"123\"\n", "prefix": "fskv.get"}, "fskv.del": {"body": "fskv.del(${1:key})", "description": "fskv.del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"fdb\", fskv.del(\"wendal\"))\n", "prefix": "fskv.del"}, "fskv.clear": {"body": "fskv.clear()", "description": "fskv.clear() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfskv.clear()\n", "prefix": "fskv.clear"}, "fskv.iter": {"body": "fskv.iter()", "description": "fskv.iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fskv.kv_get(k))\n end\nend\n", "prefix": "fskv.iter"}, "fskv.next": {"body": "fskv.next(${1:iter})", "description": "fskv.next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fskv.iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fskv\", k, \"value\", fskv.get(k))\n end\nend\n", "prefix": "fskv.next"}, "fskv.status": {"body": "fskv.status()", "description": "fskv.status() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\nlocal used, total,kv_count = fskv.status()\nlog.info(\"fdb\", \"kv\", used,total,kv_count)\n", "prefix": "fskv.status"}, "ftp.login": {"body": "ftp.login(${1:adapter},${2:ip_addr},${3:port},${4:username},${5:password})", "description": "ftp.login(adapter,ip_addr,port,username,password) - FTP\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring ip_addr \u5730\u5740\nstring port \u7aef\u53e3,\u9ed8\u8ba421\nstring username \u7528\u6237\u540d\nstring password \u5bc6\u7801\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp_login = ftp.login(nil,\"xxx\")\n", "prefix": "ftp.login"}, "ftp.command": {"body": "ftp.command(${1:cmd})", "description": "ftp.command(cmd) - FTP\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nstring cmd \u547d\u4ee4 \u76ee\u524d\u652f\u6301:NOOP SYST TYPE PWD MKD CWD CDUP RMD DELE LIST\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\n // \u7a7a\u64cd\u4f5c\uff0c\u9632\u6b62\u8fde\u63a5\u65ad\u6389\n print(ftp.command(\"NOOP\").wait())\n // \u62a5\u544a\u8fdc\u7a0b\u7cfb\u7edf\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\n print(ftp.command(\"SYST\").wait())\n // \u6307\u5b9a\u6587\u4ef6\u7c7b\u578b\n print(ftp.command(\"TYPE I\").wait())\n // \u663e\u793a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u540d\n print(ftp.command(\"PWD\").wait())\n // \u521b\u5efa\u76ee\u5f55\n print(ftp.command(\"MKD QWER\").wait())\n // \u6539\u53d8\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\n print(ftp.command(\"CWD /QWER\").wait())\n // \u8fd4\u56de\u4e0a\u4e00\u5c42\u76ee\u5f55\n print(ftp.command(\"CDUP\").wait())\n // \u5220\u9664\u76ee\u5f55\n print(ftp.command(\"RMD QWER\").wait())\n // \u83b7\u53d6\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\u5217\u8868\n print(ftp.command(\"LIST\").wait())\n // \u5220\u9664\u6587\u4ef6\n print(ftp.command(\"DELE /1/12222.txt\").wait())\n", "prefix": "ftp.command"}, "ftp.pull": {"body": "ftp.pull(${1:local_name},${2:remote_name})", "description": "ftp.pull(local_name,remote_name) - FTP\u6587\u4ef6\u4e0b\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.pull(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.pull"}, "ftp.push": {"body": "ftp.push(${1:local_name},${2:remote_name})", "description": "ftp.push(local_name,remote_name) - FTP\u6587\u4ef6\u4e0a\u4f20\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.push(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.push"}, "ftp.close": {"body": "ftp.close()", "description": "ftp.close() - FTP\u5ba2\u6237\u7aef\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.close().wait()\n", "prefix": "ftp.close"}, "ftp.debug": {"body": "ftp.debug(${1:onoff})", "description": "ftp.debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "ftp.debug"}, "sm.sm2encrypt": {"body": "sm.sm2encrypt(${1:pkx},${2:pky},${3:data},${4:mode},${5:mode2})", "description": "sm.sm2encrypt(pkx,pky,data, mode, mode2) - sm2\u7b97\u6cd5\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5x,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5y,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u6700\u957f32\u5b57\u8282, \u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32, \u539f\u6837\u8f93\u51fa,\u672a\u7ecfHEX\u8f6c\u6362. \u82e5\u52a0\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2encrypt"}, "sm.sm2decrypt": {"body": "sm.sm2decrypt(${1:private},${2:data},${3:mode},${4:mode2})", "description": "sm.sm2decrypt(private,data,mode,mode2) - sm2\u7b97\u6cd5\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u89e3\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2decrypt"}, "sm.sm3": {"body": "sm.sm3(${1:data})", "description": "sm.sm3(data) - sm3\u7b97\u6cd5,\u7b97HASH\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3(\"lqlq666lqlq946\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3"}, "sm.sm3hmac": {"body": "sm.sm3hmac(${1:data},${2:key})", "description": "sm.sm3hmac(data, key) - sm3\u7b97\u6cd5,\u7b97HASH\u503c,\u4f46\u5e26HMAC\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3hmac(\"lqlq666lqlq946\", \"123\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3hmac"}, "gmssl.sm4encrypt": {"body": "gmssl.sm4encrypt(${1:mode},${2:padding},${3:originStr},${4:password})", "description": "gmssl.sm4encrypt(mode,padding,originStr,password) - SM4\u52a0\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal originStr = \"SM4 ECB ZeroPadding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aZeroPadding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nlocal encodeStr = gmssl.sm4encrypt(\"ECB\",\"ZERO\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"ZERO\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 ECB Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nencodeStr = gmssl.sm4encrypt(\"ECB\",\"PKCS5\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"PKCS5\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 CBC Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aCBC\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a256 bit\uff1b\u504f\u79fb\u91cf\uff1a1234567890666666\nencodeStr = gmssl.sm4encrypt(\"CBC\",\"PKCS5\",originStr,\"1234567890123456\",\"1234567890666666\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"CBC\",\"PKCS5\",encodeStr,\"1234567890123456\",\"1234567890666666\"))\n", "prefix": "gmssl.sm4encrypt"}, "gmssl.sm4decrypt": {"body": "gmssl.sm4decrypt(${1:mode},${2:padding},${3:encodeStr},${4:password})", "description": "gmssl.sm4decrypt(mode,padding,encodeStr,password) - SM4\u89e3\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u5df2\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003gmssl.sm4encrypt\n", "prefix": "gmssl.sm4decrypt"}, "sm.sm2sign": {"body": "sm.sm2sign(${1:private},${2:data},${3:id})", "description": "sm.sm2sign(private,data,id) - sm2\u7b97\u6cd5\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\n\u8fd4\u56de\u503c\uff1a\nstring \u524d\u9762\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u7b7e\u540d\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2sign"}, "sm.sm2verify": {"body": "sm.sm2verify(${1:pkx},${2:pky},${3:data},${4:id},${5:sig})", "description": "sm.sm2verify(pkx, pky, data, id, sig) - sm2\u7b97\u6cd5\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5X,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5Y,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\nstring \u7b7e\u540d\u6570\u636e,\u5fc5\u987b64\u5b57\u8282,\u975eHEX\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nboolean \u9a8c\u8bc1\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2verify"}, "gpio.setup": {"body": "gpio.setup(${1:pin},${2:mode},${3:pull},${4:irq},${5:alt})", "description": "gpio.setup(pin, mode, pull, irq, alt) - \u8bbe\u7f6e\u7ba1\u811a\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nint pin gpio\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nany mode \u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff1a
\u6570\u5b570/1\u4ee3\u8868\u8f93\u51fa\u6a21\u5f0f
nil\u4ee3\u8868\u8f93\u5165\u6a21\u5f0f
function\u4ee3\u8868\u4e2d\u65ad\u6a21\u5f0f\uff0c\u5982\u679c\u586bgpio.count\uff0c\u5219\u4e3a\u4e2d\u65ad\u8ba1\u6570\u529f\u80fd\uff0c\u4e2d\u65ad\u65f6\u4e0d\u56de\u8c03\nint pull \u4e0a\u62c9\u4e0b\u62c9\u6a21\u5f0f, \u53ef\u4ee5\u662f\u4e0a\u62c9\u6a21\u5f0f gpio.PULLUP \u6216\u4e0b\u62c9\u6a21\u5f0f gpio.PULLDOWN, \u6216\u8005\u5f00\u6f0f\u6a21\u5f0f 0. \u9700\u8981\u6839\u636e\u5b9e\u9645\u786c\u4ef6\u9009\u7528\nint irq \u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f,\u9ed8\u8ba4gpio.BOTH\u3002\u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f
\u4e0a\u5347\u6cbfgpio.RISING
\u4e0b\u964d\u6cbfgpio.FALLING
\u4e0a\u5347\u548c\u4e0b\u964d\u90fd\u89e6\u53d1gpio.BOTH \nint alt \u590d\u7528\u9009\u9879\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9700\u8981\u8fd9\u4e2a\u53c2\u6570\uff0c\u6709\u4e9bGPIO\u53ef\u4ee5\u590d\u7528\u5230\u4e0d\u540c\u5f15\u811a\u4e0a\uff0c\u53ef\u4ee5\u9009\u62e9\u590d\u7528\u9009\u9879\uff080\u6216\u80054\uff09\u4ece\u800c\u590d\u7528\u5230\u5bf9\u5e94\u7684\u5f15\u811a\u4e0a\n\u8fd4\u56de\u503c\uff1a\nany \u8f93\u51fa\u6a21\u5f0f\u8fd4\u56de\u8bbe\u7f6e\u7535\u5e73\u7684\u95ed\u5305, \u8f93\u5165\u6a21\u5f0f\u548c\u4e2d\u65ad\u6a21\u5f0f\u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u5165\ngpio.setup(17, nil)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\ngpio.setup(17, 0)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u9ad8,\u4e14\u542f\u7528\u5185\u90e8\u4e0a\u62c9\ngpio.setup(17, 1, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u9ed8\u8ba4\u53cc\u5411\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u4ec5\u4e0a\u5347\u6cbf\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP, gpio.RISING)\n\n-- \u4e2d\u65ad\u8ba1\u6570 \u4e8e2024.5.8\u65b0\u589e\n-- \u8bbe\u7f6egpio7\u4e3a\u4e2d\u65ad\u8ba1\u6570\uff0c\u8be6\u7ec6demo\u89c1gpio/gpio_irq_count\ngpio.setup(7, gpio.count)\n\n-- alt_func \u4e8e2023.7.2\u65b0\u589e\n-- \u672c\u529f\u80fd\u4ec5\u5bf9\u90e8\u5206\u5e73\u53f0\u6709\u6548, \u4e14\u4ec5\u7528\u4e8e\u8c03\u6574GPIO\u590d\u7528,\u5176\u4ed6\u590d\u7528\u65b9\u5f0f\u8bf7\u4f7f\u7528muc.iomux\u51fd\u6570\n-- \u4ee5\u4e0b\u793a\u4f8b\u4ee3\u7801, \u5c06I2S_DOUT\u590d\u7528\u6210gpio18\n-- AIR780E\u7684PIN33(\u6a21\u5757\u7ba1\u811a\u5e8f\u53f7), \u5bf9\u5e94paddr 38, \u9ed8\u8ba4\u529f\u80fd\u662fI2S_DOUT, \u590d\u7528\u6210gpio18\n-- \u65b9\u5411\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\n-- Air780E(EC618\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780e.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\n-- Air780EP(EC718P\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780ep.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\ngpio.setup(18, 0, nil, nil, 4)\n\n-- \u63d0\u9192: \n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u5165\u6a21\u5f0f\u6216\u4e2d\u65ad,\u624d\u80fd\u901a\u8fc7gpio.get()\u83b7\u53d6\u5230\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u624d\u80fd\u901a\u8fc7gpio.set()\u8bbe\u7f6e\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u901a\u8fc7gpio.get()\u603b\u4f1a\u5f97\u52300\n-- \u4e2d\u65ad\u56de\u8c03\u7684val\u53c2\u6570\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\n-- \u5bf9Cat.1\u6a21\u5757,EC618\u7cfb\u5217\u53ea\u6709AONGPIO\u624d\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5176\u4ed6\u7cfb\u5217\u6240\u6709GPIO\u90fd\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5177\u4f53\u770b\u786c\u4ef6\u624b\u518c\n-- \u9ed8\u8ba4\u8bbe\u7f6e\u4e0b,\u4e2d\u65ad\u662f\u6ca1\u6709\u9632\u6296\u65f6\u95f4\u7684,\u53ef\u4ee5\u901a\u8fc7gpio.set_debounce(pin, 50)\u6765\u8bbe\u7f6e\u9632\u6296\u65f6\u95f4\n\n-- pull\u53c2\u6570\u7684\u989d\u5916\u8bf4\u660e, \u4e0a\u62c9/\u4e0b\u62c9\u914d\u7f6e\n-- \u5bf9\u4e8e\u90e8\u5206\u7684BSP\u6765\u8bf4, \u53ea\u652f\u6301 gpio.PULLUP \u6216 gpio.PULLDOWN, \u4f46\u6709\u90e8\u5206BSP\u652f\u6301\u5f00\u6f0f\u6a21\u5f0f\n-- \u5bf9\u4e8e\u652f\u6301\u5f00\u6f0f\u7684bsp, pull\u53c2\u6570\u8981\u4f20 0 \u624d\u80fd\u5f00\u542f\u5f00\u6f0f\u6a21\u5f0f, \u4e0d\u662f\u4f20nil\n-- \u4f8b\u5982:\n-- EC618\u7cfb\u5217(Air780E/Air780EG/Air780EX/Air700E\u7b49)\n-- EC718\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\n-- XT804\u7cfb\u5217(Air101/Air103/Air601)\n", "prefix": "gpio.setup"}, "gpio.caplevel": {"body": "gpio.caplevel(${1:pin},${2:level},${3:func})", "description": "gpio.caplevel(pin, level,func) - \u6355\u83b7\u7ba1\u811a\u7535\u5e73\u6301\u7eed\u65f6\u957f\uff0c\u5355\u4f4dus\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint level \u9700\u8981\u6355\u83b7\u7684\u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\uff0c\u5373\u7ba1\u811a\u4e0a\u6b63\u5e38\u65f6\u95f4\u5904\u4e8elevel\u7684\u53cd\uff0c\u6355\u83b7\u8bbe\u5b9a\u7684level\u6301\u7eed\u65f6\u95f4\nfunction func \u5b8c\u6210\u6355\u83b7\u540e\u7684\u56de\u8c03\u51fd\u6570\uff0c\u4ec5\u4e00\u4e2a\u53c2\u6570\uff0c\u53c2\u6570\u4e3a\u6355\u83b7\u5230\u7684\u65f6\u95f4\u957f\u5ea6number\u578b\u6570\u503c\uff0c\u5355\u4f4dus\n\u8fd4\u56de\u503c\uff1a\nany \u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n-- \u6355\u83b7pin.PA07\u4e3a\u9ad8\u7535\u5e73\u7684\u6301\u7eed\u65f6\u95f4\ngpio.caplevel(pin.PA07,1,function(val) print(val) end)\n", "prefix": "gpio.caplevel"}, "gpio.set": {"body": "gpio.set(${1:pin},${2:value})", "description": "gpio.set(pin, value) - \u8bbe\u7f6e\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint value \u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio17\u4e3a\u4f4e\u7535\u5e73\ngpio.set(17, 0)\n", "prefix": "gpio.set"}, "gpio.get": {"body": "gpio.get(${1:pin})", "description": "gpio.get(pin) - \u83b7\u53d6\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nvalue \u7535\u5e73, \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u5bf9\u5e94\u6570\u503c1\u548c0\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6gpio17\u7684\u5f53\u524d\u7535\u5e73\ngpio.get(17)\n", "prefix": "gpio.get"}, "gpio.close": {"body": "gpio.close(${1:pin})", "description": "gpio.close(pin) - \u5173\u95ed\u7ba1\u811a\u529f\u80fd(\u9ad8\u963b\u8f93\u5165\u6001),\u5173\u6389\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u603b\u662f\u6267\u884c\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edgpio17\ngpio.close(17)\n", "prefix": "gpio.close"}, "gpio.setDefaultPull": {"body": "gpio.setDefaultPull(${1:val})", "description": "gpio.setDefaultPull(val) - \u8bbe\u7f6eGPIO\u811a\u7684\u9ed8\u8ba4\u4e0a\u62c9/\u4e0b\u62c9\u8bbe\u7f6e, \u9ed8\u8ba4\u662f\u5e73\u53f0\u81ea\u5b9a\u4e49(\u4e00\u822c\u4e3a\u5f00\u6f0f).\n\u4f20\u5165\u503c\uff1a\nint val 0\u5e73\u53f0\u81ea\u5b9a\u4e49,1\u4e0a\u62c9, 2\u4e0b\u62c9\n\u8fd4\u56de\u503c\uff1a\nboolean \u4f20\u503c\u6b63\u786e\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio.setup\u7684pull\u9ed8\u8ba4\u503c\u4e3a\u4e0a\u62c9\ngpio.setDefaultPull(1)\n", "prefix": "gpio.setDefaultPull"}, "gpio.toggle": {"body": "gpio.toggle(${1:pin})", "description": "gpio.toggle(pin) - \u53d8\u6362GPIO\u811a\u8f93\u51fa\u7535\u5e73,\u4ec5\u8f93\u51fa\u6a21\u5f0f\u53ef\u7528\n\u4f20\u5165\u503c\uff1a\nint \u7ba1\u811a\u7684GPIO\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2022.05.17 \u6dfb\u52a0\n-- \u5047\u8bbeGPIO16\u4e0a\u6709LED, \u6bcf500ms\u5207\u6362\u4e00\u6b21\u5f00\u5173\ngpio.setup(16, 0)\nsys.timerLoopStart(function()\n gpio.toggle(16)\nend, 500)\n", "prefix": "gpio.toggle"}, "gpio.pulse": {"body": "gpio.pulse(${1:pin},${2:level},${3:len},${4:delay})", "description": "gpio.pulse(pin,level,len,delay) - \u5728\u540c\u4e00\u4e2aGPIO\u8f93\u51fa\u4e00\u7ec4\u8109\u51b2, \u6ce8\u610f, len\u7684\u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7\nint/string \u6570\u503c\u6216\u8005\u5b57\u7b26\u4e32.\nint len \u957f\u5ea6 \u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\nint delay \u5ef6\u8fdf,\u5f53\u524d\u65e0\u56fa\u5b9a\u65f6\u95f4\u5355\u4f4d\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u901a\u8fc7PB06\u811a\u8f93\u51fa\u8f93\u51fa8\u4e2a\u7535\u5e73\u53d8\u5316.\ngpio.pulse(pin.PB06,0xA9, 8, 0)\n", "prefix": "gpio.pulse"}, "gpio.debounce": {"body": "gpio.debounce(${1:pin},${2:ms},${3:mode})", "description": "gpio.debounce(pin, ms, mode) - \u9632\u6296\u8bbe\u7f6e, \u6839\u636e\u786c\u4ef6ticks\u8fdb\u884c\u9632\u6296\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\nint \u9632\u6296\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2, \u6700\u5927 65555 ms, \u8bbe\u7f6e\u4e3a0\u5219\u5173\u95ed\nint \u6a21\u5f0f, 0\u51b7\u5374\u6a21\u5f0f, 1\u5ef6\u65f6\u6a21\u5f0f. \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6d88\u6296\u6a21\u5f0f, \u5f53\u524d\u652f\u63012\u79cd, 2022.12.16\u5f00\u59cb\u652f\u6301mode=1\n-- 0 \u89e6\u53d1\u4e2d\u65ad\u540e,\u9a6c\u4e0a\u4e0a\u62a5\u4e00\u6b21, \u7136\u540e\u51b7\u5374N\u4e2a\u6beb\u79d2\u540e,\u91cd\u65b0\u63a5\u53d7\u4e2d\u65ad\n-- 1 \u89e6\u53d1\u4e2d\u65ad\u540e,\u5ef6\u8fdfN\u4e2a\u6beb\u79d2,\u671f\u95f4\u6ca1\u6709\u65b0\u4e2d\u65ad\u4e14\u7535\u5e73\u6ca1\u6709\u53d8\u5316,\u4e0a\u62a5\u4e00\u6b21\n\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f0-\u51b7\u5374, \u4e2d\u65ad\u540e\u9a6c\u4e0a\u4e0a\u62a5, \u4f46100ms\u5185\u53ea\u4e0a\u62a5\u4e00\u6b21\ngpio.debounce(7, 100) -- \u82e5\u82af\u7247\u652f\u6301pin\u5e93, \u53ef\u7528pin.PA7\u4ee3\u66ff\u6570\u5b577\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f1-\u5ef6\u65f6, \u4e2d\u65ad\u540e\u7b49\u5f85100ms,\u671f\u95f4\u82e5\u4fdd\u6301\u8be5\u7535\u5e73\u4e86,\u65f6\u95f4\u5230\u4e4b\u540e\u4e0a\u62a5\u4e00\u6b21\n-- \u5bf9\u5e94\u7684,\u5982\u679c\u8f93\u5165\u7684\u662f\u4e00\u4e2a 50hz\u7684\u65b9\u6ce2,\u90a3\u4e48\u4e0d\u4f1a\u89e6\u53d1\u4efb\u4f55\u4e0a\u62a5\ngpio.debounce(7, 100, 1)\n\n-- \u5173\u95ed\u9632\u6296,\u65f6\u95f4\u8bbe\u7f6e\u4e3a0\u5c31\u5173\u95ed\ngpio.debounce(7, 0)\n", "prefix": "gpio.debounce"}, "gpio.count": {"body": "gpio.count(${1:pin})", "description": "gpio.count(pin) - \u83b7\u53d6gpio\u4e2d\u65ad\u6570\u91cf\uff0c\u5e76\u6e05\u7a7a\u7d2f\u8ba1\u503c\uff0c\u7c7b\u4f3cair724\u7684\u8109\u51b2\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u4ece\u4e0a\u6b21\u83b7\u53d6\u4e2d\u65ad\u6570\u91cf\u540e\u5230\u5f53\u524d\u7684\u4e2d\u65ad\u8ba1\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"irq cnt\", gpio.count(10))\n", "prefix": "gpio.count"}, "gtfont.init": {"body": "gtfont.init(${1:spi_device})", "description": "gtfont.init(spi_device) - \u521d\u59cb\u5316\u9ad8\u901a\u5b57\u4f53\u82af\u7247\n\u4f20\u5165\u503c\uff1a\nuserdata \u4ec5\u652f\u6301spi device \u751f\u6210\u7684\u6307\u9488\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7279\u522b\u63d0\u9192: \u4f7f\u7528\u672c\u5e93\u7684\u4efb\u4f55\u4ee3\u7801, \u90fd\u9700\u8981 \u989d\u5916 \u7684 \u9ad8\u901a\u5b57\u4f53\u82af\u7247 !!\n-- \u6ca1\u6709\u989d\u5916\u82af\u7247\u662f\u8dd1\u4e0d\u4e86\u7684!!\ngtfont.init(spi_device)\n", "prefix": "gtfont.init"}, "hmeta.model": {"body": "hmeta.model()", "description": "hmeta.model() - \u83b7\u53d6\u6a21\u7ec4\u540d\u79f0\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.model"}, "hmeta.hwver": {"body": "hmeta.hwver()", "description": "hmeta.hwver() - \u83b7\u53d6\u6a21\u7ec4\u7684\u786c\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model(), hmeta.hwver())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.hwver"}, "ht1621.setup": {"body": "ht1621.setup(${1:pin_cs},${2:pin_data},${3:pin_wr},${4:cmd_com_mode},${5:cmd_rc},${6:cmd_sysen})", "description": "ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen) - \u521d\u59cb\u5316ht1621\n\u4f20\u5165\u503c\uff1a\nint \u7247\u9009\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u6570\u636e\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint WR\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u547d\u4ee4\u6a21\u5f0f, \u9ed8\u8ba4\u662f0x52\nint \u5185\u90e8RC\u632f\u8361\u5668,\u9ed8\u8ba40x30\nint \u7cfb\u7edf\u632f\u8361\u5668\u5f00,\u9ed8\u8ba40x02\n\u8fd4\u56de\u503c\uff1a\nuserdata \u8fd4\u56deht1621\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.data(seg, 0, 0xeb)\n", "prefix": "ht1621.setup"}, "ht1621.lcd": {"body": "ht1621.lcd(${1:seg},${2:onoff})", "description": "ht1621.lcd(seg, onoff) - LCD\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nboolean true\u5f00,false\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\n", "prefix": "ht1621.lcd"}, "ht1621.data": {"body": "ht1621.data(${1:seg},${2:addr},${3:sdat})", "description": "ht1621.data(seg, addr, sdat) - \u5c55\u793a\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u5730\u5740, 0-6, \u8d85\u8fc76\u65e0\u6548\nint \u6570\u636e, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\nht1621.data(seg, 0, 0xF1)\n-- \u9644\u6570\u5b570-9\u7684\u503c\u8868\n-- 0,1,2,3,4,5,6,7,8,9\n-- 0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf\n", "prefix": "ht1621.data"}, "ht1621.cmd": {"body": "ht1621.cmd(${1:seg},${2:cmd})", "description": "ht1621.cmd(seg, cmd) - \u53d1\u9001\u6307\u4ee4\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u6307\u4ee4, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5177\u4f53\u6307\u4ee4\u8bf7\u67e5\u9605\u786c\u4ef6\u624b\u518c\n", "prefix": "ht1621.cmd"}, "http.request": {"body": "http.request(${1:method},${2:url},${3:headers},${4:body},${5:opts},${6:ca_file},${7:client_ca},${8:client_key},${9:client_password})", "description": "http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, client_password) - http\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nstring \u8bf7\u6c42\u65b9\u6cd5, \u652f\u6301 GET/POST \u7b49\u5408\u6cd5\u7684HTTP\u65b9\u6cd5\nstring url\u5730\u5740, \u652f\u6301 http\u548chttps, \u652f\u6301\u57df\u540d, \u652f\u6301\u81ea\u5b9a\u4e49\u7aef\u53e3\ntabal \u8bf7\u6c42\u5934 \u53ef\u9009 \u4f8b\u5982 {[\"Content-Type\"] = \"application/x-www-form-urlencoded\"}\nstring/zbuff body \u53ef\u9009\ntable \u989d\u5916\u914d\u7f6e \u53ef\u9009 \u5305\u542b timeout:\u8d85\u65f6\u65f6\u95f4\u5355\u4f4dms \u53ef\u9009,\u9ed8\u8ba410\u5206\u949f,\u51990\u5373\u6c38\u4e45\u7b49\u5f85 dst:\u4e0b\u8f7d\u8def\u5f84,\u53ef\u9009 adapter:\u9009\u62e9\u4f7f\u7528\u7f51\u5361,\u53ef\u9009 debug:\u662f\u5426\u6253\u5f00debug\u4fe1\u606f,\u53ef\u9009,ipv6:\u662f\u5426\u4e3aipv6 \u9ed8\u8ba4\u4e0d\u662f,\u53ef\u9009 callback:\u4e0b\u8f7d\u56de\u8c03\u51fd\u6570,\u53c2\u6570 content_len:\u603b\u957f\u5ea6 body_len:\u4ee5\u4e0b\u8f7d\u957f\u5ea6 userdata \u7528\u6237\u4f20\u53c2,\u53ef\u9009 userdata:\u56de\u8c03\u81ea\u5b9a\u4e49\u4f20\u53c2 \nstring \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981\nstring \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nint code , \u670d\u52a1\u5668\u53cd\u9988\u7684\u503c>=100, \u6700\u5e38\u89c1\u7684\u662f200.\u5982\u679c\u662f\u5e95\u5c42\u9519\u8bef,\u4f8b\u5982\u8fde\u63a5\u5931\u8d25, \u8fd4\u56de\u503c\u5c0f\u4e8e0\ntabal headers \u5f53code>100\u65f6, \u4ee3\u8868\u670d\u52a1\u5668\u8fd4\u56de\u7684\u5934\u90e8\u6570\u636e \nstring/int body \u670d\u52a1\u5668\u54cd\u5e94\u7684\u5185\u5bb9\u5b57\u7b26\u4e32,\u5982\u679c\u662f\u4e0b\u8f7d\u6a21\u5f0f, \u5219\u8fd4\u56de\u6587\u4ef6\u5927\u5c0f\n\u4f8b\u5b50\uff1a\n\n--[[\ncode\u62a5\u9519\u4fe1\u606f\u5217\u8868:\n-1 HTTP_ERROR_STATE \u9519\u8bef\u7684\u72b6\u6001, \u4e00\u822c\u662f\u5e95\u5c42\u5f02\u5e38,\u8bf7\u62a5issue\n-2 HTTP_ERROR_HEADER \u9519\u8bef\u7684\u54cd\u5e94\u5934\u90e8, \u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-3 HTTP_ERROR_BODY \u9519\u8bef\u7684\u54cd\u5e94\u4f53,\u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-4 HTTP_ERROR_CONNECT \u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25, \u672a\u8054\u7f51,\u5730\u5740\u9519\u8bef,\u57df\u540d\u9519\u8bef\n-5 HTTP_ERROR_CLOSE \u63d0\u524d\u65ad\u5f00\u4e86\u8fde\u63a5, \u7f51\u7edc\u6216\u670d\u52a1\u5668\u95ee\u9898\n-6 HTTP_ERROR_RX \u63a5\u6536\u6570\u636e\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\n-7 HTTP_ERROR_DOWNLOAD \u4e0b\u8f7d\u6587\u4ef6\u8fc7\u7a0b\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\u6216\u4e0b\u8f7d\u8def\u5f84\u95ee\u9898\n-8 HTTP_ERROR_TIMEOUT \u8d85\u65f6, \u5305\u62ec\u8fde\u63a5\u8d85\u65f6,\u8bfb\u53d6\u6570\u636e\u8d85\u65f6\n-9 HTTP_ERROR_FOTA fota\u529f\u80fd\u62a5\u9519,\u901a\u5e38\u662f\u66f4\u65b0\u5305\u4e0d\u5408\u6cd5\n]]\n\n-- GET\u8bf7\u6c42\nlocal code, headers, body = http.request(\"GET\",\"http://site0.cn/api/httptest/simple/time\").wait()\nlog.info(\"http.get\", code, headers, body)\n-- POST\u8bf7\u6c42\nlocal code, headers, body = http.request(\"POST\",\"http://httpbin.com/post\", {}, \"abc=123\").wait()\nlog.info(\"http.post\", code, headers, body)\n\n-- GET\u8bf7\u6c42,\u4f46\u4e0b\u8f7d\u5230\u6587\u4ef6\nlocal code, headers, body = http.request(\"GET\",\"http://httpbin.com/\", {}, \"\", {dst=\"/data.bin\"}).wait()\nlog.info(\"http.get\", code, headers, body)\n\n-- \u81ea\u5b9a\u4e49\u8d85\u65f6\u65f6\u95f4, 5000ms\nhttp.request(\"GET\",\"http://httpbin.com/\", nil, nil, {timeout=5000}).wait()\n", "prefix": "http.request"}, "httpsrv.start": {"body": "httpsrv.start(${1:port},${2:func})", "description": "httpsrv.start(port, func) - \u542f\u52a8\u5e76\u76d1\u542c\u4e00\u4e2ahttp\u7aef\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\nfunction \u56de\u8c03\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u76d1\u542c80\u7aef\u53e3\nhttpsrv.start(80, function(client, method, uri, headers, body)\n -- method \u662f\u5b57\u7b26\u4e32, \u4f8b\u5982 GET POST PUT DELETE\n -- uri \u4e5f\u662f\u5b57\u7b26\u4e32 \u4f8b\u5982 / /api/abc\n -- headers table\u7c7b\u578b\n -- body \u5b57\u7b26\u4e32\n log.info(\"httpsrv\", method, uri, json.encode(headers), body)\n if uri == \"/led/1\" then\n LEDA(1)\n return 200, {}, \"ok\"\n elseif uri == \"/led/0\" then\n LEDA(0)\n return 200, {}, \"ok\"\n end\n -- \u8fd4\u56de\u503c\u7684\u7ea6\u5b9a code, headers, body\n -- \u82e5\u6ca1\u6709\u8fd4\u56de\u503c, \u5219\u9ed8\u8ba4 404, {} ,\"\"\n return 404, {}, \"Not Found\" .. uri\nend)\n-- \u5173\u4e8e\u9759\u6001\u6587\u4ef6\n-- \u60c5\u51b51: / , \u6620\u5c04\u4e3a /index.html\n-- \u60c5\u51b52: /abc.html , \u5148\u67e5\u627e /abc.html, \u4e0d\u5b58\u5728\u7684\u8bdd\u67e5\u627e /abc.html.gz\n-- \u82e5gz\u5b58\u5728, \u4f1a\u81ea\u52a8\u4ee5\u538b\u7f29\u6587\u4ef6\u8fdb\u884c\u54cd\u5e94, \u7edd\u5927\u90e8\u5206\u6d4f\u89c8\u5668\u652f\u6301.\n-- \u5f53\u524d\u9ed8\u8ba4\u67e5\u627e /luadb/xxx \u4e0b\u7684\u6587\u4ef6,\u6682\u4e0d\u53ef\u914d\u7f6e\n", "prefix": "httpsrv.start"}, "httpsrv.stop": {"body": "httpsrv.stop(${1:port})", "description": "httpsrv.stop(port) - \u505c\u6b62http\u670d\u52a1\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n", "prefix": "httpsrv.stop"}, "i2c.exist": {"body": "i2c.exist(${1:id})", "description": "i2c.exist(id) - i2c\u7f16\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u5c31\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5i2c1\u662f\u5426\u5b58\u5728\nif i2c.exist(1) then\n log.info(\"\u5b58\u5728 i2c1\")\nend\n", "prefix": "i2c.exist"}, "i2c.setup": {"body": "i2c.setup(${1:id},${2:speed},${3:pullup})", "description": "i2c.setup(id, speed, pullup) - i2c\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u901f\u5ea6, \u4f8b\u5982i2c.FAST\nbool \u662f\u5426\u8f6f\u4ef6\u4e0a\u62c9, \u9ed8\u8ba4\u4e0d\u5f00\u542f\uff0c\u9700\u8981\u786c\u4ef6\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5c31\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316i2c1\ni2c.setup(1, i2c.FAST) -- id\u6b63\u786e\u5c31\u4e00\u5b9a\u6210\u529f\n-- \u5982\u9700\u5224\u65adi2c id\u662f\u5426\u5408\u6cd5, \u8bf7\u4f7f\u7528 i2c.exist \u51fd\u6570\n", "prefix": "i2c.setup"}, "i2c.createSoft": {"body": "i2c.createSoft(${1:scl},${2:sda},${3:delay})", "description": "i2c.createSoft(scl,sda,delay) - \u65b0\u5efa\u4e00\u4e2a\u8f6f\u4ef6i2c\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nint i2c SCL\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint i2c SDA\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint \u6bcf\u4e2a\u64cd\u4f5c\u7684\u5ef6\u65f6, \u5355\u4f4dus, \u9ed8\u8ba45\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6I2C\u5bf9\u8c61 \u53ef\u5f53\u4f5ci2c\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\uff01\u8fd9\u4e2a\u63a5\u53e3\u662f\u8f6f\u4ef6\u6a21\u62dfi2c\uff0c\u901f\u5ea6\u53ef\u80fd\u4f1a\u6bd4\u786c\u4ef6\u7684\u6162\n-- \u4e0d\u9700\u8981\u8c03\u7528i2c.close\u63a5\u53e3\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\nlocal softI2C = i2c.createSoft(1, 2, 5)\ni2c.send(softI2C, 0x5C, string.char(0x0F, 0x2F))\n-- \u6ce8\u610f, \u7b2c3\u4e2a\u53c2\u6570\u662f 2023.06.19 \u6dfb\u52a0\u7684delay\n-- \u901a\u8fc7\u8c03\u6574delay\u53c2\u6570\u7684\u503c, \u53ef\u589e\u52a0\u6216\u964d\u4f4eI2C\u7684\u901f\u5ea6\n", "prefix": "i2c.createSoft"}, "i2c.send": {"body": "i2c.send(${1:id},${2:addr},${3:data},${4:stop})", "description": "i2c.send(id, addr, data,stop) - i2c\u53d1\u9001\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/table \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5f80i2c0\u53d1\u90011\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(0, 0x68, 0x75)\n-- \u5f80i2c1\u53d1\u90012\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(1, 0x5C, string.char(0x0F, 0x2F))\ni2c.send(1, 0x5C, {0x0F, 0x2F})\n", "prefix": "i2c.send"}, "i2c.recv": {"body": "i2c.recv(${1:id},${2:addr},${3:len})", "description": "i2c.recv(id, addr, len) - i2c\u63a5\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u63a5\u6536\u6570\u636e\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u8bfb\u53d62\u4e2a\u5b57\u8282\u7684\u6570\u636e\nlocal data = i2c.recv(1, 0x5C, 2)\n", "prefix": "i2c.recv"}, "i2c.writeReg": {"body": "i2c.writeReg(${1:id},${2:addr},${3:reg},${4:data},${5:stop})", "description": "i2c.writeReg(id, addr, reg, data,stop) - i2c\u5199\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u5199\u51652\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.writeReg(1, 0x5C, 0x01, string.char(0x00, 0xF2))\n", "prefix": "i2c.writeReg"}, "i2c.readReg": {"body": "i2c.readReg(${1:id},${2:addr},${3:reg},${4:len})", "description": "i2c.readReg(id, addr, reg, len) - i2c\u8bfb\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u5f85\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u8bfb\u51fa2\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.readReg(1, 0x5C, 0x01, 2)\n", "prefix": "i2c.readReg"}, "i2c.close": {"body": "i2c.close(${1:id})", "description": "i2c.close(id) - \u5173\u95edi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edi2c1\ni2c.close(1)\n", "prefix": "i2c.close"}, "i2c.readDHT12": {"body": "i2c.readDHT12(${1:id})", "description": "i2c.readDHT12(id) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint DHT12\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x5C\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6DHT12\ni2c.setup(0)\nlocal re, H, T = i2c.readDHT12(0)\nif re then\n log.info(\"dht12\", H, T)\nend\n", "prefix": "i2c.readDHT12"}, "i2c.readSHT30": {"body": "i2c.readSHT30(${1:id},${2:addr})", "description": "i2c.readSHT30(id,addr) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT30\u7684\u6e29\u6e7f\u5ea6\u6570\u636e(\u7531\"\u597d\u5947\u661f\"\u8d21\u732e)\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u8bbe\u5907addr,SHT30\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x44 bit7\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6SHT30\ni2c.setup(0)\nlocal re, H, T = i2c.readSHT30(0)\nif re then\n log.info(\"sht30\", H, T)\nend\n", "prefix": "i2c.readSHT30"}, "i2c.transfer": {"body": "i2c.transfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen})", "description": "i2c.transfer(id, addr, txBuff, rxBuff, rxLen) - i2c\u901a\u7528\u4f20\u8f93\uff0c\u5305\u62ec\u53d1\u9001N\u5b57\u8282\uff0c\u53d1\u9001N\u5b57\u8282+\u63a5\u6536N\u5b57\u8282\uff0c\u63a5\u6536N\u5b57\u8282\u4e09\u79cd\u529f\u80fd\uff0c\u5728\u53d1\u9001\u8f6c\u63a5\u6536\u8fc7\u7a0b\u4e2d\u53d1\u9001reStart\u4fe1\u53f7,\u89e3\u51b3\u7c7b\u4f3cmlx90614\u5fc5\u987b\u5e26restart\u4fe1\u53f7\uff0c\u4f46\u662f\u53c8\u4e0d\u80fd\u7528i2c.send\u6765\u63a7\u5236\u7684\uff0c\u6bd4\u5982air105\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u53d1\u9001\u6570\u636e\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff \u5982\u679c\u4e0d\u7528zbuff\uff0c\u5219\u63a5\u6536\u6570\u636e\u5c06\u5728return\u8fd4\u56de\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u53d1\u9001\u662f\u5426\u6210\u529f\nstring or nil \u5982\u679c\u53c2\u65705\u662finterger\uff0c\u5219\u8fd4\u56de\u63a5\u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, rxbuff, 1)\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, nil, 0) --\u53ea\u53d1\u9001txbuff\u91cc\u7684\u6570\u636e\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662f\u5199\u5bc4\u5b58\u5668\u4e86\uff0c\u8fd9\u91cc\u5bc4\u5b58\u5668\u5730\u5740\u548c\u503c\u90fd\u653e\u5728\u4e86txbuff\u91cc\nlocal result, _ = i2c.transfer(0, 0x11, \"\\x01\\x02\\x03\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c0x03\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u662feeprom\uff0c\u5c31\u662f\u5f800x01\u7684\u5730\u5740\u519902\u548c03\uff0c\u6216\u8005\u5f800x0102\u7684\u5730\u5740\u519903\uff0c\u770b\u5177\u4f53\u82af\u7247\u4e86\nlocal result, rxdata = i2c.transfer(0, 0x11, \"\\x01\\x02\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662feeprom\nlocal result, rxdata = i2c.transfer(0, 0x11, 0x00, nil, 1) --\u53d1\u90010x00\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5404\u79cd\u4f20\u611f\u5668\n", "prefix": "i2c.transfer"}, "i2c.xfer": {"body": "i2c.xfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen},${6:transfer_done_topic},${7:timeout})", "description": "i2c.xfer(id, addr, txBuff, rxBuff, rxLen, transfer_done_topic, timeout) - i2c\u975e\u963b\u585e\u901a\u7528\u4f20\u8f93\uff0c\u7c7b\u4f3ctransfer\uff0c\u4f46\u662f\u4e0d\u4f1a\u7b49\u5230I2C\u4f20\u8f93\u5b8c\u6210\u624d\u8fd4\u56de\uff0c\u8c03\u7528\u672c\u51fd\u6570\u4f1a\u7acb\u523b\u8fd4\u56de\uff0cI2C\u4f20\u8f93\u5b8c\u6210\u540e\uff0c\u901a\u8fc7\u6d88\u606f\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\uff0c\u957f\u5ea6\u4e3azbuff.used\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u5ffd\u7565\u540e\u9762\u53c2\u6570\uff0c \u4e0d\u63a5\u6536\u6570\u636e\u3002\u63a5\u6536\u7684\u6570\u636e\u4f1a\u653e\u5728zbuff.addr\u5f00\u59cb\u7684\u4f4d\u7f6e\uff0c\u4f1a\u8986\u76d6\u6389\u4e4b\u524d\u7684\u6570\u636e\uff0c\u6ce8\u610fzhuff\u7684\u9884\u7559\u7a7a\u95f4\u8981\u8db3\u591f\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684\u6d88\u606f\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u586bnil\uff0c\u5219\u4e3a100ms\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = i2c.xfer(0, 0x11, txbuff, rxbuff, 1, \"I2CDONE\") if result then result, i2c_id, succ, error_code = sys.waitUntil(\"I2CDONE\") end if not result or not succ then log.info(\"i2c fail, error code\", error_code) else log.info(\"i2c ok\") end\n\n", "prefix": "i2c.xfer"}, "i2c.scan": {"body": "i2c.scan(${1:id},${2:speed})", "description": "i2c.scan(id,speed) - \u626b\u63cfi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u901f\u5ea6, \u53ef\u9009i2c.SLOW i2c.FAST i2c.PLUS i2c.HSMODE \u9ed8\u8ba4\u4e3ai2c.SLOW,\u5982\u63a2\u6d4b\u4e0d\u5230\u5219\u4fee\u6539\u6b64\u9879\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.07.04\u6dfb\u52a0\n-- \u8fd9\u4e2a\u51fd\u6570\u7684\u4e3b\u8981\u76ee\u6807\u662f\u4e3a\u4e86\u5728\u5f00\u53d1\u671f\u626b\u63cfi2c\u8bbe\u5907\n-- \u6709\u4e9bBSP\u5728\u6307\u5b9aaddr\u65e0\u54cd\u5e94\u65f6\u4f1a\u8f93\u51fa\u65e5\u5fd7,\u5bfc\u81f4\u8f93\u51fa\u4f1a\u88ab\u6253\u4e71\ni2c.scan()\n", "prefix": "i2c.scan"}, "i2s.setup": {"body": "i2s.setup(${1:id},${2:mode},${3:sample},${4:bitw},${5:channel},${6:format},${7:framebit})", "description": "i2s.setup(id, mode, sample, bitw, channel, format, framebit) - \u521d\u59cb\u5316i2s\n\u4f20\u5165\u503c\uff1a\nint i2s\u901a\u9053\u53f7,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387,\u9ed8\u8ba444100. \u53ef\u9009\nint \u6570\u636e\u4f4d\u6570,\u9ed8\u8ba416, \u53ef\u4ee5\u662f8\u7684\u500d\u6570\nint \u58f0\u9053, 0 \u5de6\u58f0\u9053, 1 \u53f3\u58f0\u9053, 2 \u7acb\u4f53\u58f0. \u53ef\u9009\nint \u683c\u5f0f, \u53ef\u9009MODE_I2S, MODE_LSB, MODE_MSB\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf, \u53ef\u900916\u548c32\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4ee5\u9ed8\u8ba4\u53c2\u6570\u521d\u59cb\u5316i2s\ni2s.setup(0)\n-- \u4ee5\u8be6\u7ec6\u53c2\u6570\u521d\u59cb\u5316i2s, \u793a\u4f8b\u4e3a\u9ed8\u8ba4\u503c\ni2s.setup(0, 0, 44100, 16, 0, 0, 16)\n", "prefix": "i2s.setup"}, "i2s.send": {"body": "i2s.send(${1:id},${2:data},${3:len})", "description": "i2s.send(id, data, len) - \u53d1\u9001i2s\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nstring \u6570\u636e, \u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216zbuff\nint \u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282, \u5b57\u7b26\u4e32\u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5168\u957f, zbuff\u9ed8\u8ba4\u4e3a\u6307\u9488\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u4f9b\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nlocal f = io.open(\"/luadb/abc.wav\")\nwhile 1 do\n local data = f:read(4096)\n if not data or #data == 0 then\n break\n end\n i2s.send(0, data)\n sys.wait(100)\nend\n", "prefix": "i2s.send"}, "i2s.recv": {"body": "i2s.recv(${1:id},${2:buffer},${3:len})", "description": "i2s.recv(id, buffer, len) - \u63a5\u6536i2s\u6570\u636e\uff0c\u6ce8\u610f\u5728\u6570\u636e\u5728\u56de\u8c03\u65f6\u5df2\u7ecf\u5b58\u653e\u5728zbuff\u91cc\uff0c\u76ee\u524d\u53ea\u6709air780e\u7cfb\u5217\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nzbuff \u6570\u636e\u7f13\u5b58\u533a\nint \u5355\u6b21\u8fd4\u56de\u7684\u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282,\u5fc5\u987b\u4e0e\u4f20\u5165\u7684zbuff\u7684\u5927\u5c0f\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlocal buffer = zbuff.create(3200)\nlocal succ = i2s.recv(0, buffer, 3200);\n", "prefix": "i2s.recv"}, "i2s.close": {"body": "i2s.close(${1:id})", "description": "i2s.close(id) - \u5173\u95edi2s\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.close(0)\n", "prefix": "i2s.close"}, "i2s.on": {"body": "i2s.on(${1:id},${2:func})", "description": "i2s.on(id, func) - \u6ce8\u518cI2S\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.on(0, function(id, buff)\n if buff then\n log.info(\"i2s get data in zbuff\")\n else\n log.info(\"i2s tx one block done\")\n end\nend)\n", "prefix": "i2s.on"}, "i2s.txStat": {"body": "i2s.txStat(${1:id})", "description": "i2s.txStat(id) - \u83b7\u53d6i2s\u7684\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u603b\u5927\u5c0f\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u5269\u4f59\u5f85\u53d1\u9001\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u53d1\u9001\u7f13\u51b2\u533a\u7684\u72b6\u6001, \u4ece\u800c\u5224\u65ad\u662f\u5426\u9700\u8981\u7ee7\u7eed\u4f20\u5165\u97f3\u9891\u6570\u636e\nlocal max, remain = i2s.txStat(0)\nlog.info(\"i2s\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\", max, remain)\n", "prefix": "i2s.txStat"}, "i2s.getPara": {"body": "i2s.getPara(${1:id})", "description": "i2s.getPara(id) - \u83b7\u53d6I2S\u53c2\u6570\uff0c\u53c2\u6570\u5177\u4f53\u53c2\u8003setup\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5728\u5de5\u4f5c\u72b6\u6001 true\u662f\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387\nint \u6570\u636e\u4f4d\u6570\nint \u58f0\u9053\nint \u683c\u5f0f\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf\n", "prefix": "i2s.getPara"}, "iconv.open": {"body": "iconv.open(${1:tocode},${2:fromcode})", "description": "iconv.open(tocode, fromcode) - \u6253\u5f00\u76f8\u5e94\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring tocode$\u76ee\u6807\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nstring fromcode$\u6e90\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nreturn table$cd$\u7f16\u7801\u8f6c\u6362\u51fd\u6570\u7684\u8f6c\u6362\u53e5\u67c4$ \n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\n", "prefix": "iconv.open"}, "iconv:iconv": {"body": "iconv:iconv(${1:inbuf})", "description": "iconv:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u91ca\u4e49\uff1a\u5f85\u8f6c\u6362\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nnumber \u91ca\u4e49\uff1a\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c
\u53d6\u503c\uff1a0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local iconv = iconv.open(\"utf8\", \"ucs2be\")\n return iconv:iconv(ucs2s)\nend\n", "prefix": "iconv:iconv"}, "cd:iconv": {"body": "cd:iconv(${1:inbuf})", "description": "cd:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring inbuf$\u8f93\u5165\u5b57\u7b26\u4e32$\u4f8b\u5982:ucs2s \nreturn number$result$\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c$0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local cd = iconv.open(\"utf8\", \"ucs2be\")\n return cd:iconv(ucs2s)\nend\n", "prefix": "cd:iconv"}, "iconv.close": {"body": "iconv.close(${1:cd})", "description": "iconv.close(cd) - \u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring cd$iconv.open\u8fd4\u56de\u7684\u53e5\u67c4$ \nreturn \n\u4f8b\u5b50\uff1a\n--\u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\niconv.close(cd)\n", "prefix": "iconv.close"}, "io.exists": {"body": "io.exists(${1:path})", "description": "io.exists(path) - \u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"io\", \"file exists\", io.exists(\"/boottime\"))\n", "prefix": "io.exists"}, "io.fileSize": {"body": "io.fileSize(${1:path})", "description": "io.fileSize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal fsize = io.fileSize(\"/bootime\")\nif fsize and fsize > 1024 then\n log.info(\"io\", \"file size\", fsize)\nend\n", "prefix": "io.fileSize"}, "io.readFile": {"body": "io.readFile(${1:path},${2:mode},${3:offset},${4:len})", "description": "io.readFile(path, mode, offset, len) - \u8bfb\u53d6\u6574\u4e2a\u6587\u4ef6,\u8bf7\u6ce8\u610f\u5185\u5b58\u6d88\u8017\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u8bfb\u53d6\u6a21\u5f0f, \u9ed8\u8ba4 \"rb\"\nint \u8d77\u59cb\u4f4d\u7f6e,\u9ed8\u8ba40\nint \u8bfb\u53d6\u957f\u5ea6,\u9ed8\u8ba4\u6574\u4e2a\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nstring \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal data = io.readFile(\"/bootime\")\n-- \u6ce8\u610f: offset\u548clen\u53c2\u6570\u662f 2023.6.6\u6dfb\u52a0\u7684\n-- \u8bfb\u53d6abc.txt, \u5148\u8df3\u8fc7128\u5b57\u8282, \u7136\u540e\u8bfb\u53d6512\u5b57\u8282\u6570\u636e\nlocal data = io.readFile(\"/abc.txt\", \"rb\", 128, 512)\n", "prefix": "io.readFile"}, "io.writeFile": {"body": "io.writeFile(${1:path},${2:data})", "description": "io.writeFile(path, data) - \u5c06\u6570\u636e\u5199\u5165\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nio.writeFile(\"/bootime\", \"1\")\n", "prefix": "io.writeFile"}, "io.fill": {"body": "io.fill(${1:buff},${2:offset},${3:len})", "description": "io.fill(buff, offset, len) - \u8bfb\u53d6\u6587\u4ef6\u5e76\u586b\u5145\u5230zbuff\u5185,\u4f46\u4e0d\u79fb\u52a8\u6307\u9488\u4f4d\u7f6e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f53\nint \u5199\u5165\u7684\u4f4d\u7f6e,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662fzbuff\u7684len\u51cf\u53bboffset\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u8fd4\u56de\u5b9e\u9645\u8bfb\u53d6\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u5c0f\u4e8e0\u4e5f\u8bf4\u660e\u662f\u8bfb\u53d6\u5931\u8d25\u4e86\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(1024)\nlocal f = io.open(\"/sd/test.txt\")\nif f then\n f:fill(buff)\nend\n", "prefix": "io.fill"}, "io.mkfs": {"body": "io.mkfs(${1:path})", "description": "io.mkfs(path) - \u683c\u5f0f\u5316\u6587\u4ef6\u7cfb\u7edf,\u9700\u6307\u5b9a\u6302\u8f7d\u70b9\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkfs(\"/sd\")\nlog.info(\"fs\", \"mkfs\", ret, errio)\n", "prefix": "io.mkfs"}, "io.mkdir": {"body": "io.mkdir(${1:path})", "description": "io.mkdir(path) - \u521b\u5efa\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5efa\u7acb\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkdir(\"/data/\")\nlog.info(\"fs\", \"mkdir\", ret, errio)\n", "prefix": "io.mkdir"}, "io.rmdir": {"body": "io.rmdir(${1:path})", "description": "io.rmdir(path) - \u5220\u9664\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u79fb\u9664\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.rmdir(\"/data/\")\nlog.info(\"fs\", \"rmdir\", ret, errio)\n", "prefix": "io.rmdir"}, "io.lsdir": {"body": "io.lsdir(${1:path},${2:len},${3:offset})", "description": "io.lsdir(path, len, offset) - \u5217\u51fa\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u679a\u4e3e\u7684\u76ee\u5f55\u8def\u5f84\nint \u6700\u5927\u957f\u5ea6, \u9ed8\u8ba410, \u6700\u9ad850\nint \u504f\u79fb\u91cf, \u9ed8\u8ba40, \u5f53\u76ee\u5f55\u6587\u4ef6\u5f88\u591a\u65f6\u5206\u9875\u67e5\u8be2\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, data = io.lsdir(\"/data/\", 10, 0)\nif ret then\n log.info(\"fs\", \"lsdir\", json.encode(data))\nelse\n log.info(\"fs\", \"lsdir\", \"fail\", ret, data)\nend\n", "prefix": "io.lsdir"}, "io.lsmount": {"body": "io.lsmount()", "description": "io.lsmount() - \u5217\u51fa\u6240\u6709\u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\ntable \u6302\u8f7d\u70b9\u5217\u8868\n\u4f8b\u5b50\uff1a\nlocal data = io.lsmount()\nlog.info(\"fs\", \"lsmount\", json.encode(data))\n", "prefix": "io.lsmount"}, "ioqueue.init": {"body": "ioqueue.init(${1:hwtimer_id},${2:cmd_cnt},${3:repeat_cnt})", "description": "ioqueue.init(hwtimer_id,cmd_cnt,repeat_cnt) - \u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\uff0c\u9ed8\u8ba4\u75280\uff0c\u6839\u636e\u5b9e\u9645MCU\u786e\u5b9a\uff0cair105\u4e3a0~5\uff0c\u4e0epwm\u5171\u7528\uff0c\u540c\u4e00\u4e2a\u901a\u9053\u53f7\u4e0d\u80fd\u540c\u65f6\u4e3apwm\u548cioqueue\nint \u4e00\u4e2a\u5b8c\u6574\u5468\u671f\u9700\u8981\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u6bd4\u5b9e\u9645\u7684\u591a\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f1\uff0c\u5982\u679c\u51990\u5219\u8868\u793a\u65e0\u9650\u6b21\u6570\u5faa\u73af\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.init(0,10,5) --\u4ee5timer0\u4e3a\u65f6\u949f\u6e90\u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\uff0c\u670910\u4e2a\u6709\u6548\u547d\u4ee4\uff0c\u5faa\u73af5\u6b21\n", "prefix": "ioqueue.init"}, "ioqueue.setdelay": {"body": "ioqueue.setdelay(${1:hwtimer_id},${2:time_us},${3:time_tick},${4:continue})", "description": "ioqueue.setdelay(hwtimer_id,time_us,time_tick,continue) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u5ef6\u65f6\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint \u5ef6\u65f6\u65f6\u95f4,0~65535us\nint \u5ef6\u65f6\u5fae\u8c03\u65f6\u95f4,0~255tick,\u603b\u7684\u5ef6\u65f6\u65f6\u95f4\u662ftime_us * 1us_tick + time_tick\nboolean \u662f\u5426\u8fde\u7eed\u662f\u8fde\u7eed\u5ef6\u65f6\uff0c\u9ed8\u8ba4\u5426\uff0c\u5982\u679c\u662f\uff0c\u5b9a\u65f6\u5668\u5728\u65f6\u95f4\u5230\u540e\u4e0d\u4f1a\u505c\u6b62\u800c\u662f\u91cd\u65b0\u8ba1\u65f6\uff0c\n", "prefix": "ioqueue.setdelay"}, "ioqueue.delay": {"body": "ioqueue.delay(${1:hwtimer_id})", "description": "ioqueue.delay(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u4e00\u6b21\u91cd\u590d\u5ef6\u65f6\uff0c\u5728\u524d\u9762\u5fc5\u987b\u6709setdelay\u4e14\u662f\u8fde\u7eed\u5ef6\u65f6\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setdelay(0,9,15,true) --\u5ef6\u65f69us+15\u4e2atick,\u5728\u4e4b\u540e\u9047\u5230delay\u547d\u4ee4\u65f6\uff0c\u4f1a\u5ef6\u65f69us+15\u4e2atick\nioqueue.delay(0)\n", "prefix": "ioqueue.delay"}, "ioqueue.setgpio": {"body": "ioqueue.setgpio(${1:hwtimer_id},${2:pin},${3:is_input},${4:pull_mode},${5:init_level})", "description": "ioqueue.setgpio(hwtimer_id,pin,is_input,pull_mode,init_level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6egpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nboolean \u662f\u5426\u662f\u8f93\u5165\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u521d\u59cb\u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setgpio(0,pin.PB01,true,gpio.PULLUP,0) --PB01\u8bbe\u7f6e\u6210\u4e0a\u62c9\u8f93\u5165\nioqueue.setgpio(0,pin.PB01,false,0,1)--PB01\u8bbe\u7f6e\u6210\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u8f93\u51fa\u9ad8\u7535\u5e73\n", "prefix": "ioqueue.setgpio"}, "ioqueue.input": {"body": "ioqueue.input(${1:hwtimer_id},${2:pin})", "description": "ioqueue.input(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bfb\u53d6gpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.input(0,pin.PB01)\n\n", "prefix": "ioqueue.input"}, "ioqueue.output": {"body": "ioqueue.output(${1:hwtimer_id},${2:pin},${3:level})", "description": "ioqueue.output(hwtimer_id,pin,level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8f93\u51faGPIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.output(0,pin.PB01,0)\n", "prefix": "ioqueue.output"}, "ioqueue.set_cap": {"body": "ioqueue.set_cap(${1:hwtimer_id},${2:pin},${3:pull_mode},${4:irq_mode},${5:max_tick})", "description": "ioqueue.set_cap(hwtimer_id,pin,pull_mode,irq_mode,max_tick) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6e\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nint \u5b9a\u65f6\u5668\u6700\u5927\u8ba1\u65f6\u65f6\u95f4 \u8003\u8651\u5230lua\u662fint\u7c7b\u578b\uff0c\u6700\u5c0f0x10000, \u6700\u5927\u503c\u4e3a0x7fffffff\uff0c\u9ed8\u8ba4\u4e3a\u6700\u5927\u503c\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setcap(0,pin.PB01,gpio.PULLUP,gpio.FALLING,48000000)\n", "prefix": "ioqueue.set_cap"}, "ioqueue.capture": {"body": "ioqueue.capture(${1:hwtimer_id})", "description": "ioqueue.capture(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u6355\u83b7\u4e00\u6b21IO\u72b6\u6001\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capture(0)\n", "prefix": "ioqueue.capture"}, "ioqueue.capend": {"body": "ioqueue.capend(${1:hwtimer_id},${2:pin})", "description": "ioqueue.capend(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u7ed3\u675f\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capend(0,pin.PB01)\n", "prefix": "ioqueue.capend"}, "ioqueue.get": {"body": "ioqueue.get(${1:hwtimer_id},${2:input_buff},${3:capture_buff})", "description": "ioqueue.get(hwtimer_id, input_buff, capture_buff) - * \u83b7\u53d6io\u64cd\u4f5c\u961f\u5217\u4e2d\u8f93\u5165\u548c\u6355\u83b7\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nzbuff \u5b58\u653eIO\u8f93\u5165\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level \u5f62\u5f0f\u5b58\u653e\u6570\u636e\nzbuff \u5b58\u653eIO\u6355\u83b7\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level + 4byte tick\u5f62\u5f0f\u5b58\u653e\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u8f93\u5165\u6570\u636e\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u6355\u83b7\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal input_cnt, capture_cnt = ioqueue.get(0, input_buff, capture_buff)\n", "prefix": "ioqueue.get"}, "ioqueue.start": {"body": "ioqueue.start(${1:hwtimer_id})", "description": "ioqueue.start(hwtimer_id) - \u542f\u52a8io\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.start(0)\n", "prefix": "ioqueue.start"}, "ioqueue.stop": {"body": "ioqueue.stop(${1:hwtimer_id})", "description": "ioqueue.stop(hwtimer_id) - \u505c\u6b62io\u64cd\u4f5c\u961f\u5217\uff0c\u53ef\u4ee5\u901a\u8fc7start\u4ece\u5934\u5f00\u59cb\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5df2\u7ecf\u5faa\u73af\u7684\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u8868\u793a\u4e00\u6b21\u5faa\u73af\u90fd\u6ca1\u6709\u5b8c\u6210\nint \u8fd4\u56de\u5355\u6b21\u5faa\u73af\u4e2d\u5df2\u7ecf\u6267\u884c\u7684cmd\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u53ef\u80fd\u662f\u4e00\u6b21\u5faa\u73af\u521a\u521a\u7ed3\u675f\n\u4f8b\u5b50\uff1a\nioqueue.stop(0)\n", "prefix": "ioqueue.stop"}, "ioqueue.release": {"body": "ioqueue.release(${1:hwtimer_id})", "description": "ioqueue.release(hwtimer_id) - \u91ca\u653eio\u64cd\u4f5c\u961f\u5217\u7684\u8d44\u6e90\uff0c\u4e0b\u6b21\u4f7f\u7528\u5fc5\u987b\u91cd\u65b0init\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.release"}, "ioqueue.clear": {"body": "ioqueue.clear(${1:hwtimer_id})", "description": "ioqueue.clear(hwtimer_id) - \u6e05\u7a7aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.clear"}, "ioqueue.done": {"body": "ioqueue.done(${1:hwtimer_id})", "description": "ioqueue.done(hwtimer_id) - \u68c0\u6d4bio\u64cd\u4f5c\u961f\u5217\u662f\u5426\u5df2\u7ecf\u6267\u884c\u5b8c\u6210\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u961f\u5217\u662f\u5426\u6267\u884c\u5b8c\u6210\uff0c\n\u4f8b\u5b50\uff1a\nlocal result = ioqueue.done(0)\n", "prefix": "ioqueue.done"}, "ioqueue.exti": {"body": "ioqueue.exti(${1:pin},${2:pull_mode},${3:irq_mode},${4:onoff})", "description": "ioqueue.exti(pin,pull_mode,irq_mode,onoff) - \u542f\u52a8/\u505c\u6b62\u4e00\u4e2a\u5e26\u7cfb\u7edftick\u8fd4\u56de\u7684\u5916\u90e8\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nboolean \u5f00\u5173\uff0c\u9ed8\u8ba4\u662ffalse\u5173\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.exti(pin.PB01, gpio.PULLUP, gpio.BOTH, true)\nioqueue.exti(pin.PB01)\n", "prefix": "ioqueue.exti"}, "iotauth.aliyun": {"body": "iotauth.aliyun(${1:product_key},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp) - \u963f\u91cc\u4e91\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring product_key\nstring device_name\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"hmacmd5\" \"hmacsha1\" \"hmacsha256\" \u53ef\u9009,\u9ed8\u8ba4\"hmacmd5\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nbool istls \u662f\u5426TLS\u76f4\u8fde true:TLS\u76f4\u8fde false:TCP\u76f4\u8fde\u6a21\u5f0f \u9ed8\u8ba4TCP\u76f4\u8fde\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.aliyun(\"123456789\",\"abcdefg\",\"Y877Bgo8X5owd3lcB5wWDjryNPoB\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.aliyun"}, "iotauth.onenet": {"body": "iotauth.onenet(${1:produt_id},${2:device_name},${3:key},${4:method},${5:cur_timestamp},${6:version})", "description": "iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version) - \u4e2d\u56fd\u79fb\u52a8\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring produt_id \u4ea7\u54c1id\nstring device_name \u8bbe\u5907\u540d\u79f0\nstring key \u8bbe\u5907\u5bc6\u94a5\u6216\u8005\u9879\u76ee\u7684acess_key\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"md5\" \"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"md5\"\nnumber \u65f6\u95f4\u6233, \u4e0d\u7528\u586b\nstring version \u53ef\u9009 \u9ed8\u8ba4\"2018-10-31\"\nstring \u5f53key\u662faccess_key\u65f6, \u586b \"products/\" .. product_id . \u672c\u53c2\u6570\u4e8e2024.1.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\n-- OneNet\u5e73\u53f0\u5b98\u7f51: https://open.iot.10086.cn/\n-- OneNet\u6709\u591a\u79cd\u7248\u672c, \u6ce8\u610f\u533a\u5206, \u4e00\u822c\u6765\u8bf4produt_id\u7eaf\u6570\u5b57\u5c31\u662f\u8001\u7248\u672c, \u5426\u5219\u5c31\u662f\u65b0\u7248\u672c\n\n-- \u65b0\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u82f1\u6587\u5b57\u6bcd\u5b57\u7b26\u4e32\n-- \u5bf9\u5e94demo/onenet/studio\nlocal produt_id = \"Ck2AF9QD2K\"\nlocal device_name = \"test\"\nlocal device_key = \"KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, device_key)\nlog.info(\"onenet.new\", client_id,user_name,password)\n\n-- \u65e7\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u6570\u5b57\u5b57\u7b26\u4e32. 2024.1.29\u65b0\u589e\n-- \u5bf9\u5e94demo/onenet/old_mqtt\nlocal produt_id = \"12342334\"\nlocal device_name = \"test\"\nlocal access_key = \"adfasdfadsfadsf=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, access_key, nil, nil, nil, \"products/\" .. produt_id)\nlog.info(\"onenet.old\", client_id,user_name,password)\n\n", "prefix": "iotauth.onenet"}, "iotauth.iotda": {"body": "iotauth.iotda(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.iotda(device_id,device_secret,cur_timestamp) - \u534e\u4e3a\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.iotda(\"6203cc94c7fb24029b110408_88888888\",\"123456789\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.iotda"}, "iotauth.qcloud": {"body": "iotauth.qcloud(${1:product_id},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp},${6:sdk_appid})", "description": "iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid) - \u817e\u8baf\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring \u4ea7\u54c1id,\u521b\u5efa\u9879\u76ee\u540e\u53ef\u4ee5\u67e5\u770b\u5230,\u7c7b\u4f3c\u4e8eLD8S5J1L07\nstring \u8bbe\u5907\u540d\u79f0,\u4f8b\u5982\u8bbe\u5907\u7684imei\u53f7\nstring \u8bbe\u5907\u5bc6\u94a5,\u521b\u5efa\u8bbe\u5907\u540e,\u67e5\u770b\u8bbe\u5907\u8be6\u60c5\u53ef\u5f97\u5230\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"sha256\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nstring sdk_appid \u53ef\u9009 \u9ed8\u8ba4\u4e3a\"12010126\"\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.qcloud(\"LD8S5J1L07\",\"test\",\"acyv3QDJrRa0fW5UE58KnQ==\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.qcloud"}, "iotauth.tuya": {"body": "iotauth.tuya(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.tuya(device_id,device_secret,cur_timestamp) - \u6d82\u9e26\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba47258089600(2200-01-01 0:0:0)\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.tuya(\"6c95875d0f5ba69607nzfl\",\"fb803786602df760\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.tuya"}, "iotauth.baidu": {"body": "iotauth.baidu(${1:iot_core_id},${2:device_key},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp) - \u767e\u5ea6\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring iot_core_id\nstring device_key\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"MD5\" \"SHA256\" \u53ef\u9009,\u9ed8\u8ba4\"MD5\"\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.baidu(\"abcd123\",\"mydevice\",\"ImSeCrEt0I1M2jkl\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.baidu"}, "ir.sendNEC": {"body": "ir.sendNEC(${1:pin},${2:addr},${3:cmd},${4:repeat},${5:disablePWM})", "description": "ir.sendNEC(pin, addr, cmd, repeat, disablePWM) - \u53d1\u9001NEC\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u4f7f\u7528\u7684GPIO\u5f15\u811a\u7f16\u53f7\nint \u7528\u6237\u7801\uff08\u5927\u4e8e0xff\u5219\u91c7\u7528Extended NEC\u6a21\u5f0f\uff09\nint \u6570\u636e\u7801\nint \u53ef\u9009\uff0c\u5f15\u5bfc\u7801\u53d1\u9001\u6b21\u6570\uff08110ms\u4e00\u6b21\uff09\uff0c\u9ed8\u8ba40\u6b21\nbool \u53ef\u9009\uff0c\u662f\u5426\u7981\u6b62\u76f4\u63a5\u53d1\u9001pwm\u6ce2\uff0c\u9ed8\u8ba4false\n\u4f8b\u5b50\uff1a\n--\u76f4\u63a5\u53d1\nir.sendNEC(0, 0x11, 0x22)\n--\u5916\u63a5\u4e8638K\u7684PWM\u8f7d\u6ce2\uff0c\u53ea\u63a7\u5236\u7535\u5e73\nir.sendNEC(0, 0x11, 0x22,0,true)\n", "prefix": "ir.sendNEC"}, "json.encode": {"body": "json.encode(${1:obj},${2:t})", "description": "json.encode(obj,t) - \u5c06\u5bf9\u8c61\u5e8f\u5217\u5316\u4e3ajson\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nobj \u9700\u8981\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\nstring \u6d6e\u70b9\u6570\u7cbe\u5ea6\u548c\u6a21\u5f0f,\u8fd9\u9879\u4e0d\u5b58\u5728\u7684\u65f6\u5019,\u4e3a\u9ed8\u8ba4\u503c\"7f\",\u6570\u5b57\u53ea\u652f\u6301\"0~14\",\u6a21\u5f0f\u53ea\u652f\u6301\"f/g\"\n\u8fd4\u56de\u503c\uff1a\nstring \u5e8f\u5217\u5316\u540e\u7684json\u5b57\u7b26\u4e32, \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nstring \u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.encode(obj)-->\u6d6e\u70b9\u6570\u7528%.7g\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\njson.encode(obj,\"12f\")-->\u6d6e\u70b9\u6570\u7528%.12f\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\n\n-- 2024.1.9 \u8d77, \u9ed8\u8ba4\u4f7f\u75287f\u683c\u5f0f\u5316\u6d6e\u70b9\u6570\n-- \u4e4b\u524d\u7684\u7248\u672c\u4f7f\u7528 7g\u683c\u5f0f\u5316\u6d6e\u52a8\u6570\n", "prefix": "json.encode"}, "json.decode": {"body": "json.decode(${1:str})", "description": "json.decode(str) - \u5c06\u5b57\u7b26\u4e32\u53cd\u5e8f\u5217\u5316\u4e3a\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u53cd\u5e8f\u5217\u5316\u7684json\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nobj \u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61(\u901a\u5e38\u662ftable), \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nresult \u6210\u529f\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\nerr \u53cd\u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.decode(\"[1,2,3,4,5,6]\")\n", "prefix": "json.decode"}, "keyboard.init": {"body": "keyboard.init(${1:port},${2:conf},${3:map},${4:debounce})", "description": "keyboard.init(port, conf, map, debounce) - \u521d\u59cb\u5316\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\nint \u542f\u7528\u7684keyboard\u7ba1\u811a\u63a9\u7801, \u4f8b\u5982\u4f7f\u7528keyboard0~9, \u5219\u63a9\u7801\u4e3a 0x1FF, \u82e5\u4f7f\u7528 0~3 \u5219 0xF\nint keyboard\u7ba1\u811a\u65b9\u5411\u6620\u5c04, \u5176\u4e2d\u8f93\u5165\u4e3a0,\u8f93\u51fa\u4e3a1, \u6309\u4f4d\u8bbe\u7f6e. \u4f8b\u5982 keyboard0~3\u4f5c\u4e3a\u8f93\u5165, keyboard4~7\u4e3a\u8f93\u5165, \u5219 0xF0\nint \u6d88\u6296\u914d\u7f6e,\u9884\u7559,\u53ef\u4ee5\u4e0d\u586b\n\u4f8b\u5b50\uff1a\n-- \u505a\u4e00\u4e2a 4*4 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~7, \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~7, \u5bf9\u5e94conf\u4e3a 0xFF\n-- \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa, \u5bf9\u5e94map \u4e3a 0xF0\nkeyboard.init(0, 0xFF, 0xF0)\n\n-- \u505a\u4e00\u4e2a 2*3 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~4, \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~4, \u4e8c\u8fdb\u5236\u4e3a 11111, \u5bf9\u5e94conf\u7684\u5341\u516d\u8fdb\u5236\u8868\u8fbe\u4e3a 0x1F\n-- \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa, \u4e8c\u8fdb\u5236\u4e3a 11100 \u5bf9\u5e94map \u4e3a 0x14\n-- keyboard.init(0, 0xFF, 0x14)\n\nsys.subscribe(\"KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "keyboard.init"}, "lcd.init": {"body": "lcd.init(${1:tp},${2:args},${3:spi_dev},${4:init_in_service})", "description": "lcd.init(tp, args, spi_dev, init_in_service) - lcd\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lcd\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1a
st7796
st7789
st7735
st7735v
st7735s
gc9a01
gc9106l
gc9306x
ili9486
custom\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_pwr\uff08\u80cc\u5149\uff09\u4e3a\u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1alcd\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1alcd\u590d\u4f4d\u5f15\u811a
pin_pwr\uff1alcd\u80cc\u5149\u5f15\u811a \u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
direction\uff1alcd\u5c4f\u5e55\u65b9\u5411 0:0\u00b0 1:180\u00b0 2:270\u00b0 3:90\u00b0
w\uff1alcd \u6c34\u5e73\u5206\u8fa8\u7387
h\uff1alcd \u7ad6\u76f4\u5206\u8fa8\u7387
xoffset\uff1ax\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
yoffset\uff1ay\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
direction0\uff1a0\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction90\uff1a90\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction180\uff1a180\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction270\uff1a270\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
sleepcmd\uff1a\u7761\u7720\u547d\u4ee4\uff0c\u9ed8\u8ba40X10
wakecmd\uff1a\u5524\u9192\u547d\u4ee4\uff0c\u9ed8\u8ba40X11
interface_mode lcd\u6a21\u5f0f\uff0c\u9ed8\u8ba4lcd.WIRE_4_BIT_8_INTERFACE_I\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\nboolean \u5141\u8bb8\u521d\u59cb\u5316\u5728lcd service\u91cc\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684st7735s \u6ce8\u610f:lcd\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)\nlog.info(\"lcd.init\",\nlcd.init(\"st7735s\",{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))\n", "prefix": "lcd.init"}, "lcd.close": {"body": "lcd.close()", "description": "lcd.close() - \u5173\u95edlcd\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\nlcd.close()\n", "prefix": "lcd.close"}, "lcd.on": {"body": "lcd.on()", "description": "lcd.on() - \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.on()\n", "prefix": "lcd.on"}, "lcd.off": {"body": "lcd.off()", "description": "lcd.off() - \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.off()\n", "prefix": "lcd.off"}, "lcd.sleep": {"body": "lcd.sleep()", "description": "lcd.sleep() - lcd\u7761\u7720\n\u4f8b\u5b50\uff1a\n-- lcd\u7761\u7720\nlcd.sleep()\n", "prefix": "lcd.sleep"}, "lcd.wakeup": {"body": "lcd.wakeup()", "description": "lcd.wakeup() - lcd\u5524\u9192\n\u4f8b\u5b50\uff1a\n-- lcd\u5524\u9192\nlcd.wakeup()\n", "prefix": "lcd.wakeup"}, "lcd.invon": {"body": "lcd.invon()", "description": "lcd.invon() - lcd\u53cd\u663e\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\nlcd.invon()\n", "prefix": "lcd.invon"}, "lcd.invoff": {"body": "lcd.invoff()", "description": "lcd.invoff() - lcd\u53cd\u663e\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\u5173\u95ed\nlcd.invoff()\n", "prefix": "lcd.invoff"}, "lcd.cmd": {"body": "lcd.cmd(${1:cmd})", "description": "lcd.cmd(cmd) - lcd\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint cmd\n\u4f8b\u5b50\uff1a\n-- lcd\u547d\u4ee4\nlcd.cmd(0x21)\n", "prefix": "lcd.cmd"}, "lcd.data": {"body": "lcd.data(${1:data})", "description": "lcd.data(data) - lcd\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint data\n\u4f8b\u5b50\uff1a\n-- lcd\u6570\u636e\nlcd.data(0x21)\n", "prefix": "lcd.data"}, "lcd.setColor": {"body": "lcd.setColor(${1:back},${2:fore})", "description": "lcd.setColor(back,fore) - lcd\u989c\u8272\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u80cc\u666f\u8272\nint \u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u8bbe\u7f6e\nlcd.setColor(0xFFFF,0x0000)\n", "prefix": "lcd.setColor"}, "lcd.draw": {"body": "lcd.draw(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.draw(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nstring \u5b57\u7b26\u4e32\u6216zbuff\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlocal buff = zbuff.create({201,1,16},0x001F)\nlcd.draw(20,30,220,30,buff)\n", "prefix": "lcd.draw"}, "lcd.clear": {"body": "lcd.clear(${1:color})", "description": "lcd.clear(color) - lcd\u6e05\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u6e05\u5c4f\nlcd.clear()\n", "prefix": "lcd.clear"}, "lcd.fill": {"body": "lcd.fill(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.fill(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e,\u4e0d\u542b\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e,\u4e0d\u542b\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlcd.fill(20,30,220,30,0x0000)\n", "prefix": "lcd.fill"}, "lcd.drawPoint": {"body": "lcd.drawPoint(${1:x0},${2:y0},${3:color})", "description": "lcd.drawPoint(x0,y0,color) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint \u70b9\u7684X\u4f4d\u7f6e.\nint \u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawPoint(20,30,0x001F)\n", "prefix": "lcd.drawPoint"}, "lcd.drawLine": {"body": "lcd.drawLine(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawLine(x0,y0,x1,y1,color) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawLine(20,30,220,30,0x001F)\n", "prefix": "lcd.drawLine"}, "lcd.drawRectangle": {"body": "lcd.drawRectangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawRectangle(x0,y0,x1,y1,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawRectangle(20,40,220,80,0x001F)\n", "prefix": "lcd.drawRectangle"}, "lcd.drawCircle": {"body": "lcd.drawCircle(${1:x0},${2:y0},${3:r},${4:color})", "description": "lcd.drawCircle(x0,y0,r,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5706\u5fc3\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u5706\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u7684X\u4f4d\u7f6e.\nint \u5706\u5fc3\u7684Y\u4f4d\u7f6e.\nint \u534a\u5f84.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawCircle(120,120,20,0x001F)\n", "prefix": "lcd.drawCircle"}, "lcd.drawQrcode": {"body": "lcd.drawQrcode(${1:x},${2:y},${3:str},${4:size})", "description": "lcd.drawQrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lcd.drawQrcode"}, "lcd.setFont": {"body": "lcd.setFont(${1:font},${2:indentation})", "description": "lcd.setFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nint font lcd.font_XXX \u8bf7\u67e5\u9605\u5e38\u91cf\u8868\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548,\u8c03\u7528lcd.drawStr\u524d\u4e00\u5b9a\u8981\u5148\u8bbe\u7f6e\n\n-- \u82e5\u63d0\u793a \"only font pointer is allow\" , \u5219\u4ee3\u8868\u5f53\u524d\u56fa\u4ef6\u4e0d\u542b\u5bf9\u5e94\u5b57\u4f53, \u53ef\u4f7f\u7528\u4e91\u7f16\u8bd1\u670d\u52a1\u514d\u8d39\u5b9a\u5236\n-- \u4e91\u7f16\u8bd1\u6587\u6863: https://wiki.luatos.com/develop/compile/Cloud_compilation.html\n\n-- lcd\u5e93\u7684\u9ed8\u8ba4\u5b57\u4f53\u5747\u4ee5 lcd.font_ \u5f00\u5934\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm12_chinese) -- \u5177\u4f53\u53d6\u503c\u53ef\u53c2\u8003api\u6587\u6863\u7684\u5e38\u91cf\u8868\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.setFont"}, "lcd.drawStr": {"body": "lcd.drawStr(${1:x},${2:y},${3:str},${4:fg_color})", "description": "lcd.drawStr(x,y,str,fg_color) - \u663e\u793a\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807 \u6ce8\u610f:\u6b64(x,y)\u4e3a\u5de6\u4e0b\u8d77\u59cb\u5750\u6807\nstring str \u6587\u4ef6\u5185\u5bb9\nint fg_color str\u989c\u8272 \u6ce8\u610f:\u6b64\u53c2\u6570\u53ef\u9009\uff0c\u5982\u4e0d\u586b\u5199\u5219\u4f7f\u7528\u4e4b\u524d\u8bbe\u7f6e\u7684\u989c\u8272\uff0c\u7ed8\u5236\u53ea\u4f1a\u7ed8\u5236\u5b57\u4f53\u90e8\u5206\uff0c\u80cc\u666f\u9700\u8981\u81ea\u5df1\u6e05\u9664\n\u4f8b\u5b50\uff1a\n-- \u663e\u793a\u4e4b\u524d\u5148\u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm16_chinese)\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.drawStr"}, "lcd.drawGtfontGb2312": {"body": "lcd.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontGb2312"}, "lcd.drawGtfontGb2312Gray": {"body": "lcd.drawGtfontGb2312Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontGb2312Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontGb2312Gray"}, "lcd.drawGtfontUtf8": {"body": "lcd.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontUtf8"}, "lcd.drawGtfontUtf8Gray": {"body": "lcd.drawGtfontUtf8Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontUtf8Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontUtf8Gray"}, "lcd.getSize": {"body": "lcd.getSize()", "description": "lcd.getSize() - \u83b7\u53d6\u5c4f\u5e55\u5c3a\u5bf8\n\u8fd4\u56de\u503c\uff1a\nint \u5bbd, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\nint \u9ad8, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"lcd\", \"size\", lcd.getSize())\n", "prefix": "lcd.getSize"}, "lcd.drawXbm": {"body": "lcd.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "lcd.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef \u9634\u7801 \u9010\u884c \u9006\u5411\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nlcd.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "lcd.drawXbm"}, "lcd.showImage": {"body": "lcd.showImage(${1:x},${2:y},${3:file})", "description": "lcd.showImage(x, y, file) - \u663e\u793a\u56fe\u7247,\u5f53\u524d\u53ea\u652f\u6301jpg,jpeg\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nstring \u6587\u4ef6\u8def\u5f84\n\u4f8b\u5b50\uff1a\nlcd.showImage(0,0,\"/luadb/logo.jpg\")\n", "prefix": "lcd.showImage"}, "lcd.flush": {"body": "lcd.flush()", "description": "lcd.flush() - \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u754c\u9762, \u4ec5\u8bbe\u7f6ebuff\u4e14\u7981\u7528\u81ea\u52a8\u5c5e\u6027\u540e\u4f7f\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil/false\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e0e lcd.setupBuff lcd.autoFlush \u914d\u5408\u4f7f\u7528\nlcd.flush()\n", "prefix": "lcd.flush"}, "lcd.setupBuff": {"body": "lcd.setupBuff(${1:conf},${2:onheap})", "description": "lcd.setupBuff(conf, onheap) - \u8bbe\u7f6e\u663e\u793a\u7f13\u51b2\u533a, \u6240\u9700\u5185\u5b58\u5927\u5c0f\u4e3a 2\u00d7\u5bbd\u00d7\u9ad8 \u5b57\u8282. \u8bf7\u8861\u91cf\u5185\u5b58\u9700\u6c42\u4e0e\u4e1a\u52a1\u6240\u9700\u7684\u5237\u65b0\u9891\u6b21.\n\u4f20\u5165\u503c\uff1a\nuserdata conf\u6307\u9488, \u4e0d\u9700\u8981\u4f20\nbool true\u4f7f\u7528heap\u5185\u5b58, false\u4f7f\u7528vm\u5185\u5b58, \u9ed8\u8ba4\u4f7f\u7528vm\u5185\u5b58, \u4e0d\u9700\u8981\u4e3b\u52a8\u4f20\n\u8fd4\u56de\u503c\uff1a\nbool \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcd\u7684buff\u7f13\u51b2\u533a, \u53ef\u7406\u89e3\u4e3aFrameBuffer\u533a\u57df.\nlcd.setupBuff()\n", "prefix": "lcd.setupBuff"}, "lcd.autoFlush": {"body": "lcd.autoFlush(${1:enable})", "description": "lcd.autoFlush(enable) - \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0, \u9700\u914d\u5408lcd.setupBuff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5237\u65b0,\u9ed8\u8ba4\u4e3atrue\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6ebuff \u5e76\u7981\u7528\u81ea\u52a8\u66f4\u65b0\nlcd.setupBuff()\nlcd.autoFlush(false)\n-- \u7981\u6b62\u81ea\u52a8\u66f4\u65b0\u540e, \u9700\u8981\u4f7f\u7528 lcd.flush() \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u5c4f\u5e55\n", "prefix": "lcd.autoFlush"}, "lcd.rgb565": {"body": "lcd.rgb565(${1:r},${2:g},${3:b},${4:swap})", "description": "lcd.rgb565(r, g, b, swap) - RGB565\u989c\u8272\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nint \u7ea2\u8272, 0x00 ~ 0xFF\nint \u7eff\u8272, 0x00 ~ 0xFF\nint \u84dd\u8272, 0x00 ~ 0xFF\nbool \u662f\u5426\u7ffb\u8f6c, true \u7ffb\u8f6c, false \u4e0d\u7ffb\u8f6c. \u9ed8\u8ba4\u7ffb\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u989c\u8272\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u652f\u6301\u591a\u79cd\u6a21\u5f0f, \u53c2\u6570\u6570\u91cf\u5206\u522b\u662f 1, 2, 3, 4\n-- 1. \u5355\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, swap = true, \u63a8\u8350\nlocal red = lcd.rgb565(0xFF0000)\nlocal green = lcd.rgb565(0x00FF00)\nlocal blue = lcd.rgb565(0x0000FF)\n\n-- 2. \u4e24\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF0000, true)\nlocal green = lcd.rgb565(0x00FF00, true)\nlocal blue = lcd.rgb565(0x0000FF, true)\n\n-- 3. \u4e09\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF)\n\n-- 4. \u56db\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00, true)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00, true)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF, true)\n", "prefix": "lcd.rgb565"}, "lcdseg.setup": {"body": "lcdseg.setup(${1:bias},${2:duty},${3:vlcd},${4:com_number},${5:fresh_rate},${6:com_mark},${7:seg_mark})", "description": "lcdseg.setup(bias, duty, vlcd, com_number, fresh_rate, com_mark, seg_mark) - \u521d\u59cb\u5316lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint bias\u503c,\u901a\u5e38\u4e3a 1/3 bias, \u5bf9\u5e94 lcdseg.BIAS_ONETHIRD\nint duty\u503c,\u901a\u5e38\u4e3a 1/4 duty, \u5bf9\u5e94 lcdseg.DUTY_ONEFOURTH\nint \u7535\u538b, \u5355\u4f4d100mV, \u4f8b\u59822.7v\u519927. air103\u652f\u6301\u7684\u503c\u6709 27/29/31/33\nint COM\u811a\u7684\u6570\u91cf, \u53d6\u51b3\u4e8e\u5177\u4f53\u6a21\u5757, air103\u652f\u63011-4\nint \u5237\u65b0\u7387,\u901a\u5e38\u4e3a60, \u5bf9\u5e9460HZ\nint COM\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFF,\u5168\u90e8\u542f\u7528.\u82e5\u53ea\u542f\u7528COM0/COM1, \u52190x03\nint seg\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFFFFFFFF,\u5373\u5168\u90e8\u542f\u7528. \u82e5\u53ea\u542f\u7528\u524d16\u4e2a, 0xFFFF\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcdseg\nif lcdseg.setup(lcdseg.BIAS_ONETHIRD, lcdseg.DUTY_ONEFOURTH, 33, 4, 60) then\n lcdseg.enable(1)\n\n lcdseg.seg_set(0, 1, 1)\n lcdseg.seg_set(2, 0, 1)\n lcdseg.seg_set(3, 31, 1)\nend\n", "prefix": "lcdseg.setup"}, "lcdseg.enable": {"body": "lcdseg.enable(${1:en})", "description": "lcdseg.enable(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.enable"}, "lcdseg.power": {"body": "lcdseg.power(${1:en})", "description": "lcdseg.power(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u7684\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.power"}, "lcdseg.seg_set": {"body": "lcdseg.seg_set(${1:com},${2:seg},${3:en})", "description": "lcdseg.seg_set(com, seg, en) - \u8bbe\u7f6e\u5177\u4f53\u4e00\u4e2a\u6bb5\u7801\u7684\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint COM\u53f7\nint seg\u53f7 \u8981\u66f4\u6539\u7684\u5b57\u6bb5\u7684\u4f4d\u7d22\u5f15\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.seg_set"}, "libcoap.new": {"body": "libcoap.new(${1:code},${2:uri},${3:headers},${4:payload})", "description": "libcoap.new(code, uri, headers, payload) - \u521b\u5efa\u4e00\u4e2acoap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nint coap\u7684code, \u4f8b\u5982libcoap.GET/libcoap.POST/libcoap.PUT/libcoap.DELETE\nstring \u76ee\u6807URI,\u5fc5\u987b\u586b\u5199, \u4e0d\u9700\u8981\u52a0\u4e0a/\u5f00\u5934\ntable \u8bf7\u6c42\u5934,\u7c7b\u4f3c\u4e8ehttp\u7684headers,\u53ef\u9009\nstring \u8bf7\u6c42\u4f53,\u7c7b\u4f3c\u4e8ehttp\u7684body,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u4e00\u4e2a\u8bf7\u6c42\u670d\u52a1\u5668time\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nlocal data = coapdata:rawdata()\n", "prefix": "libcoap.new"}, "libcoap.parse": {"body": "libcoap.parse(${1:str})", "description": "libcoap.parse(str) - \u89e3\u6790coap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring coap\u6570\u636e\u5305\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305,\u5982\u679c\u89e3\u6790\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode(), coapdata:data())\n", "prefix": "libcoap.parse"}, "coapdata:msgid": {"body": "coapdata:msgid()", "description": "coapdata:msgid() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684msgid\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684msgid\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:msgid())\n", "prefix": "coapdata:msgid"}, "coapdata:token": {"body": "coapdata:token()", "description": "coapdata:token() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684token\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684token\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:token())\n", "prefix": "coapdata:token"}, "coapdata:rawdata": {"body": "coapdata:rawdata()", "description": "coapdata:rawdata() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e,\u7528\u4e8e\u53d1\u9001\u5230\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nnetc:send(coapdata:rawdata())\n", "prefix": "coapdata:rawdata"}, "coapdata:code": {"body": "coapdata:code()", "description": "coapdata:code() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684code\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684code\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:code())\n", "prefix": "coapdata:code"}, "coapdata:hcode": {"body": "coapdata:hcode()", "description": "coapdata:hcode() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684http code, \u6bd4coap\u539f\u59cb\u7684code\u8981\u53cb\u597d\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684http code,\u4f8b\u5982200,205,404\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode())\n", "prefix": "coapdata:hcode"}, "coapdata:type": {"body": "coapdata:type(${1:t})", "description": "coapdata:type(t) - \u83b7\u53d6coap\u6570\u636e\u5305\u7684type, \u4f8b\u5982libcoap.CON/NON/ACK/RST\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7684type\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684type\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:type())\n", "prefix": "coapdata:type"}, "coapdata:data": {"body": "coapdata:data()", "description": "coapdata:data() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684data\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684data\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:data())\n", "prefix": "coapdata:data"}, "libgnss.parse": {"body": "libgnss.parse(${1:str})", "description": "libgnss.parse(str) - \u5904\u7406nmea\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u539f\u59cbnmea\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\u6570\u636e\nlibgnss.parse(indata)\nlog.info(\"nmea\", json.encode(libgnss.getRmc(), \"11g\"))\n", "prefix": "libgnss.parse"}, "libgnss.isFix": {"body": "libgnss.isFix()", "description": "libgnss.isFix() - \u5f53\u524d\u662f\u5426\u5df2\u7ecf\u5b9a\u4f4d\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5b9a\u4f4d\u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"isFix\", libgnss.isFix())\n", "prefix": "libgnss.isFix"}, "libgnss.getIntLocation": {"body": "libgnss.getIntLocation(${1:speed_type})", "description": "libgnss.getIntLocation(speed_type) - \u83b7\u53d6\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u901f\u5ea6\u5355\u4f4d,\u9ed8\u8ba4\u662fm/h\n\u8fd4\u56de\u503c\uff1a\nint lat\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint lng\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint speed\u6570\u636e, \u5355\u4f4d\u7c73. \u4e8e2023.9.26\u4fee\u6b63\n\u4f8b\u5b50\uff1a\n-- \u5efa\u8bae\u7528libgnss.getRmc(1)\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n\n-- 2023.12.11 \u65b0\u589espeed_type\u53c2\u6570\n--[[\n\u901f\u5ea6\u5355\u4f4d\u53ef\u9009\u503c\n0 - m/h \u7c73/\u5c0f\u65f6, \u9ed8\u8ba4\u503c, \u6574\u578b\n1 - m/s \u7c73/\u79d2, \u6d6e\u70b9\u6570\n2 - km/h \u5343\u7c73/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n3 - kn/h \u82f1\u91cc/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n]]\n-- \u9ed8\u8ba4 \u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n-- \u7c73/\u79d2\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(1))\n-- \u5343\u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(2))\n-- \u82f1\u91cc/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(3))\n", "prefix": "libgnss.getIntLocation"}, "libgnss.getRmc": {"body": "libgnss.getRmc(${1:data_mode})", "description": "libgnss.getRmc(data_mode) - \u83b7\u53d6\u539f\u59cbRMC\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cbRMC\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbrmc\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"rmc\", json.encode(libgnss.getRmc(2)))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"course\":0,\n \"valid\":true, // true\u5b9a\u4f4d\u6210\u529f,false\u5b9a\u4f4d\u4e22\u5931\n \"lat\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"lng\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"variation\":0, // \u5730\u9762\u822a\u5411\uff0c\u5355\u4f4d\u4e3a\u5ea6\uff0c\u4ece\u5317\u5411\u8d77\u987a\u65f6\u9488\u8ba1\u7b97\n \"speed\":0 // \u5730\u9762\u901f\u5ea6, \u5355\u4f4d\u4e3a\"\u8282\"\n \"year\":2023, // \u5e74\u4efd\n \"month\":1, // \u6708\u4efd, 1-12\n \"day\":5, // \u6708\u4efd\u5929, 1-31\n \"hour\":7, // \u5c0f\u65f6,0-23\n \"min\":23, // \u5206\u949f,0-59\n \"sec\":20, // \u79d2,0-59\n}\n]]\n", "prefix": "libgnss.getRmc"}, "libgnss.getGsv": {"body": "libgnss.getGsv()", "description": "libgnss.getGsv() - \u83b7\u53d6\u539f\u59cbGSV\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSV\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"gsv\", json.encode(libgnss.getGsv()))\n--[[\u5b9e\u4f8b\u8f93\u51fa\n{\n \"total_sats\":24, // \u603b\u53ef\u89c1\u536b\u661f\u6570\u91cf\n \"sats\":[\n {\n \"snr\":27, // \u4fe1\u566a\u6bd4\n \"azimuth\":278, // \u65b9\u5411\u89d2\n \"elevation\":59, // \u4ef0\u89d2\n \"tp\":0, // 0 - GPS, 1 - BD\n \"nr\":4 // \u536b\u661f\u7f16\u53f7\n },\n // \u8fd9\u91cc\u5ffd\u7565\u4e8622\u4e2a\u536b\u661f\u7684\u4fe1\u606f\n {\n \"snr\":0,\n \"azimuth\":107,\n \"elevation\":19,\n \"tp\":1,\n \"nr\":31\n }\n ]\n}\n]]\n", "prefix": "libgnss.getGsv"}, "libgnss.getGsa": {"body": "libgnss.getGsa(${1:data_mode})", "description": "libgnss.getGsa(data_mode) - \u83b7\u53d6\u539f\u59cbGSA\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\nlog.info(\"nmea\", \"gsa\", json.encode(libgnss.getGsa(), \"11g\"))\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f0, \u4e5f\u5c31\u662f\u9ed8\u8ba4\u6a21\u5f0f)\n--[[\n{\n \"sats\":[ // \u6b63\u5728\u4f7f\u7528\u7684\u536b\u661f\u7f16\u53f7\n 9,\n 6,\n 16,\n 16,\n 26,\n 21,\n 27,\n 27,\n 4,\n 36,\n 3,\n 7,\n 8,\n 194\n ],\n \"vdop\":0.03083333, // \u5782\u76f4\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"pdop\":0.0455, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"fix_type\":3, // \u5b9a\u4f4d\u6a21\u5f0f, 1-\u672a\u5b9a\u4f4d, 2-2D\u5b9a\u4f4d, 3-3D\u5b9a\u4f4d\n \"hdop\":0.0335 // \u4f4d\u7f6e\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n}\n]]\n\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f1), 2024.5.26\u65b0\u589e\n[\n {\"pdop\":7.8299999,\"sats\":[13,15,18,23],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3},\n {\"pdop\":7.8299999,\"sats\":[20,35,8,13],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3}\n]\n", "prefix": "libgnss.getGsa"}, "libgnss.getVtg": {"body": "libgnss.getVtg(${1:data_mode})", "description": "libgnss.getVtg(data_mode) - \u83b7\u53d6VTA\u901f\u5ea6\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009, 3-\u539f\u59cb\u5b57\u7b26\u4e32, \u4e0d\u4f20\u6216\u8005\u4f20\u5176\u4ed6\u503c, \u5219\u8fd4\u56de\u6d6e\u70b9\u503c\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbVTA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"vtg\", json.encode(libgnss.getVtg()))\n-- \u793a\u4f8b\n--[[\n{\n \"speed_knots\":0, // \u901f\u5ea6, \u82f1\u91cc/\u5c0f\u65f6\n \"true_track_degrees\":0, // \u771f\u5317\u65b9\u5411\u89d2\n \"magnetic_track_degrees\":0, // \u78c1\u5317\u65b9\u5411\u89d2\n \"speed_kph\":0 // \u901f\u5ea6, \u5343\u7c73/\u5c0f\u65f6\n}\n-- \u63d0\u9192: Air780EG\u548cAir510U,\u5728\u901f\u5ea6<5km/h\u65f6, \u4e0d\u4f1a\u8fd4\u56de\u65b9\u5411\u89d2\n]]\n", "prefix": "libgnss.getVtg"}, "libgnss.getZda": {"body": "libgnss.getZda()", "description": "libgnss.getZda() - \u83b7\u53d6\u539f\u59cbZDA\u65f6\u95f4\u548c\u65e5\u671f\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbzda\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"zda\", json.encode(libgnss.getZda()))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"minute_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5206\u949f, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"hour_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5c0f\u65f6, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"year\":2023 // UTC \u5e74\uff0c\u56db\u4f4d\u6570\u5b57\n \"month\":1, // UTC \u6708\uff0c\u4e24\u4f4d\uff0c01 ~ 12\n \"day\":5, // UTC \u65e5\uff0c\u4e24\u4f4d\u6570\u5b57\uff0c01 ~ 31\n \"hour\":7, // \u5c0f\u65f6\n \"min\":50, // \u5206\n \"sec\":14, // \u79d2\n}\n]]\n", "prefix": "libgnss.getZda"}, "libgnss.debug": {"body": "libgnss.debug(${1:mode})", "description": "libgnss.debug(mode) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool true\u5f00\u542f\u8c03\u8bd5,false\u5173\u95ed\u8c03\u8bd5,\u9ed8\u8ba4\u4e3afalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u8c03\u8bd5, \u4f1a\u8f93\u51faGNSS\u539f\u59cb\u6570\u636e\u5230\u65e5\u5fd7\u4e2d\nlibgnss.debug(true)\n-- \u5173\u95ed\u8c03\u8bd5\nlibgnss.debug(false)\n", "prefix": "libgnss.debug"}, "libgnss.getGga": {"body": "libgnss.getGga(${1:data_mode})", "description": "libgnss.getGga(data_mode) - \u83b7\u53d6GGA\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cb\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable GGA\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gga = libgnss.getGga(2)\nif gga then\n log.info(\"GGA\", json.encode(gga, \"11g\"))\nend\n--\u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"dgps_age\":0, // \u5dee\u5206\u6821\u6b63\u65f6\u5ef6\uff0c\u5355\u4f4d\u4e3a\u79d2\n \"fix_quality\":1, // \u5b9a\u4f4d\u72b6\u6001\u6807\u8bc6 0 - \u65e0\u6548,1 - \u5355\u70b9\u5b9a\u4f4d,2 - \u5dee\u5206\u5b9a\u4f4d\n \"satellites_tracked\":14, // \u53c2\u4e0e\u5b9a\u4f4d\u7684\u536b\u661f\u6570\u91cf\n \"altitude\":0.255, // \u6d77\u5e73\u9762\u5206\u79bb\u5ea6, \u6216\u8005\u6210\u4e3a\u6d77\u62d4, \u5355\u4f4d\u662f\u7c73,\n \"hdop\":0.0335, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"height\":0 // \u692d\u7403\u9ad8\uff0c\u56fa\u5b9a\u8f93\u51fa 1 \u4f4d\u5c0f\u6570\n}\n]]\n", "prefix": "libgnss.getGga"}, "libgnss.getGll": {"body": "libgnss.getGll(${1:data_mode})", "description": "libgnss.getGll(data_mode) - \u83b7\u53d6GLL\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable GLL\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gll = libgnss.getGll(2)\nif gll then\n log.info(\"GLL\", json.encode(gll, \"11g\"))\nend\n-- \u5b9e\u4f8b\u6570\u636e\n--[[\n{\n \"status\":\"A\", // \u5b9a\u4f4d\u72b6\u6001, A\u6709\u6548, B\u65e0\u6548\n \"mode\":\"A\", // \u5b9a\u4f4d\u6a21\u5f0f, V\u65e0\u6548, A\u5355\u70b9\u89e3, D\u5dee\u5206\u89e3\n \"sec\":20, // \u79d2, UTC\u65f6\u95f4\u4e3a\u51c6\n \"min\":23, // \u5206\u949f, UTC\u65f6\u95f4\u4e3a\u51c6\n \"hour\":7, // \u5c0f\u65f6, UTC\u65f6\u95f4\u4e3a\u51c6\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"us\":0 // \u5fae\u5999\u6570, \u901a\u5e38\u4e3a0\n}\n]]\n", "prefix": "libgnss.getGll"}, "libgnss.clear": {"body": "libgnss.clear()", "description": "libgnss.clear() - \u6e05\u9664\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8be5\u64cd\u4f5c\u4f1a\u6e05\u9664\u6240\u6709\u5b9a\u4f4d\u6570\u636e\n", "prefix": "libgnss.clear"}, "libgnss.bind": {"body": "libgnss.bind(${1:id},${2:next_id})", "description": "libgnss.bind(id, next_id) - \u7ed1\u5b9auart\u7aef\u53e3\u8fdb\u884cGNSS\u6570\u636e\u8bfb\u53d6\n\u4f20\u5165\u503c\uff1a\nint uart\u7aef\u53e3\u53f7\nint \u8f6c\u53d1\u5230uart\u7684id, \u4f8b\u5982\u865a\u62dfuart.VUART_0\n\u4f8b\u5b50\uff1a\n-- \u914d\u7f6e\u4e32\u53e3\u4fe1\u606f, \u901a\u5e38\u4e3a 115200 8N1\nuart.setup(2, 115200)\n-- \u7ed1\u5b9auart, \u9a6c\u4e0a\u5f00\u59cb\u89e3\u6790GNSS\u6570\u636e\nlibgnss.bind(2)\n-- \u65e0\u9700\u518d\u8c03\u7528uart.on\u7136\u540e\u8c03\u7528libgnss.parse\n-- \u5f00\u53d1\u671f\u53ef\u6253\u5f00\u8c03\u8bd5\u65e5\u5fd7\nlibgnss.debug(true)\n\n-- 2023-01-02\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u6709\u6548\n-- \u4eceuart2\u8bfb\u53d6\u5e76\u89e3\u6790, \u540c\u65f6\u8f6c\u53d1\u5230\u865a\u62df\u4e32\u53e30\nlibgnss.bind(2, uart.VUART_0)\n", "prefix": "libgnss.bind"}, "libgnss.locStr": {"body": "libgnss.locStr(${1:mode})", "description": "libgnss.locStr(mode) - \u83b7\u53d6\u4f4d\u7f6e\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6a21\u5f0f. 0- Air780EG\u6240\u9700\u7684\u683c\u5f0f\nreturn \u6307\u5b9a\u6a21\u5f0f\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u63a8\u8350\u5728\u5b9a\u4f4d\u6210\u529f\u540e\u8c03\u7528\n", "prefix": "libgnss.locStr"}, "libgnss.rtcAuto": {"body": "libgnss.rtcAuto(${1:enable})", "description": "libgnss.rtcAuto(enable) - \u5b9a\u4f4d\u6210\u529f\u540e\u81ea\u52a8\u8bbe\u7f6eRTC\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f\u4e0e\u5426, \u9ed8\u8ba4\u662ffalse\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u81ea\u52a8\u8bbe\u7f6eRTC\nlibgnss.rtcAuto(true)\n", "prefix": "libgnss.rtcAuto"}, "libgnss.on": {"body": "libgnss.on(${1:tp},${2:fn})", "description": "libgnss.on(tp, fn) - \u5e95\u5c42\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u7c7b\u578b,\u5f53\u524d\u652f\u6301\"raw\"\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5, \u7528\u4e8e\u83b7\u53d6\u5e95\u5c42\u5b9e\u9645\u6536\u5230\u7684\u6570\u636e\nlibgnss.on(\"raw\", function(data)\n log.info(\"GNSS\", data)\nend)\n", "prefix": "libgnss.on"}, "libgnss.getTxt": {"body": "libgnss.getTxt()", "description": "libgnss.getTxt() - \u83b7\u53d6\u975e\u6807\u7684GPTXT\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nreturn GPTXT\u6240\u643a\u5e26\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.6.6 \u6dfb\u52a0\nlog.info(\"gnss\", \"txt\", libgnss.getTxt())\n\n-- \u6d4b\u8bd5\u8bed\u53e5\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA SHORT*63\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OPEN*25\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OK*35\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\n", "prefix": "libgnss.getTxt"}, "libgnss.casic_aid": {"body": "libgnss.casic_aid(${1:dt},${2:loc})", "description": "libgnss.casic_aid(dt, loc) - \u5408\u6210Air530Z\u6240\u9700\u8981\u7684\u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f20\u5165\u503c\uff1a\ntable \u65f6\u95f4\u4fe1\u606f\ntable \u7ecf\u7eac\u5ea6\u53ca\u6d77\u62d4\n\u8fd4\u56de\u503c\uff1a\nstring \u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u9002\u5408CASIC\u7cfb\u5217GNSS\u6a21\u5757\u7684\u8f85\u52a9\u5b9a\u4f4d\u4fe1\u606f\u7684\u5408\u6210\n-- \u672c\u51fd\u6570 2023.11.14 \u65b0\u589e\n\n-- \u9996\u5148\u662f\u65f6\u95f4\u4fe1\u606f,\u6ce8\u610f\u662fUTC\u65f6\u95f4\n-- \u65f6\u95f4\u6765\u6e90\u5f88\u591a, \u4e00\u822c\u5efa\u8baesocket.sntp()\u65f6\u95f4\u540c\u6b65\u540e\u7684\u7cfb\u7edf\u65f6\u95f4\nlocal dt = os.date(\"!*t\")\n\n-- \u7136\u540e\u662f\u8f85\u52a9\u5b9a\u4f4d\u5750\u6807\n-- \u6765\u6e90\u6709\u5f88\u591a\u65b9\u5f0f:\n-- 1. \u4ece\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\u5f97\u5230, \u4f8b\u5982\u4e4b\u524d\u5b9a\u4f4d\u6210\u529f\u540e\u4fdd\u5b58\u5230\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e86\n-- 2. \u901a\u8fc7\u57fa\u7ad9\u5b9a\u4f4d\u6216\u8005wifi\u5b9a\u4f4d\u83b7\u53d6\u5230\n-- 3. \u901a\u8fc7IP\u5b9a\u4f4d\u83b7\u53d6\u5230\u5927\u6982\u5750\u6807\n-- \u5750\u6807\u7cfb\u662fWGS84, \u4f46\u9274\u4e8e\u662f\u8f85\u52a9\u5b9a\u4f4d,\u7cbe\u5ea6\u4e0d\u662f\u5173\u952e\u56e0\u7d20\nlocal lla = {\n lat = 23.12,\n lng = 114.12\n}\n\nlocal aid = libgnss.casic_aid(dt, lla)\n", "prefix": "libgnss.casic_aid"}, "lf.init": {"body": "lf.init(${1:spi_device})", "description": "lf.init(spi_device) - \u521d\u59cb\u5316 little_flash\n\u4f20\u5165\u503c\uff1a\nint userdata spi_device\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--spi_device\nspi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"lf.init\",lf.init(spi_device))\n", "prefix": "lf.init"}, "lf.mount": {"body": "lf.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "lf.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7d little_flash lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 lf.init()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"lf.mount\",lf.mount(little_flash_device,\"/little_flash\"))\n", "prefix": "lf.mount"}, "log.setLevel": {"body": "log.setLevel(${1:level})", "description": "log.setLevel(level) - \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\n\u4f20\u5165\u503c\uff1a\nstring level \u65e5\u5fd7\u7ea7\u522b,\u53ef\u7528\u5b57\u7b26\u4e32\u6216\u6570\u503c, \u5b57\u7b26\u4e32\u4e3a(SILENT,DEBUG,INFO,WARN,ERROR,FATAL), \u6570\u503c\u4e3a(0,1,2,3,4,5)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\u4e3aINFO\nlog.setLevel(\"INFO\")\n", "prefix": "log.setLevel"}, "log.style": {"body": "log.style(${1:val})", "description": "log.style(val) - \u8bbe\u7f6e\u65e5\u5fd7\u98ce\u683c\n\u4f20\u5165\u503c\uff1a\nint \u65e5\u5fd7\u98ce\u683c,\u9ed8\u8ba4\u4e3a0, \u4e0d\u4f20\u5c31\u662f\u83b7\u53d6\u5f53\u524d\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7684\u65e5\u5fd7\u98ce\u683c\n\u4f8b\u5b50\uff1a\n-- \u4ee5 log.info(\"ABC\", \"DEF\", 123) \u4e3a\u4f8b, \u5047\u8bbe\u8be5\u4ee3\u7801\u4f4d\u4e8emain.lua\u768412\u884c\n-- \u9ed8\u8ba4\u65e5\u5fd70\n-- I/user.ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c1, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f\n-- I/main.lua:12 ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c2, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f, \u4f4d\u7f6e\u6709\u6240\u533a\u522b\n-- I/user.ABC main.lua:12 DEF 123\n\nlog.style(0) -- \u9ed8\u8ba4\u98ce\u683c0\nlog.style(1) -- \u8c03\u8bd5\u98ce\u683c1\nlog.style(2) -- \u8c03\u8bd5\u98ce\u683c2\n", "prefix": "log.style"}, "log.getLevel": {"body": "log.getLevel()", "description": "log.getLevel() - \u83b7\u53d6\u65e5\u5fd7\u7ea7\u522b\n\u8fd4\u56de\u503c\uff1a\nint \u65e5\u5fd7\u7ea7\u522b\u5bf9\u5e940,1,2,3,4,5\n\u4f8b\u5b50\uff1a\n-- \u5f97\u5230\u65e5\u5fd7\u7ea7\u522b\nlog.getLevel()\n", "prefix": "log.getLevel"}, "log.debug": {"body": "log.debug(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.debug(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bdebug\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa D/onenet connect ok\nlog.debug(\"onenet\", \"connect ok\")\n", "prefix": "log.debug"}, "log.info": {"body": "log.info(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.info(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522binfo\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa I/onenet connect ok\nlog.info(\"onenet\", \"connect ok\")\n", "prefix": "log.info"}, "log.warn": {"body": "log.warn(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.warn(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bwarn\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa W/onenet connect ok\nlog.warn(\"onenet\", \"connect ok\")\n", "prefix": "log.warn"}, "log.error": {"body": "log.error(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.error(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522berror\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa E/onenet connect ok\nlog.error(\"onenet\", \"connect ok\")\n", "prefix": "log.error"}, "lora.init": {"body": "lora.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.init(\"llcc68\",\n {\n id = 0, -- SPI id\n cs = pin.PB04, -- SPI \u7247\u9009\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n res = pin.PB00, -- \u590d\u4f4d\u811a\u8fde\u63a5\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n busy = pin.PB01, -- \u5fd9\u68c0\u6d4b\u811a\u7684GPIO\u53f7\n dio1 = pin.PB06, -- \u6570\u636e\u8f93\u5165\u4e2d\u65ad\u811a\n lora_init = true -- \u662f\u5426\u53d1\u9001\u521d\u59cb\u5316\u547d\u4ee4. \u5982\u679c\u662f\u5524\u9192\u540e\u76f4\u63a5\u8bfb\u53d6, \u5c31\u4f20false\n }\n)\n", "prefix": "lora.init"}, "lora.set_channel": {"body": "lora.set_channel(${1:freq})", "description": "lora.set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora.set_channel(433000000)\n", "prefix": "lora.set_channel"}, "lora.set_txconfig": {"body": "lora.set_txconfig(${1:ic},${2:txconfig})", "description": "lora.set_txconfig(ic, txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_txconfig(\"llcc68\",\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora.set_txconfig"}, "lora.set_rxconfig": {"body": "lora.set_rxconfig(${1:ic},${2:set_rxconfig})", "description": "lora.set_rxconfig(ic, set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_rxconfig(\"llcc68\",\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora.set_rxconfig"}, "lora.send": {"body": "lora.send(${1:data})", "description": "lora.send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora.send(\"PING\")\n", "prefix": "lora.send"}, "lora.recv": {"body": "lora.recv(${1:timeout})", "description": "lora.recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora.send(\"PING\")\nend)\n-- \u8001\u7248\u672c\u6ca1\u6709recv, \u53ef\u4ee5\u6539\u6210 lora.recive\nlora.recv(1000)\n", "prefix": "lora.recv"}, "lora.mode": {"body": "lora.mode(${1:mode})", "description": "lora.mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora.mode(lora.STANDBY)\n", "prefix": "lora.mode"}, "lora2.init": {"body": "lora2.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora2.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56delora\u5bf9\u8c61,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nspi_lora = spi.deviceSetup(spi_id,pin_cs,0,0,8,10*1000*1000,spi.MSB,1,0)\nlora_device = lora2.init(\"llcc68\",{res = pin_reset,busy = pin_busy,dio1 = pin_dio1},spi_lora)\n", "prefix": "lora2.init"}, "lora_device:set_channel": {"body": "lora_device:set_channel(${1:freq})", "description": "lora_device:set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora_device:set_channel(433000000)\n", "prefix": "lora_device:set_channel"}, "lora_device:set_txconfig": {"body": "lora_device:set_txconfig(${1:txconfig})", "description": "lora_device:set_txconfig(txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_txconfig(\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora_device:set_txconfig"}, "lora_device:set_rxconfig": {"body": "lora_device:set_rxconfig(${1:set_rxconfig})", "description": "lora_device:set_rxconfig(set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_rxconfig(\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora_device:set_rxconfig"}, "lora_device:send": {"body": "lora_device:send(${1:data})", "description": "lora_device:send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora_device:send(\"PING\")\n", "prefix": "lora_device:send"}, "lora_device:recv": {"body": "lora_device:recv(${1:timeout})", "description": "lora_device:recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora_device:send(\"PING\")\nend)\nlora_device:recv(1000)\n", "prefix": "lora_device:recv"}, "lora_device:mode": {"body": "lora_device:mode(${1:mode})", "description": "lora_device:mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora_device:mode(lora.STANDBY)\n", "prefix": "lora_device:mode"}, "lora_device:on": {"body": "lora_device:on(${1:cb})", "description": "lora_device:on(cb) - \u6ce8\u518clora\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb lora\u56de\u8c03,\u53c2\u6570\u5305\u62eclora_device, event, data, size\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlora_device:on(function(lora_device, event, data, size)\n log.info(\"lora\", \"event\", event, lora_device, data, size)\n if event == \"tx_done\" then\n lora_device:recv(1000)\n elseif event == \"rx_done\" then\n lora_device:send(\"PING\")\n elseif event == \"tx_timeout\" then\n\n elseif event == \"rx_timeout\" then\n lora_device:recv(1000)\n elseif event == \"rx_error\" then\n\n end\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n tx_done -- \u53d1\u9001\u5b8c\u6210\n rx_done -- \u63a5\u6536\u5b8c\u6210\n tx_timeout -- \u53d1\u9001\u8d85\u65f6\n rx_timeout -- \u63a5\u6536\u8d85\u65f6\n rx_error -- \u63a5\u6536\u9519\u8bef\n]]\n", "prefix": "lora_device:on"}, "lvgl.draw_mask_radius_param_t": {"body": "lvgl.draw_mask_radius_param_t()", "description": "lvgl.draw_mask_radius_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_radius_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_radius_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal radius = lvgl.draw_mask_radius_param_t()\n", "prefix": "lvgl.draw_mask_radius_param_t"}, "lvgl.draw_mask_radius_param_t_free": {"body": "lvgl.draw_mask_radius_param_t_free(${1:radius})", "description": "lvgl.draw_mask_radius_param_t_free(radius) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_radius_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_radius_param_t_free(radius)\n", "prefix": "lvgl.draw_mask_radius_param_t_free"}, "lvgl.draw_mask_line_param_t": {"body": "lvgl.draw_mask_line_param_t()", "description": "lvgl.draw_mask_line_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_line_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_line_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal line = lvgl.draw_mask_line_param_t()\n", "prefix": "lvgl.draw_mask_line_param_t"}, "lvgl.draw_mask_line_param_t_free": {"body": "lvgl.draw_mask_line_param_t_free(${1:line})", "description": "lvgl.draw_mask_line_param_t_free(line) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_line_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_line_param_t_free(line)\n", "prefix": "lvgl.draw_mask_line_param_t_free"}, "lvgl.draw_mask_fade_param_t": {"body": "lvgl.draw_mask_fade_param_t()", "description": "lvgl.draw_mask_fade_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_fade_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_fade_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal fade = lvgl.draw_mask_fade_param_t()\n", "prefix": "lvgl.draw_mask_fade_param_t"}, "lvgl.draw_mask_fade_param_t_free": {"body": "lvgl.draw_mask_fade_param_t_free(${1:fade})", "description": "lvgl.draw_mask_fade_param_t_free(fade) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_fade_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_fade_param_t_free(fade)\n", "prefix": "lvgl.draw_mask_fade_param_t_free"}, "lvgl.font_get": {"body": "lvgl.font_get(${1:name})", "description": "lvgl.font_get(name) - \u83b7\u53d6\u5185\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0+\u5b57\u53f7, \u4f8b\u5982 opposans_m_10\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\n\nlocal font = lvgl.font_get(\"opposans_m_12\")\n", "prefix": "lvgl.font_get"}, "lvgl.font_load": {"body": "lvgl.font_load(${1:path/spi_device},${2:size},${3:bpp},${4:thickness},${5:cache_size},${6:sty_zh},${7:sty_en})", "description": "lvgl.font_load(path/spi_device,size,bpp,thickness,cache_size,sty_zh,sty_en) - \u4ece\u6587\u4ef6\u7cfb\u7edf\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring/userdata \u5b57\u4f53\u8def\u5f84/spi_device (spi_device\u4e3a\u4f7f\u7528\u5916\u7f6e\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93\u82af\u7247)\nnumber size \u53ef\u9009,\u5b57\u53f7 16-192 \u9ed8\u8ba416(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber bpp \u53ef\u9009 \u6df1\u5ea6 \u9ed8\u8ba44(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber thickness \u53ef\u9009 \u7c97\u7ec6\u503c \u9ed8\u8ba4size * bpp(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber cache_size \u53ef\u9009 \u9ed8\u8ba40(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_zh \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba41(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_en \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba43(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n--local font = lvgl.font_load(spi_device,16)(\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n", "prefix": "lvgl.font_load"}, "lvgl.font_free": {"body": "lvgl.font_free(${1:font})", "description": "lvgl.font_free(font) - \u91ca\u653e\u5b57\u4f53,\u614e\u7528!!!\u4ec5\u901a\u8fc7font_load\u52a0\u8f7d\u7684\u5b57\u4f53\u5141\u8bb8\u5378\u8f7d,\u901a\u8fc7font_get\u83b7\u53d6\u7684\u5b57\u4f53\u4e0d\u5141\u8bb8\u5378\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n-- N N N N \u64cd\u4f5c\n-- \u786e\u5b9a\u5b57\u4f53\u4e0d\u88ab\u4f7f\u7528,\u4e0d\u88ab\u5f15\u7528,\u4e14\u5185\u5b58\u7d27\u5f20\u9700\u8981\u91ca\u653e\nlvgl.font_free(font)\n", "prefix": "lvgl.font_free"}, "lvgl.obj_set_event_cb": {"body": "lvgl.obj_set_event_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_event_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, event), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, event\u662f\u4e8b\u4ef6\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_event_cb"}, "lvgl.obj_set_signal_cb": {"body": "lvgl.obj_set_signal_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_signal_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4fe1\u53f7\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, signal), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_signal_cb"}, "lvgl.anim_set_exec_cb": {"body": "lvgl.anim_set_exec_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_exec_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, value), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_exec_cb"}, "lvgl.anim_set_ready_cb": {"body": "lvgl.anim_set_ready_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_ready_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (anim), \u5176\u4e2danim\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_ready_cb"}, "lvgl.anim_path_set_cb": {"body": "lvgl.anim_path_set_cb(${1:path},${2:func})", "description": "lvgl.anim_path_set_cb(path, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (path), \u5176\u4e2dpath\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_path_set_cb"}, "lvgl.event_send": {"body": "lvgl.event_send(${1:obj},${2:ent})", "description": "lvgl.event_send(obj, ent) - \u53d1\u9001\u4e8b\u4ef6\u7ed9\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488\nint \u4e8b\u4ef6id, \u4f8b\u5982 lvgl.EVENT_PRESSED\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5bf9\u8c61\u5df2\u88ab\u5220\u9664\u7684\u8bdd\u8fd4\u56defalse\u6216\u8005nil\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u5982\u679cobj\u4e3anil\u5c31\u8fd4\u56denil\n", "prefix": "lvgl.event_send"}, "lvgl.scr_act": {"body": "lvgl.scr_act()", "description": "lvgl.scr_act() - \u83b7\u53d6\u5f53\u524d\u6d3b\u8dc3\u7684screen\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 screen\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal scr = lvgl.scr_act()\n\n", "prefix": "lvgl.scr_act"}, "lvgl.layer_top": {"body": "lvgl.layer_top()", "description": "lvgl.layer_top() - \u83b7\u53d6layer_top\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_top"}, "lvgl.layer_sys": {"body": "lvgl.layer_sys()", "description": "lvgl.layer_sys() - \u83b7\u53d6layer_sys\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_sys"}, "lvgl.scr_load": {"body": "lvgl.scr_load(${1:scr})", "description": "lvgl.scr_load(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n lvgl.scr_load(scr)\n", "prefix": "lvgl.scr_load"}, "lvgl.scr_load_anim": {"body": "lvgl.scr_load_anim(${1:scr})", "description": "lvgl.scr_load_anim(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\u5e76\u4f7f\u7528\u6307\u5b9a\u7684\u8f6c\u573a\u52a8\u753b\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n\n local scr2 = lvgl.obj_create(nil,nil)\n local btn2 = lvgl.btn_create(scr2)\n lvgl.obj_align(btn, scr2, lvgl.ALIGN_CENTER, 0, 20)\n local label2 = lvgl.label_create(btn2)\n lvgl.label_set_text(label2, \"Btn2\")\n lvgl.scr_load(scr)\n --sys.wait(1000);\n lvgl.scr_load_anim(scr2,lvgl.SCR_LOAD_ANIM_OVER_LEFT,100,100,false)\n\u539f\u51fd\u6570\uff1alv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool auto_del)\n", "prefix": "lvgl.scr_load_anim"}, "lvgl.theme_set_act": {"body": "lvgl.theme_set_act(${1:name})", "description": "lvgl.theme_set_act(name) - \u8bbe\u7f6e\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898\u540d\u79f0,\u53ef\u9009\u503c\u6709 default/mono/empty/material_light/material_dark/material_no_transition/material_no_focus\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u9ed1\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"mono\")\n-- \u7a7a\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"empty\")\n", "prefix": "lvgl.theme_set_act"}, "lvgl.sleep": {"body": "lvgl.sleep(${1:enable})", "description": "lvgl.sleep(enable) - LVGL\u4f11\u7720\u63a7\u5236\uff0c\u6682\u505c/\u6062\u590d\u5237\u65b0\u5b9a\u65f6\u5668\uff0c\u76ee\u524d\u53ea\u6709105\u548cEC618\u53ef\u4ee5\u7528\n\u4f20\u5165\u503c\uff1a\nboolean true\u6682\u505c false\u6062\u590d\n\u4f8b\u5b50\uff1a\nlvgl.sleep(true) --\u6682\u505c\u5237\u65b0\uff0c\u7cfb\u7edf\u53ef\u4ee5\u4f11\u7720\nlvgl.sleep(false) --\u6062\u590d\u5237\u65b0\uff0c\u7cfb\u7edf\u4e0d\u4f11\u7720\n", "prefix": "lvgl.sleep"}, "lvgl.init": {"body": "lvgl.init(${1:w},${2:h},${3:lcd},${4:buff_size},${5:buff_mode})", "description": "lvgl.init(w, h, lcd, buff_size, buff_mode) - \u521d\u59cb\u5316LVGL\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u5bbd,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nint \u5c4f\u5e55\u9ad8,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nuserdata lcd\u6307\u9488,\u53ef\u9009,lcd\u521d\u59cb\u5316\u540e\u6709\u9ed8\u8ba4\u503c,\u9884\u7559\u7684\u591a\u5c4f\u5165\u53e3\nint \u7f13\u51b2\u533a\u5927\u5c0f,\u9ed8\u8ba4\u5bbd*10, \u4e0d\u542b\u8272\u6df1.\nint \u7f13\u51b2\u6a21\u5f0f,\u9ed8\u8ba40, \u5355buff\u6a21\u5f0f, \u53ef\u90091,\u53ccbuff\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "lvgl.init"}, "lvgl.anim_create": {"body": "lvgl.anim_create()", "description": "lvgl.anim_create() - \u521b\u5efa\u5e76\u521d\u59cb\u5316\u4e00\u4e2aanim\n\u8fd4\u56de\u503c\uff1a\nuserdata anim\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim = lvgl.anim_create()\n", "prefix": "lvgl.anim_create"}, "lvgl.anim_free": {"body": "lvgl.anim_free(${1:anim})", "description": "lvgl.anim_free(anim) - \u91ca\u653e\u4e00\u4e2aanim\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_free(anim)\n", "prefix": "lvgl.anim_free"}, "lvgl.anim_path_t": {"body": "lvgl.anim_path_t()", "description": "lvgl.anim_path_t() - \u521b\u5efa\u4e00\u4e2alv_anim_path_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_anim_path_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim_path_t = lvgl.anim_path_t()\n", "prefix": "lvgl.anim_path_t"}, "lvgl.anim_path_t_free": {"body": "lvgl.anim_path_t_free(${1:anim_path_t})", "description": "lvgl.anim_path_t_free(anim_path_t) - \u91ca\u653e\u4e00\u4e2alv_anim_path_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_path_t_free(anim_path_t)\n", "prefix": "lvgl.anim_path_t_free"}, "lvgl.anim_set_path_str": {"body": "lvgl.anim_set_path_str(${1:anim},${2:tp})", "description": "lvgl.anim_set_path_str(anim, tp) - \u8bbe\u7f6e\u52a8\u753b\u8def\u5f84\u65b9\u5f0f\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nstring \u7c7b\u578b, \u652f\u6301 linear/ease_in/ease_out/ease_in_out/overshoot/bounce/step\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_path_str"}, "lvgl.qrcode_create": {"body": "lvgl.qrcode_create(${1:parent},${2:size},${3:dark_color},${4:light_color})", "description": "lvgl.qrcode_create(parent, size, dark_color, light_color) - \u521b\u5efaqrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6\nint \u957f\u5ea6,\u56e0\u4e3aqrcode\u662f\u6b63\u65b9\u5f62\nint \u4e8c\u7ef4\u7801\u4e2d\u6570\u636e\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0x3333ff\nint \u4e8c\u7ef4\u7801\u4e2d\u80cc\u666f\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0xeeeeff\n\u8fd4\u56de\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u5e76\u663e\u793aqrcode\nlocal qrcode = lvgl.qrcode_create(scr, 100)\nlvgl.qrcode_update(qrcode, \"https://luatos.com\")\nlvgl.obj_align(qrcode, lvgl.scr_act(), lvgl.ALIGN_CENTER, -100, -100)\n", "prefix": "lvgl.qrcode_create"}, "lvgl.qrcode_update": {"body": "lvgl.qrcode_update(${1:qrcode},${2:cnt})", "description": "lvgl.qrcode_update(qrcode, cnt) - \u8bbe\u7f6eqrcode\u7ec4\u4ef6\u7684\u4e8c\u7ef4\u7801\u5185\u5bb9,\u914d\u5408qrcode_create\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u66f4\u65b0\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse. \u901a\u5e38\u53ea\u6709\u6570\u636e\u592a\u957f\u65e0\u6cd5\u5bb9\u7eb3\u624d\u4f1a\u8fd4\u56defalse\n", "prefix": "lvgl.qrcode_update"}, "lvgl.qrcode_delete": {"body": "lvgl.qrcode_delete(${1:qrcode})", "description": "lvgl.qrcode_delete(qrcode) - \u5220\u9664qrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.qrcode_delete"}, "lvgl.style_t": {"body": "lvgl.style_t()", "description": "lvgl.style_t() - \u521b\u5efa\u4e00\u4e2astyle\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_t()\nlvgl.style_init(style)\n", "prefix": "lvgl.style_t"}, "lvgl.style_create": {"body": "lvgl.style_create()", "description": "lvgl.style_create() - \u521b\u5efa\u4e00\u4e2astyle\u5e76\u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n", "prefix": "lvgl.style_create"}, "lvgl.style_list_create": {"body": "lvgl.style_list_create()", "description": "lvgl.style_list_create() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n", "prefix": "lvgl.style_list_create"}, "lvgl.style_list_t": {"body": "lvgl.style_list_t()", "description": "lvgl.style_list_t() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_list_t()\n", "prefix": "lvgl.style_list_t"}, "lvgl.style_delete": {"body": "lvgl.style_delete(${1:style})", "description": "lvgl.style_delete(style) - \u5220\u9664style,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n-- ...\n-- ...\n-- lvgl.style_delete(style)\n", "prefix": "lvgl.style_delete"}, "lvgl.style_list_delete": {"body": "lvgl.style_list_delete(${1:style})", "description": "lvgl.style_list_delete(style) - \u5220\u9664style_list,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n-- ...\n-- ...\n-- lvgl.style_list_delete(style_list)\n", "prefix": "lvgl.style_list_delete"}, "lvgl.demo_benchmark": {"body": "lvgl.demo_benchmark()", "description": "lvgl.demo_benchmark() - lvgl benchmark demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_benchmark()\n", "prefix": "lvgl.demo_benchmark"}, "lvgl.demo_keypad_encoder": {"body": "lvgl.demo_keypad_encoder()", "description": "lvgl.demo_keypad_encoder() - lvgl keypad_encoder demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_keypad_encoder()\n", "prefix": "lvgl.demo_keypad_encoder"}, "lvgl.demo_music": {"body": "lvgl.demo_music()", "description": "lvgl.demo_music() - lvgl music demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_music()\n", "prefix": "lvgl.demo_music"}, "lvgl.demo_printer": {"body": "lvgl.demo_printer()", "description": "lvgl.demo_printer() - lvgl printer demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_printer()\n", "prefix": "lvgl.demo_printer"}, "lvgl.demo_stress": {"body": "lvgl.demo_stress()", "description": "lvgl.demo_stress() - lvgl stress demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_stress()\n", "prefix": "lvgl.demo_stress"}, "lvgl.demo_widgets": {"body": "lvgl.demo_widgets()", "description": "lvgl.demo_widgets() - lvgl widgets demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_widgets()\n", "prefix": "lvgl.demo_widgets"}, "lvgl.indev_drv_register": {"body": "lvgl.indev_drv_register(${1:tp},${2:dtp})", "description": "lvgl.indev_drv_register(tp, dtp) - \u6ce8\u518c\u8f93\u5165\u8bbe\u5907\u9a71\u52a8\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\"pointer\",\u6307\u9488\u7c7b/\u89e6\u6478\u7c7b\u5747\u53ef\uff0c\"keyboard\",\u952e\u76d8\u7c7b\u578b\nstring \u8bbe\u5907\u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\"emulator\",\u6a21\u62df\u5668\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlvgl.indev_drv_register(\"pointer\", \"emulator\")\n", "prefix": "lvgl.indev_drv_register"}, "lvgl.indev_point_emulator_update": {"body": "lvgl.indev_point_emulator_update(${1:x},${2:y},${3:state})", "description": "lvgl.indev_point_emulator_update(x, y, state) - \u66f4\u65b0\u6a21\u62df\u8f93\u5165\u8bbe\u5907\u7684\u5750\u6807\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint y\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint \u72b6\u6001, 0 \u4e3a \u91ca\u653e, 1 \u4e3a\u6309\u4e0b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6a21\u62df\u5728\u5c4f\u5e55\u4e0a\u7684\u70b9\u51fb,\u901a\u8fc7timeout\u6a21\u62df\u957f\u6309\u548c\u77ed\u6309\nsys.taskInit(function(x, y, timeout)\n lvgl.indev_point_emulator_update(x, y, 1)\n sys.wait(timeout)\n lvgl.indev_point_emulator_update(x, y, 0)\nend, 240, 120, 50)\n", "prefix": "lvgl.indev_point_emulator_update"}, "lvgl.indev_kb_update": {"body": "lvgl.indev_kb_update(${1:key})", "description": "lvgl.indev_kb_update(key) - \u66f4\u65b0\u952e\u76d8\u8f93\u5165\u8bbe\u5907\u7684\u6309\u952e\u503c\n\u4f20\u5165\u503c\uff1a\nint \u6309\u952e\u503c\uff0c\u9ed8\u8ba4\u4e3a0\uff0c\u6309\u952e\u62ac\u8d77\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.indev_kb_update"}, "lvgl.gif_create": {"body": "lvgl.gif_create(${1:parent},${2:path})", "description": "lvgl.gif_create(parent, path) - \u521b\u5efagif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6,\u53ef\u4ee5\u662fnil,\u4f46\u901a\u5e38\u4e0d\u4f1a\u662fnil\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil,\u5efa\u8bae\u68c0\u67e5\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_create"}, "lvgl.gif_restart": {"body": "lvgl.gif_restart(${1:gif})", "description": "lvgl.gif_restart(gif) - \u91cd\u65b0\u64ad\u653egif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata gif\u7ec4\u4ef6\u652f\u6301, \u7531gif_create\u65b9\u6cd5\u8fd4\u56de\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_restart"}, "max30102.init": {"body": "max30102.init(${1:i2c_id},${2:int})", "description": "max30102.init(i2c_id,int) - \u521d\u59cb\u5316MAX30102\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid,\u9ed8\u8ba4\u4e3a0\nint int\u5f15\u811a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\nif max30102.init(0,pin.PC05) then\n log.info(\"max30102\", \"init ok\")\nelse\n log.info(\"max30102\", \"init fail\")\nend\n", "prefix": "max30102.init"}, "max30102.get": {"body": "max30102.get()", "description": "max30102.get() - \u83b7\u53d6\u5fc3\u7387\u8840\u6c27(\u5927\u6982\u9700\u898110s\u65f6\u95f4\u6d4b\u91cf)\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nnumber \u5fc3\u7387\nnumber \u8840\u6c27\n", "prefix": "max30102.get"}, "max30102.shutdown": {"body": "max30102.shutdown()", "description": "max30102.shutdown() - \u5173\u95edmax30102\n", "prefix": "max30102.shutdown"}, "mcu.setClk": {"body": "mcu.setClk(${1:mhz})", "description": "mcu.setClk(mhz) - \u8bbe\u7f6e\u4e3b\u9891,\u5355\u4f4dMHZ\n\u4f20\u5165\u503c\uff1a\nint \u4e3b\u9891,\u6839\u636e\u8bbe\u5907\u7684\u4e0d\u540c\u6709\u4e0d\u540c\u7684\u6709\u6548\u503c,\u8bf7\u67e5\u9605\u624b\u518c\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u6ce8\u610f: \u5e76\u975e\u6240\u6709\u6a21\u5757\u90fd\u652f\u6301\u4e3b\u9891\u8c03\u6574,\u8bf7\u67e5\u9605\u624b\u518c\n-- Air101/Air103/Air601 \u652f\u6301\u8bbe\u7f6e\u6210 2/40/80/160/240. \u7279\u522b\u63d0\u9192, \u8bbe\u7f6e\u52302M\u540e, \u5982\u679c\u8981\u4f11\u7720, \u5fc5\u987b\u5148\u8bbe\u7f6e\u523080M\n-- ESP32\u7cfb\u5217\u652f\u6301\u8bbe\u7f6e\u6210 40/80/160/240 , \u9700\u89812024.1.1\u4e4b\u540e\u7684\u56fa\u4ef6\n-- Air780\u7cfb\u5217, Air105, \u4e0d\u652f\u6301\u8bbe\u7f6e\u4e3b\u9891\n-- Air780\u7cfb\u5217, \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\u65f6\u81ea\u52a8\u964d\u9891\u523024M\n\n-- \u8bbe\u7f6e\u523080MHZ\nmcu.setClk(80)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u5230240MHZ\nmcu.setClk(240)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u52302MHZ\nmcu.setClk(2)\nsys.wait(1000)\n", "prefix": "mcu.setClk"}, "mcu.getClk": {"body": "mcu.getClk()", "description": "mcu.getClk() - \u83b7\u53d6\u4e3b\u9891,\u5355\u4f4dMHZ\n\u8fd4\u56de\u503c\uff1a\nint \u82e5\u5931\u8d25\u8fd4\u56de-1,\u5426\u5219\u8fd4\u56de\u4e3b\u9891\u6570\u503c,\u82e5\u7b49\u4e8e0,\u53ef\u80fd\u5904\u4e8e32k\u6676\u632f\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlocal mhz = mcu.getClk()\nprint(\"Boom\", mhz)\n", "prefix": "mcu.getClk"}, "mcu.unique_id": {"body": "mcu.unique_id()", "description": "mcu.unique_id() - \u83b7\u53d6\u8bbe\u5907\u552f\u4e00id. \u6ce8\u610f,\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26,\u5982\u9700\u67e5\u770b\u5efa\u8baetoHex()\u540e\u6253\u5370\n\u8fd4\u56de\u503c\uff1a\nstring \u8bbe\u5907\u552f\u4e00id.\u82e5\u4e0d\u652f\u6301, \u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32.\n\u4f8b\u5b50\uff1a\nlocal unique_id = mcu.unique_id()\nprint(\"unique_id\", unique_id)\n", "prefix": "mcu.unique_id"}, "mcu.ticks": {"body": "mcu.ticks()", "description": "mcu.ticks() - \u83b7\u53d6\u542f\u52a8\u540e\u7684tick\u6570,\u672c\u8eab\u662f\u65e0\u7b26\u53f7\u503c,\u8303\u56f40~0xffffffff,lua\u662f\u6709\u7b26\u53f7\u8ba1\u7b97,\u8ba1\u7b97\u65f6\u8d85\u8fc70x7fffffff\u4f1a\u53d8\u8d1f\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dtick\u503c\n\u4f8b\u5b50\uff1a\nlocal tick = mcu.ticks()\nprint(\"ticks\", tick)\n-- \u5982\u9700\u4e0d\u4f1a\u6ea2\u51fa\u7684\u503c, \u53ef\u7528mcu.ticks32(), \u4e8e2024.5.7\u65b0\u589e\n", "prefix": "mcu.ticks"}, "mcu.hz": {"body": "mcu.hz()", "description": "mcu.hz() - \u83b7\u53d6\u6bcf\u79d2\u7684tick\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nint \u6bcf\u79d2\u7684tick\u6570\u91cf,\u901a\u5e38\u4e3a1000\n\u4f8b\u5b50\uff1a\nlocal hz = mcu.hz()\nprint(\"mcu.hz\", hz)\n", "prefix": "mcu.hz"}, "mcu.reg32": {"body": "mcu.reg32(${1:address},${2:value},${3:mask})", "description": "mcu.reg32(address, value, mask) - \u8bfb\u5199mcu\u768432bit\u5bc4\u5b58\u5668\u6216\u8005ram,\u8c28\u614e\u4f7f\u7528\u5199\u529f\u80fd,\u8bf7\u719f\u6089mcu\u7684\u5bc4\u5b58\u5668\u4f7f\u7528\u65b9\u6cd5\u540e\u518d\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5bc4\u5b58\u5668\u6216\u8005ram\u5730\u5740\nint \u5199\u5165\u7684\u503c,\u5982\u679c\u6ca1\u6709,\u5219\u76f4\u63a5\u8fd4\u56de\u5f53\u524d\u503c\nint \u4f4d\u63a9\u7801,\u53ef\u4ee5\u5bf9\u7279\u5b9a\u51e0\u4e2a\u4f4d\u7f6e\u7684bit\u505a\u4fee\u6539, \u9ed8\u8ba40xffffffff,\u4fee\u6539\u5168\u90e832bit\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u5bc4\u5b58\u7684\u503c\n\u4f8b\u5b50\uff1a\nlocal value = mcu.reg32(0x2009FFFC, 0x01, 0x01) --\u5bf90x2009FFFC\u5730\u5740\u4e0a\u7684\u503c,\u4fee\u6539bit0\u4e3a1\n", "prefix": "mcu.reg32"}, "mcu.x32": {"body": "mcu.x32(${1:value})", "description": "mcu.x32(value) - \u8f6c\u636210\u8fdb\u5236\u6570\u4e3a16\u8fdb\u5236\u5b57\u7b26\u4e32\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u8f6c\u6362\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring 16\u8fdb\u5236\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal value = mcu.x32(0x2009FFFC) --\u8f93\u51fa\"0x2009fffc\"\n", "prefix": "mcu.x32"}, "mcu.tick64": {"body": "mcu.tick64()", "description": "mcu.tick64() - \u83b7\u53d6\u542f\u52a8\u540e\u7684\u9ad8\u7cbe\u5ea6tick\uff0c\u5982\u679c\u652f\u6301bit64\u5e93\uff0c\u53ef\u4ee5\u76f4\u63a5\u8f93\u51fa\u8f6c\u6362\u597d\u7684bit64\u7ed3\u6784\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u8f93\u51fabit64\u7ed3\u6784,true\u662f,\u5176\u4ed6\u90fd\u662ffalse,\u7559\u7a7a\u4e5f\u662ffalse,\u7528\u4e8e\u517c\u5bb9\u65e7\u7684demo\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524dtick\u503c,8\u4e2a\u5b57\u8282\u7684uint64,\u5982\u679c\u652f\u630164bit\u5e93,\u540c\u65f6\u8981\u6c42\u8f93\u51fa64bit\u7ed3\u6784\u7684\u8bdd,\u4f1a\u8f93\u51fa9\u5b57\u8282\u7684string\nint 1us\u6709\u51e0\u4e2atick,0\u8868\u793a\u672a\u77e5\n\u4f8b\u5b50\uff1a\nlocal tick_str, tick_per = mcu.tick64()\nprint(\"ticks\", tick_str, tick_per)\n", "prefix": "mcu.tick64"}, "mcu.dtick64": {"body": "mcu.dtick64(${1:tick1},${2:tick2},${3:check_value})", "description": "mcu.dtick64(tick1, tick2, check_value) - \u8ba1\u7b972\u4e2a64bit tick\u7684\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nstring 64bit\u7684string\nstring 64bit\u7684string\nint \u53c2\u8003\u503c,\u53ef\u9009\u9879,\u5982\u679c\u4e3a0,\u5219\u8fd4\u56de\u7ed3\u679c\u4e2d\u7b2c\u4e00\u4e2a\u9879\u76ee\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nboolean \u4e0e\u53c2\u8003\u503c\u6bd4\u8f83,\u5982\u679c\u5927\u4e8e\u7b49\u4e8e\u4e3atrue,\u53cd\u4e4b\u4e3afalse\nint \u5dee\u503ctick1 - tick2,\u5982\u679c\u8d85\u8fc7\u4e860x7fffffff,\u7ed3\u679c\u53ef\u80fd\u662f\u9519\u7684\n\u4f8b\u5b50\uff1a\nlocal result, diff_tick = mcu.dtick64(tick1, tick2)\nprint(\"ticks\", result, diff_tick)\n", "prefix": "mcu.dtick64"}, "mcu.setXTAL": {"body": "mcu.setXTAL(${1:source_main},${2:source_32k},${3:delay})", "description": "mcu.setXTAL(source_main, source_32k, delay) - \u9009\u62e9\u65f6\u949f\u6e90,\u5f53\u524d\u4ec5air105\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u65f6\u949f\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nboolean \u4f4e\u901f32K\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nint PLL\u7a33\u5b9a\u65f6\u95f4,\u5728\u5207\u6362\u9ad8\u901f\u65f6\u949f\u7684\u65f6\u5019,\u6839\u636e\u786c\u4ef6\u73af\u5883,\u9700\u8981delay\u4e00\u6bb5\u65f6\u95f4\u7b49\u5f85PLL\u7a33\u5b9a,\u9ed8\u8ba4\u662f1200,\u5efa\u8bae\u4e0d\u5c0f\u4e8e1024\n\u4f8b\u5b50\uff1a\nmcu.setXTAL(true, true, 1248) --\u9ad8\u901f\u65f6\u949f\u4f7f\u7528\u5916\u90e8\u65f6\u949f,\u4f4e\u901f32K\u4f7f\u7528\u5916\u90e8\u6676\u632f, delay1248\n", "prefix": "mcu.setXTAL"}, "mcu.hardfault": {"body": "mcu.hardfault(${1:mode})", "description": "mcu.hardfault(mode) - mcu\u6b7b\u673a\u65f6\u5904\u7406\u6a21\u5f0f\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5904\u7406\u6a21\u5f0f\uff0c0\u6b7b\u673a\u505c\u673a\uff0c1\u6b7b\u673a\u540e\u91cd\u542f\uff0c2\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f 3.\u6b7b\u673a\u65f6\u5199\u5165\u5173\u952e\u4fe1\u606f\u5230flash\u540e\u7acb\u523b\u91cd\u542f\n\u4f8b\u5b50\uff1a\nmcu.hardfault(0) --\u6b7b\u673a\u540e\u505c\u673a\uff0c\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5\u72b6\u6001\nmcu.hardfault(1) --\u6b7b\u673a\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u6b63\u5f0f\u4ea7\u54c1\nmcu.hardfault(2) --\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u538b\u529b\u6d4b\u8bd5\u6216\u8005\u6b63\u5f0f\u4ea7\u54c1\n", "prefix": "mcu.hardfault"}, "mcu.iomux": {"body": "mcu.iomux(${1:type},${2:channel},${3:value})", "description": "mcu.iomux(type, channel, value) - \u5728\u5916\u8bbe\u6253\u5f00\u524d\uff0c\u5c06\u5916\u8bbeIO\u590d\u7528\u5230\u975e\u9ed8\u8ba4\u914d\u7f6e\u4e0a\uff0c\u76ee\u524d\u53ea\u652f\u6301Air780E\u7684\u90e8\u5206\u5916\u8bbe\u590d\u7528\u5230\u5176\u4ed6\u914d\u7f6e\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e34\u65f6\u63a5\u53e3\uff0c\u5982\u679c\u540e\u7eed\u6709\u66f4\u5408\u9002\u7684api\uff0c\u672c\u63a5\u53e3\u5c06\u4e0d\u518d\u66f4\u65b0\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709mcu.UART,mcu.I2C\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\nint \u65b0\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u9700\u8981\u6839\u636e\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\n\u4f8b\u5b50\uff1a\nmcu.iomux(mcu.UART, 2, 1) -- Air780E\u7684UART2\u590d\u7528\u5230gpio12\u548cgpio13(Air780EG\u9ed8\u8ba4\u662f\u8fd9\u4e2a\u590d\u7528\uff0c\u4e0d\u8981\u52a8)\nmcu.iomux(mcu.UART, 2, 2) -- Air780E\u7684UART2\u590d\u7528\u5230gpio6\u548cgpio7\nmcu.iomux(mcu.I2C, 0, 1) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio12\u548cgpio13\nmcu.iomux(mcu.I2C, 0, 2) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio16\u548cgpio17\nmcu.iomux(mcu.I2C, 1, 1) -- Air780E\u7684I2C1\u590d\u7528\u5230gpio4\u548cgpio5\n", "prefix": "mcu.iomux"}, "mcu.altfun": {"body": "mcu.altfun(${1:type},${2:sn},${3:pad_index},${4:alt_fun},${5:is_input})", "description": "mcu.altfun(type, sn, pad_index, alt_fun, is_input) - IO\u5916\u8bbe\u529f\u80fd\u590d\u7528\u9009\u62e9\uff0c\u6ce8\u610f\u666e\u901aMCU\u662f\u4ee5GPIO\u53f7\u4e3a\u5e8f\u53f7\uff0c\u4f46\u662f\u4e13\u7528SOC\uff0c\u6bd4\u5982CAT1\u7684\uff0c\u662f\u4ee5PAD\u53f7\u4e3a\u5e8f\u53f7\u3002\u672c\u51fd\u6570\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u6709mcu.UART,mcu.I2C,mcu.SPI,mcu.PWM,mcu.GPIO,mcu.I2S,mcu.LCD,mcu.CAM\uff0c\u5177\u4f53\u9700\u8981\u770b\u5e73\u53f0\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\u5982\u679c\u662fmcu.GPIO\uff0c\u5219\u662fGPIO\u53f7\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint pad\u53f7\uff0c\u5982\u679c\u7559\u7a7a\u4e0d\u5199\uff0c\u5219\u8868\u793a\u6e05\u9664\u914d\u7f6e\uff0c\u4f7f\u7528\u5e73\u53f0\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint \u590d\u7528\u529f\u80fd\u5e8f\u53f7\uff0c0~N\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nboolean \u662f\u5426\u662f\u8f93\u5165\u529f\u80fd\uff0ctrue\u662f\uff0c\u7559\u7a7a\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u4ee5 Air780EP \u4e3a\u4f8b\n-- \u5c06GPIO46\u6620\u5c04\u5230paddr 32 alt 1\nmcu.altfun(mcu.GPIO, 46, 32, 1, 0)\n-- mcu.altfun(mcu.GPIO, 46) -- \u8fd8\u539f\u6210\u9ed8\u8ba4\u914d\u7f6e\n\n-- UART2\u590d\u7528\u5230paddr 25/26 alt 3\nmcu.altfun(mcu.UART,2, 25, 3, 1)\nmcu.altfun(mcu.UART,2, 26, 3, 0)\n", "prefix": "mcu.altfun"}, "mcu.ticks2": {"body": "mcu.ticks2(${1:mode})", "description": "mcu.ticks2(mode) - \u83b7\u53d6\u9ad8\u7cbe\u5ea6\u7684\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f, \u770b\u540e\u9762\u7684\u7528\u6cd5\u8bf4\u660e\n\u8fd4\u56de\u503c\uff1a\nint \u6839\u636emode\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u7684\u542b\u4e49\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.7\u65b0\u589e\n-- \u4e0emcu.ticks()\u7684\u533a\u522b\u662f,\u5e95\u5c42\u8ba1\u6570\u5668\u662f64bit\u7684, \u5728\u53ef\u9884\u8ba1\u7684\u5c06\u6765\u4e0d\u4f1a\u6ea2\u51fa\n-- \u6240\u4ee5\u672c\u51fd\u6570\u8fd4\u56de\u7684\u503c\u603b\u662f\u9012\u589e\u7684, \u800c\u4e1432bit\u56fa\u4ef6\u4e5f\u80fd\u5904\u7406\n\n-- \u6a21\u5f0f\u53ef\u9009\u503c \u53ca \u5bf9\u5e94\u7684\u8fd4\u56de\u503c\n-- 0: \u8fd4\u56de\u5fae\u79d2\u6570, \u4ee5\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890us \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 1: \u8fd4\u56de\u6beb\u79d2\u6570, \u4ee5\u5343\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890ms \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 2: \u8fd4\u56de\u79d2\u6570, \u4ee5\u767e\u4e07\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890s \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n\nlocal us_h, us_l = mcu.ticks2(0)\nlocal ms_h, ms_l = mcu.ticks2(1)\nlocal sec_h, sec_l = mcu.ticks2(2)\nlog.info(\"us_h\", us_h, \"us_l\", us_l)\nlog.info(\"ms_h\", ms_h, \"ms_l\", ms_l)\nlog.info(\"sec_h\", sec_h, \"sec_l\", sec_l)\n", "prefix": "mcu.ticks2"}, "mcu.XTALRefOutput": {"body": "mcu.XTALRefOutput(${1:source_main},${2:source_32k})", "description": "mcu.XTALRefOutput(source_main, source_32k) - \u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\nboolean \u4f4e\u901f32K\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5f53\u524d\u4ec5Air780EP\u7cfb\u5217\u652f\u6301\nmcu.XTALRefOutput(true, false) --\u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa,\u4f4e\u901f32K\u4e0d\u8f93\u51fa\n", "prefix": "mcu.XTALRefOutput"}, "miniz.compress": {"body": "miniz.compress(${1:data},${2:flags})", "description": "miniz.compress(data, flags) - \u5feb\u901f\u538b\u7f29,\u9700\u8981165kb\u7684\u7cfb\u7edf\u5185\u5b58\u548c32kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k.\nflags \u538b\u7f29\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.WRITE_ZLIB_HEADER , \u5373\u5199\u5165zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\nend\n\n", "prefix": "miniz.compress"}, "miniz.uncompress": {"body": "miniz.uncompress(${1:data},${2:flags})", "description": "miniz.uncompress(data, flags) - \u5feb\u901f\u89e3\u538b,\u9700\u898132kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e, \u89e3\u538b\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nflags \u89e3\u538b\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.PARSE_ZLIB_HEADER , \u5373\u89e3\u6790zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\n\n local udata = miniz.uncompress(cdata)\n log.info(\"miniz\", \"udata\", udata)\nend\n", "prefix": "miniz.uncompress"}, "mlx90640.init": {"body": "mlx90640.init(${1:i2c_id},${2:refresh_rate)(\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3},${3:\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3})", "description": "mlx90640.init(i2c_id,refresh_rate) (\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3,\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3) - \u521d\u59cb\u5316MLX90640\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid\u6216\u8005\u8f6fi2c\u5bf9\u8c61,\u9ed8\u8ba4\u4e3a0\nint \u4f20\u611f\u5668\u7684\u6d4b\u91cf\u901f\u7387,\u9ed8\u8ba4\u4e3a4Hz\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\ni2c.setup(i2cid,i2c_speed)\nif mlx90640.init(0,mlx90640.FPS4HZ) then\n log.info(\"mlx90640\", \"init ok\")\n sys.wait(500) -- \u7a0d\u7b49\u7247\u523b\n while 1 do\n mlx90640.feed() -- \u53d6\u4e00\u5e27\u6570\u636e\n mlx90640.draw2lcd(0, 0 ,1)-- \u9700\u63d0\u524d\u628alcd\u521d\u59cb\u5316\u597d\n sys.wait(250) -- \u9ed8\u8ba4\u662f4HZ\n end\nelse\n log.info(\"mlx90640\", \"init fail\")\nend\n\n", "prefix": "mlx90640.init"}, "mlx90640.feed": {"body": "mlx90640.feed()", "description": "mlx90640.feed() - \u53d6\u4e00\u5e27\u6570\u636e\n", "prefix": "mlx90640.feed"}, "mlx90640.raw_data": {"body": "mlx90640.raw_data()", "description": "mlx90640.raw_data() - \u83b7\u53d6\u5e95\u5c42\u88f8\u6570\u636e,\u6d6e\u70b9\u6570\u77e9\u9635\n\u8fd4\u56de\u503c\uff1a\ntable \u6d6e\u70b9\u6570\u6570\u636e,768\u4e2a\u50cf\u7d20\u5bf9\u5e94\u7684\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_data"}, "mlx90640.raw_point": {"body": "mlx90640.raw_point(${1:index})", "description": "mlx90640.raw_point(index) - \u83b7\u53d6\u5355\u4e00\u70b9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u7d22\u5f15\u503c(0-767)\n\u8fd4\u56de\u503c\uff1a\nnumber \u5355\u70b9\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_point"}, "mlx90640.ta_temp": {"body": "mlx90640.ta_temp()", "description": "mlx90640.ta_temp() - \u83b7\u53d6\u5916\u58f3\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5916\u58f3\u6e29\u5ea6\n", "prefix": "mlx90640.ta_temp"}, "mlx90640.max_temp": {"body": "mlx90640.max_temp()", "description": "mlx90640.max_temp() - \u83b7\u53d6\u6700\u9ad8\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u9ad8\u6e29\u5ea6\nnumber \u6700\u9ad8\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.max_temp"}, "mlx90640.min_temp": {"body": "mlx90640.min_temp()", "description": "mlx90640.min_temp() - \u83b7\u53d6\u6700\u4f4e\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u4f4e\u6e29\u5ea6\nnumber \u6700\u4f4e\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.min_temp"}, "mlx90640.average_temp": {"body": "mlx90640.average_temp()", "description": "mlx90640.average_temp() - \u83b7\u53d6\u5e73\u5747\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5e73\u5747\u6e29\u5ea6\n", "prefix": "mlx90640.average_temp"}, "mlx90640.get_vdd": {"body": "mlx90640.get_vdd()", "description": "mlx90640.get_vdd() - \u83b7\u53d6vdd\n\u8fd4\u56de\u503c\uff1a\nnumber vdd\n", "prefix": "mlx90640.get_vdd"}, "mlx90640.draw2lcd": {"body": "mlx90640.draw2lcd(${1:x},${2:y},${3:fold})", "description": "mlx90640.draw2lcd(x, y, fold) - \u7ed8\u5236\u5230lcd\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u89d2x\u5750\u6807\nint \u5de6\u4e0a\u89d2y\u5750\u6807\nint \u653e\u5927\u500d\u6570,\u5fc5\u987b\u4e3a2\u7684\u6307\u6570\u500d(1,2,4,8,16...)\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "mlx90640.draw2lcd"}, "mobile.imei": {"body": "mobile.imei(${1:index})", "description": "mobile.imei(index) - \u83b7\u53d6IMEI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMEI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imei"}, "mobile.imsi": {"body": "mobile.imsi(${1:index})", "description": "mobile.imsi(index) - \u83b7\u53d6IMSI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMSI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imsi"}, "mobile.sn": {"body": "mobile.sn()", "description": "mobile.sn() - \u83b7\u53d6SN\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684SN\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil. \u6ce8\u610f, SN\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u51fa\u5382\u672a\u5fc5\u6709\u5199SN\n-- \u4e00\u822c\u7528\u9014\u7684\u552f\u4e00id, \u53ef\u4ee5\u7528mobile.imei()\u4ee3\u66ff\n-- \u5982\u9700\u8981\u771f\u6b63\u7684\u552f\u4e00ID, \u4f7f\u7528 mcu.unique_id()\n", "prefix": "mobile.sn"}, "mobile.muid": {"body": "mobile.muid()", "description": "mobile.muid() - \u83b7\u53d6MUID\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MUID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.muid"}, "mobile.iccid": {"body": "mobile.iccid(${1:id})", "description": "mobile.iccid(id) - \u83b7\u53d6\u6216\u8bbe\u7f6eICCID\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring ICCID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.iccid"}, "mobile.number": {"body": "mobile.number(${1:id})", "description": "mobile.number(id) - \u83b7\u53d6\u624b\u673a\u5361\u53f7\uff0c\u6ce8\u610f\uff0c\u53ea\u6709\u5199\u5165\u4e86\u624b\u673a\u53f7\u624d\u80fd\u8bfb\u51fa\uff0c\u56e0\u6b64\u6709\u53ef\u80fd\u8bfb\u51fa\u6765\u662f\u7a7a\u7684\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring number\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.number"}, "mobile.simid": {"body": "mobile.simid(${1:id})", "description": "mobile.simid(id) - \u83b7\u53d6\u5f53\u524dSIM\u5361\u69fd,\u6216\u8005\u5207\u6362\u5361\u69fd\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u5982\u679c\u652f\u6301\u53cc\u5361\uff0c\u6bd4\u5982EC618\uff0c\u53ef\u4ee5\u586b2\u6765\u81ea\u9002\u5e94\uff0c\u4f46\u662f\u4f1a\u5360\u7528\u63894\u4e2aIO(gpio4/5/6/23)\u3002\u5982\u679c\u4e0d\u586b\u5c31\u76f4\u63a5\u8bfb\u53d6\u5f53\u524d\u5361\u69fd\nboolean \u662f\u5426\u4f18\u5148\u7528SIM0\uff0c\u53ea\u6709SIM\u5361\u7f16\u53f7\u51992\u81ea\u9002\u5e94\u624d\u6709\u7528\uff01\uff01\uff01\u3002true\u4f18\u5148\u7528SIM0\uff0cfalse\u5219\u7531\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\uff0c\u652f\u6301\u53cc\u5361\u53cc\u5f85SIM0\u4f18\u5148\uff0c\u4e0d\u652f\u6301\u7684\u662f\u4e0a\u4e00\u6b21\u68c0\u6d4b\u5230\u7684\u4f18\u5148\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5fc5\u987b\u5728\u5f00\u673a\u5c31\u914d\u7f6e\uff0c\u5426\u5219\u5c31\u65e0\u6548\u4e86\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsim\u5361\u69fd\u7f16\u53f7,\u82e5\u5931\u8d25\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\nmobile.simid(0) -- \u56fa\u5b9a\u4f7f\u7528SIM0\nmobile.simid(1) -- \u56fa\u4ef6\u4f7f\u7528SIM1\nmobile.simid(2) -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4f18\u5148\u7ea7\u770b\u5177\u4f53\u5e73\u53f0\nmobile.simid(2, true) -- -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4e14SIM0\u4f18\u5148\n-- \u63d0\u9192, \u81ea\u52a8\u8bc6\u522b\u662f\u4f1a\u589e\u52a0\u65f6\u95f4\u7684\n", "prefix": "mobile.simid"}, "mobile.simPin": {"body": "mobile.simPin(${1:id},${2:operation},${3:pin1},${4:pin2})", "description": "mobile.simPin(id,operation,pin1,pin2) - \u68c0\u6d4b\u5f53\u524dSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u5bf9SIM\u5361\u7684PIN\u7801\u505a\u76f8\u5173\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u652f\u6301\u53cc\u5361\u53cc\u5f85\u7684\u624d\u9700\u8981\u9009\u62e9\nint PIN\u7801\u64cd\u4f5c\u7c7b\u578b\uff0c\u53ea\u80fd\u662fmobile.PIN_XXXX\uff0c\u4e0d\u64cd\u4f5c\u5c31\u7559\u7a7a\nstring \u66f4\u6362pin\u65f6\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u9a8c\u8bc1\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u89e3\u9501pin\u7801\u65f6\u7684PUK\uff0c4~8\u5b57\u8282\nstring \u66f4\u6362pin\u7801\u64cd\u4f5c\u65f6\u7684\u65b0\u7684pin\u7801\uff0c\u89e3\u9501pin\u7801\u65f6\u7684\u65b0PIN\uff0c4~8\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u5f53\u65e0PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56deSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u6709PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56de\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\nlocal cpin_is_ready = mobile.simPin() -- \u5f53\u524dsim\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u4e00\u822c\u8fd4\u56defalse\u5c31\u662f\u6ca1\u5361\nlocal succ = mobile.simPin(0, mobile.PIN_VERIFY, \"1234\") -- \u8f93\u5165pin\u7801\u9a8c\u8bc1\n", "prefix": "mobile.simPin"}, "mobile.rtime": {"body": "mobile.rtime(${1:time},${2:auto_reset_stack},${3:data_first})", "description": "mobile.rtime(time, auto_reset_stack, data_first) - \u8bbe\u7f6eRRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\u95f4\u9694\uff0c\u5f53\u5f00\u542f\u65f6\u540e\uff0c\u9047\u5230\u6781\u5f31\u4fe1\u53f7+\u9891\u7e41\u6570\u636e\u64cd\u4f5c\u53ef\u80fd\u4f1a\u5f15\u8d77\u7f51\u7edc\u4e25\u91cd\u6545\u969c\uff0c\u56e0\u6b64\u9700\u8981\u989d\u5916\u8bbe\u7f6e\u81ea\u52a8\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nint RRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\uff0c\u7b49\u540c\u4e8eAir724\u7684AT+RTIME\uff0c\u5355\u4f4d\u79d2\uff0c\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u505c\u7528\uff0c\u4e0d\u8981\u8d85\u8fc720\u79d2\uff0c\u6ca1\u6709\u610f\u4e49\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u65f6\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\u65f6\u95f4\u5219\u81ea\u52a8\u5f00\u542f\u3002\u672c\u53c2\u6570\u4e8e2023\u5e749\u670814\u65e5\u5df2\u5e9f\u5f03\nboolean \u662f\u5426\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0ctrue\u542f\u7528\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u4e3afalse\uff0c\u5f00\u542f\u540e\u5fc5\u987b\u7b49\u5230TCP\u6570\u636eACK\u6216\u8005\u8d85\u65f6\u5931\u8d25\uff0c\u6216\u8005socket CONNECT\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u6216\u8005\u5931\u8d25\uff09\u624d\u5141\u8bb8RRC\u63d0\u524d\u91ca\u653e\uff0c\u53ef\u80fd\u4f1a\u589e\u52a0\u529f\u8017\u3002\u672c\u53c2\u6570\u4e8e2024\u5e748\u670812\u65e5\u542f\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.rtime(3) --\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\u63d0\u524d\u91ca\u653eRRC\nmobile.rtime(3,nil,true) --\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0c\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\uff0c\u63d0\u524d\u91ca\u653eRRC\n", "prefix": "mobile.rtime"}, "mobile.setAuto": {"body": "mobile.setAuto(${1:check_sim_period},${2:get_cell_period},${3:search_cell_time},${4:auto_reset_stack},${5:network_check_period})", "description": "mobile.setAuto(check_sim_period, get_cell_period, search_cell_time, auto_reset_stack, network_check_period) - \u8bbe\u7f6e\u4e00\u4e9b\u8f85\u52a9\u5468\u671f\u6027\u6216\u8005\u81ea\u52a8\u529f\u80fd\uff0c\u76ee\u524d\u652f\u6301SIM\u5361\u6682\u65f6\u8131\u79bb\u540e\u6062\u590d\uff0c\u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\uff0c\u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u81ea\u52a8\u6062\u590d\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5efa\u8bae5000~10000\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0c\u4e0d\u80fd\u518d\u540c\u4e00\u65f6\u95f4\u4f7f\u7528\uff0c\u5fc5\u987b\u9519\u5f00\u6267\u884c\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u4f1a\u589e\u52a0\u90e8\u5206\u529f\u8017\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u6bcf\u6b21\u641c\u7d22\u5c0f\u533a\u65f6\u6700\u5927\u641c\u7d22\u65f6\u95f4\uff0c\u5355\u4f4d\u79d2\u3002\u4e0d\u8981\u8d85\u8fc78\u79d2\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u5f00\u59cb\u72b6\u6001\u662ffalse\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u6539\u53d8\nint \u8bbe\u7f6e\u5b9a\u65f6\u68c0\u6d4b\u7f51\u7edc\u662f\u5426\u6b63\u5e38\u5e76\u4e14\u5728\u68c0\u6d4b\u5230\u957f\u65f6\u95f4\u65e0\u7f51\u65f6\u901a\u8fc7\u91cd\u542f\u534f\u8bae\u6808\u6765\u6062\u590d\uff0c\u65e0\u7f51\u6062\u590d\u65f6\u957f\uff0c\u5355\u4f4dms\uff0c\u5efa\u8bae60000\u4ee5\u4e0a\uff0c\u4e3a\u7f51\u7edc\u641c\u7d22\u7f51\u7edc\u4fdd\u7559\u8db3\u591f\u7684\u65f6\u95f4\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u66f4\u6539\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mobile.setAuto"}, "mobile.apn": {"body": "mobile.apn(${1:index},${2:cid},${3:new_apn_name},${4:user_name},${5:password},${6:ip_type},${7:protocol})", "description": "mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol) - \u83b7\u53d6\u6216\u8bbe\u7f6eAPN\uff0c\u8bbe\u7f6eAPN\u5fc5\u987b\u5728\u5165\u7f51\u524d\u5c31\u8bbe\u7f6e\u597d\uff0c\u6bd4\u5982\u5728SIM\u5361\u8bc6\u522b\u5b8c\u6210\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nint cid, \u9ed8\u8ba40\uff0c\u5982\u679c\u8981\u7528\u975e\u9ed8\u8ba4APN\u6765\u6fc0\u6d3b\uff0c\u5fc5\u987b>0\nstring \u65b0\u7684APN,\u4e0d\u586b\u5c31\u662f\u83b7\u53d6APN, \u586b\u4e86\u5c31\u662f\u8bbe\u7f6eAPN, \u662f\u5426\u652f\u6301\u8bbe\u7f6e\u53d6\u51b3\u4e8e\u5e95\u5c42\u5b9e\u73b0\nstring \u65b0\u7684APN\u7684username,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nstring \u65b0\u7684APN\u7684password,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nint \u6fc0\u6d3bAPN\u65f6\u7684IP TYPE,1=IPV4 2=IPV6 3=IPV4V6,\u9ed8\u8ba4\u662f1\nint \u6fc0\u6d3bAPN\u65f6,\u5982\u679c\u9700\u8981username\u548cpassword,\u5c31\u8981\u5199\u9274\u6743\u534f\u8bae\u7c7b\u578b,1~3,\u9ed8\u8ba43,\u4ee3\u88681\u548c2\u90fd\u5c1d\u8bd5\u4e00\u4e0b\u3002\u4e0d\u9700\u8981\u9274\u6743\u7684\u51990\nboolean \u662f\u5426\u5220\u9664APN,true\u662f,\u5176\u4ed6\u90fd\u5426,\u53ea\u6709\u53c2\u65703\u65b0\u7684APN\u4e0d\u662fstring\u7684\u65f6\u5019\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u5230\u7684\u9ed8\u8ba4APN\u503c,\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmobile.apn(0,1,\"cmiot\",\"\",\"\",nil,0) -- \u79fb\u52a8\u516c\u7f51\u5361\u8bbe\u7f6eAPN\u4e3acmiot,\u4e00\u822c\u4e0d\u7528\u8bbe\u7f6e\nmobile.apn(0,1,\"name\",\"user\",\"password\",nil,3) -- \u4e13\u7f51\u5361\u8bbe\u7f6e\u7684demo\uff0cname\uff0cuser\uff0cpassword\u8054\u7cfb\u5361\u5546\u83b7\u53d6\n", "prefix": "mobile.apn"}, "mobile.ipv6": {"body": "mobile.ipv6(${1:onff})", "description": "mobile.ipv6(onff) - \u662f\u5426\u9ed8\u8ba4\u5f00\u542fIPV6\u529f\u80fd\uff0c\u5fc5\u987b\u5728LTE\u7f51\u7edc\u8fde\u63a5\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u5173 true\u5f00\u542f false \u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nboolean true \u5f53\u524d\u662f\u5f00\u542f\u7684\uff0cfalse \u5f53\u524d\u662f\u5173\u95ed\u7684\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u5f00\u542fipv6\u540e, \u5f00\u673a\u8054\u7f51\u4f1a\u61622~3\u79d2\n", "prefix": "mobile.ipv6"}, "mobile.csq": {"body": "mobile.csq()", "description": "mobile.csq() - \u83b7\u53d6csq\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dCSQ\u503c, \u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 - 31, \u8d8a\u5927\u8d8a\u597d\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, 4G\u6a21\u5757\u7684CSQ\u503c\u4ec5\u4f9b\u53c2\u8003, rsrp/rsrq\u624d\u662f\u771f\u6b63\u7684\u4fe1\u53f7\u5f3a\u5ea6\u6307\u6807\n", "prefix": "mobile.csq"}, "mobile.rssi": {"body": "mobile.rssi()", "description": "mobile.rssi() - \u83b7\u53d6rssi\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drssi\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 \u5230 -114, \u8d8a\u5c0f\u8d8a\u597d\n", "prefix": "mobile.rssi"}, "mobile.rsrp": {"body": "mobile.rsrp()", "description": "mobile.rsrp() - \u83b7\u53d6rsrp,\u53c2\u8003\u4fe1\u53f7\u63a5\u6536\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrp\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -44 ~ -140 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrp"}, "mobile.rsrq": {"body": "mobile.rsrq()", "description": "mobile.rsrq() - \u83b7\u53d6rsrq,\u53c2\u8003\u4fe1\u53f7\u53d1\u9001\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -3 ~ -19.5 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrq"}, "mobile.snr": {"body": "mobile.snr()", "description": "mobile.snr() - \u83b7\u53d6snr,\u4fe1\u566a\u6bd4\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsnq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0.\u8303\u56f4 0 - 30, \u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.snr"}, "mobile.eci": {"body": "mobile.eci()", "description": "mobile.eci() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684ECI(E-UTRAN Cell Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.eci"}, "mobile.tac": {"body": "mobile.tac()", "description": "mobile.tac() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684TAC\u6216\u8005LAC\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1. \u5982\u679c\u5c1a\u672a\u6ce8\u518c\u5230\u7f51\u7edc,\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.7.9 \u65b0\u589e\n", "prefix": "mobile.tac"}, "mobile.enbid": {"body": "mobile.enbid()", "description": "mobile.enbid() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684eNBID(eNodeB Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524denbid\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.enbid"}, "mobile.scell": {"body": "mobile.scell()", "description": "mobile.scell() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u670d\u52a1\u5c0f\u533a\u7684\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2024.9.12 \u65b0\u589e\nlog.info(\"cell\", json.encode(mobile.scell()))\n-- \u8fd4\u56de\u503c\u793a\u4f8b\n{\n \"mnc\": 11,\n \"mcc\": 460,\n \"rssi\": -78,\n \"pci\": 115,\n \"rsrp\": -107,\n \"tac\": 30005,\n \"eci\": 124045360,\n \"cid\": 124045360,\n \"rsrq\": -9,\n \"snr\": 15,\n \"earfcn\": 1850\n}\n", "prefix": "mobile.scell"}, "mobile.flymode": {"body": "mobile.flymode(${1:index},${2:enable})", "description": "mobile.flymode(index, enable) - \u8fdb\u51fa\u98de\u884c\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nbool \u662f\u5426\u8bbe\u7f6e\u4e3a\u98de\u884c\u6a21\u5f0f,true\u4e3a\u8bbe\u7f6e, false\u4e3a\u9000\u51fa,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u539f\u98de\u884c\u6a21\u5f0f\u7684\u72b6\u6001\n", "prefix": "mobile.flymode"}, "mobile.syncTime": {"body": "mobile.syncTime(${1:enable})", "description": "mobile.syncTime(enable) - \u914d\u7f6e\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\u5f00\u5173\uff0c\u9ed8\u8ba4\u5f00\u542f\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed, nil\u4e0d\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nbool \u5f53\u524d\u5f00\u5173\u72b6\u6001\n\u4f8b\u5b50\uff1a\nmobile.syncTime() --\u83b7\u53d6\u5f53\u524d\u5f00\u5173\u72b6\u6001\nmobile.syncTime(false) --\u5173\u95ed\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\n", "prefix": "mobile.syncTime"}, "mobile.status": {"body": "mobile.status()", "description": "mobile.status() - \u83b7\u53d6\u7f51\u7edc\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7f51\u7edc\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u72b6\u6001\u63cf\u8ff0\n-- 0:\u7f51\u7edc\u672a\u6ce8\u518c\n-- 1:\u7f51\u7edc\u5df2\u6ce8\u518c\n-- 2:\u6b63\u5728\u641c\u7f51\u4e2d\n-- 3:\u7f51\u7edc\u6ce8\u518c\u88ab\u62d2\u7edd\n-- 4:\u7f51\u7edc\u72b6\u6001\u672a\u77e5\n-- 5:\u6f2b\u6e38,\u4e14\u5df2\u6ce8\u518c\n-- 6:\u4ec5SMS\u53ef\u7528\n-- 7:\u4ec5SMS\u53ef\u7528,\u4e14\u6f2b\u6e38\u72b6\u6001\n-- 8:\u4ec5\u7d27\u6025\u547c\u53eb. \u6ce8\u610f, \u56fd\u5185\u4e0d\u652f\u6301\u6b64\u72b6\u6001,\u6a21\u5757\u4e5f\u4e0d\u652f\u6301\u7d27\u6025\u547c\u53eb\n\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\u5224\u65ad\u8054\u7f51\u72b6\u6001, \u5efa\u8bae\u4f7f\u7528socket.localIP()\u6765\u5224\u65ad\n", "prefix": "mobile.status"}, "mobile.getCellInfo": {"body": "mobile.getCellInfo()", "description": "mobile.getCellInfo() - \u83b7\u53d6\u57fa\u7ad9\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u57fa\u7ad9\u6570\u636e\u7684\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \u4ece2023.06.20\u5f00\u59cb, \u9700\u8981\u4e3b\u52a8\u8bf7\u6c42\u4e00\u6b21reqCellInfo\u624d\u4f1a\u6709\u57fa\u7ad9\u6570\u636e.\n\n--\u793a\u4f8b\u8f93\u51fa(\u539f\u59cb\u6570\u636e\u662ftable, \u4e0b\u9762\u662fjson\u683c\u5f0f\u5316\u540e\u7684\u5185\u5bb9)\n--[[\n[\n {\"rsrq\":-10,\"rssi\":-55,\"cid\":124045360,\"mnc\":17,\"pci\":115,\"earfcn\":1850,\"snr\":15,\"rsrp\":-85,\"mcc\":1120,\"tdd\":0},\n {\"pci\":388,\"rsrq\":-11,\"mnc\":17,\"earfcn\":2452,\"snr\":5,\"rsrp\":-67,\"mcc\":1120,\"cid\":124045331},\n {\"pci\":100,\"rsrq\":-9,\"mnc\":17,\"earfcn\":75,\"snr\":17,\"rsrp\":-109,\"mcc\":1120,\"cid\":227096712}\n]\n]]\n\nmobile.reqCellInfo(60)\n-- \u8ba2\u9605\nsys.subscribe(\"CELL_INFO_UPDATE\", function()\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\nend)\n\n-- \u5b9a\u671f\u8f6e\u8bad\u5f0f\nsys.taskInit(function()\n sys.wait(3000)\n while 1 do\n mobile.reqCellInfo(15)\n sys.waitUntil(\"CELL_INFO_UPDATE\", 15000)\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\n end\nend)\n", "prefix": "mobile.getCellInfo"}, "mobile.reqCellInfo": {"body": "mobile.reqCellInfo(${1:timeout})", "description": "mobile.reqCellInfo(timeout) - \u53d1\u8d77\u57fa\u7ad9\u4fe1\u606f\u67e5\u8be2,\u542b\u4e34\u8fd1\u5c0f\u533a\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u79d2,\u9ed8\u8ba415. \u6700\u5c115, \u6700\u9ad860\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003 mobile.getCellInfo \u51fd\u6570\n", "prefix": "mobile.reqCellInfo"}, "mobile.lockCell": {"body": "mobile.lockCell(${1:mode},${2:earfcn},${3:pci})", "description": "mobile.lockCell(mode, earfcn, pci) - \u9501\u5b9a/\u89e3\u9501\u5c0f\u533a\uff0c\u4ec5\u7528\u4e8e\u5916\u573a\u6d4b\u8bd5\uff0c\u6ca1\u63a5\u89e6\u8fc7\u7684\uff0c\u6216\u8005\u751f\u4ea7\u73af\u5883\u4e2d\u8bf7\u52ff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u64cd\u4f5c\u7801 0\u5220\u9664\u4f18\u5148\u7684\u9891\u70b9\uff0c1\u8bbe\u7f6e\u4f18\u5148\u9891\u70b9\uff0c2\u9501\u5b9a\u5c0f\u533a\uff0c3\u89e3\u9501\u5c0f\u533a\nint \u4e0b\u884c\u9891\u70b9\nint phycellid\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529ftrue \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nmobile.lockCell(2,1860,32) --\u9501\u5b9a\u5c0f\u533a\nmobile.lockCell(3) --\u89e3\u9501\u5c0f\u533a\n", "prefix": "mobile.lockCell"}, "mobile.reset": {"body": "mobile.reset()", "description": "mobile.reset() - \u91cd\u542f\u534f\u8bae\u6808\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u91cd\u542fLTE\u534f\u8bae\u6808\nmobile.reset()\n", "prefix": "mobile.reset"}, "mobile.dataTraffic": {"body": "mobile.dataTraffic(${1:clearUplink},${2:clearDownlink})", "description": "mobile.dataTraffic(clearUplink, clearDownlink) - \u6570\u636e\u91cf\u6d41\u91cf\u5904\u7406\n\u4f20\u5165\u503c\uff1a\nboolean \u6e05\u7a7a\u4e0a\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\nboolean \u6e05\u7a7a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nint \u4e0a\u884c\u6d41\u91cfGB\nint \u4e0a\u884c\u6d41\u91cfB\nint \u4e0b\u884c\u6d41\u91cfGB\nint \u4e0b\u884c\u6d41\u91cfB\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\n-- \u4e0a\u884c\u6d41\u91cf\u503cByte = uplinkGB * 1024 * 1024 * 1024 + uplinkB\n-- \u4e0b\u884c\u6d41\u91cf\u503cByte = downlinkGB * 1024 * 1024 * 1024 + downlinkB\nlocal uplinkGB, uplinkB, downlinkGB, downlinkB = mobile.dataTraffic()\n\n-- \u6e05\u7a7a\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\nmobile.dataTraffic(true, true)\n\n-- \u4ec5\u8bb0\u5f55\u5f00\u673a\u540e\u7684\u6d41\u91cf,\u590d\u4f4d/\u91cd\u542f\u4f1a\u5f52\u96f6\n", "prefix": "mobile.dataTraffic"}, "mobile.config": {"body": "mobile.config(${1:item},${2:value})", "description": "mobile.config(item, value) - \u7f51\u7edc\u7279\u6b8a\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f6e\u9879\u76ee\uff0c\u770bmobile.CONF_XXX\nint \u914d\u7f6e\u503c,\u6839\u636e\u5177\u4f53\u914d\u7f6e\u7684item\u51b3\u5b9a\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n--\u9488\u5bf9\u4e0d\u540c\u5e73\u53f0\u6709\u4e0d\u540c\u7684\u914d\u7f6e\uff0c\u8c28\u614e\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u6709EC618/EC718\u7cfb\u5217\n\n-- EC618\u914d\u7f6e\u5c0f\u533a\u91cd\u9009\u4fe1\u53f7\u5dee\u503c\u95e8\u9650\uff0c\u4e0d\u80fd\u5927\u4e8e15dbm\uff0c\u5fc5\u987b\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u624d\u80fd\u7528\nmobile.flymode(0,true)\nmobile.config(mobile.CONF_RESELTOWEAKNCELL, 15)\nmobile.config(mobile.CONF_STATICCONFIG, 1) --\u5f00\u542f\u7f51\u7edc\u9759\u6001\u4f18\u5316\nmobile.flymode(0,false)\n\n-- EC618\u8bbe\u7f6eSIM\u5199\u5165\u6b21\u6570\u7684\u7edf\u8ba1\n-- \u5173\u95ed\u7edf\u8ba1\nmobile.config(mobile.CONF_SIM_WC_MODE, 0)\n-- \u5f00\u542f\u7edf\u8ba1, \u9ed8\u8ba4\u4e5f\u662f\u5f00\u542f\u7684.\nmobile.config(mobile.CONF_SIM_WC_MODE, 1)\n-- \u8bfb\u53d6\u7edf\u8ba1\u503c,\u5f02\u6b65, \u9700\u8981\u901a\u8fc7\u7cfb\u7edf\u6d88\u606fSIM_IND\u83b7\u53d6\nsys.subscribe(\"SIM_IND\", function(stats, value)\n log.info(\"SIM_IND\", stats)\n if stats == \"SIM_WC\" then\n log.info(\"sim\", \"write counter\", value)\n end\nend)\nmobile.config(mobile.CONF_SIM_WC_MODE, 2)\n-- \u6e05\u7a7a\u7edf\u8ba1\u503c\nmobile.config(mobile.CONF_SIM_WC_MODE, 3)\n", "prefix": "mobile.config"}, "mobile.getBand": {"body": "mobile.getBand(${1:band},${2:is_default})", "description": "mobile.getBand(band, is_default) - \u83b7\u53d6\u5f53\u524d\u4f7f\u7528/\u652f\u6301\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u51faband\nboolean true\u9ed8\u8ba4\u652f\u6301\uff0cfalse\u5f53\u524d\u652f\u6301\u7684\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5f53\u524d\u662f\u9884\u7559\u529f\u80fd\uff0c\u4e0d\u8981\u5199true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nmobile.getBand(buff) --\u8f93\u51fa\u5f53\u524d\u4f7f\u7528\u7684band\uff0cband\u53f7\u653e\u5728buff\u5185\uff0cbuff[0]\uff0cbuff[1]\uff0cbuff[2] .. buff[buff:used() - 1]\n", "prefix": "mobile.getBand"}, "mobile.setBand": {"body": "mobile.setBand(${1:band},${2:num})", "description": "mobile.setBand(band, num) - \u8bbe\u7f6e\u4f7f\u7528\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u5165\u4f7f\u7528\u7684band\nint band\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nbuff[0] = 3\nbuff[1] = 5\nbuff[2] = 8\nbuff[3] = 40\nmobile.setBand(buff, 4) --\u8bbe\u7f6e\u4f7f\u7528\u7684band\u4e00\u51714\u4e2a\uff0c\u4e3a3,5,8,40\n", "prefix": "mobile.setBand"}, "mobile.nstOnOff": {"body": "mobile.nstOnOff(${1:onoff},${2:uart_id})", "description": "mobile.nstOnOff(onoff, uart_id) - RF\u6d4b\u8bd5\u5f00\u5173\u548c\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00\u542f\u6d4b\u8bd5\u6a21\u5f0f\uff0cfalse\u5173\u95ed\nint \u4e32\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstOnOff(true, uart.VUART_0) --\u6253\u5f00\u6d4b\u8bd5\u6a21\u5f0f\uff0c\u5e76\u4e14\u7528\u865a\u62df\u4e32\u53e3\u53d1\u9001\u7ed3\u679c\nmobile.nstOnOff(false) --\u5173\u95ed\u6d4b\u8bd5\u6a21\u5f0f\n", "prefix": "mobile.nstOnOff"}, "mobile.nstInput": {"body": "mobile.nstInput(${1:data})", "description": "mobile.nstInput(data) - RF\u6d4b\u8bd5\u6570\u636e\u8f93\u5165\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u7528\u6237\u4ece\u4e32\u53e3\u83b7\u53d6\u7684\u6570\u636e\uff0c\u6ce8\u610f\uff0c\u5f53\u83b7\u53d6\u5b8c\u6240\u6709\u6570\u636e\u540e\uff0c\u9700\u8981\u518d\u4f20\u4e00\u4e2anil\u6765\u4f5c\u4e3a\u4f20\u8f93\u7ed3\u675f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstInput(uart_data)\nmobile.nstInput(nil)\n", "prefix": "mobile.nstInput"}, "mobile.vsimInit": {"body": "mobile.vsimInit()", "description": "mobile.vsimInit() - \u521d\u59cb\u5316\u5185\u7f6e\u9ed8\u8ba4\u865a\u62df\u5361\u529f\u80fd(\u4e0d\u53ef\u7528)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimInit()\n", "prefix": "mobile.vsimInit"}, "mobile.vsimOnOff": {"body": "mobile.vsimOnOff(${1:enable})", "description": "mobile.vsimOnOff(enable) - \u5207\u6362\u5185\u7f6e\u865a\u62df\u5361\u548c\u5916\u7f6e\u5b9e\u4f53\u5361\uff0c2024\u5e748\u670813\u65e5\u542f\u7528\uff0c\u865a\u62df\u5361\u9700\u8981\u56fa\u4ef6\u652f\u6301\uff0c\u5426\u5219\u5207\u6362\u540e\u65e0\u7f51\u7edc\uff0c\u9700\u8981\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u5207\u6362\uff0c\u6216\u8005\u5207\u6362\u540e\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimOnOff(true) --\u4f7f\u7528\u5185\u7f6e\u865a\u62df\u5361\nmobile.vsimOnOff(false) --\u4f7f\u7528\u5916\u7f6e\u5b9e\u4f53\u5361\n", "prefix": "mobile.vsimOnOff"}, "mqttc:subscribe": {"body": "mqttc:subscribe(${1:topic},${2:qos})", "description": "mqttc:subscribe(topic, qos) - \u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\nint topic\u4e3astring\u65f6\u751f\u6548 0/1/2 \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid,\u5f53qos\u4e3a1/2\u65f6\u6709\u6548, \u82e5\u5e95\u5c42\u8fd4\u56de\u5931\u8d25,\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=0\nmqttc:subscribe(\"/luatos/123456\", 0)\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=1\nmqttc:subscribe(\"/luatos/12345678\", 1)\n-- \u8ba2\u9605\u591a\u4e2atopic, \u4e14\u4f7f\u7528\u4e0d\u540c\u7684qos\nmqttc:subscribe({[\"/luatos/1234567\"]=1,[\"/luatos/12345678\"]=2})\n", "prefix": "mqttc:subscribe"}, "mqttc:unsubscribe": {"body": "mqttc:unsubscribe(${1:topic})", "description": "mqttc:unsubscribe(topic) - \u53d6\u6d88\u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\n\u4f8b\u5b50\uff1a\nmqttc:unsubscribe(\"/luatos/123456\")\nmqttc:unsubscribe({\"/luatos/1234567\",\"/luatos/12345678\"})\n", "prefix": "mqttc:unsubscribe"}, "mqttc:debug": {"body": "mqttc:debug(${1:onoff})", "description": "mqttc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mqttc:debug"}, "mqtt.create": {"body": "mqtt.create(${1:adapter},${2:host},${3:port},${4:ssl},${5:isipv6})", "description": "mqtt.create(adapter,host,port,ssl,isipv6) - mqtt\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring \u670d\u52a1\u5668\u5730\u5740,\u53ef\u4ee5\u662f\u57df\u540d, \u4e5f\u53ef\u4ee5\u662fip\nint \u7aef\u53e3\u53f7\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aef\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e
verify \u662f\u5426\u5f3a\u5236\u6821\u9a8c 0\u4e0d\u6821\u9a8c/1\u53ef\u9009\u6821\u9a8c/2\u5f3a\u5236\u6821\u9a8c \u9ed8\u8ba42\nbool/table bool \u662f\u5426\u4e3aipv6\uff0c\u9ed8\u8ba4\u4e0d\u662f table mqtt\u6269\u5c55\u53c2\u6570, ipv6 \u662f\u5426\u4e3aipv6, rxSize \u63a5\u6536\u7f13\u51b2\u533a\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56demqtt\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884)\n-- \u666e\u901aTCP\u94fe\u63a5,mqtt\u63a5\u6536\u7f13\u51b2\u533a4096\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884, nil, {rxSize = 4096})\n-- \u52a0\u5bc6TCP\u94fe\u63a5,\u4e0d\u9a8c\u8bc1\u670d\u52a1\u5668\u8bc1\u4e66\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, true)\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\")})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1, \u4f46\u53ef\u9009\u8ba4\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\"), verify=1})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u53cc\u5411\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {\n server_cert=io.readFile(\"/luadb/ca.crt\"),\n client_cert=io.readFile(\"/luadb/client.pem\"),\n client_key=\"123456\",\n client_password=\"123456\",\n })\n", "prefix": "mqtt.create"}, "mqttc:auth": {"body": "mqttc:auth(${1:client_id},${2:username},${3:password},${4:cleanSession})", "description": "mqttc:auth(client_id,username,password,cleanSession) - mqtt\u4e09\u5143\u7ec4\u914d\u7f6e\u53cacleanSession\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u8bc6\u522bid,\u5bf9\u4e8e\u540c\u4e00\u4e2amqtt\u670d\u52a1\u5668\u6765\u8bf4, \u901a\u5e38\u8981\u6c42\u552f\u4e00,\u76f8\u540cclient_id\u4f1a\u4e92\u76f8\u8e22\u4e0b\u7ebf\nstring \u8d26\u53f7 \u53ef\u9009\nstring \u5bc6\u7801 \u53ef\u9009\nbool \u6e05\u9664session,\u9ed8\u8ba4true,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e0\u8d26\u53f7\u5bc6\u7801\u767b\u5f55,\u4ec5clientId\nmqttc:auth(\"123456789\")\n-- \u5e26\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\nmqttc:auth(\"123456789\",\"username\",\"password\")\n-- \u989d\u5916\u914d\u7f6ecleanSession,\u4e0d\u6e05\u9664\nmqttc:auth(\"123456789\",\"username\",\"password\", false)\n-- \u65e0clientId\u6a21\u5f0f, \u670d\u52a1\u5668\u968f\u673a\u751f\u6210id, cleanSession\u4e0d\u53ef\u914d\u7f6e\nmqttc:auth()\n", "prefix": "mqttc:auth"}, "mqttc:keepalive": {"body": "mqttc:keepalive(${1:time})", "description": "mqttc:keepalive(time) - mqtt\u5fc3\u8df3\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009 \u5355\u4f4ds \u9ed8\u8ba4240s. \u6700\u514815,\u6700\u9ad8600\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:keepalive(30)\n", "prefix": "mqttc:keepalive"}, "mqttc:on": {"body": "mqttc:on(${1:cb})", "description": "mqttc:on(cb) - \u6ce8\u518cmqtt\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb mqtt\u56de\u8c03,\u53c2\u6570\u5305\u62ecmqtt_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:on(function(mqtt_client, event, data, payload, metas)\n -- \u7528\u6237\u81ea\u5b9a\u4e49\u4ee3\u7801\n log.info(\"mqtt\", \"event\", event, mqtt_client, data, payload)\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n conack -- \u670d\u52a1\u5668\u9274\u6743\u5b8c\u6210,mqtt\u8fde\u63a5\u5df2\u7ecf\u5efa\u7acb, \u53ef\u4ee5\u8ba2\u9605\u548c\u53d1\u5e03\u6570\u636e\u4e86,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n recv -- \u63a5\u6536\u5230\u6570\u636e,\u7531\u670d\u52a1\u5668\u4e0b\u53d1, data\u4e3atopic\u503c(string), payload\u4e3a\u4e1a\u52a1\u6570\u636e(string).metas\u662f\u5143\u6570\u636e(table), \u4e00\u822c\u4e0d\u5904\u7406. \n -- metas\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\n -- qos \u53d6\u503c\u8303\u56f40,1,2\n -- retain \u53d6\u503c\u8303\u56f4 0,1\n -- dup \u53d6\u503c\u8303\u56f4 0,1\n sent -- \u53d1\u9001\u5b8c\u6210, qos0\u4f1a\u9a6c\u4e0a\u901a\u77e5, qos1/qos2\u4f1a\u5728\u670d\u52a1\u5668\u5e94\u7b54\u4f1a\u56de\u8c03, data\u4e3a\u6d88\u606fid\n disconnect -- \u670d\u52a1\u5668\u65ad\u5f00\u8fde\u63a5,\u7f51\u7edc\u95ee\u9898\u6216\u670d\u52a1\u5668\u8e22\u4e86\u5ba2\u6237\u7aef,\u4f8b\u5982clientId\u91cd\u590d,\u8d85\u65f6\u672a\u4e0a\u62a5\u4e1a\u52a1\u6570\u636e\n pong -- \u6536\u5230\u670d\u52a1\u5668\u5fc3\u8df3\u5e94\u7b54,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n]]\n", "prefix": "mqttc:on"}, "mqttc:connect": {"body": "mqttc:connect()", "description": "mqttc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nmqttc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65admqtt\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "mqttc:connect"}, "mqttc:disconnect": {"body": "mqttc:disconnect()", "description": "mqttc:disconnect() - \u65ad\u5f00\u670d\u52a1\u5668\u8fde\u63a5(\u4e0d\u4f1a\u91ca\u653e\u8d44\u6e90)\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u65ad\u5f00\u8fde\u63a5\nmqttc:disconnect()\n", "prefix": "mqttc:disconnect"}, "mqttc:autoreconn": {"body": "mqttc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "mqttc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nmqttc:autoreconn(true)\n", "prefix": "mqttc:autoreconn"}, "mqttc:publish": {"body": "mqttc:publish(${1:topic},${2:data},${3:qos},${4:retain})", "description": "mqttc:publish(topic, data, qos, retain) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898,\u5fc5\u586b\nstring \u6d88\u606f,\u5fc5\u586b,\u4f46\u957f\u5ea6\u53ef\u4ee5\u662f0\nint \u6d88\u606f\u7ea7\u522b 0/1 \u9ed8\u8ba40\nint \u662f\u5426\u5b58\u6863, 0/1,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid, \u5f53qos\u4e3a1\u62162\u65f6\u4f1a\u6709\u6548\u503c. \u82e5\u5e95\u5c42\u8fd4\u56de\u662f\u5426, \u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmqttc:publish(\"/luatos/123456\", \"123\")\n", "prefix": "mqttc:publish"}, "mqttc:close": {"body": "mqttc:close()", "description": "mqttc:close() - mqtt\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nmqttc:close()\n", "prefix": "mqttc:close"}, "mqttc:ready": {"body": "mqttc:ready()", "description": "mqttc:ready() - mqtt\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal error = mqttc:ready()\n", "prefix": "mqttc:ready"}, "mqttc:state": {"body": "mqttc:state()", "description": "mqttc:state() - mqtt\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nnumber \u5ba2\u6237\u7aef\u72b6\u6001\n\u4f8b\u5b50\uff1a\nlocal state = mqttc:state()\n-- \u5df2\u77e5\u72b6\u6001:\n-- 0: MQTT_STATE_DISCONNECT\n-- 1: MQTT_STATE_CONNECTING\n-- 2: MQTT_STATE_CONNECTED\n-- 3: MQTT_STATE_READY\n-- 4: MQTT_STATE_ERROR\n", "prefix": "mqttc:state"}, "mqttc:will": {"body": "mqttc:will(${1:topic},${2:payload},${3:qos},${4:retain})", "description": "mqttc:will(topic, payload, qos, retain) - \u8bbe\u7f6e\u9057\u5631\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9057\u5631\u6d88\u606f\u7684topic\nstring \u9057\u5631\u6d88\u606f\u7684payload\nstring \u9057\u5631\u6d88\u606f\u7684qos, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\nstring \u9057\u5631\u6d88\u606f\u7684retain, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8981\u5728connect\u4e4b\u524d\u8c03\u7528\nmqttc:will(\"/xxx/xxx\", \"xxxxxx\")\n", "prefix": "mqttc:will"}, "otp.read": {"body": "otp.read(${1:zone},${2:offset},${3:len})", "description": "otp.read(zone, offset, len) - \u8bfb\u53d6\u6307\u5b9aOTP\u533a\u57df\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nint \u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6, \u5355\u4f4d\u5b57\u8282, \u5fc5\u987b\u662f4\u7684\u500d\u6570, \u4e0d\u80fd\u8d85\u8fc74096\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal otpdata = otp.read(0, 0, 64)\nif otpdata then\n log.info(\"otp\", otpdata:toHex())\nend\n", "prefix": "otp.read"}, "otp.write": {"body": "otp.write(${1:zone},${2:data},${3:offset})", "description": "otp.write(zone, data, offset) - \u5f80\u6307\u5b9aOTP\u533a\u57df\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nstring \u6570\u636e, \u957f\u5ea6\u5fc5\u987b\u662f4\u4e2a\u500d\u6570\nint \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nbooL \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.write"}, "otp.erase": {"body": "otp.erase(${1:zone})", "description": "otp.erase(zone) - \u64e6\u9664\u6307\u5b9aOTP\u533a\u57df\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.erase"}, "otp.lock": {"body": "otp.lock(${1:zone})", "description": "otp.lock(zone) - \u9501\u5b9aOTP\u533a\u57df. \u7279\u522b\u6ce8\u610f!!\u4e00\u65e6\u52a0\u9501\u5373\u65e0\u6cd5\u89e3\u9501,OTP\u53d8\u6210\u53ea\u8bfb!!!\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.lock"}, "pack.unpack": {"body": "pack.unpack(${1:string},${2:format},${3:init})", "description": "pack.unpack( string, format, init) - \u89e3\u5305\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u89e3\u5305\u7684\u5b57\u7b26\u4e32\nstring \u683c\u5f0f\u5316\u7b26\u53f7\nint \u9ed8\u8ba4\u503c\u4e3a1\uff0c\u6807\u8bb0\u89e3\u5305\u5f00\u59cb\u7684\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6807\u8bb0\u7684\u4f4d\u7f6e\nany \u7b2c\u4e00\u4e2a\u89e3\u5305\u7684\u503c, \u6839\u636eformat\u503c,\u53ef\u80fd\u6709N\u4e2a\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal _,a = pack.unpack(x,\">h\") --\u89e3\u5305\u6210short (2\u5b57\u8282)\n", "prefix": "pack.unpack"}, "pack.pack": {"body": "pack.pack(${1:format},${2:val1},${3:val2},${4:val3},${5:valn})", "description": "pack.pack( format, val1, val2, val3, valn ) - \u6253\u5305\u5b57\u7b26\u4e32\u7684\u503c\n\u4f20\u5165\u503c\uff1a\nstring format \u683c\u5f0f\u5316\u7b26\u53f7\nany \u7b2c\u4e00\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2cn\u4e2a\u9700\u6253\u5305\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring \u4e00\u4e2a\u5305\u542b\u6240\u6709\u683c\u5f0f\u5316\u53d8\u91cf\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal data = pack.pack('= 2\u662f, \u6700\u5927\u4f11\u7720\u65f6\u957f\u662f740\u5c0f\u65f6\n", "prefix": "pm.dtimerStart"}, "pm.dtimerStop": {"body": "pm.dtimerStop(${1:id})", "description": "pm.dtimerStop(id) - \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\npm.dtimerStop(0) -- \u5173\u95edid=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerStop"}, "pm.dtimerCheck": {"body": "pm.dtimerCheck(${1:id})", "description": "pm.dtimerCheck(id) - \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,true\u8fd8\u5728\u8fd0\u884c\uff0cfalse\u4e0d\u5728\u8fd0\u884c\nnumber \u5982\u679c\u8fd0\u884c,\u8fd0\u884c\u5269\u4f59\u65f6\u95f4,\u5355\u4f4d\u6beb\u79d2(\u9700bsp\u652f\u6301)\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\npm.dtimerCheck(0) -- \u68c0\u67e5id=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerCheck"}, "dtimerWkId": {"body": "dtimerWkId()", "description": "dtimerWkId() - \u68c0\u67e5\u5b9a\u65f6\u5524\u9192\u662f\u54ea\u4e00\u4e2a\u5b9a\u65f6\u5668\uff0c\u5982\u679c\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\uff0c\u8fd4\u56de-1\n\u8fd4\u56de\u503c\uff1a\nint \u5904\u7406\u7ed3\u679c >=0 \u662f\u672c\u6b21\u5b9a\u65f6\u5524\u9192\u7684\u5b9a\u65f6\u5668ID\uff0c\u5176\u4ed6\u9519\u8bef\uff0c\u8bf4\u660e\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\n\u4f8b\u5b50\uff1a\nlocal timer_id = pm.dtimerWkId()\n", "prefix": "dtimerWkId"}, "pm.lastReson": {"body": "pm.lastReson()", "description": "pm.lastReson() - \u5f00\u673a\u539f\u56e0,\u7528\u4e8e\u5224\u65ad\u662f\u4ece\u4f11\u7720\u6a21\u5757\u5f00\u673a,\u8fd8\u662f\u7535\u6e90/\u590d\u4f4d\u5f00\u673a\n\u8fd4\u56de\u503c\uff1a\nint 0-\u4e0a\u7535/\u590d\u4f4d\u5f00\u673a, 1-RTC\u5f00\u673a, 2-WakeupIn/Pad/IO\u5f00\u673a, 3-\u672a\u77e5\u539f\u56e0(Wakeup/RTC\u7686\u6709\u53ef\u80fd)\u5f00\u673a,\u76ee\u524d\u53ea\u6709air101,air103\u4f1a\u6709\u8fd9\u4e2a\u8fd4\u56de\u503c\nint 0-\u666e\u901a\u5f00\u673a(\u4e0a\u7535/\u590d\u4f4d),3-\u6df1\u7761\u7720\u5f00\u673a,4-\u4f11\u7720\u5f00\u673a\nint \u590d\u4f4d\u5f00\u673a\u8be6\u7ec6\u539f\u56e0\uff1a0-powerkey\u6216\u8005\u4e0a\u7535\u5f00\u673a 1-\u5145\u7535\u6216\u8005AT\u6307\u4ee4\u4e0b\u8f7d\u5b8c\u6210\u540e\u5f00\u673a 2-\u95f9\u949f\u5f00\u673a 3-\u8f6f\u4ef6\u91cd\u542f 4-\u672a\u77e5\u539f\u56e0 5-RESET\u952e 6-\u5f02\u5e38\u91cd\u542f 7-\u5de5\u5177\u63a7\u5236\u91cd\u542f 8-\u5185\u90e8\u770b\u95e8\u72d7\u91cd\u542f 9-\u5916\u90e8\u91cd\u542f 10-\u5145\u7535\u5f00\u673a\n\u4f8b\u5b50\uff1a\n-- \u662f\u54ea\u79cd\u65b9\u5f0f\u5f00\u673a\u5462\nlog.info(\"pm\", \"last power reson\", pm.lastReson())\n", "prefix": "pm.lastReson"}, "pm.force": {"body": "pm.force(${1:mode})", "description": "pm.force(mode) - \u5f3a\u5236\u8fdb\u5165\u6307\u5b9a\u7684\u4f11\u7720\u6a21\u5f0f\uff0c\u5ffd\u7565\u67d0\u4e9b\u5916\u8bbe\u7684\u5f71\u54cd\uff0c\u6bd4\u5982USB\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u82e5\u8fd4\u56de\u6210\u529f,\u5927\u6982\u7387\u4f1a\u9a6c\u4e0a\u8fdb\u5165\u8be5\u4f11\u7720\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\npm.force(pm.HIB)\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n-- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n--pm.power(pm.USB, true)\n", "prefix": "pm.force"}, "pm.check": {"body": "pm.check()", "description": "pm.check() - \u68c0\u67e5\u4f11\u7720\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u5982\u679c\u80fd\u987a\u5229\u8fdb\u5165\u4f11\u7720,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,0\u4ee3\u8868\u80fd\u8fdb\u5165\u6700\u5e95\u5c42\u4f11\u7720,\u5176\u4ed6\u503c\u4ee3\u8868\u6700\u4f4e\u53ef\u4f11\u7720\u7ea7\u522b\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f,\u7136\u540e\u68c0\u67e5\u662f\u5426\u80fd\u771f\u7684\u4f11\u7720\npm.request(pm.HIB)\nif pm.check() then\n log.info(\"pm\", \"it is ok to hib\")\nelse\n -- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n pm.force(pm.HIB) -- \u5f3a\u5236\u4f11\u7720\n -- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n --sys.wait(100)\n --pm.power(pm.USB, true)\nend\n", "prefix": "pm.check"}, "pm.shutdown": {"body": "pm.shutdown()", "description": "pm.shutdown() - \u5173\u673a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5f53\u524d\u652f\u6301\u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\n-- \u9700\u89812022-12-22\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\npm.shutdown()\n", "prefix": "pm.shutdown"}, "pm.reboot": {"body": "pm.reboot()", "description": "pm.reboot() - \u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "pm.reboot"}, "pm.power": {"body": "pm.power(${1:id},${2:onoff})", "description": "pm.power(id, onoff) - \u5f00\u542f\u5185\u90e8\u7684\u7535\u6e90\u63a7\u5236\uff0c\u6ce8\u610f\u4e0d\u662f\u6240\u6709\u7684\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u53ef\u80fd\u90e8\u5206\u5e73\u53f0\u652f\u6301\u90e8\u5206\u9009\u9879\uff0c\u770b\u786c\u4ef6\n\u4f20\u5165\u503c\uff1a\nint \u7535\u6e90\u63a7\u5236id,pm.USB pm.GPS\u4e4b\u7c7b\nboolean or int \u5f00\u5173true/1\u5f00\uff0cfalse/0\u5173\uff0c\u9ed8\u8ba4\u5173\uff0c\u90e8\u5206\u9009\u9879\u652f\u6301\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\u7535\u6e90, \u53cd\u4e4b\u5f00\u542f\u5c31\u662f\u4f20true\npm.power(pm.USB, false) \n\n-- Air780EG,\u4e3a\u5185\u7f6e\u7684GPS\u82af\u7247\u4e0a\u7535. \u6ce8\u610f, Air780EG\u7684GPS\u548cGPS_ANT\u662f\u4e00\u8d77\u63a7\u5236\u7684,\u6240\u4ee5\u5408\u5e76\u4e86.\npm.power(pm.GPS, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u5f00\u542fpwrkey\u5f00\u673a\u9632\u6296\n-- \u6ce8\u610f: \u5f00\u542f\u540e, \u590d\u4f4d\u952e\u5c31\u53d8\u6210\u5173\u673a\u4e86!!! pwrkey\u8981\u957f\u63092\u79d2\u624d\u80fd\u5f00\u673a\n-- pm.power(pm.PWK_MODE, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)PSM+\u4f4e\u529f\u8017\u8bbe\u7f6e\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8282\u80fd\u6a21\u5f0f\uff0c0~3\uff0c0\u5b8c\u5168\u5173\u95ed\uff0c1\u6027\u80fd\u4f18\u5148\uff0c2\u5e73\u8861\uff0c3\u6781\u81f4\u529f\u8017\n-- \u8be6\u60c5\u8bbf\u95ee: https://airpsm.cn\n-- pm.power(pm.WORK_MODE, 1)\n", "prefix": "pm.power"}, "pm.ioVol": {"body": "pm.ioVol(${1:id},${2:val})", "description": "pm.ioVol(id, val) - IO\u9ad8\u7535\u5e73\u7535\u538b\u63a7\u5236\n\u4f20\u5165\u503c\uff1a\nint \u7535\u5e73id,\u76ee\u524d\u53ea\u6709pm.IOVOL_ALL_GPIO\nint \u7535\u5e73\u503c,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8bbe\u7f6eIO\u7535\u5e73, \u8303\u56f4 1650 ~ 2000\uff0c2650~3400 , \u5355\u4f4d\u6beb\u4f0f, \u6b65\u8fdb50mv\n-- \u6ce8\u610f, \u8fd9\u91cc\u7684\u8bbe\u7f6e\u4f18\u5148\u7ea7\u4f1a\u9ad8\u4e8e\u786c\u4ef6IOSEL\u811a\u7684\u914d\u7f6e\n-- \u4f46\u5f00\u673a\u65f6\u4f9d\u7136\u5148\u4f7f\u7528\u786c\u4ef6\u914d\u7f6e,\u76f4\u81f3\u8c03\u7528\u672cAPI\u8fdb\u884c\u914d\u7f6e, \u6240\u4ee5io\u7535\u5e73\u4f1a\u53d8\u5316\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa3.3V\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa1.8V\n", "prefix": "pm.ioVol"}, "pm.wakeupPin": {"body": "pm.wakeupPin(${1:pin},${2:level})", "description": "pm.wakeupPin(pin,level) - \u914d\u7f6e\u5524\u9192\u5f15\u811a (\u5f53\u524d\u4ec5\u4ec5esp\u7cfb\u5217\u53ef\u7528)\n\u4f20\u5165\u503c\uff1a\nint/table gpio\u5f15\u811a\nint \u5524\u9192\u7535\u538b \u53ef\u9009,\u9ed8\u8ba4\u4f4e\u7535\u5e73\u5524\u9192\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\npm.wakeupPin(8,0)\n", "prefix": "pm.wakeupPin"}, "protobuf.load": {"body": "protobuf.load(${1:pbdata})", "description": "protobuf.load(pbdata) - \u52a0\u8f7dpb\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u901a\u8fc7protoc.exe\u7a0b\u5e8f\u8f6c\u6362\u5f97\u5230\u7684\u6570\u636e,\u901a\u5e38\u4ece\u6587\u4ef6\u8bfb\u53d6\u5f97\u5230\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u8bfb\u53d6\u4e86\u591a\u957f, \u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u540c\u4e00\u4e2a\u6587\u4ef6\u53ea\u9700\u8981\u52a0\u8f7d\u4e00\u6b21, \u9664\u975e\u8c03\u7528\u8fc7protobuf.clear()\nprotobuf.load(io.readFile(\"/luadb/person.pb\"))\n", "prefix": "protobuf.load"}, "protobuf.clear": {"body": "protobuf.clear()", "description": "protobuf.clear() - \u6e05\u9664\u5df2\u52a0\u8f7d\u7684\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c, \u603b\u662f\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u6e05\u9664\u6240\u6709\u5df2\u52a0\u8f7d\u7684\u5b9a\u4e49\u6570\u636e\nprotobuf.clear()\n", "prefix": "protobuf.clear"}, "protobuf.encode": {"body": "protobuf.encode(${1:tpname},${2:data})", "description": "protobuf.encode(tpname, data) - \u7f16\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\ntable \u5f85\u7f16\u7801\u6570\u636e, \u5fc5\u987b\u662ftable, \u5185\u5bb9\u7b26\u5408pb\u6587\u4ef6\u91cc\u7684\u5b9a\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.encode"}, "protobuf.decode": {"body": "protobuf.decode(${1:tpname},${2:data})", "description": "protobuf.decode(tpname, data) - \u89e3\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\nstring \u5f85\u7f16\u7801\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\ntable \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.decode"}, "pwm.open": {"body": "pwm.open(${1:channel},${2:period},${3:pulse},${4:pnum},${5:precision})", "description": "pwm.open(channel, period, pulse, pnum, precision) - \u5f00\u542f\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u9891\u7387, 1-1000000hz\nint \u5360\u7a7a\u6bd4 0-\u5206\u9891\u7cbe\u5ea6\nint \u8f93\u51fa\u5468\u671f 0\u4e3a\u6301\u7eed\u8f93\u51fa, 1\u4e3a\u5355\u6b21\u8f93\u51fa, \u5176\u4ed6\u4e3a\u6307\u5b9a\u8109\u51b2\u6570\u8f93\u51fa\nint \u5206\u9891\u7cbe\u5ea6, 100/256/1000, \u9ed8\u8ba4\u4e3a100, \u82e5\u8bbe\u5907\u4e0d\u652f\u6301\u4f1a\u6709\u65e5\u5fd7\u63d0\u793a\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00PWM5, \u9891\u73871kHz, \u5360\u7a7a\u6bd450%\npwm.open(5, 1000, 50)\n-- \u6253\u5f00PWM5, \u9891\u738710kHz, \u5206\u9891\u4e3a 31/256\npwm.open(5, 10000, 31, 0, 256)\n", "prefix": "pwm.open"}, "pwm.close": {"body": "pwm.close(${1:channel})", "description": "pwm.close(channel) - \u5173\u95ed\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edPWM5\npwm.close(5)\n", "prefix": "pwm.close"}, "pwm.capture": {"body": "pwm.capture(${1:channel})", "description": "pwm.capture(channel) - PWM\u6355\u83b7\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u6355\u83b7\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- PWM0\u6355\u83b7\nwhile 1 do\n pwm.capture(0,1000)\n local ret,channel,pulse,pwmH,pwmL = sys.waitUntil(\"PWM_CAPTURE\", 2000)\n if ret then\n log.info(\"PWM_CAPTURE\",\"channel\"..channel,\"pulse\"..pulse,\"pwmH\"..pwmH,\"pwmL\"..pwmL)\n end\nend\n", "prefix": "pwm.capture"}, "repl.enable": {"body": "repl.enable(${1:re})", "description": "repl.enable(re) - \u542f\u7528\u6216\u7981\u7528REPL\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u542f\u7528\u4e0e\u5426,\u9ed8\u8ba4\u662f\u542f\u7528\nreturn \u4e4b\u524d\u7684\u8bbe\u7f6e\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u82e5\u56fa\u4ef6\u652f\u6301REPL,\u5373\u7f16\u8bd1\u65f6\u542f\u7528\u4e86REPL,\u662f\u9ed8\u8ba4\u542f\u7528REPL\u529f\u80fd\u7684\n-- \u672c\u51fd\u6570\u662f\u63d0\u4f9b\u5173\u95edREPL\u7684\u9014\u5f84\nrepl.enable(false)\n", "prefix": "repl.enable"}, "repl.push": {"body": "repl.push(${1:data})", "description": "repl.push(data) - \u4e3b\u52a8\u63a8\u9001\u5f85\u5904\u7406\u7684\u6570\u636e\u5230\u5e95\u5c42\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u5904\u7406\u7684\u6570\u636e,\u901a\u5e38\u4ece\u4e32\u53e3\u6765\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u865a\u62df\u4e32\u53e3\u7684\u8bbe\u5907\u624d\u9700\u8981\u8fd9\u4e2a\u51fd\u6570\n", "prefix": "repl.push"}, "rsa.encrypt": {"body": "rsa.encrypt(${1:key},${2:data})", "description": "rsa.encrypt(key, data) - RSA\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u52a0\u5bc6\u6570\u636e, \u4e0d\u80fd\u8d85\u8fc7\u516c\u94a5\u4f4d\u6570\u7684\u4e00\u534a, \u4f8b\u5982 2048bit\u7684\u516c\u94a5, \u53ea\u80fd\u52a0\u5bc6128\u5b57\u8282\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u4e0b\u9762\u4ee3\u7801\u4e2d\u7684 \"abc\" \u662f\u5f85\u52a0\u5bc6\u6570\u636e\nlocal res = rsa.encrypt((io.readFile(\"/luadb/public.pem\")), \"abc\")\n-- \u6253\u5370\u7ed3\u679c\nlog.info(\"rsa\", \"encrypt\", res and #res or 0, res and res:toHex() or \"\")\n", "prefix": "rsa.encrypt"}, "rsa.decrypt": {"body": "rsa.decrypt(${1:key},${2:data},${3:pwd})", "description": "rsa.decrypt(key, data, pwd) - RSA\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u89e3\u5bc6\u6570\u636e\nstring \u79c1\u94a5\u7684\u5bc6\u7801,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u89e3\u5bc6\u901a\u5e38\u5f88\u6162, \u5efa\u8bae\u5728\u670d\u52a1\u5668\u7aef\u8fdb\u884c\n-- res \u662f\u5f85\u89e3\u5bc6\u7684\u6570\u636e\nlocal dst = rsa.decrypt((io.readFile(\"/luadb/privkey.pem\")), res, \"\")\nlog.info(\"rsa\", \"decrypt\", dst and #dst or 0, dst and dst:toHex() or \"\")\n", "prefix": "rsa.decrypt"}, "rsa.verify": {"body": "rsa.verify(${1:key},${2:md},${3:hash},${4:sig})", "description": "rsa.verify(key, md, hash, sig) - RSA\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring sig\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u6709\u6548\u8fd4\u56detrue,\u5426\u5219\u4e3afalse,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal ret = rsa.verify((io.readFile(\"/luadb/public.pem\")), rsa.MD_SHA1, hash, sig)\nlog.info(\"rsa\", \"verify\", ret)\n", "prefix": "rsa.verify"}, "rsa.sign": {"body": "rsa.sign(${1:key},${2:md},${3:hash},${4:pwd})", "description": "rsa.sign(key, md, hash, pwd) - RSA\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring \u79c1\u94a5\u5bc6\u7801, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56desig\u6570\u636e, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sig = rsa.sign((io.readFile(\"/luadb/privkey.pem\")), rsa.MD_SHA1, hash, \"\")\nlog.info(\"rsa\", \"sign\", sig and #sig or 0, sig and sig:toHex() or \"\")\n", "prefix": "rsa.sign"}, "rtc.set": {"body": "rtc.set(${1:tab})", "description": "rtc.set(tab) - \u8bbe\u7f6e\u65f6\u949f\n\u4f20\u5165\u503c\uff1a\ntable or int \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.set({year=2021,mon=8,day=31,hour=17,min=8,sec=43})\n--\u76ee\u524d\u53ea\u6709Air101/Air103/Air105/EC618\u7cfb\u5217\u652f\u6301\u65f6\u95f4\u6233\u65b9\u5f0f\nrtc.set(1652230554)\n", "prefix": "rtc.set"}, "rtc.get": {"body": "rtc.get()", "description": "rtc.get() - \u83b7\u53d6\u65f6\u949f\n\u8fd4\u56de\u503c\uff1a\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u4f8b\u5b50\uff1a\nlocal t = rtc.get()\n-- {year=2021,mon=8,day=31,hour=17,min=8,sec=43}\nlog.info(\"rtc\", json.encode(t))\n", "prefix": "rtc.get"}, "rtc.timerStart": {"body": "rtc.timerStart(${1:id},${2:tab})", "description": "rtc.timerStart(id, tab) - \u8bbe\u7f6eRTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\n-- \u76ee\u524d\u8be5\u63a5\u53e3\u4e0d\u9002\u7528\u4e8e\u79fb\u82af\u6a21\u5757780E/700E/780EP\u7cfb\u5217\uff0c\u9700\u8981\u5b9a\u65f6\u5524\u9192\u53ef\u4f7f\u7528pm.dtimerStart()\n-- \u4f7f\u7528\u524d\u5efa\u8bae\u5148rtc.set\u8bbe\u7f6e\u4e3a\u6b63\u786e\u7684\u65f6\u95f4\nrtc.timerStart(0, {year=2021,mon=9,day=1,hour=17,min=8,sec=43})\n", "prefix": "rtc.timerStart"}, "rtc.timerStop": {"body": "rtc.timerStop(${1:id})", "description": "rtc.timerStop(id) - \u53d6\u6d88RTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.timerStop(0)\n", "prefix": "rtc.timerStop"}, "rtc.setBaseYear": {"body": "rtc.setBaseYear(${1:Base_year})", "description": "rtc.setBaseYear(Base_year) - \u8bbe\u7f6eRTC\u57fa\u51c6\u5e74,\u4e0d\u63a8\u8350\n\u4f20\u5165\u503c\uff1a\nint \u57fa\u51c6\u5e74Base_year,\u901a\u5e381900\n\u4f8b\u5b50\uff1a\nrtc.setBaseYear(1900)\n", "prefix": "rtc.setBaseYear"}, "rtc.timezone": {"body": "rtc.timezone(${1:tz})", "description": "rtc.timezone(tz) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u65f6\u533a\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u533a\u503c,\u6ce8\u610f\u5355\u4f4d\u662f1/4\u65f6\u533a.\u4f8b\u5982\u4e1c\u516b\u533a\u662f 32,\u800c\u975e8. \u53ef\u4ee5\u4e0d\u4f20\nreturn \u5f53\u524d/\u8bbe\u7f6e\u540e\u7684\u65f6\u533a\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e1c8\u533a\nrtc.timezone(32)\n-- \u8bbe\u7f6e\u4e3a\u4e1c3\u533a\nrtc.timezone(12)\n-- \u8bbe\u7f6e\u4e3a\u897f4\u533a\nrtc.timezone(-16)\n-- \u6ce8\u610f: \u65e0\u8bba\u8bbe\u7f6e\u65f6\u533a\u662f\u591a\u5c11, rtc.get/set\u603b\u662fUTC\u65f6\u95f4\n-- \u65f6\u533a\u5f71\u54cd\u7684\u662f os.date/os.time \u51fd\u6570\n-- \u53ea\u6709\u90e8\u5206\u6a21\u5757\u652f\u6301\u8bbe\u7f6e\u65f6\u533a, \u4e14\u9ed8\u8ba4\u503c\u4e00\u822c\u4e3a32, \u5373\u4e1c\u516b\u533a\n", "prefix": "rtc.timezone"}, "rtos.receive": {"body": "rtos.receive(${1:timeout})", "description": "rtos.receive(timeout) - \u63a5\u53d7\u5e76\u5904\u7406\u5e95\u5c42\u6d88\u606f\u961f\u5217.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u901a\u5e38\u662f-1,\u6c38\u4e45\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\nmsgid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n", "prefix": "rtos.receive"}, "rtos.timer_start": {"body": "rtos.timer_start(${1:id},${2:timeout},${3:_repeat})", "description": "rtos.timer_start(id,timeout,_repeat) - \u542f\u52a8\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528 sys.timerStart\n-- \u542f\u52a8\u4e00\u4e2a3\u79d2\u7684\u5faa\u73af\u5b9a\u65f6\u5668\nrtos.timer_start(10000, 3000, -1)\n", "prefix": "rtos.timer_start"}, "rtos.timer_stop": {"body": "rtos.timer_stop(${1:id})", "description": "rtos.timer_stop(id) - \u5173\u95ed\u5e76\u91ca\u653e\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528sys.timerStop\nrtos.timer_stop(id)\n", "prefix": "rtos.timer_stop"}, "rtos.reboot": {"body": "rtos.reboot()", "description": "rtos.reboot() - \u8bbe\u5907\u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "rtos.reboot"}, "rtos.buildDate": {"body": "rtos.buildDate()", "description": "rtos.buildDate() - \u83b7\u53d6\u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u7f16\u8bd1\u65e5\u671f\nlocal d = rtos.buildDate()\n", "prefix": "rtos.buildDate"}, "rtos.bsp": {"body": "rtos.bsp()", "description": "rtos.bsp() - \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u786c\u4ef6bsp\u578b\u53f7\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\nlocal bsp = rtos.bsp()\n", "prefix": "rtos.bsp"}, "rtos.version": {"body": "rtos.version()", "description": "rtos.version() - \u83b7\u53d6\u56fa\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7248\u672c\u53f7,\u4f8b\u5982\"V0001\"\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u7248\u672c\u53f7\nlocal luatos_version = rtos.version()\n", "prefix": "rtos.version"}, "rtos.standy": {"body": "rtos.standy(${1:timeout})", "description": "rtos.standy(timeout) - \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f, \u4ec5\u90e8\u5206\u8bbe\u5907\u53ef\u7528, \u672cAPI\u5df2\u5e9f\u5f03, \u63a8\u8350\u4f7f\u7528pm\u5e93\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f\nrtos.standby(5000)\n", "prefix": "rtos.standy"}, "rtos.meminfo": {"body": "rtos.meminfo(${1:type})", "description": "rtos.meminfo(type) - \u83b7\u53d6\u5185\u5b58\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\ntype \"sys\"\u7cfb\u7edf\u5185\u5b58, \"lua\"\u865a\u62df\u673a\u5185\u5b58,\"psram\"psram\u5185\u5b58, \u9ed8\u8ba4\u4e3alua\u865a\u62df\u673a\u5185\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u603b\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5f53\u524d\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5386\u53f2\u6700\u9ad8\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5185\u5b58\u5360\u7528\nlog.info(\"mem.lua\", rtos.meminfo())\nlog.info(\"mem.sys\", rtos.meminfo(\"sys\"))\n", "prefix": "rtos.meminfo"}, "rtos.firmware": {"body": "rtos.firmware()", "description": "rtos.firmware() - \u8fd4\u56de\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f,\u683c\u5f0f\u4e3a LuatOS_$VERSION_$BSP,\u53ef\u7528\u4e8eOTA\u5347\u7ea7\u5224\u65ad\u5e95\u5c42\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nstring \u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\nlog.info(\"firmware\", rtos.firmware())\n", "prefix": "rtos.firmware"}, "rtos.setPaths": {"body": "rtos.setPaths(${1:pathA},${2:pathB},${3:pathC},${4:pathD})", "description": "rtos.setPaths(pathA, pathB, pathC, pathD) - \u8bbe\u7f6e\u81ea\u5b9a\u4e49lua\u811a\u672c\u641c\u7d22\u8def\u5f84,\u4f18\u5148\u7ea7\u9ad8\u4e8e\u5185\u7f6e\u8def\u5f84\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84A, \u4f8b\u5982 \"/sdcard/%s.luac\",\u82e5\u4e0d\u4f20\u503c,\u5c06\u9ed8\u8ba4\u4e3a\"\",\u53e6\u5916,\u6700\u5927\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc723\u5b57\u8282\nstring \u8def\u5f84B, \u4f8b\u5982 \"/sdcard/%s.lua\"\nstring \u8def\u5f84C, \u4f8b\u5982 \"/lfs2/%s.luac\"\nstring \u8def\u5f84D, \u4f8b\u5982 \"/lfs2/%s.lua\"\n\u4f8b\u5b50\uff1a\n-- \u6302\u8f7dsd\u5361\u6216\u8005spiflash\u540e\nrtos.setPaths(\"/sdcard/user/%s.luac\", \"/sdcard/user/%s.lua\")\nrequire(\"sd_user_main\") -- \u5c06\u641c\u7d22\u5e76\u52a0\u8f7d /sdcard/user/sd_user_main.luac \u548c /sdcard/user/sd_user_main.lua\n", "prefix": "rtos.setPaths"}, "rtos.nop": {"body": "rtos.nop()", "description": "rtos.nop() - \u7a7a\u51fd\u6570,\u4ec0\u4e48\u90fd\u4e0d\u505a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fd9\u4e2a\u51fd\u6570\u5355\u7eaf\u5c31\u662f lua -> c -> lua \u8d70\u4e00\u904d\n-- \u6ca1\u6709\u53c2\u6570,\u6ca1\u6709\u8fd4\u56de\u503c,\u6ca1\u6709\u903b\u8f91\u5904\u7406\n-- \u5728\u7edd\u5927\u591a\u6570\u60c5\u51b5\u4e0b,\u4e0d\u4f1a\u9047\u5230\u8fd9\u4e2a\u51fd\u6570\u7684\u8c03\u7528\n-- \u5b83\u901a\u5e38\u53ea\u4f1a\u51fa\u73b0\u5728\u6027\u80fd\u6d4b\u8bd5\u7684\u4ee3\u7801\u91cc, \u56e0\u4e3a\u5b83\u4ec0\u4e48\u90fd\u4e0d\u5e72.\nrtos.nop()\n", "prefix": "rtos.nop"}, "rtos.autoCollectMem": {"body": "rtos.autoCollectMem(${1:period},${2:warning_level},${3:force_level})", "description": "rtos.autoCollectMem(period, warning_level, force_level) - \u5185\u5b58\u81ea\u52a8\u6536\u96c6\u914d\u7f6e\uff0c\u662flua\u672c\u8eab\u6536\u96c6\u673a\u5236\u7684\u4e00\u79cd\u8865\u5145\uff0c\u4e0d\u662f\u5fc5\u8981\u7684\uff0c\u800c\u4e14\u53ea\u5728luavm\u7a7a\u95f2\u65f6\u89e6\u53d1\n\u4f20\u5165\u503c\uff1a\nint \u81ea\u52a8\u6536\u96c6\u7684\u5468\u671f\uff0c\u7b49\u540c\u4e8ereceive\u8c03\u7528\u6b21\u6570\uff0c0~60000\u3002\u5982\u679c\u662f0\uff0c\u5219\u5173\u95ed\u81ea\u52a8\u6536\u96c6\u529f\u80fd\uff0c\u9ed8\u8ba4\u662f100\nint \u5185\u5b58\u4f7f\u7528\u8b66\u6212\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u8b66\u6212\u7ebf\u65f6\u624d\u4f1a\u5f00\u59cb\u5224\u65ad\u662f\u5426\u8981\u6536\u96c6\u3002\u9ed8\u8ba4\u662f80\nint \u5185\u5b58\u4f7f\u7528\u5f3a\u5236\u6536\u96c6\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u5f3a\u5236\u6536\u96c6\u7ebf\u65f6\u4f1a\u5f3a\u5236\u6536\u96c6\u3002\u9ed8\u8ba4\u662f90\uff0c\u5fc5\u987b\u6bd4\u8b66\u6212\u6c34\u4f4d\u7ebf\u5927\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nrtos.autoCollectMem(100, 80, 90)\n", "prefix": "rtos.autoCollectMem"}, "sdio.init": {"body": "sdio.init(${1:id})", "description": "sdio.init(id) - \u521d\u59cb\u5316sdio\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n", "prefix": "sdio.init"}, "sdio.sd_read": {"body": "sdio.sd_read(${1:id},${2:offset},${3:len})", "description": "sdio.sd_read(id, offset, len) - \u76f4\u63a5\u8bfb\u5199sd\u5361\u4e0a\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u957f\u5ea6,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_read(0, 0, 1024)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_read"}, "sdio.sd_write": {"body": "sdio.sd_write(${1:id},${2:data},${3:offset})", "description": "sdio.sd_write(id, data, offset) - \u76f4\u63a5\u5199sd\u5361\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nstring \u5f85\u5199\u5165\u7684\u6570\u636e,\u957f\u5ea6\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_write(0, data, 0)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_write"}, "sensor.ds18b20": {"body": "sensor.ds18b20(${1:pin},${2:check_crc})", "description": "sensor.ds18b20(pin, check_crc) - \u83b7\u53d6DS18B20\u7684\u6e29\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u7801\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(5000)\n local val,result = sensor.ds18b20(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n -- val 301 == 30.1\u6444\u6c0f\u5ea6\n -- result true \u8bfb\u53d6\u6210\u529f\n log.info(\"ds18b20\", val, result)\nend\n", "prefix": "sensor.ds18b20"}, "sensor.w1_reset": {"body": "sensor.w1_reset(${1:pin})", "description": "sensor.w1_reset(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u590d\u4f4d\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\n", "prefix": "sensor.w1_reset"}, "sensor.w1_connect": {"body": "sensor.w1_connect(${1:pin})", "description": "sensor.w1_connect(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u8fde\u63a5\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n", "prefix": "sensor.w1_connect"}, "sensor.w1_write": {"body": "sensor.w1_write(${1:pin},${2:data1},${3:data2})", "description": "sensor.w1_write(pin, data1,data2) - \u5355\u603b\u7ebf\u534f\u8bae,\u5f80\u603b\u7ebf\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u7b2c\u4e00\u4e2a\u6570\u636e\nint \u7b2c\u4e8c\u4e2a\u6570\u636e, \u53ef\u4ee5\u5199N\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "sensor.w1_write"}, "sensor.w1_read": {"body": "sensor.w1_read(${1:pin},${2:len})", "description": "sensor.w1_read(pin, len) - \u5355\u603b\u7ebf\u534f\u8bae,\u4ece\u603b\u7ebf\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u8bfb\u53d6\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u6309\u8bfb\u53d6\u7684\u957f\u5ea6\u8fd4\u56deN\u4e2a\u6574\u6570\n", "prefix": "sensor.w1_read"}, "sensor.hx711": {"body": "sensor.hx711(${1:pin_date},${2:pin_clk})", "description": "sensor.hx711(pin_date,pin_clk) - \u83b7\u53d6Hx711\u7684\u538b\u529b\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint hx711\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local maopi = sensor.hx711(0,7)\n while true do\n sys.wait(2000)\n a = sensor.hx711(0,7) - maopi\n if a > 0 then\n log.info(\"tag\", a / 4.6)\n end\n end\n end\n)\n", "prefix": "sensor.hx711"}, "sensor.cs1237": {"body": "sensor.cs1237(${1:pin_date},${2:pin_clk})", "description": "sensor.cs1237(pin_date,pin_clk) - \u83b7\u53d6cs1237\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint cs1237\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local cs1237_data = sensor.cs1237(0,7)\n while true do\n sys.wait(2000)\n cs1237_data = sensor.cs1237(0,7) - maopi\n log.info(\"cs1237_data:\", cs1237_data)--\u5f97\u5230\u539f\u59cb\u6570\u636e\n end\n end\n)\n", "prefix": "sensor.cs1237"}, "sensor.ws2812b": {"body": "sensor.ws2812b(${1:pin},${2:data},${3:T0H},${4:T0L},${5:T1H},${6:T1L})", "description": "sensor.ws2812b(pin,data,T0H,T0L,T1H,T1L) - \u8bbe\u7f6ews2812b\u8f93\u51fa(gpio\u9a71\u52a8\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint ws2812b\u7684gpio\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\nint T0H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\uff0c\u6bcf\u4e2a\u578b\u53f7\u4e0d\u4e00\u6837\uff0c\u81ea\u5df1\u8c03\nint T0L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:drawLine(1,2,5,6,0x00ffff)\nsensor.ws2812b(7,buff,300,700,700,700)\n", "prefix": "sensor.ws2812b"}, "sensor.ws2812b_pwm": {"body": "sensor.ws2812b_pwm(${1:pin},${2:data})", "description": "sensor.ws2812b_pwm(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(pwm\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981pwm\u80fd\u8f93\u51fa800k\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint pwm\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_pwm(7,buff)\n", "prefix": "sensor.ws2812b_pwm"}, "sensor.ws2812b_spi": {"body": "sensor.ws2812b_spi(${1:pin},${2:data})", "description": "sensor.ws2812b_spi(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(spi\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981spi\u80fd\u8f93\u51fa5M\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint spi\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_spi(2,buff)\n", "prefix": "sensor.ws2812b_spi"}, "sensor.dht1x": {"body": "sensor.dht1x(${1:pin})", "description": "sensor.dht1x(pin) - \u83b7\u53d6DHT11/DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e7f\u5ea6\u6570\u636e,\u5355\u4f4d0.01%\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.01\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local h,t,r = sensor.dht1x(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n log.info(\"dht11\", h/100,t/100,r)--90.1 23.22\nend\n", "prefix": "sensor.dht1x"}, "sensor.sc12a": {"body": "sensor.sc12a(${1:sda},${2:scl})", "description": "sensor.sc12a(sda,scl) - \u83b7\u53d6sc12a\u88ab\u89e6\u6478\u7684\u901a\u9053\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u6574\u5f62\u6570\u636e\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\n\u4f8b\u5b50\uff1a\nwhile true do\n local temp1=sensor.sc12a(4,7)\n if bit.rshift(bit.band( temp1, 0x8000), 15 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90530\")\n end\n if bit.rshift(bit.band( temp1, 0x4000), 14 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90531\")\n end\n if bit.rshift(bit.band( temp1, 0x2000), 13 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90532\")\n end\n if bit.rshift(bit.band( temp1, 0x1000), 12 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90533\")\n end\n if bit.rshift(bit.band( temp1, 0x800), 11 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90534\")\n end\n if bit.rshift(bit.band( temp1, 0x400), 10 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90535\")\n end\n if bit.rshift(bit.band( temp1, 0x200), 9 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90536\")\n end\n if bit.rshift(bit.band( temp1, 0x100), 8 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90537\")\n end\n if bit.rshift(bit.band( temp1, 0x80), 7 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90538\")\n end\n if bit.rshift(bit.band( temp1, 0x40), 6 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90539\")\n end\n if bit.rshift(bit.band( temp1, 0x20), 5 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905310\")\n end\n if bit.rshift(bit.band( temp1, 0x10), 4 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905311\")\n end\n sys.wait(200)\nend\n", "prefix": "sensor.sc12a"}, "sensor.yhm27xxx": {"body": "sensor.yhm27xxx(${1:pin},${2:chip_id},${3:reg},${4:data})", "description": "sensor.yhm27xxx(pin, chip_id, reg, data) - \u5355\u603b\u7ebf\u547d\u4ee4\u8bfb\u5199YHM27XX\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u82af\u7247ID\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u8981\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u6ca1\u586b\uff0c\u5219\u8868\u793a\u4ece\u5bc4\u5b58\u5668\u8bfb\u53d6\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5bc4\u5b58\u5668\u503c\uff0c\u5199\u5165\u6210\u529f\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local result, data = sensor.yhm27xxx(15, 0x04, 0x05)\n log.info(\"yhm27xxx\", result, data)\nend\n", "prefix": "sensor.yhm27xxx"}, "sfd.init": {"body": "sfd.init(${1:type},${2:spi_id},${3:spi_cs})", "description": "sfd.init(type, spi_id, spi_cs) - \u521d\u59cb\u5316spi flash\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u53ef\u4ee5\u662f\"spi\", \u4e5f\u53ef\u4ee5\u662f\"zbuff\", \u6216\u8005\"onchip\"\nint SPI\u603b\u7ebf\u7684id, \u6216\u8005 zbuff\u5b9e\u4f8b\nint SPI FLASH\u7684\u7247\u9009\u811a\u5bf9\u5e94\u7684GPIO, \u5f53\u7c7b\u578b\u662fspi\u65f6\u624d\u9700\u8981\u4f20\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv):toHex())\nend\n-- 2023.01.15\u4e4b\u540e\u7684\u56fa\u4ef6\u652f\u6301onchip\u7c7b\u578b, \u652f\u6301\u76f4\u63a5\u8bfb\u5199\u7247\u4e0aflash\u7684\u4e00\u5c0f\u5757\u533a\u57df,\u4e00\u822c\u662f64k\n-- \u8fd9\u5757\u533a\u57df\u901a\u5e38\u662ffdb/fskv\u5e93\u6240\u5728\u7684\u533a\u57df, \u6240\u4ee5\u4e0d\u8981\u6df7\u7740\u7528\nlocal onchip = sfd.init(\"onchip\")\nlocal data = sfd.read(onchip, 0x100, 256)\nsfd.erase(onchip, 0x100)\nsfd.write(onchip, 0x100, data or \"Hi\")\n\n", "prefix": "sfd.init"}, "sfd.status": {"body": "sfd.status(${1:drv})", "description": "sfd.status(drv) - \u68c0\u67e5spi flash\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u503c, 0 \u672a\u521d\u59cb\u5316\u6210\u529f,1\u521d\u59cb\u5316\u6210\u529f\u4e14\u7a7a\u95f2,2\u6b63\u5fd9\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"status\", sfd.status(drv))\nend\n", "prefix": "sfd.status"}, "sfd.read": {"body": "sfd.read(${1:drv},${2:offset},${3:len})", "description": "sfd.read(drv, offset, len) - \u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6,\u5f53\u524d\u9650\u5236\u5728256\u4ee5\u5185\n\u8fd4\u56de\u503c\uff1a\nstring \u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"read\", sfd.read(drv, 0x100, 256))\nend\n", "prefix": "sfd.read"}, "sfd.write": {"body": "sfd.write(${1:drv},${2:offset},${3:data})", "description": "sfd.write(drv, offset, data) - \u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nstring \u9700\u8981\u5199\u5165\u7684\u6570\u636e,\u5f53\u524d\u652f\u6301256\u5b57\u8282\u53ca\u4ee5\u4e0b\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.write(drv, 0x100, \"hi,luatos\"))\nend\n", "prefix": "sfd.write"}, "sfd.erase": {"body": "sfd.erase(${1:drv},${2:offset})", "description": "sfd.erase(drv, offset) - \u64e6\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.erase(drv, 0x100))\nend\n", "prefix": "sfd.erase"}, "sfd.id": {"body": "sfd.id(${1:drv})", "description": "sfd.id(drv) - \u82af\u7247\u552f\u4e00id\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nstring 8\u5b57\u8282(64bit)\u7684\u82af\u7247id\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv))\nend\n", "prefix": "sfd.id"}, "sfud.init": {"body": "sfud.init(${1:spi_id},${2:spi_cs},${3:spi_bandrate)/sfud.init(spi_device})", "description": "sfud.init(spi_id, spi_cs, spi_bandrate)/sfud.init(spi_device) - \u521d\u59cb\u5316sfud\n\u4f20\u5165\u503c\uff1a\nint spi_id SPI\u7684ID/userdata spi_device\nint spi_cs SPI\u7684\u7247\u9009\nint spi_bandrate SPI\u7684\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--spi\nlog.info(\"sfud.init\",sfud.init(0,20,20 * 1000 * 1000))\n--spi_device\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"sfud.init\",sfud.init(spi_device))\n", "prefix": "sfud.init"}, "sfud.getDeviceNum": {"body": "sfud.getDeviceNum()", "description": "sfud.getDeviceNum() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\u4e2d\u7684\u8bbe\u5907\u603b\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bbe\u5907\u603b\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getDeviceNum\",sfud.getDeviceNum())\n", "prefix": "sfud.getDeviceNum"}, "sfud.getDevice": {"body": "sfud.getDevice(${1:index})", "description": "sfud.getDevice(index) - \u901a\u8fc7flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\u83b7\u53d6flash\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint index flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDevice(1)\n", "prefix": "sfud.getDevice"}, "sfud.getDeviceTable": {"body": "sfud.getDeviceTable()", "description": "sfud.getDeviceTable() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDeviceTable()\n", "prefix": "sfud.getDeviceTable"}, "sfud.chipErase": {"body": "sfud.chipErase(${1:flash})", "description": "sfud.chipErase(flash) - \u64e6\u9664 Flash \u5168\u90e8\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.chipErase(flash)\n", "prefix": "sfud.chipErase"}, "sfud.erase": {"body": "sfud.erase(${1:flash},${2:add},${3:size})", "description": "sfud.erase(flash,add,size) - \u64e6\u9664 Flash \u6307\u5b9a\u5730\u5740\u6307\u5b9a\u5927\u5c0f\uff0c\u6309\u7167flash block\u5927\u5c0f\u8fdb\u884c\u64e6\u9664\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nnumber add \u64e6\u9664\u5730\u5740\nnumber size \u64e6\u9664\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.erase(flash,add,size)\n", "prefix": "sfud.erase"}, "sfud.read": {"body": "sfud.read(${1:flash},${2:addr},${3:size})", "description": "sfud.read(flash, addr, size) - \u8bfb\u53d6 Flash \u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nint size \u4ece\u8d77\u59cb\u5730\u5740\u5f00\u59cb\u8bfb\u53d6\u6570\u636e\u7684\u603b\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nstring data \u8bfb\u53d6\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.read\",sfud.read(sfud_device,1024,4))\n", "prefix": "sfud.read"}, "sfud.write": {"body": "sfud.write(${1:flash},${2:addr},${3:data})", "description": "sfud.write(flash, addr,data) - \u5411 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.write\",sfud.write(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.write"}, "sfud.eraseWrite": {"body": "sfud.eraseWrite(${1:flash},${2:addr},${3:data})", "description": "sfud.eraseWrite(flash, addr,data) - \u5148\u64e6\u9664\u518d\u5f80 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.eraseWrite\",sfud.eraseWrite(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.eraseWrite"}, "sfud.getInfo": {"body": "sfud.getInfo(${1:flash})", "description": "sfud.getInfo(flash) - \u83b7\u53d6 Flash \u5bb9\u91cf\u548cpage\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint Flash \u5bb9\u91cf\nint page \u9875\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getInfo\",sfud.getInfo(sfud_device))\n", "prefix": "sfud.getInfo"}, "sfud.mount": {"body": "sfud.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "sfud.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7dsfud lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.mount\",sfud.mount(sfud_device,\"/sfud\"))\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\nlog.info(\"fsstat\", fs.fsstat(\"/sfud\"))\n", "prefix": "sfud.mount"}, "sms.send": {"body": "sms.send(${1:phone},${2:msg},${3:auto_phone_fix})", "description": "sms.send(phone, msg, auto_phone_fix) - \u53d1\u9001\u77ed\u4fe1\n\u4f20\u5165\u503c\uff1a\nstring \u7535\u8bdd\u53f7\u7801,\u5fc5\u586b\nstring \u77ed\u4fe1\u5185\u5bb9,\u5fc5\u586b\nbool \u662f\u5426\u81ea\u52a8\u5904\u7406\u7535\u8bdd\u53f7\u53f7\u7801\u7684\u683c\u5f0f,\u9ed8\u8ba4\u662f\u6309\u77ed\u4fe1\u5185\u5bb9\u548c\u53f7\u7801\u683c\u5f0f\u8fdb\u884c\u81ea\u52a8\u5224\u65ad, \u8bbe\u7f6e\u4e3afalse\u53ef\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\u6216nil\n", "prefix": "sms.send"}, "sms.setNewSmsCb": {"body": "sms.setNewSmsCb(${1:func})", "description": "sms.setNewSmsCb(func) - \u8bbe\u7f6e\u65b0SMS\u7684\u56de\u8c03\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nfunction \u56de\u8c03\u51fd\u6570, 3\u4e2a\u53c2\u6570, num, txt, metas\n\u8fd4\u56de\u503c\uff1a\nnil \u4f20\u5165\u662f\u51fd\u6570\u5c31\u80fd\u6210\u529f,\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\nsms.setNewSmsCb(function(num, txt, metas)\n -- num \u624b\u673a\u53f7\u7801\n -- txt \u6587\u672c\u5185\u5bb9\n -- metas \u77ed\u4fe1\u7684\u5143\u6570\u636e,\u4f8b\u5982\u53d1\u9001\u7684\u65f6\u95f4,\u957f\u77ed\u4fe1\u7f16\u53f7\n -- \u6ce8\u610f, \u957f\u77ed\u4fe1\u4f1a\u81ea\u52a8\u5408\u5e76\u6210\u4e00\u6761txt\n log.info(\"sms\", num, txt, metas and json.encode(metas) or \"\")\nend)\n", "prefix": "sms.setNewSmsCb"}, "sms.autoLong": {"body": "sms.autoLong(${1:mode})", "description": "sms.autoLong(mode) - \u8bbe\u7f6e\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5408\u5e76,true\u4e3a\u81ea\u52a8\u5408\u5e76,\u4e3a\u9ed8\u8ba4\u503c\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u540e\u7684\u503c\n\u4f8b\u5b50\uff1a\n-- \u7981\u7528\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76, \u4e00\u822c\u4e0d\u9700\u8981\u7981\u7528\nsms.autoLong(false)\n", "prefix": "sms.autoLong"}, "sms.clearLong": {"body": "sms.clearLong()", "description": "sms.clearLong() - \u6e05\u9664\u957f\u77ed\u4fe1\u7f13\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u6e05\u7406\u6389\u7684\u7247\u6bb5\u6570\u91cf\n\u4f8b\u5b50\uff1a\nsms.clearLong()\n", "prefix": "sms.clearLong"}, "socket.sntp": {"body": "socket.sntp(${1:sntp_server})", "description": "socket.sntp(sntp_server) - sntp\u65f6\u95f4\u540c\u6b65\n\u4f20\u5165\u503c\uff1a\nstring/table sntp\u670d\u52a1\u5668\u5730\u5740 \u9009\u586b\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u4f8b\u5b50\uff1a\nsocket.sntp()\n--socket.sntp(\"ntp.aliyun.com\") --\u81ea\u5b9a\u4e49sntp\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp({\"ntp.aliyun.com\",\"ntp1.aliyun.com\",\"ntp2.aliyun.com\"}) --sntp\u81ea\u5b9a\u4e49\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp(nil, socket.ETH0) --sntp\u81ea\u5b9a\u4e49\u9002\u914d\u5668\u5e8f\u53f7\nsys.subscribe(\"NTP_UPDATE\", function()\n log.info(\"sntp\", \"time\", os.date())\nend)\nsys.subscribe(\"NTP_ERROR\", function()\n log.info(\"socket\", \"sntp error\")\n socket.sntp()\nend)\n", "prefix": "socket.sntp"}, "socket.ntptm": {"body": "socket.ntptm()", "description": "socket.ntptm() - \u7f51\u7edc\u5bf9\u65f6\u540e\u7684\u65f6\u95f4\u6233(ms\u7ea7\u522b)\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u65f6\u95f4\u4fe1\u606f\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.11.15 \u65b0\u589e\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u5728\u6267\u884csocket.sntp()\u4e14\u83b7\u53d6\u5230NTP\u65f6\u95f4\u540e\u624d\u6709\u6548\n-- \u800c\u4e14\u662f2\u6b21sntp\u4e4b\u540e\u624d\u662f\u6bd4\u8f83\u51c6\u786e\u7684\u503c\n-- \u7f51\u7edc\u6ce2\u52a8\u8d8a\u5c0f, \u8be5\u65f6\u95f4\u6233\u8d8a\u7a33\u5b9a\nlocal tm = socket.ntptm()\n\n-- \u5bf9\u5e94\u7684table\u5305\u542b\u591a\u4e2a\u6570\u636e, \u5747\u4e3a\u6574\u6570\u503c\n\n-- \u6807\u51c6\u6570\u636e\n-- tsec \u5f53\u524d\u79d2\u6570,\u4ece1900.1.1 0:0:0 \u5f00\u59cb\u7b97, UTC\u65f6\u95f4\n-- tms \u5f53\u524d\u6beb\u79d2\u6570\n-- vaild \u662f\u5426\u6709\u6548, true \u6216\u8005 nil\n\n-- \u8c03\u8bd5\u6570\u636e, \u8c03\u8bd5\u7528,\u4e00\u822c\u7528\u6237\u4e0d\u7528\u7ba1\n-- ndelay \u7f51\u7edc\u5ef6\u65f6\u5e73\u5747\u503c,\u5355\u4f4d\u6beb\u79d2\n-- ssec \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u79d2\u6570\u504f\u79fb\u91cf\n-- sms \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u6beb\u79d2\u504f\u79fb\u91cf\n-- lsec \u672c\u5730\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n-- lms \u672c\u5730\u6beb\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n\nlog.info(\"tm\u6570\u636e\", json.encode(tm))\nlog.info(\"\u65f6\u95f4\u6233\", string.format(\"%u.%03d\", tm.tsec, tm.tms))\n", "prefix": "socket.ntptm"}, "socket.sntp_port": {"body": "socket.sntp_port(${1:port})", "description": "socket.sntp_port(port) - \u8bbe\u7f6eSNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\n\u4f20\u5165\u503c\uff1a\nint port \u7aef\u53e3\u53f7, \u9ed8\u8ba4123\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u7684\u7aef\u53e3\u53f7\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u4e0d\u9700\u8981\u8bbe\u7f6eNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7,\u9ed8\u8ba4123\u5373\u53ef\n", "prefix": "socket.sntp_port"}, "socket.localIP": {"body": "socket.localIP(${1:adapter})", "description": "socket.localIP(adapter) - \u83b7\u53d6\u672c\u5730ip\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u8fd4\u56de\u503c\uff1a\nstring \u901a\u5e38\u662f\u5185\u7f51ip, \u4e5f\u53ef\u80fd\u662f\u5916\u7f51ip, \u53d6\u51b3\u4e8e\u8fd0\u8425\u5546\u7684\u5206\u914d\nstring \u7f51\u7edc\u63a9\u7801\nstring \u7f51\u5173IP\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n log.info(\"socket\", \"ip\", socket.localIP())\n -- \u8f93\u51fa\u793a\u4f8b\n -- 62.39.244.10 255.255.255.255 0.0.0.0\n end\nend)\n", "prefix": "socket.localIP"}, "socket.create": {"body": "socket.create(${1:adapter},${2:cb})", "description": "socket.create(adapter, cb) - \u5728\u67d0\u4e2a\u9002\u914d\u7684\u7f51\u5361\u4e0a\u7533\u8bf7\u4e00\u4e2asocket_ctrl\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring or function string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u5982\u679c\u56fa\u4ef6\u6ca1\u6709\u5185\u7f6esys_wait\uff0c\u5219\u5fc5\u987b\u662ffunction\n", "prefix": "socket.create"}, "socket.debug": {"body": "socket.debug(${1:ctrl},${2:onoff})", "description": "socket.debug(ctrl, onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nboolean true \u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u9ed8\u8ba4\u662f\u5173\u95ed\u72b6\u6001\nsocket.debug(ctrl, true)\n", "prefix": "socket.debug"}, "socket.config": {"body": "socket.config(${1:ctrl},${2:local_port},${3:is_udp},${4:is_tls},${5:keep_idle},${6:keep_interval},${7:keep_cnt},${8:server_cert},${9:client_cert},${10:client_key},${11:client_password})", "description": "socket.config(ctrl, local_port, is_udp, is_tls, keep_idle, keep_interval, keep_cnt, server_cert, client_cert, client_key, client_password) - \u914d\u7f6enetwork\u4e00\u4e9b\u4fe1\u606f\uff0c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nint \u672c\u5730\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5219\u81ea\u52a8\u5206\u914d\u4e00\u4e2a\uff0c\u5982\u679c\u7528\u6237\u586b\u4e86\u7aef\u53e3\u53f7\u5219\u9700\u8981\u5c0f\u4e8e60000, \u9ed8\u8ba4\u4e0d\u5199\nboolean \u662f\u5426\u662fUDP\uff0c\u9ed8\u8ba4false\nboolean \u662f\u5426\u662f\u52a0\u5bc6\u4f20\u8f93\uff0c\u9ed8\u8ba4false\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684idle\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u4e0d\u542f\u7528\uff0c\u5982\u679c\u662f\u4e0d\u652f\u6301\u6807\u51c6posix\u63a5\u53e3\u7684\u7f51\u5361\uff08\u6bd4\u5982W5500\uff09\uff0c\u5219\u4e3a\u5fc3\u8df3\u95f4\u9694\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u6b21\u6570\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK\uff0c\u4e0d\u9700\u8981\u52a0\u5bc6\u4f20\u8f93\u5199nil\uff0c\u540e\u7eed\u53c2\u6570\u4e5f\u5168\u90e8nil\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK-ID\uff0cTCP\u6a21\u5f0f\u4e0b\u5982\u679c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\u65f6\uff0c\u5ffd\u7565\uff0c\u4e00\u822c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--\u6700\u666e\u901a\u7684TCP\u4f20\u8f93\nsocket.config(ctrl)\n--\u6700\u666e\u901a\u7684\u52a0\u5bc6TCP\u4f20\u8f93\uff0c\u8bc1\u4e66\u90fd\u4e0d\u7528\u9a8c\u8bc1\u7684\u90a3\u79cd\nsocket.config(ctrl, nil, nil ,true)\n", "prefix": "socket.config"}, "socket.linkup": {"body": "socket.linkup(${1:ctrl})", "description": "socket.linkup(ctrl) - \u7b49\u5f85\u7f51\u5361linkup\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecflinkup\uff0cfalse\u6ca1\u6709linkup\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.LINK\u6d88\u606f\n\u4f8b\u5b50\uff1a\n-- \u5224\u65ad\u4e00\u4e0b\u662f\u5426\u5df2\u7ecf\u8054\u7f51\nlocal succ, result = socket.linkup(ctrl)\n", "prefix": "socket.linkup"}, "socket.connect": {"body": "socket.connect(${1:ctrl},${2:ip},${3:remote_port},${4:need_ipv6_dns})", "description": "socket.connect(ctrl, ip, remote_port, need_ipv6_dns) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or int ip\u6216\u8005\u57df\u540d\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u670d\u52a1\u5668\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\nboolean \u57df\u540d\u89e3\u6790\u662f\u5426\u8981IPV6\uff0ctrue\u8981\uff0cfalse\u4e0d\u8981\uff0c\u9ed8\u8ba4false\u4e0d\u8981\uff0c\u53ea\u6709\u652f\u6301IPV6\u7684\u534f\u8bae\u6808\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679c\u6709\u5f02\u5e38\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\n\nlocal succ, result = socket.connect(ctrl, \"netlab.luatos.com\", 40123)\n\n--[[\n\u5e38\u89c1\u7684\u8fde\u63a5\u5931\u8d25\u7684code\u503c, \u4f1a\u5728\u65e5\u5fd7\u4e2d\u663e\u793a\n-1 \u5e95\u5c42\u5185\u5b58\u4e0d\u8db3\n-3 \u8d85\u65f6\n-8 \u7aef\u53e3\u5df2\u7ecf\u88ab\u5360\u7528\n-11 \u94fe\u63a5\u672a\u5efa\u7acb\n-13 \u6a21\u5757\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n-14 \u670d\u52a1\u5668\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n]]\n", "prefix": "socket.connect"}, "socket.discon": {"body": "socket.discon(${1:ctrl})", "description": "socket.discon(ctrl) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u65ad\u5f00\u8fde\u63a5\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecf\u65ad\u5f00\uff0cfalse\u6ca1\u6709\u65ad\u5f00\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.CLOSED\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.discon(ctrl)\n", "prefix": "socket.discon"}, "socket.close": {"body": "socket.close(${1:ctrl})", "description": "socket.close(ctrl) - \u5f3a\u5236\u5173\u95edsocket\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "socket.close"}, "socket.tx": {"body": "socket.tx(${1:ctrl},${2:data},${3:ip},${4:port},${5:flag})", "description": "socket.tx(ctrl, data, ip, port, flag) - \u53d1\u9001\u6570\u636e\u7ed9\u5bf9\u7aef\uff0cUDP\u5355\u6b21\u53d1\u9001\u4e0d\u8981\u8d85\u8fc71460\u5b57\u8282\uff0c\u5426\u5219\u5f88\u5bb9\u6613\u5931\u8d25\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or user_data zbuff \u8981\u53d1\u9001\u7684\u6570\u636e\nstring or int \u5bf9\u7aefIP\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u5bf9\u7aef\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\nint \u53d1\u9001\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u7f13\u51b2\u533a\u6ee1\u4e86\uff0cfalse\u6ca1\u6709\u6ee1\uff0c\u5982\u679ctrue\uff0c\u5219\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u6216\u8005\u7b49\u5230socket.TX_OK\u6d88\u606f\u540e\u518d\u5c1d\u8bd5\u53d1\u9001\uff0c\u540c\u65f6\u5ffd\u7565\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\nboolean true\u5df2\u7ecf\u6536\u5230\u5e94\u7b54\uff0cfalse\u6ca1\u6709\u6536\u5230\u5e94\u7b54\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.TX_OK\u6d88\u606f\uff0c \u4e5f\u53ef\u4ee5\u5ffd\u7565\u7ee7\u7eed\u53d1\u9001\uff0c\u76f4\u5230full==true\n\u4f8b\u5b50\uff1a\n\nlocal succ, full, result = socket.tx(ctrl, \"123456\", \"xxx.xxx.xxx.xxx\", xxxx)\n", "prefix": "socket.tx"}, "socket.rx": {"body": "socket.rx(${1:ctrl},${2:buff},${3:flag},${4:limit})", "description": "socket.rx(ctrl, buff, flag, limit) - \u63a5\u6536\u5bf9\u7aef\u53d1\u51fa\u7684\u6570\u636e\uff0c\u6ce8\u610f\u6570\u636e\u5df2\u7ecf\u7f13\u5b58\u5728\u5e95\u5c42\uff0c\u4f7f\u7528\u672c\u51fd\u6570\u53ea\u662f\u63d0\u53d6\u51fa\u6765\uff0cUDP\u6a21\u5f0f\u4e0b\u4e00\u6b21\u53ea\u4f1a\u53d6\u51fa\u4e00\u4e2a\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nuser_data zbuff \u5b58\u653e\u63a5\u6536\u7684\u6570\u636e\uff0c\u5982\u679c\u7f13\u51b2\u533a\u4e0d\u591f\u5927\u4f1a\u81ea\u52a8\u6269\u5bb9\nint \u63a5\u6536\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\nint \u63a5\u6536\u6570\u636e\u957f\u5ea6\u9650\u5236\uff0c\u5982\u679c\u6307\u5b9a\u4e86\uff0c\u5219\u53ea\u53d6\u524dN\u4e2a\u5b57\u8282. 2024.1.5 \u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nint \u672c\u6b21\u63a5\u6536\u5230\u6570\u636e\u957f\u5ea6\nstring \u5bf9\u7aefIP\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56denil\uff0c\u6ce8\u610f\u8fd4\u56de\u7684\u683c\u5f0f\uff0c\u5982\u679c\u662fIPV4\uff0c1byte 0x00 + 4byte\u5730\u5740 \u5982\u679c\u662fIPV6\uff0c1byte 0x01 + 16byte\u5730\u5740\nint \u5bf9\u7aefport\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u4ecesocket\u4e2d\u8bfb\u53d6\u6570\u636e, ctrl\u662fsocket.create\u8fd4\u56de\u7684, \u8bf7\u67e5\u9605demo/socket\nlocal buff = zbuff.create(2048)\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff)\n\n-- \u9650\u5236\u8bfb\u53d6\u957f\u5ea6, 2024.1.5 \u65b0\u589e\n-- \u6ce8\u610f\n-- \u5982\u679c\u662fUDP\u6570\u636e, \u5982\u679climit\u5c0f\u4e8eUDP\u6570\u636e\u5305\u957f\u5ea6, \u53ea\u4f1a\u53d6\u524dlimit\u4e2a\u5b57\u8282, \u5269\u4f59\u6570\u636e\u4f1a\u4e22\u5f03\n-- \u5982\u679c\u662fTCP\u6570\u636e, \u5982\u679c\u6709\u5269\u4f59\u6570\u636e, \u4e0d\u4f1a\u4e22\u5f03, \u53ef\u7ee7\u7eed\u8bfb\u53d6.\n-- \u6709\u65b0\u7684\u6570\u636e\u5230\u6765\u624d\u4f1a\u6709\u65b0\u7684EVENT\u6570\u636e, \u672a\u8bfb\u53d6\u5b8c\u6210\u7684\u6570\u636e\u4e0d\u4f1a\u89e6\u53d1\u65b0EVENT\u4e8b\u4ef6\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff, 1500)\n\n-- \u8bfb\u53d6\u7f13\u51b2\u533a\u5927\u5c0f, 2024.1.5 \u65b0\u589e, \u6ce8\u610f,\u8001\u7248\u672c\u56fa\u4ef6\u4e0d\u4f20buff\u53c2\u6570\u4f1a\u62a5\u9519\u7684\n-- \u5bf9\u4e8eTCP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5f85\u8bfb\u53d6\u7684\u6570\u636e\u7684\u603b\u957f\u5ea6\n-- \u5bf9\u4e8eUDP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5355\u4e2aUDP\u6570\u636e\u5305\u7684\u957f\u5ea6\nlocal succ, data_len = socket.rx(ctrl)\nif succ then\n log.info(\"\u5f85\u6536\u53d6\u6570\u636e\u957f\u5ea6\", data_len)\nend\n", "prefix": "socket.rx"}, "socket.read": {"body": "socket.read(${1:netc},${2:len})", "description": "socket.read(netc, len) - \u8bfb\u53d6\u6570\u636e(\u975ezbuff\u7248\u672c)\n\u4f20\u5165\u503c\uff1a\nuserdata socket.create\u5f97\u5230\u7684ctrl\nint \u9650\u5236\u8bfb\u53d6\u6570\u636e\u957f\u5ea6,\u53ef\u9009,\u4e0d\u4f20\u5c31\u662f\u8bfb\u51fa\u5168\u90e8\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u4e0e\u5426\nstring \u8bfb\u53d6\u7684\u6570\u636e,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u65f6\u6709\u6548\nstring \u5bf9\u65b9IP\u5730\u5740,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\nint \u5bf9\u65b9\u7aef\u53e3,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.4.8\u6dfb\u52a0, \u7528\u4e8e\u7b80\u6613\u8bfb\u53d6\u4e0d\u5927\u7684\u6570\u636e\n-- \u8bf7\u4f18\u5148\u4f7f\u7528socket.rx\u51fd\u6570, \u672c\u51fd\u6570\u4e3b\u8981\u7528\u4e8e\u56fa\u4ef6\u4e0d\u542bzbuff\u5e93\u65f6\u7684\u53d8\u901a\u8c03\u7528\nlocal ok, data = socket.read(netc, 1500)\nif ok and #data > 0 then\n log.info(\"\u8bfb\u53d6\u5230\u7684\u6570\u636e\", data)\nend\n", "prefix": "socket.read"}, "socket.wait": {"body": "socket.wait(${1:ctrl})", "description": "socket.wait(ctrl) - \u7b49\u5f85\u65b0\u7684socket\u6d88\u606f\uff0c\u5728\u8fde\u63a5\u6210\u529f\u548c\u53d1\u9001\u6570\u636e\u6210\u529f\u540e\uff0c\u4f7f\u7528\u4e00\u6b21\u5c06network\u72b6\u6001\u8f6c\u6362\u5230\u63a5\u6536\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u6709\u65b0\u7684\u6570\u636e\u9700\u8981\u63a5\u6536\uff0cfalse\u6ca1\u6709\u6570\u636e\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.EVENT\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.wait(ctrl)\n", "prefix": "socket.wait"}, "socket.listen": {"body": "socket.listen(${1:ctrl})", "description": "socket.listen(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u5f00\u59cb\u76d1\u542c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.listen(ctrl)\n", "prefix": "socket.listen"}, "socket.accept": {"body": "socket.accept(${1:ctrl})", "description": "socket.accept(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u63a5\u6536\u5230\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662f\u7c7b\u4f3cW5500\u7684\u786c\u4ef6\u534f\u8bae\u6808\u4e0d\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4e0d\u9700\u8981\u7b2c\u4e8c\u4e2a\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\uff0c\u8fd9\u91cc\u662f\u670d\u52a1\u5668\u7aef\nstring or function or nil string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u548csocket.create\u53c2\u6570\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nuser_data or nil \u5982\u679c\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4f1a\u8fd4\u56de\u65b0\u7684ctrl\uff0c\u81ea\u52a8create\uff0c\u5982\u679c\u4e0d\u652f\u6301\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal succ, new_netc = socket.listen(ctrl, cb)\n", "prefix": "socket.accept"}, "socket.state": {"body": "socket.state(${1:ctrl})", "description": "socket.state(ctrl) - \u83b7\u53d6socket\u5f53\u524d\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nint or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u6570\u503c\uff0c\u5426\u5219\u8fd4\u56denil\nstring or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u4e2d\u6587\u63cf\u8ff0\uff0c\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal state, str = socket.state(ctrl)\nlog.info(\"state\", state, str)\nstate 0 \"\u786c\u4ef6\u79bb\u7ebf\",\n 1 \"\u79bb\u7ebf\",\n 2 \"\u7b49\u5f85DNS\",\n 3 \"\u6b63\u5728\u8fde\u63a5\",\n 4 \"\u6b63\u5728TLS\u63e1\u624b\",\n 5 \"\u5728\u7ebf\",\n 6 \"\u5728\u76d1\u542c\",\n 7 \"\u6b63\u5728\u79bb\u7ebf\",\n 8 \"\u672a\u77e5\"\n", "prefix": "socket.state"}, "socket.release": {"body": "socket.release(${1:ctrl})", "description": "socket.release(ctrl) - \u4e3b\u52a8\u91ca\u653e\u6389network_ctrl\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u4f8b\u5b50\uff1a\n-- \u91ca\u653e\u540e\u5c31\u4e0d\u80fd\u518d\u4f7f\u7528\u4e86\nsocket.release(ctrl)\n", "prefix": "socket.release"}, "socket.setDNS": {"body": "socket.setDNS(${1:adapter_index},${2:dns_index},${3:ip})", "description": "socket.setDNS(adapter_index, dns_index, ip) - \u8bbe\u7f6eDNS\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff0csocket.STA\uff0csocket.AP\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f1a\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nint dns\u670d\u52a1\u5668\u5e8f\u53f7\uff0c\u4ece1\u5f00\u59cb\nstring or int dns\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u9ed8\u8ba4\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(nil, 1, \"114.114.114.114\")\n-- \u8bbe\u7f6e\u5236\u5b9a\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(socket.ETH0, 1, \"114.114.114.114\")\n", "prefix": "socket.setDNS"}, "socket.sslLog": {"body": "socket.sslLog(${1:log_level})", "description": "socket.sslLog(log_level) - \u8bbe\u7f6eSSL\u7684log\u767b\u8bb0\n\u4f20\u5165\u503c\uff1a\nint mbedtls log\u7b49\u7ea7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n--[[\nSSL/TLS log\u7ea7\u522b\u8bf4\u660e\n0\u4e0d\u6253\u5370\n1\u53ea\u6253\u5370\u9519\u8bef\u548c\u8b66\n2\u5927\u90e8\u5206info\n3\u53ca3\u4ee5\u4e0a\u8be6\u7ec6\u7684debug\n\n\u8fc7\u591a\u7684\u4fe1\u606f\u53ef\u80fd\u4f1a\u9020\u6210\u5185\u5b58\u788e\u7247\u5316\n]]\n-- \u6253\u5370\u5927\u90e8\u5206info\u65e5\u5fd7\nsocket.sslLog(2)\n", "prefix": "socket.sslLog"}, "socket.adapter": {"body": "socket.adapter(${1:index})", "description": "socket.adapter(index) - \u67e5\u770b\u7f51\u5361\u9002\u914d\u5668\u7684\u8054\u7f51\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\uff0c\u53ef\u4ee5\u7559\u7a7a\u4f1a\u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u9047\u5230IP READY\u7684\uff0c\u5982\u679c\u6307\u5b9a\u7f51\u5361\uff0c\u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\n\u8fd4\u56de\u503c\uff1a\nboolean \u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u662f\u5426IP READY,true\u8868\u793a\u5df2\u7ecf\u51c6\u5907\u597d\u53ef\u4ee5\u8054\u7f51\u4e86,false\u6682\u65f6\u4e0d\u53ef\u4ee5\u8054\u7f51\nint \u6700\u540e\u4e00\u4e2a\u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\n-- \u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u627e\u5230\u4e00\u4e2a\u662fIP READY\u7684\nlocal isReady,index = socket.adapter() --\u5982\u679cisReady\u4e3atrue,\u5219index\u4e3aIP READY\u7684\u7f51\u5361\u9002\u914d\u5668\u5e8f\u53f7\n--\u67e5\u770b\u5916\u7f6e\u4ee5\u592a\u7f51\uff08\u6bd4\u5982W5500\uff09\u662f\u5426IP READY\nlocal isReady,default = socket.adapter(socket.ETH0)\n", "prefix": "socket.adapter"}, "socket.remoteIP": {"body": "socket.remoteIP(${1:ctrl})", "description": "socket.remoteIP(ctrl) - \u83b7\u53d6\u5bf9\u7aefip\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nstring IP1\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709\u83b7\u53d6\u5230IP\u5730\u5740\nstring IP2\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP2\nstring IP3\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP3\nstring IP4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \uff0c\u5fc5\u987b\u5728\u63a5\u6536\u5230socket.ON_LINE\u6d88\u606f\u4e4b\u540e\u624d\u53ef\u80fd\u83b7\u53d6\u5230\uff0c\u6700\u591a\u8fd4\u56de4\u4e2aIP\u3002\n-- socket.connect\u91cc\u5982\u679cremote_port\u8bbe\u7f6e\u62100\uff0c\u5219\u5f53DNS\u5b8c\u6210\u65f6\u5c31\u8fd4\u56desocket.ON_LINE\u6d88\u606f\nlocal ip1,ip2,ip3,ip4 = socket.remoteIP(ctrl)\n", "prefix": "socket.remoteIP"}, "softkb.init": {"body": "softkb.init(${1:port},${2:key_in},${3:key_out})", "description": "softkb.init(port, key_in, key_out) - \u521d\u59cb\u5316\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\ntable \u77e9\u9635\u8f93\u5165\u6309\u952e\u8868\ntable \u77e9\u9635\u8f93\u51fa\u6309\u952e\u8868\n\u4f8b\u5b50\uff1a\n key_in = {pin.PD10,pin.PE00,pin.PE01,pin.PE02}\n key_out = {pin.PD12,pin.PD13,pin.PD14,pin.PD15}\n softkb.init(0,key_in,key_out)\n\nsys.subscribe(\"SOFT_KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "softkb.init"}, "softkb.deinit": {"body": "softkb.deinit(${1:port})", "description": "softkb.deinit(port) - \u5220\u9664\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\n\u4f8b\u5b50\uff1a\n softkb.deinit(0)\n", "prefix": "softkb.deinit"}, "spi.setup": {"body": "spi.setup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.setup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba42M=2000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,20,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.setup"}, "spi.createSoft": {"body": "spi.createSoft(${1:cs},${2:mosi},${3:miso},${4:clk},${5:CPHA},${6:CPOL},${7:dataw},${8:bitdict},${9:ms},${10:mode})", "description": "spi.createSoft(cs, mosi, miso, clk, CPHA, CPOL, dataw, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528\u8f6f\u4ef6SPI\n\u4f20\u5165\u503c\uff1a\nint cs\u5f15\u811a\u7f16\u53f7\uff0c\u4f20\u5165nil\u610f\u4e3aLua\u63a7\u5236cs\u811a\nint mosi\u5f15\u811a\u7f16\u53f7\nint miso\u5f15\u811a\u7f16\u53f7\nint clk\u5f15\u811a\u7f16\u53f7\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6\uff0c\u9ed8\u8ba48bit\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f\uff0c\u5168\u53cc\u5de51\uff0c\u534a\u53cc\u5de50\uff0c\u9ed8\u8ba4\u534a\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6SPI\u5bf9\u8c61 \u53ef\u5f53\u4f5cSPI\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6spi\nlocal softSpiDevice = spi.createSoft(0, 1, 2, 3, 0, 0, 8, spi.MSB, 1, 1)\nlocal result = spi.send(softSpiDevice, string.char(0x9f))\n", "prefix": "spi.createSoft"}, "spi.close": {"body": "spi.close(${1:id})", "description": "spi.close(id) - \u5173\u95ed\u6307\u5b9a\u7684SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.close(0)\n", "prefix": "spi.close"}, "spi.transfer": {"body": "spi.transfer(${1:id},${2:send_data},${3:send_len},${4:recv_len})", "description": "spi.transfer(id, send_data, send_len, recv_len) - \u4f20\u8f93SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7(\u4f8b\u59820)\u6216\u8f6f\u4ef6SPI\u5bf9\u8c61\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi.transfer(0, \"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi.transfer(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi.transfer"}, "spi.recv": {"body": "spi.recv(${1:id},${2:size},${3:buff})", "description": "spi.recv(id, size, buff) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint \u6570\u636e\u957f\u5ea6\nuserdata zbuff\u5bf9\u8c61,\u53ef\u9009,2024.3.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring/int \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u82e5\u4f20\u5165\u7684\u662fzbuff\u5c31\u8fd4\u56de\u8bfb\u53d6\u5927\u5c0f,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\n-- \u63a5\u6536\u6570\u636e\nlocal recv = spi.recv(0, 4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n\n-- \u5f53\u4f20\u5165zbuff\u53c2\u6570\u65f6,\u8fd4\u56de\u503c\u6709\u6240\u4e0d\u540c. 2024.3.29\u65b0\u589e\n-- \u8bfb\u53d6\u6210\u529f\u540e, \u6307\u9488\u4f1a\u5f80\u540e\u79fb\u52a8len\u4e2a\u5b57\u8282\n-- \u5199\u5165\u4f4d\u7f6e\u4ee5\u5f53\u524dused()\u4f4d\u7f6e\u5f00\u59cb, \u8bf7\u52a1\u5fc5\u786e\u4fdd\u6709\u8db3\u591f\u7a7a\u95f4\u5199\u5165len\u957f\u5ea6\u7684\u6570\u636e\nlocal len = spi.recv(0, 4, buff)\n", "prefix": "spi.recv"}, "spi.send": {"body": "spi.send(${1:id},${2:data[},${3:len]})", "description": "spi.send(id, data[, len]) - \u53d1\u9001SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi.send(0, \"123\")--\u53d1\u9001123\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi.send(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi.send"}, "spi.deviceSetup": {"body": "spi.deviceSetup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.deviceSetup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba420M=20000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nuserdata spi_device\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.deviceSetup"}, "spi_device:close": {"body": "spi_device:close()", "description": "spi_device:close() - \u5173\u95ed\u6307\u5b9a\u7684SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi_device.close()\n", "prefix": "spi_device:close"}, "spi_device:transfer": {"body": "spi_device:transfer(${1:send_data[},${2:len]})", "description": "spi_device:transfer(send_data[, len]) - \u4f20\u8f93SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:transfer(\"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\nlocal result = spi_device:transfer({0x00,0x01})--\u53d1\u90010x00,0x01,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi_device:transfer(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi_device:transfer"}, "spi_device:send": {"body": "spi_device:send(${1:data[},${2:len]})", "description": "spi_device:send(data[, len]) - \u53d1\u9001SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi_device:send(\"123\")--\u53d1\u9001123\nlocal result = spi_device:send({0x00,0x01})--\u53d1\u90010x00,0x01\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi_device:send(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi_device:send"}, "spi_device:recv": {"body": "spi_device:recv(${1:size})", "description": "spi_device:recv(size) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:recv(4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n", "prefix": "spi_device:recv"}, "spi.xfer": {"body": "spi.xfer(${1:id},${2:txbuff},${3:rxbuff},${4:rx_len},${5:transfer_done_topic})", "description": "spi.xfer(id, txbuff, rxbuff, rx_len, transfer_done_topic) - \u975e\u963b\u585e\u65b9\u5f0f\u786c\u4ef6SPI\u4f20\u8f93SPI\u6570\u636e\uff0c\u76ee\u7684\u4e3a\u4e86\u63d0\u9ad8\u6838\u5fc3\u5229\u7528\u7387\u3002API\u76f4\u63a5\u8fd4\u56de\u662f\u5426\u542f\u52a8\u4f20\u8f93\uff0c\u4f20\u8f93\u5b8c\u6210\u540e\u901a\u8fc7topic\u56de\u8c03\uff0c\u672cAPI\u9002\u5408\u786c\u4ef6SPI\u4f20\u8f93\u5927\u91cf\u6570\u636e\u4f20\u8f93\uff0c\u5916\u8bbe\u529f\u80fd\uff08LCD SPI\uff0cW5500 SPI\u4e4b\u7c7b\u7684\uff09\u5360\u636e\u7684SPI\u548c\u8f6f\u4ef6SPI\u4e0d\u80fd\u7528\uff0c\u5c11\u91cf\u6570\u636e\u4f20\u8f93\u5efa\u8bae\u4f7f\u7528\u4f20\u7edf\u963b\u585e\u578bAPI\n\u4f20\u5165\u503c\uff1a\nuserdata or int spi_device\u6216\u8005spi_id\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662fspi_device\uff0c\u9700\u8981\u624b\u52a8\u5728\u4f20\u8f93\u5b8c\u6210\u540e\u62c9\u9ad8cs!!!!!!\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u63a5\u6536\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\nzbuff \u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u53d1\u9001\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u63a5\u6536\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\u5b58\u50a8\nint \u4f20\u8f93\u6570\u636e\u957f\u5ea6\uff0c\u7279\u522b\u8bf4\u660e \u5982\u679c\u4e3a\u534a\u53cc\u5de5\uff0c\u5148\u53d1\u540e\u6536\uff0c\u6bd4\u5982spi flash\u64cd\u4f5c\u8fd9\u79cd\uff0c\u5219\u957f\u5ea6=\u53d1\u9001\u5b57\u8282+\u63a5\u6536\u5b57\u8282\uff0c\u6ce8\u610f\u4e0a\u9762\u53d1\u9001\u548c\u63a5\u6536buff\u90fd\u8981\u7559\u8db3\u591f\u7684\u6570\u636e\uff0c\u540e\u7eed\u63a5\u6536\u6570\u636e\u5904\u7406\u9700\u8981\u8df3\u8fc7\u53d1\u9001\u6570\u636e\u957f\u5ea6\u5b57\u8282\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684topic\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = spi.xfer(spi.SPI_0, txbuff, rxbuff, 1024, \"SPIDONE\") if result then result, spi_id, succ, error_code = sys.waitUntil(\"SPIDONE\") end if not result or not succ then log.info(\"spi fail, error code\", error_code) else log.info(\"spi ok\") end\n\n", "prefix": "spi.xfer"}, "statem.create": {"body": "statem.create(${1:count},${2:repeat})", "description": "statem.create(count, repeat) - \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u72b6\u6001\u673a.\n\u4f20\u5165\u503c\uff1a\nint \u6307\u4ee4\u6761\u6570,\u9ed8\u8ba432\u6761\nint \u91cd\u590d\u6267\u884c\u7684\u6b21\u6570, 0 \u4ee3\u8868\u4e0d\u91cd\u590d, \u6b63\u6574\u6570\u4ee3\u8868\u5177\u4f53\u91cd\u590d\u6267\u884c\u7684\u6b21\u6570. \u6682\u4e0d\u652f\u6301\u6c38\u7eed\u6267\u884c\n\u8fd4\u56de\u503c\uff1a\nsome \u82e5\u6210\u529f,\u8fd4\u56de\u72b6\u6001\u673a\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\ngpio.setup(7, 0, gpio.PULLUP)\ngpio.setup(12, 0, gpio.PULLUP)\ngpio.setup(13, 0, gpio.PULLUP)\ngpio.setup(14, 0, gpio.PULLUP)\nlocal sm = statem.create()\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :usleep(10) -- \u4f11\u772010us\n :gpio_set(7, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(12, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(13, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(14, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :finish()\n\n-- \u6267\u884c\u4e4b,\u540e\u7eed\u4f1a\u652f\u6301\u540e\u53f0\u6267\u884c\nsm:exec()\n", "prefix": "statem.create"}, "string.toHex": {"body": "string.toHex(${1:str},${2:separator})", "description": "string.toHex(str, separator) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u6210HEX\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26, \u9ed8\u8ba4\u4e3a\"\"\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u5b57\u7b26\u4e32\nnumber HEX\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nstring.toHex(\"\\1\\2\\3\") --> \"010203\" 6\nstring.toHex(\"123abc\") --> \"313233616263\" 12\nstring.toHex(\"123abc\", \" \") --> \"31 32 33 61 62 63 \" 12\n", "prefix": "string.toHex"}, "string.fromHex": {"body": "string.fromHex(${1:hex})", "description": "string.fromHex(hex) - \u5c06HEX\u8f6c\u6210\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring hex,16\u8fdb\u5236\u7ec4\u6210\u7684\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nstring.fromHex(\"010203\") --> \"\\1\\2\\3\"\nstring.fromHex(\"313233616263\") --> \"123abc\"\n", "prefix": "string.fromHex"}, "string.split": {"body": "string.split(${1:str},${2:delimiter},${3:keepEmtry})", "description": "string.split(str, delimiter, keepEmtry) - \u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26,\u53ef\u9009,\u9ed8\u8ba4 \",\"\nbool \u662f\u5426\u4fdd\u7559\u7a7a\u767d\u7247\u6bb5,\u9ed8\u8ba4\u4e3afalse,\u4e0d\u4fdd\u7559. 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\n\u8fd4\u56de\u503c\uff1a\ntable \u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u8868\n\u4f8b\u5b50\uff1a\nlocal tmp = string.split(\"123,233333,122\")\nlog.info(\"tmp\", json.encode(tmp))\nlocal tmp = (\"123,456,789\"):split(',') --> {'123','456','789'}\nlog.info(\"tmp\", json.encode(tmp))\n\n-- \u4fdd\u7559\u7a7a\u7247\u6bb5, 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\nlocal str = \"/tmp//def/1234/\"\nlocal tmp = str:split(\"/\", true) \nlog.info(\"str.split\", #tmp, json.encode(tmp))\n", "prefix": "string.split"}, "string.toValue": {"body": "string.toValue(${1:str})", "description": "string.toValue(str) - \u8fd4\u56de\u5b57\u7b26\u4e32tonumber\u7684\u8f6c\u4e49\u5b57\u7b26\u4e32(\u7528\u6765\u652f\u6301\u8d85\u8fc731\u4f4d\u6574\u6570\u7684\u8f6c\u6362)\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8f6c\u6362\u540e\u7684\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32\nnumber \u8f6c\u6362\u4e86\u591a\u5c11\u4e2a\u5b57\u7b26\n\u4f8b\u5b50\uff1a\nstring.toValue(\"123456\") --> \"\\1\\2\\3\\4\\5\\6\" 6\nstring.toValue(\"123abc\") --> \"\\1\\2\\3\\a\\b\\c\" 6\n", "prefix": "string.toValue"}, "string.urlEncode": {"body": "string.urlEncode(${1:\"123abc\"})", "description": "string.urlEncode(\"123 abc\") - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884curl\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nint mode:url\u7f16\u7801\u7684\u8f6c\u6362\u6807\u51c6,\n", "prefix": "string.urlEncode"}, "string.toBase64": {"body": "string.toBase64(${1:str})", "description": "string.toBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.toBase64"}, "string.fromBase64": {"body": "string.fromBase64(${1:str})", "description": "string.fromBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase64"}, "string.toBase32": {"body": "string.toBase32(${1:str})", "description": "string.toBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.toBase32"}, "string.fromBase32": {"body": "string.fromBase32(${1:str})", "description": "string.fromBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase32"}, "string.startsWith": {"body": "string.startsWith(${1:str},${2:prefix})", "description": "string.startsWith(str, prefix) - \u5224\u65ad\u5b57\u7b26\u4e32\u524d\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u524d\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:startsWith(\"a\"))\nlog.info(\"str\", str:startsWith(\"b\"))\n", "prefix": "string.startsWith"}, "string.endsWith": {"body": "string.endsWith(${1:str},${2:suffix})", "description": "string.endsWith(str, suffix) - \u5224\u65ad\u5b57\u7b26\u4e32\u540e\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u540e\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:endsWith(\"c\"))\nlog.info(\"str\", str:endsWith(\"b\"))\n", "prefix": "string.endsWith"}, "string.trim": {"body": "string.trim(${1:str},${2:ltrim},${3:rtrim})", "description": "string.trim(str, ltrim, rtrim) - \u88c1\u526a\u5b57\u7b26\u4e32,\u53bb\u9664\u5934\u5c3e\u7684\u7a7a\u683c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5904\u7406\u7684\u5b57\u7b26\u4e32\nbool \u6e05\u7406\u524d\u7f00,\u9ed8\u8ba4\u4e3atrue\nbool \u6e05\u7406\u540e\u7f00,\u9ed8\u8ba4\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nstring \u6e05\u7406\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal str = \"\\r\\nabc\\r\\n\"\nlog.info(\"str\", string.trim(str)) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", str:trim()) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", #string.trim(str, false, true)) -- \u4ec5\u88c1\u526a\u540e\u7f00,\u6240\u4ee5\u957f\u5ea6\u662f5\n", "prefix": "string.trim"}, "sys.wait": {"body": "sys.wait(${1:timeout})", "description": "sys.wait(timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nany \u901a\u5e38\u4e3anil,\u9664\u975e\u4e3b\u52a8\u88ab\u5524\u9192(\u901a\u5e38\u4e0d\u4f1a)\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(500)\n end\nend)\n", "prefix": "sys.wait"}, "sys.waitUntil": {"body": "sys.waitUntil(${1:topic},${2:timeout})", "description": "sys.waitUntil(topic, timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\u6216\u8005\u7279\u5b9a\u7684topic\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6topic\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nboolean \u5982\u679c\u662f\u8d85\u65f6,\u8fd4\u56defalse,\u5426\u5219\u8fd4\u56detrue\nany \u5bf9\u5e94topic\u7684\u5185\u5bb9\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n // do something\n local result, data = sys.waitUntil(\"NET_READY\", 30000)\n // do something else\nend)\n", "prefix": "sys.waitUntil"}, "sys.taskInit": {"body": "sys.taskInit(${1:func},${2:arg1},${3:arg2},${4:argN})", "description": "sys.taskInit(func, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2aTask\u534f\u7a0b\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\ntask \u534f\u7a0b\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nsys.taskInit(function(a, b, c)\n log.info(\"task\", a, b, c) -- \u6253\u5370 task A B C\nend, \"A\", \"B\", \"N\")\n", "prefix": "sys.taskInit"}, "sys.timerStart": {"body": "sys.timerStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStart"}, "sys.timerLoopStart": {"body": "sys.timerLoopStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerLoopStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerLoopStart"}, "sys.timerStop": {"body": "sys.timerStop(${1:id})", "description": "sys.timerStop(id) - \u5173\u95ed\u4e00\u4e2a\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal tcount = 0\nlocal tid \ntid = sys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\n if tcount > 10 then\n sys.timerStop(tid)\n end\n tcount = tcount + 1\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStop"}, "sys.timerStopAll": {"body": "sys.timerStopAll(${1:fnc})", "description": "sys.timerStopAll(fnc) - \u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nfunction fnc\u56de\u8c03\u7684\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u56de\u8c03\u51fd\u6570\u4e3apublicTimerCbFnc\u7684\u6240\u6709\u5b9a\u65f6\u5668\nlocal function publicTimerCbFnc(tag)\nlog.info(\"publicTimerCbFnc\",tag)\nend\nsys.timerStart(publicTimerCbFnc,8000,\"first\")\nsys.timerStart(publicTimerCbFnc,8000,\"second\")\nsys.timerStart(publicTimerCbFnc,8000,\"third\")\nsys.timerStopAll(publicTimerCbFnc)\n", "prefix": "sys.timerStopAll"}, "sys.publish": {"body": "sys.publish(${1:topic},${2:arg1},${3:agr2},${4:argN})", "description": "sys.publish(topic, arg1, agr2, argN) - \u5f80\u7279\u5b9atopic\u901a\u9053\u53d1\u5e03\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nany \u9644\u5e26\u7684\u53c2\u65701\nany \u9644\u5e26\u7684\u53c2\u65702\nany \u9644\u5e26\u7684\u53c2\u6570N\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nsys.publish(\"BT_READY\", false)\n", "prefix": "sys.publish"}, "sys.subscribe": {"body": "sys.subscribe(${1:topic},${2:func})", "description": "sys.subscribe(topic, func) - \u8ba2\u9605\u4e00\u4e2atopic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.subscribe(\"BT_READY\", bt_cb)\nsys.subscribe(\"BT_READY\", function(state)\n log.info(\"sys\", \"Got BT_READY\", state)\nend)\n", "prefix": "sys.subscribe"}, "sys.unsubscribe": {"body": "sys.unsubscribe(${1:topic},${2:func})", "description": "sys.unsubscribe(topic, func) - \u53d6\u6d88\u8ba2\u9605topic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.unsubscribe(\"BT_READY\", bt_cb)\n", "prefix": "sys.unsubscribe"}, "sys.run": {"body": "sys.run()", "description": "sys.run() - sys\u5e93\u4e3b\u5faa\u73af\u65b9\u6cd5,\u4ec5\u5141\u8bb8\u5728main.lua\u7684\u672b\u5c3e\u8c03\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c. \u8fd9\u4e2a\u65b9\u6cd5\u51e0\u4e4e\u4e0d\u53ef\u80fd\u8fd4\u56de.\n\u4f8b\u5b50\uff1a\n-- \u603b\u662fmain.lua\u7684\u7ed3\u5c3e\u4e00\u53e5,\u5c06\u6765\u4e5f\u8bb8\u4f1a\u7b80\u5316\u6389\nsys.run()\n-- \u4e4b\u540e\u7684\u4ee3\u7801\u4e0d\u4f1a\u88ab\u6267\u884c\n", "prefix": "sys.run"}, "sysplus.waitMsg": {"body": "sysplus.waitMsg(${1:taskName},${2:target},${3:timeout})", "description": "sysplus.waitMsg(taskName, target, timeout) - \u7b49\u5f85\u63a5\u6536\u4e00\u4e2a\u76ee\u6807\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nstring \u76ee\u6807\u6d88\u606f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u63a5\u6536\u5230\u4efb\u610f\u6d88\u606f\u90fd\u4f1a\u9000\u51fa\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u65e0\u8d85\u65f6\uff0c\u6c38\u8fdc\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\ntable \u6210\u529f\u8fd4\u56detable\u578b\u7684msg\uff0c\u8d85\u65f6\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7b49\u5f85\u4efb\u52a1\nsysplus.waitMsg('a', 'b', 1000)\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_wait\n", "prefix": "sysplus.waitMsg"}, "sysplus.sendMsg": {"body": "sysplus.sendMsg(${1:taskName},${2:target},${3:arg2},${4:arg3},${5:arg4})", "description": "sysplus.sendMsg(taskName, target, arg2, arg3, arg4) - \u5411\u76ee\u6807\u4efb\u52a1\u53d1\u9001\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65701\uff0c\u540c\u65f6\u4e5f\u662fwaitMsg\u91cc\u7684target\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65702\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65703\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65704\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5411\u4efb\u52a1a,\u76ee\u6807b\u53d1\u9001\u6d88\u606f\nsysplus.sendMsg('a', 'b')\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_send\n", "prefix": "sysplus.sendMsg"}, "sysplus.taskInitEx": {"body": "sysplus.taskInitEx(${1:fun},${2:taskName},${3:cbFun},${4:...})", "description": "sysplus.taskInitEx(fun, taskName, cbFun, ...) - \u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570,main.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\n\u4f20\u5165\u503c\uff1a\nfunction \u4efb\u52a1\u51fd\u6570\u540d,\u7528\u4e8eresume\u5524\u9192\u65f6\u8c03\u7528\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nfunction \u63a5\u6536\u5230\u975e\u76ee\u6807\u6d88\u606f\u65f6\u7684\u56de\u8c03\u51fd\u6570\nany ... \u4efb\u52a1\u51fd\u6570fun\u7684\u53ef\u53d8\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\n\u4f8b\u5b50\uff1a\nsysplus.taskInitEx(task1,'a',callback)\n", "prefix": "sysplus.taskInitEx"}, "sysplus.taskDel": {"body": "sysplus.taskDel(${1:taskName})", "description": "sysplus.taskDel(taskName) - \u5220\u9664\u7531taskInitEx\u521b\u5efa\u7684\u4efb\u52a1\u7ebf\u7a0b\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\n\u4f8b\u5b50\uff1a\nsysplus.taskDel('a')\n", "prefix": "sysplus.taskDel"}, "sysplus.cleanMsg": {"body": "sysplus.cleanMsg(${1:taskName})", "description": "sysplus.cleanMsg(taskName) - \u6e05\u9664\u6307\u5b9atask\u7684\u6d88\u606f\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\n\u4f8b\u5b50\uff1a\nsysplus.cleanMsg('a')\n", "prefix": "sysplus.cleanMsg"}, "timer.mdelay": {"body": "timer.mdelay(${1:timeout})", "description": "timer.mdelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dms, \u6700\u9ad81024ms, \u5b9e\u9645\u4f7f\u7528\u5f3a\u70c8\u5efa\u8bae\u4e0d\u8981\u8d85\u8fc7200ms\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u671f\u95f4\u6ca1\u6709\u4efb\u4f55luat\u4ee3\u7801\u4f1a\u6267\u884c,\u5305\u62ec\u5e95\u5c42\u6d88\u606f\u5904\u7406\u673a\u5236\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\ntimer.mdelay(10)\n", "prefix": "timer.mdelay"}, "timer.udelay": {"body": "timer.udelay(${1:timeout})", "description": "timer.udelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\u4f46us\u7ea7\u522b,\u4e0d\u4f1a\u5f88\u7cbe\u51c6\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dus, \u6700\u59273000us\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\n-- \u672cAPI\u5728 2023.05.18 \u6dfb\u52a0\ntimer.udelay(10)\n-- \u5b9e\u9645\u963b\u585e\u65f6\u957f\u662f\u6709\u6ce2\u52a8\u7684\n", "prefix": "timer.udelay"}, "touchkey.setup": {"body": "touchkey.setup(${1:id},${2:scan_period},${3:window},${4:threshold})", "description": "touchkey.setup(id, scan_period, window, threshold) - \u914d\u7f6e\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863, \u4f8b\u5982air101/air103\u652f\u6301 1~15, \u4f8b\u5982PA7\u5bf9\u5e94touch id=1\nint \u626b\u63cf\u95f4\u9694,\u8303\u56f41 ~ 0x3F, \u5355\u4f4d16ms,\u53ef\u9009\nint \u626b\u63cf\u7a97\u53e3,\u8303\u56f42-7, \u53ef\u9009\nint \u9600\u503c, \u8303\u56f40-127, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ntouchkey.setup(1)\nsys.subscribe(\"TOUCHKEY_INC\", function(id, count)\n -- \u4f20\u611f\u5668id\n -- \u8ba1\u6570\u5668,\u89e6\u6478\u6b21\u6570\u7edf\u8ba1\n log.info(\"touchkey\", id, count)\nend)\n", "prefix": "touchkey.setup"}, "touchkey.close": {"body": "touchkey.close(${1:id})", "description": "touchkey.close(id) - \u5173\u95ed\u521d\u59cb\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u592a\u53ef\u80fd\u9700\u8981\u5173\u6389\u7684\u6837\u5b50\ntouchkey.close(1)\n", "prefix": "touchkey.close"}, "u8g2.begin": {"body": "u8g2.begin(${1:conf})", "description": "u8g2.begin(conf) - u8g2\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f,\u8be6\u7ec6\u914d\u7f6e\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- conf\u914d\u7f6e\u9879\u8bf4\u660e\n-- ic \u5b57\u7b26\u4e32,\u4e3b\u63a7\u82af\u7247\u7c7b\u578b, \u652f\u6301custom(\u81ea\u5b9a\u4e49\u547d\u4ee4) ssd1306(\u9ed8\u8ba4) ssd1309 ssd1322 sh1106 sh1107 sh1108 st7567 uc1701 ssd1306_128x32\n-- direction \u6570\u503c,\u65b9\u5411,\u53ef\u90090 90 180 270 \u9ed8\u8ba40\n-- mode \u5b57\u7b26\u4e32,\u6a21\u5f0f,\u53ef\u9009i2c_sw:\u8f6f\u4ef6i2c i2c_hw:\u786c\u4ef6i2c,spi_hw_4pin: \u786c\u4ef6spi\n-- i2c_id: \u6570\u503c,\u786c\u4ef6i2c\u65f6\u6709\u6548\n-- i2c_scl: \u6570\u503c,\u8f6f\u4ef6i2c\u65f6\u65f6\u949f\u7ebf\u7684GPIO\u7f16\u53f7\n-- i2c_sda: \u6570\u503c\u8f6f\u4ef6i2c\u65f6\u6570\u636e\u7ebf\u7684GPIO\u7f16\u53f7\n-- spi_id\u3001spi_res\u3001spi_dc\u3001spi_cs: \u6570\u503c,\u786c\u4ef6spi\u7684SPI\u7f16\u53f7,\u590d\u4f4dGPIO\u7f16\u53f7,DC\u7ebf\u7684GPIO\u7f16\u53f7, CS\u7ebf\u7684GPIO\u7f16\u53f7\n-- x_offset: \u6570\u503c,X\u8f74\u504f\u79fb\u91cf,\u9ed8\u8ba4\u6309\u9a71\u52a8\u8d70, 2023.11.10\u65b0\u589e\u7684\u914d\u7f6e\u9879\n\n-- \u521d\u59cb\u5316\u786c\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_hw\",i2c_id=0}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u786c\u4ef6spi\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"spi_hw_4pin\",spi_id=0,spi_res=pin.PB03,spi_dc=pin.PB01,spi_cs=pin.PB04}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_sw\", i2c_scl=1, i2c_sda=4}) -- \u901a\u8fc7PA1 SCL / PA4 SDA\u6a21\u62df\n", "prefix": "u8g2.begin"}, "u8g2.close": {"body": "u8g2.close()", "description": "u8g2.close() - \u5173\u95ed\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95eddisp,\u518d\u6b21\u4f7f\u7528disp\u76f8\u5173API\u7684\u8bdd,\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\nu8g2.close()\n", "prefix": "u8g2.close"}, "u8g2.ClearBuffer": {"body": "u8g2.ClearBuffer()", "description": "u8g2.ClearBuffer() - \u6e05\u5c4f\uff0c\u6e05\u9664\u5185\u5b58\u5e27\u7f13\u51b2\u533a\u4e2d\u7684\u6240\u6709\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u6e05\u5c4f\nu8g2.ClearBuffer()\n", "prefix": "u8g2.ClearBuffer"}, "u8g2.SendBuffer": {"body": "u8g2.SendBuffer()", "description": "u8g2.SendBuffer() - \u5c06\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\uff0c\u5c06\u5b58\u50a8\u5668\u5e27\u7f13\u51b2\u533a\u7684\u5185\u5bb9\u53d1\u9001\u5230\u663e\u793a\u5668\n\u4f8b\u5b50\uff1a\n-- \u628a\u663e\u793a\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\nu8g2.SendBuffer()\n", "prefix": "u8g2.SendBuffer"}, "u8g2.DrawUTF8": {"body": "u8g2.DrawUTF8(${1:str},${2:x},${3:y})", "description": "u8g2.DrawUTF8(str, x, y) - \u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57\uff0c\u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57,\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.DrawUTF8(\"wifi is ready\", 10, 20)\n", "prefix": "u8g2.DrawUTF8"}, "u8g2.DrawButtonUTF8": {"body": "u8g2.DrawButtonUTF8(${1:str},${2:x},${3:y},${4:flags},${5:w},${6:h},${7:v},${8:str})", "description": "u8g2.DrawButtonUTF8(str, x, y, flags, w, h, v, str) - \u5728\u63d0\u4f9b\u7684\u6587\u672c\u5468\u56f4\u753b\u4e00\u4e2a\u6846\u3002\u8fd9\u4e0e DrawUTF8 \u7c7b\u4f3c\uff0c\u4f46\u4e3a\u6587\u672c\u6dfb\u52a0\u4e86\u4e00\u4e9b\u88c5\u9970\u3002\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f\u5e55 \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\nint \u6807\u5fd7 \u591a\u4e2a\u6807\u5fd7\u53ef\u4ee5\u4e0e\u201c\u6216\u201d\u8fd0\u7b97\u7b26\u4e00\u8d77\u4f7f\u7528\u3002\nint \u6587\u672c\u7684\u6700\u5c0f\u5bbd\u5ea6\u3002\u5982\u679c\u4e3a0\uff08\u6216\u4f4e\u4e8e\u6587\u672c\u5bbd\u5ea6\uff09\uff0c\u5219\u6587\u672c\u5bbd\u5ea6\u5c06\u7528\u4e8e\u6846\u67b6\u3002\nint \u6587\u672c\u524d\u540e\u7684\u989d\u5916\u7a7a\u95f4\u3002\nint \u6587\u672c\u4e0a\u4e0b\u7684\u989d\u5916\u7a7a\u95f4\u3002\n\u4f8b\u5b50\uff1a\nu8g2.DrawButtonUTF8(\"str\", 10, 20,u8g2.BTN_BW2,0,2,2)\n", "prefix": "u8g2.DrawButtonUTF8"}, "u8g2.SetFontMode": {"body": "u8g2.SetFontMode(${1:mode})", "description": "u8g2.SetFontMode(mode) - \u8bbe\u7f6e\u5b57\u4f53\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetFontMode(1)\n", "prefix": "u8g2.SetFontMode"}, "u8g2.SetFont": {"body": "u8g2.SetFont(${1:font},${2:indentation})", "description": "u8g2.SetFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata font, u8g2.font_opposansm8 \u4e3a\u7eaf\u82f1\u65878\u53f7\u5b57\u4f53,\u8fd8\u6709font_opposansm10 font_opposansm12 font_opposansm16 font_opposansm18 font_opposansm20 font_opposansm22 font_opposansm24 font_opposansm32 \u53ef\u9009 u8g2.font_opposansm12_chinese \u4e3a12x12\u5168\u4e2d\u6587,\u8fd8\u6709 font_opposansm16_chinese font_opposansm24_chinese font_opposansm32_chinese \u53ef\u9009, u8g2.font_unifont_t_symbols \u4e3a\u7b26\u53f7.\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nu8g2.SetFont(u8g2.font_opposansm12)\n", "prefix": "u8g2.SetFont"}, "u8g2.GetDisplayHeight": {"body": "u8g2.GetDisplayHeight()", "description": "u8g2.GetDisplayHeight() - \u83b7\u53d6\u663e\u793a\u5c4f\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayHeight()\n", "prefix": "u8g2.GetDisplayHeight"}, "u8g2.GetDisplayWidth": {"body": "u8g2.GetDisplayWidth()", "description": "u8g2.GetDisplayWidth() - \u83b7\u53d6\u663e\u793a\u5c4f\u5bbd\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u5bbd\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayWidth()\n", "prefix": "u8g2.GetDisplayWidth"}, "u8g2.SetDrawColor": {"body": "u8g2.SetDrawColor(${1:c})", "description": "u8g2.SetDrawColor(c) - \u4e3a\u6240\u6709\u7ed8\u56fe\u529f\u80fd\u5206\u914d\u7ed8\u56fe\u989c\u8272\u3002\n\u4f20\u5165\u503c\uff1a\nint c\u4e3a\u989c\u8272\u503c 0\u6ca1\u6709\u8272 1\u6709\u8272 2\u4e0e\u5e95\u8272xor\n\u4f8b\u5b50\uff1a\nu8g2.SetDrawColor(0)\n", "prefix": "u8g2.SetDrawColor"}, "u8g2.DrawPixel": {"body": "u8g2.DrawPixel(${1:x},${2:y})", "description": "u8g2.DrawPixel(x,y) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint X\u4f4d\u7f6e.\nint Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawPixel(20, 5)\n", "prefix": "u8g2.DrawPixel"}, "u8g2.DrawLine": {"body": "u8g2.DrawLine(${1:x0},${2:y0},${3:x1},${4:y1})", "description": "u8g2.DrawLine(x0,y0,x1,y1) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawLine(20, 5, 5, 32)\n", "prefix": "u8g2.DrawLine"}, "u8g2.DrawCircle": {"body": "u8g2.DrawCircle(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawCircle(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawCircle(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawCircle"}, "u8g2.DrawDisc": {"body": "u8g2.DrawDisc(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawDisc(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawDisc(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawDisc"}, "u8g2.DrawEllipse": {"body": "u8g2.DrawEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawEllipse(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawEllipse"}, "u8g2.DrawFilledEllipse": {"body": "u8g2.DrawFilledEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawFilledEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawFilledEllipse(60,30,8,15)\n", "prefix": "u8g2.DrawFilledEllipse"}, "u8g2.DrawBox": {"body": "u8g2.DrawBox(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawBox(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u586b\u5145\u7684\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawBox(3,7,25,15)\n", "prefix": "u8g2.DrawBox"}, "u8g2.DrawFrame": {"body": "u8g2.DrawFrame(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawFrame(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u7a7a\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawFrame(3,7,25,15)\n", "prefix": "u8g2.DrawFrame"}, "u8g2.DrawRBox": {"body": "u8g2.DrawRBox(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRBox(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u586b\u5145\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRBox(3,7,25,15)\n", "prefix": "u8g2.DrawRBox"}, "u8g2.DrawRFrame": {"body": "u8g2.DrawRFrame(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRFrame(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u7a7a\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRFrame(3,7,25,15)\n", "prefix": "u8g2.DrawRFrame"}, "u8g2.DrawGlyph": {"body": "u8g2.DrawGlyph(${1:x},${2:y},${3:encoding})", "description": "u8g2.DrawGlyph(x,y,encoding) - \u7ed8\u5236\u4e00\u4e2a\u56fe\u5f62\u5b57\u7b26\u3002\u5b57\u7b26\u653e\u7f6e\u5728\u6307\u5b9a\u7684\u50cf\u7d20\u4f4d\u7f6ex\u548cy.\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u7684Unicode\u503c\n\u4f8b\u5b50\uff1a\nu8g2.SetFont(u8g2_font_unifont_t_symbols)\nu8g2.DrawGlyph(5, 20, 0x2603) -- dec 9731/hex 2603 Snowman\n", "prefix": "u8g2.DrawGlyph"}, "u8g2.DrawTriangle": {"body": "u8g2.DrawTriangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:x2},${6:y2})", "description": "u8g2.DrawTriangle(x0,y0,x1,y1,x2,y2) - \u7ed8\u5236\u4e00\u4e2a\u4e09\u89d2\u5f62\uff08\u5b9e\u5fc3\u591a\u8fb9\u5f62\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u70b90X\u4f4d\u7f6e\nint \u70b90Y\u4f4d\u7f6e\nint \u70b91X\u4f4d\u7f6e\nint \u70b91Y\u4f4d\u7f6e\nint \u70b92X\u4f4d\u7f6e\nint \u70b92Y\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nu8g2.DrawTriangle(20,5, 27,50, 5,32)\n", "prefix": "u8g2.DrawTriangle"}, "u8g2.SetBitmapMode": {"body": "u8g2.SetBitmapMode(${1:mode})", "description": "u8g2.SetBitmapMode(mode) - \u5b9a\u4e49\u4f4d\u56fe\u51fd\u6570\u662f\u5426\u5c06\u5199\u5165\u80cc\u666f\u8272\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetBitmapMode(1)\n", "prefix": "u8g2.SetBitmapMode"}, "u8g2.DrawXBM": {"body": "u8g2.DrawXBM(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "u8g2.DrawXBM(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nu8g2.DrawXBM(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "u8g2.DrawXBM"}, "u8g2.DrawDrcode": {"body": "u8g2.DrawDrcode(${1:x},${2:y},${3:str},${4:size})", "description": "u8g2.DrawDrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.DrawDrcode"}, "u8g2.SetContrast": {"body": "u8g2.SetContrast(${1:contrast})", "description": "u8g2.SetContrast(contrast) - \u8c03\u6574\u5c4f\u5e55\u5bf9\u6bd4\u5ea6\n\u4f20\u5165\u503c\uff1a\nint \u5bf9\u6bd4\u5ea6\uff08\u53d6\u503c\u8303\u56f4\u4e0eIC\u6709\u5173\uff0c\u5982st7567\u4e3a0-63\uff09\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.SetContrast"}, "u8g2.drawGtfontGb2312": {"body": "u8g2.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontGb2312"}, "u8g2.drawGtfontUtf8": {"body": "u8g2.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontUtf8"}, "u8g2.CopyBuffer": {"body": "u8g2.CopyBuffer(${1:buff})", "description": "u8g2.CopyBuffer(buff) - \u83b7\u53d6\u5e95\u5c42\u56fe\u50cf\u7f13\u51b2\u533a\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f8b,\u7a7a\u95f4\u8981\u5927\u4e8e\u7b49\u4e8e\u5e95\u5c42buff\u7684\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56debuff\u5927\u5c0f,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728u8g2\u521d\u59cb\u5316\u4e4b\u540e\u624d\u80fd\u8c03\u7528\n\n-- \u83b7\u53d6\u5927\u5c0f\nlocal sz = u8g2.CopyBuffer()\n\n-- \u62f7\u8d1d\u5e95\u5c42buff\nlocal buff = zbuff.create(sz)\nu8g2.CopyBuffer(buff)\n\n", "prefix": "u8g2.CopyBuffer"}, "u8g2.SetPowerSave": {"body": "u8g2.SetPowerSave(${1:is_enable})", "description": "u8g2.SetPowerSave(is_enable) - \u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nboolean \u542f\u7528\u4e0e\u5426. true \u542f\u7528, false\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2023.11.02\u65b0\u589e\n-- \u5f00\u542f\u7701\u7535\nu8g2.SetPowerSave(true)\n-- \u5173\u95ed\u7701\u7535\nu8g2.SetPowerSave(false)\n", "prefix": "u8g2.SetPowerSave"}, "uart.setup": {"body": "uart.setup(${1:id},${2:baud_rate},${3:data_bits},${4:stop_bits},${5:partiy},${6:bit_order},${7:buff_size},${8:rs485_gpio},${9:rs485_level},${10:rs485_delay},${11:debug_enable},${12:error_drop})", "description": "uart.setup(id, baud_rate, data_bits, stop_bits, partiy, bit_order, buff_size, rs485_gpio, rs485_level, rs485_delay, debug_enable, error_drop) - \u914d\u7f6e\u4e32\u53e3\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8, \u6700\u5927\u503c\u53d6\u51b3\u4e8e\u8bbe\u5907\nint \u6ce2\u7279\u7387, \u9ed8\u8ba4115200\uff0c\u53ef\u9009\u62e9\u6ce2\u7279\u7387\u8868:{2000000,921600,460800,230400,115200,57600,38400,19200,9600,4800,2400}\nint \u6570\u636e\u4f4d\uff0c\u9ed8\u8ba4\u4e3a8, \u53ef\u9009 7/8\nint \u505c\u6b62\u4f4d\uff0c\u9ed8\u8ba4\u4e3a1, \u6839\u636e\u5b9e\u9645\u60c5\u51b5\uff0c\u53ef\u4ee5\u67090.5/1/1.5/2\u7b49\nint \u6821\u9a8c\u4f4d\uff0c\u53ef\u9009 uart.None/uart.Even/uart.Odd\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4\u5c0f\u7aef uart.LSB, \u53ef\u9009 uart.MSB\nint \u7f13\u51b2\u533a\u5927\u5c0f\uff0c\u9ed8\u8ba4\u503c1024\nint 485\u6a21\u5f0f\u4e0b\u7684\u8f6c\u6362GPIO, \u9ed8\u8ba4\u503c0xffffffff\nint 485\u6a21\u5f0f\u4e0b\u7684rx\u65b9\u5411GPIO\u7684\u7535\u5e73, \u9ed8\u8ba4\u503c0\nint 485\u6a21\u5f0f\u4e0btx\u5411rx\u8f6c\u6362\u7684\u5ef6\u8fdf\u65f6\u95f4\uff0c\u9ed8\u8ba4\u503c12bit\u7684\u65f6\u95f4\uff0c\u5355\u4f4dus, 9600\u6ce2\u7279\u7387\u586b20000\nint \u5f00\u542f\u8c03\u8bd5\u529f\u80fd\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.DEBUG\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\nint \u9047\u5230\u63a5\u6536\u9519\u8bef\u662f\u5426\u653e\u5f03\u7f13\u5b58\u6570\u636e\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.ERROR_DROP\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5931\u8d25\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u6700\u5e38\u7528115200 8N1\nuart.setup(1, 115200, 8, 1, uart.NONE)\n-- \u53ef\u4ee5\u7b80\u5199\u4e3a uart.setup(1)\n\n-- 485\u81ea\u52a8\u5207\u6362, \u9009\u53d6GPIO10\u4f5c\u4e3a\u6536\u53d1\u8f6c\u6362\u811a\nuart.setup(1, 115200, 8, 1, uart.NONE, uart.LSB, 1024, 10, 0, 2000)\n-- \u9047\u5230\u63a5\u6536\u9519\u8bef\u4e0d\u629b\u5f03\u7f13\u5b58\u6570\u636e\nuart.setup(1, 115200, 8, 1, uart.NONE, nil, 1024, nil, nil, nil, nil, 0)\n", "prefix": "uart.setup"}, "uart.write": {"body": "uart.write(${1:id},${2:data})", "description": "uart.write(id, data) - \u5199\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring/zbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u5168\u53d1\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u5199\u5165\u53ef\u89c1\u5b57\u7b26\u4e32\nuart.write(1, \"rdy\\r\\n\")\n-- \u5199\u5165\u5341\u516d\u8fdb\u5236\u7684\u6570\u636e\u4e32\nuart.write(1, string.char(0x55,0xAA,0x4B,0x03,0x86))\n", "prefix": "uart.write"}, "uart.read": {"body": "uart.read(${1:id},${2:len})", "description": "uart.read(id, len) - \u8bfb\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nint \u8bfb\u53d6\u957f\u5ea6\nfile/zbuff \u53ef\u9009\uff1a\u6587\u4ef6\u53e5\u67c4\u6216zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u5230\u7684\u6570\u636e / \u4f20\u5165zbuff\u65f6\uff0c\u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.read(1, 16)\n", "prefix": "uart.read"}, "uart.close": {"body": "uart.close(${1:id})", "description": "uart.close(id) - \u5173\u95ed\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.close(1)\n", "prefix": "uart.close"}, "uart.on": {"body": "uart.on(${1:id},${2:event},${3:func})", "description": "uart.on(id, event, func) - \u6ce8\u518c\u4e32\u53e3\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.on(1, \"receive\", function(id, len)\n local data = uart.read(id, len)\n log.info(\"uart\", id, len, data)\nend)\n", "prefix": "uart.on"}, "uart.wait485": {"body": "uart.wait485(${1:id})", "description": "uart.wait485(id) - \u7b49\u5f85485\u6a21\u5f0f\u4e0bTX\u5b8c\u6210\uff0cmcu\u4e0d\u652f\u6301\u4e32\u53e3\u53d1\u9001\u79fb\u4f4d\u5bc4\u5b58\u5668\u7a7a\u6216\u8005\u7c7b\u4f3c\u4e2d\u65ad\u65f6\u624d\u9700\u8981\uff0c\u5728sent\u4e8b\u4ef6\u56de\u8c03\u540e\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u7b49\u5f85\u4e86\u591a\u5c11\u6b21\u5faa\u73af\u624d\u7b49\u5230tx\u5b8c\u6210\uff0c\u7528\u4e8e\u7c97\u52a3\u7684\u89c2\u5bdfdelay\u65f6\u95f4\u662f\u5426\u8db3\u591f\uff0c\u8fd4\u56de\u4e0d\u4e3a0\u8bf4\u660e\u8fd8\u9700\u8981\u653e\u5927delay\n", "prefix": "uart.wait485"}, "uart.exist": {"body": "uart.exist(${1:id})", "description": "uart.exist(id) - \u68c0\u67e5\u4e32\u53e3\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue\n", "prefix": "uart.exist"}, "uart.rx": {"body": "uart.rx(${1:id},${2:buff})", "description": "uart.rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u4e32\u53e3\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.rx(1, buff)\n", "prefix": "uart.rx"}, "uart.rxSize": {"body": "uart.rxSize(${1:id})", "description": "uart.rxSize(id) - \u8bfb\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal size = uart.rxSize(1)\n", "prefix": "uart.rxSize"}, "uart.rxClear": {"body": "uart.rxClear(${1:id})", "description": "uart.rxClear(id) - \u6e05\u9664\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u4f8b\u5b50\uff1a\nuart.rxClear(1)\n", "prefix": "uart.rxClear"}, "uart.tx": {"body": "uart.tx(${1:id},${2:buff},${3:start},${4:len})", "description": "uart.tx(id, buff, start, len) - buff\u5f62\u5f0f\u5199\u4e32\u53e3,\u7b49\u540c\u4e8ec\u8bed\u8a00uart_tx(uart_id, &buff[start], len);\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nuart.tx(1, buf)\n", "prefix": "uart.tx"}, "uart.createSoft": {"body": "uart.createSoft(${1:tx_pin},${2:tx_hwtimer_id},${3:rx_pin},${4:rx_hwtimer_id},${5:adjust_period})", "description": "uart.createSoft(tx_pin, tx_hwtimer_id, rx_pin, rx_hwtimer_id, adjust_period) - \u8bbe\u7f6e\u8f6f\u4ef6uart\u7684\u786c\u4ef6\u914d\u7f6e\uff0c\u53ea\u6709\u652f\u6301\u786c\u4ef6\u5b9a\u65f6\u5668\u7684SOC\u624d\u80fd\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e00\u4e2a\uff0c\u6ce2\u7279\u7387\u6839\u636e\u5e73\u53f0\u7684\u8f6f\u786c\u4ef6\u914d\u7f6e\u6709\u4e0d\u540c\u7684\u6781\u9650\uff0c\u5efa\u8bae9600\uff0c\u63a5\u6536\u7f13\u5b58\u4e0d\u8d85\u8fc765535\uff0c\u4e0d\u652f\u6301MSB\uff0c\u652f\u6301485\u81ea\u52a8\u63a7\u5236\u3002\u540e\u7eed\u4ecd\u8981setup\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u53d1\u9001\u5f15\u811a\u7f16\u53f7\nint \u53d1\u9001\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u63a5\u6536\u5f15\u811a\u7f16\u53f7\nint \u63a5\u6536\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u53d1\u9001\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\nint \u63a5\u6536\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\n\u8fd4\u56de\u503c\uff1a\nint \u8f6f\u4ef6uart\u7684id\uff0c\u5982\u679c\u5931\u8d25\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6uart\nlocal uart_id = uart.createSoft(21, 0, 1, 2) --air780e\u5efa\u8bae\u7528\u5b9a\u65f6\u56680\u548c2\uff0ctx_pin\u6700\u597d\u7528AGPIO\uff0c\u9632\u6b62\u4f11\u7720\u65f6\u8bef\u89e6\u53d1\u5bf9\u7aefRX\n", "prefix": "uart.createSoft"}, "uart.list": {"body": "uart.list(${1:max})", "description": "uart.list(max) - \u83b7\u53d6\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\uff0c\u5f53\u524d\u4ec5\u9650win32\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4256\uff0c\u6700\u591a\u83b7\u53d6\u591a\u5c11\u4e2a\u4e32\u53e3\n\u8fd4\u56de\u503c\uff1a\ntable \u83b7\u53d6\u5230\u7684\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\n", "prefix": "uart.list"}, "usbapp.set_id": {"body": "usbapp.set_id(${1:id},${2:vid},${3:pid})", "description": "usbapp.set_id(id, vid, pid) - USB \u8bbe\u7f6eVID\u548cPID\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint vid \u5c0f\u7aef\u683c\u5f0f\nint pid \u5c0f\u7aef\u683c\u5f0f\n\u4f8b\u5b50\uff1a\nusbapp.set_id(0, 0x1234, 0x5678)\n", "prefix": "usbapp.set_id"}, "usbapp.hid_mode": {"body": "usbapp.hid_mode(${1:id},${2:mode},${3:buff_size})", "description": "usbapp.hid_mode(id, mode, buff_size) - USB HID\u8bbe\u5907\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint mode\uff0c\u76ee\u524d0\u662f\u952e\u76d8\uff0c1\u662f\u81ea\u5b9a\u4e49\nint buff_size\uff0c\u53ea\u80fd\u662f8,16,32,64\uff0c\u5982\u679c\u662f\u952e\u76d8\u6a21\u5f0f\u6216\u8005\u586b\u4e86\u5176\u4ed6\u503c\uff0c\u81ea\u52a8\u4e3a8\n\u4f8b\u5b50\uff1a\nusbapp.hid_mode(0, 0) -- usb hid\u952e\u76d8\u6a21\u5f0f\nusbapp.hid_mode(0, 1) -- usb hid\u81ea\u5b9a\u4e49\u6a21\u5f0f\uff0c\u7528\u4e8e\u514d\u9a71USB\u4ea4\u4e92\n", "prefix": "usbapp.hid_mode"}, "usbapp.start": {"body": "usbapp.start(${1:id})", "description": "usbapp.start(id) - \u542f\u52a8USB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u542f\u52a8USB\nusbapp.start(0)\n", "prefix": "usbapp.start"}, "usbapp.stop": {"body": "usbapp.stop(${1:id})", "description": "usbapp.stop(id) - \u5173\u95edUSB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\nusbapp.stop(0)\n", "prefix": "usbapp.stop"}, "usbapp.vhid_upload": {"body": "usbapp.vhid_upload(${1:id},${2:data})", "description": "usbapp.vhid_upload(id, data) - USB HID\u8bbe\u5907\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring \u6570\u636e. \u6ce8\u610f, HID\u7684\u53ef\u7528\u5b57\u7b26\u662f\u6709\u9650\u5236\u7684, \u57fa\u672c\u4e0a\u53ea\u6709\u53ef\u89c1\u5b57\u7b26\u662f\u652f\u6301\u7684, \u4e0d\u652f\u6301\u7684\u5b57\u7b26\u4f1a\u66ff\u6362\u4e3a\u7a7a\u683c.\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.vhid_upload(0, \"1234\") -- usb hid\u4f1a\u6a21\u62df\u6572\u51fa1234\n", "prefix": "usbapp.vhid_upload"}, "usbapp.hid_tx": {"body": "usbapp.hid_tx(${1:id},${2:data},${3:start},${4:len})", "description": "usbapp.hid_tx(id, data, start, len) - USB HID\u8bbe\u5907\u4e0a\u4f20\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring or zbuff \u6ce8\u610f\u6570\u636e\u91cf\u4e0d\u8db3\u65f6\u4f1a\u81ea\u52a8\u586b\u51450\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.hid_tx(0, \"1234\") -- usb hid\u4e0a\u4f200x31 0x32 0x33 0x34 + N\u4e2a0\n", "prefix": "usbapp.hid_tx"}, "usbapp.hid_rx": {"body": "usbapp.hid_rx(${1:id},${2:buff})", "description": "usbapp.hid_rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u63a5\u6536\u5230\u7684\u6570\u636e\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524d\u53ea\u6709air105\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nusbapp.hid_rx(0, buff)\n", "prefix": "usbapp.hid_rx"}, "usbapp.vhid_cancel_upload": {"body": "usbapp.vhid_cancel_upload(${1:id})", "description": "usbapp.vhid_cancel_upload(id) - USB HID\u8bbe\u5907\u53d6\u6d88\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6d88\u4e0a\u4f20\u6570\u636e,\u901a\u5e38\u4e0d\u9700\u8981\nusbapp.vhid_cancel_upload(0)\n", "prefix": "usbapp.vhid_cancel_upload"}, "usbapp.udisk_attach_sdhc": {"body": "usbapp.udisk_attach_sdhc(${1:id})", "description": "usbapp.udisk_attach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_attach_sdhc(0)\n", "prefix": "usbapp.udisk_attach_sdhc"}, "usbapp.udisk_detach_sdhc": {"body": "usbapp.udisk_detach_sdhc(${1:id})", "description": "usbapp.udisk_detach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u53bb\u9664\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_detach_sdhc(0)\n", "prefix": "usbapp.udisk_detach_sdhc"}, "w5500.init": {"body": "w5500.init(${1:spiid},${2:speed},${3:cs_pin},${4:irq_pin},${5:rst_pin},${6:link_pin})", "description": "w5500.init(spiid, speed, cs_pin, irq_pin, rst_pin, link_pin) - \u521d\u59cb\u5316w5500\n\u4f20\u5165\u503c\uff1a\nint spi\u901a\u9053\u53f7, \u4f8b\u5982 0, 1, 5, \u6309\u8bbe\u5907\u5b9e\u9645\u60c5\u51b5\u9009\nint spi\u901f\u5ea6, \u53ef\u4ee5\u8bbe\u7f6e\u5230\u5bf9\u5e94SPI\u7684\u6700\u9ad8\u901f\u5ea6\nint cs pin, \u7247\u9009\u811a, \u5bf9\u5e94W5500\u7684SCS\nint irq pin, \u4e2d\u65ad\u811a, \u5bf9\u5e94W5500\u7684INT\nint reset pin, \u590d\u4f4d\u811a, \u5bf9\u5e94W5500\u7684RST\nint link \u72b6\u6001 pin\uff0c\u53ef\u4ee5\u7559\u7a7a\u4e0d\u4f7f\u7528\uff0c\u9ed8\u8ba4\u4e0d\u4f7f\u7528\n\u4f8b\u5b50\uff1a\nw5500.init(spi.SPI_0, 24000000, pin.PB13, pin.PC08, pin.PC09)\n", "prefix": "w5500.init"}, "w5500.config": {"body": "w5500.config(${1:ip},${2:submask},${3:gateway},${4:mac},${5:RTR},${6:RCR},${7:speed})", "description": "w5500.config(ip, submask, gateway, mac, RTR, RCR, speed) - w5500\u914d\u7f6e\u7f51\u7edc\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9759\u6001ip\u5730\u5740\uff0c\u5982\u679c\u9700\u8981\u7528DHCP\u83b7\u53d6\uff0c\u8bf7\u5199nil\nstring \u5b50\u7f51\u63a9\u7801\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring \u7f51\u5173\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring MAC\uff0c\u5199nil\u5219\u901a\u8fc7MCU\u552f\u4e00\u7801\u81ea\u52a8\u751f\u6210\uff0c\u5982\u679c\u8981\u5199\uff0c\u957f\u5ea6\u5fc5\u987b\u662f6byte\nint \u91cd\u8bd5\u95f4\u9694\u65f6\u95f4\uff0c\u9ed8\u8ba42000\uff0c\u5355\u4f4d100us\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u6700\u5927\u91cd\u8bd5\u6b21\u6570\uff0c\u9ed8\u8ba48\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u901f\u5ea6\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u67090\u786c\u4ef6\u914d\u7f6e\uff0c1\u81ea\u9002\u5e94\uff0c\u9ed8\u8ba4\u4e3a0\n\u4f8b\u5b50\uff1a\nw5500.config(\"192.168.1.2\", \"255.255.255.0\", \"192.168.1.1\", string.fromHex(\"102a3b4c5d6e\"))\n", "prefix": "w5500.config"}, "w5500.bind": {"body": "w5500.bind(${1:id})", "description": "w5500.bind(id) - \u5c06w5500\u6ce8\u518c\u8fdb\u901a\u7528\u7f51\u7edc\u63a5\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u901a\u7528\u7f51\u7edc\u901a\u9053\u53f7\n\u4f8b\u5b50\uff1a\n-- \u82e5\u4f7f\u7528\u7684\u7248\u672c\u4e0d\u5e26socket\u5e93, \u6539\u6210 network.ETH0\nw5500.bind(socket.ETH0)\n", "prefix": "w5500.bind"}, "w5500.getMac": {"body": "w5500.getMac()", "description": "w5500.getMac() - \u83b7\u53d6w5500\u5f53\u524d\u7684MAC\uff0c\u5fc5\u987b\u5728init\u4e4b\u540e\u7528\uff0c\u5982\u679cconfig\u4e2d\u8bbe\u7f6e\u4e86\u81ea\u5df1\u7684MAC\uff0c\u9700\u8981\u5ef6\u8fdf\u4e00\u70b9\u65f6\u95f4\u518d\u8bfb\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MAC\n\u4f8b\u5b50\uff1a\nlocal mac = w5500.getMac()\nlog.info(\"w5500 mac\", mac:toHex())\n", "prefix": "w5500.getMac"}, "wdt.init": {"body": "wdt.init(${1:timeout})", "description": "wdt.init(timeout) - \u521d\u59cb\u5316watchdog\u5e76\u9a6c\u4e0a\u542f\u7528.\u5927\u90e8\u5206\u8bbe\u5907\u7684watchdog\u4e00\u65e6\u542f\u7528\u5c31\u65e0\u6cd5\u5173\u95ed.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(9000)\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.init"}, "wdt.setTimeout": {"body": "wdt.setTimeout(${1:timeout})", "description": "wdt.setTimeout(timeout) - \u90e8\u5206\u8bbe\u5907\u652f\u6301\u91cd\u65b0\u8bbe\u7f6ewatchdog\u8d85\u65f6\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.timerLoopStart(wdt.feed, 3000)\nsys.wait(5000)\nsys.setTimeout(5000)\n", "prefix": "wdt.setTimeout"}, "wdt.feed": {"body": "wdt.feed()", "description": "wdt.feed() - \u5582\u72d7,\u4f7f\u5f97\u8d85\u65f6\u8ba1\u65f6\u590d\u4f4d,\u91cd\u65b0\u8ba1\u65f6\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\n-- \u5b9a\u65f6\u5582\u72d7,\u6216\u8005\u6839\u636e\u4e1a\u52a1\u6309\u9700\u5582\u72d7\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.feed"}, "wdt.close": {"body": "wdt.close()", "description": "wdt.close() - \u5173\u95edwatchdog,\u901a\u5e38\u4e0d\u88ab\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.wait(9000)\nwdt.close()\n", "prefix": "wdt.close"}, "wsc:debug": {"body": "wsc:debug(${1:onoff})", "description": "wsc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "wsc:debug"}, "websocket.create": {"body": "websocket.create(${1:adapter},${2:url},${3:keepalive},${4:use_ipv6})", "description": "websocket.create(adapter, url, keepalive, use_ipv6) - websocket\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53c2\u8003socket\u5e93\u7684\u5e38\u91cf,\u9ed8\u8ba4\u4e3anil,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f\nstring \u8fde\u63a5\u5b57\u7b26\u4e32,\u53c2\u8003usage\nint \u5fc3\u8df3\u95f4\u9694,\u9ed8\u8ba460\u79d2. 2024.4.28\u65b0\u589e\nboolean \u662f\u5426\u4f7f\u7528ipv6,\u9ed8\u8ba4false. 2024.6.17\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56dewebsocket\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nwsc = websocket.create(nil,\"ws://air32.cn/abc\")\n-- \u52a0\u5bc6TCP\u94fe\u63a5\nwsc = websocket.create(nil,\"wss://air32.cn/abc\")\n", "prefix": "websocket.create"}, "wsc:on": {"body": "wsc:on(${1:cb})", "description": "wsc:on(cb) - \u6ce8\u518cwebsocket\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb websocket\u56de\u8c03,\u53c2\u6570\u5305\u62ecwebsocket_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nwsc:on(function(websocket_client, event, data, payload)\n -- \u6253\u5370\u5404\u79cd\u4e8b\u4ef6\n log.info(\"websocket\", \"event\", event, data, payload)\nend)\n--[[\nevent\u7684\u503c\u6709:\n conack \u8fde\u63a5\u670d\u52a1\u5668\u6210\u529f,\u5df2\u7ecf\u6536\u5230websocket\u534f\u8bae\u5934\u90e8\u4fe1\u606f,\u901a\u4fe1\u5df2\u5efa\u7acb\n recv \u6536\u5230\u670d\u52a1\u5668\u4e0b\u53d1\u7684\u4fe1\u606f, data, payload \u4e0d\u4e3anil\n sent send\u51fd\u6570\u53d1\u9001\u7684\u6d88\u606f,\u670d\u52a1\u5668\u5728TCP\u534f\u8bae\u5c42\u5df2\u786e\u8ba4\u6536\u5230\n disconnect \u670d\u52a1\u5668\u8fde\u63a5\u5df2\u65ad\u5f00\n\n\u5176\u4e2d sent/disconnect \u4e8b\u4ef6\u5728 2023.04.01 \u65b0\u589e\n]]\n", "prefix": "wsc:on"}, "wsc:connect": {"body": "wsc:connect()", "description": "wsc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nwsc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65adwebsocket\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "wsc:connect"}, "wsc:autoreconn": {"body": "wsc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "wsc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nwsc:autoreconn(true)\n", "prefix": "wsc:autoreconn"}, "wsc:send": {"body": "wsc:send(${1:data},${2:fin},${3:opt})", "description": "wsc:send(data, fin, opt) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e,\u5fc5\u586b\nint \u662f\u5426\u4e3a\u6700\u540e\u4e00\u5e27,\u9ed8\u8ba41,\u5373\u9a6c\u4e0a\u8bbe\u7f6e\u4e3a\u6700\u540e\u4e00\u5e27, \u4e5f\u5c31\u662f\u5355\u5e27\u53d1\u9001\nint \u64cd\u4f5c\u7801, \u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5e270, \u53ef\u90091\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u4e3afalse\u6216\u8005nil\n\u4f8b\u5b50\uff1a\n-- \u7b80\u5355\u53d1\u9001\u6570\u636e\nwsc:send(\"123\")\n-- \u5206\u6bb5\u53d1\u9001\u6570\u636e, \u6700\u540e\u8981\u75281(\u5373FIN\u5e27\u7ed3\u675f)\nwsc:send(\"123\", 0)\nwsc:send(\"456\", 0)\nwsc:send(\"789\", 1)\n", "prefix": "wsc:send"}, "wsc:close": {"body": "wsc:close()", "description": "wsc:close() - websocket\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nwsc:close()\n", "prefix": "wsc:close"}, "wsc:ready": {"body": "wsc:ready()", "description": "wsc:ready() - websocket\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal stat = wsc:ready()\n", "prefix": "wsc:ready"}, "wsc:headers": {"body": "wsc:headers(${1:headers})", "description": "wsc:headers(headers) - \u8bbe\u7f6e\u989d\u5916\u7684headers\n\u4f20\u5165\u503c\uff1a\ntable/string \u53ef\u4ee5\u662ftable,\u4e5f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\n-- table\u5f62\u5f0f\nwsc:headers({\n Auth=\"Basic ABCDEFGG\"\n})\n-- \u5b57\u7b26\u4e32\u5f62\u5f0f\nwsc:headers(\"Auth: Basic ABCDERG\\r\\n\")\n", "prefix": "wsc:headers"}, "wlan.init": {"body": "wlan.init()", "description": "wlan.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.init"}, "wlan.setMode": {"body": "wlan.setMode(${1:mode})", "description": "wlan.setMode(mode) - \u8bbe\u7f6ewifi\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint wifi\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3aAP\u6a21\u5f0f, \u5e7f\u64adssid, \u63a5\u6536wifi\u5ba2\u6237\u7aef\u7684\u94fe\u63a5\nwlan.setMode(wlan.AP)\n\n-- \u8bbe\u7f6e\u4e3aSTATION\u6a21\u5f0f, \u4e5f\u662f\u521d\u59cb\u5316\u540e\u7684\u9ed8\u8ba4\u6a21\u5f0f\nwlan.setMode(wlan.STATION)\n\n-- \u6df7\u5408\u6a21\u5f0f, \u505aAP\u53c8\u505aSTATION\nwlan.setMode(wlan.APSTA)\n", "prefix": "wlan.setMode"}, "wlan.ready": {"body": "wlan.ready()", "description": "wlan.ready() - \u4f5c\u4e3aSTATION\u65f6,\u662f\u5426\u5df2\u7ecf\u8fde\u63a5\u4e0aAP,\u4e14\u83b7\u53d6IP\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nbool \u5df2\u7ecf\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.ready"}, "wlan.connect": {"body": "wlan.connect(${1:ssid},${2:password},${3:auto_reconnect},${4:bssid})", "description": "wlan.connect(ssid, password, auto_reconnect, bssid) - \u4f5c\u4e3aSTATION\u65f6,\u8fde\u63a5\u5230\u6307\u5b9aAP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684ssid\nstring AP\u7684password,\u53ef\u9009\nint 0\u5173\u95ed\u81ea\u52a8\u91cd\u8fde,1\u5f00\u542f\u81ea\u52a8\u91cd\u8fde.\u5f53\u524d\u5f3a\u5236\u5f00\u542f\u81ea\u52a8\u91cd\u8fde\nstring AP\u7684bssid,\u53ef\u9009,\u5fc5\u987b\u662f6\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u53d1\u8d77\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse.\u6ce8\u610f,\u4e0d\u4ee3\u8868\u8fde\u63a5AP\u6210\u529f!!\n\u4f8b\u5b50\uff1a\n\n-- \u666e\u901a\u6a21\u5f0f,\u5e26\u5bc6\u7801\nwlan.connect(\"myap\", \"12345678\")\n-- \u666e\u901a\u6a21\u5f0f,\u4e0d\u5e26\u5bc6\u7801\nwlan.connect(\"myap\")\n-- \u7279\u6b8a\u6a21\u5f0f, \u91cd\u7528\u4e4b\u524d\u7684ssid\u548c\u5bc6\u7801,\u672c\u6b21\u76f4\u63a5\u8fde\u63a5\n-- \u6ce8\u610f, \u524d\u63d0\u662f\u672c\u6b21\u4e0a\u7535\u540e\u5df2\u7ecf\u4f20\u8fc7ssid\u548c\u6216password,\u5426\u5219\u5fc5\u5931\u8d25\nwlan.connect()\n\n-- \u7279\u6b8a\u6a21\u5f0f, \u4f7f\u7528ssid\u548c\u5bc6\u7801,\u672c\u6b21\u8fde\u63a5\u6307\u5b9abssid, 2024.5.7\u65b0\u589e\nlocal bssid = string.fromHex(\"00182946365f\")\nwlan.connect(\"myap\", \"12345678\", 1, bssid)\n", "prefix": "wlan.connect"}, "wlan.disconnect": {"body": "wlan.disconnect()", "description": "wlan.disconnect() - \u4f5c\u4e3aSTATION\u65f6,\u65ad\u5f00AP\n", "prefix": "wlan.disconnect"}, "wlan.scan": {"body": "wlan.scan()", "description": "wlan.scan() - \u626b\u63cfwifi\u9891\u6bb5\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, wlan.scan()\u662f\u5f02\u6b65API,\u542f\u52a8\u626b\u63cf\u540e\u4f1a\u9a6c\u4e0a\u8fd4\u56de\n\n-- wifi\u626b\u63cf\u6210\u529f\u540e, \u4f1a\u6709WLAN_SCAN_DONE\u6d88\u606f, \u8bfb\u53d6\u5373\u53ef\nsys.subscribe(\"WLAN_SCAN_DONE\", function ()\n local results = wlan.scanResult()\n log.info(\"scan\", \"results\", #results)\n for k,v in pairs(results) do\n log.info(\"scan\", v[\"ssid\"], v[\"rssi\"], (v[\"bssid\"]:toHex()))\n end\nend)\n\n-- \u4e0b\u9762\u6f14\u793a\u7684\u662f\u521d\u59cb\u5316wifi\u540e\u5b9a\u65f6\u626b\u63cf,\u8bf7\u6309\u5b9e\u9645\u4e1a\u52a1\u9700\u6c42\u4fee\u6539\nsys.taskInit(function()\n sys.wait(1000)\n wlan.init()\n while 1 do\n wlan.scan()\n sys.wait(15000)\n end\nend)\n", "prefix": "wlan.scan"}, "wlan.scanResult": {"body": "wlan.scanResult()", "description": "wlan.scanResult() - \u83b7\u53d6wifi\u626b\u63cf\u7ed3\u679c\n\u8fd4\u56de\u503c\uff1a\ntable \u626b\u63cf\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6cd5\u8bf7\u67e5\u9605 wlan.scan() \u51fd\u6570\n", "prefix": "wlan.scanResult"}, "wlan.smartconfig": {"body": "wlan.smartconfig(${1:mode})", "description": "wlan.smartconfig(mode) - \u914d\u7f51\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f51\u6a21\u5f0f, \u9ed8\u8ba4\u4e3aesptouch, \u82e5\u4f200\u5219\u4e3b\u52a8\u505c\u6b62\u914d\u7f51\n\u8fd4\u56de\u503c\uff1a\nbool \u542f\u52a8\u6210\u529f\u6216\u505c\u6b62\u6210\u529f, \u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.smartconfig()\nlocal ret, ssid, passwd = sys.waitUntil(\"SC_RESULT\", 180*1000) -- \u6700\u591a\u7b493\u5206\u949f\nlog.info(\"sc\", ret, ssid, passwd)\n-- \u8be6\u7ec6\u7528\u6cd5\u8bf7\u67e5\u770bdemo\n", "prefix": "wlan.smartconfig"}, "wlan.getMac": {"body": "wlan.getMac(${1:tp},${2:hexstr})", "description": "wlan.getMac(tp, hexstr) - \u83b7\u53d6mac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nbool \u662f\u5426\u8f6cHEX\u5b57\u7b26, \u9ed8\u8ba4\u662ftrue,\u5373\u8f93\u51fahex\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring MAC\u5730\u5740,\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5f62\u5f0f \"AABBCCDDEEFF\" \u6216\u539f\u59cb\u6570\u636e\n", "prefix": "wlan.getMac"}, "wlan.setMac": {"body": "wlan.setMac(${1:tp},${2:mac})", "description": "wlan.setMac(tp, mac) - \u8bbe\u7f6emac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730\nstring \u5f85\u8bbe\u7f6e\u7684MAC\u5730\u5740,\u957f\u5ea66\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6eMAC\u5730\u5740, 2023-03-01\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"F01122334455\")\nwlan.setMac(0, mac)\n\n-- \u90e8\u5206\u6a21\u5757\u652f\u6301\u6062\u590d\u9ed8\u8ba4MAC, \u4f8b\u5982esp32\u7cfb\u5217\n-- \u57282023-11-01 \u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"000000000000\")\nwlan.setMac(0, mac)\n", "prefix": "wlan.setMac"}, "wlan.getIP": {"body": "wlan.getIP()", "description": "wlan.getIP() - \u83b7\u53d6ip,\u4ec5STATION\u6216APSTA\u6a21\u5f0f\u4e0b\u6709\u610f\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring ip\u5730\u5740,\u5f53\u524d\u4ec5\u8fd4\u56deipv4\u5730\u5740,\u4f8b\u5982 \"192.168.1.25\"\n", "prefix": "wlan.getIP"}, "wlan.createAP": {"body": "wlan.createAP(${1:ssid},${2:passwd},${3:gateway},${4:netmask},${5:channel},${6:opts})", "description": "wlan.createAP(ssid, passwd, gateway, netmask, channel, opts) - \u542f\u52a8AP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684SSID,\u5fc5\u586b\nstring AP\u7684\u5bc6\u7801,\u53ef\u9009\nstring AP\u7684\u7f51\u5173\u5730\u5740, \u9ed8\u8ba4192.168.4.1\nstring AP\u7684\u7f51\u5173\u63a9\u7801, \u9ed8\u8ba4255.255.255.0\nint AP\u5efa\u7acb\u7684\u901a\u9053, \u9ed8\u8ba46\ntable AP\u7684\u914d\u7f6e\u9009\u9879, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u8c03\u7528\u672cAP\u65f6,\u82e5wifi\u6a21\u5f0f\u4e3aSTATION,\u4f1a\u81ea\u52a8\u5207\u6362\u6210 APSTA\nwlan.createAP(\"luatos1234\", \"12341234\")\n-- \u8bbe\u7f6e\u7f51\u5173IP,\u63a9\u7801, \u901a\u9053, 2023.7.13 \u65b0\u589e, BSP\u672a\u5fc5\u652f\u6301\n-- wlan.createAP(\"luatos1234\", \"12341234\", \"192.168.4.1\", \"255.255.255.0\", 6)\n\n-- opts\u66f4\u591a\u914d\u7f6e\u9879, 2024.3.5\u65b0\u589e\n--[[\n{\n hidden = false, -- \u662f\u5426\u9690\u85cfSSID, \u9ed8\u8ba4false,\u4e0d\u9690\u85cf\n max_conn = 4 -- \u6700\u5927\u5ba2\u6237\u7aef\u6570\u91cf, \u9ed8\u8ba44\n}\n]]\n", "prefix": "wlan.createAP"}, "wlan.stopAP": {"body": "wlan.stopAP()", "description": "wlan.stopAP() - \u5173\u95edAP\u529f\u80fd\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.stopAP()\n", "prefix": "wlan.stopAP"}, "wlan.getInfo": {"body": "wlan.getInfo()", "description": "wlan.getInfo() - \u83b7\u53d6\u4fe1\u606f,\u5982AP\u7684bssid,\u4fe1\u53f7\u5f3a\u5ea6, STA\u8054\u7f51\u540e\u53ef\u83b7\u53d6\n\u8fd4\u56de\u503c\uff1a\ntable \u8be6\u60c5,\u952e\u503c\u5bf9\u5f62\u5f0f\n\u4f8b\u5b50\uff1a\n\nlog.info(\"wlan\", \"info\", json.encode(wlan.getInfo()))\n--[[\n\u5178\u578b\u8f93\u51fa\n{\n \"bssid\" : \"xxxxxx\",\n \"rssi\" : -89,\n \"gw\" : \"192.168.1.1\"\n}\n]]\n", "prefix": "wlan.getInfo"}, "wlan.powerSave": {"body": "wlan.powerSave(${1:mode})", "description": "wlan.powerSave(mode) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7701\u7535\u6a21\u5f0f,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e, \u4f8b\u5982wlan.PS_NONE\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7701\u7535\u6a21\u5f0f/\u8bbe\u7f6e\u540e\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u67e5\u9605\u5e38\u91cf\u8868 PS_NONE/PS_MIN_MODEM/PS_MAX_MODEM\nlog.info(\"wlan\", \"PS\", wlan.powerSave(wlan.PS_NONE))\n-- \u672cAPI\u4e8e 2023.03.31 \u65b0\u589e\n", "prefix": "wlan.powerSave"}, "wlan.hostname": {"body": "wlan.hostname(${1:new_name})", "description": "wlan.hostname(new_name) - \u8bfb\u53d6\u6216\u8bbe\u7f6eHostname\n\u4f20\u5165\u503c\uff1a\nstring \u65b0\u7684hostname,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684hostname\u6216\u8005\u8bbe\u7f6e\u540e\u7684hostname\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.07.23 \u65b0\u589e\n-- \u672c\u51fd\u6570\u5e94\u8be5\u5728wlan.init\u4e4b\u524d\u8bbe\u7f6e\u597d, \u6700\u665a\u5e94\u65e9\u4e8ewlan.connect\n-- hostname\u7684\u9ed8\u8ba4\u503c\u662f \"LUATOS_\" + \u8bbe\u5907\u7684MAC\u503c\n-- \u4f8b\u5982: LUATOS_0022EECC2399\n\nwlan.hostname(\"\u6211\u7684wifi\u7269\u8054\u7f51\u8bbe\u5907\")\n", "prefix": "wlan.hostname"}, "wlan.staIp": {"body": "wlan.staIp(${1:dhcp_enable},${2:ip},${3:netmask},${4:gateway})", "description": "wlan.staIp(dhcp_enable, ip, netmask, gateway) - \u8bbe\u7f6eStation\u6a21\u5f0f\u4e0b\u7684IP\u83b7\u53d6\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u542f\u7528DHCP,\u9ed8\u8ba4\u662ftrue\nstring \u672c\u673aIP\u5730\u5740,\u4f8b\u5982192.168.2.200, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u63a9\u7801,\u4f8b\u5982255.255.255.0, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u7f51\u5173,\u4f8b\u5982192.168.2.1, \u7981\u7528DHCP\u65f6\u5fc5\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.06 \u65b0\u589e\n-- \u672c\u51fd\u6570\u9700\u8981\u5728wlan.init\u4e4b\u540e\u624d\u5141\u8bb8\u8c03\u7528\n\n-- \u542f\u7528DHCP, \u9ed8\u8ba4\u4e5f\u662f\u542f\u7528DHCP,\u8fd9\u91cc\u662f\u6f14\u793aAPI\u4f7f\u7528\nwlan.staIp(true)\n-- \u7981\u7528DHCP,\u81ea\u884c\u8bbe\u7f6eIP/\u63a9\u7801/\u7f51\u5173\nwlan.staIp(false, \"192.168.2.200\", \"255.255.255.0\", \"192.168.2.1\")\n", "prefix": "wlan.staIp"}, "xxtea.encrypt": {"body": "xxtea.encrypt(${1:data},${2:key})", "description": "xxtea.encrypt(data, key) - \u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u52a0\u5bc6\u7684\u6570\u636e\nstring key \u52a0\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.encrypt"}, "xxtea.decrypt": {"body": "xxtea.decrypt(${1:data},${2:key})", "description": "xxtea.decrypt(data, key) - \u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u89e3\u5bc6\u7684\u6570\u636e\nstring key \u89e3\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.decrypt"}, "ymodem.create": {"body": "ymodem.create(${1:dir_path},${2:file_path})", "description": "ymodem.create(dir_path,file_path) - \u521b\u5efa\u4e00\u4e2aymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nstring \u4fdd\u5b58\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\"/\"\nstring \u5f3a\u5236\u4fdd\u5b58\u7684\u7edd\u5bf9\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\u7a7a\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\uff0c\u5c31\u4f1a\u76f4\u63a5\u4fdd\u5b58\u5728\u8be5\u6587\u4ef6\u4e2d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nlocal handler = ymodem.create(\"/\")\n", "prefix": "ymodem.create"}, "ymodem.receive": {"body": "ymodem.receive(${1:handler},${2:data})", "description": "ymodem.receive(handler, data) - ymodem\u63a5\u6536\u6587\u4ef6\u6570\u636e\u5e76\u4fdd\u5b58\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\nzbuff/string \u8f93\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue\uff0c\u5931\u8d25false\nint ack\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\nint flag\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\uff0c\u5982\u679c\u6709ack\u503c\u5219\u4e0d\u53d1\u9001flag\nboolean, \u4e00\u4e2a\u6587\u4ef6\u63a5\u6536\u5b8c\u6210true\uff0c\u4f20\u8f93\u4e2dfalse\nboolean, \u6574\u4e2a\u4f20\u8f93\u5b8c\u6210true \u5426\u5219false\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u6570\u636e\u6765\u6e90\u4e0d\u9650, \u901a\u5e38\u662fuart.read\u5f97\u5230data\nno_error,ack,flag,file_done,all_done = ymodem.receive(handler, data)\n", "prefix": "ymodem.receive"}, "ymodem.reset": {"body": "ymodem.reset(${1:handler})", "description": "ymodem.reset(handler) - \u91cd\u7f6eymodem\u5904\u7406\u8fc7\u7a0b\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\n\u4f8b\u5b50\uff1a\n-- \u6062\u590d\u5230\u521d\u59cb\u72b6\u6001\uff0c\u4e00\u822c\u7528\u4e8e\u63a5\u6536\u51fa\u9519\u540e\u91cd\u7f6e\uff0c\u4ece\u800c\u8fdb\u884c\u4e0b\u4e00\u6b21\u63a5\u6536\nymodem.reset(handler)\n", "prefix": "ymodem.reset"}, "ymodem.release": {"body": "ymodem.release(${1:handler})", "description": "ymodem.release(handler) - \u91ca\u653eymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nuserdata handler\n\u4f8b\u5b50\uff1a\nymodem.release(handler)\n", "prefix": "ymodem.release"}, "zbuff.create": {"body": "zbuff.create(${1:length},${2:data},${3:type})", "description": "zbuff.create(length,data,type) - \u521b\u5efazbuff\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u8282\u6570\nany \u53ef\u9009\u53c2\u6570\uff0cnumber\u65f6\u4e3a\u586b\u5145\u6570\u636e\uff0cstring\u65f6\u4e3a\u586b\u5145\u5b57\u7b26\u4e32\nnumber \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nobject zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create(1024) -- \u7a7a\u767d\u7684\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal buff = zbuff.create(1024, \"123321456654\") -- \u521b\u5efa\uff0c\u5e76\u586b\u5145\u4e00\u4e2a\u5df2\u6709\u5b57\u7b26\u4e32\u7684\u5185\u5bb9\n\n-- \u521b\u5efaframebuff\u7528\u7684zbuff\n-- zbuff.create({width,height,bit},data,type)\n-- table \u5bbd\u5ea6\u3001\u9ad8\u5ea6\u3001\u8272\u4f4d\u6df1\u5ea6\n@int \u53ef\u9009\u53c2\u6570\uff0c\u586b\u5145\u6570\u636e\n@number \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n@return object zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n@usage\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create({128,160,16})--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\nlocal buff = zbuff.create({128,160,16},0xf800)--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\uff0c\u521d\u59cb\u72b6\u6001\u7ea2\u8272\n", "prefix": "zbuff.create"}, "buff:write": {"body": "buff:write(${1:para},${2:...})", "description": "buff:write(para,...) - zbuff\u5199\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal len = buff:write(\"123\") -- \u5199\u5165\u6570\u636e, \u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\uff0c\u8fd4\u56de\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\nlocal len = buff:write(0x1a,0x30,0x31,0x32,0x00,0x01) -- \u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:write"}, "buff:read": {"body": "buff:read(${1:length})", "description": "buff:read(length) - zbuff\u8bfb\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8bfb\u53d6buff\u4e2d\u7684\u5b57\u8282\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal str = buff:read(3)\n", "prefix": "buff:read"}, "buff:clear": {"body": "buff:clear(${1:num})", "description": "buff:clear(num) - zbuff\u6e05\u7a7a\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\uff0c\u4e0d\u4f1a\u6539\u53d8buff\u6307\u9488\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:clear(0)\n", "prefix": "buff:clear"}, "buff:seek": {"body": "buff:seek(${1:base},${2:offset})", "description": "buff:seek(base,offset) - zbuff\u8bbe\u7f6e\u5149\u6807\u4f4d\u7f6e\uff08\u53ef\u80fd\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u6709\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u88ab\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\uff09\n\u4f20\u5165\u503c\uff1a\nint \u504f\u79fb\u957f\u5ea6\nint where, \u57fa\u70b9\uff0c\u9ed8\u8ba4zbuff.SEEK_SET\u3002zbuff.SEEK_SET: \u57fa\u70b9\u4e3a 0 \uff08\u6587\u4ef6\u5f00\u5934\uff09\uff0czbuff.SEEK_CUR: \u57fa\u70b9\u4e3a\u5f53\u524d\u4f4d\u7f6e\uff0czbuff.SEEK_END: \u57fa\u70b9\u4e3a\u6587\u4ef6\u5c3e\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u7f6e\u5149\u6807\u540e\u4ecebuff\u5f00\u5934\u8ba1\u7b97\u8d77\u7684\u5149\u6807\u7684\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nbuff:seek(0) -- \u628a\u5149\u6807\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\nbuff:seek(5,zbuff.SEEK_CUR)\nbuff:seek(-3,zbuff.SEEK_END)\n", "prefix": "buff:seek"}, "buff:pack": {"body": "buff:pack(${1:format},${2:val1},${3:val2},${4:...})", "description": "buff:pack(format,val1, val2,...) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8f6c\u5316\uff0c\u5e76\u5199\u5165\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u540e\u9762\u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0b\u9762\u7684\u4f8b\u5b50\uff09\nval \u4f20\u5165\u7684\u6570\u636e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nbuff:pack(\">IIHA\", 0x1234, 0x4567, 0x12,\"abcdefg\") -- \u6309\u683c\u5f0f\u5199\u5165\u51e0\u4e2a\u6570\u636e\n-- A string\n-- f float\n-- d double\n-- n Lua number\n-- c char\n-- b byte / unsignen char\n-- h short\n-- H unsigned short\n-- i int\n-- I unsigned int\n-- l long\n-- L unsigned long\n-- < \u5c0f\u7aef\n-- > \u5927\u7aef\n-- = \u9ed8\u8ba4\u5927\u5c0f\u7aef\n", "prefix": "buff:pack"}, "buff:unpack": {"body": "buff:unpack(${1:format})", "description": "buff:unpack(format) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8bfb\u53d6\u51fa\u6765\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0a\u9762pack\u63a5\u53e3\u7684\u4f8b\u5b50\uff09\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8bfb\u53d6\u7684\u6570\u636e\u5b57\u8282\u957f\u5ea6\nany \u6309\u683c\u5f0f\u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal cnt,a,b,c,s = buff:unpack(\">IIHA10\") -- \u6309\u683c\u5f0f\u8bfb\u53d6\u51e0\u4e2a\u6570\u636e\n--\u5982\u679c\u5168\u90e8\u6210\u529f\u8bfb\u53d6\uff0ccnt\u5c31\u662f4+4+2+10=20\n", "prefix": "buff:unpack"}, "buff:read\u7c7b\u578b": {"body": "buff:read\u7c7b\u578b()", "description": "buff:read\u7c7b\u578b() - \u8bfb\u53d6\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\n\u6ce8\u91ca \u8bfb\u53d6\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u8bfb\u53d6\u7684\u6570\u636e\uff0c\u5982\u679c\u8d8a\u754c\u5219\u4e3anil\n\u4f8b\u5b50\uff1a\nlocal data = buff:readI8()\nlocal data = buff:readU32()\n", "prefix": "buff:read\u7c7b\u578b"}, "buff:write\u7c7b\u578b": {"body": "buff:write\u7c7b\u578b()", "description": "buff:write\u7c7b\u578b() - \u5199\u5165\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nnumber \u5f85\u5199\u5165\u7684\u6570\u636e\n\u6ce8\u91ca \u5199\u5165\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:writeI8(10)\nlocal len = buff:writeU32(1024)\n", "prefix": "buff:write\u7c7b\u578b"}, "buff:toStr": {"body": "buff:toStr(${1:offset},${2:length})", "description": "buff:toStr(offset,length) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea6\u53d6\u51fa\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nint \u6570\u636e\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662f\u5168\u90e8\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:toStr(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\nlocal s = buff:toStr() -- \u53d6\u51fa\u6574\u4e2azbuff\u7684\u6570\u636e\nlocal s = buff:toStr(0, buff:used()) -- \u53d6\u51fa\u5df2\u4f7f\u7528\u7684\u90e8\u5206, \u4e0ebuff:query()\u4e00\u6837\n", "prefix": "buff:toStr"}, "buff:len": {"body": "buff:len()", "description": "buff:len() - \u83b7\u53d6zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u8fd4\u56de\u503c\uff1a\nint zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlen = buff:len()\nlen = #buff\n", "prefix": "buff:len"}, "buff:setFrameBuffer": {"body": "buff:setFrameBuffer(${1:width},${2:height},${3:bit},${4:color})", "description": "buff:setFrameBuffer(width,height,bit,color) - \u8bbe\u7f6ebuff\u5bf9\u8c61\u7684FrameBuffer\u5c5e\u6027\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint FrameBuffer\u7684\u5bbd\u5ea6\nint FrameBuffer\u7684\u9ad8\u5ea6\nint FrameBuffer\u7684\u8272\u4f4d\u6df1\u5ea6\nint FrameBuffer\u7684\u521d\u59cb\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nresult = buff:setFrameBuffer(320,240,16,0xffff)\n", "prefix": "buff:setFrameBuffer"}, "buff:pixel": {"body": "buff:pixel(${1:x},${2:y},${3:color})", "description": "buff:pixel(x,y,color) - \u8bbe\u7f6e\u6216\u83b7\u53d6FrameBuffer\u67d0\u4e2a\u50cf\u7d20\u70b9\u7684\u989c\u8272\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u989c\u8272\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u83b7\u53d6\u8be5\u4f4d\u7f6e\u7684\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nany \u8bbe\u7f6e\u989c\u8272\u65f6\uff0c\u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\uff1b\u8bfb\u53d6\u989c\u8272\u65f6\uff0c\u8fd4\u56de\u989c\u8272\u7684\u503c\uff0c\u8bfb\u53d6\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nrerult = buff:pixel(0,3,0)\ncolor = buff:pixel(0,3)\n", "prefix": "buff:pixel"}, "buff:drawLine": {"body": "buff:drawLine(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "buff:drawLine(x1,y1,x2,y2,color) - \u753b\u4e00\u6761\u7ebf\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawLine(0,0,2,3,0xffff)\n", "prefix": "buff:drawLine"}, "buff:drawRect": {"body": "buff:drawRect(${1:x1},${2:y1},${3:x2},${4:y2},${5:color},${6:fill})", "description": "buff:drawRect(x1,y1,x2,y2,color,fill) - \u753b\u4e00\u4e2a\u77e9\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawRect(0,0,2,3,0xffff)\n", "prefix": "buff:drawRect"}, "buff:drawCircle": {"body": "buff:drawCircle(${1:x},${2:y},${3:r},${4:color},${5:fill})", "description": "buff:drawCircle(x,y,r,color,fill) - \u753b\u4e00\u4e2a\u5706\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint **\u5706\u5fc3**\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint **\u5706\u5fc3**\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u5706\u7684\u534a\u5f84\nint \u53ef\u9009\uff0c\u5706\u7684\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawCircle(15,5,3,0xC)\nrerult = buff:drawCircle(15,5,3,0xC,true)\n", "prefix": "buff:drawCircle"}, "buff[n": {"body": "buff[n]", "description": "buff[n] - \u4ee5\u4e0b\u6807\u5f62\u5f0f\u8fdb\u884c\u6570\u636e\u8bfb\u5199\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u51e0\u4e2a\u6570\u636e\uff0c\u4ee50\u5f00\u59cb\u7684\u4e0b\u6807\uff08C\u6807\u51c6\uff09\n\u8fd4\u56de\u503c\uff1a\nnumber \u8be5\u4f4d\u7f6e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nbuff[0] = 0xc8\nlocal data = buff[0]\n", "prefix": "buff[n"}, "buff:free": {"body": "buff:free()", "description": "buff:free() - \u91ca\u653ezbuff\u6240\u7533\u8bf7\u5185\u5b58 \u6ce8\u610f\uff1agc\u65f6\u4f1a\u81ea\u52a8\u91ca\u653ezbuff\u4ee5\u53cazbuff\u6240\u7533\u8bf7\u5185\u5b58\uff0c\u6240\u4ee5\u901a\u5e38\u65e0\u9700\u8c03\u7528\u6b64\u51fd\u6570\uff0c\u8c03\u7528\u524d\u8bf7\u786e\u8ba4\u60a8\u5df2\u6e05\u695a\u6b64\u51fd\u6570\u7528\u5904\uff01\u8c03\u7528\u6b64\u51fd\u6570\u5e76\u4e0d\u4f1a\u91ca\u653e\u6389zbuff\uff0c\u4ec5\u4f1a\u91ca\u653e\u6389zbuff\u6240\u7533\u8bf7\u7684\u5185\u5b58\uff0czbuff\u9700\u7b49gc\u65f6\u81ea\u52a8\u91ca\u653e\uff01\uff01\uff01\n\u4f8b\u5b50\uff1a\nbuff:free()\n", "prefix": "buff:free"}, "buff:resize": {"body": "buff:resize(${1:n})", "description": "buff:resize(n) - \u8c03\u6574zbuff\u5b9e\u9645\u5206\u914d\u7a7a\u95f4\u7684\u5927\u5c0f\uff0c\u7c7b\u4f3c\u4e8erealloc\u7684\u6548\u679c\uff0cnew = realloc(old, n)\uff0c\u53ef\u4ee5\u6269\u5927\u6216\u8005\u7f29\u5c0f\uff08\u5982\u679c\u7f29\u5c0f\u540elen\u5c0f\u4e8e\u4e86used\uff0c\u90a3\u4e48used=\u65b0len\uff09\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7a7a\u95f4\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:resize(20)\n", "prefix": "buff:resize"}, "buff:copy": {"body": "buff:copy(${1:start},${2:para},${3:...})", "description": "buff:copy(start, para,...) - zbuff\u52a8\u6001\u5199\u6570\u636e\uff0c\u7c7b\u4f3c\u4e8ememcpy\u6548\u679c\uff0c\u5f53\u539f\u6709\u7a7a\u95f4\u4e0d\u8db3\u65f6\u52a8\u6001\u6269\u5927\u7a7a\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u5199\u5165buff\u7684\u8d77\u59cb\u4f4d\u7f6e\uff0c\u5982\u679c\u4e0d\u4e3a\u6570\u5b57\uff0c\u5219\u4e3abuff\u7684used\uff0c\u5982\u679c\u5c0f\u4e8e0\uff0c\u5219\u4eceused\u5f80\u524d\u6570\uff0c-1 = used - 1\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u6216zbuff\u8005\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:copy(nil, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[used], \"123\", 3) used+= 3 \u4ecebuff\u5f00\u59cb\u5199\u5165\u6570\u636e,\u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\nlocal len = buff:copy(0, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[0], \"123\", 3) if (used < 3) used = 3 \u4ece\u4f4d\u7f6e0\u5199\u5165\u6570\u636e,\u6307\u9488\u6709\u53ef\u80fd\u4f1a\u79fb\u52a8\nlocal len = buff:copy(2, 0x1a,0x30,0x31,0x32,0x00,0x01) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[2], [0x1a,0x30,0x31,0x32,0x00,0x01], 6) if (used < (2+6)) used = (2+6)\u4ece\u4f4d\u7f6e2\u5f00\u59cb\uff0c\u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\nlocal len = buff:copy(9, buff2) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[9], &buff2[0], buff2\u7684used) if (used < (9+buff2\u7684used)) used = (9+buff2\u7684used) \u4ece\u4f4d\u7f6e9\u5f00\u59cb\uff0c\u5408\u5e76\u5165buff2\u91cc0~used\u7684\u5185\u5bb9\nlocal len = buff:copy(5, buff2, 10, 1024) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[5], &buff2[10], 1024) if (used < (5+1024)) used = (5+1024)\n", "prefix": "buff:copy"}, "buff:used": {"body": "buff:used()", "description": "buff:used() - \u83b7\u53d6zbuff\u91cc\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\u5230\u9996\u5730\u5740\u7684\u504f\u79fb\u91cf\uff0c\u6765\u8868\u793azbuff\u5185\u5df2\u6709\u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\uff0c\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u540c\u4e8e\u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\uff0c\u7531\u4e8eseek()\u4f1a\u6539\u53d8\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\uff0c\u56e0\u6b64\u4e5f\u4f1a\u5f71\u54cd\u5230used()\u8fd4\u56de\u503c\u3002\n\u8fd4\u56de\u503c\uff1a\nint \u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:used()\n", "prefix": "buff:used"}, "buff:del": {"body": "buff:del(${1:offset},${2:length})", "description": "buff:del(offset,length) - \u5220\u9664zbuff 0~used\u8303\u56f4\u5185\u7684\u4e00\u6bb5\u6570\u636e\uff0c\u6ce8\u610f\u53ea\u662f\u6539\u53d8\u4e86used\u7684\u503c\uff0c\u5e76\u4e0d\u662f\u771f\u7684\u5728ram\u91cc\u53bb\u6e05\u9664\u6389\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u4f4d\u7f6estart, \u9ed8\u8ba40\uff0c\u5982\u679c<0\u5219\u4eceused\u5f80\u524d\u6570\uff0c\u6bd4\u5982 -1 \u90a3\u4e48start= used - 1\nint \u957f\u5ea6del_len\uff0c\u9ed8\u8ba4\u4e3aused\uff0c\u5982\u679cstart + del_len\u6570\u503c\u5927\u4e8eused\uff0c\u4f1a\u5f3a\u5236\u8c03\u6574del_len = used - start\n\u4f8b\u5b50\uff1a\nbuff:del(1,4) --\u4ece\u4f4d\u7f6e1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\nbuff:del(-1,4) --\u4ece\u4f4d\u7f6eused-1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\uff0c\u4f46\u662f\u8fd9\u80af\u5b9a\u4f1a\u8d85\u8fc7used\uff0c\u6240\u4ee5del_len\u4f1a\u8c03\u6574\u4e3a1\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u5220\u6389\u4e86\u6700\u540e\u4e00\u4e2a\u5b57\u8282\n", "prefix": "buff:del"}, "buff:query": {"body": "buff:query(${1:offset},${2:length},${3:isbigend},${4:issigned},${5:isfloat})", "description": "buff:query(offset,length,isbigend,issigned,isfloat) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea60~used\u8303\u56f4\u5185\u53d6\u51fa\u6570\u636e\uff0c\u5982\u679c\u662f1,2,4,8\u5b57\u8282\uff0c\u6839\u636e\u540e\u7eed\u53c2\u6570\u8f6c\u6362\u6210\u6d6e\u70b9\u6216\u8005\u6574\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09\nint \u6570\u636e\u7684\u957f\u5ea6\nboolean \u662f\u5426\u662f\u5927\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u4f1a\u8f6c\u6362\uff0c\u76f4\u63a5\u5b57\u8282\u6d41\u8f93\u51fa\nboolean \u662f\u5426\u662f\u6709\u7b26\u53f7\u7684\uff0c\u9ed8\u8ba4\u4e3afalse\nboolean \u662f\u5426\u662f\u6d6e\u70b9\u578b\uff0c\u9ed8\u8ba4\u4e3afalse\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:query(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:query"}, "buff:set": {"body": "buff:set(${1:start},${2:num},${3:len})", "description": "buff:set(start, num, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememset\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememset(&buff[start], num, len)\uff0c\u5f53\u7136\u6709ram\u8d8a\u754c\u4fdd\u62a4\uff0c\u4f1a\u5bf9len\u6709\u4e00\u5b9a\u7684\u9650\u5236\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\nint \u53ef\u9009\uff0c\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a\u5168\u90e8\u7a7a\u95f4\uff0c\u5982\u679c\u8d85\u51fa\u8303\u56f4\u4e86\uff0c\u4f1a\u81ea\u52a8\u622a\u65ad\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:set() --\u7b49\u540c\u4e8e memset(buff, 0, sizeof(buff))\nbuff:set(8) --\u7b49\u540c\u4e8e memset(&buff[8], 0, sizeof(buff) - 8)\nbuff:set(0, 0x55) --\u7b49\u540c\u4e8e memset(buff, 0x55, sizeof(buff))\nbuff:set(4, 0xaa, 12) --\u7b49\u7528\u4e8e memset(&buff[4], 0xaa, 12)\n", "prefix": "buff:set"}, "buff:isEqual": {"body": "buff:isEqual(${1:start},${2:buff2},${3:start2},${4:len})", "description": "buff:isEqual(start, buff2, start2, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememcmp\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememcmp(&buff[start], &buff2[start2], len)\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nzbuff \u6bd4\u8f83\u7684\u5bf9\u8c61\nint \u53ef\u9009\uff0c\u6bd4\u8f83\u7684\u5bf9\u8c61\u7684\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u6bd4\u8f83\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nboolean true\u76f8\u7b49\uff0cfalse\u4e0d\u76f8\u7b49\nint \u76f8\u7b49\u8fd4\u56de0\uff0c\u4e0d\u76f8\u7b49\u8fd4\u56de\u7b2c\u4e00\u4e2a\u4e0d\u76f8\u7b49\u4f4d\u7f6e\u7684\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, offset = buff:isEqual(1, buff2, 2, 10) --\u7b49\u540c\u4e8ememcmp(&buff[1], &buff2[2], 10)\n", "prefix": "buff:isEqual"}} \ No newline at end of file +{"_G": {"body": "_G(${0:...})", "description": "_G", "prefix": "_G"}, "_VERSION": {"body": "_VERSION(${0:...})", "description": "_VERSION", "prefix": "_VERSION"}, "assert": {"body": "assert(${1:v}${2:[, message]})", "description": "assert()", "prefix": "assert"}, "collectgarbage": {"body": "collectgarbage(${1:[opt]}${2:[, arg]})", "description": "collectgarbage()", "prefix": "collectgarbage"}, "coroutine.create": {"body": "coroutine.create( ${1:function} )", "description": "coroutine.create", "prefix": "coroutine.create"}, "coroutine.isyieldable": {"body": "coroutine.isyieldable( )", "description": "coroutine.isyieldable", "prefix": "coroutine.isyieldable"}, "coroutine.resume": {"body": "coroutine.resume( ${1:co}${2:[, val1, \u00b7\u00b7\u00b7]} )", "description": "coroutine.resume", "prefix": "coroutine.resume"}, "coroutine.running": {"body": "coroutine.running( )", "description": "coroutine.running", "prefix": "coroutine.running"}, "coroutine.status": {"body": "coroutine.status( ${1:co} )", "description": "coroutine.status", "prefix": "coroutine.status"}, "coroutine.wrap": {"body": "coroutine.wrap( ${1:function} )", "description": "coroutine.wrap", "prefix": "coroutine.wrap"}, "coroutine.yield": {"body": "coroutine.yield( ${1:...} )", "description": "coroutine.yield", "prefix": "coroutine.yield"}, "debug.debug": {"body": "debug.debug()", "description": "debug.debug ()", "prefix": "debug.debug"}, "debug.getfenv": {"body": "debug.getfenv(${0:...})", "description": "debug.getfenv (o)", "prefix": "debug.getfenv"}, "debug.gethook": {"body": "debug.gethook( ${1:[thread]} )", "description": "debug.gethook ([thread])", "prefix": "debug.gethook"}, "debug.getinfo": {"body": "debug.getinfo( ${1:[thread],}${2:f}${3:[, what]} )", "description": "debug.getinfo ([thread,] f [, what])", "prefix": "debug.getinfo"}, "debug.getlocal": {"body": "debug.getlocal( ${1:[thread],}${2:f}${3:[, local]} )", "description": "debug.getlocal ([thread,] f, local)", "prefix": "debug.getlocal"}, "debug.getmetatable": {"body": "debug.getmetatable( ${1:value} )", "description": "debug.getmetatable (value)", "prefix": "debug.getmetatable"}, "debug.getregistry": {"body": "debug.getregistry()", "description": "debug.getregistry ()", "prefix": "debug.getregistry"}, "debug.getupvalue": {"body": "debug.getupvalue( ${1:f}, ${2:up} )", "description": "debug.getupvalue (f, up)", "prefix": "debug.getupvalue"}, "debug.getuservalue": {"body": "debug.getuservalue(${0:...})", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue"}, "debug.getuservalue ": {"body": "debug.getuservalue ( ${1:u} )", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue "}, "debug.setfenv": {"body": "debug.setfenv(${0:...})", "description": "debug.setfenv (object, table)", "prefix": "debug.setfenv"}, "debug.sethook": {"body": "debug.sethook( ${1:[thead,]}${2:hook}, ${3:mask}${4:[, count]} )", "description": "debug.sethook ([thread,] hook, mask [, count])", "prefix": "debug.sethook"}, "debug.setlocal": {"body": "debug.setlocal( ${1:[thead,]}${2:level}, ${3:local}, ${4:value} )", "description": "debug.setlocal ([thread,] level, local, value)", "prefix": "debug.setlocal"}, "debug.setmetatable": {"body": "debug.setmetatable( ${1:value}, ${2:table} )", "description": "debug.setmetatable (value, table)", "prefix": "debug.setmetatable"}, "debug.setupvalue": {"body": "debug.setupvalue( ${1:f}, ${2:up}, ${3:value} )", "description": "debug.setupvalue (f, up, value)", "prefix": "debug.setupvalue"}, "debug.setuservalue": {"body": "debug.setuservalue( ${1:udata}, ${2:value} )", "description": "debug.setuservalue (udata, value)", "prefix": "debug.setuservalue"}, "debug.traceback": {"body": "debug.traceback( ${1:[thread,]}${2:[message]}${3:[, level]} )", "description": "debug.traceback ([thread,] [message [, level]])", "prefix": "debug.traceback"}, "debug.upvalueid": {"body": "debug.upvalueid( ${1:f}, ${2:n})", "description": "debug.upvalueid (f, n)", "prefix": "debug.upvalueid"}, "debug.upvaluejoin": {"body": "debug.upvaluejoin( ${1:f1}, ${2:n1}, ${3:f2}, ${4:n2} )", "description": "debug.upvaluejoin (f1, n1, f2, n2)", "prefix": "debug.upvaluejoin"}, "dofile": {"body": "dofile(${1:[filename]})", "description": "dofile ([filename])", "prefix": "dofile"}, "elif": {"body": "else if ${1:condition} then\n\t${0:-- body}\n", "description": "elif", "prefix": "elif"}, "error": {"body": "error(${0:...})", "description": "error (message [, level])", "prefix": "error"}, "file:close": {"body": "file:close(${0:...})", "description": "file:close ()", "prefix": "file:close"}, "file:flush": {"body": "file:flush(${0:...})", "description": "file:flush ()", "prefix": "file:flush"}, "file:lines": {"body": "file:lines(${0:...})", "description": "file:lines ()", "prefix": "file:lines"}, "file:read": {"body": "file:read(${0:...})", "description": "file:read (...)", "prefix": "file:read"}, "file:seek": {"body": "file:seek(${0:...})", "description": "file:seek ([whence] [, offset])", "prefix": "file:seek"}, "file:setvbuf": {"body": "file:setvbuf(${0:...})", "description": "file:setvbuf (mode [, size])", "prefix": "file:setvbuf"}, "file:write": {"body": "file:write(${0:...})", "description": "file:write (...)", "prefix": "file:write"}, "for": {"body": "for ${1:i}=${2:1},${3:10} do\n\t${0:print(i)}\nend", "description": "for i=1,10", "prefix": "for"}, "fori": {"body": "for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t${0:print(i,v)}\nend", "description": "for i,v in ipairs()", "prefix": "fori"}, "forp": {"body": "for ${1:k},${2:v} in pairs(${3:table_name}) do\n\t${0:print(k,v)}\nend", "description": "for k,v in pairs()", "prefix": "forp"}, "fun": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "fun"}, "function": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "function"}, "getfenv": {"body": "getfenv(${0:...})", "description": "getfenv ([f])", "prefix": "getfenv"}, "getmetatable": {"body": "getmetatable(${1:object})", "description": "getmetatable (object)", "prefix": "getmetatable"}, "if": {"body": "if ${1:condition} then\n\t${0:-- body}\nend", "description": "if", "prefix": "if"}, "ifel": {"body": "if ${1:condition} then\n\t${2:-- body}\nelse\n\t${0:-- body}\nend", "description": "ifel", "prefix": "ifel"}, "io.close": {"body": "io.close(${0:...})", "description": "io.close ([file])", "prefix": "io.close"}, "io.flush": {"body": "io.flush(${0:...})", "description": "io.flush ()", "prefix": "io.flush"}, "io.input": {"body": "io.input(${0:...})", "description": "io.input ([file])", "prefix": "io.input"}, "io.lines": {"body": "io.lines(${0:...})", "description": "io.lines ([filename])", "prefix": "io.lines"}, "io.open": {"body": "io.open(${0:...})", "description": "io.open (filename [, mode])", "prefix": "io.open"}, "io.output": {"body": "io.output(${0:...})", "description": "io.output ([file])", "prefix": "io.output"}, "io.popen": {"body": "io.popen(${0:...})", "description": "io.popen (prog [, mode])", "prefix": "io.popen"}, "io.read": {"body": "io.read(${0:...})", "description": "io.read (...)", "prefix": "io.read"}, "io.tmpfile": {"body": "io.tmpfile(${0:...})", "description": "io.tmpfile ()", "prefix": "io.tmpfile"}, "io.type": {"body": "io.type(${0:...})", "description": "io.type (obj)", "prefix": "io.type"}, "io.write": {"body": "io.write(${0:...})", "description": "io.write (...)", "prefix": "io.write"}, "ipairs": {"body": "ipairs(${0:...})", "description": "ipairs (t)", "prefix": "ipairs"}, "load": {"body": "load(${0:...})", "description": "load (func [, chunkname])", "prefix": "load"}, "loadfile": {"body": "loadfile(${0:...})", "description": "loadfile ([filename])", "prefix": "loadfile"}, "loadstring": {"body": "loadstring(${0:...})", "description": "loadstring (string [, chunkname])", "prefix": "loadstring"}, "local": {"body": "local ${1:x} = ${0:1}", "description": "local x = 1", "prefix": "local"}, "math.abs": {"body": "math.abs( ${1:x} )", "description": "math.abs", "prefix": "math.abs"}, "math.acos": {"body": "math.acos( ${1:x} )", "description": "math.acos", "prefix": "math.acos"}, "math.asin": {"body": "math.asin( ${1:x} )", "description": "math.asin", "prefix": "math.asin"}, "math.atan": {"body": "math.atan( ${1:y}${2:[, x]} )", "description": "math.atan", "prefix": "math.atan"}, "math.atan2": {"body": "math.atan2(${0:...})", "description": "math.atan2 (y, x)", "prefix": "math.atan2"}, "math.ceil": {"body": "math.ceil( ${1:x} )", "description": "math.ceil", "prefix": "math.ceil"}, "math.cos": {"body": "math.cos( ${1:x} )", "description": "math.cos", "prefix": "math.cos"}, "math.cosh": {"body": "math.cosh(${0:...})", "description": "math.cosh (x)", "prefix": "math.cosh"}, "math.deg": {"body": "math.deg( ${1:x} )", "description": "math.deg", "prefix": "math.deg"}, "math.exp": {"body": "math.exp( ${1:x} )", "description": "math.exp", "prefix": "math.exp"}, "math.floor": {"body": "math.floor( ${1:x} )", "description": "math.floor", "prefix": "math.floor"}, "math.fmod": {"body": "math.fmod( ${1:x},${2:y} )", "description": "math.fmod", "prefix": "math.fmod"}, "math.frexp": {"body": "math.frexp(${0:...})", "description": "math.frexp (x)", "prefix": "math.frexp"}, "math.huge": {"body": "math.huge(${0:...})", "description": "math.huge", "prefix": "math.huge"}, "math.ldexp": {"body": "math.ldexp(${0:...})", "description": "math.ldexp (m, e)", "prefix": "math.ldexp"}, "math.log": {"body": "math.log( ${1:x}${2:[, base]} )", "description": "math.log", "prefix": "math.log"}, "math.log10": {"body": "math.log10(${0:...})", "description": "math.log10 (x)", "prefix": "math.log10"}, "math.math.randomseed": {"body": "math.math.randomseed( ${1:x} )", "description": "math.math.randomseed", "prefix": "math.math.randomseed"}, "math.max": {"body": "math.max( ${1:x},${2:...} )", "description": "math.max", "prefix": "math.max"}, "math.maxinteger": {"body": "math.maxinteger(${0:...})", "description": "math.maxinteger", "prefix": "math.maxinteger"}, "math.min": {"body": "math.min( ${1:x},${2:...} )", "description": "math.min", "prefix": "math.min"}, "math.mininteger": {"body": "math.mininteger(${0:...})", "description": "math.mininteger", "prefix": "math.mininteger"}, "math.modf": {"body": "math.modf( ${1:x} )", "description": "math.modf", "prefix": "math.modf"}, "math.pi": {"body": "math.pi(${0:...})", "description": "math.pi", "prefix": "math.pi"}, "math.pow": {"body": "math.pow(${0:...})", "description": "math.pow (x, y)", "prefix": "math.pow"}, "math.rad": {"body": "math.rad(${0:...})", "description": "math.rad (x)", "prefix": "math.rad"}, "math.random": {"body": "math.random( ${1:[m]}${2:[, n]} )", "description": "math.random", "prefix": "math.random"}, "math.randomseed": {"body": "math.randomseed(${0:...})", "description": "math.randomseed (x)", "prefix": "math.randomseed"}, "math.sin": {"body": "math.sin( ${1:x} )", "description": "math.sin", "prefix": "math.sin"}, "math.sinh": {"body": "math.sinh(${0:...})", "description": "math.sinh (x)", "prefix": "math.sinh"}, "math.sqrt": {"body": "math.sqrt( ${1:x} )", "description": "math.sqrt", "prefix": "math.sqrt"}, "math.tan": {"body": "math.tan( ${1:x} )", "description": "math.tan", "prefix": "math.tan"}, "math.tanh": {"body": "math.tanh(${0:...})", "description": "math.tanh (x)", "prefix": "math.tanh"}, "math.tointeger": {"body": "math.tointeger( ${1:x} )", "description": "math.tointeger", "prefix": "math.tointeger"}, "math.type": {"body": "math.type( ${1:x} )", "description": "math.type", "prefix": "math.type"}, "math.ult": {"body": "math.ult(${0:...})", "description": "math.ult (m, n)", "prefix": "math.ult"}, "module": {"body": "module(${0:...})", "description": "module (name [, ...])", "prefix": "module"}, "next": {"body": "next(${1:table}${2:[, index]})", "description": "next (table [, index])", "prefix": "next"}, "os.clock": {"body": "os.clock()", "description": "os.clock() - \u8fd4\u56de\u7a0b\u5e8f\u4f7f\u7528\u7684\u6309\u79d2\u8ba1 CPU \u65f6\u95f4\u7684\u8fd1\u4f3c\u503c\n\u4f20\u5165\u503c\uff1a\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\n-- \u5982\u9700\u8981\u83b7\u53d6 \u65f6\u95f4\u6233, \u8bf7\u4f7f\u7528 os.time()\n-- \u5982\u9700\u83b7\u53d6\u7cfb\u7edf\u8fd0\u884c\u65f6\u957f, \u8bf7\u4f7f\u7528 mcu.ticks()\n", "prefix": "os.clock"}, "os.date": {"body": "os.date(${1:fmt},${2:time})", "description": "os.date(fmt, time) - \u65e5\u671f\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring \u683c\u5f0f\u5316\u5b57\u7b26\u4e32,\u53ef\u4ee5\u662fnil\ntable \u65e5\u671f\u65f6\u95f4\u7684table\n\u8fd4\u56de\u503c\uff1a\ntable/string \u6839\u636efmt\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n\n-- \u503c\u5f97\u6ce8\u610f\u7684\u51e0\u70b9:\n-- 1. \u82e5\u9700\u8981UTC\u65f6\u95f4, fmt\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u5199\"!\"\n-- 2. fmt\u7684\u683c\u5f0f\u5316\u9075\u5faa C \u51fd\u6570 strftime, \u53ef\u4ee5\u67e5\u9605 https://developer.aliyun.com/article/320480\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date())\n-- \u83b7\u53d6UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%c\"))\n-- \u683c\u5f0f\u5316\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u7684\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0})))\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u7684table\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"*t\")))\n-- \u83b7\u53d6UTC\u65f6\u95f4\u7684table\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"!*t\")))\n", "prefix": "os.date"}, "os.difftime": {"body": "os.difftime(${1:timeA},${2:timeB})", "description": "os.difftime(timeA, timeB) - \u65f6\u95f4\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u95f4A,\u6570\u503c\u7c7b\u578b\nint \u65f6\u95f4B,\u6570\u503c\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nint \u65f6\u95f4\u5dee\u503c\n", "prefix": "os.difftime"}, "os.execute": {"body": "os.execute(${0:...})", "description": "os.execute ([command])", "prefix": "os.execute"}, "os.exit": {"body": "os.exit(${0:...})", "description": "os.exit ([code])", "prefix": "os.exit"}, "os.getenv": {"body": "os.getenv(${0:...})", "description": "os.getenv (varname)", "prefix": "os.getenv"}, "os.remove": {"body": "os.remove(${1:path})", "description": "os.remove(path) - \u79fb\u9664\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u79fb\u9664\u7684\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u5220\u9664\u6839\u76ee\u5f55\u4e0b\u7684\u67d0\u4e2a\u6587\u4ef6\nos.remove(\"/1.txt\")\n-- \u6ce8\u610f, \u7ebf\u5237\u65f6\u7684\u6587\u4ef6, \u4e00\u822c\u5728 /luadb \u76ee\u5f55, \u8fd9\u4e2a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u662f\u53ea\u8bfb\u7684\n-- \u4e5f\u5c31\u662f\u65e0\u6cd5\u6267\u884c os.remove(\"/luadb/xxx.bin\")\n", "prefix": "os.remove"}, "os.rename": {"body": "os.rename(${1:old_path},${2:new_path})", "description": "os.rename(old_path, new_path) - \u6587\u4ef6\u91cd\u547d\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u6e90\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\nstring \u76ee\u6807\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u53ea\u6709\u5728\u76f8\u540c\u6587\u4ef6\u7cfb\u7edf\u4e0b\u7684\u6587\u4ef6\u53ef\u4ee5\u91cd\u547d\u540d\n-- \u4f8b\u5982:\nos.rename(\"/1.txt\", \"/2.txt\")\n-- \u4e0d\u540c\u6587\u4ef6\u7cfb\u7edf, \u6216\u8005\u6e90\u6587\u4ef6\u7cfb\u7edf\u662f\u53ea\u8bfb\u7684, \u5219\u65e0\u6cd5\u6267\u884c\n--os.rename(\"/luadb/1.txt\", \"/luadb/2.txt\")\n--os.rename(\"/luadb/1.txt\", \"/2.txt\")\n", "prefix": "os.rename"}, "os.setlocale": {"body": "os.setlocale(${0:...})", "description": "os.setlocale (locale [, category])", "prefix": "os.setlocale"}, "os.time": {"body": "os.time(${1:mytime})", "description": "os.time(mytime) - \u65f6\u95f4\u6233\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\ntable \u65e5\u671f\u65f6\u95f4\u7684table\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\u6ce8\u610f, \u8fd9\u4e2a\u51fd\u6570\u8fd4\u56de\u7684\u662fUTC\u65f6\u95f4\u6233\n-- \u65f6\u95f4\u6233, \u4f46lua\u4e0b\u7684\u7cbe\u5ea6\u53ea\u80fd\u5230\u79d2\nlog.info(\"UTC\u65f6\u95f4\u6233\", os.time())\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u6233\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0}))\n", "prefix": "os.time"}, "os.tmpname": {"body": "os.tmpname(${0:...})", "description": "os.tmpname ()", "prefix": "os.tmpname"}, "package.config": {"body": "package.config(${0:...})", "description": "package.config", "prefix": "package.config"}, "package.cpath": {"body": "package.cpath(${0:...})", "description": "package.cpath", "prefix": "package.cpath"}, "package.loaded": {"body": "package.loaded(${0:...})", "description": "package.loaded", "prefix": "package.loaded"}, "package.loaders": {"body": "package.loaders(${0:...})", "description": "package.loaders", "prefix": "package.loaders"}, "package.loadlib": {"body": "package.loadlib(${0:...})", "description": "package.loadlib (libname, funcname)", "prefix": "package.loadlib"}, "package.path": {"body": "package.path(${0:...})", "description": "package.path", "prefix": "package.path"}, "package.preload": {"body": "package.preload(${0:...})", "description": "package.preload", "prefix": "package.preload"}, "package.searchers": {"body": "package.searchers(${0:...})", "description": "package.searchers", "prefix": "package.searchers"}, "package.searchpath": {"body": "package.searchpath(${0:...})", "description": "package.searchpath (name, path [, sep [, rep]])", "prefix": "package.searchpath"}, "package.seeall": {"body": "package.seeall(${0:...})", "description": "package.seeall (module)", "prefix": "package.seeall"}, "pairs": {"body": "pairs(${0:...})", "description": "pairs (t)", "prefix": "pairs"}, "pcall": {"body": "pcall(${0:...})", "description": "pcall (f, arg1, ...)", "prefix": "pcall"}, "print": {"body": "print(${1:...})", "description": "print(...)", "prefix": "print"}, "require": {"body": "require\"${1:module}\"", "description": "require()", "prefix": "require"}, "ret": {"body": "return ${1:...}", "description": "return ...", "prefix": "ret"}, "select": {"body": "select(${1:index}, ${2:...})", "description": "select (index, \u00b7\u00b7\u00b7)", "prefix": "select"}, "setfenv": {"body": "setfenv(${0:...})", "description": "setfenv (f, table)", "prefix": "setfenv"}, "setmetatable": {"body": "setmetatable(${1:table}, ${2:metatable})", "description": "setmetatable (table, metatable)", "prefix": "setmetatable"}, "tonumber": {"body": "tonumber(${1:e}${2:[, base]})", "description": "tonumber (e [, base])", "prefix": "tonumber"}, "tostring": {"body": "tostring(${1:v})", "description": "tostring (v)", "prefix": "tostring"}, "type": {"body": "type(${1:v})", "description": "type (v)", "prefix": "type"}, "unpack": {"body": "unpack(${0:...})", "description": "unpack (list [, i [, j]])", "prefix": "unpack"}, "xpcall": {"body": "xpcall(${0:...})", "description": "xpcall (f, err)", "prefix": "xpcall"}, "sys.publish(...)": {"body": "sys.publish(${1:...})", "description": "\u53d1\u5e03\u5185\u90e8\u6d88\u606f\uff0c\u5b58\u50a8\u5728\u5185\u90e8\u6d88\u606f\u961f\u5217\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\npublish(\"NET_STATUS_IND\")\r\n", "prefix": "sys.publish(...)"}, "sys.restart(r)": {"body": "sys.restart(${1:r})", "description": "\u8f6f\u4ef6\u91cd\u542f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.restart('\u7a0b\u5e8f\u8d85\u65f6\u8f6f\u4ef6\u91cd\u542f')\r\n", "prefix": "sys.restart(r)"}, "sys.run()": {"body": "sys.run()", "description": "run()\u4ece\u5e95\u5c42\u83b7\u53d6core\u6d88\u606f\u5e76\u53ca\u65f6\u5904\u7406\u76f8\u5173\u6d88\u606f\uff0c\u67e5\u8be2\u5b9a\u65f6\u5668\u5e76\u8c03\u5ea6\u5404\u6ce8\u518c\u6210\u529f\u7684\u4efb\u52a1\u7ebf\u7a0b\u8fd0\u884c\u548c\u6302\u8d77\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.run()\r\n", "prefix": "sys.run()"}, "sys.setRollBack(flag, secs)": {"body": "sys.setRollBack(${1:flag},${2: secs})", "description": "\u8bbe\u7f6e\u201clua\u811a\u672c\u8fd0\u884c\u51fa\u9519\u65f6\uff0c\u662f\u5426\u56de\u9000\u539f\u59cb\u70e7\u5199\u7248\u672c\u201d\u7684\u529f\u80fd\u5f00\u5173\u3002\u5982\u679c\u6ca1\u6709\u8c03\u7528\u6b64\u63a5\u53e3\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u56de\u6eda\r\n\u8fd4\u56de\u503c\uff1a\r\nnil\r\n\u4f8b\u5b50\uff1a\r\nsys.setRollBack(true)\r\nsys.setRollBack(false)\r\n", "prefix": "sys.setRollBack(flag, secs)"}, "sys.subscribe(id, callback)": {"body": "sys.subscribe(${1:id},${2: callback})", "description": "\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.subscribe(id, callback)"}, "sys.taskInit(fun, ...)": {"body": "sys.taskInit(${1:fun},${2: ...})", "description": "\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570\uff0cmain.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\r\n\u8fd4\u56de\u503c\uff1a\r\nco \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\r\n\u4f8b\u5b50\uff1a\r\nsys.taskInit(task1,'a','b')\r\n", "prefix": "sys.taskInit(fun, ...)"}, "sys.timerIsActive(val, ...)": {"body": "sys.timerIsActive(${1:val},${2: ...})", "description": "\u5224\u65ad\u67d0\u4e2a\u5b9a\u65f6\u5668\u662f\u5426\u5904\u4e8e\u5f00\u542f\u72b6\u6001\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5f00\u542f\u72b6\u6001\u8fd4\u56detrue\uff0c\u5426\u5219nil", "prefix": "sys.timerIsActive(val, ...)"}, "sys.timerLoopStart(fnc, ms, ...)": {"body": "sys.timerLoopStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerLoopStart(fnc, ms, ...)"}, "sys.timerStart(fnc, ms, ...)": {"body": "sys.timerStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerStart(fnc, ms, ...)"}, "sys.timerStop(val, ...)": {"body": "sys.timerStop(${1:val},${2: ...})", "description": "\u5173\u95ed\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStop(1)\r\n", "prefix": "sys.timerStop(val, ...)"}, "sys.timerStopAll(fnc)": {"body": "sys.timerStopAll(${1:fnc})", "description": "\u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStopAll(cbFnc)\r\n", "prefix": "sys.timerStopAll(fnc)"}, "sys.unsubscribe(id, callback)": {"body": "sys.unsubscribe(${1:id},${2: callback})", "description": "\u53d6\u6d88\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nunsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.unsubscribe(id, callback)"}, "sys.wait(ms)": {"body": "sys.wait(${1:ms})", "description": "Task\u4efb\u52a1\u5ef6\u65f6\u51fd\u6570\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5b9a\u65f6\u7ed3\u675f\u8fd4\u56denil,\u88ab\u5176\u4ed6\u7ebf\u7a0b\u5524\u8d77\u8fd4\u56de\u8c03\u7528\u7ebf\u7a0b\u4f20\u5165\u7684\u53c2\u6570\r\n\u4f8b\u5b50\uff1a\r\nsys.wait(30)\r\n", "prefix": "sys.wait(ms)"}, "sys.waitUntil(id, ms)": {"body": "sys.waitUntil(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nresult \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56detrue\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntil(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntil(id, ms)"}, "sys.waitUntilExt(id, ms)": {"body": "sys.waitUntilExt(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\u6269\u5c55\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nmessage \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56demessage\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntilExt(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntilExt(id, ms)"}, "table.concat(t,s)": {"body": "table.concat(${1:t},${2: s})", "description": "\u8868\u8fde\u63a5\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n-- \u8fd4\u56de table \u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 bananaorangeapple\r\n\r\n-- \u6307\u5b9a\u8fde\u63a5\u5b57\u7b26\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \"))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 banana, orange, apple\r\n\r\n-- \u6307\u5b9a\u7d22\u5f15\u6765\u8fde\u63a5 table\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \", 2,3))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 orange, apple\r\n", "prefix": "table.concat()"}, "table.gsort(t, f)": {"body": "table.gsort(${1:t},${2: f})", "description": "\u8fd4\u56de\u4e00\u4e2a\u8fed\u4ee3\u5668\u51fd\u6570,\u6bcf\u6b21\u8c03\u7528\u51fd\u6570\u90fd\u4f1a\u8fd4\u56dehash\u8868\u7684\u6392\u5e8f\u540e\u7684\u952e\u503c\u5bf9\r\n\u8fd4\u56de\u503c\uff1a\r\nfunction.\r\n\u4f8b\u5b50\uff1a\r\ntest = {a=1,f=9,d=2,c=8,b=5}\r\nfor name,line in pairsByKeys(test) do print(name,line) end\r\n", "prefix": "table.gsort(t, f)"}, "table.insert(t,d)": {"body": "table.insert(${1:t},${2: d})", "description": "\u6dfb\u52a0table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n\r\n-- \u5728\u672b\u5c3e\u63d2\u5165\r\ntable.insert(fruits,\"mango\")\r\nprint(\"\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a \",fruits[4])\r\n--\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a mango\r\n\r\n-- \u5728\u7d22\u5f15\u4e3a 2 \u7684\u952e\u5904\u63d2\u5165\r\ntable.insert(fruits,2,\"grapes\")\r\nprint(\"\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a \",fruits[2])\r\n--\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a grapes\r\n\r\nprint(\"\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a \",fruits[5])\r\n--\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a mango\r\n", "prefix": "table.insert()"}, "table.remove(t,i)": {"body": "table.remove(${1:t},${2: i})", "description": "\u79fb\u9664table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table", "prefix": "table.remove()"}, "string.byte()": {"body": "string.byte()", "description": "\u63a5\u6536\u63a7\u5236\u5b57\u7b26\uff0c\u8fd4\u56deASCII\u7801\r\n\u8fd4\u56de\u503c\uff1a\r\n ASCII\u7801\r\n\u4f8b\u5b50\uff1a\r\nstring.byte(\"ABCD\") --65\r\nstring.byte(\"ABCD\",4) --68\r\n", "prefix": "string.byte()"}, "string.char()": {"body": "string.char()", "description": "\u63a5\u6536ASCII\u7801\uff0c\u8fd4\u56de\u5bf9\u5e94\u7684\u63a7\u5236\u5b57\u7b26\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\r\n\u4f8b\u5b50\uff1a\r\nstring.char(97,98,99,100) --abcd\r\n", "prefix": "string.char()"}, "string.find()": {"body": "string.find()", "description": "\u67e5\u627e\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0s\u00a0\u4e2d\u5339\u914d\u5230\u7684\u00a0pattern\r\n\u8fd4\u56de\u503c\uff1a\r\n \u8fd4\u56de\u5339\u914d\u5b57\u7b26\u5177\u4f53\u4f4d\u7f6e\u3002\u4e0d\u5b58\u5728\u5219\u8fd4\u56de nil\r\n\u4f8b\u5b50\uff1a\r\nstring.find(\"Hello Lua user\", \"Lua\", 1) --7 9\r\n", "prefix": "string.find()"}, "string.format()": {"body": "string.format()", "description": "\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.format(\"the value is:%d\",4) --the value is:4\r\n", "prefix": "string.format()"}, "string.gsub()": {"body": "string.gsub()", "description": "\u5b57\u7b26\u4e32\u66ff\u6362", "prefix": "string.gsub()"}, "string.len()": {"body": "string.len()", "description": "\u8ba1\u7b97\u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u4f8b\u5b50\uff1a\r\nstring.len(\"abc\") --3\r\n", "prefix": "string.len()"}, "string.lower()": {"body": "string.lower()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5c0f\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5c0f\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.lower()"}, "string.rep()": {"body": "string.rep()", "description": "\u5b57\u7b26\u4e32\u62f7\u8d1d\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.rep(\"abcd\",2) --abcdabcd\r\n", "prefix": "string.rep()"}, "string.reverse()": {"body": "string.reverse()", "description": "\u5b57\u7b26\u4e32\u53cd\u8f6c\r\n\u8fd4\u56de\u503c\uff1a\r\n \u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.reverse(\"Luat\") --tauL\r\n", "prefix": "string.reverse()"}, "string.split(str, delimiter)": {"body": "string.split(${1:str},${2: delimiter})", "description": "\u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u5217\u8868\r\n\u4f8b\u5b50\uff1a\r\n\"123,456,789\":split(',') -> {'123','456','789'}\r\n", "prefix": "string.split(str, delimiter)"}, "string.upper()": {"body": "string.upper()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5927\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5927\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.upper()"}, "adc.open": {"body": "adc.open(${1:id})", "description": "adc.open(id) - \u6253\u5f00adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90534,\u5e76\u8bfb\u53d6\nif adc.open(4) then\n log.info(\"adc\", adc.read(4)) -- \u8fd4\u56de\u503c\u67092\u4e2a, \u539f\u59cb\u503c\u548c\u8ba1\u7b97\u503c,\u901a\u5e38\u53ea\u9700\u8981\u540e\u8005\n log.info(\"adc\", adc.get(4)) -- \u8fd4\u56de\u503c\u67091\u4e2a, \u4ec5\u8ba1\u7b97\u503c\nend\nadc.close(4) -- \u82e5\u9700\u8981\u6301\u7eed\u8bfb\u53d6, \u5219\u4e0d\u9700\u8981close, \u529f\u8017\u4f1a\u9ad8\u4e00\u70b9.\n", "prefix": "adc.open"}, "adc.setRange": {"body": "adc.setRange(${1:range})", "description": "adc.setRange(range) - \u8bbe\u7f6eADC\u7684\u6d4b\u91cf\u8303\u56f4\uff0c\u6ce8\u610f\u8fd9\u4e2a\u548c\u5177\u4f53\u82af\u7247\u6709\u5173\uff0c\u76ee\u524d\u53ea\u652f\u6301air105/Air780E\u7cfb\u5217\n\u4f20\u5165\u503c\uff1a\nint range\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u6bd4\u5982air105\u586badc.ADC_RANGE_1_8\u548cadc.ADC_RANGE_3_6\nreturn nil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u8981\u5728\u8c03\u7528adc.open\u4e4b\u524d\u5c31\u8c03\u7528, \u4e4b\u540e\u8c03\u7528\u65e0\u6548!!!\n\n-- \u5173\u95edair105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_1_8)\n-- \u6253\u5f00air105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_6)\n\n\n-- EC618\u7cfb\u5217(Air780E\u7b49)/EC718E\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\u652f\u6301\u4ee5\u4e0b2\u79cd\nadc.setRange(adc.ADC_RANGE_1_2) -- \u5173\u95ed\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_8) -- \u542f\u7528\u5206\u538b\n", "prefix": "adc.setRange"}, "adc.read": {"body": "adc.read(${1:id})", "description": "adc.read(id) - \u8bfb\u53d6adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u539f\u59cb\u503c,\u4e00\u822c\u6ca1\u7528,\u53ef\u4ee5\u76f4\u63a5\u629b\u5f03\nint \u4ece\u539f\u59cb\u503c\u6362\u7b97\u5f97\u51fa\u7684\u5b9e\u9645\u503c\uff0c\u901a\u5e38\u5355\u4f4d\u662fmV\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n -- \u8fd9\u91cc\u4f7f\u7528\u7684\u662fadc.read\u4f1a\u8fd4\u56de2\u4e2a\u503c, \u63a8\u8350\u8d70adc.get\u51fd\u6570,\u76f4\u63a5\u53d6\u5b9e\u9645\u503c\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.read"}, "adc.get": {"body": "adc.get(${1:id})", "description": "adc.get(id) - \u83b7\u53d6adc\u8ba1\u7b97\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u5355\u4f4d\u901a\u5e38\u662fmV, \u90e8\u5206\u901a\u9053\u4f1a\u8fd4\u56de\u6e29\u5ea6\u503c,\u5355\u4f4d\u5343\u5206\u4e4b\u4e00\u6444\u6c0f\u5ea6. \u82e5\u8bfb\u53d6\u5931\u8d25,\u4f1a\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\n-- \u672cAPI \u5728 2022.10.01\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.get(2))\nend\nadc.close(2) -- \u6309\u9700\u5173\u95ed\n", "prefix": "adc.get"}, "adc.close": {"body": "adc.close(${1:id})", "description": "adc.close(id) - \u5173\u95edadc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.close"}, "antbot.init": {"body": "antbot.init()", "description": "antbot.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n\u4f8b\u5b50\uff1a\n\n-- \u521d\u59cb\u5316\u8682\u8681\u94fe\u7684\u5e95\u5c42\u9002\u914d\nantbot.init()\n", "prefix": "antbot.init"}, "antbot.app_sta_get": {"body": "antbot.app_sta_get()", "description": "antbot.app_sta_get() - \u83b7\u53d6\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u7801\n", "prefix": "antbot.app_sta_get"}, "antbot.version_get": {"body": "antbot.version_get()", "description": "antbot.version_get() - \u83b7\u53d6SDK\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u7248\u672c\u53f7,\u5982\u679c\u83b7\u53d6\u5931\u8d25\u8fd4\u56denil\n", "prefix": "antbot.version_get"}, "antbot.asset_register": {"body": "antbot.asset_register(${1:asset_id},${2:asset_type},${3:asset_dataver})", "description": "antbot.asset_register(asset_id, asset_type, asset_dataver) - asset\u8d44\u6e90\u6ce8\u518c\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\nstring asset_type \u8d44\u6e90\u7c7b\u578b\nstring asset_dataver \u8d44\u6e90\u6570\u636e\u7248\u672c\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_register"}, "antbot.asset_data_publish": {"body": "antbot.asset_data_publish(${1:data})", "description": "antbot.asset_data_publish(data) - asset\u8d44\u6e90\u53d1\u5e03\n\u4f20\u5165\u503c\uff1a\nstring data \u8d44\u6e90\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_data_publish"}, "antbot.device_status_get": {"body": "antbot.device_status_get()", "description": "antbot.device_status_get() - \u83b7\u53d6\u8bbe\u5907\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u5907\u72b6\u6001\n", "prefix": "antbot.device_status_get"}, "antbot.asset_status_get": {"body": "antbot.asset_status_get(${1:asset_id})", "description": "antbot.asset_status_get(asset_id) - \u83b7\u53d6assset\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\n\u8fd4\u56de\u503c\uff1a\nint \u8d44\u6e90\u72b6\u6001\n", "prefix": "antbot.asset_status_get"}, "antbot.channel_switch": {"body": "antbot.channel_switch(${1:cmd})", "description": "antbot.channel_switch(cmd) - \u5207\u6362channel\n\u4f20\u5165\u503c\uff1a\nint 0 - \u5173\u95ed, 1 - \u5f00\u542f\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.channel_switch"}, "antbot.config_set": {"body": "antbot.config_set(${1:config})", "description": "antbot.config_set(config) - \u914d\u7f6e\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nstring config \u914d\u7f6e\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.config_set"}, "antbot.config_get": {"body": "antbot.config_get()", "description": "antbot.config_get() - \u83b7\u53d6\u8bbe\u5907\u914d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u914d\u7f6e\u5185\u5bb9\n", "prefix": "antbot.config_get"}, "audio.start": {"body": "audio.start(${1:id},${2:audio_format},${3:num_channels},${4:sample_rate},${5:bits_per_sample},${6:is_signed})", "description": "audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed) - \u542f\u52a8\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u51c6\u5907\u64ad\u653e\u97f3\u9891\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\uff0c\u9ed8\u8ba4true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\naudio.start(0, audio.PCM, 1, 16000, 16)\n", "prefix": "audio.start"}, "audio.record": {"body": "audio.record(${1:id},${2:record_type},${3:record_time},${4:amr_quailty},${5:path})", "description": "audio.record(id, record_type, record_time, amr_quailty, path) - \u5f55\u97f3\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint record_type \u5f55\u97f3\u97f3\u9891\u683c\u5f0f,\u652f\u6301 audio.AMR audio.PCM (\u90e8\u5206\u5e73\u53f0\u652f\u6301audio.AMR_WB)\nint record_time \u5f55\u5236\u65f6\u957f \u5355\u4f4d\u79d2,\u53ef\u9009\uff0c\u9ed8\u8ba40\u5373\u8868\u793a\u4e00\u76f4\u5f55\u5236\nint amr_quailty \u8d28\u91cf,audio.AMR\u4e0b\u6709\u6548\nstring path \u5f55\u97f3\u6587\u4ef6\u8def\u5f84,\u53ef\u9009,\u4e0d\u6307\u5b9a\u5219\u4e0d\u4fdd\u5b58,\u53ef\u5728audio.on\u56de\u8c03\u51fd\u6570\u4e2d\u5904\u7406\u539f\u59cbPCM\u6570\u636e\nint record_callback_time \u4e0d\u6307\u5b9a\u5f55\u97f3\u6587\u4ef6\u8def\u5f84\u65f6\uff0c\u5355\u6b21\u5f55\u97f3\u56de\u8c03\u65f6\u957f\uff0c\u5355\u4f4d\u662f100ms\u3002\u9ed8\u8ba41\uff0c\u65e2100ms\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nerr,info = audio.record(id, type, record_time, quailty, path)\n", "prefix": "audio.record"}, "audio.recordStop": {"body": "audio.recordStop(${1:id})", "description": "audio.recordStop(id) - \u5f55\u97f3\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.recordStop(0)\n", "prefix": "audio.recordStop"}, "audio.write": {"body": "audio.write(${1:id},${2:data})", "description": "audio.write(id, data) - \u5f80\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u5199\u5165\u97f3\u9891\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u97f3\u9891\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.write(0, \"xxxxxx\")\n", "prefix": "audio.write"}, "audio.stop": {"body": "audio.stop(${1:id})", "description": "audio.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.stop(0)\n", "prefix": "audio.stop"}, "audio.pause": {"body": "audio.pause(${1:id},${2:pause})", "description": "audio.pause(id, pause) - \u6682\u505c/\u6062\u590d\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\nboolean onoff true \u6682\u505c\uff0cfalse \u6062\u590d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.pause(0, true) --\u6682\u505c\u901a\u90530\naudio.pause(0, false) --\u6062\u590d\u901a\u90530\n", "prefix": "audio.pause"}, "audio.on": {"body": "audio.on(${1:audio_id},${2:func})", "description": "audio.on(audio_id, func) - \u6ce8\u518caudio\u64ad\u653e\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint audio id, audio 0\u51990, audio 1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\uff0c\u56de\u8c03\u65f6\u4f20\u5165\u53c2\u6570\u4e3a1\u3001int \u901a\u9053ID 2\u3001int \u6d88\u606f\u503c\uff0c\u53ea\u6709audio.MORE_DATA\u548caudio.DONE\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.on(0, function(audio_id, msg)\n log.info(\"msg\", audio_id, msg)\nend)\n", "prefix": "audio.on"}, "audio.play": {"body": "audio.play(${1:id},${2:path},${3:errStop})", "description": "audio.play(id, path, errStop) - \u64ad\u653e\u6216\u8005\u505c\u6b62\u64ad\u653e\u4e00\u4e2a\u6587\u4ef6\uff0c\u64ad\u653e\u5b8c\u6210\u540e\uff0c\u4f1a\u56de\u8c03\u4e00\u4e2aaudio.DONE\u6d88\u606f\uff0c\u53ef\u4ee5\u7528pause\u6765\u6682\u505c\u6216\u8005\u6062\u590d\uff0c\u5176\u4ed6API\u4e0d\u53ef\u7528\u3002\u8003\u8651\u5230\u8bfbSD\u5361\u901f\u5ea6\u6bd4\u8f83\u6162\u800c\u62d6\u7d2fluavm\u8fdb\u7a0b\u7684\u901f\u5ea6\uff0c\u6240\u4ee5\u5c3d\u91cf\u4f7f\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/table \u6587\u4ef6\u540d\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u8868\u793a\u505c\u6b62\u64ad\u653e\uff0c\u5982\u679c\u662ftable\uff0c\u5219\u8868\u793a\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\uff0c\u4e3b\u8981\u5e94\u7528\u4e8e\u4e91\u5587\u53ed\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\uff0c\u5e76\u4e14\u4f1a\u7528\u5230errStop\u53c2\u6570\nboolean \u662f\u5426\u5728\u6587\u4ef6\u89e3\u7801\u5931\u8d25\u540e\u505c\u6b62\u89e3\u7801\uff0c\u53ea\u6709\u5728\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\u65f6\u624d\u6709\u7528\uff0c\u9ed8\u8ba4true\uff0c\u9047\u5230\u89e3\u7801\u9519\u8bef\u81ea\u52a8\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.play(0, \"xxxxxx\") --\u5f00\u59cb\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\naudio.play(0) --\u505c\u6b62\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\n", "prefix": "audio.play"}, "audio.tts": {"body": "audio.tts(${1:id},${2:data})", "description": "audio.tts(id, data) - TTS\u64ad\u653e\u6216\u8005\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/zbuff \u9700\u8981\u64ad\u653e\u7684\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "audio.tts"}, "audio.playStop": {"body": "audio.playStop(${1:id})", "description": "audio.playStop(id) - \u505c\u6b62\u64ad\u653e\u6587\u4ef6\uff0c\u548caudio.play(id)\u662f\u4e00\u6837\u7684\u4f5c\u7528\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.playStop(0)\n", "prefix": "audio.playStop"}, "audio.isEnd": {"body": "audio.isEnd(${1:id})", "description": "audio.isEnd(id) - \u68c0\u67e5\u5f53\u524d\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u64ad\u653e\u7ed3\u675f\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.isEnd(0)\n\n", "prefix": "audio.isEnd"}, "audio.getError": {"body": "audio.getError(${1:id})", "description": "audio.getError(id) - \u83b7\u53d6\u6700\u8fd1\u4e00\u6b21\u64ad\u653e\u7ed3\u679c\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\u7684\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5168\u90e8\u64ad\u653e\u6210\u529f\uff0ctrue\u6210\u529f\uff0cfalse\u6709\u6587\u4ef6\u64ad\u653e\u5931\u8d25\nboolean \u5982\u679c\u64ad\u653e\u5931\u8d25\uff0c\u662f\u5426\u662f\u7528\u6237\u505c\u6b62\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\nint \u7b2c\u51e0\u4e2a\u6587\u4ef6\u5931\u8d25\u4e86\uff0c\u4ece1\u5f00\u59cb\n\u4f8b\u5b50\uff1a\nlocal result, user_stop, file_no = audio.getError(0)\n", "prefix": "audio.getError"}, "audio.config": {"body": "audio.config(${1:id},${2:paPin},${3:onLevel},${4:dacDelay},${5:paDelay},${6:dacPin},${7:dacLevel},${8:dacTimeDelay})", "description": "audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u7279\u6027\uff0c\u6bd4\u5982\u5b9e\u73b0\u81ea\u52a8\u63a7\u5236PA\u5f00\u5173\u3002\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u662f\u5fc5\u987b\u7684\uff0c\u4e00\u822c\u5728\u8c03\u7528play\u7684\u65f6\u5019\u624d\u9700\u8981\u81ea\u52a8\u63a7\u5236\uff0c\u5176\u4ed6\u60c5\u51b5\u6bd4\u5982\u4f60\u624b\u52a8\u63a7\u5236\u64ad\u653e\u65f6\uff0c\u5c31\u53ef\u4ee5\u81ea\u5df1\u63a7\u5236PA\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint PA\u63a7\u5236IO\nint PA\u6253\u5f00\u65f6\u7684\u7535\u5e73\nint \u5728DAC\u542f\u52a8\u524d\u63d2\u5165\u7684\u5197\u4f59\u65f6\u95f4\uff0c\u5355\u4f4d100ms\uff0c\u4e00\u822c\u7528\u4e8e\u5916\u90e8DAC\nint \u5728DAC\u542f\u52a8\u540e\uff0c\u5ef6\u8fdf\u591a\u957f\u65f6\u95f4\u6253\u5f00PA\uff0c\u5355\u4f4d1ms\nint \u5916\u90e8dac\u7535\u6e90\u63a7\u5236IO\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u5219\u8868\u793a\u4f7f\u7528\u5e73\u53f0\u9ed8\u8ba4IO\uff0c\u6bd4\u5982Air780E\u4f7f\u7528DACEN\u811a\uff0cair105\u5219\u4e0d\u542f\u7528\nint \u5916\u90e8dac\u6253\u5f00\u65f6\uff0c\u7535\u6e90\u63a7\u5236IO\u7684\u7535\u5e73\uff0c\u9ed8\u8ba4\u62c9\u9ad8\nint \u97f3\u9891\u64ad\u653e\u5b8c\u6bd5\u65f6\uff0cPA\u4e0eDAC\u5173\u95ed\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d1ms\uff0c\u9ed8\u8ba40ms\n\u4f8b\u5b50\uff1a\naudio.config(0, pin.PC0, 1) --PA\u63a7\u5236\u811a\u662fPC0\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cair105\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\naudio.config(0, 25, 1, 6, 200) --PA\u63a7\u5236\u811a\u662fGPIO25\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cAir780E\u4e91\u5587\u53ed\u677f\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\n", "prefix": "audio.config"}, "audio.vol": {"body": "audio.vol(${1:id},${2:value})", "description": "audio.vol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u97f3\u91cf\u8c03\u8282\uff0c\u76f4\u63a5\u5c06\u539f\u59cb\u6570\u636e\u653e\u5927\u6216\u8005\u7f29\u5c0f\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u5efa\u8bae\u5c3d\u91cf\u7528\u786c\u4ef6\u65b9\u6cd5\u53bb\u7f29\u653e\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~1000%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.vol"}, "audio.micVol": {"body": "audio.micVol(${1:id},${2:value})", "description": "audio.micVol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684mic\u97f3\u91cf\u8c03\u8282\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint mic\u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~100%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dmic\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.micVol"}, "audio.setBus": {"body": "audio.setBus(${1:id},${2:bus_type})", "description": "audio.setBus(id, bus_type) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u786c\u4ef6\u8f93\u51fa\u603b\u7ebf\uff0c\u53ea\u6709\u5bf9\u5e94soc\u8f6f\u786c\u4ef6\u5e73\u53f0\u652f\u6301\u624d\u8bbe\u7f6e\u5bf9\u5e94\u7c7b\u578b\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053,\u4f8b\u59820\nint \u603b\u7ebf\u7c7b\u578b, \u4f8b\u5982 audio.BUS_SOFT_DAC\nint \u786c\u4ef6id, \u4f8b\u5982 \u603b\u7ebf\u7c7b\u578b\u4e3aaudio.BUS_I2S\u65f6,\u786c\u4ef6id\u5373\u4e3ai2s codec\u7684i2c id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.setBus(0, audio.BUS_SOFT_DAC) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3a\u8f6f\u4ef6DAC\naudio.setBus(0, audio.BUS_I2S) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3aI2S\n", "prefix": "audio.setBus"}, "audio.debug": {"body": "audio.debug(${1:on_off})", "description": "audio.debug(on_off) - \u914d\u7f6e\u8c03\u8bd5\u4fe1\u606f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00 false\u5173\n", "prefix": "audio.debug"}, "audio.pm": {"body": "audio.pm(${1:id},${2:pm_mode})", "description": "audio.pm(id,pm_mode) - audio \u4f11\u7720\u63a7\u5236(\u4e00\u822c\u4f1a\u81ea\u52a8\u8c03\u7528\u4e0d\u9700\u8981\u624b\u52a8\u6267\u884c)\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u4f11\u7720\u6a21\u5f0f \n\u8fd4\u56de\u503c\uff1a\nboolean true\u6210\u529f\n\u4f8b\u5b50\uff1a\naudio.pm(multimedia_id,audio.RESUME)\n", "prefix": "audio.pm"}, "bit64.to32": {"body": "bit64.to32(${1:data64bit})", "description": "bit64.to32(data64bit) - 64bit\u6570\u636e\u8f6c\u621032bit\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nany \u6839\u636e64bit\u6570\u636e\u8f93\u51faint\u6216\u8005number\n", "prefix": "bit64.to32"}, "bit64.to64": {"body": "bit64.to64(${1:data32bit})", "description": "bit64.to64(data32bit) - 32bit\u6570\u636e\u8f6c\u621064bit\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint/number 32bit\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.to64"}, "bit64.show": {"body": "bit64.show(${1:a},${2:type},${3:flag})", "description": "bit64.show(a,type,flag) - 64bit\u6570\u636e\u683c\u5f0f\u5316\u6253\u5370\u6210\u5b57\u7b26\u4e32\uff0c\u7528\u4e8e\u663e\u793a\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u6253\u5370\u768464bit\u6570\u636e\nint \u8fdb\u5236\uff0c10=10\u8fdb\u5236\uff0c16=16\u8fdb\u5236\uff0c\u9ed8\u8ba410\uff0c\u53ea\u652f\u630110\u6216\u800516\nboolean \u6574\u5f62\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\u6253\u5370\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring \u53ef\u4ee5\u6253\u5370\u7684\u503c\n", "prefix": "bit64.show"}, "bit64.plus": {"body": "bit64.plus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.plus(a,b,flag1,flag2) - 64bit\u6570\u636e\u52a0,a+b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.plus"}, "bit64.minus": {"body": "bit64.minus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.minus(a,b,flag1,flag2) - 64bit\u6570\u636e\u51cf,a-b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.minus"}, "bit64.multi": {"body": "bit64.multi(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.multi(a,b,flag1,flag2) - 64bit\u6570\u636e\u4e58,a*b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.multi"}, "bit64.pide": {"body": "bit64.pide(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.pide(a,b,flag1,flag2) - 64bit\u6570\u636e\u9664,a/b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.pide"}, "bit64.shift": {"body": "bit64.shift(${1:a},${2:b},${3:flag})", "description": "bit64.shift(a,b,flag) - 64bit\u6570\u636e\u4f4d\u79fb a>>b \u6216\u8005 a<>\uff0c\u9ed8\u8ba4false\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.shift"}, "bit64.strtoll": {"body": "bit64.strtoll(${1:data},${2:base})", "description": "bit64.strtoll(data, base) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u4e3aLongLong\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8f6c\u6362\u7684\u6570\u636e,\u5fc5\u987b\u5b58\u5728\nint \u8f6c\u6362\u8fdb\u5236, \u9ed8\u8ba410, \u53ef\u900916\u62168\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.27 \u6dfb\u52a0\n-- \u63d0\u9192, \u5982\u679c\u8f6c\u6362\u5931\u8d25, \u662f\u8fd4\u56de9\u4e2a\u5b57\u8282\u76840x00\nlocal data = bit64.strtoll(\"864040064024194\", 10)\nlog.info(\"data\", data:toHex())\nlog.info(\"data\", bit64.show(data))\n", "prefix": "bit64.strtoll"}, "camera.init": {"body": "camera.init(${1:InitReg_or_cspi_id},${2:cspi_speed},${3:mode},${4:is_msb},${5:rx_bit},${6:seq_type},${7:is_ddr},${8:only_y},${9:scan_mode},${10:w},${11:h})", "description": "camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h) - \u521d\u59cb\u5316\u6444\u50cf\u5934\n\u4f20\u5165\u503c\uff1a\ntable/integer \u5982\u679c\u662ftable,\u5219\u662fDVP\u6444\u50cf\u5934\u7684\u914d\u7f6e\u89c1demo/camera/AIR105,\u540c\u65f6\u5ffd\u7565\u540e\u7eed\u53c2\u6570;\u5982\u679c\u662f\u6570\u5b57,\u5219\u662fcamera spi\u603b\u7ebf\u5e8f\u53f7\nint camera spi\u603b\u7ebf\u901f\u5ea6\nint camera spi\u6a21\u5f0f,0~3\nint \u5b57\u8282\u7684bit\u987a\u5e8f\u662f\u5426\u662fmsb,0\u54261\u662f\nint \u540c\u65f6\u63a5\u6536bit\u6570,1,2,4\nint byte\u5e8f\u5217,0~1\nint \u53cc\u8fb9\u6cbf\u91c7\u6837\u914d\u7f6e,0\u4e0d\u542f\u7528,\u5176\u4ed6\u503c\u6839\u636e\u5b9e\u9645SOC\u51b3\u5b9a\nint \u53ea\u63a5\u6536Y\u5206\u91cf\uff0c0\u4e0d\u542f\u7528\uff0c1\u542f\u7528\uff0c\u626b\u7801\u5fc5\u987b\u542f\u7528\uff0c\u5426\u5219\u4f1a\u5931\u8d25\nint \u5de5\u4f5c\u6a21\u5f0f\uff0ccamera.AUTO\u81ea\u52a8,camera.SCAN\u626b\u7801\nint \u6444\u50cf\u5934\u5bbd\u5ea6\nint \u6444\u50cf\u5934\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint/false \u6210\u529f\u8fd4\u56decamera_id\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera_id = camera.init(GC032A_InitReg)--\u5c4f\u5e55\u8f93\u51fargb\u56fe\u50cf\n--\u521d\u59cb\u5316\u540e\u9700\u8981start\u624d\u5f00\u59cb\u8f93\u51fa/\u626b\u7801\ncamera.start(camera_id)--\u5f00\u59cb\u6307\u5b9a\u7684camera\n", "prefix": "camera.init"}, "camera.on": {"body": "camera.on(${1:id},${2:event},${3:func})", "description": "camera.on(id, event, func) - \u6ce8\u518c\u6444\u50cf\u5934\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint camera id, camera 0\u51990, camera 1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncamera.on(0, \"scanned\", function(id, str)\n--id int camera id\n--str \u591a\u79cd\u7c7b\u578b false \u6444\u50cf\u5934\u6ca1\u6709\u6b63\u5e38\u5de5\u4f5c\uff0ctrue \u62cd\u7167\u6a21\u5f0f\u4e0b\u62cd\u7167\u6210\u529f\u5e76\u4fdd\u5b58\u5b8c\u6210\uff0c int \u539f\u59cb\u6570\u636e\u6a21\u5f0f\u4e0b\u672c\u6b21\u8fd4\u56de\u7684\u6570\u636e\u5927\u5c0f\uff0c string \u626b\u7801\u6a21\u5f0f\u4e0b\u626b\u7801\u6210\u529f\u540e\u7684\u89e3\u7801\u503c\n print(id, str)\nend)\n", "prefix": "camera.on"}, "camera.start": {"body": "camera.start(${1:id})", "description": "camera.start(id) - \u5f00\u59cb\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.start(0)\n", "prefix": "camera.start"}, "camera.stop": {"body": "camera.stop(${1:id})", "description": "camera.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.stop(0)\n", "prefix": "camera.stop"}, "camera.close": {"body": "camera.close(${1:id})", "description": "camera.close(id) - \u5173\u95ed\u6307\u5b9a\u7684camera\uff0c\u91ca\u653e\u76f8\u5e94\u7684IO\u8d44\u6e90\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.close(0)\n", "prefix": "camera.close"}, "camera.capture": {"body": "camera.capture(${1:id},${2:save_path},${3:quality})", "description": "camera.capture(id, save_path, quality) - camera\u62cd\u7167\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nstring/zbuff/nil save_path,\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\uff0c\u7a7a\u5219\u5199\u5728\u4e0a\u6b21\u8def\u5f84\u91cc\uff0c\u9ed8\u8ba4\u662f/capture.jpg\uff0c\u5982\u679c\u662fzbuff\uff0c\u5219\u5c06\u56fe\u7247\u4fdd\u5b58\u5728buff\u5185\u4e0d\u5199\u5165\u6587\u4ef6\u7cfb\u7edf\nint quality, jpeg\u538b\u7f29\u8d28\u91cf\uff0c1\u6700\u5dee\uff0c\u5360\u7528\u7a7a\u95f4\u5c0f\uff0c3\u6700\u9ad8\uff0c\u5360\u7528\u7a7a\u95f4\u6700\u5927\u800c\u4e14\u8d39\u65f6\u95f4\uff0c\u9ed8\u8ba41\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse,\u771f\u6b63\u5b8c\u6210\u540e\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\ncamera.capture(0)\n", "prefix": "camera.capture"}, "camera.video": {"body": "camera.video(${1:id},${2:w},${3:h},${4:out_path})", "description": "camera.video(id, w, h, out_path) - camera\u8f93\u51fa\u89c6\u9891\u6d41\u5230USB\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nint \u8f93\u51fa\u8def\u5f84\uff0c\u76ee\u524d\u53ea\u80fd\u7528\u865a\u62df\u4e32\u53e30\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.video(0, 320, 240, uart.VUART_0)\n", "prefix": "camera.video"}, "camera.startRaw": {"body": "camera.startRaw(${1:id},${2:w},${3:h},${4:buff})", "description": "camera.startRaw(id, w, h, buff) - \u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u8c03\u7528camera.getRaw\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nzbuff \u7528\u4e8e\u5b58\u653e\u6570\u636e\u7684\u7f13\u5b58\u533a\uff0c\u5927\u5c0f\u5fc5\u987b\u4e0d\u5c0f\u4e8ew X h X 2 byte\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.startRaw(0, 320, 240, buff)\n", "prefix": "camera.startRaw"}, "camera.getRaw": {"body": "camera.getRaw(${1:id})", "description": "camera.getRaw(id) - \u518d\u6b21\u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u7ee7\u7eed\u8c03\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.getRaw(0)\n", "prefix": "camera.getRaw"}, "camera.preview": {"body": "camera.preview(${1:id},${2:onoff})", "description": "camera.preview(id, onoff) - \u542f\u505ccamera\u9884\u89c8\u529f\u80fd\uff0c\u76f4\u63a5\u8f93\u51fa\u5230LCD\u4e0a\uff0c\u53ea\u6709\u786c\u4ef6\u652f\u6301\u7684SOC\u53ef\u4ee5\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nboolean true\u5f00\u542f\uff0cfalse\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.preview(1, true)\n", "prefix": "camera.preview"}, "cc.lastNum": {"body": "cc.lastNum()", "description": "cc.lastNum() - \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n", "prefix": "cc.lastNum"}, "cc.dial": {"body": "cc.dial(${1:sim_id},${2:number})", "description": "cc.dial(sim_id, number) - \u62e8\u6253\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\nstring \u7535\u8bdd\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nbool \u62e8\u6253\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.dial"}, "cc.hangUp": {"body": "cc.hangUp(${1:sim_id})", "description": "cc.hangUp(sim_id) - \u6302\u65ad\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n", "prefix": "cc.hangUp"}, "cc.accept": {"body": "cc.accept(${1:sim_id})", "description": "cc.accept(sim_id) - \u63a5\u542c\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n\u8fd4\u56de\u503c\uff1a\nbool \u63a5\u542c\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.accept"}, "cc.init": {"body": "cc.init(${1:multimedia_id})", "description": "cc.init(multimedia_id) - \u521d\u59cb\u5316\u7535\u8bdd\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nnumber multimedia_id \u591a\u5a92\u4f53id\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "cc.init"}, "cc.record": {"body": "cc.record(${1:on_off},${2:upload_zbuff1},${3:upload_zbuff2},${4:download_zbuff1},${5:download_zbuff2})", "description": "cc.record(on_off,upload_zbuff1, upload_zbuff2, download_zbuff1, download_zbuff2) - \u5f55\u97f3\u901a\u8bdd\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u542f\u5173\u95ed\u901a\u8bdd\u5f55\u97f3\u529f\u80fd\uff0cfalse\u6216\u8005nil\u5173\u95ed\uff0c\u5176\u4ed6\u5f00\u542f\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1,zbuff\u521b\u5efa\u65f6\u7684\u7a7a\u95f4\u5bb9\u91cf\u5fc5\u987b\u662f640\u7684\u500d\u6570,\u4e0b\u540c\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\uff0c\u5982\u679c\u5904\u4e8e\u901a\u8bdd\u72b6\u6001\uff0c\u4f1a\u5931\u8d25\n\u4f8b\u5b50\uff1a\nbuff1 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff2 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff3 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff4 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\ncc.record(true, buff1, buff2, buff3, buff4)\n", "prefix": "cc.record"}, "cc.quality": {"body": "cc.quality()", "description": "cc.quality() - \u83b7\u53d6\u5f53\u524d\u901a\u8bdd\u8d28\u91cf\n\u8fd4\u56de\u503c\uff1a\nint 1\u4e3a\u4f4e\u97f3\u8d28(8K)\uff0c2\u4e3a\u9ad8\u97f3\u8d28(16k)\uff0c0\u6ca1\u6709\u5728\u901a\u8bdd\n", "prefix": "cc.quality"}, "cc.on": {"body": "cc.on(${1:event},${2:func})", "description": "cc.on(event, func) - \u6ce8\u518c\u901a\u8bdd\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u540d\u79f0 \u97f3\u9891\u5f55\u97f3\u6570\u636e\u4e3a\"record\"\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\n", "prefix": "cc.on"}, "codec.create": {"body": "codec.create(${1:type},${2:isDecoder},${3:quality})", "description": "codec.create(type, isDecoder, quality) - \u521b\u5efa\u7f16\u89e3\u7801\u7528\u7684codec\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u7c7b\u578b\uff0c\u76ee\u524d\u652f\u6301codec.MP3 codec.AMR\nboolean \u662f\u5426\u662f\u89e3\u7801\u5668\uff0ctrue\u89e3\u7801\u5668\uff0cfalse\u7f16\u7801\u5668\uff0c\u9ed8\u8ba4true\uff0c\u662f\u89e3\u7801\u5668\nint \u7f16\u7801\u7b49\u7ea7\uff0c\u90e8\u5206bsp\u6709\u5185\u90e8\u7f16\u7801\u5668\uff0c\u53ef\u80fd\u9700\u8981\u63d0\u524d\u8f93\u5165\u7f16\u7801\u7b49\u7ea7\uff0c\u6bd4\u5982air780ep\u7684\u5185\u90e8amr\u7f16\u7801\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u89e3\u7801\u5668\nlocal decoder = codec.create(codec.MP3)--\u521b\u5efa\u4e00\u4e2amp3\u7684decoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR, false)--\u521b\u5efa\u4e00\u4e2aamr\u7684encoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR_WB, false, 8)--\u521b\u5efa\u4e00\u4e2aamr-wb\u7684encoder\uff0c\u7f16\u7801\u7b49\u7ea7\u9ed8\u8ba48\n", "prefix": "codec.create"}, "codec.info": {"body": "codec.info(${1:decoder},${2:file_path})", "description": "codec.info(decoder, file_path) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u97f3\u9891\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, audio_format, num_channels, sample_rate, bits_per_sample, is_signed= codec.info(coder, \"xxx\")\n", "prefix": "codec.info"}, "codec.data": {"body": "codec.data(${1:decoder},${2:out_buff})", "description": "codec.data(decoder, out_buff) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u539f\u59cb\u97f3\u9891\u6570\u636e\uff0c\u6bd4\u5982\u4eceMP3\u6587\u4ef6\u91cc\u89e3\u6790\u51faPCM\u6570\u636e\uff0c\u8fd9\u91cc\u7684\u6587\u4ef6\u8def\u5f84\u5df2\u7ecf\u5728codec.info\u4f20\u5165\uff0c\u4e0d\u9700\u8981\u518d\u6b21\u4f20\u5165\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nzbuff \u5b58\u653e\u8f93\u51fa\u6570\u636e\u7684zbuff\uff0c\u7a7a\u95f4\u5fc5\u987b\u4e0d\u5c11\u4e8e16KB\nint \u6700\u5c11\u89e3\u7801\u51fa\u591a\u5c11\u5b57\u8282\u7684\u97f3\u9891\u6570\u636e,\u9ed8\u8ba416384\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\n\u4f8b\u5b50\uff1a\n-- \u5927\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(16*1024)\nlocal result = codec.data(coder, buff)\n-- \u5c0f\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(8*1024)\nlocal result = codec.data(coder, buff, 4096)\n", "prefix": "codec.data"}, "codec.encode": {"body": "codec.encode(${1:coder},${2:in_buffer},${3:out_buffer},${4:mode})", "description": "codec.encode(coder, in_buffer, out_buffer, mode) - \u7f16\u7801\u97f3\u9891\u6570\u636e\uff0c\u7531\u4e8eflash\u548cram\u7a7a\u95f4\u4e00\u822c\u6bd4\u8f83\u6709\u9650\uff0c\u9664\u4e86\u90e8\u5206bsp\u6709\u5185\u90e8amr\u7f16\u7801\u529f\u80fd\uff0c\u76ee\u524d\u53ea\u652f\u6301amr-nb\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nuserdata codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\nzbuff \u8f93\u5165\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u4ece0\u5230used\nzbuff \u8f93\u51fa\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u81ea\u52a8\u6dfb\u52a0\u5230buff\u7684\u5c3e\u90e8,\u5982\u679c\u7a7a\u95f4\u5927\u5c0f\u4e0d\u8db3,\u4f1a\u81ea\u52a8\u6269\u5c55,\u4f46\u662f\u4f1a\u989d\u5916\u6d88\u8017\u65f6\u95f4,\u751a\u81f3\u4f1a\u5931\u8d25,\u6240\u4ee5\u5c3d\u91cf\u4e00\u5f00\u59cb\u5c31\u7ed9\u8db3\u7a7a\u95f4\nint amr_nb\u7684\u7f16\u7801\u7b49\u7ea7 0~7(\u5373 MR475~MR122)\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40 amr_wb\u7684\u7f16\u7801\u7b49\u7ea7 0~8,\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncodec.encode(amr_coder, inbuf, outbuf, codec.AMR_)\n", "prefix": "codec.encode"}, "codec.release": {"body": "codec.release(${1:coder})", "description": "codec.release(coder) - \u91ca\u653e\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f20\u5165\u503c\uff1a\ncoder codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f8b\u5b50\uff1a\ncodec.release(coder)\n", "prefix": "codec.release"}, "coremark.run": {"body": "coremark.run()", "description": "coremark.run() - \u5f00\u59cb\u8dd1\u5206\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u7ed3\u679c\u76f4\u63a5\u6253\u5370\u5728\u65e5\u5fd7\u4e2d\n\u4f8b\u5b50\uff1a\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b, \u8fd9\u4e2a\u5e93\u90fd\u4e0d\u4f1a\u5305\u542b\u5728\u6b63\u5f0f\u7248\u56fa\u4ef6\u91cc\n-- \u82e5\u9700\u4f7f\u7528,\u53ef\u4ee5\u53c2\u8003wiki\u6587\u6863\u81ea\u884c\u7f16\u8bd1\u6216\u4f7f\u7528\u4e91\u7f16\u8bd1\n-- https://wiki.luatos.com/develop/compile.html\n\n-- \u8dd1\u5206\u7684main.lua \u5e94\u79fb\u9664\u786c\u72d7\u4ee3\u7801, \u9632\u6b62\u91cd\u542f\n-- \u82e5\u8bbe\u5907\u652f\u6301\u81ea\u52a8\u4f11\u7720, \u5e94\u5173\u95ed\u4f11\u7720\u529f\u80fd\n-- \u82e5\u8bbe\u5907\u652f\u6301\u66f4\u591a\u7684\u9891\u7387\u8fd0\u884c, \u5efa\u8bae\u8bbe\u7f6e\u5230\u6700\u9ad8\u9891\u7387\n-- \u4f7f\u7528 -O3 \u6bd4 -O2 -Os \u7684\u5206\u6570\u66f4\u9ad8, \u901a\u5e38\u60c5\u51b5\u4e0b\n\n-- \u4f1a\u4e00\u76f4\u72ec\u5360\u7ebf\u7a0b\u5230\u6267\u884c\u5b8c\u6bd5, \u7136\u540e\u5728\u63a7\u5236\u53f0\u8f93\u51fa\u7ed3\u679c\ncoremark.run()\n\n-- \u8dd1\u5206\u56fe\u4e00\u4e50^_^\n\n", "prefix": "coremark.run"}, "crypto.md5": {"body": "crypto.md5(${1:str})", "description": "crypto.md5(str) - \u8ba1\u7b97md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684md5\nlog.info(\"md5\", crypto.md5(\"abc\"))\n", "prefix": "crypto.md5"}, "crypto.hmac_md5": {"body": "crypto.hmac_md5(${1:str},${2:key})", "description": "crypto.hmac_md5(str, key) - \u8ba1\u7b97hmac_md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_md5\nlog.info(\"hmac_md5\", crypto.hmac_md5(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_md5"}, "crypto.sha1": {"body": "crypto.sha1(${1:str})", "description": "crypto.sha1(str) - \u8ba1\u7b97sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha1\nlog.info(\"sha1\", crypto.sha1(\"abc\"))\n", "prefix": "crypto.sha1"}, "crypto.hmac_sha1": {"body": "crypto.hmac_sha1(${1:str},${2:key})", "description": "crypto.hmac_sha1(str, key) - \u8ba1\u7b97hmac_sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha1\nlog.info(\"hmac_sha1\", crypto.hmac_sha1(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha1"}, "crypto.sha256": {"body": "crypto.sha256(${1:str})", "description": "crypto.sha256(str) - \u8ba1\u7b97sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha256\nlog.info(\"sha256\", crypto.sha256(\"abc\"))\n", "prefix": "crypto.sha256"}, "crypto.hmac_sha256": {"body": "crypto.hmac_sha256(${1:str},${2:key})", "description": "crypto.hmac_sha256(str, key) - \u8ba1\u7b97hmac_sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha256\nlog.info(\"hmac_sha256\", crypto.hmac_sha256(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha256"}, "crypto.sha512": {"body": "crypto.sha512(${1:str})", "description": "crypto.sha512(str) - \u8ba1\u7b97sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha512\nlog.info(\"sha512\", crypto.sha512(\"abc\"))\n", "prefix": "crypto.sha512"}, "crypto.hmac_sha512": {"body": "crypto.hmac_sha512(${1:str},${2:key})", "description": "crypto.hmac_sha512(str, key) - \u8ba1\u7b97hmac_sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha512\nlog.info(\"hmac_sha512\", crypto.hmac_sha512(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha512"}, "crypto.cipher_encrypt": {"body": "crypto.cipher_encrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_encrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97AES\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_encrypt(\"AES-128-CBC\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\", \"1234567890666666\")\n", "prefix": "crypto.cipher_encrypt"}, "crypto.cipher_decrypt": {"body": "crypto.cipher_decrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_decrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u89e3\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u7528AES\u52a0\u5bc6,\u7136\u540e\u7528AES\u89e3\u5bc6\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_decrypt(\"AES-128-ECB\", \"PKCS7\", data, \"1234567890123456\")\n-- data\u7684hex\u4e3a 757CCD0CDC5C90EADBEEECF638DD0000\n-- data2\u7684\u503c\u4e3a 1234567890123456\n", "prefix": "crypto.cipher_decrypt"}, "crypto.crc16": {"body": "crypto.crc16(${1:method},${2:data},${3:poly},${4:initial},${5:finally},${6:inReversemoutReverse})", "description": "crypto.crc16(method, data, poly, initial, finally, inReversem outReverse) - \u8ba1\u7b97CRC16\n\u4f20\u5165\u503c\uff1a\nstring CRC16\u6a21\u5f0f\uff08\"IBM\",\"MAXIM\",\"USB\",\"MODBUS\",\"CCITT\",\"CCITT-FALSE\",\"X25\",\"XMODEM\",\"DNP\",\"USER-DEFINED\"\uff09\nstring \u5b57\u7b26\u4e32\nint poly\u503c\nint initial\u503c\nint finally\u503c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16\nlocal crc = crypto.crc16(\"\")\n", "prefix": "crypto.crc16"}, "crypto.crc16_modbus": {"body": "crypto.crc16_modbus(${1:data},${2:start})", "description": "crypto.crc16_modbus(data, start) - \u76f4\u63a5\u8ba1\u7b97modbus\u7684crc16\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint \u521d\u59cb\u5316\u503c,\u9ed8\u8ba40xFFFF\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16 modbus\nlocal crc = crypto.crc16_modbus(data)\n-- 2023.11.06 \u65b0\u589e\u521d\u59cb\u503c\u8bbe\u7f6e\ncrc = crypto.crc16_modbus(data, 0xFFFF)\n", "prefix": "crypto.crc16_modbus"}, "crypto.crc32": {"body": "crypto.crc32(${1:data})", "description": "crypto.crc32(data) - \u8ba1\u7b97crc32\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC32\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC32\nlocal crc = crypto.crc32(data)\n", "prefix": "crypto.crc32"}, "crypto.crc8": {"body": "crypto.crc8(${1:data},${2:poly},${3:start},${4:revert})", "description": "crypto.crc8(data, poly, start, revert) - \u8ba1\u7b97crc8\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5c06\u5ffd\u7565\u9664\u4e86\u6570\u636e\u5916\u6240\u6709\u53c2\u6570\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40\nboolean \u662f\u5426\u9700\u8981\u9006\u5e8f\u5904\u7406\uff0c\u9ed8\u8ba4\u5426\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC8\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC8\nlocal crc = crypto.crc8(data)\nlocal crc = crypto.crc8(data, 0x31, 0xff, false)\n", "prefix": "crypto.crc8"}, "crypto.crc7": {"body": "crypto.crc7(${1:data},${2:poly},${3:start})", "description": "crypto.crc7(data, poly, start) - \u8ba1\u7b97crc7\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40xE5\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40x00\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC7\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC7, \u672cAPI\u4e8e2023.10.07\u65b0\u589e\nlocal crc = crypto.crc7(data)\nlocal crc = crypto.crc7(data, 0x31, 0xff)\n", "prefix": "crypto.crc7"}, "crypto.trng": {"body": "crypto.trng(${1:len})", "description": "crypto.trng(len) - \u751f\u6210\u771f\u968f\u673a\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6307\u5b9a\u968f\u673a\u6570\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u751f\u621032\u4f4d\u968f\u673a\u6570ir\nlocal r = crypto.trng(4)\nlocal _, ir = pack.unpack(r, \"I\")\n", "prefix": "crypto.trng"}, "crypto.totp": {"body": "crypto.totp(${1:secret},${2:time})", "description": "crypto.totp(secret,time) - \u8ba1\u7b97TOTP\u52a8\u6001\u5bc6\u7801\u7684\u7ed3\u679c\n\u4f20\u5165\u503c\uff1a\nstring \u7f51\u7ad9\u63d0\u4f9b\u7684\u5bc6\u94a5\uff08\u5c31\u662fBASE32\u7f16\u7801\u540e\u7684\u7ed3\u679c\uff09\nint \u53ef\u9009\uff0c\u65f6\u95f4\u6233\uff0c\u9ed8\u8ba4\u5f53\u524d\u65f6\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u8ba1\u7b97\u5f97\u51fa\u7684\u516d\u4f4d\u6570\u7ed3\u679c \u8ba1\u7b97\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--\u4f7f\u7528\u5f53\u524d\u7cfb\u7edf\u65f6\u95f4\u8ba1\u7b97\nlocal otp = crypto.totp(\"asdfassdfasdfass\")\n", "prefix": "crypto.totp"}, "crypto.base64_encode": {"body": "crypto.base64_encode(${1:data})", "description": "crypto.base64_encode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u7f16\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.toBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_encode"}, "crypto.base64_decode": {"body": "crypto.base64_decode(${1:data})", "description": "crypto.base64_decode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.fromBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_decode"}, "crypto.cipher_list": {"body": "crypto.cipher_list()", "description": "crypto.cipher_list() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.27\u6dfb\u52a0\nlocal ciphers = crypto.cipher_list()\nif ciphers then\n log.info(\"crypto\", \"ciphers list\", json.encode(ciphers))\nend\n", "prefix": "crypto.cipher_list"}, "crypto.cipher_suites": {"body": "crypto.cipher_suites()", "description": "crypto.cipher_suites() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.11.16\u6dfb\u52a0\nlocal suites = crypto.cipher_suites()\nif suites then\n log.info(\"crypto\", \"ciphers suites\", json.encode(suites))\nend\n", "prefix": "crypto.cipher_suites"}, "crypto.md_file": {"body": "crypto.md_file(${1:tp},${2:path},${3:hmac})", "description": "crypto.md_file(tp, path, hmac) - \u8ba1\u7b97\u6587\u4ef6\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u6587\u4ef6\u8def\u5f84, \u4f8b\u5982 /luadb/logo.jpg\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\"))\nlog.info(\"sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\"))\nlog.info(\"sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\", \"123456\"))\n", "prefix": "crypto.md_file"}, "crypto.md": {"body": "crypto.md(${1:tp},${2:data},${3:hmac})", "description": "crypto.md(tp, data, hmac) - \u8ba1\u7b97\u6570\u636e\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u5f85\u5904\u7406\u7684\u6570\u636e\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md(\"MD5\", \"1234567890\"))\nlog.info(\"sha1\", crypto.md(\"SHA1\", \"1234567890\"))\nlog.info(\"sha256\", crypto.md(\"SHA256\", \"1234567890\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md(\"MD5\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md(\"SHA1\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md(\"SHA256\", \"1234567890\", \"123456\"))\n", "prefix": "crypto.md"}, "crypto.hash_init": {"body": "crypto.hash_init(${1:tp})", "description": "crypto.hash_init(tp) - \u521b\u5efa\u6d41\u5f0fhash\u7528\u7684stream\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5199\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring hmac\u503c\uff0c\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u65e0hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\")\n\n-- \u5e26hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\", \"123456\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\", \"123456\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\", \"123456\")\n", "prefix": "crypto.hash_init"}, "crypto.hash_update": {"body": "crypto.hash_update(${1:stream},${2:data})", "description": "crypto.hash_update(stream, data) - \u6d41\u5f0fhash\u66f4\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream, \u5fc5\u9009\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nreturn \u65e0\n\u4f8b\u5b50\uff1a\ncrypto.hash_update(stream, \"OK\")\n", "prefix": "crypto.hash_update"}, "crypto.hash_finish": {"body": "crypto.hash_finish(${1:stream})", "description": "crypto.hash_finish(stream) - \u83b7\u53d6\u6d41\u5f0fhash\u6821\u9a8c\u503c\u5e76\u91ca\u653e\u521b\u5efa\u7684stream\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u8ba1\u7b97\u5f97\u51fa\u7684\u6d41\u5f0fhash\u503c\u7684hex\u5b57\u7b26\u4e32\uff0c\u5931\u8d25\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nlocal hashResult = crypto.hash_finish(stream)\n", "prefix": "crypto.hash_finish"}, "crypto.checksum": {"body": "crypto.checksum(${1:data},${2:mode})", "description": "crypto.checksum(data, mode) - \u8ba1\u7b97checksum\u6821\u9a8c\u548c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nint \u6a21\u5f0f,\u7d2f\u52a0\u6a21\u5f0f, 0 - \u5f02\u6216, 1 - \u7d2f\u52a0, \u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nint checksum\u503c,\u6821\u9a8c\u548c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728 2022.12.28 \u6dfb\u52a0\n-- \u5355\u7eaf\u8ba1\u7b97checksum\u503c\nlocal ck = crypto.checksum(\"OK\")\nlog.info(\"checksum\", \"ok\", string.format(\"%02X\", ck))\n-- \u7b2c\u4e8c\u4e2a\u53c2\u6570mode\u57282023.5.23\u65e5\u6dfb\u52a0\n", "prefix": "crypto.checksum"}, "dac.open": {"body": "dac.open(${1:ch},${2:freq},${3:mode})", "description": "dac.open(ch, freq, mode) - \u6253\u5f00DAC\u901a\u9053,\u5e76\u914d\u7f6e\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nint \u8f93\u51fa\u9891\u7387,\u5355\u4f4dhz\nint \u6a21\u5f0f,\u9ed8\u8ba4\u4e3a0,\u9884\u7559\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\nend\n\n", "prefix": "dac.open"}, "dac.write": {"body": "dac.write(${1:ch},${2:data})", "description": "dac.write(ch, data) - \u4ece\u6307\u5b9aDAC\u901a\u9053\u8f93\u51fa\u4e00\u6bb5\u6ce2\u5f62,\u6216\u8005\u5355\u4e2a\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nstring \u82e5\u8f93\u51fa\u56fa\u5b9a\u503c,\u53ef\u4ee5\u586b\u6570\u503c, \u82e5\u8f93\u51fa\u6ce2\u5f62,\u586bstring\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.write"}, "dac.close": {"body": "dac.close(${1:ch})", "description": "dac.close(ch) - \u5173\u95edDAC\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.close"}, "disp.init": {"body": "disp.init(${1:conf})", "description": "disp.init(conf) - \u663e\u793a\u5c4f\u521d\u59cb\u5316,\u8bf7\u4f7f\u7528u8g2\u5e93\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- disp\u5e93\u7684\u6240\u6709API\u5747\u5df2\u5408\u5e76\u5230u8g2\u5e93\n-- disp\u5e93\u5df2\u7ecf\u6620\u5c04\u4e3au8g2\u5e93,\u6240\u6709API\u5747\u4ee3\u7406\u5230u8g2,\u8bf7\u67e5\u9605u8g2\u5e93\u7684API\n", "prefix": "disp.init"}, "eink.init": {"body": "eink.init(${1:tp},${2:args},${3:spi_device})", "description": "eink.init(tp, args,spi_device) - eink\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nnumber eink\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1ahttps://wiki.luatos.com/api/eink.html#id1\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_busy\uff08busy\uff09
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1aeink\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1aeink\u590d\u4f4d\u5f15\u811a\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684eink.MODEL_4in2bc) \u6ce8\u610f:eink\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_eink = spi.deviceSetup(0,20,0,0,8,20000000,spi.MSB,1,1)\nlog.info(\"eink.init\",\neink.init(eink.MODEL_4in2bc,{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_eink))\n", "prefix": "eink.init"}, "eink.setup": {"body": "eink.setup(${1:full},${2:spiid},${3:pin_busy},${4:pin_reset},${5:pin_dc},${6:pin_cs})", "description": "eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs) - \u521d\u59cb\u5316eink\n\u4f20\u5165\u503c\uff1a\nint \u5168\u5c4f\u5237\u65b00,\u5c40\u90e8\u5237\u65b01,\u9ed8\u8ba4\u662f\u5168\u5c4f\u5237\u65b0\nint \u6240\u5728\u7684spi,\u9ed8\u8ba4\u662f0\nint Busy \u5fd9\u4fe1\u53f7\u7ba1\u811a\nint Reset \u590d\u4f4d\u7ba1\u811a\nint DC \u6570\u636e\u547d\u4ee4\u9009\u62e9\u7ba1\u811a\nint CS \u4f7f\u80fd\u7ba1\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "eink.setup"}, "eink.sleep": {"body": "eink.sleep()", "description": "eink.sleep() - \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\uff0c\u518d\u6b21\u4f7f\u7528\u65f6\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\n", "prefix": "eink.sleep"}, "eink.clear": {"body": "eink.clear(${1:color},${2:force})", "description": "eink.clear(color, force) - \u6e05\u9664\u7ed8\u56fe\u7f13\u51b2\u533a\uff0c\u9ed8\u8ba4\u4e0d\u4f1a\u9a6c\u4e0a\u5237\u65b0\u5230\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nnumber color \u53ef\u9009\uff0c\u9ed8\u8ba41\u3002\u5237\u5c4f\u989c\u8272\nbool force \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u9a6c\u4e0a\u6e05\u5c4f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.clear"}, "eink.setWin": {"body": "eink.setWin(${1:width},${2:height},${3:rotate})", "description": "eink.setWin(width, height, rotate) - \u8bbe\u7f6e\u7a97\u53e3\n\u4f20\u5165\u503c\uff1a\nint width \u5bbd\u5ea6\nint height \u9ad8\u5ea6\nint rotate \u663e\u793a\u65b9\u5411,0/1/2/3, \u76f8\u5f53\u4e8e\u65cb\u8f6c0\u5ea6/90\u5ea6/180\u5ea6/270\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.setWin"}, "eink.getWin": {"body": "eink.getWin()", "description": "eink.getWin() - \u83b7\u53d6\u7a97\u53e3\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint width \u5bbd\nint height \u9ad8\nint rotate \u65cb\u8f6c\u65b9\u5411\n", "prefix": "eink.getWin"}, "eink.setFont": {"body": "eink.setFont(${1:font})", "description": "eink.setFont(font) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata \u5b57\u4f53\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684print\u6709\u6548\neink.setFont(eink.font_opposansm12_chinese)\n", "prefix": "eink.setFont"}, "eink.print": {"body": "eink.print(${1:x},${2:y},${3:str},${4:colored})", "description": "eink.print(x, y, str, colored) - \u7ed8\u5236\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u5b57\u7b26\u4e32\nint \u989c\u8272, \u53ef\u4ee5\u662f0\u6216\u80051, \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5148\u8bbe\u7f6e\u5b57\u4f53, \u7136\u540e\u5199\u5b57\n-- \u53ef\u7528\u5b57\u4f53\u53d6\u51b3\u4e8e\u5177\u4f53\u7684\u56fa\u4ef6, \u5982\u679c\u6ca1\u6709\u4f60\u60f3\u8981\u7684\u5927\u5c0f,\u53ef\u4ee5\u4e91\u7f16\u8bd1\u4e00\u4efd\u81ea\u5b9a\u4e49\u56fa\u4ef6\n-- font_opposansm8_chinese\n-- font_opposansm10_chinese\n-- font_opposansm12_chinese\n-- font_opposansm14_chinese\n-- font_opposansm16_chinese\neink.setFont(eink.font_opposansm12_chinese)\neink.print(10, 20, \"LuatOS\")\n", "prefix": "eink.print"}, "eink.show": {"body": "eink.show(${1:x},${2:y},${3:noClear})", "description": "eink.show(x, y, noClear) - \u5c06\u7f13\u51b2\u533a\u56fe\u50cf\u8f93\u51fa\u5230\u5c4f\u5e55\n\u4f20\u5165\u503c\uff1a\nint x \u8f93\u51fa\u7684x\u5750\u6807,\u9ed8\u8ba40\nint y \u8f93\u51fa\u7684y\u5750\u6807,\u9ed8\u8ba40\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.show"}, "eink.draw": {"body": "eink.draw(${1:buff},${2:buff2},${3:noclear})", "description": "eink.draw(buff, buff2, noclear) - \u76f4\u63a5\u8f93\u51fa\u6570\u636e\u5230\u5c4f\u5e55,\u652f\u6301\u53cc\u8272\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u6307\u9488\nuserdata zbuff\u6307\u9488\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.draw"}, "eink.line": {"body": "eink.line(${1:x},${2:y},${3:x2},${4:y2},${5:colored})", "description": "eink.line(x, y, x2, y2, colored) - \u7f13\u51b2\u533a\u7ed8\u5236\u7ebf\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u70b9x\u5750\u6807\nint \u8d77\u70b9y\u5750\u6807\nint \u7ec8\u70b9x\u5750\u6807\nint \u7ec8\u70b9y\u5750\u6807\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.line(0, 0, 10, 20, 0)\n", "prefix": "eink.line"}, "eink.rect": {"body": "eink.rect(${1:x},${2:y},${3:x2},${4:y2},${5:colored},${6:fill})", "description": "eink.rect(x, y, x2, y2, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u77e9\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u9876\u70b9x\u5750\u6807\nint \u5de6\u4e0a\u9876\u70b9y\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9x\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9y\u5750\u6807\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.rect(0, 0, 10, 20)\neink.rect(0, 0, 10, 20,0, 1) -- Filled\n", "prefix": "eink.rect"}, "eink.circle": {"body": "eink.circle(${1:x},${2:y},${3:radius},${4:colored},${5:fill})", "description": "eink.circle(x, y, radius, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u5706\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3x\u5750\u6807\nint \u5706\u5fc3y\u5750\u6807\nint \u534a\u5f84\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.circle(0, 0, 10)\neink.circle(0, 0, 10, 1, 1) -- Filled\n", "prefix": "eink.circle"}, "eink.qrcode": {"body": "eink.qrcode(${1:x},${2:y},${3:str},${4:size})", "description": "eink.qrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.qrcode"}, "eink.bat": {"body": "eink.bat(${1:x},${2:y},${3:bat})", "description": "eink.bat(x, y, bat) - \u7f13\u51b2\u533a\u7ed8\u5236\u7535\u6c60\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u7535\u6c60\u7535\u538b,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.bat"}, "eink.weather_icon": {"body": "eink.weather_icon(${1:x},${2:y},${3:code})", "description": "eink.weather_icon(x, y, code) - \u7f13\u51b2\u533a\u7ed8\u5236\u5929\u6c14\u56fe\u6807\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u5929\u6c14\u4ee3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.weather_icon"}, "eink.model": {"body": "eink.model(${1:m})", "description": "eink.model(m) - \u8bbe\u7f6e\u58a8\u6c34\u5c4f\u9a71\u52a8\u578b\u53f7\n\u4f20\u5165\u503c\uff1a\nint \u578b\u53f7\u540d\u79f0, \u4f8b\u5982 eink.model(eink.MODEL_1in54_V2)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.model"}, "eink.drawXbm": {"body": "eink.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "eink.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\neink.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "eink.drawXbm"}, "eink.setCtx": {"body": "eink.setCtx(${1:index})", "description": "eink.setCtx(index) - \u5207\u6362\u989c\u8272\u753b\u677f, \u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u989c\u8272\u7d22\u5f15, \u9ed1\u8272\u4e3a0, \u7ea2\u8272\u4e3a1\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f, \u5bf9\u5355\u8272\u58a8\u6c34\u5c4f(\u53ea\u6709\u9ed1\u767d)\u7684\u65e0\u6548\neink.setCtx(1)\n-- \u5207\u6362\u540e, \u6240\u6709drawXXX\u90fd\u4f1a\u64cd\u4f5c\u5728\u6307\u5b9a\u989c\u8272\u7684\u753b\u677f\n", "prefix": "eink.setCtx"}, "eink.async": {"body": "eink.async(${1:index})", "description": "eink.async(index) - \u5f02\u6b65\u65b9\u5f0f\uff0c\u4f7f\u7528\u6b64\u65b9\u5f0f\u9700\u8981\u5148 require(\"sysplus\") \u4e4b\u540e eink.clear().wait() eink.show().wait()\u8fdb\u884c\u5237\u5c4f\n\u4f20\u5165\u503c\uff1a\nint 1 \u4f7f\u7528\u5f02\u6b65\n\u4f8b\u5b50\uff1a\n eink.async(1)\n spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,1)\n eink.init(eink.MODEL_1in54,\n {port = \"device\",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},\n spi_eink)\n eink.setWin(200, 200, 0)\n sys.wait(100)\n log.info(\"e-paper 1.54\", \"Testing Go\")\n eink.print(30, 20, \"LuatOS-AIR780E\",0x00)\n eink.show().wait()\n log.info(\"e-paper 1.54\", \"Testing End\")\n", "prefix": "eink.async"}, "errDump.dump": {"body": "errDump.dump(${1:zbuff},${2:type},${3:isDelete})", "description": "errDump.dump(zbuff, type, isDelete) - \u624b\u52a8\u8bfb\u53d6\u5f02\u5e38\u65e5\u5fd7\uff0c\u4e3b\u8981\u7528\u4e8e\u7528\u6237\u5c06\u65e5\u5fd7\u53d1\u9001\u7ed9\u81ea\u5df1\u7684\u670d\u52a1\u5668\u800c\u4e0d\u662fIOT\u5e73\u53f0\uff0c\u5982\u679c\u5728errDump.config\u914d\u7f6e\u4e86\u5468\u671f\u4e0a\u4f20\uff0c\u5219\u4e0d\u80fd\u4f7f\u7528\u672c\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nzbuff \u65e5\u5fd7\u4fe1\u606f\u7f13\u5b58\uff0c\u5982\u679c\u4e3anil\u5c31\u4e0d\u4f1a\u8bfb\u51fa\uff0c\u4e00\u822c\u5f53\nint \u65e5\u5fd7\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709errDump.TYPE_SYS\u548cerrDump.TYPE_USR\nboolean \u662f\u5426\u5220\u9664\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nboolean true\u8868\u793a\u672c\u6b21\u8bfb\u53d6\u524d\u5e76\u6ca1\u6709\u5199\u5165\u6570\u636e\uff0cfalse\u53cd\u4e4b\uff0c\u5728\u5220\u9664\u65e5\u5fd7\u524d\uff0c\u6700\u597d\u518d\u8bfb\u4e00\u4e0b\u786e\u4fdd\u6ca1\u6709\u65b0\u7684\u6570\u636e\u5199\u5165\u4e86\n\u4f8b\u5b50\uff1a\nlocal result = errDump.dump(buff, errDump.TYPE_SYS, false) --\u8bfb\u51fa\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\nlocal result = errDump.dump(nil, errDump.TYPE_SYS, true) --\u6e05\u9664\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\n", "prefix": "errDump.dump"}, "errDump.record": {"body": "errDump.record(${1:string})", "description": "errDump.record(string) - \u5199\u5165\u7528\u6237\u7684\u5f02\u5e38\u65e5\u5fd7\uff0c\u6ce8\u610f\u6700\u5927\u53ea\u67094KB\uff0c\u8d85\u8fc7\u90e8\u5206\u65b0\u7684\u8986\u76d6\u65e7\u7684\uff0c\u5f00\u542f\u81ea\u52a8\u4e0a\u4f20\u540e\u4f1a\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\n\u4f20\u5165\u503c\uff1a\nstring \u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.record(\"socket long time no connect\") --\u8bb0\u5f55\u4e0b\"socket long time no connect\"\n", "prefix": "errDump.record"}, "errDump.config": {"body": "errDump.config(${1:enable},${2:period},${3:user_flag},${4:custom_id},${5:host},${6:port})", "description": "errDump.config(enable, period, user_flag, custom_id, host, port) - \u914d\u7f6e\u5173\u952e\u65e5\u5fd7\u4e0a\u4f20IOT\u5e73\u53f0\uff0c\u8fd9\u91cc\u7684\u65e5\u5fd7\u5305\u62ec\u5f15\u8d77luavm\u5f02\u5e38\u9000\u51fa\u7684\u65e5\u5fd7\u548c\u7528\u6237\u901a\u8fc7record\u5199\u5165\u7684\u65e5\u5fd7\uff0c\u7c7b\u4f3c\u4e8eair\u7684errDump\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u542f\u7528\u8bb0\u5f55\u529f\u80fd\uff0cfalse\u7684\u8bdd\u5c06\u4e0d\u4f1a\u8bb0\u5f55\u4efb\u4f55\u65e5\u5fd7\nint \u5b9a\u65f6\u4e0a\u4f20\u5468\u671f\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4600\u79d2\uff0c\u8fd9\u4e2a\u662f\u81ea\u52a8\u4e0a\u4f20\u65f6\u5019\u540e\u7684\u91cd\u8bd5\u65f6\u95f4\u65f6\u95f4\uff0c\u5728\u5f00\u673a\u540e\u6216\u8005\u6709record\u64cd\u4f5c\u540e\u4f1a\u5f88\u5feb\u5c1d\u8bd5\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\u4e00\u6b21\uff0c\u5982\u679c\u4e3a0\uff0c\u5219\u4e0d\u4f1a\u4e0a\u4f20\uff0c\u7531\u7528\u6237dump\u540e\u81ea\u5df1\u4e0a\u4f20\u81ea\u5df1\u7684\u5e73\u53f0\nstring \u7528\u6237\u7684\u7279\u6b8a\u6807\u8bc6\uff0c\u53ef\u4ee5\u4e3a\u7a7a\nstring \u8bbe\u5907\u8bc6\u522b\u53f7, 4G\u8bbe\u5907\u9ed8\u8ba4\u662fimei,\u5176\u4ed6\u8bbe\u5907\u9ed8\u8ba4\u662fmcu.unique_id\nstring \u670d\u52a1\u5668\u57df\u540d,\u9ed8\u8ba4dev_msg1.openluat.com\nint \u670d\u52a1\u5668\u7aef\u53e3,\u9ed8\u8ba4\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.config(true, 3600, \"12345678\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f1a\u5728imei\u540e\u9644\u52a0\u4e0a12345678\nerrDump.config(false) --\u5173\u95ed\u8bb0\u5f55\u529f\u80fd\uff0c\u4e0d\u518d\u4e0a\u4f20\nerrDump.config(true, 0) --\u8bb0\u5f55\uff0c\u4f46\u662f\u4e0d\u4f1a\u4e3b\u52a8\u4e0a\u4f20\uff0c\u7531\u7528\u6237\u5b9e\u73b0\u4e0a\u4f20\u529f\u80fd\n\n-- 2023.09.22\u65b0\u589ecustom_id\u53c2\u6570\nerrDump.config(true, 3600, nil, \"ABC\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u8bbe\u5907\u8bc6\u522b\u53f7ABC\n\n-- 2023.12.8 \u65b0\u589ehost\u548cport\u53c2\u6570\nerrDump.config(true, 3600, nil, nil, \"dev_msg1.openluat.com\", 12425)\n", "prefix": "errDump.config"}, "fastlz.compress": {"body": "fastlz.compress(${1:data},${2:level})", "description": "fastlz.compress(data, level) - \u5feb\u901f\u538b\u7f29\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nint \u538b\u7f29\u7ea7\u522b,\u9ed8\u8ba41, \u53ef\u90091\u6216\u80052, 2\u7684\u538b\u7f29\u6bd4\u66f4\u9ad8(\u6709\u65f6\u5019)\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u538b\u7f29\u8fc7\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u5982\u4e0b\n-- \u7cfb\u7edf\u5185\u5b58, \u56fa\u5b9a32k\n-- lua\u5185\u5b58, \u539f\u59cb\u6570\u636e\u7684\u5927\u5c0f\u76841.05\u500d,\u6700\u5c0f\u5360\u75281024\u5b57\u8282.\n", "prefix": "fastlz.compress"}, "fastlz.uncompress": {"body": "fastlz.uncompress(${1:data},${2:maxout})", "description": "fastlz.uncompress(data, maxout) - \u5feb\u901f\u89e3\u538b\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e\nint \u89e3\u538b\u540e\u7684\u6700\u5927\u5927\u5c0f, \u9ed8\u8ba4\u662f4k, \u53ef\u6309\u9700\u8c03\u6574\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n", "prefix": "fastlz.uncompress"}, "fatfs.mount": {"body": "fatfs.mount(${1:mode},${2:mount_point},${3:spiid_or_spidevice},${4:spi_cs},${5:spi_speed},${6:power_pin},${7:power_on_delay},${8:auto_format})", "description": "fatfs.mount(mode,mount_point, spiid_or_spidevice, spi_cs, spi_speed, power_pin, power_on_delay, auto_format) - \u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nint fatfs\u6a21\u5f0f,\u53ef\u9009fatfs.SPI,fatfs.SDIO,fatfs.RAM,fatfs.USB\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f /fatfs\nint \u4f20\u5165spi device\u6307\u9488,\u6216\u8005spi\u7684id,\u6216\u8005sdio\u7684id\nint \u7247\u9009\u811a\u7684GPIO \u53f7, spi\u6a21\u5f0f\u6709\u6548,\u82e5\u524d\u4e00\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint SPI\u6700\u9ad8\u901f\u5ea6,\u9ed8\u8ba410M, \u82e5\u524d2\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u63a7\u5236\u811a,TF\u5361\u521d\u59cb\u524d\u5148\u62c9\u4f4e\u590d\u4f4d\u518d\u62c9\u9ad8,\u5982\u679c\u6ca1\u6709,\u6216\u8005\u662f\u5185\u7f6e\u7535\u6e90\u63a7\u5236\u65b9\u5f0f,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u590d\u4f4d\u8fc7\u7a0b\u65f6\u95f4,\u5355\u4f4dms,\u9ed8\u8ba4\u503c\u662f1\nbool \u6302\u8f7d\u5931\u8d25\u662f\u5426\u5c1d\u8bd5\u683c\u5f0f\u5316,\u9ed8\u8ba4\u662ftrue,\u5373\u81ea\u52a8\u683c\u5f0f\u5316. \u672c\u53c2\u6570\u57282023.8.16\u6dfb\u52a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nstring \u5931\u8d25\u7684\u539f\u56e0\n\u4f8b\u5b50\uff1a\n-- \u65b9\u6cd51, \u4f7f\u7528SPI\u6a21\u5f0f\n local spiId = 2\n local result = spi.setup(\n spiId,--\u4e32\u53e3id\n 255, -- \u4e0d\u4f7f\u7528\u9ed8\u8ba4CS\u811a\n 0,--CPHA\n 0,--CPOL\n 8,--\u6570\u636e\u5bbd\u5ea6\n 400*1000 -- \u521d\u59cb\u5316\u65f6\u4f7f\u7528\u8f83\u4f4e\u7684\u9891\u7387\n )\n local TF_CS = pin.PB3\n gpio.setup(TF_CS, 1)\n --fatfs.debug(1) -- \u82e5\u6302\u8f7d\u5931\u8d25,\u53ef\u4ee5\u5c1d\u8bd5\u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u67e5\u627e\u539f\u56e0\n -- \u63d0\u9192, \u82e5TF/SD\u6a21\u5757\u5e26\u7535\u5e73\u8f6c\u6362, \u901a\u5e38\u4e0d\u652f\u630110M\u4ee5\u4e0a\u7684\u6ce2\u7279\u7387!!\n fatfs.mount(fatfs.SPI,\"SD\", spiId, TF_CS, 24000000)\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n -- \u5f80\u4e0b\u7684\u64cd\u4f5c, \u4f7f\u7528 io.open(\"/sd/xxx\", \"w+\") \u7b49io\u5e93\u7684API\u5c31\u53ef\u4ee5\u4e86\n", "prefix": "fatfs.mount"}, "fatfs.unmount": {"body": "fatfs.unmount(${1:mount_point})", "description": "fatfs.unmount(mount_point) - \u53d6\u6d88\u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f fatfs,\u5fc5\u987b\u4e0efatfs.mount\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0, \u5426\u5219\u8fd4\u56de\u5931\u8d25\u7801\n\u4f8b\u5b50\uff1a\nfatfs.mount(\"SD\")\n", "prefix": "fatfs.unmount"}, "fatfs.getfree": {"body": "fatfs.getfree(${1:mount_point})", "description": "fatfs.getfree(mount_point) - \u83b7\u53d6\u53ef\u7528\u7a7a\u95f4\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9, \u9700\u8981\u8ddffatfs.mount\u4f20\u5165\u7684\u503c\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\ntable \u82e5\u6210\u529f\u4f1a\u8fd4\u56detable,\u5426\u5219\u8fd4\u56denil\nint \u5bfc\u81f4\u5931\u8d25\u7684\u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- table\u5305\u542b\u7684\u5185\u5bb9\u6709\n-- total_sectors \u603b\u6247\u533a\u6570\u91cf\n-- free_sectors \u7a7a\u95f2\u6247\u533a\u6570\u91cf\n-- total_kb \u603b\u5b57\u8282\u6570,\u5355\u4f4dkb\n-- free_kb \u7a7a\u95f2\u5b57\u8282\u6570, \u5355\u4f4dkb\n-- \u6ce8\u610f,\u5f53\u524d\u6247\u533a\u5927\u5c0f\u56fa\u5b9a\u5728512\u5b57\u8282\n\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n", "prefix": "fatfs.getfree"}, "fatfs.debug": {"body": "fatfs.debug(${1:value})", "description": "fatfs.debug(value) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,true\u4ee3\u8868\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,\u589e\u52a0\u8c03\u8bd5\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "fatfs.debug"}, "fdb.kvdb_init": {"body": "fdb.kvdb_init(${1:name},${2:partition})", "description": "fdb.kvdb_init(name, partition) - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u5e93\u540d,\u5f53\u524d\u4ec5\u652f\u6301env\nstring FAL\u5206\u533a\u540d,\u5f53\u524d\u4ec5\u652f\u6301onchip_fdb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- fdb\u5e93\u57fa\u4e8e flashdb , \u518d\u6b21\u8868\u793a\u611f\u8c22.\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fdb.kvdb_init \u540e \u6267\u884c fdb.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fdb.kvdb_init"}, "fdb.kv_set": {"body": "fdb.kv_set(${1:key},${2:value})", "description": "fdb.kv_set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u5927255\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nnumber \u7b2c\u4e8c\u4e2a\u4e3a\u8fd4\u56de\u4e3aflashdb\u7684fdb_kv_set_blob\u8fd4\u56de\u8be6\u7ec6\u72b6\u6001,0\uff1a\u65e0\u9519\u8bef 1:\u64e6\u9664\u9519\u8bef 2:\u8bfb\u9519\u8bef 3:\u5199\u9519\u8bef 4:\u672a\u627e\u5230 5:kv\u540d\u5b57\u9519\u8bef 6:kv\u540d\u5b57\u5b58\u5728 7:\u5df2\u4fdd\u5b58 8:\u521d\u59cb\u5316\u9519\u8bef\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_set(\"wendal\", \"goodgoodstudy\"))\nend\n", "prefix": "fdb.kv_set"}, "fdb.kv_get": {"body": "fdb.kv_get(${1:key},${2:skey})", "description": "fdb.kv_get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fdb.kv_get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_get(\"wendal\"))\nend\n", "prefix": "fdb.kv_get"}, "fdb.kv_del": {"body": "fdb.kv_del(${1:key})", "description": "fdb.kv_del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_del(\"wendal\"))\nend\n", "prefix": "fdb.kv_del"}, "fdb.kv_clr": {"body": "fdb.kv_clr()", "description": "fdb.kv_clr() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfdb.kv_clr()\n", "prefix": "fdb.kv_clr"}, "fdb.kv_iter": {"body": "fdb.kv_iter()", "description": "fdb.kv_iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_iter"}, "fdb.kv_next": {"body": "fdb.kv_next(${1:iter})", "description": "fdb.kv_next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fdb.kv_iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_next"}, "fdb.kv_stat": {"body": "fdb.kv_stat()", "description": "fdb.kv_stat() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.23 \u6dfb\u52a0\nlocal used,maxs,kv_count = fdb.kv_stat()\nlog.info(\"fdb\", \"kv\", used,maxs,kv_count)\n", "prefix": "fdb.kv_stat"}, "fonts.list": {"body": "fonts.list(${1:tp})", "description": "fonts.list(tp) - \u8fd4\u56de\u56fa\u4ef6\u652f\u6301\u7684\u5b57\u4f53\u5217\u8868\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\ntable \u5b57\u4f53\u5217\u8868\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-12\nif fonts.list then\n log.info(\"fonts\", \"u8g2\", json.encode(fonts.list(\"u8g2\")))\nend\n", "prefix": "fonts.list"}, "fonts.u8g2_get": {"body": "fonts.u8g2_get(${1:name},${2:tp})", "description": "fonts.u8g2_get(name, tp) - \u83b7\u53d6\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0, \u4f8b\u5982opposansm8_chinese unifont_t_symbols\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\noppo_8 = fonts.get(\"opposansm8_chinese\", \"u8g2\")\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n-- \u82e5\u4f7f\u7528\u4e91\u7f16\u8bd1\u7684\u81ea\u5b9a\u4e49\u5b57\u5e93, \u4f7f\u7528\u65b9\u5f0f\u5982\u4e0b\noppo_8 = fonts.get(\"oppo_bold_8\", \"u8g2\") -- oppo_bold_8 \u662f\u4e91\u7f16\u8bd1\u754c\u9762\u7684\u5b57\u5e93\u547d\u540d\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n", "prefix": "fonts.u8g2_get"}, "fonts.u8g2_load": {"body": "fonts.u8g2_load(${1:path},${2:path})", "description": "fonts.u8g2_load(path, path) - \u4ece\u6587\u4ef6\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84, \u4f8b\u5982 /luadb/abc.bin\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2. \u4e5f\u652f\u6301lvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-11\n-- \u63d0\u9192: \u82e5\u6587\u4ef6\u4f4d\u4e8e/luadb\u4e0b, \u4e0d\u9700\u8981\u5360\u7528\u5185\u5b58\n-- \u82e5\u6587\u4ef6\u5904\u4e8e\u5176\u4ed6\u8def\u5f84, \u4f8b\u5982tf/sd\u5361, spi flash, \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5230\u5185\u5b58, \u6d88\u8017lua vm\u7684\u5185\u5b58\u7a7a\u95f4\n-- \u52a0\u8f7d\u540e\u8bf7\u9002\u5f53\u5f15\u7528, \u4e0d\u5fc5\u53cd\u590d\u52a0\u8f7d\u540c\u4e00\u4e2a\u5b57\u4f53\u6587\u4ef6\noppo12 = fonts.load(\"/luadb/oppo12.bin\")\nif oppo12 then\n u8g2.SetFont(oppo12)\nelse\n log.warn(\"fonts\", \"no such font file oppo12.bin\")\nend\n", "prefix": "fonts.u8g2_load"}, "fota.init": {"body": "fota.init(${1:storge_location},${2:len},${3:param1},${4:param2})", "description": "fota.init(storge_location, len, param1, param2) - \u521d\u59cb\u5316fota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nint/string fota\u6570\u636e\u5b58\u50a8\u7684\u8d77\u59cb\u4f4d\u7f6e
\u5982\u679c\u662fint\uff0c\u5219\u662f\u7531\u82af\u7247\u5e73\u53f0\u5177\u4f53\u5224\u65ad
\u5982\u679c\u662fstring\uff0c\u5219\u5b58\u50a8\u5728\u6587\u4ef6\u7cfb\u7edf\u4e2d
\u5982\u679c\u4e3anil\uff0c\u5219\u7531\u5e95\u5c42\u51b3\u5b9a\u5b58\u50a8\u4f4d\u7f6e\nint \u6570\u636e\u5b58\u50a8\u7684\u6700\u5927\u7a7a\u95f4\nuserdata param1\uff0c\u5982\u679c\u6570\u636e\u5b58\u50a8\u5728spiflash\u65f6,\u4e3aspi_device\nint param2\uff0c\u76ee\u524d\u53ea\u7528\u4e8e\u5916\u90e8flash\u66f4\u65b0\u65f6, spiflash\u7535\u6e90\u63a7\u5236\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316fota\u6d41\u7a0b\nlocal result = fota.init(0, 0x00300000, spi_device) --\u7531\u4e8e105\u7684flash\u4ece0x01000000\u5f00\u59cb\uff0c\u6240\u4ee50\u5c31\u662f\u5916\u90e8spiflash\nlocal result = fota.init() --ec618\u7cfb\u5217/EC7XX\u7cfb\u5217\u4f7f\u7528\u56fa\u5b9a\u5185\u90e8\u5730\u5740\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u53c2\u6570\u4e86\nlocal result = fota.init(0xe0000000, 0, spi_device, 27) --EC7XX\u7cfb\u5217\u5141\u8bb8\u4f7f\u7528\u5916\u90e8flash\u66f4\u65b0\uff0c\u4f46\u662f\u5730\u5740\u5fc5\u987b\u52a0\u4e0a0xe0000000\u7684\u504f\u79fb\n", "prefix": "fota.init"}, "fota.wait": {"body": "fota.wait()", "description": "fota.wait() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u51c6\u5907\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u51c6\u5907\u597d\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal isDone = fota.wait()\n", "prefix": "fota.wait"}, "fota.run": {"body": "fota.run(${1:buff},${2:offset},${3:len})", "description": "fota.run(buff, offset, len) - \u5199\u5165fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nzbuff/string fota\u6570\u636e\uff0c\u5c3d\u91cf\u7528zbuff\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u957f\u5ea6,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662fzbuff:used()\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.run(buf) -- \u5199\u5165fota\u6d41\u7a0b\n\n-- \u63d0\u793a: \uff0c\u5982\u679c\u4f20\u5165\u7684\u662fzbuff\uff0c\u5199\u5165\u6210\u529f\u540e\uff0c\u8bf7\u81ea\u884c\u6e05\u7a7azbuff\u5185\u7684\u6570\u636e\n\n-- 2024.4.3\u65b0\u589eoffset, len\u53c2\u6570, \u4ec5\u5bf9zbuff\u6709\u6548\nfota.run(buff, 0, 1024)\n", "prefix": "fota.run"}, "fota.file": {"body": "fota.file(${1:path})", "description": "fota.file(path) - \u4ece\u6307\u5b9a\u6587\u4ef6\u8bfb\u53d6fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.file(\"/xxx.bin\") -- \u5199\u5165fota\u6d41\u7a0b\n-- \u672cAPI\u4e8e2023.03.23 \u6dfb\u52a0\n", "prefix": "fota.file"}, "fota.isDone": {"body": "fota.isDone()", "description": "fota.isDone() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u5b8c\u6210\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u5199\u5165\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal result, isDone = fota.isDone()\n", "prefix": "fota.isDone"}, "fota.finish": {"body": "fota.finish(${1:is_ok})", "description": "fota.finish(is_ok) - \u7ed3\u675ffota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7ed3\u675ffota\u6d41\u7a0b\nlocal result = fota.finish(true)\n", "prefix": "fota.finish"}, "fs.fsstat": {"body": "fs.fsstat(${1:path})", "description": "fs.fsstat(path) - \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84,\u9ed8\u8ba4\"/\",\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nboolean \u83b7\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u603b\u7684block\u6570\u91cf\nint \u5df2\u4f7f\u7528\u7684block\u6570\u91cf\nint block\u7684\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nstring \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b,\u4f8b\u5982lfs\u4ee3\u8868littlefs\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u6839\u5206\u533a\u7684\u4fe1\u606f\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\n", "prefix": "fs.fsstat"}, "fs.fsize": {"body": "fs.fsize(${1:path})", "description": "fs.fsize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u5927\u5c0f,\u82e5\u83b7\u53d6\u5931\u8d25\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370main.luac\u7684\u5927\u5c0f\nlog.info(\"fsize\", fs.fsize(\"/main.luac\"))\n", "prefix": "fs.fsize"}, "fskv.init": {"body": "fskv.init()", "description": "fskv.init() - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fskv.kvdb_init \u540e \u6267\u884c fskv.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fskv.init"}, "fskv.set": {"body": "fskv.set(${1:key},${2:value})", "description": "fskv.set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662fnil, function, userdata, task\nlog.info(\"fdb\", fskv.set(\"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.set(\"upgrade\", true))\nlog.info(\"fdb\", fskv.set(\"timer\", 1))\nlog.info(\"fdb\", fskv.set(\"bigd\", {name=\"wendal\",age=123}))\n", "prefix": "fskv.set"}, "fskv.sett": {"body": "fskv.sett(${1:key},${2:skey},${3:value})", "description": "fskv.sett(key, skey, value) - \u8bbe\u7f6etable\u5185\u7684\u952e\u503c\u5bf9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring table\u7684key\u540d\u79f0, \u5fc5\u586b, \u4e0d\u80fd\u662f\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse/nil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u57282023.7.26\u65b0\u589e,\u6ce8\u610f\u4e0eset\u51fd\u6570\u533a\u522b\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662ffunction, userdata, task\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"upgrade\", true))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"timer\", 1))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"bigd\", {name=\"wendal\",age=123}))\n\n-- \u4e0b\u5217\u8bed\u53e5\u5c06\u6253\u5370\u51fa4\u4e2a\u5143\u7d20\u7684table\nlog.info(\"fdb\", fskv.get(\"mytable\"), json.encode(fskv.get(\"mytable\")))\n-- \u6ce8\u610f: \u5982\u679ckey\u4e0d\u5b58\u5728, \u6216\u8005\u539f\u672c\u7684\u503c\u4e0d\u662ftable\u7c7b\u578b,\u5c06\u4f1a\u5b8c\u5168\u8986\u76d6\n-- \u4f8b\u5982\u4e0b\u5217\u5199\u6cd5,\u6700\u7ec8\u83b7\u53d6\u5230\u7684\u662ftable,\u800c\u975e\u7b2c\u4e00\u884c\u7684\u5b57\u7b26\u4e32\nlog.info(\"fdb\", fskv.set(\"mykv\", \"123\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"age\", \"123\")) -- \u4fdd\u5b58\u7684\u5c06\u662f {age:\"123\"}\n\n\n-- \u5982\u679c\u8bbe\u7f6e\u7684\u6570\u636e\u586bnil, \u4ee3\u8868\u5220\u9664\u5bf9\u5e94\u7684key\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\", \"wendal\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\")) -- \u76f8\u5f53\u4e8e\u5220\u9664\n-- \n", "prefix": "fskv.sett"}, "fskv.get": {"body": "fskv.get(${1:key},${2:skey})", "description": "fskv.get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fskv.get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", fskv.get(\"wendal\"))\nend\n\n-- \u82e5\u9700\u8981\"\u9ed8\u8ba4\u503c\", \u5bf9\u5e94\u975ebool\u5e03\u5c14\u503c, \u53ef\u4ee5\u8fd9\u6837\u5199\nlocal v = fskv.get(\"wendal\") or \"123\"\n", "prefix": "fskv.get"}, "fskv.del": {"body": "fskv.del(${1:key})", "description": "fskv.del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"fdb\", fskv.del(\"wendal\"))\n", "prefix": "fskv.del"}, "fskv.clear": {"body": "fskv.clear()", "description": "fskv.clear() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfskv.clear()\n", "prefix": "fskv.clear"}, "fskv.iter": {"body": "fskv.iter()", "description": "fskv.iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fskv.kv_get(k))\n end\nend\n", "prefix": "fskv.iter"}, "fskv.next": {"body": "fskv.next(${1:iter})", "description": "fskv.next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fskv.iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fskv\", k, \"value\", fskv.get(k))\n end\nend\n", "prefix": "fskv.next"}, "fskv.status": {"body": "fskv.status()", "description": "fskv.status() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\nlocal used, total,kv_count = fskv.status()\nlog.info(\"fdb\", \"kv\", used,total,kv_count)\n", "prefix": "fskv.status"}, "ftp.login": {"body": "ftp.login(${1:adapter},${2:ip_addr},${3:port},${4:username},${5:password})", "description": "ftp.login(adapter,ip_addr,port,username,password) - FTP\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring ip_addr \u5730\u5740\nstring port \u7aef\u53e3,\u9ed8\u8ba421\nstring username \u7528\u6237\u540d\nstring password \u5bc6\u7801\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp_login = ftp.login(nil,\"xxx\")\n", "prefix": "ftp.login"}, "ftp.command": {"body": "ftp.command(${1:cmd})", "description": "ftp.command(cmd) - FTP\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nstring cmd \u547d\u4ee4 \u76ee\u524d\u652f\u6301:NOOP SYST TYPE PWD MKD CWD CDUP RMD DELE LIST\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\n // \u7a7a\u64cd\u4f5c\uff0c\u9632\u6b62\u8fde\u63a5\u65ad\u6389\n print(ftp.command(\"NOOP\").wait())\n // \u62a5\u544a\u8fdc\u7a0b\u7cfb\u7edf\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\n print(ftp.command(\"SYST\").wait())\n // \u6307\u5b9a\u6587\u4ef6\u7c7b\u578b\n print(ftp.command(\"TYPE I\").wait())\n // \u663e\u793a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u540d\n print(ftp.command(\"PWD\").wait())\n // \u521b\u5efa\u76ee\u5f55\n print(ftp.command(\"MKD QWER\").wait())\n // \u6539\u53d8\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\n print(ftp.command(\"CWD /QWER\").wait())\n // \u8fd4\u56de\u4e0a\u4e00\u5c42\u76ee\u5f55\n print(ftp.command(\"CDUP\").wait())\n // \u5220\u9664\u76ee\u5f55\n print(ftp.command(\"RMD QWER\").wait())\n // \u83b7\u53d6\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\u5217\u8868\n print(ftp.command(\"LIST\").wait())\n // \u5220\u9664\u6587\u4ef6\n print(ftp.command(\"DELE /1/12222.txt\").wait())\n", "prefix": "ftp.command"}, "ftp.pull": {"body": "ftp.pull(${1:local_name},${2:remote_name})", "description": "ftp.pull(local_name,remote_name) - FTP\u6587\u4ef6\u4e0b\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.pull(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.pull"}, "ftp.push": {"body": "ftp.push(${1:local_name},${2:remote_name})", "description": "ftp.push(local_name,remote_name) - FTP\u6587\u4ef6\u4e0a\u4f20\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.push(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.push"}, "ftp.close": {"body": "ftp.close()", "description": "ftp.close() - FTP\u5ba2\u6237\u7aef\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.close().wait()\n", "prefix": "ftp.close"}, "ftp.debug": {"body": "ftp.debug(${1:onoff})", "description": "ftp.debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "ftp.debug"}, "sm.sm2encrypt": {"body": "sm.sm2encrypt(${1:pkx},${2:pky},${3:data},${4:mode},${5:mode2})", "description": "sm.sm2encrypt(pkx,pky,data, mode, mode2) - sm2\u7b97\u6cd5\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5x,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5y,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u6700\u957f32\u5b57\u8282, \u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32, \u539f\u6837\u8f93\u51fa,\u672a\u7ecfHEX\u8f6c\u6362. \u82e5\u52a0\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2encrypt"}, "sm.sm2decrypt": {"body": "sm.sm2decrypt(${1:private},${2:data},${3:mode},${4:mode2})", "description": "sm.sm2decrypt(private,data,mode,mode2) - sm2\u7b97\u6cd5\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u89e3\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2decrypt"}, "sm.sm3": {"body": "sm.sm3(${1:data})", "description": "sm.sm3(data) - sm3\u7b97\u6cd5,\u7b97HASH\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3(\"lqlq666lqlq946\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3"}, "sm.sm3hmac": {"body": "sm.sm3hmac(${1:data},${2:key})", "description": "sm.sm3hmac(data, key) - sm3\u7b97\u6cd5,\u7b97HASH\u503c,\u4f46\u5e26HMAC\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3hmac(\"lqlq666lqlq946\", \"123\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3hmac"}, "gmssl.sm4encrypt": {"body": "gmssl.sm4encrypt(${1:mode},${2:padding},${3:originStr},${4:password})", "description": "gmssl.sm4encrypt(mode,padding,originStr,password) - SM4\u52a0\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal originStr = \"SM4 ECB ZeroPadding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aZeroPadding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nlocal encodeStr = gmssl.sm4encrypt(\"ECB\",\"ZERO\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"ZERO\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 ECB Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nencodeStr = gmssl.sm4encrypt(\"ECB\",\"PKCS5\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"PKCS5\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 CBC Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aCBC\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a256 bit\uff1b\u504f\u79fb\u91cf\uff1a1234567890666666\nencodeStr = gmssl.sm4encrypt(\"CBC\",\"PKCS5\",originStr,\"1234567890123456\",\"1234567890666666\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"CBC\",\"PKCS5\",encodeStr,\"1234567890123456\",\"1234567890666666\"))\n", "prefix": "gmssl.sm4encrypt"}, "gmssl.sm4decrypt": {"body": "gmssl.sm4decrypt(${1:mode},${2:padding},${3:encodeStr},${4:password})", "description": "gmssl.sm4decrypt(mode,padding,encodeStr,password) - SM4\u89e3\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u5df2\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003gmssl.sm4encrypt\n", "prefix": "gmssl.sm4decrypt"}, "sm.sm2sign": {"body": "sm.sm2sign(${1:private},${2:data},${3:id})", "description": "sm.sm2sign(private,data,id) - sm2\u7b97\u6cd5\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\n\u8fd4\u56de\u503c\uff1a\nstring \u524d\u9762\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u7b7e\u540d\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2sign"}, "sm.sm2verify": {"body": "sm.sm2verify(${1:pkx},${2:pky},${3:data},${4:id},${5:sig})", "description": "sm.sm2verify(pkx, pky, data, id, sig) - sm2\u7b97\u6cd5\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5X,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5Y,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\nstring \u7b7e\u540d\u6570\u636e,\u5fc5\u987b64\u5b57\u8282,\u975eHEX\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nboolean \u9a8c\u8bc1\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2verify"}, "gpio.setup": {"body": "gpio.setup(${1:pin},${2:mode},${3:pull},${4:irq},${5:alt})", "description": "gpio.setup(pin, mode, pull, irq, alt) - \u8bbe\u7f6e\u7ba1\u811a\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nint pin gpio\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nany mode \u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff1a
\u6570\u5b570/1\u4ee3\u8868\u8f93\u51fa\u6a21\u5f0f
nil\u4ee3\u8868\u8f93\u5165\u6a21\u5f0f
function\u4ee3\u8868\u4e2d\u65ad\u6a21\u5f0f\uff0c\u5982\u679c\u586bgpio.count\uff0c\u5219\u4e3a\u4e2d\u65ad\u8ba1\u6570\u529f\u80fd\uff0c\u4e2d\u65ad\u65f6\u4e0d\u56de\u8c03\nint pull \u4e0a\u62c9\u4e0b\u62c9\u6a21\u5f0f, \u53ef\u4ee5\u662f\u4e0a\u62c9\u6a21\u5f0f gpio.PULLUP \u6216\u4e0b\u62c9\u6a21\u5f0f gpio.PULLDOWN, \u6216\u8005\u5f00\u6f0f\u6a21\u5f0f 0. \u9700\u8981\u6839\u636e\u5b9e\u9645\u786c\u4ef6\u9009\u7528\nint irq \u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f,\u9ed8\u8ba4gpio.BOTH\u3002\u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f
\u4e0a\u5347\u6cbfgpio.RISING
\u4e0b\u964d\u6cbfgpio.FALLING
\u4e0a\u5347\u548c\u4e0b\u964d\u90fd\u89e6\u53d1gpio.BOTH \nint alt \u590d\u7528\u9009\u9879\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9700\u8981\u8fd9\u4e2a\u53c2\u6570\uff0c\u6709\u4e9bGPIO\u53ef\u4ee5\u590d\u7528\u5230\u4e0d\u540c\u5f15\u811a\u4e0a\uff0c\u53ef\u4ee5\u9009\u62e9\u590d\u7528\u9009\u9879\uff080\u6216\u80054\uff09\u4ece\u800c\u590d\u7528\u5230\u5bf9\u5e94\u7684\u5f15\u811a\u4e0a\n\u8fd4\u56de\u503c\uff1a\nany \u8f93\u51fa\u6a21\u5f0f\u8fd4\u56de\u8bbe\u7f6e\u7535\u5e73\u7684\u95ed\u5305, \u8f93\u5165\u6a21\u5f0f\u548c\u4e2d\u65ad\u6a21\u5f0f\u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u5165\ngpio.setup(17, nil)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\ngpio.setup(17, 0)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u9ad8,\u4e14\u542f\u7528\u5185\u90e8\u4e0a\u62c9\ngpio.setup(17, 1, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u9ed8\u8ba4\u53cc\u5411\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u4ec5\u4e0a\u5347\u6cbf\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP, gpio.RISING)\n\n-- \u4e2d\u65ad\u8ba1\u6570 \u4e8e2024.5.8\u65b0\u589e\n-- \u8bbe\u7f6egpio7\u4e3a\u4e2d\u65ad\u8ba1\u6570\uff0c\u8be6\u7ec6demo\u89c1gpio/gpio_irq_count\ngpio.setup(7, gpio.count)\n\n-- alt_func \u4e8e2023.7.2\u65b0\u589e\n-- \u672c\u529f\u80fd\u4ec5\u5bf9\u90e8\u5206\u5e73\u53f0\u6709\u6548, \u4e14\u4ec5\u7528\u4e8e\u8c03\u6574GPIO\u590d\u7528,\u5176\u4ed6\u590d\u7528\u65b9\u5f0f\u8bf7\u4f7f\u7528muc.iomux\u51fd\u6570\n-- \u4ee5\u4e0b\u793a\u4f8b\u4ee3\u7801, \u5c06I2S_DOUT\u590d\u7528\u6210gpio18\n-- AIR780E\u7684PIN33(\u6a21\u5757\u7ba1\u811a\u5e8f\u53f7), \u5bf9\u5e94paddr 38, \u9ed8\u8ba4\u529f\u80fd\u662fI2S_DOUT, \u590d\u7528\u6210gpio18\n-- \u65b9\u5411\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\n-- Air780E(EC618\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780e.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\n-- Air780EP(EC718P\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780ep.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\ngpio.setup(18, 0, nil, nil, 4)\n\n-- \u63d0\u9192: \n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u5165\u6a21\u5f0f\u6216\u4e2d\u65ad,\u624d\u80fd\u901a\u8fc7gpio.get()\u83b7\u53d6\u5230\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u624d\u80fd\u901a\u8fc7gpio.set()\u8bbe\u7f6e\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u901a\u8fc7gpio.get()\u603b\u4f1a\u5f97\u52300\n-- \u4e2d\u65ad\u56de\u8c03\u7684val\u53c2\u6570\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\n-- \u5bf9Cat.1\u6a21\u5757,EC618\u7cfb\u5217\u53ea\u6709AONGPIO\u624d\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5176\u4ed6\u7cfb\u5217\u6240\u6709GPIO\u90fd\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5177\u4f53\u770b\u786c\u4ef6\u624b\u518c\n-- \u9ed8\u8ba4\u8bbe\u7f6e\u4e0b,\u4e2d\u65ad\u662f\u6ca1\u6709\u9632\u6296\u65f6\u95f4\u7684,\u53ef\u4ee5\u901a\u8fc7gpio.set_debounce(pin, 50)\u6765\u8bbe\u7f6e\u9632\u6296\u65f6\u95f4\n\n-- pull\u53c2\u6570\u7684\u989d\u5916\u8bf4\u660e, \u4e0a\u62c9/\u4e0b\u62c9\u914d\u7f6e\n-- \u5bf9\u4e8e\u90e8\u5206\u7684BSP\u6765\u8bf4, \u53ea\u652f\u6301 gpio.PULLUP \u6216 gpio.PULLDOWN, \u4f46\u6709\u90e8\u5206BSP\u652f\u6301\u5f00\u6f0f\u6a21\u5f0f\n-- \u5bf9\u4e8e\u652f\u6301\u5f00\u6f0f\u7684bsp, pull\u53c2\u6570\u8981\u4f20 0 \u624d\u80fd\u5f00\u542f\u5f00\u6f0f\u6a21\u5f0f, \u4e0d\u662f\u4f20nil\n-- \u4f8b\u5982:\n-- EC618\u7cfb\u5217(Air780E/Air780EG/Air780EX/Air700E\u7b49)\n-- EC718\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\n-- XT804\u7cfb\u5217(Air101/Air103/Air601)\n", "prefix": "gpio.setup"}, "gpio.caplevel": {"body": "gpio.caplevel(${1:pin},${2:level},${3:func})", "description": "gpio.caplevel(pin, level,func) - \u6355\u83b7\u7ba1\u811a\u7535\u5e73\u6301\u7eed\u65f6\u957f\uff0c\u5355\u4f4dus\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint level \u9700\u8981\u6355\u83b7\u7684\u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\uff0c\u5373\u7ba1\u811a\u4e0a\u6b63\u5e38\u65f6\u95f4\u5904\u4e8elevel\u7684\u53cd\uff0c\u6355\u83b7\u8bbe\u5b9a\u7684level\u6301\u7eed\u65f6\u95f4\nfunction func \u5b8c\u6210\u6355\u83b7\u540e\u7684\u56de\u8c03\u51fd\u6570\uff0c\u4ec5\u4e00\u4e2a\u53c2\u6570\uff0c\u53c2\u6570\u4e3a\u6355\u83b7\u5230\u7684\u65f6\u95f4\u957f\u5ea6number\u578b\u6570\u503c\uff0c\u5355\u4f4dus\n\u8fd4\u56de\u503c\uff1a\nany \u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n-- \u6355\u83b7pin.PA07\u4e3a\u9ad8\u7535\u5e73\u7684\u6301\u7eed\u65f6\u95f4\ngpio.caplevel(pin.PA07,1,function(val) print(val) end)\n", "prefix": "gpio.caplevel"}, "gpio.set": {"body": "gpio.set(${1:pin},${2:value})", "description": "gpio.set(pin, value) - \u8bbe\u7f6e\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint value \u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio17\u4e3a\u4f4e\u7535\u5e73\ngpio.set(17, 0)\n", "prefix": "gpio.set"}, "gpio.get": {"body": "gpio.get(${1:pin})", "description": "gpio.get(pin) - \u83b7\u53d6\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nvalue \u7535\u5e73, \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u5bf9\u5e94\u6570\u503c1\u548c0\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6gpio17\u7684\u5f53\u524d\u7535\u5e73\ngpio.get(17)\n", "prefix": "gpio.get"}, "gpio.close": {"body": "gpio.close(${1:pin})", "description": "gpio.close(pin) - \u5173\u95ed\u7ba1\u811a\u529f\u80fd(\u9ad8\u963b\u8f93\u5165\u6001),\u5173\u6389\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u603b\u662f\u6267\u884c\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edgpio17\ngpio.close(17)\n", "prefix": "gpio.close"}, "gpio.setDefaultPull": {"body": "gpio.setDefaultPull(${1:val})", "description": "gpio.setDefaultPull(val) - \u8bbe\u7f6eGPIO\u811a\u7684\u9ed8\u8ba4\u4e0a\u62c9/\u4e0b\u62c9\u8bbe\u7f6e, \u9ed8\u8ba4\u662f\u5e73\u53f0\u81ea\u5b9a\u4e49(\u4e00\u822c\u4e3a\u5f00\u6f0f).\n\u4f20\u5165\u503c\uff1a\nint val 0\u5e73\u53f0\u81ea\u5b9a\u4e49,1\u4e0a\u62c9, 2\u4e0b\u62c9\n\u8fd4\u56de\u503c\uff1a\nboolean \u4f20\u503c\u6b63\u786e\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio.setup\u7684pull\u9ed8\u8ba4\u503c\u4e3a\u4e0a\u62c9\ngpio.setDefaultPull(1)\n", "prefix": "gpio.setDefaultPull"}, "gpio.toggle": {"body": "gpio.toggle(${1:pin})", "description": "gpio.toggle(pin) - \u53d8\u6362GPIO\u811a\u8f93\u51fa\u7535\u5e73,\u4ec5\u8f93\u51fa\u6a21\u5f0f\u53ef\u7528\n\u4f20\u5165\u503c\uff1a\nint \u7ba1\u811a\u7684GPIO\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2022.05.17 \u6dfb\u52a0\n-- \u5047\u8bbeGPIO16\u4e0a\u6709LED, \u6bcf500ms\u5207\u6362\u4e00\u6b21\u5f00\u5173\ngpio.setup(16, 0)\nsys.timerLoopStart(function()\n gpio.toggle(16)\nend, 500)\n", "prefix": "gpio.toggle"}, "gpio.pulse": {"body": "gpio.pulse(${1:pin},${2:level},${3:len},${4:delay})", "description": "gpio.pulse(pin,level,len,delay) - \u5728\u540c\u4e00\u4e2aGPIO\u8f93\u51fa\u4e00\u7ec4\u8109\u51b2, \u6ce8\u610f, len\u7684\u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7\nint/string \u6570\u503c\u6216\u8005\u5b57\u7b26\u4e32.\nint len \u957f\u5ea6 \u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\nint delay \u5ef6\u8fdf,\u5f53\u524d\u65e0\u56fa\u5b9a\u65f6\u95f4\u5355\u4f4d\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u901a\u8fc7PB06\u811a\u8f93\u51fa\u8f93\u51fa8\u4e2a\u7535\u5e73\u53d8\u5316.\ngpio.pulse(pin.PB06,0xA9, 8, 0)\n", "prefix": "gpio.pulse"}, "gpio.debounce": {"body": "gpio.debounce(${1:pin},${2:ms},${3:mode})", "description": "gpio.debounce(pin, ms, mode) - \u9632\u6296\u8bbe\u7f6e, \u6839\u636e\u786c\u4ef6ticks\u8fdb\u884c\u9632\u6296\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\nint \u9632\u6296\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2, \u6700\u5927 65555 ms, \u8bbe\u7f6e\u4e3a0\u5219\u5173\u95ed\nint \u6a21\u5f0f, 0\u51b7\u5374\u6a21\u5f0f, 1\u5ef6\u65f6\u6a21\u5f0f. \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6d88\u6296\u6a21\u5f0f, \u5f53\u524d\u652f\u63012\u79cd, 2022.12.16\u5f00\u59cb\u652f\u6301mode=1\n-- 0 \u89e6\u53d1\u4e2d\u65ad\u540e,\u9a6c\u4e0a\u4e0a\u62a5\u4e00\u6b21, \u7136\u540e\u51b7\u5374N\u4e2a\u6beb\u79d2\u540e,\u91cd\u65b0\u63a5\u53d7\u4e2d\u65ad\n-- 1 \u89e6\u53d1\u4e2d\u65ad\u540e,\u5ef6\u8fdfN\u4e2a\u6beb\u79d2,\u671f\u95f4\u6ca1\u6709\u65b0\u4e2d\u65ad\u4e14\u7535\u5e73\u6ca1\u6709\u53d8\u5316,\u4e0a\u62a5\u4e00\u6b21\n\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f0-\u51b7\u5374, \u4e2d\u65ad\u540e\u9a6c\u4e0a\u4e0a\u62a5, \u4f46100ms\u5185\u53ea\u4e0a\u62a5\u4e00\u6b21\ngpio.debounce(7, 100) -- \u82e5\u82af\u7247\u652f\u6301pin\u5e93, \u53ef\u7528pin.PA7\u4ee3\u66ff\u6570\u5b577\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f1-\u5ef6\u65f6, \u4e2d\u65ad\u540e\u7b49\u5f85100ms,\u671f\u95f4\u82e5\u4fdd\u6301\u8be5\u7535\u5e73\u4e86,\u65f6\u95f4\u5230\u4e4b\u540e\u4e0a\u62a5\u4e00\u6b21\n-- \u5bf9\u5e94\u7684,\u5982\u679c\u8f93\u5165\u7684\u662f\u4e00\u4e2a 50hz\u7684\u65b9\u6ce2,\u90a3\u4e48\u4e0d\u4f1a\u89e6\u53d1\u4efb\u4f55\u4e0a\u62a5\ngpio.debounce(7, 100, 1)\n\n-- \u5173\u95ed\u9632\u6296,\u65f6\u95f4\u8bbe\u7f6e\u4e3a0\u5c31\u5173\u95ed\ngpio.debounce(7, 0)\n", "prefix": "gpio.debounce"}, "gpio.count": {"body": "gpio.count(${1:pin})", "description": "gpio.count(pin) - \u83b7\u53d6gpio\u4e2d\u65ad\u6570\u91cf\uff0c\u5e76\u6e05\u7a7a\u7d2f\u8ba1\u503c\uff0c\u7c7b\u4f3cair724\u7684\u8109\u51b2\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u4ece\u4e0a\u6b21\u83b7\u53d6\u4e2d\u65ad\u6570\u91cf\u540e\u5230\u5f53\u524d\u7684\u4e2d\u65ad\u8ba1\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"irq cnt\", gpio.count(10))\n", "prefix": "gpio.count"}, "gtfont.init": {"body": "gtfont.init(${1:spi_device})", "description": "gtfont.init(spi_device) - \u521d\u59cb\u5316\u9ad8\u901a\u5b57\u4f53\u82af\u7247\n\u4f20\u5165\u503c\uff1a\nuserdata \u4ec5\u652f\u6301spi device \u751f\u6210\u7684\u6307\u9488\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7279\u522b\u63d0\u9192: \u4f7f\u7528\u672c\u5e93\u7684\u4efb\u4f55\u4ee3\u7801, \u90fd\u9700\u8981 \u989d\u5916 \u7684 \u9ad8\u901a\u5b57\u4f53\u82af\u7247 !!\n-- \u6ca1\u6709\u989d\u5916\u82af\u7247\u662f\u8dd1\u4e0d\u4e86\u7684!!\ngtfont.init(spi_device)\n", "prefix": "gtfont.init"}, "hmeta.model": {"body": "hmeta.model()", "description": "hmeta.model() - \u83b7\u53d6\u6a21\u7ec4\u540d\u79f0\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.model"}, "hmeta.hwver": {"body": "hmeta.hwver()", "description": "hmeta.hwver() - \u83b7\u53d6\u6a21\u7ec4\u7684\u786c\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model(), hmeta.hwver())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.hwver"}, "ht1621.setup": {"body": "ht1621.setup(${1:pin_cs},${2:pin_data},${3:pin_wr},${4:cmd_com_mode},${5:cmd_rc},${6:cmd_sysen})", "description": "ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen) - \u521d\u59cb\u5316ht1621\n\u4f20\u5165\u503c\uff1a\nint \u7247\u9009\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u6570\u636e\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint WR\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u547d\u4ee4\u6a21\u5f0f, \u9ed8\u8ba4\u662f0x52\nint \u5185\u90e8RC\u632f\u8361\u5668,\u9ed8\u8ba40x30\nint \u7cfb\u7edf\u632f\u8361\u5668\u5f00,\u9ed8\u8ba40x02\n\u8fd4\u56de\u503c\uff1a\nuserdata \u8fd4\u56deht1621\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.data(seg, 0, 0xeb)\n", "prefix": "ht1621.setup"}, "ht1621.lcd": {"body": "ht1621.lcd(${1:seg},${2:onoff})", "description": "ht1621.lcd(seg, onoff) - LCD\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nboolean true\u5f00,false\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\n", "prefix": "ht1621.lcd"}, "ht1621.data": {"body": "ht1621.data(${1:seg},${2:addr},${3:sdat})", "description": "ht1621.data(seg, addr, sdat) - \u5c55\u793a\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u5730\u5740, 0-6, \u8d85\u8fc76\u65e0\u6548\nint \u6570\u636e, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\nht1621.data(seg, 0, 0xF1)\n-- \u9644\u6570\u5b570-9\u7684\u503c\u8868\n-- 0,1,2,3,4,5,6,7,8,9\n-- 0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf\n", "prefix": "ht1621.data"}, "ht1621.cmd": {"body": "ht1621.cmd(${1:seg},${2:cmd})", "description": "ht1621.cmd(seg, cmd) - \u53d1\u9001\u6307\u4ee4\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u6307\u4ee4, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5177\u4f53\u6307\u4ee4\u8bf7\u67e5\u9605\u786c\u4ef6\u624b\u518c\n", "prefix": "ht1621.cmd"}, "http.request": {"body": "http.request(${1:method},${2:url},${3:headers},${4:body},${5:opts},${6:ca_file},${7:client_ca},${8:client_key},${9:client_password})", "description": "http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, client_password) - http\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nstring \u8bf7\u6c42\u65b9\u6cd5, \u652f\u6301 GET/POST \u7b49\u5408\u6cd5\u7684HTTP\u65b9\u6cd5\nstring url\u5730\u5740, \u652f\u6301 http\u548chttps, \u652f\u6301\u57df\u540d, \u652f\u6301\u81ea\u5b9a\u4e49\u7aef\u53e3\ntabal \u8bf7\u6c42\u5934 \u53ef\u9009 \u4f8b\u5982 {[\"Content-Type\"] = \"application/x-www-form-urlencoded\"}\nstring/zbuff body \u53ef\u9009\ntable \u989d\u5916\u914d\u7f6e \u53ef\u9009 \u5305\u542b timeout:\u8d85\u65f6\u65f6\u95f4\u5355\u4f4dms \u53ef\u9009,\u9ed8\u8ba410\u5206\u949f,\u51990\u5373\u6c38\u4e45\u7b49\u5f85 dst:\u4e0b\u8f7d\u8def\u5f84,\u53ef\u9009 adapter:\u9009\u62e9\u4f7f\u7528\u7f51\u5361,\u53ef\u9009 debug:\u662f\u5426\u6253\u5f00debug\u4fe1\u606f,\u53ef\u9009,ipv6:\u662f\u5426\u4e3aipv6 \u9ed8\u8ba4\u4e0d\u662f,\u53ef\u9009 callback:\u4e0b\u8f7d\u56de\u8c03\u51fd\u6570,\u53c2\u6570 content_len:\u603b\u957f\u5ea6 body_len:\u4ee5\u4e0b\u8f7d\u957f\u5ea6 userdata \u7528\u6237\u4f20\u53c2,\u53ef\u9009 userdata:\u56de\u8c03\u81ea\u5b9a\u4e49\u4f20\u53c2 \nstring \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981\nstring \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nint code , \u670d\u52a1\u5668\u53cd\u9988\u7684\u503c>=100, \u6700\u5e38\u89c1\u7684\u662f200.\u5982\u679c\u662f\u5e95\u5c42\u9519\u8bef,\u4f8b\u5982\u8fde\u63a5\u5931\u8d25, \u8fd4\u56de\u503c\u5c0f\u4e8e0\ntabal headers \u5f53code>100\u65f6, \u4ee3\u8868\u670d\u52a1\u5668\u8fd4\u56de\u7684\u5934\u90e8\u6570\u636e \nstring/int body \u670d\u52a1\u5668\u54cd\u5e94\u7684\u5185\u5bb9\u5b57\u7b26\u4e32,\u5982\u679c\u662f\u4e0b\u8f7d\u6a21\u5f0f, \u5219\u8fd4\u56de\u6587\u4ef6\u5927\u5c0f\n\u4f8b\u5b50\uff1a\n\n--[[\ncode\u62a5\u9519\u4fe1\u606f\u5217\u8868:\n-1 HTTP_ERROR_STATE \u9519\u8bef\u7684\u72b6\u6001, \u4e00\u822c\u662f\u5e95\u5c42\u5f02\u5e38,\u8bf7\u62a5issue\n-2 HTTP_ERROR_HEADER \u9519\u8bef\u7684\u54cd\u5e94\u5934\u90e8, \u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-3 HTTP_ERROR_BODY \u9519\u8bef\u7684\u54cd\u5e94\u4f53,\u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-4 HTTP_ERROR_CONNECT \u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25, \u672a\u8054\u7f51,\u5730\u5740\u9519\u8bef,\u57df\u540d\u9519\u8bef\n-5 HTTP_ERROR_CLOSE \u63d0\u524d\u65ad\u5f00\u4e86\u8fde\u63a5, \u7f51\u7edc\u6216\u670d\u52a1\u5668\u95ee\u9898\n-6 HTTP_ERROR_RX \u63a5\u6536\u6570\u636e\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\n-7 HTTP_ERROR_DOWNLOAD \u4e0b\u8f7d\u6587\u4ef6\u8fc7\u7a0b\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\u6216\u4e0b\u8f7d\u8def\u5f84\u95ee\u9898\n-8 HTTP_ERROR_TIMEOUT \u8d85\u65f6, \u5305\u62ec\u8fde\u63a5\u8d85\u65f6,\u8bfb\u53d6\u6570\u636e\u8d85\u65f6\n-9 HTTP_ERROR_FOTA fota\u529f\u80fd\u62a5\u9519,\u901a\u5e38\u662f\u66f4\u65b0\u5305\u4e0d\u5408\u6cd5\n]]\n\n-- GET\u8bf7\u6c42\nlocal code, headers, body = http.request(\"GET\",\"http://site0.cn/api/httptest/simple/time\").wait()\nlog.info(\"http.get\", code, headers, body)\n-- POST\u8bf7\u6c42\nlocal code, headers, body = http.request(\"POST\",\"http://httpbin.com/post\", {}, \"abc=123\").wait()\nlog.info(\"http.post\", code, headers, body)\n\n-- GET\u8bf7\u6c42,\u4f46\u4e0b\u8f7d\u5230\u6587\u4ef6\nlocal code, headers, body = http.request(\"GET\",\"http://httpbin.com/\", {}, \"\", {dst=\"/data.bin\"}).wait()\nlog.info(\"http.get\", code, headers, body)\n\n-- \u81ea\u5b9a\u4e49\u8d85\u65f6\u65f6\u95f4, 5000ms\nhttp.request(\"GET\",\"http://httpbin.com/\", nil, nil, {timeout=5000}).wait()\n", "prefix": "http.request"}, "httpsrv.start": {"body": "httpsrv.start(${1:port},${2:func})", "description": "httpsrv.start(port, func) - \u542f\u52a8\u5e76\u76d1\u542c\u4e00\u4e2ahttp\u7aef\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\nfunction \u56de\u8c03\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u76d1\u542c80\u7aef\u53e3\nhttpsrv.start(80, function(client, method, uri, headers, body)\n -- method \u662f\u5b57\u7b26\u4e32, \u4f8b\u5982 GET POST PUT DELETE\n -- uri \u4e5f\u662f\u5b57\u7b26\u4e32 \u4f8b\u5982 / /api/abc\n -- headers table\u7c7b\u578b\n -- body \u5b57\u7b26\u4e32\n log.info(\"httpsrv\", method, uri, json.encode(headers), body)\n if uri == \"/led/1\" then\n LEDA(1)\n return 200, {}, \"ok\"\n elseif uri == \"/led/0\" then\n LEDA(0)\n return 200, {}, \"ok\"\n end\n -- \u8fd4\u56de\u503c\u7684\u7ea6\u5b9a code, headers, body\n -- \u82e5\u6ca1\u6709\u8fd4\u56de\u503c, \u5219\u9ed8\u8ba4 404, {} ,\"\"\n return 404, {}, \"Not Found\" .. uri\nend)\n-- \u5173\u4e8e\u9759\u6001\u6587\u4ef6\n-- \u60c5\u51b51: / , \u6620\u5c04\u4e3a /index.html\n-- \u60c5\u51b52: /abc.html , \u5148\u67e5\u627e /abc.html, \u4e0d\u5b58\u5728\u7684\u8bdd\u67e5\u627e /abc.html.gz\n-- \u82e5gz\u5b58\u5728, \u4f1a\u81ea\u52a8\u4ee5\u538b\u7f29\u6587\u4ef6\u8fdb\u884c\u54cd\u5e94, \u7edd\u5927\u90e8\u5206\u6d4f\u89c8\u5668\u652f\u6301.\n-- \u5f53\u524d\u9ed8\u8ba4\u67e5\u627e /luadb/xxx \u4e0b\u7684\u6587\u4ef6,\u6682\u4e0d\u53ef\u914d\u7f6e\n", "prefix": "httpsrv.start"}, "httpsrv.stop": {"body": "httpsrv.stop(${1:port})", "description": "httpsrv.stop(port) - \u505c\u6b62http\u670d\u52a1\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n", "prefix": "httpsrv.stop"}, "i2c.exist": {"body": "i2c.exist(${1:id})", "description": "i2c.exist(id) - i2c\u7f16\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u5c31\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5i2c1\u662f\u5426\u5b58\u5728\nif i2c.exist(1) then\n log.info(\"\u5b58\u5728 i2c1\")\nend\n", "prefix": "i2c.exist"}, "i2c.setup": {"body": "i2c.setup(${1:id},${2:speed},${3:pullup})", "description": "i2c.setup(id, speed, pullup) - i2c\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u901f\u5ea6, \u4f8b\u5982i2c.FAST\nbool \u662f\u5426\u8f6f\u4ef6\u4e0a\u62c9, \u9ed8\u8ba4\u4e0d\u5f00\u542f\uff0c\u9700\u8981\u786c\u4ef6\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5c31\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316i2c1\ni2c.setup(1, i2c.FAST) -- id\u6b63\u786e\u5c31\u4e00\u5b9a\u6210\u529f\n-- \u5982\u9700\u5224\u65adi2c id\u662f\u5426\u5408\u6cd5, \u8bf7\u4f7f\u7528 i2c.exist \u51fd\u6570\n", "prefix": "i2c.setup"}, "i2c.createSoft": {"body": "i2c.createSoft(${1:scl},${2:sda},${3:delay})", "description": "i2c.createSoft(scl,sda,delay) - \u65b0\u5efa\u4e00\u4e2a\u8f6f\u4ef6i2c\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nint i2c SCL\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint i2c SDA\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint \u6bcf\u4e2a\u64cd\u4f5c\u7684\u5ef6\u65f6, \u5355\u4f4dus, \u9ed8\u8ba45\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6I2C\u5bf9\u8c61 \u53ef\u5f53\u4f5ci2c\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\uff01\u8fd9\u4e2a\u63a5\u53e3\u662f\u8f6f\u4ef6\u6a21\u62dfi2c\uff0c\u901f\u5ea6\u53ef\u80fd\u4f1a\u6bd4\u786c\u4ef6\u7684\u6162\n-- \u4e0d\u9700\u8981\u8c03\u7528i2c.close\u63a5\u53e3\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\nlocal softI2C = i2c.createSoft(1, 2, 5)\ni2c.send(softI2C, 0x5C, string.char(0x0F, 0x2F))\n-- \u6ce8\u610f, \u7b2c3\u4e2a\u53c2\u6570\u662f 2023.06.19 \u6dfb\u52a0\u7684delay\n-- \u901a\u8fc7\u8c03\u6574delay\u53c2\u6570\u7684\u503c, \u53ef\u589e\u52a0\u6216\u964d\u4f4eI2C\u7684\u901f\u5ea6\n", "prefix": "i2c.createSoft"}, "i2c.send": {"body": "i2c.send(${1:id},${2:addr},${3:data},${4:stop})", "description": "i2c.send(id, addr, data,stop) - i2c\u53d1\u9001\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/table \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5f80i2c0\u53d1\u90011\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(0, 0x68, 0x75)\n-- \u5f80i2c1\u53d1\u90012\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(1, 0x5C, string.char(0x0F, 0x2F))\ni2c.send(1, 0x5C, {0x0F, 0x2F})\n", "prefix": "i2c.send"}, "i2c.recv": {"body": "i2c.recv(${1:id},${2:addr},${3:len})", "description": "i2c.recv(id, addr, len) - i2c\u63a5\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u63a5\u6536\u6570\u636e\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u8bfb\u53d62\u4e2a\u5b57\u8282\u7684\u6570\u636e\nlocal data = i2c.recv(1, 0x5C, 2)\n", "prefix": "i2c.recv"}, "i2c.writeReg": {"body": "i2c.writeReg(${1:id},${2:addr},${3:reg},${4:data},${5:stop})", "description": "i2c.writeReg(id, addr, reg, data,stop) - i2c\u5199\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u5199\u51652\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.writeReg(1, 0x5C, 0x01, string.char(0x00, 0xF2))\n", "prefix": "i2c.writeReg"}, "i2c.readReg": {"body": "i2c.readReg(${1:id},${2:addr},${3:reg},${4:len})", "description": "i2c.readReg(id, addr, reg, len) - i2c\u8bfb\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u5f85\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u8bfb\u51fa2\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.readReg(1, 0x5C, 0x01, 2)\n", "prefix": "i2c.readReg"}, "i2c.close": {"body": "i2c.close(${1:id})", "description": "i2c.close(id) - \u5173\u95edi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edi2c1\ni2c.close(1)\n", "prefix": "i2c.close"}, "i2c.readDHT12": {"body": "i2c.readDHT12(${1:id})", "description": "i2c.readDHT12(id) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint DHT12\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x5C\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6DHT12\ni2c.setup(0)\nlocal re, H, T = i2c.readDHT12(0)\nif re then\n log.info(\"dht12\", H, T)\nend\n", "prefix": "i2c.readDHT12"}, "i2c.readSHT30": {"body": "i2c.readSHT30(${1:id},${2:addr})", "description": "i2c.readSHT30(id,addr) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT30\u7684\u6e29\u6e7f\u5ea6\u6570\u636e(\u7531\"\u597d\u5947\u661f\"\u8d21\u732e)\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u8bbe\u5907addr,SHT30\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x44 bit7\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6SHT30\ni2c.setup(0)\nlocal re, H, T = i2c.readSHT30(0)\nif re then\n log.info(\"sht30\", H, T)\nend\n", "prefix": "i2c.readSHT30"}, "i2c.transfer": {"body": "i2c.transfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen})", "description": "i2c.transfer(id, addr, txBuff, rxBuff, rxLen) - i2c\u901a\u7528\u4f20\u8f93\uff0c\u5305\u62ec\u53d1\u9001N\u5b57\u8282\uff0c\u53d1\u9001N\u5b57\u8282+\u63a5\u6536N\u5b57\u8282\uff0c\u63a5\u6536N\u5b57\u8282\u4e09\u79cd\u529f\u80fd\uff0c\u5728\u53d1\u9001\u8f6c\u63a5\u6536\u8fc7\u7a0b\u4e2d\u53d1\u9001reStart\u4fe1\u53f7,\u89e3\u51b3\u7c7b\u4f3cmlx90614\u5fc5\u987b\u5e26restart\u4fe1\u53f7\uff0c\u4f46\u662f\u53c8\u4e0d\u80fd\u7528i2c.send\u6765\u63a7\u5236\u7684\uff0c\u6bd4\u5982air105\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u53d1\u9001\u6570\u636e\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff \u5982\u679c\u4e0d\u7528zbuff\uff0c\u5219\u63a5\u6536\u6570\u636e\u5c06\u5728return\u8fd4\u56de\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u53d1\u9001\u662f\u5426\u6210\u529f\nstring or nil \u5982\u679c\u53c2\u65705\u662finterger\uff0c\u5219\u8fd4\u56de\u63a5\u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, rxbuff, 1)\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, nil, 0) --\u53ea\u53d1\u9001txbuff\u91cc\u7684\u6570\u636e\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662f\u5199\u5bc4\u5b58\u5668\u4e86\uff0c\u8fd9\u91cc\u5bc4\u5b58\u5668\u5730\u5740\u548c\u503c\u90fd\u653e\u5728\u4e86txbuff\u91cc\nlocal result, _ = i2c.transfer(0, 0x11, \"\\x01\\x02\\x03\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c0x03\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u662feeprom\uff0c\u5c31\u662f\u5f800x01\u7684\u5730\u5740\u519902\u548c03\uff0c\u6216\u8005\u5f800x0102\u7684\u5730\u5740\u519903\uff0c\u770b\u5177\u4f53\u82af\u7247\u4e86\nlocal result, rxdata = i2c.transfer(0, 0x11, \"\\x01\\x02\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662feeprom\nlocal result, rxdata = i2c.transfer(0, 0x11, 0x00, nil, 1) --\u53d1\u90010x00\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5404\u79cd\u4f20\u611f\u5668\n", "prefix": "i2c.transfer"}, "i2c.xfer": {"body": "i2c.xfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen},${6:transfer_done_topic},${7:timeout})", "description": "i2c.xfer(id, addr, txBuff, rxBuff, rxLen, transfer_done_topic, timeout) - i2c\u975e\u963b\u585e\u901a\u7528\u4f20\u8f93\uff0c\u7c7b\u4f3ctransfer\uff0c\u4f46\u662f\u4e0d\u4f1a\u7b49\u5230I2C\u4f20\u8f93\u5b8c\u6210\u624d\u8fd4\u56de\uff0c\u8c03\u7528\u672c\u51fd\u6570\u4f1a\u7acb\u523b\u8fd4\u56de\uff0cI2C\u4f20\u8f93\u5b8c\u6210\u540e\uff0c\u901a\u8fc7\u6d88\u606f\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\uff0c\u957f\u5ea6\u4e3azbuff.used\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u5ffd\u7565\u540e\u9762\u53c2\u6570\uff0c \u4e0d\u63a5\u6536\u6570\u636e\u3002\u63a5\u6536\u7684\u6570\u636e\u4f1a\u653e\u5728zbuff.addr\u5f00\u59cb\u7684\u4f4d\u7f6e\uff0c\u4f1a\u8986\u76d6\u6389\u4e4b\u524d\u7684\u6570\u636e\uff0c\u6ce8\u610fzhuff\u7684\u9884\u7559\u7a7a\u95f4\u8981\u8db3\u591f\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684\u6d88\u606f\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u586bnil\uff0c\u5219\u4e3a100ms\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = i2c.xfer(0, 0x11, txbuff, rxbuff, 1, \"I2CDONE\") if result then result, i2c_id, succ, error_code = sys.waitUntil(\"I2CDONE\") end if not result or not succ then log.info(\"i2c fail, error code\", error_code) else log.info(\"i2c ok\") end\n\n", "prefix": "i2c.xfer"}, "i2c.scan": {"body": "i2c.scan(${1:id},${2:speed})", "description": "i2c.scan(id,speed) - \u626b\u63cfi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u901f\u5ea6, \u53ef\u9009i2c.SLOW i2c.FAST i2c.PLUS i2c.HSMODE \u9ed8\u8ba4\u4e3ai2c.SLOW,\u5982\u63a2\u6d4b\u4e0d\u5230\u5219\u4fee\u6539\u6b64\u9879\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.07.04\u6dfb\u52a0\n-- \u8fd9\u4e2a\u51fd\u6570\u7684\u4e3b\u8981\u76ee\u6807\u662f\u4e3a\u4e86\u5728\u5f00\u53d1\u671f\u626b\u63cfi2c\u8bbe\u5907\n-- \u6709\u4e9bBSP\u5728\u6307\u5b9aaddr\u65e0\u54cd\u5e94\u65f6\u4f1a\u8f93\u51fa\u65e5\u5fd7,\u5bfc\u81f4\u8f93\u51fa\u4f1a\u88ab\u6253\u4e71\ni2c.scan()\n", "prefix": "i2c.scan"}, "i2s.setup": {"body": "i2s.setup(${1:id},${2:mode},${3:sample},${4:bitw},${5:channel},${6:format},${7:framebit})", "description": "i2s.setup(id, mode, sample, bitw, channel, format, framebit) - \u521d\u59cb\u5316i2s\n\u4f20\u5165\u503c\uff1a\nint i2s\u901a\u9053\u53f7,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387,\u9ed8\u8ba444100. \u53ef\u9009\nint \u6570\u636e\u4f4d\u6570,\u9ed8\u8ba416, \u53ef\u4ee5\u662f8\u7684\u500d\u6570\nint \u58f0\u9053, 0 \u5de6\u58f0\u9053, 1 \u53f3\u58f0\u9053, 2 \u7acb\u4f53\u58f0. \u53ef\u9009\nint \u683c\u5f0f, \u53ef\u9009MODE_I2S, MODE_LSB, MODE_MSB\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf, \u53ef\u900916\u548c32\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4ee5\u9ed8\u8ba4\u53c2\u6570\u521d\u59cb\u5316i2s\ni2s.setup(0)\n-- \u4ee5\u8be6\u7ec6\u53c2\u6570\u521d\u59cb\u5316i2s, \u793a\u4f8b\u4e3a\u9ed8\u8ba4\u503c\ni2s.setup(0, 0, 44100, 16, 0, 0, 16)\n", "prefix": "i2s.setup"}, "i2s.send": {"body": "i2s.send(${1:id},${2:data},${3:len})", "description": "i2s.send(id, data, len) - \u53d1\u9001i2s\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nstring \u6570\u636e, \u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216zbuff\nint \u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282, \u5b57\u7b26\u4e32\u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5168\u957f, zbuff\u9ed8\u8ba4\u4e3a\u6307\u9488\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u4f9b\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nlocal f = io.open(\"/luadb/abc.wav\")\nwhile 1 do\n local data = f:read(4096)\n if not data or #data == 0 then\n break\n end\n i2s.send(0, data)\n sys.wait(100)\nend\n", "prefix": "i2s.send"}, "i2s.recv": {"body": "i2s.recv(${1:id},${2:buffer},${3:len})", "description": "i2s.recv(id, buffer, len) - \u63a5\u6536i2s\u6570\u636e\uff0c\u6ce8\u610f\u5728\u6570\u636e\u5728\u56de\u8c03\u65f6\u5df2\u7ecf\u5b58\u653e\u5728zbuff\u91cc\uff0c\u76ee\u524d\u53ea\u6709air780e\u7cfb\u5217\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nzbuff \u6570\u636e\u7f13\u5b58\u533a\nint \u5355\u6b21\u8fd4\u56de\u7684\u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282,\u5fc5\u987b\u4e0e\u4f20\u5165\u7684zbuff\u7684\u5927\u5c0f\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlocal buffer = zbuff.create(3200)\nlocal succ = i2s.recv(0, buffer, 3200);\n", "prefix": "i2s.recv"}, "i2s.close": {"body": "i2s.close(${1:id})", "description": "i2s.close(id) - \u5173\u95edi2s\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.close(0)\n", "prefix": "i2s.close"}, "i2s.on": {"body": "i2s.on(${1:id},${2:func})", "description": "i2s.on(id, func) - \u6ce8\u518cI2S\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.on(0, function(id, buff)\n if buff then\n log.info(\"i2s get data in zbuff\")\n else\n log.info(\"i2s tx one block done\")\n end\nend)\n", "prefix": "i2s.on"}, "i2s.txStat": {"body": "i2s.txStat(${1:id})", "description": "i2s.txStat(id) - \u83b7\u53d6i2s\u7684\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u603b\u5927\u5c0f\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u5269\u4f59\u5f85\u53d1\u9001\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u53d1\u9001\u7f13\u51b2\u533a\u7684\u72b6\u6001, \u4ece\u800c\u5224\u65ad\u662f\u5426\u9700\u8981\u7ee7\u7eed\u4f20\u5165\u97f3\u9891\u6570\u636e\nlocal max, remain = i2s.txStat(0)\nlog.info(\"i2s\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\", max, remain)\n", "prefix": "i2s.txStat"}, "i2s.getPara": {"body": "i2s.getPara(${1:id})", "description": "i2s.getPara(id) - \u83b7\u53d6I2S\u53c2\u6570\uff0c\u53c2\u6570\u5177\u4f53\u53c2\u8003setup\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5728\u5de5\u4f5c\u72b6\u6001 true\u662f\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387\nint \u6570\u636e\u4f4d\u6570\nint \u58f0\u9053\nint \u683c\u5f0f\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf\n", "prefix": "i2s.getPara"}, "iconv.open": {"body": "iconv.open(${1:tocode},${2:fromcode})", "description": "iconv.open(tocode, fromcode) - \u6253\u5f00\u76f8\u5e94\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring tocode$\u76ee\u6807\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nstring fromcode$\u6e90\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nreturn table$cd$\u7f16\u7801\u8f6c\u6362\u51fd\u6570\u7684\u8f6c\u6362\u53e5\u67c4$ \n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\n", "prefix": "iconv.open"}, "iconv:iconv": {"body": "iconv:iconv(${1:inbuf})", "description": "iconv:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u91ca\u4e49\uff1a\u5f85\u8f6c\u6362\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nnumber \u91ca\u4e49\uff1a\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c
\u53d6\u503c\uff1a0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local iconv = iconv.open(\"utf8\", \"ucs2be\")\n return iconv:iconv(ucs2s)\nend\n", "prefix": "iconv:iconv"}, "cd:iconv": {"body": "cd:iconv(${1:inbuf})", "description": "cd:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring inbuf$\u8f93\u5165\u5b57\u7b26\u4e32$\u4f8b\u5982:ucs2s \nreturn number$result$\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c$0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local cd = iconv.open(\"utf8\", \"ucs2be\")\n return cd:iconv(ucs2s)\nend\n", "prefix": "cd:iconv"}, "iconv.close": {"body": "iconv.close(${1:cd})", "description": "iconv.close(cd) - \u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring cd$iconv.open\u8fd4\u56de\u7684\u53e5\u67c4$ \nreturn \n\u4f8b\u5b50\uff1a\n--\u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\niconv.close(cd)\n", "prefix": "iconv.close"}, "io.exists": {"body": "io.exists(${1:path})", "description": "io.exists(path) - \u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"io\", \"file exists\", io.exists(\"/boottime\"))\n", "prefix": "io.exists"}, "io.fileSize": {"body": "io.fileSize(${1:path})", "description": "io.fileSize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal fsize = io.fileSize(\"/bootime\")\nif fsize and fsize > 1024 then\n log.info(\"io\", \"file size\", fsize)\nend\n", "prefix": "io.fileSize"}, "io.readFile": {"body": "io.readFile(${1:path},${2:mode},${3:offset},${4:len})", "description": "io.readFile(path, mode, offset, len) - \u8bfb\u53d6\u6574\u4e2a\u6587\u4ef6,\u8bf7\u6ce8\u610f\u5185\u5b58\u6d88\u8017\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u8bfb\u53d6\u6a21\u5f0f, \u9ed8\u8ba4 \"rb\"\nint \u8d77\u59cb\u4f4d\u7f6e,\u9ed8\u8ba40\nint \u8bfb\u53d6\u957f\u5ea6,\u9ed8\u8ba4\u6574\u4e2a\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nstring \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal data = io.readFile(\"/bootime\")\n-- \u6ce8\u610f: offset\u548clen\u53c2\u6570\u662f 2023.6.6\u6dfb\u52a0\u7684\n-- \u8bfb\u53d6abc.txt, \u5148\u8df3\u8fc7128\u5b57\u8282, \u7136\u540e\u8bfb\u53d6512\u5b57\u8282\u6570\u636e\nlocal data = io.readFile(\"/abc.txt\", \"rb\", 128, 512)\n", "prefix": "io.readFile"}, "io.writeFile": {"body": "io.writeFile(${1:path},${2:data})", "description": "io.writeFile(path, data) - \u5c06\u6570\u636e\u5199\u5165\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nio.writeFile(\"/bootime\", \"1\")\n", "prefix": "io.writeFile"}, "io.fill": {"body": "io.fill(${1:buff},${2:offset},${3:len})", "description": "io.fill(buff, offset, len) - \u8bfb\u53d6\u6587\u4ef6\u5e76\u586b\u5145\u5230zbuff\u5185,\u4f46\u4e0d\u79fb\u52a8\u6307\u9488\u4f4d\u7f6e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f53\nint \u5199\u5165\u7684\u4f4d\u7f6e,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662fzbuff\u7684len\u51cf\u53bboffset\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u8fd4\u56de\u5b9e\u9645\u8bfb\u53d6\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u5c0f\u4e8e0\u4e5f\u8bf4\u660e\u662f\u8bfb\u53d6\u5931\u8d25\u4e86\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(1024)\nlocal f = io.open(\"/sd/test.txt\")\nif f then\n f:fill(buff)\nend\n", "prefix": "io.fill"}, "io.mkfs": {"body": "io.mkfs(${1:path})", "description": "io.mkfs(path) - \u683c\u5f0f\u5316\u6587\u4ef6\u7cfb\u7edf,\u9700\u6307\u5b9a\u6302\u8f7d\u70b9\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkfs(\"/sd\")\nlog.info(\"fs\", \"mkfs\", ret, errio)\n", "prefix": "io.mkfs"}, "io.mkdir": {"body": "io.mkdir(${1:path})", "description": "io.mkdir(path) - \u521b\u5efa\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5efa\u7acb\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkdir(\"/data/\")\nlog.info(\"fs\", \"mkdir\", ret, errio)\n", "prefix": "io.mkdir"}, "io.rmdir": {"body": "io.rmdir(${1:path})", "description": "io.rmdir(path) - \u5220\u9664\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u79fb\u9664\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.rmdir(\"/data/\")\nlog.info(\"fs\", \"rmdir\", ret, errio)\n", "prefix": "io.rmdir"}, "io.lsdir": {"body": "io.lsdir(${1:path},${2:len},${3:offset})", "description": "io.lsdir(path, len, offset) - \u5217\u51fa\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u679a\u4e3e\u7684\u76ee\u5f55\u8def\u5f84\nint \u6700\u5927\u957f\u5ea6, \u9ed8\u8ba410, \u6700\u9ad850\nint \u504f\u79fb\u91cf, \u9ed8\u8ba40, \u5f53\u76ee\u5f55\u6587\u4ef6\u5f88\u591a\u65f6\u5206\u9875\u67e5\u8be2\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, data = io.lsdir(\"/data/\", 10, 0)\nif ret then\n log.info(\"fs\", \"lsdir\", json.encode(data))\nelse\n log.info(\"fs\", \"lsdir\", \"fail\", ret, data)\nend\n", "prefix": "io.lsdir"}, "io.lsmount": {"body": "io.lsmount()", "description": "io.lsmount() - \u5217\u51fa\u6240\u6709\u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\ntable \u6302\u8f7d\u70b9\u5217\u8868\n\u4f8b\u5b50\uff1a\nlocal data = io.lsmount()\nlog.info(\"fs\", \"lsmount\", json.encode(data))\n", "prefix": "io.lsmount"}, "ioqueue.init": {"body": "ioqueue.init(${1:hwtimer_id},${2:cmd_cnt},${3:repeat_cnt})", "description": "ioqueue.init(hwtimer_id,cmd_cnt,repeat_cnt) - \u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\uff0c\u9ed8\u8ba4\u75280\uff0c\u6839\u636e\u5b9e\u9645MCU\u786e\u5b9a\uff0cair105\u4e3a0~5\uff0c\u4e0epwm\u5171\u7528\uff0c\u540c\u4e00\u4e2a\u901a\u9053\u53f7\u4e0d\u80fd\u540c\u65f6\u4e3apwm\u548cioqueue\nint \u4e00\u4e2a\u5b8c\u6574\u5468\u671f\u9700\u8981\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u6bd4\u5b9e\u9645\u7684\u591a\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f1\uff0c\u5982\u679c\u51990\u5219\u8868\u793a\u65e0\u9650\u6b21\u6570\u5faa\u73af\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.init(0,10,5) --\u4ee5timer0\u4e3a\u65f6\u949f\u6e90\u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\uff0c\u670910\u4e2a\u6709\u6548\u547d\u4ee4\uff0c\u5faa\u73af5\u6b21\n", "prefix": "ioqueue.init"}, "ioqueue.setdelay": {"body": "ioqueue.setdelay(${1:hwtimer_id},${2:time_us},${3:time_tick},${4:continue})", "description": "ioqueue.setdelay(hwtimer_id,time_us,time_tick,continue) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u5ef6\u65f6\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint \u5ef6\u65f6\u65f6\u95f4,0~65535us\nint \u5ef6\u65f6\u5fae\u8c03\u65f6\u95f4,0~255tick,\u603b\u7684\u5ef6\u65f6\u65f6\u95f4\u662ftime_us * 1us_tick + time_tick\nboolean \u662f\u5426\u8fde\u7eed\u662f\u8fde\u7eed\u5ef6\u65f6\uff0c\u9ed8\u8ba4\u5426\uff0c\u5982\u679c\u662f\uff0c\u5b9a\u65f6\u5668\u5728\u65f6\u95f4\u5230\u540e\u4e0d\u4f1a\u505c\u6b62\u800c\u662f\u91cd\u65b0\u8ba1\u65f6\uff0c\n", "prefix": "ioqueue.setdelay"}, "ioqueue.delay": {"body": "ioqueue.delay(${1:hwtimer_id})", "description": "ioqueue.delay(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u4e00\u6b21\u91cd\u590d\u5ef6\u65f6\uff0c\u5728\u524d\u9762\u5fc5\u987b\u6709setdelay\u4e14\u662f\u8fde\u7eed\u5ef6\u65f6\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setdelay(0,9,15,true) --\u5ef6\u65f69us+15\u4e2atick,\u5728\u4e4b\u540e\u9047\u5230delay\u547d\u4ee4\u65f6\uff0c\u4f1a\u5ef6\u65f69us+15\u4e2atick\nioqueue.delay(0)\n", "prefix": "ioqueue.delay"}, "ioqueue.setgpio": {"body": "ioqueue.setgpio(${1:hwtimer_id},${2:pin},${3:is_input},${4:pull_mode},${5:init_level})", "description": "ioqueue.setgpio(hwtimer_id,pin,is_input,pull_mode,init_level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6egpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nboolean \u662f\u5426\u662f\u8f93\u5165\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u521d\u59cb\u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setgpio(0,pin.PB01,true,gpio.PULLUP,0) --PB01\u8bbe\u7f6e\u6210\u4e0a\u62c9\u8f93\u5165\nioqueue.setgpio(0,pin.PB01,false,0,1)--PB01\u8bbe\u7f6e\u6210\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u8f93\u51fa\u9ad8\u7535\u5e73\n", "prefix": "ioqueue.setgpio"}, "ioqueue.input": {"body": "ioqueue.input(${1:hwtimer_id},${2:pin})", "description": "ioqueue.input(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bfb\u53d6gpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.input(0,pin.PB01)\n\n", "prefix": "ioqueue.input"}, "ioqueue.output": {"body": "ioqueue.output(${1:hwtimer_id},${2:pin},${3:level})", "description": "ioqueue.output(hwtimer_id,pin,level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8f93\u51faGPIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.output(0,pin.PB01,0)\n", "prefix": "ioqueue.output"}, "ioqueue.set_cap": {"body": "ioqueue.set_cap(${1:hwtimer_id},${2:pin},${3:pull_mode},${4:irq_mode},${5:max_tick})", "description": "ioqueue.set_cap(hwtimer_id,pin,pull_mode,irq_mode,max_tick) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6e\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nint \u5b9a\u65f6\u5668\u6700\u5927\u8ba1\u65f6\u65f6\u95f4 \u8003\u8651\u5230lua\u662fint\u7c7b\u578b\uff0c\u6700\u5c0f0x10000, \u6700\u5927\u503c\u4e3a0x7fffffff\uff0c\u9ed8\u8ba4\u4e3a\u6700\u5927\u503c\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setcap(0,pin.PB01,gpio.PULLUP,gpio.FALLING,48000000)\n", "prefix": "ioqueue.set_cap"}, "ioqueue.capture": {"body": "ioqueue.capture(${1:hwtimer_id})", "description": "ioqueue.capture(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u6355\u83b7\u4e00\u6b21IO\u72b6\u6001\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capture(0)\n", "prefix": "ioqueue.capture"}, "ioqueue.capend": {"body": "ioqueue.capend(${1:hwtimer_id},${2:pin})", "description": "ioqueue.capend(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u7ed3\u675f\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capend(0,pin.PB01)\n", "prefix": "ioqueue.capend"}, "ioqueue.get": {"body": "ioqueue.get(${1:hwtimer_id},${2:input_buff},${3:capture_buff})", "description": "ioqueue.get(hwtimer_id, input_buff, capture_buff) - * \u83b7\u53d6io\u64cd\u4f5c\u961f\u5217\u4e2d\u8f93\u5165\u548c\u6355\u83b7\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nzbuff \u5b58\u653eIO\u8f93\u5165\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level \u5f62\u5f0f\u5b58\u653e\u6570\u636e\nzbuff \u5b58\u653eIO\u6355\u83b7\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level + 4byte tick\u5f62\u5f0f\u5b58\u653e\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u8f93\u5165\u6570\u636e\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u6355\u83b7\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal input_cnt, capture_cnt = ioqueue.get(0, input_buff, capture_buff)\n", "prefix": "ioqueue.get"}, "ioqueue.start": {"body": "ioqueue.start(${1:hwtimer_id})", "description": "ioqueue.start(hwtimer_id) - \u542f\u52a8io\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.start(0)\n", "prefix": "ioqueue.start"}, "ioqueue.stop": {"body": "ioqueue.stop(${1:hwtimer_id})", "description": "ioqueue.stop(hwtimer_id) - \u505c\u6b62io\u64cd\u4f5c\u961f\u5217\uff0c\u53ef\u4ee5\u901a\u8fc7start\u4ece\u5934\u5f00\u59cb\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5df2\u7ecf\u5faa\u73af\u7684\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u8868\u793a\u4e00\u6b21\u5faa\u73af\u90fd\u6ca1\u6709\u5b8c\u6210\nint \u8fd4\u56de\u5355\u6b21\u5faa\u73af\u4e2d\u5df2\u7ecf\u6267\u884c\u7684cmd\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u53ef\u80fd\u662f\u4e00\u6b21\u5faa\u73af\u521a\u521a\u7ed3\u675f\n\u4f8b\u5b50\uff1a\nioqueue.stop(0)\n", "prefix": "ioqueue.stop"}, "ioqueue.release": {"body": "ioqueue.release(${1:hwtimer_id})", "description": "ioqueue.release(hwtimer_id) - \u91ca\u653eio\u64cd\u4f5c\u961f\u5217\u7684\u8d44\u6e90\uff0c\u4e0b\u6b21\u4f7f\u7528\u5fc5\u987b\u91cd\u65b0init\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.release"}, "ioqueue.clear": {"body": "ioqueue.clear(${1:hwtimer_id})", "description": "ioqueue.clear(hwtimer_id) - \u6e05\u7a7aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.clear"}, "ioqueue.done": {"body": "ioqueue.done(${1:hwtimer_id})", "description": "ioqueue.done(hwtimer_id) - \u68c0\u6d4bio\u64cd\u4f5c\u961f\u5217\u662f\u5426\u5df2\u7ecf\u6267\u884c\u5b8c\u6210\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u961f\u5217\u662f\u5426\u6267\u884c\u5b8c\u6210\uff0c\n\u4f8b\u5b50\uff1a\nlocal result = ioqueue.done(0)\n", "prefix": "ioqueue.done"}, "ioqueue.exti": {"body": "ioqueue.exti(${1:pin},${2:pull_mode},${3:irq_mode},${4:onoff})", "description": "ioqueue.exti(pin,pull_mode,irq_mode,onoff) - \u542f\u52a8/\u505c\u6b62\u4e00\u4e2a\u5e26\u7cfb\u7edftick\u8fd4\u56de\u7684\u5916\u90e8\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nboolean \u5f00\u5173\uff0c\u9ed8\u8ba4\u662ffalse\u5173\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.exti(pin.PB01, gpio.PULLUP, gpio.BOTH, true)\nioqueue.exti(pin.PB01)\n", "prefix": "ioqueue.exti"}, "iotauth.aliyun": {"body": "iotauth.aliyun(${1:product_key},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp) - \u963f\u91cc\u4e91\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring product_key\nstring device_name\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"hmacmd5\" \"hmacsha1\" \"hmacsha256\" \u53ef\u9009,\u9ed8\u8ba4\"hmacmd5\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nbool istls \u662f\u5426TLS\u76f4\u8fde true:TLS\u76f4\u8fde false:TCP\u76f4\u8fde\u6a21\u5f0f \u9ed8\u8ba4TCP\u76f4\u8fde\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.aliyun(\"123456789\",\"abcdefg\",\"Y877Bgo8X5owd3lcB5wWDjryNPoB\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.aliyun"}, "iotauth.onenet": {"body": "iotauth.onenet(${1:produt_id},${2:device_name},${3:key},${4:method},${5:cur_timestamp},${6:version})", "description": "iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version) - \u4e2d\u56fd\u79fb\u52a8\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring produt_id \u4ea7\u54c1id\nstring device_name \u8bbe\u5907\u540d\u79f0\nstring key \u8bbe\u5907\u5bc6\u94a5\u6216\u8005\u9879\u76ee\u7684acess_key\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"md5\" \"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"md5\"\nnumber \u65f6\u95f4\u6233, \u4e0d\u7528\u586b\nstring version \u53ef\u9009 \u9ed8\u8ba4\"2018-10-31\"\nstring \u5f53key\u662faccess_key\u65f6, \u586b \"products/\" .. product_id . \u672c\u53c2\u6570\u4e8e2024.1.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\n-- OneNet\u5e73\u53f0\u5b98\u7f51: https://open.iot.10086.cn/\n-- OneNet\u6709\u591a\u79cd\u7248\u672c, \u6ce8\u610f\u533a\u5206, \u4e00\u822c\u6765\u8bf4produt_id\u7eaf\u6570\u5b57\u5c31\u662f\u8001\u7248\u672c, \u5426\u5219\u5c31\u662f\u65b0\u7248\u672c\n\n-- \u65b0\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u82f1\u6587\u5b57\u6bcd\u5b57\u7b26\u4e32\n-- \u5bf9\u5e94demo/onenet/studio\nlocal produt_id = \"Ck2AF9QD2K\"\nlocal device_name = \"test\"\nlocal device_key = \"KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, device_key)\nlog.info(\"onenet.new\", client_id,user_name,password)\n\n-- \u65e7\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u6570\u5b57\u5b57\u7b26\u4e32. 2024.1.29\u65b0\u589e\n-- \u5bf9\u5e94demo/onenet/old_mqtt\nlocal produt_id = \"12342334\"\nlocal device_name = \"test\"\nlocal access_key = \"adfasdfadsfadsf=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, access_key, nil, nil, nil, \"products/\" .. produt_id)\nlog.info(\"onenet.old\", client_id,user_name,password)\n\n", "prefix": "iotauth.onenet"}, "iotauth.iotda": {"body": "iotauth.iotda(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.iotda(device_id,device_secret,cur_timestamp) - \u534e\u4e3a\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.iotda(\"6203cc94c7fb24029b110408_88888888\",\"123456789\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.iotda"}, "iotauth.qcloud": {"body": "iotauth.qcloud(${1:product_id},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp},${6:sdk_appid})", "description": "iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid) - \u817e\u8baf\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring \u4ea7\u54c1id,\u521b\u5efa\u9879\u76ee\u540e\u53ef\u4ee5\u67e5\u770b\u5230,\u7c7b\u4f3c\u4e8eLD8S5J1L07\nstring \u8bbe\u5907\u540d\u79f0,\u4f8b\u5982\u8bbe\u5907\u7684imei\u53f7\nstring \u8bbe\u5907\u5bc6\u94a5,\u521b\u5efa\u8bbe\u5907\u540e,\u67e5\u770b\u8bbe\u5907\u8be6\u60c5\u53ef\u5f97\u5230\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"sha256\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nstring sdk_appid \u53ef\u9009 \u9ed8\u8ba4\u4e3a\"12010126\"\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.qcloud(\"LD8S5J1L07\",\"test\",\"acyv3QDJrRa0fW5UE58KnQ==\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.qcloud"}, "iotauth.tuya": {"body": "iotauth.tuya(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.tuya(device_id,device_secret,cur_timestamp) - \u6d82\u9e26\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba47258089600(2200-01-01 0:0:0)\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.tuya(\"6c95875d0f5ba69607nzfl\",\"fb803786602df760\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.tuya"}, "iotauth.baidu": {"body": "iotauth.baidu(${1:iot_core_id},${2:device_key},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp) - \u767e\u5ea6\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring iot_core_id\nstring device_key\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"MD5\" \"SHA256\" \u53ef\u9009,\u9ed8\u8ba4\"MD5\"\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.baidu(\"abcd123\",\"mydevice\",\"ImSeCrEt0I1M2jkl\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.baidu"}, "ir.sendNEC": {"body": "ir.sendNEC(${1:pin},${2:addr},${3:cmd},${4:repeat},${5:disablePWM})", "description": "ir.sendNEC(pin, addr, cmd, repeat, disablePWM) - \u53d1\u9001NEC\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u4f7f\u7528\u7684GPIO\u5f15\u811a\u7f16\u53f7\nint \u7528\u6237\u7801\uff08\u5927\u4e8e0xff\u5219\u91c7\u7528Extended NEC\u6a21\u5f0f\uff09\nint \u6570\u636e\u7801\nint \u53ef\u9009\uff0c\u5f15\u5bfc\u7801\u53d1\u9001\u6b21\u6570\uff08110ms\u4e00\u6b21\uff09\uff0c\u9ed8\u8ba40\u6b21\nbool \u53ef\u9009\uff0c\u662f\u5426\u7981\u6b62\u76f4\u63a5\u53d1\u9001pwm\u6ce2\uff0c\u9ed8\u8ba4false\n\u4f8b\u5b50\uff1a\n--\u76f4\u63a5\u53d1\nir.sendNEC(0, 0x11, 0x22)\n--\u5916\u63a5\u4e8638K\u7684PWM\u8f7d\u6ce2\uff0c\u53ea\u63a7\u5236\u7535\u5e73\nir.sendNEC(0, 0x11, 0x22,0,true)\n", "prefix": "ir.sendNEC"}, "json.encode": {"body": "json.encode(${1:obj},${2:t})", "description": "json.encode(obj,t) - \u5c06\u5bf9\u8c61\u5e8f\u5217\u5316\u4e3ajson\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nobj \u9700\u8981\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\nstring \u6d6e\u70b9\u6570\u7cbe\u5ea6\u548c\u6a21\u5f0f,\u8fd9\u9879\u4e0d\u5b58\u5728\u7684\u65f6\u5019,\u4e3a\u9ed8\u8ba4\u503c\"7f\",\u6570\u5b57\u53ea\u652f\u6301\"0~14\",\u6a21\u5f0f\u53ea\u652f\u6301\"f/g\"\n\u8fd4\u56de\u503c\uff1a\nstring \u5e8f\u5217\u5316\u540e\u7684json\u5b57\u7b26\u4e32, \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nstring \u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.encode(obj)-->\u6d6e\u70b9\u6570\u7528%.7g\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\njson.encode(obj,\"12f\")-->\u6d6e\u70b9\u6570\u7528%.12f\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\n\n-- 2024.1.9 \u8d77, \u9ed8\u8ba4\u4f7f\u75287f\u683c\u5f0f\u5316\u6d6e\u70b9\u6570\n-- \u4e4b\u524d\u7684\u7248\u672c\u4f7f\u7528 7g\u683c\u5f0f\u5316\u6d6e\u52a8\u6570\n", "prefix": "json.encode"}, "json.decode": {"body": "json.decode(${1:str})", "description": "json.decode(str) - \u5c06\u5b57\u7b26\u4e32\u53cd\u5e8f\u5217\u5316\u4e3a\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u53cd\u5e8f\u5217\u5316\u7684json\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nobj \u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61(\u901a\u5e38\u662ftable), \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nresult \u6210\u529f\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\nerr \u53cd\u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.decode(\"[1,2,3,4,5,6]\")\n", "prefix": "json.decode"}, "keyboard.init": {"body": "keyboard.init(${1:port},${2:conf},${3:map},${4:debounce})", "description": "keyboard.init(port, conf, map, debounce) - \u521d\u59cb\u5316\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\nint \u542f\u7528\u7684keyboard\u7ba1\u811a\u63a9\u7801, \u4f8b\u5982\u4f7f\u7528keyboard0~9, \u5219\u63a9\u7801\u4e3a 0x1FF, \u82e5\u4f7f\u7528 0~3 \u5219 0xF\nint keyboard\u7ba1\u811a\u65b9\u5411\u6620\u5c04, \u5176\u4e2d\u8f93\u5165\u4e3a0,\u8f93\u51fa\u4e3a1, \u6309\u4f4d\u8bbe\u7f6e. \u4f8b\u5982 keyboard0~3\u4f5c\u4e3a\u8f93\u5165, keyboard4~7\u4e3a\u8f93\u5165, \u5219 0xF0\nint \u6d88\u6296\u914d\u7f6e,\u9884\u7559,\u53ef\u4ee5\u4e0d\u586b\n\u4f8b\u5b50\uff1a\n-- \u505a\u4e00\u4e2a 4*4 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~7, \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~7, \u5bf9\u5e94conf\u4e3a 0xFF\n-- \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa, \u5bf9\u5e94map \u4e3a 0xF0\nkeyboard.init(0, 0xFF, 0xF0)\n\n-- \u505a\u4e00\u4e2a 2*3 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~4, \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~4, \u4e8c\u8fdb\u5236\u4e3a 11111, \u5bf9\u5e94conf\u7684\u5341\u516d\u8fdb\u5236\u8868\u8fbe\u4e3a 0x1F\n-- \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa, \u4e8c\u8fdb\u5236\u4e3a 11100 \u5bf9\u5e94map \u4e3a 0x14\n-- keyboard.init(0, 0xFF, 0x14)\n\nsys.subscribe(\"KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "keyboard.init"}, "lcd.init": {"body": "lcd.init(${1:tp},${2:args},${3:spi_dev},${4:init_in_service})", "description": "lcd.init(tp, args, spi_dev, init_in_service) - lcd\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lcd\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1a
st7796
st7789
st7735
st7735v
st7735s
gc9a01
gc9106l
gc9306x
ili9486
custom\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_pwr\uff08\u80cc\u5149\uff09\u4e3a\u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1alcd\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1alcd\u590d\u4f4d\u5f15\u811a
pin_pwr\uff1alcd\u80cc\u5149\u5f15\u811a \u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
direction\uff1alcd\u5c4f\u5e55\u65b9\u5411 0:0\u00b0 1:180\u00b0 2:270\u00b0 3:90\u00b0
w\uff1alcd \u6c34\u5e73\u5206\u8fa8\u7387
h\uff1alcd \u7ad6\u76f4\u5206\u8fa8\u7387
xoffset\uff1ax\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
yoffset\uff1ay\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
direction0\uff1a0\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction90\uff1a90\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction180\uff1a180\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction270\uff1a270\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
sleepcmd\uff1a\u7761\u7720\u547d\u4ee4\uff0c\u9ed8\u8ba40X10
wakecmd\uff1a\u5524\u9192\u547d\u4ee4\uff0c\u9ed8\u8ba40X11
interface_mode lcd\u6a21\u5f0f\uff0c\u9ed8\u8ba4lcd.WIRE_4_BIT_8_INTERFACE_I\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\nboolean \u5141\u8bb8\u521d\u59cb\u5316\u5728lcd service\u91cc\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684st7735s \u6ce8\u610f:lcd\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)\nlog.info(\"lcd.init\",\nlcd.init(\"st7735s\",{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))\n", "prefix": "lcd.init"}, "lcd.close": {"body": "lcd.close()", "description": "lcd.close() - \u5173\u95edlcd\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\nlcd.close()\n", "prefix": "lcd.close"}, "lcd.on": {"body": "lcd.on()", "description": "lcd.on() - \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.on()\n", "prefix": "lcd.on"}, "lcd.off": {"body": "lcd.off()", "description": "lcd.off() - \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.off()\n", "prefix": "lcd.off"}, "lcd.sleep": {"body": "lcd.sleep()", "description": "lcd.sleep() - lcd\u7761\u7720\n\u4f8b\u5b50\uff1a\n-- lcd\u7761\u7720\nlcd.sleep()\n", "prefix": "lcd.sleep"}, "lcd.wakeup": {"body": "lcd.wakeup()", "description": "lcd.wakeup() - lcd\u5524\u9192\n\u4f8b\u5b50\uff1a\n-- lcd\u5524\u9192\nlcd.wakeup()\n", "prefix": "lcd.wakeup"}, "lcd.invon": {"body": "lcd.invon()", "description": "lcd.invon() - lcd\u53cd\u663e\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\nlcd.invon()\n", "prefix": "lcd.invon"}, "lcd.invoff": {"body": "lcd.invoff()", "description": "lcd.invoff() - lcd\u53cd\u663e\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\u5173\u95ed\nlcd.invoff()\n", "prefix": "lcd.invoff"}, "lcd.cmd": {"body": "lcd.cmd(${1:cmd})", "description": "lcd.cmd(cmd) - lcd\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint cmd\n\u4f8b\u5b50\uff1a\n-- lcd\u547d\u4ee4\nlcd.cmd(0x21)\n", "prefix": "lcd.cmd"}, "lcd.data": {"body": "lcd.data(${1:data})", "description": "lcd.data(data) - lcd\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint data\n\u4f8b\u5b50\uff1a\n-- lcd\u6570\u636e\nlcd.data(0x21)\n", "prefix": "lcd.data"}, "lcd.setColor": {"body": "lcd.setColor(${1:back},${2:fore})", "description": "lcd.setColor(back,fore) - lcd\u989c\u8272\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u80cc\u666f\u8272\nint \u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u8bbe\u7f6e\nlcd.setColor(0xFFFF,0x0000)\n", "prefix": "lcd.setColor"}, "lcd.draw": {"body": "lcd.draw(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.draw(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nstring \u5b57\u7b26\u4e32\u6216zbuff\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlocal buff = zbuff.create({201,1,16},0x001F)\nlcd.draw(20,30,220,30,buff)\n", "prefix": "lcd.draw"}, "lcd.clear": {"body": "lcd.clear(${1:color})", "description": "lcd.clear(color) - lcd\u6e05\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u6e05\u5c4f\nlcd.clear()\n", "prefix": "lcd.clear"}, "lcd.fill": {"body": "lcd.fill(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.fill(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e,\u4e0d\u542b\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e,\u4e0d\u542b\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlcd.fill(20,30,220,30,0x0000)\n", "prefix": "lcd.fill"}, "lcd.drawPoint": {"body": "lcd.drawPoint(${1:x0},${2:y0},${3:color})", "description": "lcd.drawPoint(x0,y0,color) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint \u70b9\u7684X\u4f4d\u7f6e.\nint \u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawPoint(20,30,0x001F)\n", "prefix": "lcd.drawPoint"}, "lcd.drawLine": {"body": "lcd.drawLine(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawLine(x0,y0,x1,y1,color) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawLine(20,30,220,30,0x001F)\n", "prefix": "lcd.drawLine"}, "lcd.drawRectangle": {"body": "lcd.drawRectangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawRectangle(x0,y0,x1,y1,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawRectangle(20,40,220,80,0x001F)\n", "prefix": "lcd.drawRectangle"}, "lcd.drawCircle": {"body": "lcd.drawCircle(${1:x0},${2:y0},${3:r},${4:color})", "description": "lcd.drawCircle(x0,y0,r,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5706\u5fc3\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u5706\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u7684X\u4f4d\u7f6e.\nint \u5706\u5fc3\u7684Y\u4f4d\u7f6e.\nint \u534a\u5f84.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawCircle(120,120,20,0x001F)\n", "prefix": "lcd.drawCircle"}, "lcd.drawQrcode": {"body": "lcd.drawQrcode(${1:x},${2:y},${3:str},${4:size})", "description": "lcd.drawQrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lcd.drawQrcode"}, "lcd.setFont": {"body": "lcd.setFont(${1:font},${2:indentation})", "description": "lcd.setFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nint font lcd.font_XXX \u8bf7\u67e5\u9605\u5e38\u91cf\u8868\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548,\u8c03\u7528lcd.drawStr\u524d\u4e00\u5b9a\u8981\u5148\u8bbe\u7f6e\n\n-- \u82e5\u63d0\u793a \"only font pointer is allow\" , \u5219\u4ee3\u8868\u5f53\u524d\u56fa\u4ef6\u4e0d\u542b\u5bf9\u5e94\u5b57\u4f53, \u53ef\u4f7f\u7528\u4e91\u7f16\u8bd1\u670d\u52a1\u514d\u8d39\u5b9a\u5236\n-- \u4e91\u7f16\u8bd1\u6587\u6863: https://wiki.luatos.com/develop/compile/Cloud_compilation.html\n\n-- lcd\u5e93\u7684\u9ed8\u8ba4\u5b57\u4f53\u5747\u4ee5 lcd.font_ \u5f00\u5934\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm12_chinese) -- \u5177\u4f53\u53d6\u503c\u53ef\u53c2\u8003api\u6587\u6863\u7684\u5e38\u91cf\u8868\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.setFont"}, "lcd.drawStr": {"body": "lcd.drawStr(${1:x},${2:y},${3:str},${4:fg_color})", "description": "lcd.drawStr(x,y,str,fg_color) - \u663e\u793a\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807 \u6ce8\u610f:\u6b64(x,y)\u4e3a\u5de6\u4e0b\u8d77\u59cb\u5750\u6807\nstring str \u6587\u4ef6\u5185\u5bb9\nint fg_color str\u989c\u8272 \u6ce8\u610f:\u6b64\u53c2\u6570\u53ef\u9009\uff0c\u5982\u4e0d\u586b\u5199\u5219\u4f7f\u7528\u4e4b\u524d\u8bbe\u7f6e\u7684\u989c\u8272\uff0c\u7ed8\u5236\u53ea\u4f1a\u7ed8\u5236\u5b57\u4f53\u90e8\u5206\uff0c\u80cc\u666f\u9700\u8981\u81ea\u5df1\u6e05\u9664\n\u4f8b\u5b50\uff1a\n-- \u663e\u793a\u4e4b\u524d\u5148\u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm16_chinese)\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.drawStr"}, "lcd.drawGtfontGb2312": {"body": "lcd.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontGb2312"}, "lcd.drawGtfontGb2312Gray": {"body": "lcd.drawGtfontGb2312Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontGb2312Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontGb2312Gray"}, "lcd.drawGtfontUtf8": {"body": "lcd.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontUtf8"}, "lcd.drawGtfontUtf8Gray": {"body": "lcd.drawGtfontUtf8Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontUtf8Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontUtf8Gray"}, "lcd.getSize": {"body": "lcd.getSize()", "description": "lcd.getSize() - \u83b7\u53d6\u5c4f\u5e55\u5c3a\u5bf8\n\u8fd4\u56de\u503c\uff1a\nint \u5bbd, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\nint \u9ad8, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"lcd\", \"size\", lcd.getSize())\n", "prefix": "lcd.getSize"}, "lcd.drawXbm": {"body": "lcd.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "lcd.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef \u9634\u7801 \u9010\u884c \u9006\u5411\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nlcd.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "lcd.drawXbm"}, "lcd.showImage": {"body": "lcd.showImage(${1:x},${2:y},${3:file})", "description": "lcd.showImage(x, y, file) - \u663e\u793a\u56fe\u7247,\u5f53\u524d\u53ea\u652f\u6301jpg,jpeg\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nstring \u6587\u4ef6\u8def\u5f84\n\u4f8b\u5b50\uff1a\nlcd.showImage(0,0,\"/luadb/logo.jpg\")\n", "prefix": "lcd.showImage"}, "lcd.flush": {"body": "lcd.flush()", "description": "lcd.flush() - \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u754c\u9762, \u4ec5\u8bbe\u7f6ebuff\u4e14\u7981\u7528\u81ea\u52a8\u5c5e\u6027\u540e\u4f7f\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil/false\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e0e lcd.setupBuff lcd.autoFlush \u914d\u5408\u4f7f\u7528\nlcd.flush()\n", "prefix": "lcd.flush"}, "lcd.setupBuff": {"body": "lcd.setupBuff(${1:conf},${2:onheap})", "description": "lcd.setupBuff(conf, onheap) - \u8bbe\u7f6e\u663e\u793a\u7f13\u51b2\u533a, \u6240\u9700\u5185\u5b58\u5927\u5c0f\u4e3a 2\u00d7\u5bbd\u00d7\u9ad8 \u5b57\u8282. \u8bf7\u8861\u91cf\u5185\u5b58\u9700\u6c42\u4e0e\u4e1a\u52a1\u6240\u9700\u7684\u5237\u65b0\u9891\u6b21.\n\u4f20\u5165\u503c\uff1a\nuserdata conf\u6307\u9488, \u4e0d\u9700\u8981\u4f20\nbool true\u4f7f\u7528heap\u5185\u5b58, false\u4f7f\u7528vm\u5185\u5b58, \u9ed8\u8ba4\u4f7f\u7528vm\u5185\u5b58, \u4e0d\u9700\u8981\u4e3b\u52a8\u4f20\n\u8fd4\u56de\u503c\uff1a\nbool \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcd\u7684buff\u7f13\u51b2\u533a, \u53ef\u7406\u89e3\u4e3aFrameBuffer\u533a\u57df.\nlcd.setupBuff()\n", "prefix": "lcd.setupBuff"}, "lcd.autoFlush": {"body": "lcd.autoFlush(${1:enable})", "description": "lcd.autoFlush(enable) - \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0, \u9700\u914d\u5408lcd.setupBuff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5237\u65b0,\u9ed8\u8ba4\u4e3atrue\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6ebuff \u5e76\u7981\u7528\u81ea\u52a8\u66f4\u65b0\nlcd.setupBuff()\nlcd.autoFlush(false)\n-- \u7981\u6b62\u81ea\u52a8\u66f4\u65b0\u540e, \u9700\u8981\u4f7f\u7528 lcd.flush() \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u5c4f\u5e55\n", "prefix": "lcd.autoFlush"}, "lcd.rgb565": {"body": "lcd.rgb565(${1:r},${2:g},${3:b},${4:swap})", "description": "lcd.rgb565(r, g, b, swap) - RGB565\u989c\u8272\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nint \u7ea2\u8272, 0x00 ~ 0xFF\nint \u7eff\u8272, 0x00 ~ 0xFF\nint \u84dd\u8272, 0x00 ~ 0xFF\nbool \u662f\u5426\u7ffb\u8f6c, true \u7ffb\u8f6c, false \u4e0d\u7ffb\u8f6c. \u9ed8\u8ba4\u7ffb\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u989c\u8272\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u652f\u6301\u591a\u79cd\u6a21\u5f0f, \u53c2\u6570\u6570\u91cf\u5206\u522b\u662f 1, 2, 3, 4\n-- 1. \u5355\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, swap = true, \u63a8\u8350\nlocal red = lcd.rgb565(0xFF0000)\nlocal green = lcd.rgb565(0x00FF00)\nlocal blue = lcd.rgb565(0x0000FF)\n\n-- 2. \u4e24\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF0000, true)\nlocal green = lcd.rgb565(0x00FF00, true)\nlocal blue = lcd.rgb565(0x0000FF, true)\n\n-- 3. \u4e09\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF)\n\n-- 4. \u56db\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00, true)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00, true)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF, true)\n", "prefix": "lcd.rgb565"}, "lcdseg.setup": {"body": "lcdseg.setup(${1:bias},${2:duty},${3:vlcd},${4:com_number},${5:fresh_rate},${6:com_mark},${7:seg_mark})", "description": "lcdseg.setup(bias, duty, vlcd, com_number, fresh_rate, com_mark, seg_mark) - \u521d\u59cb\u5316lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint bias\u503c,\u901a\u5e38\u4e3a 1/3 bias, \u5bf9\u5e94 lcdseg.BIAS_ONETHIRD\nint duty\u503c,\u901a\u5e38\u4e3a 1/4 duty, \u5bf9\u5e94 lcdseg.DUTY_ONEFOURTH\nint \u7535\u538b, \u5355\u4f4d100mV, \u4f8b\u59822.7v\u519927. air103\u652f\u6301\u7684\u503c\u6709 27/29/31/33\nint COM\u811a\u7684\u6570\u91cf, \u53d6\u51b3\u4e8e\u5177\u4f53\u6a21\u5757, air103\u652f\u63011-4\nint \u5237\u65b0\u7387,\u901a\u5e38\u4e3a60, \u5bf9\u5e9460HZ\nint COM\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFF,\u5168\u90e8\u542f\u7528.\u82e5\u53ea\u542f\u7528COM0/COM1, \u52190x03\nint seg\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFFFFFFFF,\u5373\u5168\u90e8\u542f\u7528. \u82e5\u53ea\u542f\u7528\u524d16\u4e2a, 0xFFFF\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcdseg\nif lcdseg.setup(lcdseg.BIAS_ONETHIRD, lcdseg.DUTY_ONEFOURTH, 33, 4, 60) then\n lcdseg.enable(1)\n\n lcdseg.seg_set(0, 1, 1)\n lcdseg.seg_set(2, 0, 1)\n lcdseg.seg_set(3, 31, 1)\nend\n", "prefix": "lcdseg.setup"}, "lcdseg.enable": {"body": "lcdseg.enable(${1:en})", "description": "lcdseg.enable(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.enable"}, "lcdseg.power": {"body": "lcdseg.power(${1:en})", "description": "lcdseg.power(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u7684\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.power"}, "lcdseg.seg_set": {"body": "lcdseg.seg_set(${1:com},${2:seg},${3:en})", "description": "lcdseg.seg_set(com, seg, en) - \u8bbe\u7f6e\u5177\u4f53\u4e00\u4e2a\u6bb5\u7801\u7684\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint COM\u53f7\nint seg\u53f7 \u8981\u66f4\u6539\u7684\u5b57\u6bb5\u7684\u4f4d\u7d22\u5f15\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.seg_set"}, "libcoap.new": {"body": "libcoap.new(${1:code},${2:uri},${3:headers},${4:payload})", "description": "libcoap.new(code, uri, headers, payload) - \u521b\u5efa\u4e00\u4e2acoap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nint coap\u7684code, \u4f8b\u5982libcoap.GET/libcoap.POST/libcoap.PUT/libcoap.DELETE\nstring \u76ee\u6807URI,\u5fc5\u987b\u586b\u5199, \u4e0d\u9700\u8981\u52a0\u4e0a/\u5f00\u5934\ntable \u8bf7\u6c42\u5934,\u7c7b\u4f3c\u4e8ehttp\u7684headers,\u53ef\u9009\nstring \u8bf7\u6c42\u4f53,\u7c7b\u4f3c\u4e8ehttp\u7684body,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u4e00\u4e2a\u8bf7\u6c42\u670d\u52a1\u5668time\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nlocal data = coapdata:rawdata()\n", "prefix": "libcoap.new"}, "libcoap.parse": {"body": "libcoap.parse(${1:str})", "description": "libcoap.parse(str) - \u89e3\u6790coap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring coap\u6570\u636e\u5305\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305,\u5982\u679c\u89e3\u6790\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode(), coapdata:data())\n", "prefix": "libcoap.parse"}, "coapdata:msgid": {"body": "coapdata:msgid()", "description": "coapdata:msgid() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684msgid\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684msgid\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:msgid())\n", "prefix": "coapdata:msgid"}, "coapdata:token": {"body": "coapdata:token()", "description": "coapdata:token() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684token\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684token\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:token())\n", "prefix": "coapdata:token"}, "coapdata:rawdata": {"body": "coapdata:rawdata()", "description": "coapdata:rawdata() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e,\u7528\u4e8e\u53d1\u9001\u5230\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nnetc:send(coapdata:rawdata())\n", "prefix": "coapdata:rawdata"}, "coapdata:code": {"body": "coapdata:code()", "description": "coapdata:code() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684code\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684code\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:code())\n", "prefix": "coapdata:code"}, "coapdata:hcode": {"body": "coapdata:hcode()", "description": "coapdata:hcode() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684http code, \u6bd4coap\u539f\u59cb\u7684code\u8981\u53cb\u597d\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684http code,\u4f8b\u5982200,205,404\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode())\n", "prefix": "coapdata:hcode"}, "coapdata:type": {"body": "coapdata:type(${1:t})", "description": "coapdata:type(t) - \u83b7\u53d6coap\u6570\u636e\u5305\u7684type, \u4f8b\u5982libcoap.CON/NON/ACK/RST\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7684type\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684type\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:type())\n", "prefix": "coapdata:type"}, "coapdata:data": {"body": "coapdata:data()", "description": "coapdata:data() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684data\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684data\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:data())\n", "prefix": "coapdata:data"}, "libgnss.parse": {"body": "libgnss.parse(${1:str})", "description": "libgnss.parse(str) - \u5904\u7406nmea\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u539f\u59cbnmea\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\u6570\u636e\nlibgnss.parse(indata)\nlog.info(\"nmea\", json.encode(libgnss.getRmc(), \"11g\"))\n", "prefix": "libgnss.parse"}, "libgnss.isFix": {"body": "libgnss.isFix()", "description": "libgnss.isFix() - \u5f53\u524d\u662f\u5426\u5df2\u7ecf\u5b9a\u4f4d\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5b9a\u4f4d\u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"isFix\", libgnss.isFix())\n", "prefix": "libgnss.isFix"}, "libgnss.getIntLocation": {"body": "libgnss.getIntLocation(${1:speed_type})", "description": "libgnss.getIntLocation(speed_type) - \u83b7\u53d6\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u901f\u5ea6\u5355\u4f4d,\u9ed8\u8ba4\u662fm/h\n\u8fd4\u56de\u503c\uff1a\nint lat\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint lng\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint speed\u6570\u636e, \u5355\u4f4d\u7c73. \u4e8e2023.9.26\u4fee\u6b63\n\u4f8b\u5b50\uff1a\n-- \u5efa\u8bae\u7528libgnss.getRmc(1)\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n\n-- 2023.12.11 \u65b0\u589espeed_type\u53c2\u6570\n--[[\n\u901f\u5ea6\u5355\u4f4d\u53ef\u9009\u503c\n0 - m/h \u7c73/\u5c0f\u65f6, \u9ed8\u8ba4\u503c, \u6574\u578b\n1 - m/s \u7c73/\u79d2, \u6d6e\u70b9\u6570\n2 - km/h \u5343\u7c73/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n3 - kn/h \u82f1\u91cc/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n]]\n-- \u9ed8\u8ba4 \u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n-- \u7c73/\u79d2\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(1))\n-- \u5343\u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(2))\n-- \u82f1\u91cc/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(3))\n", "prefix": "libgnss.getIntLocation"}, "libgnss.getRmc": {"body": "libgnss.getRmc(${1:data_mode})", "description": "libgnss.getRmc(data_mode) - \u83b7\u53d6\u539f\u59cbRMC\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cbRMC\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbrmc\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"rmc\", json.encode(libgnss.getRmc(2)))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"course\":0,\n \"valid\":true, // true\u5b9a\u4f4d\u6210\u529f,false\u5b9a\u4f4d\u4e22\u5931\n \"lat\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"lng\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"variation\":0, // \u5730\u9762\u822a\u5411\uff0c\u5355\u4f4d\u4e3a\u5ea6\uff0c\u4ece\u5317\u5411\u8d77\u987a\u65f6\u9488\u8ba1\u7b97\n \"speed\":0 // \u5730\u9762\u901f\u5ea6, \u5355\u4f4d\u4e3a\"\u8282\"\n \"year\":2023, // \u5e74\u4efd\n \"month\":1, // \u6708\u4efd, 1-12\n \"day\":5, // \u6708\u4efd\u5929, 1-31\n \"hour\":7, // \u5c0f\u65f6,0-23\n \"min\":23, // \u5206\u949f,0-59\n \"sec\":20, // \u79d2,0-59\n}\n]]\n", "prefix": "libgnss.getRmc"}, "libgnss.getGsv": {"body": "libgnss.getGsv()", "description": "libgnss.getGsv() - \u83b7\u53d6\u539f\u59cbGSV\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSV\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"gsv\", json.encode(libgnss.getGsv()))\n--[[\u5b9e\u4f8b\u8f93\u51fa\n{\n \"total_sats\":24, // \u603b\u53ef\u89c1\u536b\u661f\u6570\u91cf\n \"sats\":[\n {\n \"snr\":27, // \u4fe1\u566a\u6bd4\n \"azimuth\":278, // \u65b9\u5411\u89d2\n \"elevation\":59, // \u4ef0\u89d2\n \"tp\":0, // 0 - GPS, 1 - BD\n \"nr\":4 // \u536b\u661f\u7f16\u53f7\n },\n // \u8fd9\u91cc\u5ffd\u7565\u4e8622\u4e2a\u536b\u661f\u7684\u4fe1\u606f\n {\n \"snr\":0,\n \"azimuth\":107,\n \"elevation\":19,\n \"tp\":1,\n \"nr\":31\n }\n ]\n}\n]]\n", "prefix": "libgnss.getGsv"}, "libgnss.getGsa": {"body": "libgnss.getGsa(${1:data_mode})", "description": "libgnss.getGsa(data_mode) - \u83b7\u53d6\u539f\u59cbGSA\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\nlog.info(\"nmea\", \"gsa\", json.encode(libgnss.getGsa(), \"11g\"))\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f0, \u4e5f\u5c31\u662f\u9ed8\u8ba4\u6a21\u5f0f)\n--[[\n{\n \"sats\":[ // \u6b63\u5728\u4f7f\u7528\u7684\u536b\u661f\u7f16\u53f7\n 9,\n 6,\n 16,\n 16,\n 26,\n 21,\n 27,\n 27,\n 4,\n 36,\n 3,\n 7,\n 8,\n 194\n ],\n \"vdop\":0.03083333, // \u5782\u76f4\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"pdop\":0.0455, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"fix_type\":3, // \u5b9a\u4f4d\u6a21\u5f0f, 1-\u672a\u5b9a\u4f4d, 2-2D\u5b9a\u4f4d, 3-3D\u5b9a\u4f4d\n \"hdop\":0.0335 // \u4f4d\u7f6e\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n}\n]]\n\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f1), 2024.5.26\u65b0\u589e\n[\n {\"pdop\":7.8299999,\"sats\":[13,15,18,23],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3},\n {\"pdop\":7.8299999,\"sats\":[20,35,8,13],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3}\n]\n", "prefix": "libgnss.getGsa"}, "libgnss.getVtg": {"body": "libgnss.getVtg(${1:data_mode})", "description": "libgnss.getVtg(data_mode) - \u83b7\u53d6VTA\u901f\u5ea6\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009, 3-\u539f\u59cb\u5b57\u7b26\u4e32, \u4e0d\u4f20\u6216\u8005\u4f20\u5176\u4ed6\u503c, \u5219\u8fd4\u56de\u6d6e\u70b9\u503c\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbVTA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"vtg\", json.encode(libgnss.getVtg()))\n-- \u793a\u4f8b\n--[[\n{\n \"speed_knots\":0, // \u901f\u5ea6, \u82f1\u91cc/\u5c0f\u65f6\n \"true_track_degrees\":0, // \u771f\u5317\u65b9\u5411\u89d2\n \"magnetic_track_degrees\":0, // \u78c1\u5317\u65b9\u5411\u89d2\n \"speed_kph\":0 // \u901f\u5ea6, \u5343\u7c73/\u5c0f\u65f6\n}\n-- \u63d0\u9192: Air780EG\u548cAir510U,\u5728\u901f\u5ea6<5km/h\u65f6, \u4e0d\u4f1a\u8fd4\u56de\u65b9\u5411\u89d2\n]]\n", "prefix": "libgnss.getVtg"}, "libgnss.getZda": {"body": "libgnss.getZda()", "description": "libgnss.getZda() - \u83b7\u53d6\u539f\u59cbZDA\u65f6\u95f4\u548c\u65e5\u671f\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbzda\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"zda\", json.encode(libgnss.getZda()))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"minute_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5206\u949f, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"hour_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5c0f\u65f6, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"year\":2023 // UTC \u5e74\uff0c\u56db\u4f4d\u6570\u5b57\n \"month\":1, // UTC \u6708\uff0c\u4e24\u4f4d\uff0c01 ~ 12\n \"day\":5, // UTC \u65e5\uff0c\u4e24\u4f4d\u6570\u5b57\uff0c01 ~ 31\n \"hour\":7, // \u5c0f\u65f6\n \"min\":50, // \u5206\n \"sec\":14, // \u79d2\n}\n]]\n", "prefix": "libgnss.getZda"}, "libgnss.debug": {"body": "libgnss.debug(${1:mode})", "description": "libgnss.debug(mode) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool true\u5f00\u542f\u8c03\u8bd5,false\u5173\u95ed\u8c03\u8bd5,\u9ed8\u8ba4\u4e3afalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u8c03\u8bd5, \u4f1a\u8f93\u51faGNSS\u539f\u59cb\u6570\u636e\u5230\u65e5\u5fd7\u4e2d\nlibgnss.debug(true)\n-- \u5173\u95ed\u8c03\u8bd5\nlibgnss.debug(false)\n", "prefix": "libgnss.debug"}, "libgnss.getGga": {"body": "libgnss.getGga(${1:data_mode})", "description": "libgnss.getGga(data_mode) - \u83b7\u53d6GGA\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cb\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable GGA\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gga = libgnss.getGga(2)\nif gga then\n log.info(\"GGA\", json.encode(gga, \"11g\"))\nend\n--\u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"dgps_age\":0, // \u5dee\u5206\u6821\u6b63\u65f6\u5ef6\uff0c\u5355\u4f4d\u4e3a\u79d2\n \"fix_quality\":1, // \u5b9a\u4f4d\u72b6\u6001\u6807\u8bc6 0 - \u65e0\u6548,1 - \u5355\u70b9\u5b9a\u4f4d,2 - \u5dee\u5206\u5b9a\u4f4d\n \"satellites_tracked\":14, // \u53c2\u4e0e\u5b9a\u4f4d\u7684\u536b\u661f\u6570\u91cf\n \"altitude\":0.255, // \u6d77\u5e73\u9762\u5206\u79bb\u5ea6, \u6216\u8005\u6210\u4e3a\u6d77\u62d4, \u5355\u4f4d\u662f\u7c73,\n \"hdop\":0.0335, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"height\":0 // \u692d\u7403\u9ad8\uff0c\u56fa\u5b9a\u8f93\u51fa 1 \u4f4d\u5c0f\u6570\n}\n]]\n", "prefix": "libgnss.getGga"}, "libgnss.getGll": {"body": "libgnss.getGll(${1:data_mode})", "description": "libgnss.getGll(data_mode) - \u83b7\u53d6GLL\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable GLL\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gll = libgnss.getGll(2)\nif gll then\n log.info(\"GLL\", json.encode(gll, \"11g\"))\nend\n-- \u5b9e\u4f8b\u6570\u636e\n--[[\n{\n \"status\":\"A\", // \u5b9a\u4f4d\u72b6\u6001, A\u6709\u6548, B\u65e0\u6548\n \"mode\":\"A\", // \u5b9a\u4f4d\u6a21\u5f0f, V\u65e0\u6548, A\u5355\u70b9\u89e3, D\u5dee\u5206\u89e3\n \"sec\":20, // \u79d2, UTC\u65f6\u95f4\u4e3a\u51c6\n \"min\":23, // \u5206\u949f, UTC\u65f6\u95f4\u4e3a\u51c6\n \"hour\":7, // \u5c0f\u65f6, UTC\u65f6\u95f4\u4e3a\u51c6\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"us\":0 // \u5fae\u5999\u6570, \u901a\u5e38\u4e3a0\n}\n]]\n", "prefix": "libgnss.getGll"}, "libgnss.clear": {"body": "libgnss.clear()", "description": "libgnss.clear() - \u6e05\u9664\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8be5\u64cd\u4f5c\u4f1a\u6e05\u9664\u6240\u6709\u5b9a\u4f4d\u6570\u636e\n", "prefix": "libgnss.clear"}, "libgnss.bind": {"body": "libgnss.bind(${1:id},${2:next_id})", "description": "libgnss.bind(id, next_id) - \u7ed1\u5b9auart\u7aef\u53e3\u8fdb\u884cGNSS\u6570\u636e\u8bfb\u53d6\n\u4f20\u5165\u503c\uff1a\nint uart\u7aef\u53e3\u53f7\nint \u8f6c\u53d1\u5230uart\u7684id, \u4f8b\u5982\u865a\u62dfuart.VUART_0\n\u4f8b\u5b50\uff1a\n-- \u914d\u7f6e\u4e32\u53e3\u4fe1\u606f, \u901a\u5e38\u4e3a 115200 8N1\nuart.setup(2, 115200)\n-- \u7ed1\u5b9auart, \u9a6c\u4e0a\u5f00\u59cb\u89e3\u6790GNSS\u6570\u636e\nlibgnss.bind(2)\n-- \u65e0\u9700\u518d\u8c03\u7528uart.on\u7136\u540e\u8c03\u7528libgnss.parse\n-- \u5f00\u53d1\u671f\u53ef\u6253\u5f00\u8c03\u8bd5\u65e5\u5fd7\nlibgnss.debug(true)\n\n-- 2023-01-02\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u6709\u6548\n-- \u4eceuart2\u8bfb\u53d6\u5e76\u89e3\u6790, \u540c\u65f6\u8f6c\u53d1\u5230\u865a\u62df\u4e32\u53e30\nlibgnss.bind(2, uart.VUART_0)\n", "prefix": "libgnss.bind"}, "libgnss.locStr": {"body": "libgnss.locStr(${1:mode})", "description": "libgnss.locStr(mode) - \u83b7\u53d6\u4f4d\u7f6e\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6a21\u5f0f. 0- Air780EG\u6240\u9700\u7684\u683c\u5f0f\nreturn \u6307\u5b9a\u6a21\u5f0f\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u63a8\u8350\u5728\u5b9a\u4f4d\u6210\u529f\u540e\u8c03\u7528\n", "prefix": "libgnss.locStr"}, "libgnss.rtcAuto": {"body": "libgnss.rtcAuto(${1:enable})", "description": "libgnss.rtcAuto(enable) - \u5b9a\u4f4d\u6210\u529f\u540e\u81ea\u52a8\u8bbe\u7f6eRTC\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f\u4e0e\u5426, \u9ed8\u8ba4\u662ffalse\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u81ea\u52a8\u8bbe\u7f6eRTC\nlibgnss.rtcAuto(true)\n", "prefix": "libgnss.rtcAuto"}, "libgnss.on": {"body": "libgnss.on(${1:tp},${2:fn})", "description": "libgnss.on(tp, fn) - \u5e95\u5c42\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u7c7b\u578b,\u5f53\u524d\u652f\u6301\"raw\"\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5, \u7528\u4e8e\u83b7\u53d6\u5e95\u5c42\u5b9e\u9645\u6536\u5230\u7684\u6570\u636e\nlibgnss.on(\"raw\", function(data)\n log.info(\"GNSS\", data)\nend)\n", "prefix": "libgnss.on"}, "libgnss.getTxt": {"body": "libgnss.getTxt()", "description": "libgnss.getTxt() - \u83b7\u53d6\u975e\u6807\u7684GPTXT\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nreturn GPTXT\u6240\u643a\u5e26\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.6.6 \u6dfb\u52a0\nlog.info(\"gnss\", \"txt\", libgnss.getTxt())\n\n-- \u6d4b\u8bd5\u8bed\u53e5\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA SHORT*63\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OPEN*25\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OK*35\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\n", "prefix": "libgnss.getTxt"}, "libgnss.casic_aid": {"body": "libgnss.casic_aid(${1:dt},${2:loc})", "description": "libgnss.casic_aid(dt, loc) - \u5408\u6210Air530Z\u6240\u9700\u8981\u7684\u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f20\u5165\u503c\uff1a\ntable \u65f6\u95f4\u4fe1\u606f\ntable \u7ecf\u7eac\u5ea6\u53ca\u6d77\u62d4\n\u8fd4\u56de\u503c\uff1a\nstring \u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u9002\u5408CASIC\u7cfb\u5217GNSS\u6a21\u5757\u7684\u8f85\u52a9\u5b9a\u4f4d\u4fe1\u606f\u7684\u5408\u6210\n-- \u672c\u51fd\u6570 2023.11.14 \u65b0\u589e\n\n-- \u9996\u5148\u662f\u65f6\u95f4\u4fe1\u606f,\u6ce8\u610f\u662fUTC\u65f6\u95f4\n-- \u65f6\u95f4\u6765\u6e90\u5f88\u591a, \u4e00\u822c\u5efa\u8baesocket.sntp()\u65f6\u95f4\u540c\u6b65\u540e\u7684\u7cfb\u7edf\u65f6\u95f4\nlocal dt = os.date(\"!*t\")\n\n-- \u7136\u540e\u662f\u8f85\u52a9\u5b9a\u4f4d\u5750\u6807\n-- \u6765\u6e90\u6709\u5f88\u591a\u65b9\u5f0f:\n-- 1. \u4ece\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\u5f97\u5230, \u4f8b\u5982\u4e4b\u524d\u5b9a\u4f4d\u6210\u529f\u540e\u4fdd\u5b58\u5230\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e86\n-- 2. \u901a\u8fc7\u57fa\u7ad9\u5b9a\u4f4d\u6216\u8005wifi\u5b9a\u4f4d\u83b7\u53d6\u5230\n-- 3. \u901a\u8fc7IP\u5b9a\u4f4d\u83b7\u53d6\u5230\u5927\u6982\u5750\u6807\n-- \u5750\u6807\u7cfb\u662fWGS84, \u4f46\u9274\u4e8e\u662f\u8f85\u52a9\u5b9a\u4f4d,\u7cbe\u5ea6\u4e0d\u662f\u5173\u952e\u56e0\u7d20\nlocal lla = {\n lat = 23.12,\n lng = 114.12\n}\n\nlocal aid = libgnss.casic_aid(dt, lla)\n", "prefix": "libgnss.casic_aid"}, "lf.init": {"body": "lf.init(${1:spi_device})", "description": "lf.init(spi_device) - \u521d\u59cb\u5316 little_flash\n\u4f20\u5165\u503c\uff1a\nint userdata spi_device\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--spi_device\nspi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"lf.init\",lf.init(spi_device))\n", "prefix": "lf.init"}, "lf.mount": {"body": "lf.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "lf.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7d little_flash lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 lf.init()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"lf.mount\",lf.mount(little_flash_device,\"/little_flash\"))\n", "prefix": "lf.mount"}, "log.setLevel": {"body": "log.setLevel(${1:level})", "description": "log.setLevel(level) - \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\n\u4f20\u5165\u503c\uff1a\nstring level \u65e5\u5fd7\u7ea7\u522b,\u53ef\u7528\u5b57\u7b26\u4e32\u6216\u6570\u503c, \u5b57\u7b26\u4e32\u4e3a(SILENT,DEBUG,INFO,WARN,ERROR,FATAL), \u6570\u503c\u4e3a(0,1,2,3,4,5)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\u4e3aINFO\nlog.setLevel(\"INFO\")\n", "prefix": "log.setLevel"}, "log.style": {"body": "log.style(${1:val})", "description": "log.style(val) - \u8bbe\u7f6e\u65e5\u5fd7\u98ce\u683c\n\u4f20\u5165\u503c\uff1a\nint \u65e5\u5fd7\u98ce\u683c,\u9ed8\u8ba4\u4e3a0, \u4e0d\u4f20\u5c31\u662f\u83b7\u53d6\u5f53\u524d\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7684\u65e5\u5fd7\u98ce\u683c\n\u4f8b\u5b50\uff1a\n-- \u4ee5 log.info(\"ABC\", \"DEF\", 123) \u4e3a\u4f8b, \u5047\u8bbe\u8be5\u4ee3\u7801\u4f4d\u4e8emain.lua\u768412\u884c\n-- \u9ed8\u8ba4\u65e5\u5fd70\n-- I/user.ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c1, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f\n-- I/main.lua:12 ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c2, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f, \u4f4d\u7f6e\u6709\u6240\u533a\u522b\n-- I/user.ABC main.lua:12 DEF 123\n\nlog.style(0) -- \u9ed8\u8ba4\u98ce\u683c0\nlog.style(1) -- \u8c03\u8bd5\u98ce\u683c1\nlog.style(2) -- \u8c03\u8bd5\u98ce\u683c2\n", "prefix": "log.style"}, "log.getLevel": {"body": "log.getLevel()", "description": "log.getLevel() - \u83b7\u53d6\u65e5\u5fd7\u7ea7\u522b\n\u8fd4\u56de\u503c\uff1a\nint \u65e5\u5fd7\u7ea7\u522b\u5bf9\u5e940,1,2,3,4,5\n\u4f8b\u5b50\uff1a\n-- \u5f97\u5230\u65e5\u5fd7\u7ea7\u522b\nlog.getLevel()\n", "prefix": "log.getLevel"}, "log.debug": {"body": "log.debug(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.debug(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bdebug\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa D/onenet connect ok\nlog.debug(\"onenet\", \"connect ok\")\n", "prefix": "log.debug"}, "log.info": {"body": "log.info(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.info(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522binfo\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa I/onenet connect ok\nlog.info(\"onenet\", \"connect ok\")\n", "prefix": "log.info"}, "log.warn": {"body": "log.warn(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.warn(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bwarn\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa W/onenet connect ok\nlog.warn(\"onenet\", \"connect ok\")\n", "prefix": "log.warn"}, "log.error": {"body": "log.error(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.error(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522berror\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa E/onenet connect ok\nlog.error(\"onenet\", \"connect ok\")\n", "prefix": "log.error"}, "lora.init": {"body": "lora.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.init(\"llcc68\",\n {\n id = 0, -- SPI id\n cs = pin.PB04, -- SPI \u7247\u9009\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n res = pin.PB00, -- \u590d\u4f4d\u811a\u8fde\u63a5\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n busy = pin.PB01, -- \u5fd9\u68c0\u6d4b\u811a\u7684GPIO\u53f7\n dio1 = pin.PB06, -- \u6570\u636e\u8f93\u5165\u4e2d\u65ad\u811a\n lora_init = true -- \u662f\u5426\u53d1\u9001\u521d\u59cb\u5316\u547d\u4ee4. \u5982\u679c\u662f\u5524\u9192\u540e\u76f4\u63a5\u8bfb\u53d6, \u5c31\u4f20false\n }\n)\n", "prefix": "lora.init"}, "lora.set_channel": {"body": "lora.set_channel(${1:freq})", "description": "lora.set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora.set_channel(433000000)\n", "prefix": "lora.set_channel"}, "lora.set_txconfig": {"body": "lora.set_txconfig(${1:ic},${2:txconfig})", "description": "lora.set_txconfig(ic, txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_txconfig(\"llcc68\",\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora.set_txconfig"}, "lora.set_rxconfig": {"body": "lora.set_rxconfig(${1:ic},${2:set_rxconfig})", "description": "lora.set_rxconfig(ic, set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_rxconfig(\"llcc68\",\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora.set_rxconfig"}, "lora.send": {"body": "lora.send(${1:data})", "description": "lora.send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora.send(\"PING\")\n", "prefix": "lora.send"}, "lora.recv": {"body": "lora.recv(${1:timeout})", "description": "lora.recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora.send(\"PING\")\nend)\n-- \u8001\u7248\u672c\u6ca1\u6709recv, \u53ef\u4ee5\u6539\u6210 lora.recive\nlora.recv(1000)\n", "prefix": "lora.recv"}, "lora.mode": {"body": "lora.mode(${1:mode})", "description": "lora.mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora.mode(lora.STANDBY)\n", "prefix": "lora.mode"}, "lora2.init": {"body": "lora2.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora2.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56delora\u5bf9\u8c61,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nspi_lora = spi.deviceSetup(spi_id,pin_cs,0,0,8,10*1000*1000,spi.MSB,1,0)\nlora_device = lora2.init(\"llcc68\",{res = pin_reset,busy = pin_busy,dio1 = pin_dio1},spi_lora)\n", "prefix": "lora2.init"}, "lora_device:set_channel": {"body": "lora_device:set_channel(${1:freq})", "description": "lora_device:set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora_device:set_channel(433000000)\n", "prefix": "lora_device:set_channel"}, "lora_device:set_txconfig": {"body": "lora_device:set_txconfig(${1:txconfig})", "description": "lora_device:set_txconfig(txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_txconfig(\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora_device:set_txconfig"}, "lora_device:set_rxconfig": {"body": "lora_device:set_rxconfig(${1:set_rxconfig})", "description": "lora_device:set_rxconfig(set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_rxconfig(\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora_device:set_rxconfig"}, "lora_device:send": {"body": "lora_device:send(${1:data})", "description": "lora_device:send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora_device:send(\"PING\")\n", "prefix": "lora_device:send"}, "lora_device:recv": {"body": "lora_device:recv(${1:timeout})", "description": "lora_device:recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora_device:send(\"PING\")\nend)\nlora_device:recv(1000)\n", "prefix": "lora_device:recv"}, "lora_device:mode": {"body": "lora_device:mode(${1:mode})", "description": "lora_device:mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora_device:mode(lora.STANDBY)\n", "prefix": "lora_device:mode"}, "lora_device:on": {"body": "lora_device:on(${1:cb})", "description": "lora_device:on(cb) - \u6ce8\u518clora\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb lora\u56de\u8c03,\u53c2\u6570\u5305\u62eclora_device, event, data, size\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlora_device:on(function(lora_device, event, data, size)\n log.info(\"lora\", \"event\", event, lora_device, data, size)\n if event == \"tx_done\" then\n lora_device:recv(1000)\n elseif event == \"rx_done\" then\n lora_device:send(\"PING\")\n elseif event == \"tx_timeout\" then\n\n elseif event == \"rx_timeout\" then\n lora_device:recv(1000)\n elseif event == \"rx_error\" then\n\n end\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n tx_done -- \u53d1\u9001\u5b8c\u6210\n rx_done -- \u63a5\u6536\u5b8c\u6210\n tx_timeout -- \u53d1\u9001\u8d85\u65f6\n rx_timeout -- \u63a5\u6536\u8d85\u65f6\n rx_error -- \u63a5\u6536\u9519\u8bef\n]]\n", "prefix": "lora_device:on"}, "lvgl.draw_mask_radius_param_t": {"body": "lvgl.draw_mask_radius_param_t()", "description": "lvgl.draw_mask_radius_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_radius_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_radius_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal radius = lvgl.draw_mask_radius_param_t()\n", "prefix": "lvgl.draw_mask_radius_param_t"}, "lvgl.draw_mask_radius_param_t_free": {"body": "lvgl.draw_mask_radius_param_t_free(${1:radius})", "description": "lvgl.draw_mask_radius_param_t_free(radius) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_radius_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_radius_param_t_free(radius)\n", "prefix": "lvgl.draw_mask_radius_param_t_free"}, "lvgl.draw_mask_line_param_t": {"body": "lvgl.draw_mask_line_param_t()", "description": "lvgl.draw_mask_line_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_line_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_line_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal line = lvgl.draw_mask_line_param_t()\n", "prefix": "lvgl.draw_mask_line_param_t"}, "lvgl.draw_mask_line_param_t_free": {"body": "lvgl.draw_mask_line_param_t_free(${1:line})", "description": "lvgl.draw_mask_line_param_t_free(line) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_line_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_line_param_t_free(line)\n", "prefix": "lvgl.draw_mask_line_param_t_free"}, "lvgl.draw_mask_fade_param_t": {"body": "lvgl.draw_mask_fade_param_t()", "description": "lvgl.draw_mask_fade_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_fade_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_fade_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal fade = lvgl.draw_mask_fade_param_t()\n", "prefix": "lvgl.draw_mask_fade_param_t"}, "lvgl.draw_mask_fade_param_t_free": {"body": "lvgl.draw_mask_fade_param_t_free(${1:fade})", "description": "lvgl.draw_mask_fade_param_t_free(fade) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_fade_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_fade_param_t_free(fade)\n", "prefix": "lvgl.draw_mask_fade_param_t_free"}, "lvgl.font_get": {"body": "lvgl.font_get(${1:name})", "description": "lvgl.font_get(name) - \u83b7\u53d6\u5185\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0+\u5b57\u53f7, \u4f8b\u5982 opposans_m_10\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\n\nlocal font = lvgl.font_get(\"opposans_m_12\")\n", "prefix": "lvgl.font_get"}, "lvgl.font_load": {"body": "lvgl.font_load(${1:path/spi_device},${2:size},${3:bpp},${4:thickness},${5:cache_size},${6:sty_zh},${7:sty_en})", "description": "lvgl.font_load(path/spi_device,size,bpp,thickness,cache_size,sty_zh,sty_en) - \u4ece\u6587\u4ef6\u7cfb\u7edf\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring/userdata \u5b57\u4f53\u8def\u5f84/spi_device (spi_device\u4e3a\u4f7f\u7528\u5916\u7f6e\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93\u82af\u7247)\nnumber size \u53ef\u9009,\u5b57\u53f7 16-192 \u9ed8\u8ba416(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber bpp \u53ef\u9009 \u6df1\u5ea6 \u9ed8\u8ba44(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber thickness \u53ef\u9009 \u7c97\u7ec6\u503c \u9ed8\u8ba4size * bpp(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber cache_size \u53ef\u9009 \u9ed8\u8ba40(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_zh \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba41(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_en \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba43(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n--local font = lvgl.font_load(spi_device,16)(\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n", "prefix": "lvgl.font_load"}, "lvgl.font_free": {"body": "lvgl.font_free(${1:font})", "description": "lvgl.font_free(font) - \u91ca\u653e\u5b57\u4f53,\u614e\u7528!!!\u4ec5\u901a\u8fc7font_load\u52a0\u8f7d\u7684\u5b57\u4f53\u5141\u8bb8\u5378\u8f7d,\u901a\u8fc7font_get\u83b7\u53d6\u7684\u5b57\u4f53\u4e0d\u5141\u8bb8\u5378\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n-- N N N N \u64cd\u4f5c\n-- \u786e\u5b9a\u5b57\u4f53\u4e0d\u88ab\u4f7f\u7528,\u4e0d\u88ab\u5f15\u7528,\u4e14\u5185\u5b58\u7d27\u5f20\u9700\u8981\u91ca\u653e\nlvgl.font_free(font)\n", "prefix": "lvgl.font_free"}, "lvgl.obj_set_event_cb": {"body": "lvgl.obj_set_event_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_event_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, event), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, event\u662f\u4e8b\u4ef6\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_event_cb"}, "lvgl.obj_set_signal_cb": {"body": "lvgl.obj_set_signal_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_signal_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4fe1\u53f7\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, signal), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_signal_cb"}, "lvgl.anim_set_exec_cb": {"body": "lvgl.anim_set_exec_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_exec_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, value), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_exec_cb"}, "lvgl.anim_set_ready_cb": {"body": "lvgl.anim_set_ready_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_ready_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (anim), \u5176\u4e2danim\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_ready_cb"}, "lvgl.anim_path_set_cb": {"body": "lvgl.anim_path_set_cb(${1:path},${2:func})", "description": "lvgl.anim_path_set_cb(path, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (path), \u5176\u4e2dpath\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_path_set_cb"}, "lvgl.event_send": {"body": "lvgl.event_send(${1:obj},${2:ent})", "description": "lvgl.event_send(obj, ent) - \u53d1\u9001\u4e8b\u4ef6\u7ed9\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488\nint \u4e8b\u4ef6id, \u4f8b\u5982 lvgl.EVENT_PRESSED\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5bf9\u8c61\u5df2\u88ab\u5220\u9664\u7684\u8bdd\u8fd4\u56defalse\u6216\u8005nil\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u5982\u679cobj\u4e3anil\u5c31\u8fd4\u56denil\n", "prefix": "lvgl.event_send"}, "lvgl.scr_act": {"body": "lvgl.scr_act()", "description": "lvgl.scr_act() - \u83b7\u53d6\u5f53\u524d\u6d3b\u8dc3\u7684screen\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 screen\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal scr = lvgl.scr_act()\n\n", "prefix": "lvgl.scr_act"}, "lvgl.layer_top": {"body": "lvgl.layer_top()", "description": "lvgl.layer_top() - \u83b7\u53d6layer_top\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_top"}, "lvgl.layer_sys": {"body": "lvgl.layer_sys()", "description": "lvgl.layer_sys() - \u83b7\u53d6layer_sys\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_sys"}, "lvgl.scr_load": {"body": "lvgl.scr_load(${1:scr})", "description": "lvgl.scr_load(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n lvgl.scr_load(scr)\n", "prefix": "lvgl.scr_load"}, "lvgl.scr_load_anim": {"body": "lvgl.scr_load_anim(${1:scr})", "description": "lvgl.scr_load_anim(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\u5e76\u4f7f\u7528\u6307\u5b9a\u7684\u8f6c\u573a\u52a8\u753b\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n\n local scr2 = lvgl.obj_create(nil,nil)\n local btn2 = lvgl.btn_create(scr2)\n lvgl.obj_align(btn, scr2, lvgl.ALIGN_CENTER, 0, 20)\n local label2 = lvgl.label_create(btn2)\n lvgl.label_set_text(label2, \"Btn2\")\n lvgl.scr_load(scr)\n --sys.wait(1000);\n lvgl.scr_load_anim(scr2,lvgl.SCR_LOAD_ANIM_OVER_LEFT,100,100,false)\n\u539f\u51fd\u6570\uff1alv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool auto_del)\n", "prefix": "lvgl.scr_load_anim"}, "lvgl.theme_set_act": {"body": "lvgl.theme_set_act(${1:name})", "description": "lvgl.theme_set_act(name) - \u8bbe\u7f6e\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898\u540d\u79f0,\u53ef\u9009\u503c\u6709 default/mono/empty/material_light/material_dark/material_no_transition/material_no_focus\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u9ed1\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"mono\")\n-- \u7a7a\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"empty\")\n", "prefix": "lvgl.theme_set_act"}, "lvgl.sleep": {"body": "lvgl.sleep(${1:enable})", "description": "lvgl.sleep(enable) - LVGL\u4f11\u7720\u63a7\u5236\uff0c\u6682\u505c/\u6062\u590d\u5237\u65b0\u5b9a\u65f6\u5668\uff0c\u76ee\u524d\u53ea\u6709105\u548cEC618\u53ef\u4ee5\u7528\n\u4f20\u5165\u503c\uff1a\nboolean true\u6682\u505c false\u6062\u590d\n\u4f8b\u5b50\uff1a\nlvgl.sleep(true) --\u6682\u505c\u5237\u65b0\uff0c\u7cfb\u7edf\u53ef\u4ee5\u4f11\u7720\nlvgl.sleep(false) --\u6062\u590d\u5237\u65b0\uff0c\u7cfb\u7edf\u4e0d\u4f11\u7720\n", "prefix": "lvgl.sleep"}, "lvgl.init": {"body": "lvgl.init(${1:w},${2:h},${3:lcd},${4:buff_size},${5:buff_mode})", "description": "lvgl.init(w, h, lcd, buff_size, buff_mode) - \u521d\u59cb\u5316LVGL\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u5bbd,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nint \u5c4f\u5e55\u9ad8,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nuserdata lcd\u6307\u9488,\u53ef\u9009,lcd\u521d\u59cb\u5316\u540e\u6709\u9ed8\u8ba4\u503c,\u9884\u7559\u7684\u591a\u5c4f\u5165\u53e3\nint \u7f13\u51b2\u533a\u5927\u5c0f,\u9ed8\u8ba4\u5bbd*10, \u4e0d\u542b\u8272\u6df1.\nint \u7f13\u51b2\u6a21\u5f0f,\u9ed8\u8ba40, \u5355buff\u6a21\u5f0f, \u53ef\u90091,\u53ccbuff\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "lvgl.init"}, "lvgl.anim_create": {"body": "lvgl.anim_create()", "description": "lvgl.anim_create() - \u521b\u5efa\u5e76\u521d\u59cb\u5316\u4e00\u4e2aanim\n\u8fd4\u56de\u503c\uff1a\nuserdata anim\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim = lvgl.anim_create()\n", "prefix": "lvgl.anim_create"}, "lvgl.anim_free": {"body": "lvgl.anim_free(${1:anim})", "description": "lvgl.anim_free(anim) - \u91ca\u653e\u4e00\u4e2aanim\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_free(anim)\n", "prefix": "lvgl.anim_free"}, "lvgl.anim_path_t": {"body": "lvgl.anim_path_t()", "description": "lvgl.anim_path_t() - \u521b\u5efa\u4e00\u4e2alv_anim_path_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_anim_path_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim_path_t = lvgl.anim_path_t()\n", "prefix": "lvgl.anim_path_t"}, "lvgl.anim_path_t_free": {"body": "lvgl.anim_path_t_free(${1:anim_path_t})", "description": "lvgl.anim_path_t_free(anim_path_t) - \u91ca\u653e\u4e00\u4e2alv_anim_path_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_path_t_free(anim_path_t)\n", "prefix": "lvgl.anim_path_t_free"}, "lvgl.anim_set_path_str": {"body": "lvgl.anim_set_path_str(${1:anim},${2:tp})", "description": "lvgl.anim_set_path_str(anim, tp) - \u8bbe\u7f6e\u52a8\u753b\u8def\u5f84\u65b9\u5f0f\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nstring \u7c7b\u578b, \u652f\u6301 linear/ease_in/ease_out/ease_in_out/overshoot/bounce/step\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_path_str"}, "lvgl.qrcode_create": {"body": "lvgl.qrcode_create(${1:parent},${2:size},${3:dark_color},${4:light_color})", "description": "lvgl.qrcode_create(parent, size, dark_color, light_color) - \u521b\u5efaqrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6\nint \u957f\u5ea6,\u56e0\u4e3aqrcode\u662f\u6b63\u65b9\u5f62\nint \u4e8c\u7ef4\u7801\u4e2d\u6570\u636e\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0x3333ff\nint \u4e8c\u7ef4\u7801\u4e2d\u80cc\u666f\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0xeeeeff\n\u8fd4\u56de\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u5e76\u663e\u793aqrcode\nlocal qrcode = lvgl.qrcode_create(scr, 100)\nlvgl.qrcode_update(qrcode, \"https://luatos.com\")\nlvgl.obj_align(qrcode, lvgl.scr_act(), lvgl.ALIGN_CENTER, -100, -100)\n", "prefix": "lvgl.qrcode_create"}, "lvgl.qrcode_update": {"body": "lvgl.qrcode_update(${1:qrcode},${2:cnt})", "description": "lvgl.qrcode_update(qrcode, cnt) - \u8bbe\u7f6eqrcode\u7ec4\u4ef6\u7684\u4e8c\u7ef4\u7801\u5185\u5bb9,\u914d\u5408qrcode_create\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u66f4\u65b0\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse. \u901a\u5e38\u53ea\u6709\u6570\u636e\u592a\u957f\u65e0\u6cd5\u5bb9\u7eb3\u624d\u4f1a\u8fd4\u56defalse\n", "prefix": "lvgl.qrcode_update"}, "lvgl.qrcode_delete": {"body": "lvgl.qrcode_delete(${1:qrcode})", "description": "lvgl.qrcode_delete(qrcode) - \u5220\u9664qrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.qrcode_delete"}, "lvgl.style_t": {"body": "lvgl.style_t()", "description": "lvgl.style_t() - \u521b\u5efa\u4e00\u4e2astyle\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_t()\nlvgl.style_init(style)\n", "prefix": "lvgl.style_t"}, "lvgl.style_create": {"body": "lvgl.style_create()", "description": "lvgl.style_create() - \u521b\u5efa\u4e00\u4e2astyle\u5e76\u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n", "prefix": "lvgl.style_create"}, "lvgl.style_list_create": {"body": "lvgl.style_list_create()", "description": "lvgl.style_list_create() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n", "prefix": "lvgl.style_list_create"}, "lvgl.style_list_t": {"body": "lvgl.style_list_t()", "description": "lvgl.style_list_t() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_list_t()\n", "prefix": "lvgl.style_list_t"}, "lvgl.style_delete": {"body": "lvgl.style_delete(${1:style})", "description": "lvgl.style_delete(style) - \u5220\u9664style,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n-- ...\n-- ...\n-- lvgl.style_delete(style)\n", "prefix": "lvgl.style_delete"}, "lvgl.style_list_delete": {"body": "lvgl.style_list_delete(${1:style})", "description": "lvgl.style_list_delete(style) - \u5220\u9664style_list,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n-- ...\n-- ...\n-- lvgl.style_list_delete(style_list)\n", "prefix": "lvgl.style_list_delete"}, "lvgl.demo_benchmark": {"body": "lvgl.demo_benchmark()", "description": "lvgl.demo_benchmark() - lvgl benchmark demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_benchmark()\n", "prefix": "lvgl.demo_benchmark"}, "lvgl.demo_keypad_encoder": {"body": "lvgl.demo_keypad_encoder()", "description": "lvgl.demo_keypad_encoder() - lvgl keypad_encoder demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_keypad_encoder()\n", "prefix": "lvgl.demo_keypad_encoder"}, "lvgl.demo_music": {"body": "lvgl.demo_music()", "description": "lvgl.demo_music() - lvgl music demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_music()\n", "prefix": "lvgl.demo_music"}, "lvgl.demo_printer": {"body": "lvgl.demo_printer()", "description": "lvgl.demo_printer() - lvgl printer demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_printer()\n", "prefix": "lvgl.demo_printer"}, "lvgl.demo_stress": {"body": "lvgl.demo_stress()", "description": "lvgl.demo_stress() - lvgl stress demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_stress()\n", "prefix": "lvgl.demo_stress"}, "lvgl.demo_widgets": {"body": "lvgl.demo_widgets()", "description": "lvgl.demo_widgets() - lvgl widgets demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_widgets()\n", "prefix": "lvgl.demo_widgets"}, "lvgl.indev_drv_register": {"body": "lvgl.indev_drv_register(${1:tp},${2:dtp})", "description": "lvgl.indev_drv_register(tp, dtp) - \u6ce8\u518c\u8f93\u5165\u8bbe\u5907\u9a71\u52a8\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\"pointer\",\u6307\u9488\u7c7b/\u89e6\u6478\u7c7b\u5747\u53ef\uff0c\"keyboard\",\u952e\u76d8\u7c7b\u578b\nstring \u8bbe\u5907\u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\"emulator\",\u6a21\u62df\u5668\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlvgl.indev_drv_register(\"pointer\", \"emulator\")\n", "prefix": "lvgl.indev_drv_register"}, "lvgl.indev_point_emulator_update": {"body": "lvgl.indev_point_emulator_update(${1:x},${2:y},${3:state})", "description": "lvgl.indev_point_emulator_update(x, y, state) - \u66f4\u65b0\u6a21\u62df\u8f93\u5165\u8bbe\u5907\u7684\u5750\u6807\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint y\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint \u72b6\u6001, 0 \u4e3a \u91ca\u653e, 1 \u4e3a\u6309\u4e0b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6a21\u62df\u5728\u5c4f\u5e55\u4e0a\u7684\u70b9\u51fb,\u901a\u8fc7timeout\u6a21\u62df\u957f\u6309\u548c\u77ed\u6309\nsys.taskInit(function(x, y, timeout)\n lvgl.indev_point_emulator_update(x, y, 1)\n sys.wait(timeout)\n lvgl.indev_point_emulator_update(x, y, 0)\nend, 240, 120, 50)\n", "prefix": "lvgl.indev_point_emulator_update"}, "lvgl.indev_kb_update": {"body": "lvgl.indev_kb_update(${1:key})", "description": "lvgl.indev_kb_update(key) - \u66f4\u65b0\u952e\u76d8\u8f93\u5165\u8bbe\u5907\u7684\u6309\u952e\u503c\n\u4f20\u5165\u503c\uff1a\nint \u6309\u952e\u503c\uff0c\u9ed8\u8ba4\u4e3a0\uff0c\u6309\u952e\u62ac\u8d77\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.indev_kb_update"}, "lvgl.gif_create": {"body": "lvgl.gif_create(${1:parent},${2:path})", "description": "lvgl.gif_create(parent, path) - \u521b\u5efagif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6,\u53ef\u4ee5\u662fnil,\u4f46\u901a\u5e38\u4e0d\u4f1a\u662fnil\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil,\u5efa\u8bae\u68c0\u67e5\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_create"}, "lvgl.gif_restart": {"body": "lvgl.gif_restart(${1:gif})", "description": "lvgl.gif_restart(gif) - \u91cd\u65b0\u64ad\u653egif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata gif\u7ec4\u4ef6\u652f\u6301, \u7531gif_create\u65b9\u6cd5\u8fd4\u56de\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_restart"}, "max30102.init": {"body": "max30102.init(${1:i2c_id},${2:int})", "description": "max30102.init(i2c_id,int) - \u521d\u59cb\u5316MAX30102\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid,\u9ed8\u8ba4\u4e3a0\nint int\u5f15\u811a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\nif max30102.init(0,pin.PC05) then\n log.info(\"max30102\", \"init ok\")\nelse\n log.info(\"max30102\", \"init fail\")\nend\n", "prefix": "max30102.init"}, "max30102.get": {"body": "max30102.get()", "description": "max30102.get() - \u83b7\u53d6\u5fc3\u7387\u8840\u6c27(\u5927\u6982\u9700\u898110s\u65f6\u95f4\u6d4b\u91cf)\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nnumber \u5fc3\u7387\nnumber \u8840\u6c27\n", "prefix": "max30102.get"}, "max30102.shutdown": {"body": "max30102.shutdown()", "description": "max30102.shutdown() - \u5173\u95edmax30102\n", "prefix": "max30102.shutdown"}, "mcu.setClk": {"body": "mcu.setClk(${1:mhz})", "description": "mcu.setClk(mhz) - \u8bbe\u7f6e\u4e3b\u9891,\u5355\u4f4dMHZ\n\u4f20\u5165\u503c\uff1a\nint \u4e3b\u9891,\u6839\u636e\u8bbe\u5907\u7684\u4e0d\u540c\u6709\u4e0d\u540c\u7684\u6709\u6548\u503c,\u8bf7\u67e5\u9605\u624b\u518c\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u6ce8\u610f: \u5e76\u975e\u6240\u6709\u6a21\u5757\u90fd\u652f\u6301\u4e3b\u9891\u8c03\u6574,\u8bf7\u67e5\u9605\u624b\u518c\n-- Air101/Air103/Air601 \u652f\u6301\u8bbe\u7f6e\u6210 2/40/80/160/240. \u7279\u522b\u63d0\u9192, \u8bbe\u7f6e\u52302M\u540e, \u5982\u679c\u8981\u4f11\u7720, \u5fc5\u987b\u5148\u8bbe\u7f6e\u523080M\n-- ESP32\u7cfb\u5217\u652f\u6301\u8bbe\u7f6e\u6210 40/80/160/240 , \u9700\u89812024.1.1\u4e4b\u540e\u7684\u56fa\u4ef6\n-- Air780\u7cfb\u5217, Air105, \u4e0d\u652f\u6301\u8bbe\u7f6e\u4e3b\u9891\n-- Air780\u7cfb\u5217, \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\u65f6\u81ea\u52a8\u964d\u9891\u523024M\n\n-- \u8bbe\u7f6e\u523080MHZ\nmcu.setClk(80)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u5230240MHZ\nmcu.setClk(240)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u52302MHZ\nmcu.setClk(2)\nsys.wait(1000)\n", "prefix": "mcu.setClk"}, "mcu.getClk": {"body": "mcu.getClk()", "description": "mcu.getClk() - \u83b7\u53d6\u4e3b\u9891,\u5355\u4f4dMHZ\n\u8fd4\u56de\u503c\uff1a\nint \u82e5\u5931\u8d25\u8fd4\u56de-1,\u5426\u5219\u8fd4\u56de\u4e3b\u9891\u6570\u503c,\u82e5\u7b49\u4e8e0,\u53ef\u80fd\u5904\u4e8e32k\u6676\u632f\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlocal mhz = mcu.getClk()\nprint(\"Boom\", mhz)\n", "prefix": "mcu.getClk"}, "mcu.unique_id": {"body": "mcu.unique_id()", "description": "mcu.unique_id() - \u83b7\u53d6\u8bbe\u5907\u552f\u4e00id. \u6ce8\u610f,\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26,\u5982\u9700\u67e5\u770b\u5efa\u8baetoHex()\u540e\u6253\u5370\n\u8fd4\u56de\u503c\uff1a\nstring \u8bbe\u5907\u552f\u4e00id.\u82e5\u4e0d\u652f\u6301, \u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32.\n\u4f8b\u5b50\uff1a\nlocal unique_id = mcu.unique_id()\nprint(\"unique_id\", unique_id)\n", "prefix": "mcu.unique_id"}, "mcu.ticks": {"body": "mcu.ticks()", "description": "mcu.ticks() - \u83b7\u53d6\u542f\u52a8\u540e\u7684tick\u6570,\u672c\u8eab\u662f\u65e0\u7b26\u53f7\u503c,\u8303\u56f40~0xffffffff,lua\u662f\u6709\u7b26\u53f7\u8ba1\u7b97,\u8ba1\u7b97\u65f6\u8d85\u8fc70x7fffffff\u4f1a\u53d8\u8d1f\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dtick\u503c\n\u4f8b\u5b50\uff1a\nlocal tick = mcu.ticks()\nprint(\"ticks\", tick)\n-- \u5982\u9700\u4e0d\u4f1a\u6ea2\u51fa\u7684\u503c, \u53ef\u7528mcu.ticks32(), \u4e8e2024.5.7\u65b0\u589e\n", "prefix": "mcu.ticks"}, "mcu.hz": {"body": "mcu.hz()", "description": "mcu.hz() - \u83b7\u53d6\u6bcf\u79d2\u7684tick\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nint \u6bcf\u79d2\u7684tick\u6570\u91cf,\u901a\u5e38\u4e3a1000\n\u4f8b\u5b50\uff1a\nlocal hz = mcu.hz()\nprint(\"mcu.hz\", hz)\n", "prefix": "mcu.hz"}, "mcu.reg32": {"body": "mcu.reg32(${1:address},${2:value},${3:mask})", "description": "mcu.reg32(address, value, mask) - \u8bfb\u5199mcu\u768432bit\u5bc4\u5b58\u5668\u6216\u8005ram,\u8c28\u614e\u4f7f\u7528\u5199\u529f\u80fd,\u8bf7\u719f\u6089mcu\u7684\u5bc4\u5b58\u5668\u4f7f\u7528\u65b9\u6cd5\u540e\u518d\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5bc4\u5b58\u5668\u6216\u8005ram\u5730\u5740\nint \u5199\u5165\u7684\u503c,\u5982\u679c\u6ca1\u6709,\u5219\u76f4\u63a5\u8fd4\u56de\u5f53\u524d\u503c\nint \u4f4d\u63a9\u7801,\u53ef\u4ee5\u5bf9\u7279\u5b9a\u51e0\u4e2a\u4f4d\u7f6e\u7684bit\u505a\u4fee\u6539, \u9ed8\u8ba40xffffffff,\u4fee\u6539\u5168\u90e832bit\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u5bc4\u5b58\u7684\u503c\n\u4f8b\u5b50\uff1a\nlocal value = mcu.reg32(0x2009FFFC, 0x01, 0x01) --\u5bf90x2009FFFC\u5730\u5740\u4e0a\u7684\u503c,\u4fee\u6539bit0\u4e3a1\n", "prefix": "mcu.reg32"}, "mcu.x32": {"body": "mcu.x32(${1:value})", "description": "mcu.x32(value) - \u8f6c\u636210\u8fdb\u5236\u6570\u4e3a16\u8fdb\u5236\u5b57\u7b26\u4e32\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u8f6c\u6362\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring 16\u8fdb\u5236\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal value = mcu.x32(0x2009FFFC) --\u8f93\u51fa\"0x2009fffc\"\n", "prefix": "mcu.x32"}, "mcu.tick64": {"body": "mcu.tick64()", "description": "mcu.tick64() - \u83b7\u53d6\u542f\u52a8\u540e\u7684\u9ad8\u7cbe\u5ea6tick\uff0c\u5982\u679c\u652f\u6301bit64\u5e93\uff0c\u53ef\u4ee5\u76f4\u63a5\u8f93\u51fa\u8f6c\u6362\u597d\u7684bit64\u7ed3\u6784\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u8f93\u51fabit64\u7ed3\u6784,true\u662f,\u5176\u4ed6\u90fd\u662ffalse,\u7559\u7a7a\u4e5f\u662ffalse,\u7528\u4e8e\u517c\u5bb9\u65e7\u7684demo\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524dtick\u503c,8\u4e2a\u5b57\u8282\u7684uint64,\u5982\u679c\u652f\u630164bit\u5e93,\u540c\u65f6\u8981\u6c42\u8f93\u51fa64bit\u7ed3\u6784\u7684\u8bdd,\u4f1a\u8f93\u51fa9\u5b57\u8282\u7684string\nint 1us\u6709\u51e0\u4e2atick,0\u8868\u793a\u672a\u77e5\n\u4f8b\u5b50\uff1a\nlocal tick_str, tick_per = mcu.tick64()\nprint(\"ticks\", tick_str, tick_per)\n", "prefix": "mcu.tick64"}, "mcu.dtick64": {"body": "mcu.dtick64(${1:tick1},${2:tick2},${3:check_value})", "description": "mcu.dtick64(tick1, tick2, check_value) - \u8ba1\u7b972\u4e2a64bit tick\u7684\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nstring 64bit\u7684string\nstring 64bit\u7684string\nint \u53c2\u8003\u503c,\u53ef\u9009\u9879,\u5982\u679c\u4e3a0,\u5219\u8fd4\u56de\u7ed3\u679c\u4e2d\u7b2c\u4e00\u4e2a\u9879\u76ee\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nboolean \u4e0e\u53c2\u8003\u503c\u6bd4\u8f83,\u5982\u679c\u5927\u4e8e\u7b49\u4e8e\u4e3atrue,\u53cd\u4e4b\u4e3afalse\nint \u5dee\u503ctick1 - tick2,\u5982\u679c\u8d85\u8fc7\u4e860x7fffffff,\u7ed3\u679c\u53ef\u80fd\u662f\u9519\u7684\n\u4f8b\u5b50\uff1a\nlocal result, diff_tick = mcu.dtick64(tick1, tick2)\nprint(\"ticks\", result, diff_tick)\n", "prefix": "mcu.dtick64"}, "mcu.setXTAL": {"body": "mcu.setXTAL(${1:source_main},${2:source_32k},${3:delay})", "description": "mcu.setXTAL(source_main, source_32k, delay) - \u9009\u62e9\u65f6\u949f\u6e90,\u5f53\u524d\u4ec5air105\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u65f6\u949f\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nboolean \u4f4e\u901f32K\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nint PLL\u7a33\u5b9a\u65f6\u95f4,\u5728\u5207\u6362\u9ad8\u901f\u65f6\u949f\u7684\u65f6\u5019,\u6839\u636e\u786c\u4ef6\u73af\u5883,\u9700\u8981delay\u4e00\u6bb5\u65f6\u95f4\u7b49\u5f85PLL\u7a33\u5b9a,\u9ed8\u8ba4\u662f1200,\u5efa\u8bae\u4e0d\u5c0f\u4e8e1024\n\u4f8b\u5b50\uff1a\nmcu.setXTAL(true, true, 1248) --\u9ad8\u901f\u65f6\u949f\u4f7f\u7528\u5916\u90e8\u65f6\u949f,\u4f4e\u901f32K\u4f7f\u7528\u5916\u90e8\u6676\u632f, delay1248\n", "prefix": "mcu.setXTAL"}, "mcu.hardfault": {"body": "mcu.hardfault(${1:mode})", "description": "mcu.hardfault(mode) - mcu\u6b7b\u673a\u65f6\u5904\u7406\u6a21\u5f0f\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5904\u7406\u6a21\u5f0f\uff0c0\u6b7b\u673a\u505c\u673a\uff0c1\u6b7b\u673a\u540e\u91cd\u542f\uff0c2\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f 3.\u6b7b\u673a\u65f6\u5199\u5165\u5173\u952e\u4fe1\u606f\u5230flash\u540e\u7acb\u523b\u91cd\u542f\n\u4f8b\u5b50\uff1a\nmcu.hardfault(0) --\u6b7b\u673a\u540e\u505c\u673a\uff0c\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5\u72b6\u6001\nmcu.hardfault(1) --\u6b7b\u673a\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u6b63\u5f0f\u4ea7\u54c1\nmcu.hardfault(2) --\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u538b\u529b\u6d4b\u8bd5\u6216\u8005\u6b63\u5f0f\u4ea7\u54c1\n", "prefix": "mcu.hardfault"}, "mcu.iomux": {"body": "mcu.iomux(${1:type},${2:channel},${3:value})", "description": "mcu.iomux(type, channel, value) - \u5728\u5916\u8bbe\u6253\u5f00\u524d\uff0c\u5c06\u5916\u8bbeIO\u590d\u7528\u5230\u975e\u9ed8\u8ba4\u914d\u7f6e\u4e0a\uff0c\u76ee\u524d\u53ea\u652f\u6301Air780E\u7684\u90e8\u5206\u5916\u8bbe\u590d\u7528\u5230\u5176\u4ed6\u914d\u7f6e\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e34\u65f6\u63a5\u53e3\uff0c\u5982\u679c\u540e\u7eed\u6709\u66f4\u5408\u9002\u7684api\uff0c\u672c\u63a5\u53e3\u5c06\u4e0d\u518d\u66f4\u65b0\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709mcu.UART,mcu.I2C\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\nint \u65b0\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u9700\u8981\u6839\u636e\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\n\u4f8b\u5b50\uff1a\nmcu.iomux(mcu.UART, 2, 1) -- Air780E\u7684UART2\u590d\u7528\u5230gpio12\u548cgpio13(Air780EG\u9ed8\u8ba4\u662f\u8fd9\u4e2a\u590d\u7528\uff0c\u4e0d\u8981\u52a8)\nmcu.iomux(mcu.UART, 2, 2) -- Air780E\u7684UART2\u590d\u7528\u5230gpio6\u548cgpio7\nmcu.iomux(mcu.I2C, 0, 1) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio12\u548cgpio13\nmcu.iomux(mcu.I2C, 0, 2) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio16\u548cgpio17\nmcu.iomux(mcu.I2C, 1, 1) -- Air780E\u7684I2C1\u590d\u7528\u5230gpio4\u548cgpio5\n", "prefix": "mcu.iomux"}, "mcu.altfun": {"body": "mcu.altfun(${1:type},${2:sn},${3:pad_index},${4:alt_fun},${5:is_input})", "description": "mcu.altfun(type, sn, pad_index, alt_fun, is_input) - IO\u5916\u8bbe\u529f\u80fd\u590d\u7528\u9009\u62e9\uff0c\u6ce8\u610f\u666e\u901aMCU\u662f\u4ee5GPIO\u53f7\u4e3a\u5e8f\u53f7\uff0c\u4f46\u662f\u4e13\u7528SOC\uff0c\u6bd4\u5982CAT1\u7684\uff0c\u662f\u4ee5PAD\u53f7\u4e3a\u5e8f\u53f7\u3002\u672c\u51fd\u6570\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u6709mcu.UART,mcu.I2C,mcu.SPI,mcu.PWM,mcu.GPIO,mcu.I2S,mcu.LCD,mcu.CAM\uff0c\u5177\u4f53\u9700\u8981\u770b\u5e73\u53f0\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\u5982\u679c\u662fmcu.GPIO\uff0c\u5219\u662fGPIO\u53f7\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint pad\u53f7\uff0c\u5982\u679c\u7559\u7a7a\u4e0d\u5199\uff0c\u5219\u8868\u793a\u6e05\u9664\u914d\u7f6e\uff0c\u4f7f\u7528\u5e73\u53f0\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint \u590d\u7528\u529f\u80fd\u5e8f\u53f7\uff0c0~N\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nboolean \u662f\u5426\u662f\u8f93\u5165\u529f\u80fd\uff0ctrue\u662f\uff0c\u7559\u7a7a\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u4ee5 Air780EP \u4e3a\u4f8b\n-- \u5c06GPIO46\u6620\u5c04\u5230paddr 32 alt 1\nmcu.altfun(mcu.GPIO, 46, 32, 1, 0)\n-- mcu.altfun(mcu.GPIO, 46) -- \u8fd8\u539f\u6210\u9ed8\u8ba4\u914d\u7f6e\n\n-- UART2\u590d\u7528\u5230paddr 25/26 alt 3\nmcu.altfun(mcu.UART,2, 25, 3, 1)\nmcu.altfun(mcu.UART,2, 26, 3, 0)\n", "prefix": "mcu.altfun"}, "mcu.ticks2": {"body": "mcu.ticks2(${1:mode})", "description": "mcu.ticks2(mode) - \u83b7\u53d6\u9ad8\u7cbe\u5ea6\u7684\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f, \u770b\u540e\u9762\u7684\u7528\u6cd5\u8bf4\u660e\n\u8fd4\u56de\u503c\uff1a\nint \u6839\u636emode\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u7684\u542b\u4e49\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.7\u65b0\u589e\n-- \u4e0emcu.ticks()\u7684\u533a\u522b\u662f,\u5e95\u5c42\u8ba1\u6570\u5668\u662f64bit\u7684, \u5728\u53ef\u9884\u8ba1\u7684\u5c06\u6765\u4e0d\u4f1a\u6ea2\u51fa\n-- \u6240\u4ee5\u672c\u51fd\u6570\u8fd4\u56de\u7684\u503c\u603b\u662f\u9012\u589e\u7684, \u800c\u4e1432bit\u56fa\u4ef6\u4e5f\u80fd\u5904\u7406\n\n-- \u6a21\u5f0f\u53ef\u9009\u503c \u53ca \u5bf9\u5e94\u7684\u8fd4\u56de\u503c\n-- 0: \u8fd4\u56de\u5fae\u79d2\u6570, \u4ee5\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890us \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 1: \u8fd4\u56de\u6beb\u79d2\u6570, \u4ee5\u5343\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890ms \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 2: \u8fd4\u56de\u79d2\u6570, \u4ee5\u767e\u4e07\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890s \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n\nlocal us_h, us_l = mcu.ticks2(0)\nlocal ms_h, ms_l = mcu.ticks2(1)\nlocal sec_h, sec_l = mcu.ticks2(2)\nlog.info(\"us_h\", us_h, \"us_l\", us_l)\nlog.info(\"ms_h\", ms_h, \"ms_l\", ms_l)\nlog.info(\"sec_h\", sec_h, \"sec_l\", sec_l)\n", "prefix": "mcu.ticks2"}, "mcu.XTALRefOutput": {"body": "mcu.XTALRefOutput(${1:source_main},${2:source_32k})", "description": "mcu.XTALRefOutput(source_main, source_32k) - \u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\nboolean \u4f4e\u901f32K\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5f53\u524d\u4ec5Air780EP\u7cfb\u5217\u652f\u6301\nmcu.XTALRefOutput(true, false) --\u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa,\u4f4e\u901f32K\u4e0d\u8f93\u51fa\n", "prefix": "mcu.XTALRefOutput"}, "miniz.compress": {"body": "miniz.compress(${1:data},${2:flags})", "description": "miniz.compress(data, flags) - \u5feb\u901f\u538b\u7f29,\u9700\u8981165kb\u7684\u7cfb\u7edf\u5185\u5b58\u548c32kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k.\nflags \u538b\u7f29\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.WRITE_ZLIB_HEADER , \u5373\u5199\u5165zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\nend\n\n", "prefix": "miniz.compress"}, "miniz.uncompress": {"body": "miniz.uncompress(${1:data},${2:flags})", "description": "miniz.uncompress(data, flags) - \u5feb\u901f\u89e3\u538b,\u9700\u898132kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e, \u89e3\u538b\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nflags \u89e3\u538b\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.PARSE_ZLIB_HEADER , \u5373\u89e3\u6790zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\n\n local udata = miniz.uncompress(cdata)\n log.info(\"miniz\", \"udata\", udata)\nend\n", "prefix": "miniz.uncompress"}, "mlx90640.init": {"body": "mlx90640.init(${1:i2c_id},${2:refresh_rate)(\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3},${3:\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3})", "description": "mlx90640.init(i2c_id,refresh_rate) (\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3,\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3) - \u521d\u59cb\u5316MLX90640\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid\u6216\u8005\u8f6fi2c\u5bf9\u8c61,\u9ed8\u8ba4\u4e3a0\nint \u4f20\u611f\u5668\u7684\u6d4b\u91cf\u901f\u7387,\u9ed8\u8ba4\u4e3a4Hz\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\ni2c.setup(i2cid,i2c_speed)\nif mlx90640.init(0,mlx90640.FPS4HZ) then\n log.info(\"mlx90640\", \"init ok\")\n sys.wait(500) -- \u7a0d\u7b49\u7247\u523b\n while 1 do\n mlx90640.feed() -- \u53d6\u4e00\u5e27\u6570\u636e\n mlx90640.draw2lcd(0, 0 ,1)-- \u9700\u63d0\u524d\u628alcd\u521d\u59cb\u5316\u597d\n sys.wait(250) -- \u9ed8\u8ba4\u662f4HZ\n end\nelse\n log.info(\"mlx90640\", \"init fail\")\nend\n\n", "prefix": "mlx90640.init"}, "mlx90640.feed": {"body": "mlx90640.feed()", "description": "mlx90640.feed() - \u53d6\u4e00\u5e27\u6570\u636e\n", "prefix": "mlx90640.feed"}, "mlx90640.raw_data": {"body": "mlx90640.raw_data()", "description": "mlx90640.raw_data() - \u83b7\u53d6\u5e95\u5c42\u88f8\u6570\u636e,\u6d6e\u70b9\u6570\u77e9\u9635\n\u8fd4\u56de\u503c\uff1a\ntable \u6d6e\u70b9\u6570\u6570\u636e,768\u4e2a\u50cf\u7d20\u5bf9\u5e94\u7684\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_data"}, "mlx90640.raw_point": {"body": "mlx90640.raw_point(${1:index})", "description": "mlx90640.raw_point(index) - \u83b7\u53d6\u5355\u4e00\u70b9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u7d22\u5f15\u503c(0-767)\n\u8fd4\u56de\u503c\uff1a\nnumber \u5355\u70b9\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_point"}, "mlx90640.ta_temp": {"body": "mlx90640.ta_temp()", "description": "mlx90640.ta_temp() - \u83b7\u53d6\u5916\u58f3\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5916\u58f3\u6e29\u5ea6\n", "prefix": "mlx90640.ta_temp"}, "mlx90640.max_temp": {"body": "mlx90640.max_temp()", "description": "mlx90640.max_temp() - \u83b7\u53d6\u6700\u9ad8\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u9ad8\u6e29\u5ea6\nnumber \u6700\u9ad8\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.max_temp"}, "mlx90640.min_temp": {"body": "mlx90640.min_temp()", "description": "mlx90640.min_temp() - \u83b7\u53d6\u6700\u4f4e\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u4f4e\u6e29\u5ea6\nnumber \u6700\u4f4e\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.min_temp"}, "mlx90640.average_temp": {"body": "mlx90640.average_temp()", "description": "mlx90640.average_temp() - \u83b7\u53d6\u5e73\u5747\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5e73\u5747\u6e29\u5ea6\n", "prefix": "mlx90640.average_temp"}, "mlx90640.get_vdd": {"body": "mlx90640.get_vdd()", "description": "mlx90640.get_vdd() - \u83b7\u53d6vdd\n\u8fd4\u56de\u503c\uff1a\nnumber vdd\n", "prefix": "mlx90640.get_vdd"}, "mlx90640.draw2lcd": {"body": "mlx90640.draw2lcd(${1:x},${2:y},${3:fold})", "description": "mlx90640.draw2lcd(x, y, fold) - \u7ed8\u5236\u5230lcd\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u89d2x\u5750\u6807\nint \u5de6\u4e0a\u89d2y\u5750\u6807\nint \u653e\u5927\u500d\u6570,\u5fc5\u987b\u4e3a2\u7684\u6307\u6570\u500d(1,2,4,8,16...)\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "mlx90640.draw2lcd"}, "mobile.imei": {"body": "mobile.imei(${1:index})", "description": "mobile.imei(index) - \u83b7\u53d6IMEI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMEI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imei"}, "mobile.imsi": {"body": "mobile.imsi(${1:index})", "description": "mobile.imsi(index) - \u83b7\u53d6IMSI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMSI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imsi"}, "mobile.sn": {"body": "mobile.sn()", "description": "mobile.sn() - \u83b7\u53d6SN\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684SN\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil. \u6ce8\u610f, SN\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u51fa\u5382\u672a\u5fc5\u6709\u5199SN\n-- \u4e00\u822c\u7528\u9014\u7684\u552f\u4e00id, \u53ef\u4ee5\u7528mobile.imei()\u4ee3\u66ff\n-- \u5982\u9700\u8981\u771f\u6b63\u7684\u552f\u4e00ID, \u4f7f\u7528 mcu.unique_id()\n", "prefix": "mobile.sn"}, "mobile.muid": {"body": "mobile.muid()", "description": "mobile.muid() - \u83b7\u53d6MUID\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MUID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.muid"}, "mobile.iccid": {"body": "mobile.iccid(${1:id})", "description": "mobile.iccid(id) - \u83b7\u53d6\u6216\u8bbe\u7f6eICCID\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring ICCID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.iccid"}, "mobile.number": {"body": "mobile.number(${1:id})", "description": "mobile.number(id) - \u83b7\u53d6\u624b\u673a\u5361\u53f7\uff0c\u6ce8\u610f\uff0c\u53ea\u6709\u5199\u5165\u4e86\u624b\u673a\u53f7\u624d\u80fd\u8bfb\u51fa\uff0c\u56e0\u6b64\u6709\u53ef\u80fd\u8bfb\u51fa\u6765\u662f\u7a7a\u7684\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring number\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.number"}, "mobile.simid": {"body": "mobile.simid(${1:id})", "description": "mobile.simid(id) - \u83b7\u53d6\u5f53\u524dSIM\u5361\u69fd,\u6216\u8005\u5207\u6362\u5361\u69fd\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u5982\u679c\u652f\u6301\u53cc\u5361\uff0c\u6bd4\u5982EC618\uff0c\u53ef\u4ee5\u586b2\u6765\u81ea\u9002\u5e94\uff0c\u4f46\u662f\u4f1a\u5360\u7528\u63894\u4e2aIO(gpio4/5/6/23)\u3002\u5982\u679c\u4e0d\u586b\u5c31\u76f4\u63a5\u8bfb\u53d6\u5f53\u524d\u5361\u69fd\nboolean \u662f\u5426\u4f18\u5148\u7528SIM0\uff0c\u53ea\u6709SIM\u5361\u7f16\u53f7\u51992\u81ea\u9002\u5e94\u624d\u6709\u7528\uff01\uff01\uff01\u3002true\u4f18\u5148\u7528SIM0\uff0cfalse\u5219\u7531\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\uff0c\u652f\u6301\u53cc\u5361\u53cc\u5f85SIM0\u4f18\u5148\uff0c\u4e0d\u652f\u6301\u7684\u662f\u4e0a\u4e00\u6b21\u68c0\u6d4b\u5230\u7684\u4f18\u5148\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5fc5\u987b\u5728\u5f00\u673a\u5c31\u914d\u7f6e\uff0c\u5426\u5219\u5c31\u65e0\u6548\u4e86\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsim\u5361\u69fd\u7f16\u53f7,\u82e5\u5931\u8d25\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\nmobile.simid(0) -- \u56fa\u5b9a\u4f7f\u7528SIM0\nmobile.simid(1) -- \u56fa\u4ef6\u4f7f\u7528SIM1\nmobile.simid(2) -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4f18\u5148\u7ea7\u770b\u5177\u4f53\u5e73\u53f0\nmobile.simid(2, true) -- -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4e14SIM0\u4f18\u5148\n-- \u63d0\u9192, \u81ea\u52a8\u8bc6\u522b\u662f\u4f1a\u589e\u52a0\u65f6\u95f4\u7684\n", "prefix": "mobile.simid"}, "mobile.simPin": {"body": "mobile.simPin(${1:id},${2:operation},${3:pin1},${4:pin2})", "description": "mobile.simPin(id,operation,pin1,pin2) - \u68c0\u6d4b\u5f53\u524dSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u5bf9SIM\u5361\u7684PIN\u7801\u505a\u76f8\u5173\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u652f\u6301\u53cc\u5361\u53cc\u5f85\u7684\u624d\u9700\u8981\u9009\u62e9\nint PIN\u7801\u64cd\u4f5c\u7c7b\u578b\uff0c\u53ea\u80fd\u662fmobile.PIN_XXXX\uff0c\u4e0d\u64cd\u4f5c\u5c31\u7559\u7a7a\nstring \u66f4\u6362pin\u65f6\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u9a8c\u8bc1\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u89e3\u9501pin\u7801\u65f6\u7684PUK\uff0c4~8\u5b57\u8282\nstring \u66f4\u6362pin\u7801\u64cd\u4f5c\u65f6\u7684\u65b0\u7684pin\u7801\uff0c\u89e3\u9501pin\u7801\u65f6\u7684\u65b0PIN\uff0c4~8\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u5f53\u65e0PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56deSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u6709PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56de\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\nlocal cpin_is_ready = mobile.simPin() -- \u5f53\u524dsim\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u4e00\u822c\u8fd4\u56defalse\u5c31\u662f\u6ca1\u5361\nlocal succ = mobile.simPin(0, mobile.PIN_VERIFY, \"1234\") -- \u8f93\u5165pin\u7801\u9a8c\u8bc1\n", "prefix": "mobile.simPin"}, "mobile.rtime": {"body": "mobile.rtime(${1:time},${2:auto_reset_stack},${3:data_first})", "description": "mobile.rtime(time, auto_reset_stack, data_first) - \u8bbe\u7f6eRRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\u95f4\u9694\uff0c\u5f53\u5f00\u542f\u65f6\u540e\uff0c\u9047\u5230\u6781\u5f31\u4fe1\u53f7+\u9891\u7e41\u6570\u636e\u64cd\u4f5c\u53ef\u80fd\u4f1a\u5f15\u8d77\u7f51\u7edc\u4e25\u91cd\u6545\u969c\uff0c\u56e0\u6b64\u9700\u8981\u989d\u5916\u8bbe\u7f6e\u81ea\u52a8\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nint RRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\uff0c\u7b49\u540c\u4e8eAir724\u7684AT+RTIME\uff0c\u5355\u4f4d\u79d2\uff0c\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u505c\u7528\uff0c\u4e0d\u8981\u8d85\u8fc720\u79d2\uff0c\u6ca1\u6709\u610f\u4e49\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u65f6\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\u65f6\u95f4\u5219\u81ea\u52a8\u5f00\u542f\u3002\u672c\u53c2\u6570\u4e8e2023\u5e749\u670814\u65e5\u5df2\u5e9f\u5f03\nboolean \u662f\u5426\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0ctrue\u542f\u7528\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u4e3afalse\uff0c\u5f00\u542f\u540e\u5fc5\u987b\u7b49\u5230TCP\u6570\u636eACK\u6216\u8005\u8d85\u65f6\u5931\u8d25\uff0c\u6216\u8005socket CONNECT\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u6216\u8005\u5931\u8d25\uff09\u624d\u5141\u8bb8RRC\u63d0\u524d\u91ca\u653e\uff0c\u53ef\u80fd\u4f1a\u589e\u52a0\u529f\u8017\u3002\u672c\u53c2\u6570\u4e8e2024\u5e748\u670812\u65e5\u542f\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.rtime(3) --\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\u63d0\u524d\u91ca\u653eRRC\nmobile.rtime(3,nil,true) --\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0c\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\uff0c\u63d0\u524d\u91ca\u653eRRC\n", "prefix": "mobile.rtime"}, "mobile.setAuto": {"body": "mobile.setAuto(${1:check_sim_period},${2:get_cell_period},${3:search_cell_time},${4:auto_reset_stack},${5:network_check_period})", "description": "mobile.setAuto(check_sim_period, get_cell_period, search_cell_time, auto_reset_stack, network_check_period) - \u8bbe\u7f6e\u4e00\u4e9b\u8f85\u52a9\u5468\u671f\u6027\u6216\u8005\u81ea\u52a8\u529f\u80fd\uff0c\u76ee\u524d\u652f\u6301SIM\u5361\u6682\u65f6\u8131\u79bb\u540e\u6062\u590d\uff0c\u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\uff0c\u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u81ea\u52a8\u6062\u590d\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5efa\u8bae5000~10000\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0c\u4e0d\u80fd\u518d\u540c\u4e00\u65f6\u95f4\u4f7f\u7528\uff0c\u5fc5\u987b\u9519\u5f00\u6267\u884c\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u4f1a\u589e\u52a0\u90e8\u5206\u529f\u8017\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u6bcf\u6b21\u641c\u7d22\u5c0f\u533a\u65f6\u6700\u5927\u641c\u7d22\u65f6\u95f4\uff0c\u5355\u4f4d\u79d2\u3002\u4e0d\u8981\u8d85\u8fc78\u79d2\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u5f00\u59cb\u72b6\u6001\u662ffalse\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u6539\u53d8\nint \u8bbe\u7f6e\u5b9a\u65f6\u68c0\u6d4b\u7f51\u7edc\u662f\u5426\u6b63\u5e38\u5e76\u4e14\u5728\u68c0\u6d4b\u5230\u957f\u65f6\u95f4\u65e0\u7f51\u65f6\u901a\u8fc7\u91cd\u542f\u534f\u8bae\u6808\u6765\u6062\u590d\uff0c\u65e0\u7f51\u6062\u590d\u65f6\u957f\uff0c\u5355\u4f4dms\uff0c\u5efa\u8bae60000\u4ee5\u4e0a\uff0c\u4e3a\u7f51\u7edc\u641c\u7d22\u7f51\u7edc\u4fdd\u7559\u8db3\u591f\u7684\u65f6\u95f4\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u66f4\u6539\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mobile.setAuto"}, "mobile.apn": {"body": "mobile.apn(${1:index},${2:cid},${3:new_apn_name},${4:user_name},${5:password},${6:ip_type},${7:protocol})", "description": "mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol) - \u83b7\u53d6\u6216\u8bbe\u7f6eAPN\uff0c\u8bbe\u7f6eAPN\u5fc5\u987b\u5728\u5165\u7f51\u524d\u5c31\u8bbe\u7f6e\u597d\uff0c\u6bd4\u5982\u5728SIM\u5361\u8bc6\u522b\u5b8c\u6210\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nint cid, \u9ed8\u8ba40\uff0c\u5982\u679c\u8981\u7528\u975e\u9ed8\u8ba4APN\u6765\u6fc0\u6d3b\uff0c\u5fc5\u987b>0\nstring \u65b0\u7684APN,\u4e0d\u586b\u5c31\u662f\u83b7\u53d6APN, \u586b\u4e86\u5c31\u662f\u8bbe\u7f6eAPN, \u662f\u5426\u652f\u6301\u8bbe\u7f6e\u53d6\u51b3\u4e8e\u5e95\u5c42\u5b9e\u73b0\nstring \u65b0\u7684APN\u7684username,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nstring \u65b0\u7684APN\u7684password,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nint \u6fc0\u6d3bAPN\u65f6\u7684IP TYPE,1=IPV4 2=IPV6 3=IPV4V6,\u9ed8\u8ba4\u662f1\nint \u6fc0\u6d3bAPN\u65f6,\u5982\u679c\u9700\u8981username\u548cpassword,\u5c31\u8981\u5199\u9274\u6743\u534f\u8bae\u7c7b\u578b,1~3,\u9ed8\u8ba43,\u4ee3\u88681\u548c2\u90fd\u5c1d\u8bd5\u4e00\u4e0b\u3002\u4e0d\u9700\u8981\u9274\u6743\u7684\u51990\nboolean \u662f\u5426\u5220\u9664APN,true\u662f,\u5176\u4ed6\u90fd\u5426,\u53ea\u6709\u53c2\u65703\u65b0\u7684APN\u4e0d\u662fstring\u7684\u65f6\u5019\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nstring \u5982\u679c\u7f51\u7edc\u6ce8\u518c\u6210\u529f\uff0c\u8fd4\u56de\u6ce8\u518c\u7528\u7684APN\u503c\uff0c\u53cd\u4e4b\u662fnil\u3002\u8bbe\u7f6e\u597d\u4e0d\u4f1a\u7acb\u523b\u6709\u8fd4\u56de\u503c\uff0c\u9700\u8981\u7b49\u7f51\u7edc\u6ce8\u518c\u6210\u529f\n\u4f8b\u5b50\uff1a\nmobile.apn(0,1,\"cmiot\",\"\",\"\",nil,0) -- \u79fb\u52a8\u516c\u7f51\u5361\u8bbe\u7f6eAPN\u4e3acmiot,\u4e00\u822c\u4e0d\u7528\u8bbe\u7f6e\nmobile.apn(0,1,\"name\",\"user\",\"password\",nil,3) -- \u4e13\u7f51\u5361\u8bbe\u7f6e\u7684demo\uff0cname\uff0cuser\uff0cpassword\u8054\u7cfb\u5361\u5546\u83b7\u53d6\n", "prefix": "mobile.apn"}, "mobile.ipv6": {"body": "mobile.ipv6(${1:onff})", "description": "mobile.ipv6(onff) - \u662f\u5426\u9ed8\u8ba4\u5f00\u542fIPV6\u529f\u80fd\uff0c\u5fc5\u987b\u5728LTE\u7f51\u7edc\u8fde\u63a5\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u5173 true\u5f00\u542f false \u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nboolean true \u5f53\u524d\u662f\u5f00\u542f\u7684\uff0cfalse \u5f53\u524d\u662f\u5173\u95ed\u7684\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u5f00\u542fipv6\u540e, \u5f00\u673a\u8054\u7f51\u4f1a\u61622~3\u79d2\n", "prefix": "mobile.ipv6"}, "mobile.csq": {"body": "mobile.csq()", "description": "mobile.csq() - \u83b7\u53d6csq\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dCSQ\u503c, \u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 - 31, \u8d8a\u5927\u8d8a\u597d\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, 4G\u6a21\u5757\u7684CSQ\u503c\u4ec5\u4f9b\u53c2\u8003, rsrp/rsrq\u624d\u662f\u771f\u6b63\u7684\u4fe1\u53f7\u5f3a\u5ea6\u6307\u6807\n", "prefix": "mobile.csq"}, "mobile.rssi": {"body": "mobile.rssi()", "description": "mobile.rssi() - \u83b7\u53d6rssi\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drssi\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 \u5230 -114, \u8d8a\u5c0f\u8d8a\u597d\n", "prefix": "mobile.rssi"}, "mobile.rsrp": {"body": "mobile.rsrp()", "description": "mobile.rsrp() - \u83b7\u53d6rsrp,\u53c2\u8003\u4fe1\u53f7\u63a5\u6536\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrp\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -44 ~ -140 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrp"}, "mobile.rsrq": {"body": "mobile.rsrq()", "description": "mobile.rsrq() - \u83b7\u53d6rsrq,\u53c2\u8003\u4fe1\u53f7\u53d1\u9001\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -3 ~ -19.5 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrq"}, "mobile.snr": {"body": "mobile.snr()", "description": "mobile.snr() - \u83b7\u53d6snr,\u4fe1\u566a\u6bd4\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsnq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0.\u8303\u56f4 0 - 30, \u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.snr"}, "mobile.eci": {"body": "mobile.eci()", "description": "mobile.eci() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684ECI(E-UTRAN Cell Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.eci"}, "mobile.tac": {"body": "mobile.tac()", "description": "mobile.tac() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684TAC\u6216\u8005LAC\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1. \u5982\u679c\u5c1a\u672a\u6ce8\u518c\u5230\u7f51\u7edc,\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.7.9 \u65b0\u589e\n", "prefix": "mobile.tac"}, "mobile.enbid": {"body": "mobile.enbid()", "description": "mobile.enbid() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684eNBID(eNodeB Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524denbid\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.enbid"}, "mobile.scell": {"body": "mobile.scell()", "description": "mobile.scell() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u670d\u52a1\u5c0f\u533a\u7684\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2024.9.12 \u65b0\u589e\nlog.info(\"cell\", json.encode(mobile.scell()))\n-- \u8fd4\u56de\u503c\u793a\u4f8b\n{\n \"mnc\": 11,\n \"mcc\": 460,\n \"rssi\": -78,\n \"pci\": 115,\n \"rsrp\": -107,\n \"tac\": 30005,\n \"eci\": 124045360,\n \"cid\": 124045360,\n \"rsrq\": -9,\n \"snr\": 15,\n \"earfcn\": 1850\n}\n", "prefix": "mobile.scell"}, "mobile.flymode": {"body": "mobile.flymode(${1:index},${2:enable})", "description": "mobile.flymode(index, enable) - \u8fdb\u51fa\u98de\u884c\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nbool \u662f\u5426\u8bbe\u7f6e\u4e3a\u98de\u884c\u6a21\u5f0f,true\u4e3a\u8bbe\u7f6e, false\u4e3a\u9000\u51fa,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u539f\u98de\u884c\u6a21\u5f0f\u7684\u72b6\u6001\n", "prefix": "mobile.flymode"}, "mobile.syncTime": {"body": "mobile.syncTime(${1:enable})", "description": "mobile.syncTime(enable) - \u914d\u7f6e\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\u5f00\u5173\uff0c\u9ed8\u8ba4\u5f00\u542f\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed, nil\u4e0d\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nbool \u5f53\u524d\u5f00\u5173\u72b6\u6001\n\u4f8b\u5b50\uff1a\nmobile.syncTime() --\u83b7\u53d6\u5f53\u524d\u5f00\u5173\u72b6\u6001\nmobile.syncTime(false) --\u5173\u95ed\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\n", "prefix": "mobile.syncTime"}, "mobile.status": {"body": "mobile.status()", "description": "mobile.status() - \u83b7\u53d6\u7f51\u7edc\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7f51\u7edc\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u72b6\u6001\u63cf\u8ff0\n-- 0:\u7f51\u7edc\u672a\u6ce8\u518c\n-- 1:\u7f51\u7edc\u5df2\u6ce8\u518c\n-- 2:\u6b63\u5728\u641c\u7f51\u4e2d\n-- 3:\u7f51\u7edc\u6ce8\u518c\u88ab\u62d2\u7edd\n-- 4:\u7f51\u7edc\u72b6\u6001\u672a\u77e5\n-- 5:\u6f2b\u6e38,\u4e14\u5df2\u6ce8\u518c\n-- 6:\u4ec5SMS\u53ef\u7528\n-- 7:\u4ec5SMS\u53ef\u7528,\u4e14\u6f2b\u6e38\u72b6\u6001\n-- 8:\u4ec5\u7d27\u6025\u547c\u53eb. \u6ce8\u610f, \u56fd\u5185\u4e0d\u652f\u6301\u6b64\u72b6\u6001,\u6a21\u5757\u4e5f\u4e0d\u652f\u6301\u7d27\u6025\u547c\u53eb\n\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\u5224\u65ad\u8054\u7f51\u72b6\u6001, \u5efa\u8bae\u4f7f\u7528socket.localIP()\u6765\u5224\u65ad\n", "prefix": "mobile.status"}, "mobile.getCellInfo": {"body": "mobile.getCellInfo()", "description": "mobile.getCellInfo() - \u83b7\u53d6\u57fa\u7ad9\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u57fa\u7ad9\u6570\u636e\u7684\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \u4ece2023.06.20\u5f00\u59cb, \u9700\u8981\u4e3b\u52a8\u8bf7\u6c42\u4e00\u6b21reqCellInfo\u624d\u4f1a\u6709\u57fa\u7ad9\u6570\u636e.\n\n--\u793a\u4f8b\u8f93\u51fa(\u539f\u59cb\u6570\u636e\u662ftable, \u4e0b\u9762\u662fjson\u683c\u5f0f\u5316\u540e\u7684\u5185\u5bb9)\n--[[\n[\n {\"rsrq\":-10,\"rssi\":-55,\"cid\":124045360,\"mnc\":17,\"pci\":115,\"earfcn\":1850,\"snr\":15,\"rsrp\":-85,\"mcc\":1120,\"tdd\":0},\n {\"pci\":388,\"rsrq\":-11,\"mnc\":17,\"earfcn\":2452,\"snr\":5,\"rsrp\":-67,\"mcc\":1120,\"cid\":124045331},\n {\"pci\":100,\"rsrq\":-9,\"mnc\":17,\"earfcn\":75,\"snr\":17,\"rsrp\":-109,\"mcc\":1120,\"cid\":227096712}\n]\n]]\n\nmobile.reqCellInfo(60)\n-- \u8ba2\u9605\nsys.subscribe(\"CELL_INFO_UPDATE\", function()\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\nend)\n\n-- \u5b9a\u671f\u8f6e\u8bad\u5f0f\nsys.taskInit(function()\n sys.wait(3000)\n while 1 do\n mobile.reqCellInfo(15)\n sys.waitUntil(\"CELL_INFO_UPDATE\", 15000)\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\n end\nend)\n", "prefix": "mobile.getCellInfo"}, "mobile.reqCellInfo": {"body": "mobile.reqCellInfo(${1:timeout})", "description": "mobile.reqCellInfo(timeout) - \u53d1\u8d77\u57fa\u7ad9\u4fe1\u606f\u67e5\u8be2,\u542b\u4e34\u8fd1\u5c0f\u533a\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u79d2,\u9ed8\u8ba415. \u6700\u5c115, \u6700\u9ad860\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003 mobile.getCellInfo \u51fd\u6570\n", "prefix": "mobile.reqCellInfo"}, "mobile.lockCell": {"body": "mobile.lockCell(${1:mode},${2:earfcn},${3:pci})", "description": "mobile.lockCell(mode, earfcn, pci) - \u9501\u5b9a/\u89e3\u9501\u5c0f\u533a\uff0c\u4ec5\u7528\u4e8e\u5916\u573a\u6d4b\u8bd5\uff0c\u6ca1\u63a5\u89e6\u8fc7\u7684\uff0c\u6216\u8005\u751f\u4ea7\u73af\u5883\u4e2d\u8bf7\u52ff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u64cd\u4f5c\u7801 0\u5220\u9664\u4f18\u5148\u7684\u9891\u70b9\uff0c1\u8bbe\u7f6e\u4f18\u5148\u9891\u70b9\uff0c2\u9501\u5b9a\u5c0f\u533a\uff0c3\u89e3\u9501\u5c0f\u533a\nint \u4e0b\u884c\u9891\u70b9\nint phycellid\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529ftrue \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nmobile.lockCell(2,1860,32) --\u9501\u5b9a\u5c0f\u533a\nmobile.lockCell(3) --\u89e3\u9501\u5c0f\u533a\n", "prefix": "mobile.lockCell"}, "mobile.reset": {"body": "mobile.reset()", "description": "mobile.reset() - \u91cd\u542f\u534f\u8bae\u6808\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u91cd\u542fLTE\u534f\u8bae\u6808\nmobile.reset()\n", "prefix": "mobile.reset"}, "mobile.dataTraffic": {"body": "mobile.dataTraffic(${1:clearUplink},${2:clearDownlink})", "description": "mobile.dataTraffic(clearUplink, clearDownlink) - \u6570\u636e\u91cf\u6d41\u91cf\u5904\u7406\n\u4f20\u5165\u503c\uff1a\nboolean \u6e05\u7a7a\u4e0a\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\nboolean \u6e05\u7a7a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nint \u4e0a\u884c\u6d41\u91cfGB\nint \u4e0a\u884c\u6d41\u91cfB\nint \u4e0b\u884c\u6d41\u91cfGB\nint \u4e0b\u884c\u6d41\u91cfB\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\n-- \u4e0a\u884c\u6d41\u91cf\u503cByte = uplinkGB * 1024 * 1024 * 1024 + uplinkB\n-- \u4e0b\u884c\u6d41\u91cf\u503cByte = downlinkGB * 1024 * 1024 * 1024 + downlinkB\nlocal uplinkGB, uplinkB, downlinkGB, downlinkB = mobile.dataTraffic()\n\n-- \u6e05\u7a7a\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\nmobile.dataTraffic(true, true)\n\n-- \u4ec5\u8bb0\u5f55\u5f00\u673a\u540e\u7684\u6d41\u91cf,\u590d\u4f4d/\u91cd\u542f\u4f1a\u5f52\u96f6\n", "prefix": "mobile.dataTraffic"}, "mobile.config": {"body": "mobile.config(${1:item},${2:value})", "description": "mobile.config(item, value) - \u7f51\u7edc\u7279\u6b8a\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f6e\u9879\u76ee\uff0c\u770bmobile.CONF_XXX\nint \u914d\u7f6e\u503c,\u6839\u636e\u5177\u4f53\u914d\u7f6e\u7684item\u51b3\u5b9a\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n--\u9488\u5bf9\u4e0d\u540c\u5e73\u53f0\u6709\u4e0d\u540c\u7684\u914d\u7f6e\uff0c\u8c28\u614e\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u6709EC618/EC718\u7cfb\u5217\n\n-- EC618\u914d\u7f6e\u5c0f\u533a\u91cd\u9009\u4fe1\u53f7\u5dee\u503c\u95e8\u9650\uff0c\u4e0d\u80fd\u5927\u4e8e15dbm\uff0c\u5fc5\u987b\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u624d\u80fd\u7528\nmobile.flymode(0,true)\nmobile.config(mobile.CONF_RESELTOWEAKNCELL, 15)\nmobile.config(mobile.CONF_STATICCONFIG, 1) --\u5f00\u542f\u7f51\u7edc\u9759\u6001\u4f18\u5316\nmobile.flymode(0,false)\n\n-- EC618\u8bbe\u7f6eSIM\u5199\u5165\u6b21\u6570\u7684\u7edf\u8ba1\n-- \u5173\u95ed\u7edf\u8ba1\nmobile.config(mobile.CONF_SIM_WC_MODE, 0)\n-- \u5f00\u542f\u7edf\u8ba1, \u9ed8\u8ba4\u4e5f\u662f\u5f00\u542f\u7684.\nmobile.config(mobile.CONF_SIM_WC_MODE, 1)\n-- \u8bfb\u53d6\u7edf\u8ba1\u503c,\u5f02\u6b65, \u9700\u8981\u901a\u8fc7\u7cfb\u7edf\u6d88\u606fSIM_IND\u83b7\u53d6\nsys.subscribe(\"SIM_IND\", function(stats, value)\n log.info(\"SIM_IND\", stats)\n if stats == \"SIM_WC\" then\n log.info(\"sim\", \"write counter\", value)\n end\nend)\nmobile.config(mobile.CONF_SIM_WC_MODE, 2)\n-- \u6e05\u7a7a\u7edf\u8ba1\u503c\nmobile.config(mobile.CONF_SIM_WC_MODE, 3)\n", "prefix": "mobile.config"}, "mobile.getBand": {"body": "mobile.getBand(${1:band},${2:is_default})", "description": "mobile.getBand(band, is_default) - \u83b7\u53d6\u5f53\u524d\u4f7f\u7528/\u652f\u6301\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u51faband\nboolean true\u9ed8\u8ba4\u652f\u6301\uff0cfalse\u5f53\u524d\u652f\u6301\u7684\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5f53\u524d\u662f\u9884\u7559\u529f\u80fd\uff0c\u4e0d\u8981\u5199true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nmobile.getBand(buff) --\u8f93\u51fa\u5f53\u524d\u4f7f\u7528\u7684band\uff0cband\u53f7\u653e\u5728buff\u5185\uff0cbuff[0]\uff0cbuff[1]\uff0cbuff[2] .. buff[buff:used() - 1]\n", "prefix": "mobile.getBand"}, "mobile.setBand": {"body": "mobile.setBand(${1:band},${2:num})", "description": "mobile.setBand(band, num) - \u8bbe\u7f6e\u4f7f\u7528\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u5165\u4f7f\u7528\u7684band\nint band\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nbuff[0] = 3\nbuff[1] = 5\nbuff[2] = 8\nbuff[3] = 40\nmobile.setBand(buff, 4) --\u8bbe\u7f6e\u4f7f\u7528\u7684band\u4e00\u51714\u4e2a\uff0c\u4e3a3,5,8,40\n", "prefix": "mobile.setBand"}, "mobile.nstOnOff": {"body": "mobile.nstOnOff(${1:onoff},${2:uart_id})", "description": "mobile.nstOnOff(onoff, uart_id) - RF\u6d4b\u8bd5\u5f00\u5173\u548c\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00\u542f\u6d4b\u8bd5\u6a21\u5f0f\uff0cfalse\u5173\u95ed\nint \u4e32\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstOnOff(true, uart.VUART_0) --\u6253\u5f00\u6d4b\u8bd5\u6a21\u5f0f\uff0c\u5e76\u4e14\u7528\u865a\u62df\u4e32\u53e3\u53d1\u9001\u7ed3\u679c\nmobile.nstOnOff(false) --\u5173\u95ed\u6d4b\u8bd5\u6a21\u5f0f\n", "prefix": "mobile.nstOnOff"}, "mobile.nstInput": {"body": "mobile.nstInput(${1:data})", "description": "mobile.nstInput(data) - RF\u6d4b\u8bd5\u6570\u636e\u8f93\u5165\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u7528\u6237\u4ece\u4e32\u53e3\u83b7\u53d6\u7684\u6570\u636e\uff0c\u6ce8\u610f\uff0c\u5f53\u83b7\u53d6\u5b8c\u6240\u6709\u6570\u636e\u540e\uff0c\u9700\u8981\u518d\u4f20\u4e00\u4e2anil\u6765\u4f5c\u4e3a\u4f20\u8f93\u7ed3\u675f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstInput(uart_data)\nmobile.nstInput(nil)\n", "prefix": "mobile.nstInput"}, "mobile.vsimInit": {"body": "mobile.vsimInit()", "description": "mobile.vsimInit() - \u521d\u59cb\u5316\u5185\u7f6e\u9ed8\u8ba4\u865a\u62df\u5361\u529f\u80fd(\u4e0d\u53ef\u7528)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimInit()\n", "prefix": "mobile.vsimInit"}, "mobile.vsimOnOff": {"body": "mobile.vsimOnOff(${1:enable})", "description": "mobile.vsimOnOff(enable) - \u5207\u6362\u5185\u7f6e\u865a\u62df\u5361\u548c\u5916\u7f6e\u5b9e\u4f53\u5361\uff0c2024\u5e748\u670813\u65e5\u542f\u7528\uff0c\u865a\u62df\u5361\u9700\u8981\u56fa\u4ef6\u652f\u6301\uff0c\u5426\u5219\u5207\u6362\u540e\u65e0\u7f51\u7edc\uff0c\u9700\u8981\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u5207\u6362\uff0c\u6216\u8005\u5207\u6362\u540e\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimOnOff(true) --\u4f7f\u7528\u5185\u7f6e\u865a\u62df\u5361\nmobile.vsimOnOff(false) --\u4f7f\u7528\u5916\u7f6e\u5b9e\u4f53\u5361\n", "prefix": "mobile.vsimOnOff"}, "mqttc:subscribe": {"body": "mqttc:subscribe(${1:topic},${2:qos})", "description": "mqttc:subscribe(topic, qos) - \u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\nint topic\u4e3astring\u65f6\u751f\u6548 0/1/2 \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid,\u5f53qos\u4e3a1/2\u65f6\u6709\u6548, \u82e5\u5e95\u5c42\u8fd4\u56de\u5931\u8d25,\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=0\nmqttc:subscribe(\"/luatos/123456\", 0)\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=1\nmqttc:subscribe(\"/luatos/12345678\", 1)\n-- \u8ba2\u9605\u591a\u4e2atopic, \u4e14\u4f7f\u7528\u4e0d\u540c\u7684qos\nmqttc:subscribe({[\"/luatos/1234567\"]=1,[\"/luatos/12345678\"]=2})\n", "prefix": "mqttc:subscribe"}, "mqttc:unsubscribe": {"body": "mqttc:unsubscribe(${1:topic})", "description": "mqttc:unsubscribe(topic) - \u53d6\u6d88\u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\n\u4f8b\u5b50\uff1a\nmqttc:unsubscribe(\"/luatos/123456\")\nmqttc:unsubscribe({\"/luatos/1234567\",\"/luatos/12345678\"})\n", "prefix": "mqttc:unsubscribe"}, "mqttc:debug": {"body": "mqttc:debug(${1:onoff})", "description": "mqttc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mqttc:debug"}, "mqtt.create": {"body": "mqtt.create(${1:adapter},${2:host},${3:port},${4:ssl},${5:isipv6})", "description": "mqtt.create(adapter,host,port,ssl,isipv6) - mqtt\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring \u670d\u52a1\u5668\u5730\u5740,\u53ef\u4ee5\u662f\u57df\u540d, \u4e5f\u53ef\u4ee5\u662fip\nint \u7aef\u53e3\u53f7\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aef\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e
verify \u662f\u5426\u5f3a\u5236\u6821\u9a8c 0\u4e0d\u6821\u9a8c/1\u53ef\u9009\u6821\u9a8c/2\u5f3a\u5236\u6821\u9a8c \u9ed8\u8ba42\nbool/table bool \u662f\u5426\u4e3aipv6\uff0c\u9ed8\u8ba4\u4e0d\u662f table mqtt\u6269\u5c55\u53c2\u6570, ipv6 \u662f\u5426\u4e3aipv6, rxSize \u63a5\u6536\u7f13\u51b2\u533a\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56demqtt\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884)\n-- \u666e\u901aTCP\u94fe\u63a5,mqtt\u63a5\u6536\u7f13\u51b2\u533a4096\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884, nil, {rxSize = 4096})\n-- \u52a0\u5bc6TCP\u94fe\u63a5,\u4e0d\u9a8c\u8bc1\u670d\u52a1\u5668\u8bc1\u4e66\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, true)\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\")})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1, \u4f46\u53ef\u9009\u8ba4\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\"), verify=1})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u53cc\u5411\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {\n server_cert=io.readFile(\"/luadb/ca.crt\"),\n client_cert=io.readFile(\"/luadb/client.pem\"),\n client_key=\"123456\",\n client_password=\"123456\",\n })\n", "prefix": "mqtt.create"}, "mqttc:auth": {"body": "mqttc:auth(${1:client_id},${2:username},${3:password},${4:cleanSession})", "description": "mqttc:auth(client_id,username,password,cleanSession) - mqtt\u4e09\u5143\u7ec4\u914d\u7f6e\u53cacleanSession\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u8bc6\u522bid,\u5bf9\u4e8e\u540c\u4e00\u4e2amqtt\u670d\u52a1\u5668\u6765\u8bf4, \u901a\u5e38\u8981\u6c42\u552f\u4e00,\u76f8\u540cclient_id\u4f1a\u4e92\u76f8\u8e22\u4e0b\u7ebf\nstring \u8d26\u53f7 \u53ef\u9009\nstring \u5bc6\u7801 \u53ef\u9009\nbool \u6e05\u9664session,\u9ed8\u8ba4true,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e0\u8d26\u53f7\u5bc6\u7801\u767b\u5f55,\u4ec5clientId\nmqttc:auth(\"123456789\")\n-- \u5e26\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\nmqttc:auth(\"123456789\",\"username\",\"password\")\n-- \u989d\u5916\u914d\u7f6ecleanSession,\u4e0d\u6e05\u9664\nmqttc:auth(\"123456789\",\"username\",\"password\", false)\n-- \u65e0clientId\u6a21\u5f0f, \u670d\u52a1\u5668\u968f\u673a\u751f\u6210id, cleanSession\u4e0d\u53ef\u914d\u7f6e\nmqttc:auth()\n", "prefix": "mqttc:auth"}, "mqttc:keepalive": {"body": "mqttc:keepalive(${1:time})", "description": "mqttc:keepalive(time) - mqtt\u5fc3\u8df3\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009 \u5355\u4f4ds \u9ed8\u8ba4240s. \u6700\u514815,\u6700\u9ad8600\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:keepalive(30)\n", "prefix": "mqttc:keepalive"}, "mqttc:on": {"body": "mqttc:on(${1:cb})", "description": "mqttc:on(cb) - \u6ce8\u518cmqtt\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb mqtt\u56de\u8c03,\u53c2\u6570\u5305\u62ecmqtt_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:on(function(mqtt_client, event, data, payload, metas)\n -- \u7528\u6237\u81ea\u5b9a\u4e49\u4ee3\u7801\n log.info(\"mqtt\", \"event\", event, mqtt_client, data, payload)\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n conack -- \u670d\u52a1\u5668\u9274\u6743\u5b8c\u6210,mqtt\u8fde\u63a5\u5df2\u7ecf\u5efa\u7acb, \u53ef\u4ee5\u8ba2\u9605\u548c\u53d1\u5e03\u6570\u636e\u4e86,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n recv -- \u63a5\u6536\u5230\u6570\u636e,\u7531\u670d\u52a1\u5668\u4e0b\u53d1, data\u4e3atopic\u503c(string), payload\u4e3a\u4e1a\u52a1\u6570\u636e(string).metas\u662f\u5143\u6570\u636e(table), \u4e00\u822c\u4e0d\u5904\u7406. \n -- metas\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\n -- qos \u53d6\u503c\u8303\u56f40,1,2\n -- retain \u53d6\u503c\u8303\u56f4 0,1\n -- dup \u53d6\u503c\u8303\u56f4 0,1\n sent -- \u53d1\u9001\u5b8c\u6210, qos0\u4f1a\u9a6c\u4e0a\u901a\u77e5, qos1/qos2\u4f1a\u5728\u670d\u52a1\u5668\u5e94\u7b54\u4f1a\u56de\u8c03, data\u4e3a\u6d88\u606fid\n disconnect -- \u670d\u52a1\u5668\u65ad\u5f00\u8fde\u63a5,\u7f51\u7edc\u95ee\u9898\u6216\u670d\u52a1\u5668\u8e22\u4e86\u5ba2\u6237\u7aef,\u4f8b\u5982clientId\u91cd\u590d,\u8d85\u65f6\u672a\u4e0a\u62a5\u4e1a\u52a1\u6570\u636e\n pong -- \u6536\u5230\u670d\u52a1\u5668\u5fc3\u8df3\u5e94\u7b54,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n]]\n", "prefix": "mqttc:on"}, "mqttc:connect": {"body": "mqttc:connect()", "description": "mqttc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nmqttc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65admqtt\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "mqttc:connect"}, "mqttc:disconnect": {"body": "mqttc:disconnect()", "description": "mqttc:disconnect() - \u65ad\u5f00\u670d\u52a1\u5668\u8fde\u63a5(\u4e0d\u4f1a\u91ca\u653e\u8d44\u6e90)\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u65ad\u5f00\u8fde\u63a5\nmqttc:disconnect()\n", "prefix": "mqttc:disconnect"}, "mqttc:autoreconn": {"body": "mqttc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "mqttc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nmqttc:autoreconn(true)\n", "prefix": "mqttc:autoreconn"}, "mqttc:publish": {"body": "mqttc:publish(${1:topic},${2:data},${3:qos},${4:retain})", "description": "mqttc:publish(topic, data, qos, retain) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898,\u5fc5\u586b\nstring \u6d88\u606f,\u5fc5\u586b,\u4f46\u957f\u5ea6\u53ef\u4ee5\u662f0\nint \u6d88\u606f\u7ea7\u522b 0/1 \u9ed8\u8ba40\nint \u662f\u5426\u5b58\u6863, 0/1,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid, \u5f53qos\u4e3a1\u62162\u65f6\u4f1a\u6709\u6548\u503c. \u82e5\u5e95\u5c42\u8fd4\u56de\u662f\u5426, \u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmqttc:publish(\"/luatos/123456\", \"123\")\n", "prefix": "mqttc:publish"}, "mqttc:close": {"body": "mqttc:close()", "description": "mqttc:close() - mqtt\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nmqttc:close()\n", "prefix": "mqttc:close"}, "mqttc:ready": {"body": "mqttc:ready()", "description": "mqttc:ready() - mqtt\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal error = mqttc:ready()\n", "prefix": "mqttc:ready"}, "mqttc:state": {"body": "mqttc:state()", "description": "mqttc:state() - mqtt\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nnumber \u5ba2\u6237\u7aef\u72b6\u6001\n\u4f8b\u5b50\uff1a\nlocal state = mqttc:state()\n-- \u5df2\u77e5\u72b6\u6001:\n-- 0: MQTT_STATE_DISCONNECT\n-- 1: MQTT_STATE_CONNECTING\n-- 2: MQTT_STATE_CONNECTED\n-- 3: MQTT_STATE_READY\n-- 4: MQTT_STATE_ERROR\n", "prefix": "mqttc:state"}, "mqttc:will": {"body": "mqttc:will(${1:topic},${2:payload},${3:qos},${4:retain})", "description": "mqttc:will(topic, payload, qos, retain) - \u8bbe\u7f6e\u9057\u5631\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9057\u5631\u6d88\u606f\u7684topic\nstring \u9057\u5631\u6d88\u606f\u7684payload\nstring \u9057\u5631\u6d88\u606f\u7684qos, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\nstring \u9057\u5631\u6d88\u606f\u7684retain, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8981\u5728connect\u4e4b\u524d\u8c03\u7528\nmqttc:will(\"/xxx/xxx\", \"xxxxxx\")\n", "prefix": "mqttc:will"}, "otp.read": {"body": "otp.read(${1:zone},${2:offset},${3:len})", "description": "otp.read(zone, offset, len) - \u8bfb\u53d6\u6307\u5b9aOTP\u533a\u57df\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nint \u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6, \u5355\u4f4d\u5b57\u8282, \u5fc5\u987b\u662f4\u7684\u500d\u6570, \u4e0d\u80fd\u8d85\u8fc74096\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal otpdata = otp.read(0, 0, 64)\nif otpdata then\n log.info(\"otp\", otpdata:toHex())\nend\n", "prefix": "otp.read"}, "otp.write": {"body": "otp.write(${1:zone},${2:data},${3:offset})", "description": "otp.write(zone, data, offset) - \u5f80\u6307\u5b9aOTP\u533a\u57df\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nstring \u6570\u636e, \u957f\u5ea6\u5fc5\u987b\u662f4\u4e2a\u500d\u6570\nint \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nbooL \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.write"}, "otp.erase": {"body": "otp.erase(${1:zone})", "description": "otp.erase(zone) - \u64e6\u9664\u6307\u5b9aOTP\u533a\u57df\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.erase"}, "otp.lock": {"body": "otp.lock(${1:zone})", "description": "otp.lock(zone) - \u9501\u5b9aOTP\u533a\u57df. \u7279\u522b\u6ce8\u610f!!\u4e00\u65e6\u52a0\u9501\u5373\u65e0\u6cd5\u89e3\u9501,OTP\u53d8\u6210\u53ea\u8bfb!!!\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.lock"}, "pack.unpack": {"body": "pack.unpack(${1:string},${2:format},${3:init})", "description": "pack.unpack( string, format, init) - \u89e3\u5305\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u89e3\u5305\u7684\u5b57\u7b26\u4e32\nstring \u683c\u5f0f\u5316\u7b26\u53f7\nint \u9ed8\u8ba4\u503c\u4e3a1\uff0c\u6807\u8bb0\u89e3\u5305\u5f00\u59cb\u7684\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6807\u8bb0\u7684\u4f4d\u7f6e\nany \u7b2c\u4e00\u4e2a\u89e3\u5305\u7684\u503c, \u6839\u636eformat\u503c,\u53ef\u80fd\u6709N\u4e2a\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal _,a = pack.unpack(x,\">h\") --\u89e3\u5305\u6210short (2\u5b57\u8282)\n", "prefix": "pack.unpack"}, "pack.pack": {"body": "pack.pack(${1:format},${2:val1},${3:val2},${4:val3},${5:valn})", "description": "pack.pack( format, val1, val2, val3, valn ) - \u6253\u5305\u5b57\u7b26\u4e32\u7684\u503c\n\u4f20\u5165\u503c\uff1a\nstring format \u683c\u5f0f\u5316\u7b26\u53f7\nany \u7b2c\u4e00\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2cn\u4e2a\u9700\u6253\u5305\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring \u4e00\u4e2a\u5305\u542b\u6240\u6709\u683c\u5f0f\u5316\u53d8\u91cf\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal data = pack.pack('= 2\u662f, \u6700\u5927\u4f11\u7720\u65f6\u957f\u662f740\u5c0f\u65f6\n", "prefix": "pm.dtimerStart"}, "pm.dtimerStop": {"body": "pm.dtimerStop(${1:id})", "description": "pm.dtimerStop(id) - \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\npm.dtimerStop(0) -- \u5173\u95edid=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerStop"}, "pm.dtimerCheck": {"body": "pm.dtimerCheck(${1:id})", "description": "pm.dtimerCheck(id) - \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,true\u8fd8\u5728\u8fd0\u884c\uff0cfalse\u4e0d\u5728\u8fd0\u884c\nnumber \u5982\u679c\u8fd0\u884c,\u8fd0\u884c\u5269\u4f59\u65f6\u95f4,\u5355\u4f4d\u6beb\u79d2(\u9700bsp\u652f\u6301)\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\npm.dtimerCheck(0) -- \u68c0\u67e5id=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerCheck"}, "dtimerWkId": {"body": "dtimerWkId()", "description": "dtimerWkId() - \u68c0\u67e5\u5b9a\u65f6\u5524\u9192\u662f\u54ea\u4e00\u4e2a\u5b9a\u65f6\u5668\uff0c\u5982\u679c\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\uff0c\u8fd4\u56de-1\n\u8fd4\u56de\u503c\uff1a\nint \u5904\u7406\u7ed3\u679c >=0 \u662f\u672c\u6b21\u5b9a\u65f6\u5524\u9192\u7684\u5b9a\u65f6\u5668ID\uff0c\u5176\u4ed6\u9519\u8bef\uff0c\u8bf4\u660e\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\n\u4f8b\u5b50\uff1a\nlocal timer_id = pm.dtimerWkId()\n", "prefix": "dtimerWkId"}, "pm.lastReson": {"body": "pm.lastReson()", "description": "pm.lastReson() - \u5f00\u673a\u539f\u56e0,\u7528\u4e8e\u5224\u65ad\u662f\u4ece\u4f11\u7720\u6a21\u5757\u5f00\u673a,\u8fd8\u662f\u7535\u6e90/\u590d\u4f4d\u5f00\u673a\n\u8fd4\u56de\u503c\uff1a\nint 0-\u4e0a\u7535/\u590d\u4f4d\u5f00\u673a, 1-RTC\u5f00\u673a, 2-WakeupIn/Pad/IO\u5f00\u673a, 3-\u672a\u77e5\u539f\u56e0(Wakeup/RTC\u7686\u6709\u53ef\u80fd)\u5f00\u673a,\u76ee\u524d\u53ea\u6709air101,air103\u4f1a\u6709\u8fd9\u4e2a\u8fd4\u56de\u503c\nint 0-\u666e\u901a\u5f00\u673a(\u4e0a\u7535/\u590d\u4f4d),3-\u6df1\u7761\u7720\u5f00\u673a,4-\u4f11\u7720\u5f00\u673a\nint \u590d\u4f4d\u5f00\u673a\u8be6\u7ec6\u539f\u56e0\uff1a0-powerkey\u6216\u8005\u4e0a\u7535\u5f00\u673a 1-\u5145\u7535\u6216\u8005AT\u6307\u4ee4\u4e0b\u8f7d\u5b8c\u6210\u540e\u5f00\u673a 2-\u95f9\u949f\u5f00\u673a 3-\u8f6f\u4ef6\u91cd\u542f 4-\u672a\u77e5\u539f\u56e0 5-RESET\u952e 6-\u5f02\u5e38\u91cd\u542f 7-\u5de5\u5177\u63a7\u5236\u91cd\u542f 8-\u5185\u90e8\u770b\u95e8\u72d7\u91cd\u542f 9-\u5916\u90e8\u91cd\u542f 10-\u5145\u7535\u5f00\u673a\n\u4f8b\u5b50\uff1a\n-- \u662f\u54ea\u79cd\u65b9\u5f0f\u5f00\u673a\u5462\nlog.info(\"pm\", \"last power reson\", pm.lastReson())\n", "prefix": "pm.lastReson"}, "pm.force": {"body": "pm.force(${1:mode})", "description": "pm.force(mode) - \u5f3a\u5236\u8fdb\u5165\u6307\u5b9a\u7684\u4f11\u7720\u6a21\u5f0f\uff0c\u5ffd\u7565\u67d0\u4e9b\u5916\u8bbe\u7684\u5f71\u54cd\uff0c\u6bd4\u5982USB\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u82e5\u8fd4\u56de\u6210\u529f,\u5927\u6982\u7387\u4f1a\u9a6c\u4e0a\u8fdb\u5165\u8be5\u4f11\u7720\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\npm.force(pm.HIB)\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n-- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n--pm.power(pm.USB, true)\n", "prefix": "pm.force"}, "pm.check": {"body": "pm.check()", "description": "pm.check() - \u68c0\u67e5\u4f11\u7720\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u5982\u679c\u80fd\u987a\u5229\u8fdb\u5165\u4f11\u7720,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,0\u4ee3\u8868\u80fd\u8fdb\u5165\u6700\u5e95\u5c42\u4f11\u7720,\u5176\u4ed6\u503c\u4ee3\u8868\u6700\u4f4e\u53ef\u4f11\u7720\u7ea7\u522b\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f,\u7136\u540e\u68c0\u67e5\u662f\u5426\u80fd\u771f\u7684\u4f11\u7720\npm.request(pm.HIB)\nif pm.check() then\n log.info(\"pm\", \"it is ok to hib\")\nelse\n -- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n pm.force(pm.HIB) -- \u5f3a\u5236\u4f11\u7720\n -- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n --sys.wait(100)\n --pm.power(pm.USB, true)\nend\n", "prefix": "pm.check"}, "pm.shutdown": {"body": "pm.shutdown()", "description": "pm.shutdown() - \u5173\u673a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5f53\u524d\u652f\u6301\u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\n-- \u9700\u89812022-12-22\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\npm.shutdown()\n", "prefix": "pm.shutdown"}, "pm.reboot": {"body": "pm.reboot()", "description": "pm.reboot() - \u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "pm.reboot"}, "pm.power": {"body": "pm.power(${1:id},${2:onoff})", "description": "pm.power(id, onoff) - \u5f00\u542f\u5185\u90e8\u7684\u7535\u6e90\u63a7\u5236\uff0c\u6ce8\u610f\u4e0d\u662f\u6240\u6709\u7684\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u53ef\u80fd\u90e8\u5206\u5e73\u53f0\u652f\u6301\u90e8\u5206\u9009\u9879\uff0c\u770b\u786c\u4ef6\n\u4f20\u5165\u503c\uff1a\nint \u7535\u6e90\u63a7\u5236id,pm.USB pm.GPS\u4e4b\u7c7b\nboolean or int \u5f00\u5173true/1\u5f00\uff0cfalse/0\u5173\uff0c\u9ed8\u8ba4\u5173\uff0c\u90e8\u5206\u9009\u9879\u652f\u6301\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\u7535\u6e90, \u53cd\u4e4b\u5f00\u542f\u5c31\u662f\u4f20true\npm.power(pm.USB, false) \n\n-- Air780EG,\u4e3a\u5185\u7f6e\u7684GPS\u82af\u7247\u4e0a\u7535. \u6ce8\u610f, Air780EG\u7684GPS\u548cGPS_ANT\u662f\u4e00\u8d77\u63a7\u5236\u7684,\u6240\u4ee5\u5408\u5e76\u4e86.\npm.power(pm.GPS, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u5f00\u542fpwrkey\u5f00\u673a\u9632\u6296\n-- \u6ce8\u610f: \u5f00\u542f\u540e, \u590d\u4f4d\u952e\u5c31\u53d8\u6210\u5173\u673a\u4e86!!! pwrkey\u8981\u957f\u63092\u79d2\u624d\u80fd\u5f00\u673a\n-- pm.power(pm.PWK_MODE, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)PSM+\u4f4e\u529f\u8017\u8bbe\u7f6e\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8282\u80fd\u6a21\u5f0f\uff0c0~3\uff0c0\u5b8c\u5168\u5173\u95ed\uff0c1\u6027\u80fd\u4f18\u5148\uff0c2\u5e73\u8861\uff0c3\u6781\u81f4\u529f\u8017\n-- \u8be6\u60c5\u8bbf\u95ee: https://airpsm.cn\n-- pm.power(pm.WORK_MODE, 1)\n", "prefix": "pm.power"}, "pm.ioVol": {"body": "pm.ioVol(${1:id},${2:val})", "description": "pm.ioVol(id, val) - IO\u9ad8\u7535\u5e73\u7535\u538b\u63a7\u5236\n\u4f20\u5165\u503c\uff1a\nint \u7535\u5e73id,\u76ee\u524d\u53ea\u6709pm.IOVOL_ALL_GPIO\nint \u7535\u5e73\u503c,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8bbe\u7f6eIO\u7535\u5e73, \u8303\u56f4 1650 ~ 2000\uff0c2650~3400 , \u5355\u4f4d\u6beb\u4f0f, \u6b65\u8fdb50mv\n-- \u6ce8\u610f, \u8fd9\u91cc\u7684\u8bbe\u7f6e\u4f18\u5148\u7ea7\u4f1a\u9ad8\u4e8e\u786c\u4ef6IOSEL\u811a\u7684\u914d\u7f6e\n-- \u4f46\u5f00\u673a\u65f6\u4f9d\u7136\u5148\u4f7f\u7528\u786c\u4ef6\u914d\u7f6e,\u76f4\u81f3\u8c03\u7528\u672cAPI\u8fdb\u884c\u914d\u7f6e, \u6240\u4ee5io\u7535\u5e73\u4f1a\u53d8\u5316\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa3.3V\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa1.8V\n", "prefix": "pm.ioVol"}, "pm.wakeupPin": {"body": "pm.wakeupPin(${1:pin},${2:level})", "description": "pm.wakeupPin(pin,level) - \u914d\u7f6e\u5524\u9192\u5f15\u811a (\u5f53\u524d\u4ec5\u4ec5esp\u7cfb\u5217\u53ef\u7528)\n\u4f20\u5165\u503c\uff1a\nint/table gpio\u5f15\u811a\nint \u5524\u9192\u7535\u538b \u53ef\u9009,\u9ed8\u8ba4\u4f4e\u7535\u5e73\u5524\u9192\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\npm.wakeupPin(8,0)\n", "prefix": "pm.wakeupPin"}, "protobuf.load": {"body": "protobuf.load(${1:pbdata})", "description": "protobuf.load(pbdata) - \u52a0\u8f7dpb\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u901a\u8fc7protoc.exe\u7a0b\u5e8f\u8f6c\u6362\u5f97\u5230\u7684\u6570\u636e,\u901a\u5e38\u4ece\u6587\u4ef6\u8bfb\u53d6\u5f97\u5230\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u8bfb\u53d6\u4e86\u591a\u957f, \u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u540c\u4e00\u4e2a\u6587\u4ef6\u53ea\u9700\u8981\u52a0\u8f7d\u4e00\u6b21, \u9664\u975e\u8c03\u7528\u8fc7protobuf.clear()\nprotobuf.load(io.readFile(\"/luadb/person.pb\"))\n", "prefix": "protobuf.load"}, "protobuf.clear": {"body": "protobuf.clear()", "description": "protobuf.clear() - \u6e05\u9664\u5df2\u52a0\u8f7d\u7684\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c, \u603b\u662f\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u6e05\u9664\u6240\u6709\u5df2\u52a0\u8f7d\u7684\u5b9a\u4e49\u6570\u636e\nprotobuf.clear()\n", "prefix": "protobuf.clear"}, "protobuf.encode": {"body": "protobuf.encode(${1:tpname},${2:data})", "description": "protobuf.encode(tpname, data) - \u7f16\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\ntable \u5f85\u7f16\u7801\u6570\u636e, \u5fc5\u987b\u662ftable, \u5185\u5bb9\u7b26\u5408pb\u6587\u4ef6\u91cc\u7684\u5b9a\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.encode"}, "protobuf.decode": {"body": "protobuf.decode(${1:tpname},${2:data})", "description": "protobuf.decode(tpname, data) - \u89e3\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\nstring \u5f85\u7f16\u7801\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\ntable \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.decode"}, "pwm.open": {"body": "pwm.open(${1:channel},${2:period},${3:pulse},${4:pnum},${5:precision})", "description": "pwm.open(channel, period, pulse, pnum, precision) - \u5f00\u542f\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u9891\u7387, 1-1000000hz\nint \u5360\u7a7a\u6bd4 0-\u5206\u9891\u7cbe\u5ea6\nint \u8f93\u51fa\u5468\u671f 0\u4e3a\u6301\u7eed\u8f93\u51fa, 1\u4e3a\u5355\u6b21\u8f93\u51fa, \u5176\u4ed6\u4e3a\u6307\u5b9a\u8109\u51b2\u6570\u8f93\u51fa\nint \u5206\u9891\u7cbe\u5ea6, 100/256/1000, \u9ed8\u8ba4\u4e3a100, \u82e5\u8bbe\u5907\u4e0d\u652f\u6301\u4f1a\u6709\u65e5\u5fd7\u63d0\u793a\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00PWM5, \u9891\u73871kHz, \u5360\u7a7a\u6bd450%\npwm.open(5, 1000, 50)\n-- \u6253\u5f00PWM5, \u9891\u738710kHz, \u5206\u9891\u4e3a 31/256\npwm.open(5, 10000, 31, 0, 256)\n", "prefix": "pwm.open"}, "pwm.close": {"body": "pwm.close(${1:channel})", "description": "pwm.close(channel) - \u5173\u95ed\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edPWM5\npwm.close(5)\n", "prefix": "pwm.close"}, "pwm.capture": {"body": "pwm.capture(${1:channel})", "description": "pwm.capture(channel) - PWM\u6355\u83b7\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u6355\u83b7\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- PWM0\u6355\u83b7\nwhile 1 do\n pwm.capture(0,1000)\n local ret,channel,pulse,pwmH,pwmL = sys.waitUntil(\"PWM_CAPTURE\", 2000)\n if ret then\n log.info(\"PWM_CAPTURE\",\"channel\"..channel,\"pulse\"..pulse,\"pwmH\"..pwmH,\"pwmL\"..pwmL)\n end\nend\n", "prefix": "pwm.capture"}, "repl.enable": {"body": "repl.enable(${1:re})", "description": "repl.enable(re) - \u542f\u7528\u6216\u7981\u7528REPL\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u542f\u7528\u4e0e\u5426,\u9ed8\u8ba4\u662f\u542f\u7528\nreturn \u4e4b\u524d\u7684\u8bbe\u7f6e\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u82e5\u56fa\u4ef6\u652f\u6301REPL,\u5373\u7f16\u8bd1\u65f6\u542f\u7528\u4e86REPL,\u662f\u9ed8\u8ba4\u542f\u7528REPL\u529f\u80fd\u7684\n-- \u672c\u51fd\u6570\u662f\u63d0\u4f9b\u5173\u95edREPL\u7684\u9014\u5f84\nrepl.enable(false)\n", "prefix": "repl.enable"}, "repl.push": {"body": "repl.push(${1:data})", "description": "repl.push(data) - \u4e3b\u52a8\u63a8\u9001\u5f85\u5904\u7406\u7684\u6570\u636e\u5230\u5e95\u5c42\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u5904\u7406\u7684\u6570\u636e,\u901a\u5e38\u4ece\u4e32\u53e3\u6765\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u865a\u62df\u4e32\u53e3\u7684\u8bbe\u5907\u624d\u9700\u8981\u8fd9\u4e2a\u51fd\u6570\n", "prefix": "repl.push"}, "rsa.encrypt": {"body": "rsa.encrypt(${1:key},${2:data})", "description": "rsa.encrypt(key, data) - RSA\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u52a0\u5bc6\u6570\u636e, \u4e0d\u80fd\u8d85\u8fc7\u516c\u94a5\u4f4d\u6570\u7684\u4e00\u534a, \u4f8b\u5982 2048bit\u7684\u516c\u94a5, \u53ea\u80fd\u52a0\u5bc6128\u5b57\u8282\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u4e0b\u9762\u4ee3\u7801\u4e2d\u7684 \"abc\" \u662f\u5f85\u52a0\u5bc6\u6570\u636e\nlocal res = rsa.encrypt((io.readFile(\"/luadb/public.pem\")), \"abc\")\n-- \u6253\u5370\u7ed3\u679c\nlog.info(\"rsa\", \"encrypt\", res and #res or 0, res and res:toHex() or \"\")\n", "prefix": "rsa.encrypt"}, "rsa.decrypt": {"body": "rsa.decrypt(${1:key},${2:data},${3:pwd})", "description": "rsa.decrypt(key, data, pwd) - RSA\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u89e3\u5bc6\u6570\u636e\nstring \u79c1\u94a5\u7684\u5bc6\u7801,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u89e3\u5bc6\u901a\u5e38\u5f88\u6162, \u5efa\u8bae\u5728\u670d\u52a1\u5668\u7aef\u8fdb\u884c\n-- res \u662f\u5f85\u89e3\u5bc6\u7684\u6570\u636e\nlocal dst = rsa.decrypt((io.readFile(\"/luadb/privkey.pem\")), res, \"\")\nlog.info(\"rsa\", \"decrypt\", dst and #dst or 0, dst and dst:toHex() or \"\")\n", "prefix": "rsa.decrypt"}, "rsa.verify": {"body": "rsa.verify(${1:key},${2:md},${3:hash},${4:sig})", "description": "rsa.verify(key, md, hash, sig) - RSA\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring sig\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u6709\u6548\u8fd4\u56detrue,\u5426\u5219\u4e3afalse,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal ret = rsa.verify((io.readFile(\"/luadb/public.pem\")), rsa.MD_SHA1, hash, sig)\nlog.info(\"rsa\", \"verify\", ret)\n", "prefix": "rsa.verify"}, "rsa.sign": {"body": "rsa.sign(${1:key},${2:md},${3:hash},${4:pwd})", "description": "rsa.sign(key, md, hash, pwd) - RSA\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring \u79c1\u94a5\u5bc6\u7801, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56desig\u6570\u636e, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sig = rsa.sign((io.readFile(\"/luadb/privkey.pem\")), rsa.MD_SHA1, hash, \"\")\nlog.info(\"rsa\", \"sign\", sig and #sig or 0, sig and sig:toHex() or \"\")\n", "prefix": "rsa.sign"}, "rtc.set": {"body": "rtc.set(${1:tab})", "description": "rtc.set(tab) - \u8bbe\u7f6e\u65f6\u949f\n\u4f20\u5165\u503c\uff1a\ntable or int \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.set({year=2021,mon=8,day=31,hour=17,min=8,sec=43})\n--\u76ee\u524d\u53ea\u6709Air101/Air103/Air105/EC618\u7cfb\u5217\u652f\u6301\u65f6\u95f4\u6233\u65b9\u5f0f\nrtc.set(1652230554)\n", "prefix": "rtc.set"}, "rtc.get": {"body": "rtc.get()", "description": "rtc.get() - \u83b7\u53d6\u65f6\u949f\n\u8fd4\u56de\u503c\uff1a\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u4f8b\u5b50\uff1a\nlocal t = rtc.get()\n-- {year=2021,mon=8,day=31,hour=17,min=8,sec=43}\nlog.info(\"rtc\", json.encode(t))\n", "prefix": "rtc.get"}, "rtc.timerStart": {"body": "rtc.timerStart(${1:id},${2:tab})", "description": "rtc.timerStart(id, tab) - \u8bbe\u7f6eRTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\n-- \u76ee\u524d\u8be5\u63a5\u53e3\u4e0d\u9002\u7528\u4e8e\u79fb\u82af\u6a21\u5757780E/700E/780EP\u7cfb\u5217\uff0c\u9700\u8981\u5b9a\u65f6\u5524\u9192\u53ef\u4f7f\u7528pm.dtimerStart()\n-- \u4f7f\u7528\u524d\u5efa\u8bae\u5148rtc.set\u8bbe\u7f6e\u4e3a\u6b63\u786e\u7684\u65f6\u95f4\nrtc.timerStart(0, {year=2021,mon=9,day=1,hour=17,min=8,sec=43})\n", "prefix": "rtc.timerStart"}, "rtc.timerStop": {"body": "rtc.timerStop(${1:id})", "description": "rtc.timerStop(id) - \u53d6\u6d88RTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.timerStop(0)\n", "prefix": "rtc.timerStop"}, "rtc.setBaseYear": {"body": "rtc.setBaseYear(${1:Base_year})", "description": "rtc.setBaseYear(Base_year) - \u8bbe\u7f6eRTC\u57fa\u51c6\u5e74,\u4e0d\u63a8\u8350\n\u4f20\u5165\u503c\uff1a\nint \u57fa\u51c6\u5e74Base_year,\u901a\u5e381900\n\u4f8b\u5b50\uff1a\nrtc.setBaseYear(1900)\n", "prefix": "rtc.setBaseYear"}, "rtc.timezone": {"body": "rtc.timezone(${1:tz})", "description": "rtc.timezone(tz) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u65f6\u533a\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u533a\u503c,\u6ce8\u610f\u5355\u4f4d\u662f1/4\u65f6\u533a.\u4f8b\u5982\u4e1c\u516b\u533a\u662f 32,\u800c\u975e8. \u53ef\u4ee5\u4e0d\u4f20\nreturn \u5f53\u524d/\u8bbe\u7f6e\u540e\u7684\u65f6\u533a\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e1c8\u533a\nrtc.timezone(32)\n-- \u8bbe\u7f6e\u4e3a\u4e1c3\u533a\nrtc.timezone(12)\n-- \u8bbe\u7f6e\u4e3a\u897f4\u533a\nrtc.timezone(-16)\n-- \u6ce8\u610f: \u65e0\u8bba\u8bbe\u7f6e\u65f6\u533a\u662f\u591a\u5c11, rtc.get/set\u603b\u662fUTC\u65f6\u95f4\n-- \u65f6\u533a\u5f71\u54cd\u7684\u662f os.date/os.time \u51fd\u6570\n-- \u53ea\u6709\u90e8\u5206\u6a21\u5757\u652f\u6301\u8bbe\u7f6e\u65f6\u533a, \u4e14\u9ed8\u8ba4\u503c\u4e00\u822c\u4e3a32, \u5373\u4e1c\u516b\u533a\n", "prefix": "rtc.timezone"}, "rtos.receive": {"body": "rtos.receive(${1:timeout})", "description": "rtos.receive(timeout) - \u63a5\u53d7\u5e76\u5904\u7406\u5e95\u5c42\u6d88\u606f\u961f\u5217.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u901a\u5e38\u662f-1,\u6c38\u4e45\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\nmsgid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n", "prefix": "rtos.receive"}, "rtos.timer_start": {"body": "rtos.timer_start(${1:id},${2:timeout},${3:_repeat})", "description": "rtos.timer_start(id,timeout,_repeat) - \u542f\u52a8\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528 sys.timerStart\n-- \u542f\u52a8\u4e00\u4e2a3\u79d2\u7684\u5faa\u73af\u5b9a\u65f6\u5668\nrtos.timer_start(10000, 3000, -1)\n", "prefix": "rtos.timer_start"}, "rtos.timer_stop": {"body": "rtos.timer_stop(${1:id})", "description": "rtos.timer_stop(id) - \u5173\u95ed\u5e76\u91ca\u653e\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528sys.timerStop\nrtos.timer_stop(id)\n", "prefix": "rtos.timer_stop"}, "rtos.reboot": {"body": "rtos.reboot()", "description": "rtos.reboot() - \u8bbe\u5907\u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "rtos.reboot"}, "rtos.buildDate": {"body": "rtos.buildDate()", "description": "rtos.buildDate() - \u83b7\u53d6\u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u7f16\u8bd1\u65e5\u671f\nlocal d = rtos.buildDate()\n", "prefix": "rtos.buildDate"}, "rtos.bsp": {"body": "rtos.bsp()", "description": "rtos.bsp() - \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u786c\u4ef6bsp\u578b\u53f7\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\nlocal bsp = rtos.bsp()\n", "prefix": "rtos.bsp"}, "rtos.version": {"body": "rtos.version()", "description": "rtos.version() - \u83b7\u53d6\u56fa\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7248\u672c\u53f7,\u4f8b\u5982\"V0001\"\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u7248\u672c\u53f7\nlocal luatos_version = rtos.version()\n", "prefix": "rtos.version"}, "rtos.standy": {"body": "rtos.standy(${1:timeout})", "description": "rtos.standy(timeout) - \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f, \u4ec5\u90e8\u5206\u8bbe\u5907\u53ef\u7528, \u672cAPI\u5df2\u5e9f\u5f03, \u63a8\u8350\u4f7f\u7528pm\u5e93\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f\nrtos.standby(5000)\n", "prefix": "rtos.standy"}, "rtos.meminfo": {"body": "rtos.meminfo(${1:type})", "description": "rtos.meminfo(type) - \u83b7\u53d6\u5185\u5b58\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\ntype \"sys\"\u7cfb\u7edf\u5185\u5b58, \"lua\"\u865a\u62df\u673a\u5185\u5b58,\"psram\"psram\u5185\u5b58, \u9ed8\u8ba4\u4e3alua\u865a\u62df\u673a\u5185\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u603b\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5f53\u524d\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5386\u53f2\u6700\u9ad8\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5185\u5b58\u5360\u7528\nlog.info(\"mem.lua\", rtos.meminfo())\nlog.info(\"mem.sys\", rtos.meminfo(\"sys\"))\n", "prefix": "rtos.meminfo"}, "rtos.firmware": {"body": "rtos.firmware()", "description": "rtos.firmware() - \u8fd4\u56de\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f,\u683c\u5f0f\u4e3a LuatOS_$VERSION_$BSP,\u53ef\u7528\u4e8eOTA\u5347\u7ea7\u5224\u65ad\u5e95\u5c42\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nstring \u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\nlog.info(\"firmware\", rtos.firmware())\n", "prefix": "rtos.firmware"}, "rtos.setPaths": {"body": "rtos.setPaths(${1:pathA},${2:pathB},${3:pathC},${4:pathD})", "description": "rtos.setPaths(pathA, pathB, pathC, pathD) - \u8bbe\u7f6e\u81ea\u5b9a\u4e49lua\u811a\u672c\u641c\u7d22\u8def\u5f84,\u4f18\u5148\u7ea7\u9ad8\u4e8e\u5185\u7f6e\u8def\u5f84\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84A, \u4f8b\u5982 \"/sdcard/%s.luac\",\u82e5\u4e0d\u4f20\u503c,\u5c06\u9ed8\u8ba4\u4e3a\"\",\u53e6\u5916,\u6700\u5927\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc723\u5b57\u8282\nstring \u8def\u5f84B, \u4f8b\u5982 \"/sdcard/%s.lua\"\nstring \u8def\u5f84C, \u4f8b\u5982 \"/lfs2/%s.luac\"\nstring \u8def\u5f84D, \u4f8b\u5982 \"/lfs2/%s.lua\"\n\u4f8b\u5b50\uff1a\n-- \u6302\u8f7dsd\u5361\u6216\u8005spiflash\u540e\nrtos.setPaths(\"/sdcard/user/%s.luac\", \"/sdcard/user/%s.lua\")\nrequire(\"sd_user_main\") -- \u5c06\u641c\u7d22\u5e76\u52a0\u8f7d /sdcard/user/sd_user_main.luac \u548c /sdcard/user/sd_user_main.lua\n", "prefix": "rtos.setPaths"}, "rtos.nop": {"body": "rtos.nop()", "description": "rtos.nop() - \u7a7a\u51fd\u6570,\u4ec0\u4e48\u90fd\u4e0d\u505a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fd9\u4e2a\u51fd\u6570\u5355\u7eaf\u5c31\u662f lua -> c -> lua \u8d70\u4e00\u904d\n-- \u6ca1\u6709\u53c2\u6570,\u6ca1\u6709\u8fd4\u56de\u503c,\u6ca1\u6709\u903b\u8f91\u5904\u7406\n-- \u5728\u7edd\u5927\u591a\u6570\u60c5\u51b5\u4e0b,\u4e0d\u4f1a\u9047\u5230\u8fd9\u4e2a\u51fd\u6570\u7684\u8c03\u7528\n-- \u5b83\u901a\u5e38\u53ea\u4f1a\u51fa\u73b0\u5728\u6027\u80fd\u6d4b\u8bd5\u7684\u4ee3\u7801\u91cc, \u56e0\u4e3a\u5b83\u4ec0\u4e48\u90fd\u4e0d\u5e72.\nrtos.nop()\n", "prefix": "rtos.nop"}, "rtos.autoCollectMem": {"body": "rtos.autoCollectMem(${1:period},${2:warning_level},${3:force_level})", "description": "rtos.autoCollectMem(period, warning_level, force_level) - \u5185\u5b58\u81ea\u52a8\u6536\u96c6\u914d\u7f6e\uff0c\u662flua\u672c\u8eab\u6536\u96c6\u673a\u5236\u7684\u4e00\u79cd\u8865\u5145\uff0c\u4e0d\u662f\u5fc5\u8981\u7684\uff0c\u800c\u4e14\u53ea\u5728luavm\u7a7a\u95f2\u65f6\u89e6\u53d1\n\u4f20\u5165\u503c\uff1a\nint \u81ea\u52a8\u6536\u96c6\u7684\u5468\u671f\uff0c\u7b49\u540c\u4e8ereceive\u8c03\u7528\u6b21\u6570\uff0c0~60000\u3002\u5982\u679c\u662f0\uff0c\u5219\u5173\u95ed\u81ea\u52a8\u6536\u96c6\u529f\u80fd\uff0c\u9ed8\u8ba4\u662f100\nint \u5185\u5b58\u4f7f\u7528\u8b66\u6212\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u8b66\u6212\u7ebf\u65f6\u624d\u4f1a\u5f00\u59cb\u5224\u65ad\u662f\u5426\u8981\u6536\u96c6\u3002\u9ed8\u8ba4\u662f80\nint \u5185\u5b58\u4f7f\u7528\u5f3a\u5236\u6536\u96c6\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u5f3a\u5236\u6536\u96c6\u7ebf\u65f6\u4f1a\u5f3a\u5236\u6536\u96c6\u3002\u9ed8\u8ba4\u662f90\uff0c\u5fc5\u987b\u6bd4\u8b66\u6212\u6c34\u4f4d\u7ebf\u5927\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nrtos.autoCollectMem(100, 80, 90)\n", "prefix": "rtos.autoCollectMem"}, "sdio.init": {"body": "sdio.init(${1:id})", "description": "sdio.init(id) - \u521d\u59cb\u5316sdio\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n", "prefix": "sdio.init"}, "sdio.sd_read": {"body": "sdio.sd_read(${1:id},${2:offset},${3:len})", "description": "sdio.sd_read(id, offset, len) - \u76f4\u63a5\u8bfb\u5199sd\u5361\u4e0a\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u957f\u5ea6,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_read(0, 0, 1024)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_read"}, "sdio.sd_write": {"body": "sdio.sd_write(${1:id},${2:data},${3:offset})", "description": "sdio.sd_write(id, data, offset) - \u76f4\u63a5\u5199sd\u5361\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nstring \u5f85\u5199\u5165\u7684\u6570\u636e,\u957f\u5ea6\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_write(0, data, 0)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_write"}, "sensor.ds18b20": {"body": "sensor.ds18b20(${1:pin},${2:check_crc})", "description": "sensor.ds18b20(pin, check_crc) - \u83b7\u53d6DS18B20\u7684\u6e29\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u7801\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(5000)\n local val,result = sensor.ds18b20(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n -- val 301 == 30.1\u6444\u6c0f\u5ea6\n -- result true \u8bfb\u53d6\u6210\u529f\n log.info(\"ds18b20\", val, result)\nend\n", "prefix": "sensor.ds18b20"}, "sensor.w1_reset": {"body": "sensor.w1_reset(${1:pin})", "description": "sensor.w1_reset(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u590d\u4f4d\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\n", "prefix": "sensor.w1_reset"}, "sensor.w1_connect": {"body": "sensor.w1_connect(${1:pin})", "description": "sensor.w1_connect(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u8fde\u63a5\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n", "prefix": "sensor.w1_connect"}, "sensor.w1_write": {"body": "sensor.w1_write(${1:pin},${2:data1},${3:data2})", "description": "sensor.w1_write(pin, data1,data2) - \u5355\u603b\u7ebf\u534f\u8bae,\u5f80\u603b\u7ebf\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u7b2c\u4e00\u4e2a\u6570\u636e\nint \u7b2c\u4e8c\u4e2a\u6570\u636e, \u53ef\u4ee5\u5199N\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "sensor.w1_write"}, "sensor.w1_read": {"body": "sensor.w1_read(${1:pin},${2:len})", "description": "sensor.w1_read(pin, len) - \u5355\u603b\u7ebf\u534f\u8bae,\u4ece\u603b\u7ebf\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u8bfb\u53d6\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u6309\u8bfb\u53d6\u7684\u957f\u5ea6\u8fd4\u56deN\u4e2a\u6574\u6570\n", "prefix": "sensor.w1_read"}, "sensor.hx711": {"body": "sensor.hx711(${1:pin_date},${2:pin_clk})", "description": "sensor.hx711(pin_date,pin_clk) - \u83b7\u53d6Hx711\u7684\u538b\u529b\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint hx711\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local maopi = sensor.hx711(0,7)\n while true do\n sys.wait(2000)\n a = sensor.hx711(0,7) - maopi\n if a > 0 then\n log.info(\"tag\", a / 4.6)\n end\n end\n end\n)\n", "prefix": "sensor.hx711"}, "sensor.cs1237": {"body": "sensor.cs1237(${1:pin_date},${2:pin_clk})", "description": "sensor.cs1237(pin_date,pin_clk) - \u83b7\u53d6cs1237\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint cs1237\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local cs1237_data = sensor.cs1237(0,7)\n while true do\n sys.wait(2000)\n cs1237_data = sensor.cs1237(0,7) - maopi\n log.info(\"cs1237_data:\", cs1237_data)--\u5f97\u5230\u539f\u59cb\u6570\u636e\n end\n end\n)\n", "prefix": "sensor.cs1237"}, "sensor.ws2812b": {"body": "sensor.ws2812b(${1:pin},${2:data},${3:T0H},${4:T0L},${5:T1H},${6:T1L})", "description": "sensor.ws2812b(pin,data,T0H,T0L,T1H,T1L) - \u8bbe\u7f6ews2812b\u8f93\u51fa(gpio\u9a71\u52a8\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint ws2812b\u7684gpio\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\nint T0H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\uff0c\u6bcf\u4e2a\u578b\u53f7\u4e0d\u4e00\u6837\uff0c\u81ea\u5df1\u8c03\nint T0L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:drawLine(1,2,5,6,0x00ffff)\nsensor.ws2812b(7,buff,300,700,700,700)\n", "prefix": "sensor.ws2812b"}, "sensor.ws2812b_pwm": {"body": "sensor.ws2812b_pwm(${1:pin},${2:data})", "description": "sensor.ws2812b_pwm(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(pwm\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981pwm\u80fd\u8f93\u51fa800k\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint pwm\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_pwm(7,buff)\n", "prefix": "sensor.ws2812b_pwm"}, "sensor.ws2812b_spi": {"body": "sensor.ws2812b_spi(${1:pin},${2:data})", "description": "sensor.ws2812b_spi(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(spi\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981spi\u80fd\u8f93\u51fa5M\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint spi\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_spi(2,buff)\n", "prefix": "sensor.ws2812b_spi"}, "sensor.dht1x": {"body": "sensor.dht1x(${1:pin})", "description": "sensor.dht1x(pin) - \u83b7\u53d6DHT11/DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e7f\u5ea6\u6570\u636e,\u5355\u4f4d0.01%\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.01\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local h,t,r = sensor.dht1x(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n log.info(\"dht11\", h/100,t/100,r)--90.1 23.22\nend\n", "prefix": "sensor.dht1x"}, "sensor.sc12a": {"body": "sensor.sc12a(${1:sda},${2:scl})", "description": "sensor.sc12a(sda,scl) - \u83b7\u53d6sc12a\u88ab\u89e6\u6478\u7684\u901a\u9053\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u6574\u5f62\u6570\u636e\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\n\u4f8b\u5b50\uff1a\nwhile true do\n local temp1=sensor.sc12a(4,7)\n if bit.rshift(bit.band( temp1, 0x8000), 15 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90530\")\n end\n if bit.rshift(bit.band( temp1, 0x4000), 14 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90531\")\n end\n if bit.rshift(bit.band( temp1, 0x2000), 13 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90532\")\n end\n if bit.rshift(bit.band( temp1, 0x1000), 12 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90533\")\n end\n if bit.rshift(bit.band( temp1, 0x800), 11 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90534\")\n end\n if bit.rshift(bit.band( temp1, 0x400), 10 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90535\")\n end\n if bit.rshift(bit.band( temp1, 0x200), 9 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90536\")\n end\n if bit.rshift(bit.band( temp1, 0x100), 8 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90537\")\n end\n if bit.rshift(bit.band( temp1, 0x80), 7 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90538\")\n end\n if bit.rshift(bit.band( temp1, 0x40), 6 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90539\")\n end\n if bit.rshift(bit.band( temp1, 0x20), 5 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905310\")\n end\n if bit.rshift(bit.band( temp1, 0x10), 4 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905311\")\n end\n sys.wait(200)\nend\n", "prefix": "sensor.sc12a"}, "sensor.yhm27xxx": {"body": "sensor.yhm27xxx(${1:pin},${2:chip_id},${3:reg},${4:data})", "description": "sensor.yhm27xxx(pin, chip_id, reg, data) - \u5355\u603b\u7ebf\u547d\u4ee4\u8bfb\u5199YHM27XX\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u82af\u7247ID\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u8981\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u6ca1\u586b\uff0c\u5219\u8868\u793a\u4ece\u5bc4\u5b58\u5668\u8bfb\u53d6\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5bc4\u5b58\u5668\u503c\uff0c\u5199\u5165\u6210\u529f\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local result, data = sensor.yhm27xxx(15, 0x04, 0x05)\n log.info(\"yhm27xxx\", result, data)\nend\n", "prefix": "sensor.yhm27xxx"}, "sfd.init": {"body": "sfd.init(${1:type},${2:spi_id},${3:spi_cs})", "description": "sfd.init(type, spi_id, spi_cs) - \u521d\u59cb\u5316spi flash\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u53ef\u4ee5\u662f\"spi\", \u4e5f\u53ef\u4ee5\u662f\"zbuff\", \u6216\u8005\"onchip\"\nint SPI\u603b\u7ebf\u7684id, \u6216\u8005 zbuff\u5b9e\u4f8b\nint SPI FLASH\u7684\u7247\u9009\u811a\u5bf9\u5e94\u7684GPIO, \u5f53\u7c7b\u578b\u662fspi\u65f6\u624d\u9700\u8981\u4f20\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv):toHex())\nend\n-- 2023.01.15\u4e4b\u540e\u7684\u56fa\u4ef6\u652f\u6301onchip\u7c7b\u578b, \u652f\u6301\u76f4\u63a5\u8bfb\u5199\u7247\u4e0aflash\u7684\u4e00\u5c0f\u5757\u533a\u57df,\u4e00\u822c\u662f64k\n-- \u8fd9\u5757\u533a\u57df\u901a\u5e38\u662ffdb/fskv\u5e93\u6240\u5728\u7684\u533a\u57df, \u6240\u4ee5\u4e0d\u8981\u6df7\u7740\u7528\nlocal onchip = sfd.init(\"onchip\")\nlocal data = sfd.read(onchip, 0x100, 256)\nsfd.erase(onchip, 0x100)\nsfd.write(onchip, 0x100, data or \"Hi\")\n\n", "prefix": "sfd.init"}, "sfd.status": {"body": "sfd.status(${1:drv})", "description": "sfd.status(drv) - \u68c0\u67e5spi flash\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u503c, 0 \u672a\u521d\u59cb\u5316\u6210\u529f,1\u521d\u59cb\u5316\u6210\u529f\u4e14\u7a7a\u95f2,2\u6b63\u5fd9\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"status\", sfd.status(drv))\nend\n", "prefix": "sfd.status"}, "sfd.read": {"body": "sfd.read(${1:drv},${2:offset},${3:len})", "description": "sfd.read(drv, offset, len) - \u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6,\u5f53\u524d\u9650\u5236\u5728256\u4ee5\u5185\n\u8fd4\u56de\u503c\uff1a\nstring \u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"read\", sfd.read(drv, 0x100, 256))\nend\n", "prefix": "sfd.read"}, "sfd.write": {"body": "sfd.write(${1:drv},${2:offset},${3:data})", "description": "sfd.write(drv, offset, data) - \u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nstring \u9700\u8981\u5199\u5165\u7684\u6570\u636e,\u5f53\u524d\u652f\u6301256\u5b57\u8282\u53ca\u4ee5\u4e0b\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.write(drv, 0x100, \"hi,luatos\"))\nend\n", "prefix": "sfd.write"}, "sfd.erase": {"body": "sfd.erase(${1:drv},${2:offset})", "description": "sfd.erase(drv, offset) - \u64e6\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.erase(drv, 0x100))\nend\n", "prefix": "sfd.erase"}, "sfd.id": {"body": "sfd.id(${1:drv})", "description": "sfd.id(drv) - \u82af\u7247\u552f\u4e00id\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nstring 8\u5b57\u8282(64bit)\u7684\u82af\u7247id\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv))\nend\n", "prefix": "sfd.id"}, "sfud.init": {"body": "sfud.init(${1:spi_id},${2:spi_cs},${3:spi_bandrate)/sfud.init(spi_device})", "description": "sfud.init(spi_id, spi_cs, spi_bandrate)/sfud.init(spi_device) - \u521d\u59cb\u5316sfud\n\u4f20\u5165\u503c\uff1a\nint spi_id SPI\u7684ID/userdata spi_device\nint spi_cs SPI\u7684\u7247\u9009\nint spi_bandrate SPI\u7684\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--spi\nlog.info(\"sfud.init\",sfud.init(0,20,20 * 1000 * 1000))\n--spi_device\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"sfud.init\",sfud.init(spi_device))\n", "prefix": "sfud.init"}, "sfud.getDeviceNum": {"body": "sfud.getDeviceNum()", "description": "sfud.getDeviceNum() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\u4e2d\u7684\u8bbe\u5907\u603b\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bbe\u5907\u603b\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getDeviceNum\",sfud.getDeviceNum())\n", "prefix": "sfud.getDeviceNum"}, "sfud.getDevice": {"body": "sfud.getDevice(${1:index})", "description": "sfud.getDevice(index) - \u901a\u8fc7flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\u83b7\u53d6flash\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint index flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDevice(1)\n", "prefix": "sfud.getDevice"}, "sfud.getDeviceTable": {"body": "sfud.getDeviceTable()", "description": "sfud.getDeviceTable() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDeviceTable()\n", "prefix": "sfud.getDeviceTable"}, "sfud.chipErase": {"body": "sfud.chipErase(${1:flash})", "description": "sfud.chipErase(flash) - \u64e6\u9664 Flash \u5168\u90e8\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.chipErase(flash)\n", "prefix": "sfud.chipErase"}, "sfud.erase": {"body": "sfud.erase(${1:flash},${2:add},${3:size})", "description": "sfud.erase(flash,add,size) - \u64e6\u9664 Flash \u6307\u5b9a\u5730\u5740\u6307\u5b9a\u5927\u5c0f\uff0c\u6309\u7167flash block\u5927\u5c0f\u8fdb\u884c\u64e6\u9664\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nnumber add \u64e6\u9664\u5730\u5740\nnumber size \u64e6\u9664\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.erase(flash,add,size)\n", "prefix": "sfud.erase"}, "sfud.read": {"body": "sfud.read(${1:flash},${2:addr},${3:size})", "description": "sfud.read(flash, addr, size) - \u8bfb\u53d6 Flash \u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nint size \u4ece\u8d77\u59cb\u5730\u5740\u5f00\u59cb\u8bfb\u53d6\u6570\u636e\u7684\u603b\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nstring data \u8bfb\u53d6\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.read\",sfud.read(sfud_device,1024,4))\n", "prefix": "sfud.read"}, "sfud.write": {"body": "sfud.write(${1:flash},${2:addr},${3:data})", "description": "sfud.write(flash, addr,data) - \u5411 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.write\",sfud.write(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.write"}, "sfud.eraseWrite": {"body": "sfud.eraseWrite(${1:flash},${2:addr},${3:data})", "description": "sfud.eraseWrite(flash, addr,data) - \u5148\u64e6\u9664\u518d\u5f80 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.eraseWrite\",sfud.eraseWrite(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.eraseWrite"}, "sfud.getInfo": {"body": "sfud.getInfo(${1:flash})", "description": "sfud.getInfo(flash) - \u83b7\u53d6 Flash \u5bb9\u91cf\u548cpage\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint Flash \u5bb9\u91cf\nint page \u9875\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getInfo\",sfud.getInfo(sfud_device))\n", "prefix": "sfud.getInfo"}, "sfud.mount": {"body": "sfud.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "sfud.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7dsfud lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.mount\",sfud.mount(sfud_device,\"/sfud\"))\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\nlog.info(\"fsstat\", fs.fsstat(\"/sfud\"))\n", "prefix": "sfud.mount"}, "sms.send": {"body": "sms.send(${1:phone},${2:msg},${3:auto_phone_fix})", "description": "sms.send(phone, msg, auto_phone_fix) - \u53d1\u9001\u77ed\u4fe1\n\u4f20\u5165\u503c\uff1a\nstring \u7535\u8bdd\u53f7\u7801,\u5fc5\u586b\nstring \u77ed\u4fe1\u5185\u5bb9,\u5fc5\u586b\nbool \u662f\u5426\u81ea\u52a8\u5904\u7406\u7535\u8bdd\u53f7\u53f7\u7801\u7684\u683c\u5f0f,\u9ed8\u8ba4\u662f\u6309\u77ed\u4fe1\u5185\u5bb9\u548c\u53f7\u7801\u683c\u5f0f\u8fdb\u884c\u81ea\u52a8\u5224\u65ad, \u8bbe\u7f6e\u4e3afalse\u53ef\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\u6216nil\n", "prefix": "sms.send"}, "sms.setNewSmsCb": {"body": "sms.setNewSmsCb(${1:func})", "description": "sms.setNewSmsCb(func) - \u8bbe\u7f6e\u65b0SMS\u7684\u56de\u8c03\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nfunction \u56de\u8c03\u51fd\u6570, 3\u4e2a\u53c2\u6570, num, txt, metas\n\u8fd4\u56de\u503c\uff1a\nnil \u4f20\u5165\u662f\u51fd\u6570\u5c31\u80fd\u6210\u529f,\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\nsms.setNewSmsCb(function(num, txt, metas)\n -- num \u624b\u673a\u53f7\u7801\n -- txt \u6587\u672c\u5185\u5bb9\n -- metas \u77ed\u4fe1\u7684\u5143\u6570\u636e,\u4f8b\u5982\u53d1\u9001\u7684\u65f6\u95f4,\u957f\u77ed\u4fe1\u7f16\u53f7\n -- \u6ce8\u610f, \u957f\u77ed\u4fe1\u4f1a\u81ea\u52a8\u5408\u5e76\u6210\u4e00\u6761txt\n log.info(\"sms\", num, txt, metas and json.encode(metas) or \"\")\nend)\n", "prefix": "sms.setNewSmsCb"}, "sms.autoLong": {"body": "sms.autoLong(${1:mode})", "description": "sms.autoLong(mode) - \u8bbe\u7f6e\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5408\u5e76,true\u4e3a\u81ea\u52a8\u5408\u5e76,\u4e3a\u9ed8\u8ba4\u503c\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u540e\u7684\u503c\n\u4f8b\u5b50\uff1a\n-- \u7981\u7528\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76, \u4e00\u822c\u4e0d\u9700\u8981\u7981\u7528\nsms.autoLong(false)\n", "prefix": "sms.autoLong"}, "sms.clearLong": {"body": "sms.clearLong()", "description": "sms.clearLong() - \u6e05\u9664\u957f\u77ed\u4fe1\u7f13\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u6e05\u7406\u6389\u7684\u7247\u6bb5\u6570\u91cf\n\u4f8b\u5b50\uff1a\nsms.clearLong()\n", "prefix": "sms.clearLong"}, "socket.sntp": {"body": "socket.sntp(${1:sntp_server})", "description": "socket.sntp(sntp_server) - sntp\u65f6\u95f4\u540c\u6b65\n\u4f20\u5165\u503c\uff1a\nstring/table sntp\u670d\u52a1\u5668\u5730\u5740 \u9009\u586b\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u4f8b\u5b50\uff1a\nsocket.sntp()\n--socket.sntp(\"ntp.aliyun.com\") --\u81ea\u5b9a\u4e49sntp\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp({\"ntp.aliyun.com\",\"ntp1.aliyun.com\",\"ntp2.aliyun.com\"}) --sntp\u81ea\u5b9a\u4e49\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp(nil, socket.ETH0) --sntp\u81ea\u5b9a\u4e49\u9002\u914d\u5668\u5e8f\u53f7\nsys.subscribe(\"NTP_UPDATE\", function()\n log.info(\"sntp\", \"time\", os.date())\nend)\nsys.subscribe(\"NTP_ERROR\", function()\n log.info(\"socket\", \"sntp error\")\n socket.sntp()\nend)\n", "prefix": "socket.sntp"}, "socket.ntptm": {"body": "socket.ntptm()", "description": "socket.ntptm() - \u7f51\u7edc\u5bf9\u65f6\u540e\u7684\u65f6\u95f4\u6233(ms\u7ea7\u522b)\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u65f6\u95f4\u4fe1\u606f\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.11.15 \u65b0\u589e\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u5728\u6267\u884csocket.sntp()\u4e14\u83b7\u53d6\u5230NTP\u65f6\u95f4\u540e\u624d\u6709\u6548\n-- \u800c\u4e14\u662f2\u6b21sntp\u4e4b\u540e\u624d\u662f\u6bd4\u8f83\u51c6\u786e\u7684\u503c\n-- \u7f51\u7edc\u6ce2\u52a8\u8d8a\u5c0f, \u8be5\u65f6\u95f4\u6233\u8d8a\u7a33\u5b9a\nlocal tm = socket.ntptm()\n\n-- \u5bf9\u5e94\u7684table\u5305\u542b\u591a\u4e2a\u6570\u636e, \u5747\u4e3a\u6574\u6570\u503c\n\n-- \u6807\u51c6\u6570\u636e\n-- tsec \u5f53\u524d\u79d2\u6570,\u4ece1900.1.1 0:0:0 \u5f00\u59cb\u7b97, UTC\u65f6\u95f4\n-- tms \u5f53\u524d\u6beb\u79d2\u6570\n-- vaild \u662f\u5426\u6709\u6548, true \u6216\u8005 nil\n\n-- \u8c03\u8bd5\u6570\u636e, \u8c03\u8bd5\u7528,\u4e00\u822c\u7528\u6237\u4e0d\u7528\u7ba1\n-- ndelay \u7f51\u7edc\u5ef6\u65f6\u5e73\u5747\u503c,\u5355\u4f4d\u6beb\u79d2\n-- ssec \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u79d2\u6570\u504f\u79fb\u91cf\n-- sms \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u6beb\u79d2\u504f\u79fb\u91cf\n-- lsec \u672c\u5730\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n-- lms \u672c\u5730\u6beb\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n\nlog.info(\"tm\u6570\u636e\", json.encode(tm))\nlog.info(\"\u65f6\u95f4\u6233\", string.format(\"%u.%03d\", tm.tsec, tm.tms))\n", "prefix": "socket.ntptm"}, "socket.sntp_port": {"body": "socket.sntp_port(${1:port})", "description": "socket.sntp_port(port) - \u8bbe\u7f6eSNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\n\u4f20\u5165\u503c\uff1a\nint port \u7aef\u53e3\u53f7, \u9ed8\u8ba4123\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u7684\u7aef\u53e3\u53f7\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u4e0d\u9700\u8981\u8bbe\u7f6eNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7,\u9ed8\u8ba4123\u5373\u53ef\n", "prefix": "socket.sntp_port"}, "socket.localIP": {"body": "socket.localIP(${1:adapter})", "description": "socket.localIP(adapter) - \u83b7\u53d6\u672c\u5730ip\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u8fd4\u56de\u503c\uff1a\nstring \u901a\u5e38\u662f\u5185\u7f51ip, \u4e5f\u53ef\u80fd\u662f\u5916\u7f51ip, \u53d6\u51b3\u4e8e\u8fd0\u8425\u5546\u7684\u5206\u914d\nstring \u7f51\u7edc\u63a9\u7801\nstring \u7f51\u5173IP\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n log.info(\"socket\", \"ip\", socket.localIP())\n -- \u8f93\u51fa\u793a\u4f8b\n -- 62.39.244.10 255.255.255.255 0.0.0.0\n end\nend)\n", "prefix": "socket.localIP"}, "socket.create": {"body": "socket.create(${1:adapter},${2:cb})", "description": "socket.create(adapter, cb) - \u5728\u67d0\u4e2a\u9002\u914d\u7684\u7f51\u5361\u4e0a\u7533\u8bf7\u4e00\u4e2asocket_ctrl\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring or function string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u5982\u679c\u56fa\u4ef6\u6ca1\u6709\u5185\u7f6esys_wait\uff0c\u5219\u5fc5\u987b\u662ffunction\n", "prefix": "socket.create"}, "socket.debug": {"body": "socket.debug(${1:ctrl},${2:onoff})", "description": "socket.debug(ctrl, onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nboolean true \u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u9ed8\u8ba4\u662f\u5173\u95ed\u72b6\u6001\nsocket.debug(ctrl, true)\n", "prefix": "socket.debug"}, "socket.config": {"body": "socket.config(${1:ctrl},${2:local_port},${3:is_udp},${4:is_tls},${5:keep_idle},${6:keep_interval},${7:keep_cnt},${8:server_cert},${9:client_cert},${10:client_key},${11:client_password})", "description": "socket.config(ctrl, local_port, is_udp, is_tls, keep_idle, keep_interval, keep_cnt, server_cert, client_cert, client_key, client_password) - \u914d\u7f6enetwork\u4e00\u4e9b\u4fe1\u606f\uff0c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nint \u672c\u5730\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5219\u81ea\u52a8\u5206\u914d\u4e00\u4e2a\uff0c\u5982\u679c\u7528\u6237\u586b\u4e86\u7aef\u53e3\u53f7\u5219\u9700\u8981\u5c0f\u4e8e60000, \u9ed8\u8ba4\u4e0d\u5199\nboolean \u662f\u5426\u662fUDP\uff0c\u9ed8\u8ba4false\nboolean \u662f\u5426\u662f\u52a0\u5bc6\u4f20\u8f93\uff0c\u9ed8\u8ba4false\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684idle\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u4e0d\u542f\u7528\uff0c\u5982\u679c\u662f\u4e0d\u652f\u6301\u6807\u51c6posix\u63a5\u53e3\u7684\u7f51\u5361\uff08\u6bd4\u5982W5500\uff09\uff0c\u5219\u4e3a\u5fc3\u8df3\u95f4\u9694\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u6b21\u6570\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK\uff0c\u4e0d\u9700\u8981\u52a0\u5bc6\u4f20\u8f93\u5199nil\uff0c\u540e\u7eed\u53c2\u6570\u4e5f\u5168\u90e8nil\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK-ID\uff0cTCP\u6a21\u5f0f\u4e0b\u5982\u679c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\u65f6\uff0c\u5ffd\u7565\uff0c\u4e00\u822c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--\u6700\u666e\u901a\u7684TCP\u4f20\u8f93\nsocket.config(ctrl)\n--\u6700\u666e\u901a\u7684\u52a0\u5bc6TCP\u4f20\u8f93\uff0c\u8bc1\u4e66\u90fd\u4e0d\u7528\u9a8c\u8bc1\u7684\u90a3\u79cd\nsocket.config(ctrl, nil, nil ,true)\n", "prefix": "socket.config"}, "socket.linkup": {"body": "socket.linkup(${1:ctrl})", "description": "socket.linkup(ctrl) - \u7b49\u5f85\u7f51\u5361linkup\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecflinkup\uff0cfalse\u6ca1\u6709linkup\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.LINK\u6d88\u606f\n\u4f8b\u5b50\uff1a\n-- \u5224\u65ad\u4e00\u4e0b\u662f\u5426\u5df2\u7ecf\u8054\u7f51\nlocal succ, result = socket.linkup(ctrl)\n", "prefix": "socket.linkup"}, "socket.connect": {"body": "socket.connect(${1:ctrl},${2:ip},${3:remote_port},${4:need_ipv6_dns})", "description": "socket.connect(ctrl, ip, remote_port, need_ipv6_dns) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or int ip\u6216\u8005\u57df\u540d\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u670d\u52a1\u5668\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\nboolean \u57df\u540d\u89e3\u6790\u662f\u5426\u8981IPV6\uff0ctrue\u8981\uff0cfalse\u4e0d\u8981\uff0c\u9ed8\u8ba4false\u4e0d\u8981\uff0c\u53ea\u6709\u652f\u6301IPV6\u7684\u534f\u8bae\u6808\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679c\u6709\u5f02\u5e38\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\n\nlocal succ, result = socket.connect(ctrl, \"netlab.luatos.com\", 40123)\n\n--[[\n\u5e38\u89c1\u7684\u8fde\u63a5\u5931\u8d25\u7684code\u503c, \u4f1a\u5728\u65e5\u5fd7\u4e2d\u663e\u793a\n-1 \u5e95\u5c42\u5185\u5b58\u4e0d\u8db3\n-3 \u8d85\u65f6\n-8 \u7aef\u53e3\u5df2\u7ecf\u88ab\u5360\u7528\n-11 \u94fe\u63a5\u672a\u5efa\u7acb\n-13 \u6a21\u5757\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n-14 \u670d\u52a1\u5668\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n]]\n", "prefix": "socket.connect"}, "socket.discon": {"body": "socket.discon(${1:ctrl})", "description": "socket.discon(ctrl) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u65ad\u5f00\u8fde\u63a5\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecf\u65ad\u5f00\uff0cfalse\u6ca1\u6709\u65ad\u5f00\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.CLOSED\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.discon(ctrl)\n", "prefix": "socket.discon"}, "socket.close": {"body": "socket.close(${1:ctrl})", "description": "socket.close(ctrl) - \u5f3a\u5236\u5173\u95edsocket\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "socket.close"}, "socket.tx": {"body": "socket.tx(${1:ctrl},${2:data},${3:ip},${4:port},${5:flag})", "description": "socket.tx(ctrl, data, ip, port, flag) - \u53d1\u9001\u6570\u636e\u7ed9\u5bf9\u7aef\uff0cUDP\u5355\u6b21\u53d1\u9001\u4e0d\u8981\u8d85\u8fc71460\u5b57\u8282\uff0c\u5426\u5219\u5f88\u5bb9\u6613\u5931\u8d25\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or user_data zbuff \u8981\u53d1\u9001\u7684\u6570\u636e\nstring or int \u5bf9\u7aefIP\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u5bf9\u7aef\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\nint \u53d1\u9001\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u7f13\u51b2\u533a\u6ee1\u4e86\uff0cfalse\u6ca1\u6709\u6ee1\uff0c\u5982\u679ctrue\uff0c\u5219\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u6216\u8005\u7b49\u5230socket.TX_OK\u6d88\u606f\u540e\u518d\u5c1d\u8bd5\u53d1\u9001\uff0c\u540c\u65f6\u5ffd\u7565\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\nboolean true\u5df2\u7ecf\u6536\u5230\u5e94\u7b54\uff0cfalse\u6ca1\u6709\u6536\u5230\u5e94\u7b54\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.TX_OK\u6d88\u606f\uff0c \u4e5f\u53ef\u4ee5\u5ffd\u7565\u7ee7\u7eed\u53d1\u9001\uff0c\u76f4\u5230full==true\n\u4f8b\u5b50\uff1a\n\nlocal succ, full, result = socket.tx(ctrl, \"123456\", \"xxx.xxx.xxx.xxx\", xxxx)\n", "prefix": "socket.tx"}, "socket.rx": {"body": "socket.rx(${1:ctrl},${2:buff},${3:flag},${4:limit})", "description": "socket.rx(ctrl, buff, flag, limit) - \u63a5\u6536\u5bf9\u7aef\u53d1\u51fa\u7684\u6570\u636e\uff0c\u6ce8\u610f\u6570\u636e\u5df2\u7ecf\u7f13\u5b58\u5728\u5e95\u5c42\uff0c\u4f7f\u7528\u672c\u51fd\u6570\u53ea\u662f\u63d0\u53d6\u51fa\u6765\uff0cUDP\u6a21\u5f0f\u4e0b\u4e00\u6b21\u53ea\u4f1a\u53d6\u51fa\u4e00\u4e2a\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nuser_data zbuff \u5b58\u653e\u63a5\u6536\u7684\u6570\u636e\uff0c\u5982\u679c\u7f13\u51b2\u533a\u4e0d\u591f\u5927\u4f1a\u81ea\u52a8\u6269\u5bb9\nint \u63a5\u6536\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\nint \u63a5\u6536\u6570\u636e\u957f\u5ea6\u9650\u5236\uff0c\u5982\u679c\u6307\u5b9a\u4e86\uff0c\u5219\u53ea\u53d6\u524dN\u4e2a\u5b57\u8282. 2024.1.5 \u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nint \u672c\u6b21\u63a5\u6536\u5230\u6570\u636e\u957f\u5ea6\nstring \u5bf9\u7aefIP\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56denil\uff0c\u6ce8\u610f\u8fd4\u56de\u7684\u683c\u5f0f\uff0c\u5982\u679c\u662fIPV4\uff0c1byte 0x00 + 4byte\u5730\u5740 \u5982\u679c\u662fIPV6\uff0c1byte 0x01 + 16byte\u5730\u5740\nint \u5bf9\u7aefport\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u4ecesocket\u4e2d\u8bfb\u53d6\u6570\u636e, ctrl\u662fsocket.create\u8fd4\u56de\u7684, \u8bf7\u67e5\u9605demo/socket\nlocal buff = zbuff.create(2048)\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff)\n\n-- \u9650\u5236\u8bfb\u53d6\u957f\u5ea6, 2024.1.5 \u65b0\u589e\n-- \u6ce8\u610f\n-- \u5982\u679c\u662fUDP\u6570\u636e, \u5982\u679climit\u5c0f\u4e8eUDP\u6570\u636e\u5305\u957f\u5ea6, \u53ea\u4f1a\u53d6\u524dlimit\u4e2a\u5b57\u8282, \u5269\u4f59\u6570\u636e\u4f1a\u4e22\u5f03\n-- \u5982\u679c\u662fTCP\u6570\u636e, \u5982\u679c\u6709\u5269\u4f59\u6570\u636e, \u4e0d\u4f1a\u4e22\u5f03, \u53ef\u7ee7\u7eed\u8bfb\u53d6.\n-- \u6709\u65b0\u7684\u6570\u636e\u5230\u6765\u624d\u4f1a\u6709\u65b0\u7684EVENT\u6570\u636e, \u672a\u8bfb\u53d6\u5b8c\u6210\u7684\u6570\u636e\u4e0d\u4f1a\u89e6\u53d1\u65b0EVENT\u4e8b\u4ef6\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff, 1500)\n\n-- \u8bfb\u53d6\u7f13\u51b2\u533a\u5927\u5c0f, 2024.1.5 \u65b0\u589e, \u6ce8\u610f,\u8001\u7248\u672c\u56fa\u4ef6\u4e0d\u4f20buff\u53c2\u6570\u4f1a\u62a5\u9519\u7684\n-- \u5bf9\u4e8eTCP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5f85\u8bfb\u53d6\u7684\u6570\u636e\u7684\u603b\u957f\u5ea6\n-- \u5bf9\u4e8eUDP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5355\u4e2aUDP\u6570\u636e\u5305\u7684\u957f\u5ea6\nlocal succ, data_len = socket.rx(ctrl)\nif succ then\n log.info(\"\u5f85\u6536\u53d6\u6570\u636e\u957f\u5ea6\", data_len)\nend\n", "prefix": "socket.rx"}, "socket.read": {"body": "socket.read(${1:netc},${2:len})", "description": "socket.read(netc, len) - \u8bfb\u53d6\u6570\u636e(\u975ezbuff\u7248\u672c)\n\u4f20\u5165\u503c\uff1a\nuserdata socket.create\u5f97\u5230\u7684ctrl\nint \u9650\u5236\u8bfb\u53d6\u6570\u636e\u957f\u5ea6,\u53ef\u9009,\u4e0d\u4f20\u5c31\u662f\u8bfb\u51fa\u5168\u90e8\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u4e0e\u5426\nstring \u8bfb\u53d6\u7684\u6570\u636e,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u65f6\u6709\u6548\nstring \u5bf9\u65b9IP\u5730\u5740,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\nint \u5bf9\u65b9\u7aef\u53e3,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.4.8\u6dfb\u52a0, \u7528\u4e8e\u7b80\u6613\u8bfb\u53d6\u4e0d\u5927\u7684\u6570\u636e\n-- \u8bf7\u4f18\u5148\u4f7f\u7528socket.rx\u51fd\u6570, \u672c\u51fd\u6570\u4e3b\u8981\u7528\u4e8e\u56fa\u4ef6\u4e0d\u542bzbuff\u5e93\u65f6\u7684\u53d8\u901a\u8c03\u7528\nlocal ok, data = socket.read(netc, 1500)\nif ok and #data > 0 then\n log.info(\"\u8bfb\u53d6\u5230\u7684\u6570\u636e\", data)\nend\n", "prefix": "socket.read"}, "socket.wait": {"body": "socket.wait(${1:ctrl})", "description": "socket.wait(ctrl) - \u7b49\u5f85\u65b0\u7684socket\u6d88\u606f\uff0c\u5728\u8fde\u63a5\u6210\u529f\u548c\u53d1\u9001\u6570\u636e\u6210\u529f\u540e\uff0c\u4f7f\u7528\u4e00\u6b21\u5c06network\u72b6\u6001\u8f6c\u6362\u5230\u63a5\u6536\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u6709\u65b0\u7684\u6570\u636e\u9700\u8981\u63a5\u6536\uff0cfalse\u6ca1\u6709\u6570\u636e\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.EVENT\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.wait(ctrl)\n", "prefix": "socket.wait"}, "socket.listen": {"body": "socket.listen(${1:ctrl})", "description": "socket.listen(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u5f00\u59cb\u76d1\u542c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.listen(ctrl)\n", "prefix": "socket.listen"}, "socket.accept": {"body": "socket.accept(${1:ctrl})", "description": "socket.accept(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u63a5\u6536\u5230\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662f\u7c7b\u4f3cW5500\u7684\u786c\u4ef6\u534f\u8bae\u6808\u4e0d\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4e0d\u9700\u8981\u7b2c\u4e8c\u4e2a\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\uff0c\u8fd9\u91cc\u662f\u670d\u52a1\u5668\u7aef\nstring or function or nil string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u548csocket.create\u53c2\u6570\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nuser_data or nil \u5982\u679c\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4f1a\u8fd4\u56de\u65b0\u7684ctrl\uff0c\u81ea\u52a8create\uff0c\u5982\u679c\u4e0d\u652f\u6301\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal succ, new_netc = socket.listen(ctrl, cb)\n", "prefix": "socket.accept"}, "socket.state": {"body": "socket.state(${1:ctrl})", "description": "socket.state(ctrl) - \u83b7\u53d6socket\u5f53\u524d\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nint or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u6570\u503c\uff0c\u5426\u5219\u8fd4\u56denil\nstring or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u4e2d\u6587\u63cf\u8ff0\uff0c\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal state, str = socket.state(ctrl)\nlog.info(\"state\", state, str)\nstate 0 \"\u786c\u4ef6\u79bb\u7ebf\",\n 1 \"\u79bb\u7ebf\",\n 2 \"\u7b49\u5f85DNS\",\n 3 \"\u6b63\u5728\u8fde\u63a5\",\n 4 \"\u6b63\u5728TLS\u63e1\u624b\",\n 5 \"\u5728\u7ebf\",\n 6 \"\u5728\u76d1\u542c\",\n 7 \"\u6b63\u5728\u79bb\u7ebf\",\n 8 \"\u672a\u77e5\"\n", "prefix": "socket.state"}, "socket.release": {"body": "socket.release(${1:ctrl})", "description": "socket.release(ctrl) - \u4e3b\u52a8\u91ca\u653e\u6389network_ctrl\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u4f8b\u5b50\uff1a\n-- \u91ca\u653e\u540e\u5c31\u4e0d\u80fd\u518d\u4f7f\u7528\u4e86\nsocket.release(ctrl)\n", "prefix": "socket.release"}, "socket.setDNS": {"body": "socket.setDNS(${1:adapter_index},${2:dns_index},${3:ip})", "description": "socket.setDNS(adapter_index, dns_index, ip) - \u8bbe\u7f6eDNS\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff0csocket.STA\uff0csocket.AP\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f1a\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nint dns\u670d\u52a1\u5668\u5e8f\u53f7\uff0c\u4ece1\u5f00\u59cb\nstring or int dns\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u9ed8\u8ba4\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(nil, 1, \"114.114.114.114\")\n-- \u8bbe\u7f6e\u5236\u5b9a\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(socket.ETH0, 1, \"114.114.114.114\")\n", "prefix": "socket.setDNS"}, "socket.sslLog": {"body": "socket.sslLog(${1:log_level})", "description": "socket.sslLog(log_level) - \u8bbe\u7f6eSSL\u7684log\u767b\u8bb0\n\u4f20\u5165\u503c\uff1a\nint mbedtls log\u7b49\u7ea7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n--[[\nSSL/TLS log\u7ea7\u522b\u8bf4\u660e\n0\u4e0d\u6253\u5370\n1\u53ea\u6253\u5370\u9519\u8bef\u548c\u8b66\n2\u5927\u90e8\u5206info\n3\u53ca3\u4ee5\u4e0a\u8be6\u7ec6\u7684debug\n\n\u8fc7\u591a\u7684\u4fe1\u606f\u53ef\u80fd\u4f1a\u9020\u6210\u5185\u5b58\u788e\u7247\u5316\n]]\n-- \u6253\u5370\u5927\u90e8\u5206info\u65e5\u5fd7\nsocket.sslLog(2)\n", "prefix": "socket.sslLog"}, "socket.adapter": {"body": "socket.adapter(${1:index})", "description": "socket.adapter(index) - \u67e5\u770b\u7f51\u5361\u9002\u914d\u5668\u7684\u8054\u7f51\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\uff0c\u53ef\u4ee5\u7559\u7a7a\u4f1a\u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u9047\u5230IP READY\u7684\uff0c\u5982\u679c\u6307\u5b9a\u7f51\u5361\uff0c\u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\n\u8fd4\u56de\u503c\uff1a\nboolean \u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u662f\u5426IP READY,true\u8868\u793a\u5df2\u7ecf\u51c6\u5907\u597d\u53ef\u4ee5\u8054\u7f51\u4e86,false\u6682\u65f6\u4e0d\u53ef\u4ee5\u8054\u7f51\nint \u6700\u540e\u4e00\u4e2a\u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\n-- \u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u627e\u5230\u4e00\u4e2a\u662fIP READY\u7684\nlocal isReady,index = socket.adapter() --\u5982\u679cisReady\u4e3atrue,\u5219index\u4e3aIP READY\u7684\u7f51\u5361\u9002\u914d\u5668\u5e8f\u53f7\n--\u67e5\u770b\u5916\u7f6e\u4ee5\u592a\u7f51\uff08\u6bd4\u5982W5500\uff09\u662f\u5426IP READY\nlocal isReady,default = socket.adapter(socket.ETH0)\n", "prefix": "socket.adapter"}, "socket.remoteIP": {"body": "socket.remoteIP(${1:ctrl})", "description": "socket.remoteIP(ctrl) - \u83b7\u53d6\u5bf9\u7aefip\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nstring IP1\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709\u83b7\u53d6\u5230IP\u5730\u5740\nstring IP2\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP2\nstring IP3\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP3\nstring IP4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \uff0c\u5fc5\u987b\u5728\u63a5\u6536\u5230socket.ON_LINE\u6d88\u606f\u4e4b\u540e\u624d\u53ef\u80fd\u83b7\u53d6\u5230\uff0c\u6700\u591a\u8fd4\u56de4\u4e2aIP\u3002\n-- socket.connect\u91cc\u5982\u679cremote_port\u8bbe\u7f6e\u62100\uff0c\u5219\u5f53DNS\u5b8c\u6210\u65f6\u5c31\u8fd4\u56desocket.ON_LINE\u6d88\u606f\nlocal ip1,ip2,ip3,ip4 = socket.remoteIP(ctrl)\n", "prefix": "socket.remoteIP"}, "softkb.init": {"body": "softkb.init(${1:port},${2:key_in},${3:key_out})", "description": "softkb.init(port, key_in, key_out) - \u521d\u59cb\u5316\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\ntable \u77e9\u9635\u8f93\u5165\u6309\u952e\u8868\ntable \u77e9\u9635\u8f93\u51fa\u6309\u952e\u8868\n\u4f8b\u5b50\uff1a\n key_in = {pin.PD10,pin.PE00,pin.PE01,pin.PE02}\n key_out = {pin.PD12,pin.PD13,pin.PD14,pin.PD15}\n softkb.init(0,key_in,key_out)\n\nsys.subscribe(\"SOFT_KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "softkb.init"}, "softkb.deinit": {"body": "softkb.deinit(${1:port})", "description": "softkb.deinit(port) - \u5220\u9664\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\n\u4f8b\u5b50\uff1a\n softkb.deinit(0)\n", "prefix": "softkb.deinit"}, "spi.setup": {"body": "spi.setup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.setup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba42M=2000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,20,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.setup"}, "spi.createSoft": {"body": "spi.createSoft(${1:cs},${2:mosi},${3:miso},${4:clk},${5:CPHA},${6:CPOL},${7:dataw},${8:bitdict},${9:ms},${10:mode})", "description": "spi.createSoft(cs, mosi, miso, clk, CPHA, CPOL, dataw, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528\u8f6f\u4ef6SPI\n\u4f20\u5165\u503c\uff1a\nint cs\u5f15\u811a\u7f16\u53f7\uff0c\u4f20\u5165nil\u610f\u4e3aLua\u63a7\u5236cs\u811a\nint mosi\u5f15\u811a\u7f16\u53f7\nint miso\u5f15\u811a\u7f16\u53f7\nint clk\u5f15\u811a\u7f16\u53f7\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6\uff0c\u9ed8\u8ba48bit\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f\uff0c\u5168\u53cc\u5de51\uff0c\u534a\u53cc\u5de50\uff0c\u9ed8\u8ba4\u534a\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6SPI\u5bf9\u8c61 \u53ef\u5f53\u4f5cSPI\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6spi\nlocal softSpiDevice = spi.createSoft(0, 1, 2, 3, 0, 0, 8, spi.MSB, 1, 1)\nlocal result = spi.send(softSpiDevice, string.char(0x9f))\n", "prefix": "spi.createSoft"}, "spi.close": {"body": "spi.close(${1:id})", "description": "spi.close(id) - \u5173\u95ed\u6307\u5b9a\u7684SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.close(0)\n", "prefix": "spi.close"}, "spi.transfer": {"body": "spi.transfer(${1:id},${2:send_data},${3:send_len},${4:recv_len})", "description": "spi.transfer(id, send_data, send_len, recv_len) - \u4f20\u8f93SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7(\u4f8b\u59820)\u6216\u8f6f\u4ef6SPI\u5bf9\u8c61\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi.transfer(0, \"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi.transfer(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi.transfer"}, "spi.recv": {"body": "spi.recv(${1:id},${2:size},${3:buff})", "description": "spi.recv(id, size, buff) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint \u6570\u636e\u957f\u5ea6\nuserdata zbuff\u5bf9\u8c61,\u53ef\u9009,2024.3.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring/int \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u82e5\u4f20\u5165\u7684\u662fzbuff\u5c31\u8fd4\u56de\u8bfb\u53d6\u5927\u5c0f,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\n-- \u63a5\u6536\u6570\u636e\nlocal recv = spi.recv(0, 4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n\n-- \u5f53\u4f20\u5165zbuff\u53c2\u6570\u65f6,\u8fd4\u56de\u503c\u6709\u6240\u4e0d\u540c. 2024.3.29\u65b0\u589e\n-- \u8bfb\u53d6\u6210\u529f\u540e, \u6307\u9488\u4f1a\u5f80\u540e\u79fb\u52a8len\u4e2a\u5b57\u8282\n-- \u5199\u5165\u4f4d\u7f6e\u4ee5\u5f53\u524dused()\u4f4d\u7f6e\u5f00\u59cb, \u8bf7\u52a1\u5fc5\u786e\u4fdd\u6709\u8db3\u591f\u7a7a\u95f4\u5199\u5165len\u957f\u5ea6\u7684\u6570\u636e\nlocal len = spi.recv(0, 4, buff)\n", "prefix": "spi.recv"}, "spi.send": {"body": "spi.send(${1:id},${2:data[},${3:len]})", "description": "spi.send(id, data[, len]) - \u53d1\u9001SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi.send(0, \"123\")--\u53d1\u9001123\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi.send(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi.send"}, "spi.deviceSetup": {"body": "spi.deviceSetup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.deviceSetup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba420M=20000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nuserdata spi_device\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.deviceSetup"}, "spi_device:close": {"body": "spi_device:close()", "description": "spi_device:close() - \u5173\u95ed\u6307\u5b9a\u7684SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi_device.close()\n", "prefix": "spi_device:close"}, "spi_device:transfer": {"body": "spi_device:transfer(${1:send_data[},${2:len]})", "description": "spi_device:transfer(send_data[, len]) - \u4f20\u8f93SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:transfer(\"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\nlocal result = spi_device:transfer({0x00,0x01})--\u53d1\u90010x00,0x01,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi_device:transfer(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi_device:transfer"}, "spi_device:send": {"body": "spi_device:send(${1:data[},${2:len]})", "description": "spi_device:send(data[, len]) - \u53d1\u9001SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi_device:send(\"123\")--\u53d1\u9001123\nlocal result = spi_device:send({0x00,0x01})--\u53d1\u90010x00,0x01\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi_device:send(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi_device:send"}, "spi_device:recv": {"body": "spi_device:recv(${1:size})", "description": "spi_device:recv(size) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:recv(4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n", "prefix": "spi_device:recv"}, "spi.xfer": {"body": "spi.xfer(${1:id},${2:txbuff},${3:rxbuff},${4:rx_len},${5:transfer_done_topic})", "description": "spi.xfer(id, txbuff, rxbuff, rx_len, transfer_done_topic) - \u975e\u963b\u585e\u65b9\u5f0f\u786c\u4ef6SPI\u4f20\u8f93SPI\u6570\u636e\uff0c\u76ee\u7684\u4e3a\u4e86\u63d0\u9ad8\u6838\u5fc3\u5229\u7528\u7387\u3002API\u76f4\u63a5\u8fd4\u56de\u662f\u5426\u542f\u52a8\u4f20\u8f93\uff0c\u4f20\u8f93\u5b8c\u6210\u540e\u901a\u8fc7topic\u56de\u8c03\uff0c\u672cAPI\u9002\u5408\u786c\u4ef6SPI\u4f20\u8f93\u5927\u91cf\u6570\u636e\u4f20\u8f93\uff0c\u5916\u8bbe\u529f\u80fd\uff08LCD SPI\uff0cW5500 SPI\u4e4b\u7c7b\u7684\uff09\u5360\u636e\u7684SPI\u548c\u8f6f\u4ef6SPI\u4e0d\u80fd\u7528\uff0c\u5c11\u91cf\u6570\u636e\u4f20\u8f93\u5efa\u8bae\u4f7f\u7528\u4f20\u7edf\u963b\u585e\u578bAPI\n\u4f20\u5165\u503c\uff1a\nuserdata or int spi_device\u6216\u8005spi_id\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662fspi_device\uff0c\u9700\u8981\u624b\u52a8\u5728\u4f20\u8f93\u5b8c\u6210\u540e\u62c9\u9ad8cs!!!!!!\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u63a5\u6536\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\nzbuff \u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u53d1\u9001\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u63a5\u6536\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\u5b58\u50a8\nint \u4f20\u8f93\u6570\u636e\u957f\u5ea6\uff0c\u7279\u522b\u8bf4\u660e \u5982\u679c\u4e3a\u534a\u53cc\u5de5\uff0c\u5148\u53d1\u540e\u6536\uff0c\u6bd4\u5982spi flash\u64cd\u4f5c\u8fd9\u79cd\uff0c\u5219\u957f\u5ea6=\u53d1\u9001\u5b57\u8282+\u63a5\u6536\u5b57\u8282\uff0c\u6ce8\u610f\u4e0a\u9762\u53d1\u9001\u548c\u63a5\u6536buff\u90fd\u8981\u7559\u8db3\u591f\u7684\u6570\u636e\uff0c\u540e\u7eed\u63a5\u6536\u6570\u636e\u5904\u7406\u9700\u8981\u8df3\u8fc7\u53d1\u9001\u6570\u636e\u957f\u5ea6\u5b57\u8282\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684topic\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = spi.xfer(spi.SPI_0, txbuff, rxbuff, 1024, \"SPIDONE\") if result then result, spi_id, succ, error_code = sys.waitUntil(\"SPIDONE\") end if not result or not succ then log.info(\"spi fail, error code\", error_code) else log.info(\"spi ok\") end\n\n", "prefix": "spi.xfer"}, "statem.create": {"body": "statem.create(${1:count},${2:repeat})", "description": "statem.create(count, repeat) - \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u72b6\u6001\u673a.\n\u4f20\u5165\u503c\uff1a\nint \u6307\u4ee4\u6761\u6570,\u9ed8\u8ba432\u6761\nint \u91cd\u590d\u6267\u884c\u7684\u6b21\u6570, 0 \u4ee3\u8868\u4e0d\u91cd\u590d, \u6b63\u6574\u6570\u4ee3\u8868\u5177\u4f53\u91cd\u590d\u6267\u884c\u7684\u6b21\u6570. \u6682\u4e0d\u652f\u6301\u6c38\u7eed\u6267\u884c\n\u8fd4\u56de\u503c\uff1a\nsome \u82e5\u6210\u529f,\u8fd4\u56de\u72b6\u6001\u673a\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\ngpio.setup(7, 0, gpio.PULLUP)\ngpio.setup(12, 0, gpio.PULLUP)\ngpio.setup(13, 0, gpio.PULLUP)\ngpio.setup(14, 0, gpio.PULLUP)\nlocal sm = statem.create()\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :usleep(10) -- \u4f11\u772010us\n :gpio_set(7, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(12, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(13, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(14, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :finish()\n\n-- \u6267\u884c\u4e4b,\u540e\u7eed\u4f1a\u652f\u6301\u540e\u53f0\u6267\u884c\nsm:exec()\n", "prefix": "statem.create"}, "string.toHex": {"body": "string.toHex(${1:str},${2:separator})", "description": "string.toHex(str, separator) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u6210HEX\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26, \u9ed8\u8ba4\u4e3a\"\"\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u5b57\u7b26\u4e32\nnumber HEX\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nstring.toHex(\"\\1\\2\\3\") --> \"010203\" 6\nstring.toHex(\"123abc\") --> \"313233616263\" 12\nstring.toHex(\"123abc\", \" \") --> \"31 32 33 61 62 63 \" 12\n", "prefix": "string.toHex"}, "string.fromHex": {"body": "string.fromHex(${1:hex})", "description": "string.fromHex(hex) - \u5c06HEX\u8f6c\u6210\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring hex,16\u8fdb\u5236\u7ec4\u6210\u7684\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nstring.fromHex(\"010203\") --> \"\\1\\2\\3\"\nstring.fromHex(\"313233616263\") --> \"123abc\"\n", "prefix": "string.fromHex"}, "string.split": {"body": "string.split(${1:str},${2:delimiter},${3:keepEmtry})", "description": "string.split(str, delimiter, keepEmtry) - \u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26,\u53ef\u9009,\u9ed8\u8ba4 \",\"\nbool \u662f\u5426\u4fdd\u7559\u7a7a\u767d\u7247\u6bb5,\u9ed8\u8ba4\u4e3afalse,\u4e0d\u4fdd\u7559. 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\n\u8fd4\u56de\u503c\uff1a\ntable \u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u8868\n\u4f8b\u5b50\uff1a\nlocal tmp = string.split(\"123,233333,122\")\nlog.info(\"tmp\", json.encode(tmp))\nlocal tmp = (\"123,456,789\"):split(',') --> {'123','456','789'}\nlog.info(\"tmp\", json.encode(tmp))\n\n-- \u4fdd\u7559\u7a7a\u7247\u6bb5, 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\nlocal str = \"/tmp//def/1234/\"\nlocal tmp = str:split(\"/\", true) \nlog.info(\"str.split\", #tmp, json.encode(tmp))\n", "prefix": "string.split"}, "string.toValue": {"body": "string.toValue(${1:str})", "description": "string.toValue(str) - \u8fd4\u56de\u5b57\u7b26\u4e32tonumber\u7684\u8f6c\u4e49\u5b57\u7b26\u4e32(\u7528\u6765\u652f\u6301\u8d85\u8fc731\u4f4d\u6574\u6570\u7684\u8f6c\u6362)\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8f6c\u6362\u540e\u7684\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32\nnumber \u8f6c\u6362\u4e86\u591a\u5c11\u4e2a\u5b57\u7b26\n\u4f8b\u5b50\uff1a\nstring.toValue(\"123456\") --> \"\\1\\2\\3\\4\\5\\6\" 6\nstring.toValue(\"123abc\") --> \"\\1\\2\\3\\a\\b\\c\" 6\n", "prefix": "string.toValue"}, "string.urlEncode": {"body": "string.urlEncode(${1:\"123abc\"})", "description": "string.urlEncode(\"123 abc\") - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884curl\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nint mode:url\u7f16\u7801\u7684\u8f6c\u6362\u6807\u51c6,\n", "prefix": "string.urlEncode"}, "string.toBase64": {"body": "string.toBase64(${1:str})", "description": "string.toBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.toBase64"}, "string.fromBase64": {"body": "string.fromBase64(${1:str})", "description": "string.fromBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase64"}, "string.toBase32": {"body": "string.toBase32(${1:str})", "description": "string.toBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.toBase32"}, "string.fromBase32": {"body": "string.fromBase32(${1:str})", "description": "string.fromBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase32"}, "string.startsWith": {"body": "string.startsWith(${1:str},${2:prefix})", "description": "string.startsWith(str, prefix) - \u5224\u65ad\u5b57\u7b26\u4e32\u524d\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u524d\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:startsWith(\"a\"))\nlog.info(\"str\", str:startsWith(\"b\"))\n", "prefix": "string.startsWith"}, "string.endsWith": {"body": "string.endsWith(${1:str},${2:suffix})", "description": "string.endsWith(str, suffix) - \u5224\u65ad\u5b57\u7b26\u4e32\u540e\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u540e\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:endsWith(\"c\"))\nlog.info(\"str\", str:endsWith(\"b\"))\n", "prefix": "string.endsWith"}, "string.trim": {"body": "string.trim(${1:str},${2:ltrim},${3:rtrim})", "description": "string.trim(str, ltrim, rtrim) - \u88c1\u526a\u5b57\u7b26\u4e32,\u53bb\u9664\u5934\u5c3e\u7684\u7a7a\u683c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5904\u7406\u7684\u5b57\u7b26\u4e32\nbool \u6e05\u7406\u524d\u7f00,\u9ed8\u8ba4\u4e3atrue\nbool \u6e05\u7406\u540e\u7f00,\u9ed8\u8ba4\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nstring \u6e05\u7406\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal str = \"\\r\\nabc\\r\\n\"\nlog.info(\"str\", string.trim(str)) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", str:trim()) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", #string.trim(str, false, true)) -- \u4ec5\u88c1\u526a\u540e\u7f00,\u6240\u4ee5\u957f\u5ea6\u662f5\n", "prefix": "string.trim"}, "sys.wait": {"body": "sys.wait(${1:timeout})", "description": "sys.wait(timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nany \u901a\u5e38\u4e3anil,\u9664\u975e\u4e3b\u52a8\u88ab\u5524\u9192(\u901a\u5e38\u4e0d\u4f1a)\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(500)\n end\nend)\n", "prefix": "sys.wait"}, "sys.waitUntil": {"body": "sys.waitUntil(${1:topic},${2:timeout})", "description": "sys.waitUntil(topic, timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\u6216\u8005\u7279\u5b9a\u7684topic\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6topic\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nboolean \u5982\u679c\u662f\u8d85\u65f6,\u8fd4\u56defalse,\u5426\u5219\u8fd4\u56detrue\nany \u5bf9\u5e94topic\u7684\u5185\u5bb9\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n // do something\n local result, data = sys.waitUntil(\"NET_READY\", 30000)\n // do something else\nend)\n", "prefix": "sys.waitUntil"}, "sys.taskInit": {"body": "sys.taskInit(${1:func},${2:arg1},${3:arg2},${4:argN})", "description": "sys.taskInit(func, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2aTask\u534f\u7a0b\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\ntask \u534f\u7a0b\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nsys.taskInit(function(a, b, c)\n log.info(\"task\", a, b, c) -- \u6253\u5370 task A B C\nend, \"A\", \"B\", \"N\")\n", "prefix": "sys.taskInit"}, "sys.timerStart": {"body": "sys.timerStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStart"}, "sys.timerLoopStart": {"body": "sys.timerLoopStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerLoopStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerLoopStart"}, "sys.timerStop": {"body": "sys.timerStop(${1:id})", "description": "sys.timerStop(id) - \u5173\u95ed\u4e00\u4e2a\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal tcount = 0\nlocal tid \ntid = sys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\n if tcount > 10 then\n sys.timerStop(tid)\n end\n tcount = tcount + 1\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStop"}, "sys.timerStopAll": {"body": "sys.timerStopAll(${1:fnc})", "description": "sys.timerStopAll(fnc) - \u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nfunction fnc\u56de\u8c03\u7684\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u56de\u8c03\u51fd\u6570\u4e3apublicTimerCbFnc\u7684\u6240\u6709\u5b9a\u65f6\u5668\nlocal function publicTimerCbFnc(tag)\nlog.info(\"publicTimerCbFnc\",tag)\nend\nsys.timerStart(publicTimerCbFnc,8000,\"first\")\nsys.timerStart(publicTimerCbFnc,8000,\"second\")\nsys.timerStart(publicTimerCbFnc,8000,\"third\")\nsys.timerStopAll(publicTimerCbFnc)\n", "prefix": "sys.timerStopAll"}, "sys.publish": {"body": "sys.publish(${1:topic},${2:arg1},${3:agr2},${4:argN})", "description": "sys.publish(topic, arg1, agr2, argN) - \u5f80\u7279\u5b9atopic\u901a\u9053\u53d1\u5e03\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nany \u9644\u5e26\u7684\u53c2\u65701\nany \u9644\u5e26\u7684\u53c2\u65702\nany \u9644\u5e26\u7684\u53c2\u6570N\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nsys.publish(\"BT_READY\", false)\n", "prefix": "sys.publish"}, "sys.subscribe": {"body": "sys.subscribe(${1:topic},${2:func})", "description": "sys.subscribe(topic, func) - \u8ba2\u9605\u4e00\u4e2atopic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.subscribe(\"BT_READY\", bt_cb)\nsys.subscribe(\"BT_READY\", function(state)\n log.info(\"sys\", \"Got BT_READY\", state)\nend)\n", "prefix": "sys.subscribe"}, "sys.unsubscribe": {"body": "sys.unsubscribe(${1:topic},${2:func})", "description": "sys.unsubscribe(topic, func) - \u53d6\u6d88\u8ba2\u9605topic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.unsubscribe(\"BT_READY\", bt_cb)\n", "prefix": "sys.unsubscribe"}, "sys.run": {"body": "sys.run()", "description": "sys.run() - sys\u5e93\u4e3b\u5faa\u73af\u65b9\u6cd5,\u4ec5\u5141\u8bb8\u5728main.lua\u7684\u672b\u5c3e\u8c03\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c. \u8fd9\u4e2a\u65b9\u6cd5\u51e0\u4e4e\u4e0d\u53ef\u80fd\u8fd4\u56de.\n\u4f8b\u5b50\uff1a\n-- \u603b\u662fmain.lua\u7684\u7ed3\u5c3e\u4e00\u53e5,\u5c06\u6765\u4e5f\u8bb8\u4f1a\u7b80\u5316\u6389\nsys.run()\n-- \u4e4b\u540e\u7684\u4ee3\u7801\u4e0d\u4f1a\u88ab\u6267\u884c\n", "prefix": "sys.run"}, "sysplus.waitMsg": {"body": "sysplus.waitMsg(${1:taskName},${2:target},${3:timeout})", "description": "sysplus.waitMsg(taskName, target, timeout) - \u7b49\u5f85\u63a5\u6536\u4e00\u4e2a\u76ee\u6807\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nstring \u76ee\u6807\u6d88\u606f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u63a5\u6536\u5230\u4efb\u610f\u6d88\u606f\u90fd\u4f1a\u9000\u51fa\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u65e0\u8d85\u65f6\uff0c\u6c38\u8fdc\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\ntable \u6210\u529f\u8fd4\u56detable\u578b\u7684msg\uff0c\u8d85\u65f6\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7b49\u5f85\u4efb\u52a1\nsysplus.waitMsg('a', 'b', 1000)\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_wait\n", "prefix": "sysplus.waitMsg"}, "sysplus.sendMsg": {"body": "sysplus.sendMsg(${1:taskName},${2:target},${3:arg2},${4:arg3},${5:arg4})", "description": "sysplus.sendMsg(taskName, target, arg2, arg3, arg4) - \u5411\u76ee\u6807\u4efb\u52a1\u53d1\u9001\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65701\uff0c\u540c\u65f6\u4e5f\u662fwaitMsg\u91cc\u7684target\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65702\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65703\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65704\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5411\u4efb\u52a1a,\u76ee\u6807b\u53d1\u9001\u6d88\u606f\nsysplus.sendMsg('a', 'b')\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_send\n", "prefix": "sysplus.sendMsg"}, "sysplus.taskInitEx": {"body": "sysplus.taskInitEx(${1:fun},${2:taskName},${3:cbFun},${4:...})", "description": "sysplus.taskInitEx(fun, taskName, cbFun, ...) - \u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570,main.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\n\u4f20\u5165\u503c\uff1a\nfunction \u4efb\u52a1\u51fd\u6570\u540d,\u7528\u4e8eresume\u5524\u9192\u65f6\u8c03\u7528\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nfunction \u63a5\u6536\u5230\u975e\u76ee\u6807\u6d88\u606f\u65f6\u7684\u56de\u8c03\u51fd\u6570\nany ... \u4efb\u52a1\u51fd\u6570fun\u7684\u53ef\u53d8\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\n\u4f8b\u5b50\uff1a\nsysplus.taskInitEx(task1,'a',callback)\n", "prefix": "sysplus.taskInitEx"}, "sysplus.taskDel": {"body": "sysplus.taskDel(${1:taskName})", "description": "sysplus.taskDel(taskName) - \u5220\u9664\u7531taskInitEx\u521b\u5efa\u7684\u4efb\u52a1\u7ebf\u7a0b\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\n\u4f8b\u5b50\uff1a\nsysplus.taskDel('a')\n", "prefix": "sysplus.taskDel"}, "sysplus.cleanMsg": {"body": "sysplus.cleanMsg(${1:taskName})", "description": "sysplus.cleanMsg(taskName) - \u6e05\u9664\u6307\u5b9atask\u7684\u6d88\u606f\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\n\u4f8b\u5b50\uff1a\nsysplus.cleanMsg('a')\n", "prefix": "sysplus.cleanMsg"}, "timer.mdelay": {"body": "timer.mdelay(${1:timeout})", "description": "timer.mdelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dms, \u6700\u9ad81024ms, \u5b9e\u9645\u4f7f\u7528\u5f3a\u70c8\u5efa\u8bae\u4e0d\u8981\u8d85\u8fc7200ms\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u671f\u95f4\u6ca1\u6709\u4efb\u4f55luat\u4ee3\u7801\u4f1a\u6267\u884c,\u5305\u62ec\u5e95\u5c42\u6d88\u606f\u5904\u7406\u673a\u5236\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\ntimer.mdelay(10)\n", "prefix": "timer.mdelay"}, "timer.udelay": {"body": "timer.udelay(${1:timeout})", "description": "timer.udelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\u4f46us\u7ea7\u522b,\u4e0d\u4f1a\u5f88\u7cbe\u51c6\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dus, \u6700\u59273000us\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\n-- \u672cAPI\u5728 2023.05.18 \u6dfb\u52a0\ntimer.udelay(10)\n-- \u5b9e\u9645\u963b\u585e\u65f6\u957f\u662f\u6709\u6ce2\u52a8\u7684\n", "prefix": "timer.udelay"}, "touchkey.setup": {"body": "touchkey.setup(${1:id},${2:scan_period},${3:window},${4:threshold})", "description": "touchkey.setup(id, scan_period, window, threshold) - \u914d\u7f6e\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863, \u4f8b\u5982air101/air103\u652f\u6301 1~15, \u4f8b\u5982PA7\u5bf9\u5e94touch id=1\nint \u626b\u63cf\u95f4\u9694,\u8303\u56f41 ~ 0x3F, \u5355\u4f4d16ms,\u53ef\u9009\nint \u626b\u63cf\u7a97\u53e3,\u8303\u56f42-7, \u53ef\u9009\nint \u9600\u503c, \u8303\u56f40-127, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ntouchkey.setup(1)\nsys.subscribe(\"TOUCHKEY_INC\", function(id, count)\n -- \u4f20\u611f\u5668id\n -- \u8ba1\u6570\u5668,\u89e6\u6478\u6b21\u6570\u7edf\u8ba1\n log.info(\"touchkey\", id, count)\nend)\n", "prefix": "touchkey.setup"}, "touchkey.close": {"body": "touchkey.close(${1:id})", "description": "touchkey.close(id) - \u5173\u95ed\u521d\u59cb\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u592a\u53ef\u80fd\u9700\u8981\u5173\u6389\u7684\u6837\u5b50\ntouchkey.close(1)\n", "prefix": "touchkey.close"}, "u8g2.begin": {"body": "u8g2.begin(${1:conf})", "description": "u8g2.begin(conf) - u8g2\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f,\u8be6\u7ec6\u914d\u7f6e\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- conf\u914d\u7f6e\u9879\u8bf4\u660e\n-- ic \u5b57\u7b26\u4e32,\u4e3b\u63a7\u82af\u7247\u7c7b\u578b, \u652f\u6301custom(\u81ea\u5b9a\u4e49\u547d\u4ee4) ssd1306(\u9ed8\u8ba4) ssd1309 ssd1322 sh1106 sh1107 sh1108 st7567 uc1701 ssd1306_128x32\n-- direction \u6570\u503c,\u65b9\u5411,\u53ef\u90090 90 180 270 \u9ed8\u8ba40\n-- mode \u5b57\u7b26\u4e32,\u6a21\u5f0f,\u53ef\u9009i2c_sw:\u8f6f\u4ef6i2c i2c_hw:\u786c\u4ef6i2c,spi_hw_4pin: \u786c\u4ef6spi\n-- i2c_id: \u6570\u503c,\u786c\u4ef6i2c\u65f6\u6709\u6548\n-- i2c_scl: \u6570\u503c,\u8f6f\u4ef6i2c\u65f6\u65f6\u949f\u7ebf\u7684GPIO\u7f16\u53f7\n-- i2c_sda: \u6570\u503c\u8f6f\u4ef6i2c\u65f6\u6570\u636e\u7ebf\u7684GPIO\u7f16\u53f7\n-- spi_id\u3001spi_res\u3001spi_dc\u3001spi_cs: \u6570\u503c,\u786c\u4ef6spi\u7684SPI\u7f16\u53f7,\u590d\u4f4dGPIO\u7f16\u53f7,DC\u7ebf\u7684GPIO\u7f16\u53f7, CS\u7ebf\u7684GPIO\u7f16\u53f7\n-- x_offset: \u6570\u503c,X\u8f74\u504f\u79fb\u91cf,\u9ed8\u8ba4\u6309\u9a71\u52a8\u8d70, 2023.11.10\u65b0\u589e\u7684\u914d\u7f6e\u9879\n\n-- \u521d\u59cb\u5316\u786c\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_hw\",i2c_id=0}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u786c\u4ef6spi\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"spi_hw_4pin\",spi_id=0,spi_res=pin.PB03,spi_dc=pin.PB01,spi_cs=pin.PB04}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_sw\", i2c_scl=1, i2c_sda=4}) -- \u901a\u8fc7PA1 SCL / PA4 SDA\u6a21\u62df\n", "prefix": "u8g2.begin"}, "u8g2.close": {"body": "u8g2.close()", "description": "u8g2.close() - \u5173\u95ed\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95eddisp,\u518d\u6b21\u4f7f\u7528disp\u76f8\u5173API\u7684\u8bdd,\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\nu8g2.close()\n", "prefix": "u8g2.close"}, "u8g2.ClearBuffer": {"body": "u8g2.ClearBuffer()", "description": "u8g2.ClearBuffer() - \u6e05\u5c4f\uff0c\u6e05\u9664\u5185\u5b58\u5e27\u7f13\u51b2\u533a\u4e2d\u7684\u6240\u6709\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u6e05\u5c4f\nu8g2.ClearBuffer()\n", "prefix": "u8g2.ClearBuffer"}, "u8g2.SendBuffer": {"body": "u8g2.SendBuffer()", "description": "u8g2.SendBuffer() - \u5c06\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\uff0c\u5c06\u5b58\u50a8\u5668\u5e27\u7f13\u51b2\u533a\u7684\u5185\u5bb9\u53d1\u9001\u5230\u663e\u793a\u5668\n\u4f8b\u5b50\uff1a\n-- \u628a\u663e\u793a\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\nu8g2.SendBuffer()\n", "prefix": "u8g2.SendBuffer"}, "u8g2.DrawUTF8": {"body": "u8g2.DrawUTF8(${1:str},${2:x},${3:y})", "description": "u8g2.DrawUTF8(str, x, y) - \u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57\uff0c\u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57,\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.DrawUTF8(\"wifi is ready\", 10, 20)\n", "prefix": "u8g2.DrawUTF8"}, "u8g2.DrawButtonUTF8": {"body": "u8g2.DrawButtonUTF8(${1:str},${2:x},${3:y},${4:flags},${5:w},${6:h},${7:v},${8:str})", "description": "u8g2.DrawButtonUTF8(str, x, y, flags, w, h, v, str) - \u5728\u63d0\u4f9b\u7684\u6587\u672c\u5468\u56f4\u753b\u4e00\u4e2a\u6846\u3002\u8fd9\u4e0e DrawUTF8 \u7c7b\u4f3c\uff0c\u4f46\u4e3a\u6587\u672c\u6dfb\u52a0\u4e86\u4e00\u4e9b\u88c5\u9970\u3002\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f\u5e55 \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\nint \u6807\u5fd7 \u591a\u4e2a\u6807\u5fd7\u53ef\u4ee5\u4e0e\u201c\u6216\u201d\u8fd0\u7b97\u7b26\u4e00\u8d77\u4f7f\u7528\u3002\nint \u6587\u672c\u7684\u6700\u5c0f\u5bbd\u5ea6\u3002\u5982\u679c\u4e3a0\uff08\u6216\u4f4e\u4e8e\u6587\u672c\u5bbd\u5ea6\uff09\uff0c\u5219\u6587\u672c\u5bbd\u5ea6\u5c06\u7528\u4e8e\u6846\u67b6\u3002\nint \u6587\u672c\u524d\u540e\u7684\u989d\u5916\u7a7a\u95f4\u3002\nint \u6587\u672c\u4e0a\u4e0b\u7684\u989d\u5916\u7a7a\u95f4\u3002\n\u4f8b\u5b50\uff1a\nu8g2.DrawButtonUTF8(\"str\", 10, 20,u8g2.BTN_BW2,0,2,2)\n", "prefix": "u8g2.DrawButtonUTF8"}, "u8g2.SetFontMode": {"body": "u8g2.SetFontMode(${1:mode})", "description": "u8g2.SetFontMode(mode) - \u8bbe\u7f6e\u5b57\u4f53\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetFontMode(1)\n", "prefix": "u8g2.SetFontMode"}, "u8g2.SetFont": {"body": "u8g2.SetFont(${1:font},${2:indentation})", "description": "u8g2.SetFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata font, u8g2.font_opposansm8 \u4e3a\u7eaf\u82f1\u65878\u53f7\u5b57\u4f53,\u8fd8\u6709font_opposansm10 font_opposansm12 font_opposansm16 font_opposansm18 font_opposansm20 font_opposansm22 font_opposansm24 font_opposansm32 \u53ef\u9009 u8g2.font_opposansm12_chinese \u4e3a12x12\u5168\u4e2d\u6587,\u8fd8\u6709 font_opposansm16_chinese font_opposansm24_chinese font_opposansm32_chinese \u53ef\u9009, u8g2.font_unifont_t_symbols \u4e3a\u7b26\u53f7.\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nu8g2.SetFont(u8g2.font_opposansm12)\n", "prefix": "u8g2.SetFont"}, "u8g2.GetDisplayHeight": {"body": "u8g2.GetDisplayHeight()", "description": "u8g2.GetDisplayHeight() - \u83b7\u53d6\u663e\u793a\u5c4f\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayHeight()\n", "prefix": "u8g2.GetDisplayHeight"}, "u8g2.GetDisplayWidth": {"body": "u8g2.GetDisplayWidth()", "description": "u8g2.GetDisplayWidth() - \u83b7\u53d6\u663e\u793a\u5c4f\u5bbd\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u5bbd\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayWidth()\n", "prefix": "u8g2.GetDisplayWidth"}, "u8g2.SetDrawColor": {"body": "u8g2.SetDrawColor(${1:c})", "description": "u8g2.SetDrawColor(c) - \u4e3a\u6240\u6709\u7ed8\u56fe\u529f\u80fd\u5206\u914d\u7ed8\u56fe\u989c\u8272\u3002\n\u4f20\u5165\u503c\uff1a\nint c\u4e3a\u989c\u8272\u503c 0\u6ca1\u6709\u8272 1\u6709\u8272 2\u4e0e\u5e95\u8272xor\n\u4f8b\u5b50\uff1a\nu8g2.SetDrawColor(0)\n", "prefix": "u8g2.SetDrawColor"}, "u8g2.DrawPixel": {"body": "u8g2.DrawPixel(${1:x},${2:y})", "description": "u8g2.DrawPixel(x,y) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint X\u4f4d\u7f6e.\nint Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawPixel(20, 5)\n", "prefix": "u8g2.DrawPixel"}, "u8g2.DrawLine": {"body": "u8g2.DrawLine(${1:x0},${2:y0},${3:x1},${4:y1})", "description": "u8g2.DrawLine(x0,y0,x1,y1) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawLine(20, 5, 5, 32)\n", "prefix": "u8g2.DrawLine"}, "u8g2.DrawCircle": {"body": "u8g2.DrawCircle(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawCircle(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawCircle(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawCircle"}, "u8g2.DrawDisc": {"body": "u8g2.DrawDisc(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawDisc(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawDisc(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawDisc"}, "u8g2.DrawEllipse": {"body": "u8g2.DrawEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawEllipse(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawEllipse"}, "u8g2.DrawFilledEllipse": {"body": "u8g2.DrawFilledEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawFilledEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawFilledEllipse(60,30,8,15)\n", "prefix": "u8g2.DrawFilledEllipse"}, "u8g2.DrawBox": {"body": "u8g2.DrawBox(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawBox(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u586b\u5145\u7684\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawBox(3,7,25,15)\n", "prefix": "u8g2.DrawBox"}, "u8g2.DrawFrame": {"body": "u8g2.DrawFrame(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawFrame(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u7a7a\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawFrame(3,7,25,15)\n", "prefix": "u8g2.DrawFrame"}, "u8g2.DrawRBox": {"body": "u8g2.DrawRBox(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRBox(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u586b\u5145\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRBox(3,7,25,15)\n", "prefix": "u8g2.DrawRBox"}, "u8g2.DrawRFrame": {"body": "u8g2.DrawRFrame(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRFrame(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u7a7a\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRFrame(3,7,25,15)\n", "prefix": "u8g2.DrawRFrame"}, "u8g2.DrawGlyph": {"body": "u8g2.DrawGlyph(${1:x},${2:y},${3:encoding})", "description": "u8g2.DrawGlyph(x,y,encoding) - \u7ed8\u5236\u4e00\u4e2a\u56fe\u5f62\u5b57\u7b26\u3002\u5b57\u7b26\u653e\u7f6e\u5728\u6307\u5b9a\u7684\u50cf\u7d20\u4f4d\u7f6ex\u548cy.\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u7684Unicode\u503c\n\u4f8b\u5b50\uff1a\nu8g2.SetFont(u8g2_font_unifont_t_symbols)\nu8g2.DrawGlyph(5, 20, 0x2603) -- dec 9731/hex 2603 Snowman\n", "prefix": "u8g2.DrawGlyph"}, "u8g2.DrawTriangle": {"body": "u8g2.DrawTriangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:x2},${6:y2})", "description": "u8g2.DrawTriangle(x0,y0,x1,y1,x2,y2) - \u7ed8\u5236\u4e00\u4e2a\u4e09\u89d2\u5f62\uff08\u5b9e\u5fc3\u591a\u8fb9\u5f62\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u70b90X\u4f4d\u7f6e\nint \u70b90Y\u4f4d\u7f6e\nint \u70b91X\u4f4d\u7f6e\nint \u70b91Y\u4f4d\u7f6e\nint \u70b92X\u4f4d\u7f6e\nint \u70b92Y\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nu8g2.DrawTriangle(20,5, 27,50, 5,32)\n", "prefix": "u8g2.DrawTriangle"}, "u8g2.SetBitmapMode": {"body": "u8g2.SetBitmapMode(${1:mode})", "description": "u8g2.SetBitmapMode(mode) - \u5b9a\u4e49\u4f4d\u56fe\u51fd\u6570\u662f\u5426\u5c06\u5199\u5165\u80cc\u666f\u8272\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetBitmapMode(1)\n", "prefix": "u8g2.SetBitmapMode"}, "u8g2.DrawXBM": {"body": "u8g2.DrawXBM(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "u8g2.DrawXBM(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nu8g2.DrawXBM(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "u8g2.DrawXBM"}, "u8g2.DrawDrcode": {"body": "u8g2.DrawDrcode(${1:x},${2:y},${3:str},${4:size})", "description": "u8g2.DrawDrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.DrawDrcode"}, "u8g2.SetContrast": {"body": "u8g2.SetContrast(${1:contrast})", "description": "u8g2.SetContrast(contrast) - \u8c03\u6574\u5c4f\u5e55\u5bf9\u6bd4\u5ea6\n\u4f20\u5165\u503c\uff1a\nint \u5bf9\u6bd4\u5ea6\uff08\u53d6\u503c\u8303\u56f4\u4e0eIC\u6709\u5173\uff0c\u5982st7567\u4e3a0-63\uff09\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.SetContrast"}, "u8g2.drawGtfontGb2312": {"body": "u8g2.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontGb2312"}, "u8g2.drawGtfontUtf8": {"body": "u8g2.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontUtf8"}, "u8g2.CopyBuffer": {"body": "u8g2.CopyBuffer(${1:buff})", "description": "u8g2.CopyBuffer(buff) - \u83b7\u53d6\u5e95\u5c42\u56fe\u50cf\u7f13\u51b2\u533a\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f8b,\u7a7a\u95f4\u8981\u5927\u4e8e\u7b49\u4e8e\u5e95\u5c42buff\u7684\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56debuff\u5927\u5c0f,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728u8g2\u521d\u59cb\u5316\u4e4b\u540e\u624d\u80fd\u8c03\u7528\n\n-- \u83b7\u53d6\u5927\u5c0f\nlocal sz = u8g2.CopyBuffer()\n\n-- \u62f7\u8d1d\u5e95\u5c42buff\nlocal buff = zbuff.create(sz)\nu8g2.CopyBuffer(buff)\n\n", "prefix": "u8g2.CopyBuffer"}, "u8g2.SetPowerSave": {"body": "u8g2.SetPowerSave(${1:is_enable})", "description": "u8g2.SetPowerSave(is_enable) - \u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nboolean \u542f\u7528\u4e0e\u5426. true \u542f\u7528, false\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2023.11.02\u65b0\u589e\n-- \u5f00\u542f\u7701\u7535\nu8g2.SetPowerSave(true)\n-- \u5173\u95ed\u7701\u7535\nu8g2.SetPowerSave(false)\n", "prefix": "u8g2.SetPowerSave"}, "uart.setup": {"body": "uart.setup(${1:id},${2:baud_rate},${3:data_bits},${4:stop_bits},${5:partiy},${6:bit_order},${7:buff_size},${8:rs485_gpio},${9:rs485_level},${10:rs485_delay},${11:debug_enable},${12:error_drop})", "description": "uart.setup(id, baud_rate, data_bits, stop_bits, partiy, bit_order, buff_size, rs485_gpio, rs485_level, rs485_delay, debug_enable, error_drop) - \u914d\u7f6e\u4e32\u53e3\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8, \u6700\u5927\u503c\u53d6\u51b3\u4e8e\u8bbe\u5907\nint \u6ce2\u7279\u7387, \u9ed8\u8ba4115200\uff0c\u53ef\u9009\u62e9\u6ce2\u7279\u7387\u8868:{2000000,921600,460800,230400,115200,57600,38400,19200,9600,4800,2400}\nint \u6570\u636e\u4f4d\uff0c\u9ed8\u8ba4\u4e3a8, \u53ef\u9009 7/8\nint \u505c\u6b62\u4f4d\uff0c\u9ed8\u8ba4\u4e3a1, \u6839\u636e\u5b9e\u9645\u60c5\u51b5\uff0c\u53ef\u4ee5\u67090.5/1/1.5/2\u7b49\nint \u6821\u9a8c\u4f4d\uff0c\u53ef\u9009 uart.None/uart.Even/uart.Odd\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4\u5c0f\u7aef uart.LSB, \u53ef\u9009 uart.MSB\nint \u7f13\u51b2\u533a\u5927\u5c0f\uff0c\u9ed8\u8ba4\u503c1024\nint 485\u6a21\u5f0f\u4e0b\u7684\u8f6c\u6362GPIO, \u9ed8\u8ba4\u503c0xffffffff\nint 485\u6a21\u5f0f\u4e0b\u7684rx\u65b9\u5411GPIO\u7684\u7535\u5e73, \u9ed8\u8ba4\u503c0\nint 485\u6a21\u5f0f\u4e0btx\u5411rx\u8f6c\u6362\u7684\u5ef6\u8fdf\u65f6\u95f4\uff0c\u9ed8\u8ba4\u503c12bit\u7684\u65f6\u95f4\uff0c\u5355\u4f4dus, 9600\u6ce2\u7279\u7387\u586b20000\nint \u5f00\u542f\u8c03\u8bd5\u529f\u80fd\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.DEBUG\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\nint \u9047\u5230\u63a5\u6536\u9519\u8bef\u662f\u5426\u653e\u5f03\u7f13\u5b58\u6570\u636e\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.ERROR_DROP\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5931\u8d25\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u6700\u5e38\u7528115200 8N1\nuart.setup(1, 115200, 8, 1, uart.NONE)\n-- \u53ef\u4ee5\u7b80\u5199\u4e3a uart.setup(1)\n\n-- 485\u81ea\u52a8\u5207\u6362, \u9009\u53d6GPIO10\u4f5c\u4e3a\u6536\u53d1\u8f6c\u6362\u811a\nuart.setup(1, 115200, 8, 1, uart.NONE, uart.LSB, 1024, 10, 0, 2000)\n-- \u9047\u5230\u63a5\u6536\u9519\u8bef\u4e0d\u629b\u5f03\u7f13\u5b58\u6570\u636e\nuart.setup(1, 115200, 8, 1, uart.NONE, nil, 1024, nil, nil, nil, nil, 0)\n", "prefix": "uart.setup"}, "uart.write": {"body": "uart.write(${1:id},${2:data})", "description": "uart.write(id, data) - \u5199\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring/zbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u5168\u53d1\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u5199\u5165\u53ef\u89c1\u5b57\u7b26\u4e32\nuart.write(1, \"rdy\\r\\n\")\n-- \u5199\u5165\u5341\u516d\u8fdb\u5236\u7684\u6570\u636e\u4e32\nuart.write(1, string.char(0x55,0xAA,0x4B,0x03,0x86))\n", "prefix": "uart.write"}, "uart.read": {"body": "uart.read(${1:id},${2:len})", "description": "uart.read(id, len) - \u8bfb\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nint \u8bfb\u53d6\u957f\u5ea6\nfile/zbuff \u53ef\u9009\uff1a\u6587\u4ef6\u53e5\u67c4\u6216zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u5230\u7684\u6570\u636e / \u4f20\u5165zbuff\u65f6\uff0c\u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.read(1, 16)\n", "prefix": "uart.read"}, "uart.close": {"body": "uart.close(${1:id})", "description": "uart.close(id) - \u5173\u95ed\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.close(1)\n", "prefix": "uart.close"}, "uart.on": {"body": "uart.on(${1:id},${2:event},${3:func})", "description": "uart.on(id, event, func) - \u6ce8\u518c\u4e32\u53e3\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.on(1, \"receive\", function(id, len)\n local data = uart.read(id, len)\n log.info(\"uart\", id, len, data)\nend)\n", "prefix": "uart.on"}, "uart.wait485": {"body": "uart.wait485(${1:id})", "description": "uart.wait485(id) - \u7b49\u5f85485\u6a21\u5f0f\u4e0bTX\u5b8c\u6210\uff0cmcu\u4e0d\u652f\u6301\u4e32\u53e3\u53d1\u9001\u79fb\u4f4d\u5bc4\u5b58\u5668\u7a7a\u6216\u8005\u7c7b\u4f3c\u4e2d\u65ad\u65f6\u624d\u9700\u8981\uff0c\u5728sent\u4e8b\u4ef6\u56de\u8c03\u540e\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u7b49\u5f85\u4e86\u591a\u5c11\u6b21\u5faa\u73af\u624d\u7b49\u5230tx\u5b8c\u6210\uff0c\u7528\u4e8e\u7c97\u52a3\u7684\u89c2\u5bdfdelay\u65f6\u95f4\u662f\u5426\u8db3\u591f\uff0c\u8fd4\u56de\u4e0d\u4e3a0\u8bf4\u660e\u8fd8\u9700\u8981\u653e\u5927delay\n", "prefix": "uart.wait485"}, "uart.exist": {"body": "uart.exist(${1:id})", "description": "uart.exist(id) - \u68c0\u67e5\u4e32\u53e3\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue\n", "prefix": "uart.exist"}, "uart.rx": {"body": "uart.rx(${1:id},${2:buff})", "description": "uart.rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u4e32\u53e3\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.rx(1, buff)\n", "prefix": "uart.rx"}, "uart.rxSize": {"body": "uart.rxSize(${1:id})", "description": "uart.rxSize(id) - \u8bfb\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal size = uart.rxSize(1)\n", "prefix": "uart.rxSize"}, "uart.rxClear": {"body": "uart.rxClear(${1:id})", "description": "uart.rxClear(id) - \u6e05\u9664\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u4f8b\u5b50\uff1a\nuart.rxClear(1)\n", "prefix": "uart.rxClear"}, "uart.tx": {"body": "uart.tx(${1:id},${2:buff},${3:start},${4:len})", "description": "uart.tx(id, buff, start, len) - buff\u5f62\u5f0f\u5199\u4e32\u53e3,\u7b49\u540c\u4e8ec\u8bed\u8a00uart_tx(uart_id, &buff[start], len);\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nuart.tx(1, buf)\n", "prefix": "uart.tx"}, "uart.createSoft": {"body": "uart.createSoft(${1:tx_pin},${2:tx_hwtimer_id},${3:rx_pin},${4:rx_hwtimer_id},${5:adjust_period})", "description": "uart.createSoft(tx_pin, tx_hwtimer_id, rx_pin, rx_hwtimer_id, adjust_period) - \u8bbe\u7f6e\u8f6f\u4ef6uart\u7684\u786c\u4ef6\u914d\u7f6e\uff0c\u53ea\u6709\u652f\u6301\u786c\u4ef6\u5b9a\u65f6\u5668\u7684SOC\u624d\u80fd\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e00\u4e2a\uff0c\u6ce2\u7279\u7387\u6839\u636e\u5e73\u53f0\u7684\u8f6f\u786c\u4ef6\u914d\u7f6e\u6709\u4e0d\u540c\u7684\u6781\u9650\uff0c\u5efa\u8bae9600\uff0c\u63a5\u6536\u7f13\u5b58\u4e0d\u8d85\u8fc765535\uff0c\u4e0d\u652f\u6301MSB\uff0c\u652f\u6301485\u81ea\u52a8\u63a7\u5236\u3002\u540e\u7eed\u4ecd\u8981setup\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u53d1\u9001\u5f15\u811a\u7f16\u53f7\nint \u53d1\u9001\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u63a5\u6536\u5f15\u811a\u7f16\u53f7\nint \u63a5\u6536\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u53d1\u9001\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\nint \u63a5\u6536\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\n\u8fd4\u56de\u503c\uff1a\nint \u8f6f\u4ef6uart\u7684id\uff0c\u5982\u679c\u5931\u8d25\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6uart\nlocal uart_id = uart.createSoft(21, 0, 1, 2) --air780e\u5efa\u8bae\u7528\u5b9a\u65f6\u56680\u548c2\uff0ctx_pin\u6700\u597d\u7528AGPIO\uff0c\u9632\u6b62\u4f11\u7720\u65f6\u8bef\u89e6\u53d1\u5bf9\u7aefRX\n", "prefix": "uart.createSoft"}, "uart.list": {"body": "uart.list(${1:max})", "description": "uart.list(max) - \u83b7\u53d6\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\uff0c\u5f53\u524d\u4ec5\u9650win32\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4256\uff0c\u6700\u591a\u83b7\u53d6\u591a\u5c11\u4e2a\u4e32\u53e3\n\u8fd4\u56de\u503c\uff1a\ntable \u83b7\u53d6\u5230\u7684\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\n", "prefix": "uart.list"}, "usbapp.set_id": {"body": "usbapp.set_id(${1:id},${2:vid},${3:pid})", "description": "usbapp.set_id(id, vid, pid) - USB \u8bbe\u7f6eVID\u548cPID\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint vid \u5c0f\u7aef\u683c\u5f0f\nint pid \u5c0f\u7aef\u683c\u5f0f\n\u4f8b\u5b50\uff1a\nusbapp.set_id(0, 0x1234, 0x5678)\n", "prefix": "usbapp.set_id"}, "usbapp.hid_mode": {"body": "usbapp.hid_mode(${1:id},${2:mode},${3:buff_size})", "description": "usbapp.hid_mode(id, mode, buff_size) - USB HID\u8bbe\u5907\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint mode\uff0c\u76ee\u524d0\u662f\u952e\u76d8\uff0c1\u662f\u81ea\u5b9a\u4e49\nint buff_size\uff0c\u53ea\u80fd\u662f8,16,32,64\uff0c\u5982\u679c\u662f\u952e\u76d8\u6a21\u5f0f\u6216\u8005\u586b\u4e86\u5176\u4ed6\u503c\uff0c\u81ea\u52a8\u4e3a8\n\u4f8b\u5b50\uff1a\nusbapp.hid_mode(0, 0) -- usb hid\u952e\u76d8\u6a21\u5f0f\nusbapp.hid_mode(0, 1) -- usb hid\u81ea\u5b9a\u4e49\u6a21\u5f0f\uff0c\u7528\u4e8e\u514d\u9a71USB\u4ea4\u4e92\n", "prefix": "usbapp.hid_mode"}, "usbapp.start": {"body": "usbapp.start(${1:id})", "description": "usbapp.start(id) - \u542f\u52a8USB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u542f\u52a8USB\nusbapp.start(0)\n", "prefix": "usbapp.start"}, "usbapp.stop": {"body": "usbapp.stop(${1:id})", "description": "usbapp.stop(id) - \u5173\u95edUSB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\nusbapp.stop(0)\n", "prefix": "usbapp.stop"}, "usbapp.vhid_upload": {"body": "usbapp.vhid_upload(${1:id},${2:data})", "description": "usbapp.vhid_upload(id, data) - USB HID\u8bbe\u5907\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring \u6570\u636e. \u6ce8\u610f, HID\u7684\u53ef\u7528\u5b57\u7b26\u662f\u6709\u9650\u5236\u7684, \u57fa\u672c\u4e0a\u53ea\u6709\u53ef\u89c1\u5b57\u7b26\u662f\u652f\u6301\u7684, \u4e0d\u652f\u6301\u7684\u5b57\u7b26\u4f1a\u66ff\u6362\u4e3a\u7a7a\u683c.\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.vhid_upload(0, \"1234\") -- usb hid\u4f1a\u6a21\u62df\u6572\u51fa1234\n", "prefix": "usbapp.vhid_upload"}, "usbapp.hid_tx": {"body": "usbapp.hid_tx(${1:id},${2:data},${3:start},${4:len})", "description": "usbapp.hid_tx(id, data, start, len) - USB HID\u8bbe\u5907\u4e0a\u4f20\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring or zbuff \u6ce8\u610f\u6570\u636e\u91cf\u4e0d\u8db3\u65f6\u4f1a\u81ea\u52a8\u586b\u51450\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.hid_tx(0, \"1234\") -- usb hid\u4e0a\u4f200x31 0x32 0x33 0x34 + N\u4e2a0\n", "prefix": "usbapp.hid_tx"}, "usbapp.hid_rx": {"body": "usbapp.hid_rx(${1:id},${2:buff})", "description": "usbapp.hid_rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u63a5\u6536\u5230\u7684\u6570\u636e\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524d\u53ea\u6709air105\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nusbapp.hid_rx(0, buff)\n", "prefix": "usbapp.hid_rx"}, "usbapp.vhid_cancel_upload": {"body": "usbapp.vhid_cancel_upload(${1:id})", "description": "usbapp.vhid_cancel_upload(id) - USB HID\u8bbe\u5907\u53d6\u6d88\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6d88\u4e0a\u4f20\u6570\u636e,\u901a\u5e38\u4e0d\u9700\u8981\nusbapp.vhid_cancel_upload(0)\n", "prefix": "usbapp.vhid_cancel_upload"}, "usbapp.udisk_attach_sdhc": {"body": "usbapp.udisk_attach_sdhc(${1:id})", "description": "usbapp.udisk_attach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_attach_sdhc(0)\n", "prefix": "usbapp.udisk_attach_sdhc"}, "usbapp.udisk_detach_sdhc": {"body": "usbapp.udisk_detach_sdhc(${1:id})", "description": "usbapp.udisk_detach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u53bb\u9664\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_detach_sdhc(0)\n", "prefix": "usbapp.udisk_detach_sdhc"}, "w5500.init": {"body": "w5500.init(${1:spiid},${2:speed},${3:cs_pin},${4:irq_pin},${5:rst_pin},${6:link_pin})", "description": "w5500.init(spiid, speed, cs_pin, irq_pin, rst_pin, link_pin) - \u521d\u59cb\u5316w5500\n\u4f20\u5165\u503c\uff1a\nint spi\u901a\u9053\u53f7, \u4f8b\u5982 0, 1, 5, \u6309\u8bbe\u5907\u5b9e\u9645\u60c5\u51b5\u9009\nint spi\u901f\u5ea6, \u53ef\u4ee5\u8bbe\u7f6e\u5230\u5bf9\u5e94SPI\u7684\u6700\u9ad8\u901f\u5ea6\nint cs pin, \u7247\u9009\u811a, \u5bf9\u5e94W5500\u7684SCS\nint irq pin, \u4e2d\u65ad\u811a, \u5bf9\u5e94W5500\u7684INT\nint reset pin, \u590d\u4f4d\u811a, \u5bf9\u5e94W5500\u7684RST\nint link \u72b6\u6001 pin\uff0c\u53ef\u4ee5\u7559\u7a7a\u4e0d\u4f7f\u7528\uff0c\u9ed8\u8ba4\u4e0d\u4f7f\u7528\n\u4f8b\u5b50\uff1a\nw5500.init(spi.SPI_0, 24000000, pin.PB13, pin.PC08, pin.PC09)\n", "prefix": "w5500.init"}, "w5500.config": {"body": "w5500.config(${1:ip},${2:submask},${3:gateway},${4:mac},${5:RTR},${6:RCR},${7:speed})", "description": "w5500.config(ip, submask, gateway, mac, RTR, RCR, speed) - w5500\u914d\u7f6e\u7f51\u7edc\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9759\u6001ip\u5730\u5740\uff0c\u5982\u679c\u9700\u8981\u7528DHCP\u83b7\u53d6\uff0c\u8bf7\u5199nil\nstring \u5b50\u7f51\u63a9\u7801\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring \u7f51\u5173\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring MAC\uff0c\u5199nil\u5219\u901a\u8fc7MCU\u552f\u4e00\u7801\u81ea\u52a8\u751f\u6210\uff0c\u5982\u679c\u8981\u5199\uff0c\u957f\u5ea6\u5fc5\u987b\u662f6byte\nint \u91cd\u8bd5\u95f4\u9694\u65f6\u95f4\uff0c\u9ed8\u8ba42000\uff0c\u5355\u4f4d100us\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u6700\u5927\u91cd\u8bd5\u6b21\u6570\uff0c\u9ed8\u8ba48\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u901f\u5ea6\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u67090\u786c\u4ef6\u914d\u7f6e\uff0c1\u81ea\u9002\u5e94\uff0c\u9ed8\u8ba4\u4e3a0\n\u4f8b\u5b50\uff1a\nw5500.config(\"192.168.1.2\", \"255.255.255.0\", \"192.168.1.1\", string.fromHex(\"102a3b4c5d6e\"))\n", "prefix": "w5500.config"}, "w5500.bind": {"body": "w5500.bind(${1:id})", "description": "w5500.bind(id) - \u5c06w5500\u6ce8\u518c\u8fdb\u901a\u7528\u7f51\u7edc\u63a5\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u901a\u7528\u7f51\u7edc\u901a\u9053\u53f7\n\u4f8b\u5b50\uff1a\n-- \u82e5\u4f7f\u7528\u7684\u7248\u672c\u4e0d\u5e26socket\u5e93, \u6539\u6210 network.ETH0\nw5500.bind(socket.ETH0)\n", "prefix": "w5500.bind"}, "w5500.getMac": {"body": "w5500.getMac()", "description": "w5500.getMac() - \u83b7\u53d6w5500\u5f53\u524d\u7684MAC\uff0c\u5fc5\u987b\u5728init\u4e4b\u540e\u7528\uff0c\u5982\u679cconfig\u4e2d\u8bbe\u7f6e\u4e86\u81ea\u5df1\u7684MAC\uff0c\u9700\u8981\u5ef6\u8fdf\u4e00\u70b9\u65f6\u95f4\u518d\u8bfb\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MAC\n\u4f8b\u5b50\uff1a\nlocal mac = w5500.getMac()\nlog.info(\"w5500 mac\", mac:toHex())\n", "prefix": "w5500.getMac"}, "wdt.init": {"body": "wdt.init(${1:timeout})", "description": "wdt.init(timeout) - \u521d\u59cb\u5316watchdog\u5e76\u9a6c\u4e0a\u542f\u7528.\u5927\u90e8\u5206\u8bbe\u5907\u7684watchdog\u4e00\u65e6\u542f\u7528\u5c31\u65e0\u6cd5\u5173\u95ed.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(9000)\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.init"}, "wdt.setTimeout": {"body": "wdt.setTimeout(${1:timeout})", "description": "wdt.setTimeout(timeout) - \u90e8\u5206\u8bbe\u5907\u652f\u6301\u91cd\u65b0\u8bbe\u7f6ewatchdog\u8d85\u65f6\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.timerLoopStart(wdt.feed, 3000)\nsys.wait(5000)\nsys.setTimeout(5000)\n", "prefix": "wdt.setTimeout"}, "wdt.feed": {"body": "wdt.feed()", "description": "wdt.feed() - \u5582\u72d7,\u4f7f\u5f97\u8d85\u65f6\u8ba1\u65f6\u590d\u4f4d,\u91cd\u65b0\u8ba1\u65f6\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\n-- \u5b9a\u65f6\u5582\u72d7,\u6216\u8005\u6839\u636e\u4e1a\u52a1\u6309\u9700\u5582\u72d7\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.feed"}, "wdt.close": {"body": "wdt.close()", "description": "wdt.close() - \u5173\u95edwatchdog,\u901a\u5e38\u4e0d\u88ab\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.wait(9000)\nwdt.close()\n", "prefix": "wdt.close"}, "wsc:debug": {"body": "wsc:debug(${1:onoff})", "description": "wsc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "wsc:debug"}, "websocket.create": {"body": "websocket.create(${1:adapter},${2:url},${3:keepalive},${4:use_ipv6})", "description": "websocket.create(adapter, url, keepalive, use_ipv6) - websocket\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53c2\u8003socket\u5e93\u7684\u5e38\u91cf,\u9ed8\u8ba4\u4e3anil,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f\nstring \u8fde\u63a5\u5b57\u7b26\u4e32,\u53c2\u8003usage\nint \u5fc3\u8df3\u95f4\u9694,\u9ed8\u8ba460\u79d2. 2024.4.28\u65b0\u589e\nboolean \u662f\u5426\u4f7f\u7528ipv6,\u9ed8\u8ba4false. 2024.6.17\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56dewebsocket\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nwsc = websocket.create(nil,\"ws://air32.cn/abc\")\n-- \u52a0\u5bc6TCP\u94fe\u63a5\nwsc = websocket.create(nil,\"wss://air32.cn/abc\")\n", "prefix": "websocket.create"}, "wsc:on": {"body": "wsc:on(${1:cb})", "description": "wsc:on(cb) - \u6ce8\u518cwebsocket\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb websocket\u56de\u8c03,\u53c2\u6570\u5305\u62ecwebsocket_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nwsc:on(function(websocket_client, event, data, payload)\n -- \u6253\u5370\u5404\u79cd\u4e8b\u4ef6\n log.info(\"websocket\", \"event\", event, data, payload)\nend)\n--[[\nevent\u7684\u503c\u6709:\n conack \u8fde\u63a5\u670d\u52a1\u5668\u6210\u529f,\u5df2\u7ecf\u6536\u5230websocket\u534f\u8bae\u5934\u90e8\u4fe1\u606f,\u901a\u4fe1\u5df2\u5efa\u7acb\n recv \u6536\u5230\u670d\u52a1\u5668\u4e0b\u53d1\u7684\u4fe1\u606f, data, payload \u4e0d\u4e3anil\n sent send\u51fd\u6570\u53d1\u9001\u7684\u6d88\u606f,\u670d\u52a1\u5668\u5728TCP\u534f\u8bae\u5c42\u5df2\u786e\u8ba4\u6536\u5230\n disconnect \u670d\u52a1\u5668\u8fde\u63a5\u5df2\u65ad\u5f00\n\n\u5176\u4e2d sent/disconnect \u4e8b\u4ef6\u5728 2023.04.01 \u65b0\u589e\n]]\n", "prefix": "wsc:on"}, "wsc:connect": {"body": "wsc:connect()", "description": "wsc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nwsc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65adwebsocket\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "wsc:connect"}, "wsc:autoreconn": {"body": "wsc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "wsc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nwsc:autoreconn(true)\n", "prefix": "wsc:autoreconn"}, "wsc:send": {"body": "wsc:send(${1:data},${2:fin},${3:opt})", "description": "wsc:send(data, fin, opt) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e,\u5fc5\u586b\nint \u662f\u5426\u4e3a\u6700\u540e\u4e00\u5e27,\u9ed8\u8ba41,\u5373\u9a6c\u4e0a\u8bbe\u7f6e\u4e3a\u6700\u540e\u4e00\u5e27, \u4e5f\u5c31\u662f\u5355\u5e27\u53d1\u9001\nint \u64cd\u4f5c\u7801, \u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5e270, \u53ef\u90091\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u4e3afalse\u6216\u8005nil\n\u4f8b\u5b50\uff1a\n-- \u7b80\u5355\u53d1\u9001\u6570\u636e\nwsc:send(\"123\")\n-- \u5206\u6bb5\u53d1\u9001\u6570\u636e, \u6700\u540e\u8981\u75281(\u5373FIN\u5e27\u7ed3\u675f)\nwsc:send(\"123\", 0)\nwsc:send(\"456\", 0)\nwsc:send(\"789\", 1)\n", "prefix": "wsc:send"}, "wsc:close": {"body": "wsc:close()", "description": "wsc:close() - websocket\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nwsc:close()\n", "prefix": "wsc:close"}, "wsc:ready": {"body": "wsc:ready()", "description": "wsc:ready() - websocket\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal stat = wsc:ready()\n", "prefix": "wsc:ready"}, "wsc:headers": {"body": "wsc:headers(${1:headers})", "description": "wsc:headers(headers) - \u8bbe\u7f6e\u989d\u5916\u7684headers\n\u4f20\u5165\u503c\uff1a\ntable/string \u53ef\u4ee5\u662ftable,\u4e5f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\n-- table\u5f62\u5f0f\nwsc:headers({\n Auth=\"Basic ABCDEFGG\"\n})\n-- \u5b57\u7b26\u4e32\u5f62\u5f0f\nwsc:headers(\"Auth: Basic ABCDERG\\r\\n\")\n", "prefix": "wsc:headers"}, "wlan.init": {"body": "wlan.init()", "description": "wlan.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.init"}, "wlan.setMode": {"body": "wlan.setMode(${1:mode})", "description": "wlan.setMode(mode) - \u8bbe\u7f6ewifi\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint wifi\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3aAP\u6a21\u5f0f, \u5e7f\u64adssid, \u63a5\u6536wifi\u5ba2\u6237\u7aef\u7684\u94fe\u63a5\nwlan.setMode(wlan.AP)\n\n-- \u8bbe\u7f6e\u4e3aSTATION\u6a21\u5f0f, \u4e5f\u662f\u521d\u59cb\u5316\u540e\u7684\u9ed8\u8ba4\u6a21\u5f0f\nwlan.setMode(wlan.STATION)\n\n-- \u6df7\u5408\u6a21\u5f0f, \u505aAP\u53c8\u505aSTATION\nwlan.setMode(wlan.APSTA)\n", "prefix": "wlan.setMode"}, "wlan.ready": {"body": "wlan.ready()", "description": "wlan.ready() - \u4f5c\u4e3aSTATION\u65f6,\u662f\u5426\u5df2\u7ecf\u8fde\u63a5\u4e0aAP,\u4e14\u83b7\u53d6IP\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nbool \u5df2\u7ecf\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.ready"}, "wlan.connect": {"body": "wlan.connect(${1:ssid},${2:password},${3:auto_reconnect},${4:bssid})", "description": "wlan.connect(ssid, password, auto_reconnect, bssid) - \u4f5c\u4e3aSTATION\u65f6,\u8fde\u63a5\u5230\u6307\u5b9aAP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684ssid\nstring AP\u7684password,\u53ef\u9009\nint 0\u5173\u95ed\u81ea\u52a8\u91cd\u8fde,1\u5f00\u542f\u81ea\u52a8\u91cd\u8fde.\u5f53\u524d\u5f3a\u5236\u5f00\u542f\u81ea\u52a8\u91cd\u8fde\nstring AP\u7684bssid,\u53ef\u9009,\u5fc5\u987b\u662f6\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u53d1\u8d77\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse.\u6ce8\u610f,\u4e0d\u4ee3\u8868\u8fde\u63a5AP\u6210\u529f!!\n\u4f8b\u5b50\uff1a\n\n-- \u666e\u901a\u6a21\u5f0f,\u5e26\u5bc6\u7801\nwlan.connect(\"myap\", \"12345678\")\n-- \u666e\u901a\u6a21\u5f0f,\u4e0d\u5e26\u5bc6\u7801\nwlan.connect(\"myap\")\n-- \u7279\u6b8a\u6a21\u5f0f, \u91cd\u7528\u4e4b\u524d\u7684ssid\u548c\u5bc6\u7801,\u672c\u6b21\u76f4\u63a5\u8fde\u63a5\n-- \u6ce8\u610f, \u524d\u63d0\u662f\u672c\u6b21\u4e0a\u7535\u540e\u5df2\u7ecf\u4f20\u8fc7ssid\u548c\u6216password,\u5426\u5219\u5fc5\u5931\u8d25\nwlan.connect()\n\n-- \u7279\u6b8a\u6a21\u5f0f, \u4f7f\u7528ssid\u548c\u5bc6\u7801,\u672c\u6b21\u8fde\u63a5\u6307\u5b9abssid, 2024.5.7\u65b0\u589e\nlocal bssid = string.fromHex(\"00182946365f\")\nwlan.connect(\"myap\", \"12345678\", 1, bssid)\n", "prefix": "wlan.connect"}, "wlan.disconnect": {"body": "wlan.disconnect()", "description": "wlan.disconnect() - \u4f5c\u4e3aSTATION\u65f6,\u65ad\u5f00AP\n", "prefix": "wlan.disconnect"}, "wlan.scan": {"body": "wlan.scan()", "description": "wlan.scan() - \u626b\u63cfwifi\u9891\u6bb5\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, wlan.scan()\u662f\u5f02\u6b65API,\u542f\u52a8\u626b\u63cf\u540e\u4f1a\u9a6c\u4e0a\u8fd4\u56de\n\n-- wifi\u626b\u63cf\u6210\u529f\u540e, \u4f1a\u6709WLAN_SCAN_DONE\u6d88\u606f, \u8bfb\u53d6\u5373\u53ef\nsys.subscribe(\"WLAN_SCAN_DONE\", function ()\n local results = wlan.scanResult()\n log.info(\"scan\", \"results\", #results)\n for k,v in pairs(results) do\n log.info(\"scan\", v[\"ssid\"], v[\"rssi\"], (v[\"bssid\"]:toHex()))\n end\nend)\n\n-- \u4e0b\u9762\u6f14\u793a\u7684\u662f\u521d\u59cb\u5316wifi\u540e\u5b9a\u65f6\u626b\u63cf,\u8bf7\u6309\u5b9e\u9645\u4e1a\u52a1\u9700\u6c42\u4fee\u6539\nsys.taskInit(function()\n sys.wait(1000)\n wlan.init()\n while 1 do\n wlan.scan()\n sys.wait(15000)\n end\nend)\n", "prefix": "wlan.scan"}, "wlan.scanResult": {"body": "wlan.scanResult()", "description": "wlan.scanResult() - \u83b7\u53d6wifi\u626b\u63cf\u7ed3\u679c\n\u8fd4\u56de\u503c\uff1a\ntable \u626b\u63cf\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6cd5\u8bf7\u67e5\u9605 wlan.scan() \u51fd\u6570\n", "prefix": "wlan.scanResult"}, "wlan.smartconfig": {"body": "wlan.smartconfig(${1:mode})", "description": "wlan.smartconfig(mode) - \u914d\u7f51\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f51\u6a21\u5f0f, \u9ed8\u8ba4\u4e3aesptouch, \u82e5\u4f200\u5219\u4e3b\u52a8\u505c\u6b62\u914d\u7f51\n\u8fd4\u56de\u503c\uff1a\nbool \u542f\u52a8\u6210\u529f\u6216\u505c\u6b62\u6210\u529f, \u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.smartconfig()\nlocal ret, ssid, passwd = sys.waitUntil(\"SC_RESULT\", 180*1000) -- \u6700\u591a\u7b493\u5206\u949f\nlog.info(\"sc\", ret, ssid, passwd)\n-- \u8be6\u7ec6\u7528\u6cd5\u8bf7\u67e5\u770bdemo\n", "prefix": "wlan.smartconfig"}, "wlan.getMac": {"body": "wlan.getMac(${1:tp},${2:hexstr})", "description": "wlan.getMac(tp, hexstr) - \u83b7\u53d6mac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nbool \u662f\u5426\u8f6cHEX\u5b57\u7b26, \u9ed8\u8ba4\u662ftrue,\u5373\u8f93\u51fahex\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring MAC\u5730\u5740,\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5f62\u5f0f \"AABBCCDDEEFF\" \u6216\u539f\u59cb\u6570\u636e\n", "prefix": "wlan.getMac"}, "wlan.setMac": {"body": "wlan.setMac(${1:tp},${2:mac})", "description": "wlan.setMac(tp, mac) - \u8bbe\u7f6emac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730\nstring \u5f85\u8bbe\u7f6e\u7684MAC\u5730\u5740,\u957f\u5ea66\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6eMAC\u5730\u5740, 2023-03-01\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"F01122334455\")\nwlan.setMac(0, mac)\n\n-- \u90e8\u5206\u6a21\u5757\u652f\u6301\u6062\u590d\u9ed8\u8ba4MAC, \u4f8b\u5982esp32\u7cfb\u5217\n-- \u57282023-11-01 \u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"000000000000\")\nwlan.setMac(0, mac)\n", "prefix": "wlan.setMac"}, "wlan.getIP": {"body": "wlan.getIP()", "description": "wlan.getIP() - \u83b7\u53d6ip,\u4ec5STATION\u6216APSTA\u6a21\u5f0f\u4e0b\u6709\u610f\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring ip\u5730\u5740,\u5f53\u524d\u4ec5\u8fd4\u56deipv4\u5730\u5740,\u4f8b\u5982 \"192.168.1.25\"\n", "prefix": "wlan.getIP"}, "wlan.createAP": {"body": "wlan.createAP(${1:ssid},${2:passwd},${3:gateway},${4:netmask},${5:channel},${6:opts})", "description": "wlan.createAP(ssid, passwd, gateway, netmask, channel, opts) - \u542f\u52a8AP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684SSID,\u5fc5\u586b\nstring AP\u7684\u5bc6\u7801,\u53ef\u9009\nstring AP\u7684\u7f51\u5173\u5730\u5740, \u9ed8\u8ba4192.168.4.1\nstring AP\u7684\u7f51\u5173\u63a9\u7801, \u9ed8\u8ba4255.255.255.0\nint AP\u5efa\u7acb\u7684\u901a\u9053, \u9ed8\u8ba46\ntable AP\u7684\u914d\u7f6e\u9009\u9879, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u8c03\u7528\u672cAP\u65f6,\u82e5wifi\u6a21\u5f0f\u4e3aSTATION,\u4f1a\u81ea\u52a8\u5207\u6362\u6210 APSTA\nwlan.createAP(\"luatos1234\", \"12341234\")\n-- \u8bbe\u7f6e\u7f51\u5173IP,\u63a9\u7801, \u901a\u9053, 2023.7.13 \u65b0\u589e, BSP\u672a\u5fc5\u652f\u6301\n-- wlan.createAP(\"luatos1234\", \"12341234\", \"192.168.4.1\", \"255.255.255.0\", 6)\n\n-- opts\u66f4\u591a\u914d\u7f6e\u9879, 2024.3.5\u65b0\u589e\n--[[\n{\n hidden = false, -- \u662f\u5426\u9690\u85cfSSID, \u9ed8\u8ba4false,\u4e0d\u9690\u85cf\n max_conn = 4 -- \u6700\u5927\u5ba2\u6237\u7aef\u6570\u91cf, \u9ed8\u8ba44\n}\n]]\n", "prefix": "wlan.createAP"}, "wlan.stopAP": {"body": "wlan.stopAP()", "description": "wlan.stopAP() - \u5173\u95edAP\u529f\u80fd\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.stopAP()\n", "prefix": "wlan.stopAP"}, "wlan.getInfo": {"body": "wlan.getInfo()", "description": "wlan.getInfo() - \u83b7\u53d6\u4fe1\u606f,\u5982AP\u7684bssid,\u4fe1\u53f7\u5f3a\u5ea6, STA\u8054\u7f51\u540e\u53ef\u83b7\u53d6\n\u8fd4\u56de\u503c\uff1a\ntable \u8be6\u60c5,\u952e\u503c\u5bf9\u5f62\u5f0f\n\u4f8b\u5b50\uff1a\n\nlog.info(\"wlan\", \"info\", json.encode(wlan.getInfo()))\n--[[\n\u5178\u578b\u8f93\u51fa\n{\n \"bssid\" : \"xxxxxx\",\n \"rssi\" : -89,\n \"gw\" : \"192.168.1.1\"\n}\n]]\n", "prefix": "wlan.getInfo"}, "wlan.powerSave": {"body": "wlan.powerSave(${1:mode})", "description": "wlan.powerSave(mode) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7701\u7535\u6a21\u5f0f,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e, \u4f8b\u5982wlan.PS_NONE\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7701\u7535\u6a21\u5f0f/\u8bbe\u7f6e\u540e\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u67e5\u9605\u5e38\u91cf\u8868 PS_NONE/PS_MIN_MODEM/PS_MAX_MODEM\nlog.info(\"wlan\", \"PS\", wlan.powerSave(wlan.PS_NONE))\n-- \u672cAPI\u4e8e 2023.03.31 \u65b0\u589e\n", "prefix": "wlan.powerSave"}, "wlan.hostname": {"body": "wlan.hostname(${1:new_name})", "description": "wlan.hostname(new_name) - \u8bfb\u53d6\u6216\u8bbe\u7f6eHostname\n\u4f20\u5165\u503c\uff1a\nstring \u65b0\u7684hostname,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684hostname\u6216\u8005\u8bbe\u7f6e\u540e\u7684hostname\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.07.23 \u65b0\u589e\n-- \u672c\u51fd\u6570\u5e94\u8be5\u5728wlan.init\u4e4b\u524d\u8bbe\u7f6e\u597d, \u6700\u665a\u5e94\u65e9\u4e8ewlan.connect\n-- hostname\u7684\u9ed8\u8ba4\u503c\u662f \"LUATOS_\" + \u8bbe\u5907\u7684MAC\u503c\n-- \u4f8b\u5982: LUATOS_0022EECC2399\n\nwlan.hostname(\"\u6211\u7684wifi\u7269\u8054\u7f51\u8bbe\u5907\")\n", "prefix": "wlan.hostname"}, "wlan.staIp": {"body": "wlan.staIp(${1:dhcp_enable},${2:ip},${3:netmask},${4:gateway})", "description": "wlan.staIp(dhcp_enable, ip, netmask, gateway) - \u8bbe\u7f6eStation\u6a21\u5f0f\u4e0b\u7684IP\u83b7\u53d6\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u542f\u7528DHCP,\u9ed8\u8ba4\u662ftrue\nstring \u672c\u673aIP\u5730\u5740,\u4f8b\u5982192.168.2.200, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u63a9\u7801,\u4f8b\u5982255.255.255.0, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u7f51\u5173,\u4f8b\u5982192.168.2.1, \u7981\u7528DHCP\u65f6\u5fc5\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.06 \u65b0\u589e\n-- \u672c\u51fd\u6570\u9700\u8981\u5728wlan.init\u4e4b\u540e\u624d\u5141\u8bb8\u8c03\u7528\n\n-- \u542f\u7528DHCP, \u9ed8\u8ba4\u4e5f\u662f\u542f\u7528DHCP,\u8fd9\u91cc\u662f\u6f14\u793aAPI\u4f7f\u7528\nwlan.staIp(true)\n-- \u7981\u7528DHCP,\u81ea\u884c\u8bbe\u7f6eIP/\u63a9\u7801/\u7f51\u5173\nwlan.staIp(false, \"192.168.2.200\", \"255.255.255.0\", \"192.168.2.1\")\n", "prefix": "wlan.staIp"}, "xxtea.encrypt": {"body": "xxtea.encrypt(${1:data},${2:key})", "description": "xxtea.encrypt(data, key) - \u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u52a0\u5bc6\u7684\u6570\u636e\nstring key \u52a0\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.encrypt"}, "xxtea.decrypt": {"body": "xxtea.decrypt(${1:data},${2:key})", "description": "xxtea.decrypt(data, key) - \u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u89e3\u5bc6\u7684\u6570\u636e\nstring key \u89e3\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.decrypt"}, "ymodem.create": {"body": "ymodem.create(${1:dir_path},${2:file_path})", "description": "ymodem.create(dir_path,file_path) - \u521b\u5efa\u4e00\u4e2aymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nstring \u4fdd\u5b58\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\"/\"\nstring \u5f3a\u5236\u4fdd\u5b58\u7684\u7edd\u5bf9\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\u7a7a\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\uff0c\u5c31\u4f1a\u76f4\u63a5\u4fdd\u5b58\u5728\u8be5\u6587\u4ef6\u4e2d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nlocal handler = ymodem.create(\"/\")\n", "prefix": "ymodem.create"}, "ymodem.receive": {"body": "ymodem.receive(${1:handler},${2:data})", "description": "ymodem.receive(handler, data) - ymodem\u63a5\u6536\u6587\u4ef6\u6570\u636e\u5e76\u4fdd\u5b58\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\nzbuff/string \u8f93\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue\uff0c\u5931\u8d25false\nint ack\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\nint flag\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\uff0c\u5982\u679c\u6709ack\u503c\u5219\u4e0d\u53d1\u9001flag\nboolean, \u4e00\u4e2a\u6587\u4ef6\u63a5\u6536\u5b8c\u6210true\uff0c\u4f20\u8f93\u4e2dfalse\nboolean, \u6574\u4e2a\u4f20\u8f93\u5b8c\u6210true \u5426\u5219false\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u6570\u636e\u6765\u6e90\u4e0d\u9650, \u901a\u5e38\u662fuart.read\u5f97\u5230data\nno_error,ack,flag,file_done,all_done = ymodem.receive(handler, data)\n", "prefix": "ymodem.receive"}, "ymodem.reset": {"body": "ymodem.reset(${1:handler})", "description": "ymodem.reset(handler) - \u91cd\u7f6eymodem\u5904\u7406\u8fc7\u7a0b\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\n\u4f8b\u5b50\uff1a\n-- \u6062\u590d\u5230\u521d\u59cb\u72b6\u6001\uff0c\u4e00\u822c\u7528\u4e8e\u63a5\u6536\u51fa\u9519\u540e\u91cd\u7f6e\uff0c\u4ece\u800c\u8fdb\u884c\u4e0b\u4e00\u6b21\u63a5\u6536\nymodem.reset(handler)\n", "prefix": "ymodem.reset"}, "ymodem.release": {"body": "ymodem.release(${1:handler})", "description": "ymodem.release(handler) - \u91ca\u653eymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nuserdata handler\n\u4f8b\u5b50\uff1a\nymodem.release(handler)\n", "prefix": "ymodem.release"}, "zbuff.create": {"body": "zbuff.create(${1:length},${2:data},${3:type})", "description": "zbuff.create(length,data,type) - \u521b\u5efazbuff\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u8282\u6570\nany \u53ef\u9009\u53c2\u6570\uff0cnumber\u65f6\u4e3a\u586b\u5145\u6570\u636e\uff0cstring\u65f6\u4e3a\u586b\u5145\u5b57\u7b26\u4e32\nnumber \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nobject zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create(1024) -- \u7a7a\u767d\u7684\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal buff = zbuff.create(1024, \"123321456654\") -- \u521b\u5efa\uff0c\u5e76\u586b\u5145\u4e00\u4e2a\u5df2\u6709\u5b57\u7b26\u4e32\u7684\u5185\u5bb9\n\n-- \u521b\u5efaframebuff\u7528\u7684zbuff\n-- zbuff.create({width,height,bit},data,type)\n-- table \u5bbd\u5ea6\u3001\u9ad8\u5ea6\u3001\u8272\u4f4d\u6df1\u5ea6\n@int \u53ef\u9009\u53c2\u6570\uff0c\u586b\u5145\u6570\u636e\n@number \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n@return object zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n@usage\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create({128,160,16})--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\nlocal buff = zbuff.create({128,160,16},0xf800)--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\uff0c\u521d\u59cb\u72b6\u6001\u7ea2\u8272\n", "prefix": "zbuff.create"}, "buff:write": {"body": "buff:write(${1:para},${2:...})", "description": "buff:write(para,...) - zbuff\u5199\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal len = buff:write(\"123\") -- \u5199\u5165\u6570\u636e, \u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\uff0c\u8fd4\u56de\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\nlocal len = buff:write(0x1a,0x30,0x31,0x32,0x00,0x01) -- \u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:write"}, "buff:read": {"body": "buff:read(${1:length})", "description": "buff:read(length) - zbuff\u8bfb\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8bfb\u53d6buff\u4e2d\u7684\u5b57\u8282\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal str = buff:read(3)\n", "prefix": "buff:read"}, "buff:clear": {"body": "buff:clear(${1:num})", "description": "buff:clear(num) - zbuff\u6e05\u7a7a\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\uff0c\u4e0d\u4f1a\u6539\u53d8buff\u6307\u9488\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:clear(0)\n", "prefix": "buff:clear"}, "buff:seek": {"body": "buff:seek(${1:base},${2:offset})", "description": "buff:seek(base,offset) - zbuff\u8bbe\u7f6e\u5149\u6807\u4f4d\u7f6e\uff08\u53ef\u80fd\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u6709\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u88ab\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\uff09\n\u4f20\u5165\u503c\uff1a\nint \u504f\u79fb\u957f\u5ea6\nint where, \u57fa\u70b9\uff0c\u9ed8\u8ba4zbuff.SEEK_SET\u3002zbuff.SEEK_SET: \u57fa\u70b9\u4e3a 0 \uff08\u6587\u4ef6\u5f00\u5934\uff09\uff0czbuff.SEEK_CUR: \u57fa\u70b9\u4e3a\u5f53\u524d\u4f4d\u7f6e\uff0czbuff.SEEK_END: \u57fa\u70b9\u4e3a\u6587\u4ef6\u5c3e\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u7f6e\u5149\u6807\u540e\u4ecebuff\u5f00\u5934\u8ba1\u7b97\u8d77\u7684\u5149\u6807\u7684\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nbuff:seek(0) -- \u628a\u5149\u6807\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\nbuff:seek(5,zbuff.SEEK_CUR)\nbuff:seek(-3,zbuff.SEEK_END)\n", "prefix": "buff:seek"}, "buff:pack": {"body": "buff:pack(${1:format},${2:val1},${3:val2},${4:...})", "description": "buff:pack(format,val1, val2,...) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8f6c\u5316\uff0c\u5e76\u5199\u5165\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u540e\u9762\u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0b\u9762\u7684\u4f8b\u5b50\uff09\nval \u4f20\u5165\u7684\u6570\u636e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nbuff:pack(\">IIHA\", 0x1234, 0x4567, 0x12,\"abcdefg\") -- \u6309\u683c\u5f0f\u5199\u5165\u51e0\u4e2a\u6570\u636e\n-- A string\n-- f float\n-- d double\n-- n Lua number\n-- c char\n-- b byte / unsignen char\n-- h short\n-- H unsigned short\n-- i int\n-- I unsigned int\n-- l long\n-- L unsigned long\n-- < \u5c0f\u7aef\n-- > \u5927\u7aef\n-- = \u9ed8\u8ba4\u5927\u5c0f\u7aef\n", "prefix": "buff:pack"}, "buff:unpack": {"body": "buff:unpack(${1:format})", "description": "buff:unpack(format) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8bfb\u53d6\u51fa\u6765\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0a\u9762pack\u63a5\u53e3\u7684\u4f8b\u5b50\uff09\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8bfb\u53d6\u7684\u6570\u636e\u5b57\u8282\u957f\u5ea6\nany \u6309\u683c\u5f0f\u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal cnt,a,b,c,s = buff:unpack(\">IIHA10\") -- \u6309\u683c\u5f0f\u8bfb\u53d6\u51e0\u4e2a\u6570\u636e\n--\u5982\u679c\u5168\u90e8\u6210\u529f\u8bfb\u53d6\uff0ccnt\u5c31\u662f4+4+2+10=20\n", "prefix": "buff:unpack"}, "buff:read\u7c7b\u578b": {"body": "buff:read\u7c7b\u578b()", "description": "buff:read\u7c7b\u578b() - \u8bfb\u53d6\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\n\u6ce8\u91ca \u8bfb\u53d6\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u8bfb\u53d6\u7684\u6570\u636e\uff0c\u5982\u679c\u8d8a\u754c\u5219\u4e3anil\n\u4f8b\u5b50\uff1a\nlocal data = buff:readI8()\nlocal data = buff:readU32()\n", "prefix": "buff:read\u7c7b\u578b"}, "buff:write\u7c7b\u578b": {"body": "buff:write\u7c7b\u578b()", "description": "buff:write\u7c7b\u578b() - \u5199\u5165\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nnumber \u5f85\u5199\u5165\u7684\u6570\u636e\n\u6ce8\u91ca \u5199\u5165\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:writeI8(10)\nlocal len = buff:writeU32(1024)\n", "prefix": "buff:write\u7c7b\u578b"}, "buff:toStr": {"body": "buff:toStr(${1:offset},${2:length})", "description": "buff:toStr(offset,length) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea6\u53d6\u51fa\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nint \u6570\u636e\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662f\u5168\u90e8\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:toStr(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\nlocal s = buff:toStr() -- \u53d6\u51fa\u6574\u4e2azbuff\u7684\u6570\u636e\nlocal s = buff:toStr(0, buff:used()) -- \u53d6\u51fa\u5df2\u4f7f\u7528\u7684\u90e8\u5206, \u4e0ebuff:query()\u4e00\u6837\n", "prefix": "buff:toStr"}, "buff:len": {"body": "buff:len()", "description": "buff:len() - \u83b7\u53d6zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u8fd4\u56de\u503c\uff1a\nint zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlen = buff:len()\nlen = #buff\n", "prefix": "buff:len"}, "buff:setFrameBuffer": {"body": "buff:setFrameBuffer(${1:width},${2:height},${3:bit},${4:color})", "description": "buff:setFrameBuffer(width,height,bit,color) - \u8bbe\u7f6ebuff\u5bf9\u8c61\u7684FrameBuffer\u5c5e\u6027\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint FrameBuffer\u7684\u5bbd\u5ea6\nint FrameBuffer\u7684\u9ad8\u5ea6\nint FrameBuffer\u7684\u8272\u4f4d\u6df1\u5ea6\nint FrameBuffer\u7684\u521d\u59cb\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nresult = buff:setFrameBuffer(320,240,16,0xffff)\n", "prefix": "buff:setFrameBuffer"}, "buff:pixel": {"body": "buff:pixel(${1:x},${2:y},${3:color})", "description": "buff:pixel(x,y,color) - \u8bbe\u7f6e\u6216\u83b7\u53d6FrameBuffer\u67d0\u4e2a\u50cf\u7d20\u70b9\u7684\u989c\u8272\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u989c\u8272\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u83b7\u53d6\u8be5\u4f4d\u7f6e\u7684\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nany \u8bbe\u7f6e\u989c\u8272\u65f6\uff0c\u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\uff1b\u8bfb\u53d6\u989c\u8272\u65f6\uff0c\u8fd4\u56de\u989c\u8272\u7684\u503c\uff0c\u8bfb\u53d6\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nrerult = buff:pixel(0,3,0)\ncolor = buff:pixel(0,3)\n", "prefix": "buff:pixel"}, "buff:drawLine": {"body": "buff:drawLine(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "buff:drawLine(x1,y1,x2,y2,color) - \u753b\u4e00\u6761\u7ebf\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawLine(0,0,2,3,0xffff)\n", "prefix": "buff:drawLine"}, "buff:drawRect": {"body": "buff:drawRect(${1:x1},${2:y1},${3:x2},${4:y2},${5:color},${6:fill})", "description": "buff:drawRect(x1,y1,x2,y2,color,fill) - \u753b\u4e00\u4e2a\u77e9\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawRect(0,0,2,3,0xffff)\n", "prefix": "buff:drawRect"}, "buff:drawCircle": {"body": "buff:drawCircle(${1:x},${2:y},${3:r},${4:color},${5:fill})", "description": "buff:drawCircle(x,y,r,color,fill) - \u753b\u4e00\u4e2a\u5706\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint **\u5706\u5fc3**\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint **\u5706\u5fc3**\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u5706\u7684\u534a\u5f84\nint \u53ef\u9009\uff0c\u5706\u7684\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawCircle(15,5,3,0xC)\nrerult = buff:drawCircle(15,5,3,0xC,true)\n", "prefix": "buff:drawCircle"}, "buff[n": {"body": "buff[n]", "description": "buff[n] - \u4ee5\u4e0b\u6807\u5f62\u5f0f\u8fdb\u884c\u6570\u636e\u8bfb\u5199\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u51e0\u4e2a\u6570\u636e\uff0c\u4ee50\u5f00\u59cb\u7684\u4e0b\u6807\uff08C\u6807\u51c6\uff09\n\u8fd4\u56de\u503c\uff1a\nnumber \u8be5\u4f4d\u7f6e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nbuff[0] = 0xc8\nlocal data = buff[0]\n", "prefix": "buff[n"}, "buff:free": {"body": "buff:free()", "description": "buff:free() - \u91ca\u653ezbuff\u6240\u7533\u8bf7\u5185\u5b58 \u6ce8\u610f\uff1agc\u65f6\u4f1a\u81ea\u52a8\u91ca\u653ezbuff\u4ee5\u53cazbuff\u6240\u7533\u8bf7\u5185\u5b58\uff0c\u6240\u4ee5\u901a\u5e38\u65e0\u9700\u8c03\u7528\u6b64\u51fd\u6570\uff0c\u8c03\u7528\u524d\u8bf7\u786e\u8ba4\u60a8\u5df2\u6e05\u695a\u6b64\u51fd\u6570\u7528\u5904\uff01\u8c03\u7528\u6b64\u51fd\u6570\u5e76\u4e0d\u4f1a\u91ca\u653e\u6389zbuff\uff0c\u4ec5\u4f1a\u91ca\u653e\u6389zbuff\u6240\u7533\u8bf7\u7684\u5185\u5b58\uff0czbuff\u9700\u7b49gc\u65f6\u81ea\u52a8\u91ca\u653e\uff01\uff01\uff01\n\u4f8b\u5b50\uff1a\nbuff:free()\n", "prefix": "buff:free"}, "buff:resize": {"body": "buff:resize(${1:n})", "description": "buff:resize(n) - \u8c03\u6574zbuff\u5b9e\u9645\u5206\u914d\u7a7a\u95f4\u7684\u5927\u5c0f\uff0c\u7c7b\u4f3c\u4e8erealloc\u7684\u6548\u679c\uff0cnew = realloc(old, n)\uff0c\u53ef\u4ee5\u6269\u5927\u6216\u8005\u7f29\u5c0f\uff08\u5982\u679c\u7f29\u5c0f\u540elen\u5c0f\u4e8e\u4e86used\uff0c\u90a3\u4e48used=\u65b0len\uff09\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7a7a\u95f4\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:resize(20)\n", "prefix": "buff:resize"}, "buff:copy": {"body": "buff:copy(${1:start},${2:para},${3:...})", "description": "buff:copy(start, para,...) - zbuff\u52a8\u6001\u5199\u6570\u636e\uff0c\u7c7b\u4f3c\u4e8ememcpy\u6548\u679c\uff0c\u5f53\u539f\u6709\u7a7a\u95f4\u4e0d\u8db3\u65f6\u52a8\u6001\u6269\u5927\u7a7a\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u5199\u5165buff\u7684\u8d77\u59cb\u4f4d\u7f6e\uff0c\u5982\u679c\u4e0d\u4e3a\u6570\u5b57\uff0c\u5219\u4e3abuff\u7684used\uff0c\u5982\u679c\u5c0f\u4e8e0\uff0c\u5219\u4eceused\u5f80\u524d\u6570\uff0c-1 = used - 1\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u6216zbuff\u8005\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:copy(nil, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[used], \"123\", 3) used+= 3 \u4ecebuff\u5f00\u59cb\u5199\u5165\u6570\u636e,\u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\nlocal len = buff:copy(0, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[0], \"123\", 3) if (used < 3) used = 3 \u4ece\u4f4d\u7f6e0\u5199\u5165\u6570\u636e,\u6307\u9488\u6709\u53ef\u80fd\u4f1a\u79fb\u52a8\nlocal len = buff:copy(2, 0x1a,0x30,0x31,0x32,0x00,0x01) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[2], [0x1a,0x30,0x31,0x32,0x00,0x01], 6) if (used < (2+6)) used = (2+6)\u4ece\u4f4d\u7f6e2\u5f00\u59cb\uff0c\u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\nlocal len = buff:copy(9, buff2) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[9], &buff2[0], buff2\u7684used) if (used < (9+buff2\u7684used)) used = (9+buff2\u7684used) \u4ece\u4f4d\u7f6e9\u5f00\u59cb\uff0c\u5408\u5e76\u5165buff2\u91cc0~used\u7684\u5185\u5bb9\nlocal len = buff:copy(5, buff2, 10, 1024) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[5], &buff2[10], 1024) if (used < (5+1024)) used = (5+1024)\n", "prefix": "buff:copy"}, "buff:used": {"body": "buff:used()", "description": "buff:used() - \u83b7\u53d6zbuff\u91cc\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\u5230\u9996\u5730\u5740\u7684\u504f\u79fb\u91cf\uff0c\u6765\u8868\u793azbuff\u5185\u5df2\u6709\u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\uff0c\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u540c\u4e8e\u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\uff0c\u7531\u4e8eseek()\u4f1a\u6539\u53d8\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\uff0c\u56e0\u6b64\u4e5f\u4f1a\u5f71\u54cd\u5230used()\u8fd4\u56de\u503c\u3002\n\u8fd4\u56de\u503c\uff1a\nint \u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:used()\n", "prefix": "buff:used"}, "buff:del": {"body": "buff:del(${1:offset},${2:length})", "description": "buff:del(offset,length) - \u5220\u9664zbuff 0~used\u8303\u56f4\u5185\u7684\u4e00\u6bb5\u6570\u636e\uff0c\u6ce8\u610f\u53ea\u662f\u6539\u53d8\u4e86used\u7684\u503c\uff0c\u5e76\u4e0d\u662f\u771f\u7684\u5728ram\u91cc\u53bb\u6e05\u9664\u6389\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u4f4d\u7f6estart, \u9ed8\u8ba40\uff0c\u5982\u679c<0\u5219\u4eceused\u5f80\u524d\u6570\uff0c\u6bd4\u5982 -1 \u90a3\u4e48start= used - 1\nint \u957f\u5ea6del_len\uff0c\u9ed8\u8ba4\u4e3aused\uff0c\u5982\u679cstart + del_len\u6570\u503c\u5927\u4e8eused\uff0c\u4f1a\u5f3a\u5236\u8c03\u6574del_len = used - start\n\u4f8b\u5b50\uff1a\nbuff:del(1,4) --\u4ece\u4f4d\u7f6e1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\nbuff:del(-1,4) --\u4ece\u4f4d\u7f6eused-1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\uff0c\u4f46\u662f\u8fd9\u80af\u5b9a\u4f1a\u8d85\u8fc7used\uff0c\u6240\u4ee5del_len\u4f1a\u8c03\u6574\u4e3a1\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u5220\u6389\u4e86\u6700\u540e\u4e00\u4e2a\u5b57\u8282\n", "prefix": "buff:del"}, "buff:query": {"body": "buff:query(${1:offset},${2:length},${3:isbigend},${4:issigned},${5:isfloat})", "description": "buff:query(offset,length,isbigend,issigned,isfloat) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea60~used\u8303\u56f4\u5185\u53d6\u51fa\u6570\u636e\uff0c\u5982\u679c\u662f1,2,4,8\u5b57\u8282\uff0c\u6839\u636e\u540e\u7eed\u53c2\u6570\u8f6c\u6362\u6210\u6d6e\u70b9\u6216\u8005\u6574\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09\nint \u6570\u636e\u7684\u957f\u5ea6\nboolean \u662f\u5426\u662f\u5927\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u4f1a\u8f6c\u6362\uff0c\u76f4\u63a5\u5b57\u8282\u6d41\u8f93\u51fa\nboolean \u662f\u5426\u662f\u6709\u7b26\u53f7\u7684\uff0c\u9ed8\u8ba4\u4e3afalse\nboolean \u662f\u5426\u662f\u6d6e\u70b9\u578b\uff0c\u9ed8\u8ba4\u4e3afalse\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:query(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:query"}, "buff:set": {"body": "buff:set(${1:start},${2:num},${3:len})", "description": "buff:set(start, num, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememset\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememset(&buff[start], num, len)\uff0c\u5f53\u7136\u6709ram\u8d8a\u754c\u4fdd\u62a4\uff0c\u4f1a\u5bf9len\u6709\u4e00\u5b9a\u7684\u9650\u5236\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\nint \u53ef\u9009\uff0c\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a\u5168\u90e8\u7a7a\u95f4\uff0c\u5982\u679c\u8d85\u51fa\u8303\u56f4\u4e86\uff0c\u4f1a\u81ea\u52a8\u622a\u65ad\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:set() --\u7b49\u540c\u4e8e memset(buff, 0, sizeof(buff))\nbuff:set(8) --\u7b49\u540c\u4e8e memset(&buff[8], 0, sizeof(buff) - 8)\nbuff:set(0, 0x55) --\u7b49\u540c\u4e8e memset(buff, 0x55, sizeof(buff))\nbuff:set(4, 0xaa, 12) --\u7b49\u7528\u4e8e memset(&buff[4], 0xaa, 12)\n", "prefix": "buff:set"}, "buff:isEqual": {"body": "buff:isEqual(${1:start},${2:buff2},${3:start2},${4:len})", "description": "buff:isEqual(start, buff2, start2, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememcmp\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememcmp(&buff[start], &buff2[start2], len)\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nzbuff \u6bd4\u8f83\u7684\u5bf9\u8c61\nint \u53ef\u9009\uff0c\u6bd4\u8f83\u7684\u5bf9\u8c61\u7684\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u6bd4\u8f83\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nboolean true\u76f8\u7b49\uff0cfalse\u4e0d\u76f8\u7b49\nint \u76f8\u7b49\u8fd4\u56de0\uff0c\u4e0d\u76f8\u7b49\u8fd4\u56de\u7b2c\u4e00\u4e2a\u4e0d\u76f8\u7b49\u4f4d\u7f6e\u7684\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, offset = buff:isEqual(1, buff2, 2, 10) --\u7b49\u540c\u4e8ememcmp(&buff[1], &buff2[2], 10)\n", "prefix": "buff:isEqual"}} \ No newline at end of file diff --git a/docs/api/mobile.html b/docs/api/mobile.html index d49bb1f0..6e9849ca 100644 --- a/docs/api/mobile.html +++ b/docs/api/mobile.html @@ -1300,7 +1300,7 @@

mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol)

string

-

The default APN value obtained. If the APN fails, the value is returned.nil

+

If the network registration is successful, return the APN value used for registration, otherwise it is nil. It is set that there will be no return value immediately, and the network registration needs to be successful.

diff --git a/docs/searchindex.js b/docs/searchindex.js index af2563af..b40d7ba8 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["api/adc","api/antbot","api/audio","api/bit64","api/camera","api/cc","api/codec","api/coremark","api/crypto","api/dac","api/disp","api/eink","api/errDump","api/fastlz","api/fatfs","api/fdb","api/fonts","api/fota","api/fs","api/fskv","api/ftp","api/gmssl","api/gpio","api/gtfont","api/hmeta","api/ht1621","api/http","api/httpsrv","api/i2c","api/i2s","api/iconv","api/index","api/io","api/ioqueue","api/iotauth","api/ir","api/json","api/keyboard","api/lcd","api/lcdseg","api/libcoap","api/libgnss","api/libs/ads1115","api/libs/ads1115plus","api/libs/adxl34x","api/libs/aht10","api/libs/air153C_wtd","api/libs/ak8963","api/libs/aliyun","api/libs/am2320","api/libs/ap3216c","api/libs/bh1750","api/libs/bmx","api/libs/cht8305c","api/libs/ds3231","api/libs/ec11","api/libs/gt911","api/libs/gy53l1","api/libs/httpdns","api/libs/httpplus","api/libs/ina226","api/libs/index","api/libs/iotcloud","api/libs/l3g4200d","api/libs/lbsLoc","api/libs/lbsLoc2","api/libs/libfota","api/libs/libfota2","api/libs/libnet","api/libs/lis2dh12","api/libs/lm75","api/libs/max31856","api/libs/mcp2515","api/libs/mlx90614","api/libs/mpu6xxx","api/libs/necir","api/libs/netLed","api/libs/pca9685","api/libs/pcf8563t","api/libs/pcf8574","api/libs/qmc5883l","api/libs/rc522","api/libs/rtkv","api/libs/sc7a20","api/libs/shift595","api/libs/si24r1","api/libs/spl06","api/libs/tcs3472","api/libs/tm1637","api/libs/tm1640","api/libs/tm1650","api/libs/tsl2561","api/libs/udpsrv","api/libs/vl6180","api/libs/xmodem","api/libs/ze08g_ch2o","api/libs/zh07","api/little_flash","api/log","api/lora","api/lora2","api/lvgl","api/max30102","api/mcu","api/miniz","api/mlx90640","api/mobile","api/mqtt","api/os","api/otp","api/pack","api/pin","api/pm","api/protobuf","api/pwm","api/repl","api/rsa","api/rtc","api/rtos","api/sdio","api/sensor","api/sfd","api/sfud","api/sms","api/socket","api/softkb","api/spi","api/statem","api/string","api/supported","api/sys","api/sys_pub","api/sysplus","api/timer","api/touchkey","api/u8g2","api/uart","api/usbapp","api/w5500","api/wdt","api/websocket","api/wlan","api/xxtea","api/ymodem","api/zbuff","appDevelopment/index","appDevelopment/iotcloud/aliyun/code","appDevelopment/iotcloud/aliyun/device","appDevelopment/iotcloud/aliyun/index","appDevelopment/iotcloud/aliyun/intro","appDevelopment/iotcloud/aliyun/project","appDevelopment/iotcloud/aliyun/test","appDevelopment/iotcloud/basic/index","appDevelopment/iotcloud/basic/intro","appDevelopment/iotcloud/basic/json","appDevelopment/iotcloud/basic/protocol","appDevelopment/iotcloud/index","appDevelopment/iotcloud/onenet/code","appDevelopment/iotcloud/onenet/device","appDevelopment/iotcloud/onenet/index","appDevelopment/iotcloud/onenet/intro","appDevelopment/iotcloud/onenet/project","appDevelopment/iotcloud/onenet/test","appDevelopment/iotcloud/qcloud/code","appDevelopment/iotcloud/qcloud/device","appDevelopment/iotcloud/qcloud/index","appDevelopment/iotcloud/qcloud/intro","appDevelopment/iotcloud/qcloud/project","appDevelopment/iotcloud/qcloud/test","appDevelopment/lvgl/LVGL_for_LuatOS/LVGL_for_LuatOS","appDevelopment/lvgl/index","appDevelopment/peripheral/index","appDevelopment/peripheral/ws2812/ws2812","appDevelopment/video_play/105/video_play","appDevelopment/video_play/index","archives","blog/index","boardGuide/common/adc/index","boardGuide/common/crypto","boardGuide/common/disp","boardGuide/common/fdb","boardGuide/common/i2c/air101","boardGuide/common/i2c/air103","boardGuide/common/i2c/air105","boardGuide/common/i2c/index","boardGuide/common/index","boardGuide/common/lcd","boardGuide/common/log","boardGuide/common/mcu/air101","boardGuide/common/mcu/air103","boardGuide/common/mcu/air105","boardGuide/common/mcu/index","boardGuide/common/pm","boardGuide/common/pwm/air101","boardGuide/common/pwm/air103","boardGuide/common/pwm/air105","boardGuide/common/pwm/index","boardGuide/common/rtc","boardGuide/common/sfd","boardGuide/common/sfud/air101","boardGuide/common/sfud/air103","boardGuide/common/sfud/air105","boardGuide/common/sfud/index","boardGuide/common/spi","boardGuide/common/spi/air101","boardGuide/common/spi/air103","boardGuide/common/spi/air105","boardGuide/common/spi/index","boardGuide/common/sys","boardGuide/common/timer","boardGuide/common/uart","boardGuide/common/uart/air101","boardGuide/common/uart/air103","boardGuide/common/uart/air105","boardGuide/common/uart/index","boardGuide/flash","boardGuide/index","boardGuide/roadmap","boardGuide/vscode","chips/AirWatch","chips/W806","chips/air001/Air001-Arduino","chips/air001/Air001-MDK","chips/air001/board","chips/air001/hardware","chips/air001/index","chips/air001/mcu","chips/air001/power_dissipation","chips/air101/Air101","chips/air101/Air101-Hard-design","chips/air101/board","chips/air101/hardware","chips/air101/index","chips/air101/mcu","chips/air101/power_dissipation","chips/air103/board","chips/air103/hardware","chips/air103/index","chips/air103/lcdseg","chips/air103/mcu","chips/air103/power_dissipation","chips/air103/touchkey","chips/air105/board","chips/air105/encrypt","chips/air105/hardware","chips/air105/index","chips/air105/mcu","chips/air105/power_dissipation","chips/air106/board","chips/air106/hardware","chips/air106/index","chips/air106/mcu","chips/air302/board","chips/air302/hardware","chips/air302/index","chips/air302/mcu","chips/air32f103/Air32f103","chips/air32f103/board","chips/air32f103/daplink","chips/air32f103/enhancement","chips/air32f103/hardware","chips/air32f103/index","chips/air32f103/mcu","chips/air32f103/switchFromSxx","chips/air601/board","chips/air601/changelog","chips/air601/fota_iot","chips/air601/hardware","chips/air601/index","chips/air601/macaddr","chips/air601/mcu","chips/air601/spi_slave","chips/air640w/board","chips/air640w/hardware","chips/air640w/index","chips/air640w/mcu","chips/air780e/air700e","chips/air780e/air780eg","chips/air780e/board","chips/air780e/changelog","chips/air780e/firmware","chips/air780e/fota","chips/air780e/hardware","chips/air780e/index","chips/air780e/iomux","chips/air780e/mcu","chips/air780e/multiownload","chips/air780e/network","chips/air780e/pwrkey","chips/air780e/tts","chips/air780ep/air780epv","chips/air780ep/air780epvh","chips/air780ep/changelog","chips/air780ep/hardware","chips/air780ep/index","chips/air780ep/iomux","chips/air780ep/mcu","chips/air780eps/changelog","chips/air780eps/index","chips/air780eps/mcu","chips/air901/board","chips/air901/hardware","chips/air901/index","chips/air901/mcu","chips/chips","chips/coremark/README","chips/esp32c3/board","chips/esp32c3/change_flash","chips/esp32c3/changelog","chips/esp32c3/hardware","chips/esp32c3/index","chips/esp32c3/power_dissipation","chips/esp32s3/board","chips/esp32s3/hardware","chips/esp32s3/index","chips/esp32s3/mifi","chips/gnss/agps","chips/gnss/air510u","chips/gnss/air530z","chips/gnss/index","chips/gnss/others","chips/gnss/with4g","chips/index","chips/luatools/changelog","chips/luatools/features","chips/luatools/index","chips/pc/cmd_luadb","chips/pc/cmds","chips/pc/index","chips/pc/repo","chips/pc/usage","chips/question","chips/rp2040/index","chips/supported","chips/swm181/board","chips/swm181/hardware","chips/swm181/index","chips/swm181/mcu","chips/swm181/swm181","chips/win32","develop/add_lua_module","develop/add_myapi_5min","develop/add_myapi_lib","develop/c_wait","develop/cli/README","develop/cli/cmd_base","develop/cli/cmd_burn","develop/cli/cmd_pkg","develop/cli/cmd_prj","develop/cli/frontend","develop/cli/project","develop/compile","develop/compile/Air101","develop/compile/Air105","develop/compile/Air302","develop/compile/Air640w","develop/compile/Air780E","develop/compile/Air780EP","develop/compile/Cloud_compilation","develop/compile/ESP32C3","develop/compile/Linux","develop/compile/Win32","develop/contribute/add_module","develop/contribute/dev_doc/core/index","develop/contribute/dev_doc/core/luat_core","develop/contribute/dev_doc/core/luat_debugger","develop/contribute/dev_doc/core/luat_font","develop/contribute/dev_doc/core/luat_fs","develop/contribute/dev_doc/core/luat_memory","develop/contribute/dev_doc/core/luat_msgbus","develop/contribute/dev_doc/core/luat_platform","develop/contribute/dev_doc/core/luat_pm","develop/contribute/dev_doc/core/luat_timer","develop/contribute/dev_doc/core/luat_zbuff","develop/contribute/dev_doc/core/luat_zstruct","develop/contribute/dev_doc/core/sys_wait_pub","develop/contribute/dev_doc/index","develop/contribute/dev_doc/peripherals/index","develop/contribute/dev_doc/peripherals/luat_fonts","develop/contribute/dev_doc/peripherals/luat_gpio","develop/contribute/dev_doc/peripherals/luat_ir","develop/contribute/dev_doc/peripherals/luat_spi","develop/contribute/dev_doc/peripherals/luat_usart","develop/contribute/dev_doc/peripherals/luat_wlan","develop/contribute/index","develop/contribute/luadb","develop/contribute/soc_format","develop/contribute/style","develop/docs","develop/docs_design","develop/docs_use","develop/filesystems","develop/hex_string","develop/libs","develop/soc_download","index","iotpower/cc/index","iotpower/cc/index-en","iotpower/cc/parts","iotpower/cc/parts-en","iotpower/cc/question","iotpower/cc/tech","iotpower/cc/tech-en","iotpower/cc/usage","iotpower/cc/usage-en","iotpower/cc/wrong","iotpower/devices","iotpower/index","iotpower/index-en","iotpower/pc","iotpower/pc-en","iotpower/power/english","iotpower/power/index","luaGuide/index","luaGuide/introduction","luaGuide/luaReference","luaGuide/luatFramework","luaGuide/luatFramework_exts","luaGuide/luatask","pages/emulator","pages/supports","pages/tools","peripherals/camera_gc032a/demos","peripherals/camera_gc032a/hardware","peripherals/camera_gc032a/index","peripherals/chip_gtfont/demos","peripherals/chip_gtfont/hardware","peripherals/chip_gtfont/index","peripherals/eink_1.54/hardware","peripherals/eink_1.54/index","peripherals/eink_1.54/software","peripherals/index","peripherals/lcd_1in54_240x240/demos","peripherals/lcd_1in54_240x240/hardware","peripherals/lcd_1in54_240x240/index","peripherals/lcd_1in8_128x160/demos","peripherals/lcd_1in8_128x160/hardware","peripherals/lcd_1in8_128x160/index","peripherals/lcd_2in4_320x240/demos","peripherals/lcd_2in4_320x240/hardware","peripherals/lcd_2in4_320x240/index","peripherals/lcd_air10x/demos","peripherals/lcd_air10x/hardware","peripherals/lcd_air10x/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["api/adc.md","api/antbot.md","api/audio.md","api/bit64.md","api/camera.md","api/cc.md","api/codec.md","api/coremark.md","api/crypto.md","api/dac.md","api/disp.md","api/eink.md","api/errDump.md","api/fastlz.md","api/fatfs.md","api/fdb.md","api/fonts.md","api/fota.md","api/fs.md","api/fskv.md","api/ftp.md","api/gmssl.md","api/gpio.md","api/gtfont.md","api/hmeta.md","api/ht1621.md","api/http.md","api/httpsrv.md","api/i2c.md","api/i2s.md","api/iconv.md","api/index.md","api/io.md","api/ioqueue.md","api/iotauth.md","api/ir.md","api/json.md","api/keyboard.md","api/lcd.md","api/lcdseg.md","api/libcoap.md","api/libgnss.md","api/libs/ads1115.md","api/libs/ads1115plus.md","api/libs/adxl34x.md","api/libs/aht10.md","api/libs/air153C_wtd.md","api/libs/ak8963.md","api/libs/aliyun.md","api/libs/am2320.md","api/libs/ap3216c.md","api/libs/bh1750.md","api/libs/bmx.md","api/libs/cht8305c.md","api/libs/ds3231.md","api/libs/ec11.md","api/libs/gt911.md","api/libs/gy53l1.md","api/libs/httpdns.md","api/libs/httpplus.md","api/libs/ina226.md","api/libs/index.md","api/libs/iotcloud.md","api/libs/l3g4200d.md","api/libs/lbsLoc.md","api/libs/lbsLoc2.md","api/libs/libfota.md","api/libs/libfota2.md","api/libs/libnet.md","api/libs/lis2dh12.md","api/libs/lm75.md","api/libs/max31856.md","api/libs/mcp2515.md","api/libs/mlx90614.md","api/libs/mpu6xxx.md","api/libs/necir.md","api/libs/netLed.md","api/libs/pca9685.md","api/libs/pcf8563t.md","api/libs/pcf8574.md","api/libs/qmc5883l.md","api/libs/rc522.md","api/libs/rtkv.md","api/libs/sc7a20.md","api/libs/shift595.md","api/libs/si24r1.md","api/libs/spl06.md","api/libs/tcs3472.md","api/libs/tm1637.md","api/libs/tm1640.md","api/libs/tm1650.md","api/libs/tsl2561.md","api/libs/udpsrv.md","api/libs/vl6180.md","api/libs/xmodem.md","api/libs/ze08g_ch2o.md","api/libs/zh07.md","api/little_flash.md","api/log.md","api/lora.md","api/lora2.md","api/lvgl.md","api/max30102.md","api/mcu.md","api/miniz.md","api/mlx90640.md","api/mobile.md","api/mqtt.md","api/os.md","api/otp.md","api/pack.md","api/pin.md","api/pm.md","api/protobuf.md","api/pwm.md","api/repl.md","api/rsa.md","api/rtc.md","api/rtos.md","api/sdio.md","api/sensor.md","api/sfd.md","api/sfud.md","api/sms.md","api/socket.md","api/softkb.md","api/spi.md","api/statem.md","api/string.md","api/supported.md","api/sys.md","api/sys_pub.md","api/sysplus.md","api/timer.md","api/touchkey.md","api/u8g2.md","api/uart.md","api/usbapp.md","api/w5500.md","api/wdt.md","api/websocket.md","api/wlan.md","api/xxtea.md","api/ymodem.md","api/zbuff.md","appDevelopment/index.md","appDevelopment/iotcloud/aliyun/code.md","appDevelopment/iotcloud/aliyun/device.md","appDevelopment/iotcloud/aliyun/index.md","appDevelopment/iotcloud/aliyun/intro.md","appDevelopment/iotcloud/aliyun/project.md","appDevelopment/iotcloud/aliyun/test.md","appDevelopment/iotcloud/basic/index.md","appDevelopment/iotcloud/basic/intro.md","appDevelopment/iotcloud/basic/json.md","appDevelopment/iotcloud/basic/protocol.md","appDevelopment/iotcloud/index.md","appDevelopment/iotcloud/onenet/code.md","appDevelopment/iotcloud/onenet/device.md","appDevelopment/iotcloud/onenet/index.md","appDevelopment/iotcloud/onenet/intro.md","appDevelopment/iotcloud/onenet/project.md","appDevelopment/iotcloud/onenet/test.md","appDevelopment/iotcloud/qcloud/code.md","appDevelopment/iotcloud/qcloud/device.md","appDevelopment/iotcloud/qcloud/index.md","appDevelopment/iotcloud/qcloud/intro.md","appDevelopment/iotcloud/qcloud/project.md","appDevelopment/iotcloud/qcloud/test.md","appDevelopment/lvgl/LVGL_for_LuatOS/LVGL_for_LuatOS.md","appDevelopment/lvgl/index.md","appDevelopment/peripheral/index.md","appDevelopment/peripheral/ws2812/ws2812.md","appDevelopment/video_play/105/video_play.md","appDevelopment/video_play/index.md","archives.md","blog/index.md","boardGuide/common/adc/index.md","boardGuide/common/crypto.md","boardGuide/common/disp.md","boardGuide/common/fdb.md","boardGuide/common/i2c/air101.md","boardGuide/common/i2c/air103.md","boardGuide/common/i2c/air105.md","boardGuide/common/i2c/index.md","boardGuide/common/index.md","boardGuide/common/lcd.md","boardGuide/common/log.md","boardGuide/common/mcu/air101.md","boardGuide/common/mcu/air103.md","boardGuide/common/mcu/air105.md","boardGuide/common/mcu/index.md","boardGuide/common/pm.md","boardGuide/common/pwm/air101.md","boardGuide/common/pwm/air103.md","boardGuide/common/pwm/air105.md","boardGuide/common/pwm/index.md","boardGuide/common/rtc.md","boardGuide/common/sfd.md","boardGuide/common/sfud/air101.md","boardGuide/common/sfud/air103.md","boardGuide/common/sfud/air105.md","boardGuide/common/sfud/index.md","boardGuide/common/spi.md","boardGuide/common/spi/air101.md","boardGuide/common/spi/air103.md","boardGuide/common/spi/air105.md","boardGuide/common/spi/index.md","boardGuide/common/sys.md","boardGuide/common/timer.md","boardGuide/common/uart.md","boardGuide/common/uart/air101.md","boardGuide/common/uart/air103.md","boardGuide/common/uart/air105.md","boardGuide/common/uart/index.md","boardGuide/flash.md","boardGuide/index.md","boardGuide/roadmap.md","boardGuide/vscode.md","chips/AirWatch.md","chips/W806.md","chips/air001/Air001-Arduino.md","chips/air001/Air001-MDK.md","chips/air001/board.md","chips/air001/hardware.md","chips/air001/index.md","chips/air001/mcu.md","chips/air001/power_dissipation.md","chips/air101/Air101.md","chips/air101/Air101-Hard-design.md","chips/air101/board.md","chips/air101/hardware.md","chips/air101/index.md","chips/air101/mcu.md","chips/air101/power_dissipation.md","chips/air103/board.md","chips/air103/hardware.md","chips/air103/index.md","chips/air103/lcdseg.md","chips/air103/mcu.md","chips/air103/power_dissipation.md","chips/air103/touchkey.md","chips/air105/board.md","chips/air105/encrypt.md","chips/air105/hardware.md","chips/air105/index.md","chips/air105/mcu.md","chips/air105/power_dissipation.md","chips/air106/board.md","chips/air106/hardware.md","chips/air106/index.md","chips/air106/mcu.md","chips/air302/board.md","chips/air302/hardware.md","chips/air302/index.md","chips/air302/mcu.md","chips/air32f103/Air32f103.md","chips/air32f103/board.md","chips/air32f103/daplink.md","chips/air32f103/enhancement.md","chips/air32f103/hardware.md","chips/air32f103/index.md","chips/air32f103/mcu.md","chips/air32f103/switchFromSxx.md","chips/air601/board.md","chips/air601/changelog.md","chips/air601/fota_iot.md","chips/air601/hardware.md","chips/air601/index.md","chips/air601/macaddr.md","chips/air601/mcu.md","chips/air601/spi_slave.md","chips/air640w/board.md","chips/air640w/hardware.md","chips/air640w/index.md","chips/air640w/mcu.md","chips/air780e/air700e.md","chips/air780e/air780eg.md","chips/air780e/board.md","chips/air780e/changelog.md","chips/air780e/firmware.md","chips/air780e/fota.md","chips/air780e/hardware.md","chips/air780e/index.md","chips/air780e/iomux.md","chips/air780e/mcu.md","chips/air780e/multiownload.md","chips/air780e/network.md","chips/air780e/pwrkey.md","chips/air780e/tts.md","chips/air780ep/air780epv.md","chips/air780ep/air780epvh.md","chips/air780ep/changelog.md","chips/air780ep/hardware.md","chips/air780ep/index.md","chips/air780ep/iomux.md","chips/air780ep/mcu.md","chips/air780eps/changelog.md","chips/air780eps/index.md","chips/air780eps/mcu.md","chips/air901/board.md","chips/air901/hardware.md","chips/air901/index.md","chips/air901/mcu.md","chips/chips.md","chips/coremark/README.md","chips/esp32c3/board.md","chips/esp32c3/change_flash.md","chips/esp32c3/changelog.md","chips/esp32c3/hardware.md","chips/esp32c3/index.md","chips/esp32c3/power_dissipation.md","chips/esp32s3/board.md","chips/esp32s3/hardware.md","chips/esp32s3/index.md","chips/esp32s3/mifi.md","chips/gnss/agps.md","chips/gnss/air510u.md","chips/gnss/air530z.md","chips/gnss/index.md","chips/gnss/others.md","chips/gnss/with4g.md","chips/index.md","chips/luatools/changelog.md","chips/luatools/features.md","chips/luatools/index.md","chips/pc/cmd_luadb.md","chips/pc/cmds.md","chips/pc/index.md","chips/pc/repo.md","chips/pc/usage.md","chips/question.md","chips/rp2040/index.md","chips/supported.md","chips/swm181/board.md","chips/swm181/hardware.md","chips/swm181/index.md","chips/swm181/mcu.md","chips/swm181/swm181.md","chips/win32.md","develop/add_lua_module.md","develop/add_myapi_5min.md","develop/add_myapi_lib.md","develop/c_wait.md","develop/cli/README.md","develop/cli/cmd_base.md","develop/cli/cmd_burn.md","develop/cli/cmd_pkg.md","develop/cli/cmd_prj.md","develop/cli/frontend.md","develop/cli/project.md","develop/compile.md","develop/compile/Air101.md","develop/compile/Air105.md","develop/compile/Air302.rst","develop/compile/Air640w.rst","develop/compile/Air780E.md","develop/compile/Air780EP.md","develop/compile/Cloud_compilation.md","develop/compile/ESP32C3.md","develop/compile/Linux.md","develop/compile/Win32.md","develop/contribute/add_module.md","develop/contribute/dev_doc/core/index.md","develop/contribute/dev_doc/core/luat_core.md","develop/contribute/dev_doc/core/luat_debugger.md","develop/contribute/dev_doc/core/luat_font.md","develop/contribute/dev_doc/core/luat_fs.md","develop/contribute/dev_doc/core/luat_memory.md","develop/contribute/dev_doc/core/luat_msgbus.md","develop/contribute/dev_doc/core/luat_platform.md","develop/contribute/dev_doc/core/luat_pm.md","develop/contribute/dev_doc/core/luat_timer.md","develop/contribute/dev_doc/core/luat_zbuff.md","develop/contribute/dev_doc/core/luat_zstruct.md","develop/contribute/dev_doc/core/sys_wait_pub.md","develop/contribute/dev_doc/index.md","develop/contribute/dev_doc/peripherals/index.md","develop/contribute/dev_doc/peripherals/luat_fonts.md","develop/contribute/dev_doc/peripherals/luat_gpio.md","develop/contribute/dev_doc/peripherals/luat_ir.md","develop/contribute/dev_doc/peripherals/luat_spi.md","develop/contribute/dev_doc/peripherals/luat_usart.md","develop/contribute/dev_doc/peripherals/luat_wlan.md","develop/contribute/index.md","develop/contribute/luadb.md","develop/contribute/soc_format.md","develop/contribute/style.md","develop/docs.md","develop/docs_design.md","develop/docs_use.md","develop/filesystems.md","develop/hex_string.md","develop/libs.md","develop/soc_download.md","index.md","iotpower/cc/index.md","iotpower/cc/index-en.md","iotpower/cc/parts.md","iotpower/cc/parts-en.md","iotpower/cc/question.md","iotpower/cc/tech.md","iotpower/cc/tech-en.md","iotpower/cc/usage.md","iotpower/cc/usage-en.md","iotpower/cc/wrong.md","iotpower/devices.md","iotpower/index.md","iotpower/index-en.md","iotpower/pc.md","iotpower/pc-en.md","iotpower/power/english.md","iotpower/power/index.md","luaGuide/index.md","luaGuide/introduction.md","luaGuide/luaReference.md","luaGuide/luatFramework.md","luaGuide/luatFramework_exts.md","luaGuide/luatask.md","pages/emulator.md","pages/supports.md","pages/tools.md","peripherals/camera_gc032a/demos.md","peripherals/camera_gc032a/hardware.md","peripherals/camera_gc032a/index.md","peripherals/chip_gtfont/demos.md","peripherals/chip_gtfont/hardware.md","peripherals/chip_gtfont/index.md","peripherals/eink_1.54/hardware.md","peripherals/eink_1.54/index.md","peripherals/eink_1.54/software.md","peripherals/index.md","peripherals/lcd_1in54_240x240/demos.md","peripherals/lcd_1in54_240x240/hardware.md","peripherals/lcd_1in54_240x240/index.md","peripherals/lcd_1in8_128x160/demos.md","peripherals/lcd_1in8_128x160/hardware.md","peripherals/lcd_1in8_128x160/index.md","peripherals/lcd_2in4_320x240/demos.md","peripherals/lcd_2in4_320x240/hardware.md","peripherals/lcd_2in4_320x240/index.md","peripherals/lcd_air10x/demos.md","peripherals/lcd_air10x/hardware.md","peripherals/lcd_air10x/index.md"],objects:{},objnames:{},objtypes:{},terms:{"0":[0,1,2,4,5,6,8,9,11,12,14,15,17,18,22,25,26,27,28,29,30,32,33,34,35,36,37,38,39,41,42,43,44,45,47,48,49,50,51,52,53,54,55,56,59,60,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,96,97,98,99,100,101,102,103,105,106,107,108,109,110,111,112,114,116,117,118,119,120,121,122,124,125,126,127,128,130,131,134,135,136,137,138,140,141,143,144,169,172,173,177,179,180,181,182,183,186,187,188,189,190,192,193,194,195,198,199,200,201,203,204,205,206,208,209,211,212,213,220,221,224,228,229,230,231,236,241,242,244,246,251,253,255,257,258,260,261,266,267,271,277,278,279,280,283,284,285,286,287,291,295,296,306,312,322,326,331,338,339,341,342,343,345,347,349,354,355,362,364,365,368,369,372,373,374,375,379,381,382,383,387,391,394,396,401,406,409,414,415,416,417,418,426,443],"00":[13,28,41,60,104,124,126,144,194,263,271,356,357,414],"000":[400,415],"0000":394,"00000000":[386,394],"000000000000":141,"00008000":394,"0000ff":169,"0001":[199,200,201],"00010000":394,"0002":[199,200,201],"000287":190,"0003":[199,200,201],"0004":[199,200,201],"0005":[199,200,201],"0006":[199,200,201],"0007":[199,200,201],"0008":[199,200,201],"0009":[199,200,201],"000\u03bca":400,"000bc":415,"001":[0,330],"0010":60,"00182946365f":141,"002f0200":386,"00380000":394,"00390000":386,"0060ma":234,"00ff0200":394,"01":[0,28,34,41,120,121,124,126,140,141,144,263,271,277,306,308,312,365,374,382,383,391],"0100":60,"01000000":17,"01001000":394,"01010000":394,"0102":28,"010203":128,"0107ma":234,"0111":60,"0123":414,"0123456789":169,"01300000":394,"01380000":394,"02":[11,28,41,60,135,204,205,206,279,306,312,356,357,365,375,394],"02d":414,"02x":[8,90],"03":[17,28,141,279,306,312,366,373,381],"03083333":41,"031":64,"03272018":[204,205,206],"0335":41,"03_event":169,"03_overview":169,"03d":124,"04":[28,140,266,306,312,349,420],"0455":41,"04923":415,"04_widget":169,"05":[13,22,133,306,312,374],"05_btnmatrix":169,"05_indev":169,"05v":246,"06":[8,28,106,131,141,279,306,312,374],"07":[8,15,16,28,64,306,312,334,335,337,380,414],"07946":142,"08":[306,312],"09":[12,306,312],"0921ma":240,"092v":220,"09_chart":169,"0_":415,"0a":337,"0b":337,"0m":2,"0rndi":106,"0u":222,"0v":[229,246,263,400,401,412],"0x":[13,17,28,33,60,64,85,104,124,126,135,137,144,204,205,206,271,373,378,392,394,414,415],"0x0":415,"0x00":[3,8,11,28,38,72,75,81,83,126,135,144,169,181,182,183,199,200,201,204,205,206,225,259,271,322,379,383,385,414],"0x0000":[38,378],"0x000000":172,"0x00000000":386,"0x000080":[199,200,201],"0x0000ff":[38,120,172],"0x0001":378,"0x0002":378,"0x0003":378,"0x0004":378,"0x001f":[38,186,220,228,322],"0x00300000":17,"0x00ff00":[38,172],"0x00ffff":120,"0x00u":222,"0x01":[11,28,38,72,81,103,120,126,135,144,204,205,206,225,271,322,373,374,379,383,385,414],"0x01001000":246,"0x0105":374,"0x0190":374,"0x02":[11,25,38,44,72,135,204,205,206,225,322,379,383,385,414],"0x03":[39,72,136,204,205,206,225,322,379,383,385,414],"0x04":[11,38,72,120,135,204,205,206,225,259,322,379,383,385],"0x05":[44,72,83,120,225,322,383],"0x06":[72,89,90,204,205,206,220,225,228,322,374,383],"0x07":[72,81,89,90,199,200,201,225,322,383],"0x08":[11,38,135,199,200,201,225,322,383],"0x09":[225,322,383],"0x0a":[25,60,318,383,414],"0x0b":64,"0x0c":[64,199,200,201],"0x0ce0":[220,228],"0x0d":318,"0x0f":[11,28,38,135,181,182,183,199,200,201],"0x1":415,"0x10":[11,38,44,120,135,199,200,201,271],"0x100":[120,121,181,182,183,198],"0x1000":120,"0x10000":[181,182,183],"0x11":[28,35,38,64],"0x12":[32,64,144,373,380],"0x1234":[137,144,373],"0x12345678":[188,189,190],"0x13":32,"0x14":37,"0x18":[199,200,201],"0x1a":144,"0x1a5a5bbx":263,"0x1a5a5ccx":263,"0x1a6a5cdx":263,"0x1a8a6ddx":263,"0x1a8a6edx":263,"0x1a9a6ddx":263,"0x1ba01477":263,"0x1f":37,"0x1f450":169,"0x1f451":169,"0x1f470":169,"0x1ff":[37,72],"0x1fffffe6":72,"0x20":[11,38,85,120,135,199,200,201,204,205,206,271,414],"0x200":120,"0x2000":120,"0x20000000":[225,322],"0x2009fffc":103,"0x21":[38,271,373],"0x22":[35,271],"0x23":271,"0x24":271,"0x25":271,"0x26":271,"0x2603":135,"0x27":271,"0x28":271,"0x29":271,"0x2a":271,"0x2b":271,"0x2ba01477":263,"0x2c":[220,228,271],"0x2c06":[220,228],"0x2f":28,"0x30":[25,64,144,169,414],"0x31":[8,144,392,414],"0x3132":392,"0x32":[144,373,392,414],"0x33":[126,144,181,182,183,373,414],"0x3333ff":101,"0x34":380,"0x38":[181,182,183],"0x39":169,"0x3b":[64,199,200,201],"0x3ba00477":263,"0x3f":[89,90,134],"0x40":[11,38,120,135,199,200,201],"0x400":120,"0x4000":120,"0x4001244e":263,"0x41":[169,414],"0x411fc231":263,"0x412fc230":263,"0x42":[199,200,201,414],"0x44":[28,199,200,201,220,228,414],"0x4567":[144,373],"0x48":[11,38,135],"0x4b":136,"0x4ba00477":263,"0x4e":25,"0x4e00":169,"0x4f":[89,90],"0x52":[25,199,200,201],"0x55":[136,144,263],"0x5678":137,"0x5a":[169,385],"0x5b":[89,90],"0x5c":28,"0x60":[11,38,135],"0x61":[169,414],"0x62":414,"0x65":414,"0x66":[89,90],"0x67":414,"0x68":[28,414],"0x69":414,"0x6b":[199,200,201],"0x6c":414,"0x6d":[89,90],"0x6e":414,"0x6f":[89,90,414],"0x70":414,"0x72":414,"0x74":414,"0x75":[28,414],"0x79":414,"0x7a":169,"0x7d":[89,90],"0x7f":[89,90],"0x7ff":72,"0x7fff":169,"0x7fffffff":103,"0x80":[11,38,81,120,135,169],"0x800":120,"0x8000":120,"0x81e0000":386,"0x82":84,"0x83":[11,38,135],"0x84":[11,38,135],"0x86":136,"0x8a":25,"0x8f":25,"0x90":[75,204,205,206],"0x9f":[126,203,220,228],"0x9fff":169,"0xa23p":415,"0xa5":[271,385],"0xa9":22,"0xaa":[136,144,263],"0xac":[181,182,183],"0xad":25,"0xbb":[199,200,201],"0xbebada":415,"0xc":144,"0xc5":378,"0xc7":25,"0xc8":144,"0xcf":25,"0xd8":[199,200,201],"0xe0000000":17,"0xe5":[8,199,200,201],"0xe7":25,"0xeb":[25,199,200,201],"0xeeeeff":101,"0xef":[25,199,200,201],"0xef15":75,"0xef16":75,"0xef17":[204,205,206],"0xef4018":[220,228],"0xf":37,"0xf0":[37,181,182,183],"0xf005":169,"0xf1":25,"0xf2":28,"0xf33":169,"0xf8":[11,38,135],"0xf800":[144,220,228],"0xf9":[199,200,201],"0xfe":[199,200,201,378,385],"0xff":[8,35,37,38,39,44,85,89,169,199,200,201,369,372,394,414,415],"0xff0000":38,"0xffff":[8,38,39,76,106,144,261,322,372],"0xffffff":[220,228],"0xffffffff":[39,103,136,262,372],"0y":135,"1":[0,1,2,4,5,8,10,11,13,14,15,17,19,20,22,24,25,26,27,28,29,30,32,33,34,36,37,38,39,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,59,60,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,103,105,106,107,108,109,110,111,112,114,115,117,118,120,121,122,124,125,126,127,128,130,131,132,134,135,136,137,138,140,141,143,144,169,172,173,175,177,179,180,181,182,183,186,187,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,209,210,211,212,213,217,219,220,221,224,225,226,228,229,231,236,239,241,242,243,244,245,251,253,255,257,258,260,261,262,266,267,269,270,271,277,278,279,280,283,284,285,286,287,291,292,295,296,304,310,314,316,317,318,322,326,336,337,340,342,343,345,347,349,357,359,364,365,369,371,372,373,374,375,378,381,382,383,386,387,388,390,392,395,398,400,401,403,412,416,417,418,421,424,431],"10":[0,3,8,11,12,21,22,26,32,33,34,38,46,72,74,77,81,85,88,100,101,102,106,112,120,124,127,130,133,135,136,144,169,175,187,193,194,195,204,205,206,209,219,220,228,229,236,238,241,246,251,258,262,263,265,266,271,277,279,280,284,289,306,312,316,317,318,337,356,357,359,372,380,381,394,409,414,417,418,420],"100":[2,11,17,22,26,29,39,45,47,53,57,59,74,77,86,89,101,106,112,114,118,120,169,181,182,183,193,194,195,204,205,206,220,228,258,263,279,356,357,382,401,414,415,417],"1000":[2,11,14,26,42,43,44,45,49,51,52,53,54,56,57,60,63,65,66,67,69,70,71,72,73,75,76,77,80,81,82,83,84,85,86,87,88,89,90,91,94,95,96,99,100,101,103,112,114,120,122,130,131,132,141,169,173,177,179,186,188,189,190,192,193,194,195,198,199,200,201,203,204,205,206,208,210,220,221,222,228,279,339,342,360,361,386,392,415,416,417,418],"10000":[33,75,106,114,118,139,187,209,416,418],"100000":75,"1000000":[190,394],"1000000hz":114,"1000hz":[220,228],"1000m":[416,417],"10086":34,"100\u03c9":246,"100ask":169,"100k":[258,259,262,271,368],"100khz":[222,226,406],"100ksp":306,"100m":[2,22,28,220,228],"100ma":277,"100mbp":331,"100mv":39,"100pf":400,"100u":[138,222,229,401],"101":[178,322,352,414],"101_lua_lod":215,"1024":[6,13,17,32,41,103,106,119,122,126,136,144,199,200,201,211,212,213,220,228,251,304,368,373,385,392,415],"1024k":297,"1024m":133,"1025":266,"1027923658":420,"102a3b4c5d6":138,"103":[331,388,390],"103336":177,"103348":177,"103372":177,"103_lua_lod":215,"105":[17,28,101,126,251,322,353],"105_lua_lod":215,"106":107,"1061":177,"1061642968":[220,226,233,239,255,341,420],"1063":177,"107":[41,106],"108mhz":246,"109":106,"109pin":304,"10_anim":169,"10cm":93,"10k":[262,263,265,407],"10khz":[114,396,401,406,412],"10m":[14,317],"10ma":412,"10mbp":331,"10mhz":222,"10mil":[230,235,242,264,276,277,278],"10mm":246,"10mv":[401,406],"10u":[127,263],"10v":398,"10w":219,"10x":322,"11":[8,16,41,78,106,120,124,128,135,141,169,175,219,220,228,229,234,236,238,240,241,246,263,265,271,277,279,284,306,308,312,317,364,367,368,369,371,372,394,409,414,417],"110":289,"110m":35,"11100":37,"11111":37,"112":386,"1120":106,"112kb":220,"113":41,"114":[41,106,124,414],"114514":414,"115":106,"115200":[41,94,136,143,188,189,210,213,220,221,228,229,269,277,291,317,318,382,394],"1152000":394,"1173":177,"1174":177,"1175":177,"11898":312,"11b":270,"11bit":337,"11g":41,"11th":[64,414],"12":[8,11,12,16,22,32,38,41,60,98,106,111,112,117,120,127,128,135,144,169,179,236,238,241,246,251,253,263,265,269,271,277,279,284,295,306,312,337,373,379,391,392,394,400,401,412,414,415],"120":[38,50,101,107,169,186,220,228,304],"1200":[103,279,394],"120000":[417,418],"12010126":34,"120kb":337,"120mhz":246,"121":64,"122":128,"1222":20,"12222":20,"123":[8,19,21,26,31,59,98,107,113,124,126,140,144,266,280,289,341,373,414,415],"12312121212":289,"123123":414,"123321456654":[144,373],"1234":[19,103,106,128,137,414],"12341234":[141,315],"12342334":34,"12345":[266,387,414],"123456":[8,82,107,124,128,414],"1234567":[107,414],"12345678":[12,107,141,315,414],"1234567812345678":21,"123456789":[34,62,107,414],"1234567890":[8,103,116,178,220,228],"12345678901234":178,"1234567890123456":[8,21,178],"1234567890666666":[8,21,178],"1234567890m":103,"1234567890u":103,"12345678910":414,"1234567891011":414,"123abc":128,"123jfoiq4hlkfjbnasdilfhuqwo":[13,104],"124":32,"124045331":106,"124045360":106,"12411":[64,65],"12425":12,"1248":103,"124999":263,"125":246,"125000":263,"1262":177,"126322567":[417,418],"1264":177,"127":[22,38,134,135],"128":[8,21,32,94,116,144,169,173,178,186,220,228,263,279,287,304,373,437],"128035":263,"1280m":106,"128hz":289,"128k":[261,262,285,395],"128kb":280,"128m":[204,205,206],"128mb":307,"128x160":431,"1298":[356,357],"12awsaslwlaawsllslllswasllalssawwlawslaw":414,"12awslawslaw":414,"12bit":[136,226],"12f":[36,267,268,269,322],"12f\u4f7f\u7528\u8bf4\u660e":267,"12f_\u6a21\u5757\u4ea7\u54c1\u89c4\u683c\u4e66":267,"12f_modul":267,"12f_wifi":267,"12f_wifi\u6a21\u5757\u786c\u4ef6\u8bbe\u8ba1\u624b\u518c":267,"12k":342,"12m":[246,322],"12mhz":246,"12x":135,"12x12":179,"13":[11,41,78,106,120,124,127,141,234,236,238,240,241,246,253,266,273,279,284,295,304,306,312,394,400,414],"1300001":41,"132":417,"1328565":[356,357],"132mhz":246,"133":417,"134":417,"1348":177,"135":417,"1350":177,"1354":177,"135hello":414,"136":417,"137":[107,417],"138":417,"139":417,"13m":278,"14":[11,36,38,41,78,106,120,124,127,229,234,236,238,241,246,253,273,279,284,295,306,312,382,383,394,415],"140":[106,417],"141":417,"1415926":414,"1416":[414,415],"142":[177,417],"144":177,"144mhz":246,"145":177,"1460":124,"14bit":337,"15":[31,33,41,64,65,78,82,106,107,120,121,124,134,135,144,169,190,211,212,213,219,229,236,238,241,246,263,273,279,284,304,306,312,366,394,401],"150":[169,322],"1500":[124,271],"15000":[65,106,140,141],"1500000":[115,215,242,331],"150m":246,"150mbp":270,"152":11,"15200":394,"1526hz":77,"156mhz":246,"15\u03bca":[396,401],"15dbm":106,"15km":316,"16":[2,3,6,8,11,14,22,29,38,39,41,61,81,101,103,105,106,117,128,135,136,137,144,169,199,200,201,220,228,231,236,238,246,251,253,261,262,263,267,270,284,295,304,306,312,322,336,337,373,392,394,415,434,437,440],"160":[11,38,103,144,169,173,186,188,189,220,304,308,437],"1600":177,"16000":2,"16000000":263,"1601":177,"160kb":275,"160khz":193,"160m":[310,322],"160mhz":[188,189,251],"160x":173,"16384":[6,220,228],"1650":112,"1652230554":117,"165kb":104,"16777216":[199,200,201],"168":[138,141],"168mhz":246,"16bit":226,"16byte":[124,263],"16e":415,"16k":[5,395],"16kb":[6,337],"16ksp":337,"16m":[134,263,307],"16mb":[199,200,201,306,307,312],"16mflash":219,"16px":366,"16x":[11,38,135],"17":[11,21,22,38,48,82,97,103,106,117,120,121,122,124,126,140,197,204,205,206,220,229,230,231,235,236,238,242,246,253,258,264,267,273,276,277,278,284,306,311,312,387,420],"1709":177,"1712":177,"1712mv":177,"1713":177,"172":169,"176":386,"1776":177,"1777":177,"177x177":[11,38,135],"17955":414,"18":[11,22,38,41,64,73,82,133,179,180,220,231,236,238,246,253,267,270,273,304,306,312,318,341,375,379,420],"180":[11,38,135,141,169],"1800":112,"180mhz":246,"1850":106,"1860":106,"1884":107,"18khz":84,"19":[11,21,28,38,41,73,106,220,231,236,238,246,253,267,273,291,295,304,306,312,318,341,356,357],"190":169,"1900":[117,124],"1919810":414,"192":[38,101,135,138,141,190,305],"19200":136,"1926":414,"192kb":255,"192m":[245,322],"192mhz":246,"194":41,"1999":[263,356,357],"1\u03bca":[406,412],"1_":415,"1_20211022":236,"1_layer":415,"1a":[23,318,400],"1a_v1":426,"1b":318,"1byte":[33,124],"1cg28rk":355,"1e":415,"1ecm":106,"1f":414,"1fp":4,"1k":[94,270,279],"1kb":[211,212,213],"1khz":[114,193,194,195,220,228],"1m":[2,279,304,394],"1ma":412,"1mb":270,"1mbyte":[339,360,361],"1msp":337,"1mv":[406,412],"1nat":106,"1nf":229,"1s":[188,189,190,208,418],"1st":[38,415],"1u":[103,190],"1ua":[337,401],"1uf":[229,246],"1us_tick":33,"1v":263,"1x":135,"1y":135,"2":[0,2,4,5,10,11,13,14,15,19,22,24,25,26,27,28,29,36,37,38,39,41,49,57,59,62,64,65,66,67,75,78,82,83,84,88,89,90,93,94,98,101,103,105,106,107,108,109,110,112,115,120,121,124,126,128,130,131,132,134,135,136,138,141,144,169,172,173,175,177,181,182,183,187,188,189,194,199,200,201,204,205,206,211,212,215,217,219,220,221,225,226,228,229,230,231,234,235,236,240,241,242,243,245,251,253,255,258,261,262,264,266,267,270,271,276,277,278,279,280,284,285,286,287,289,292,293,295,296,304,310,314,315,317,318,322,325,326,330,336,337,339,340,342,343,347,349,357,359,362,365,371,373,375,378,385,387,388,390,392,398,401,403,409,416,417,431],"20":[11,38,41,72,93,101,106,122,126,135,144,169,173,181,182,183,186,188,189,194,198,199,200,201,203,204,205,220,228,231,236,238,246,267,270,271,273,277,279,284,304,306,312,322,373,378,398,403,414,415,420],"200":[2,11,26,27,40,66,67,75,82,89,93,120,141,169,181,182,183,266,277,305,375,412,415],"2000":[38,57,64,77,78,90,93,108,112,114,120,136,138,169,197,208,211,212,213,220,228,284,416,417],"20000":[64,136,375],"2000000":[38,97,122,126,136,203,220,228,387,394],"20000000":[11,126,381],"2000m":417,"20034598":180,"200345a8":180,"200\u03bca":412,"200k":13,"200kb":[255,275],"200m":[133,322],"200ma":[246,412],"200mhz":251,"201":38,"2015":[1,414,415],"2017":64,"2018":[34,169,356,357,414],"2019":[356,357,364,367,368,369,371,372,379,414],"2020":[256,262,306,312,338,357,381,382,383],"2021":[54,117,197,220,258,356,365,373,380],"20211011092353":358,"20211011092608787_qq\u622a\u56fe":358,"20211202193519160_air103_\u6838\u5fc3\u677f\u8bbe\u8ba1\u624b\u518c":236,"20211202193606476_air103_mcu\u8bbe\u8ba1\u624b\u518c":236,"2022":[0,8,15,16,22,41,112,169,280,281,342,349,356,366,374,375],"20220114193313925_air105\u82af\u7247\u6570\u636e\u624b\u518c":244,"20220303111656608_air105\u6838\u5fc3\u677f\u4f7f\u7528\u624b\u518c":244,"20220419_220202":345,"20220420_223344":347,"20220511":243,"20220513112445291_air105_mcu\u8bbe\u8ba1\u624b\u518c":244,"20220605164850945_air32f103\u82af\u7247\u6570\u636e\u624b\u518c":[257,260],"20220612160340":246,"20220612160407604_qq":246,"20220721163511464_\u534e\u82af\u5fae\u7279swm181\u6570\u636e\u624b\u518c":[334,335,337],"20221028114557272_air780e\u5f00\u53d1\u677f\u539f\u7406\u56fev1":278,"20221104135203881_780x\u5f00\u53d1\u677f\u539f\u7406\u56fe\u548cpcb":278,"20221110145812309_air780e\u5f00\u53d1\u677f\u5587\u53ed\u6269\u5c55\u677fv1":278,"20221219":284,"2023":[1,3,8,12,14,17,19,21,22,28,31,32,41,73,78,106,121,124,128,131,133,135,140,141,258,269,277,279,357,391,400],"20230330":284,"20230619165631229_air601":267,"20230626161923628_\u5f00\u53d1\u677fevb_air601":267,"20230721175506039_air001\u82af\u7247\u6570\u636e\u624b\u518c":224,"20230726105503590_air601":267,"2024":[17,22,34,36,41,48,103,106,124,126,140,141,266,291,308,318,357],"2048":[116,124],"2048bit":116,"204mhz":246,"205":40,"20_list":169,"20bit":263,"20k":[169,262],"20khz":89,"20m":[126,381],"20mhz":251,"20mv":401,"20ppm":401,"20v":[396,398],"21":[20,41,93,136,169,220,231,236,238,246,267,271,273,284,306,312,356,357,391,414,420],"211013":337,"216m":258,"216mhz":259,"21mm":[306,312],"21v":401,"21x21":[11,38,135],"22":[11,12,38,41,82,99,100,112,120,209,231,234,236,238,240,246,256,267,270,271,273,284,306,312],"220":[38,169],"2200":34,"223":414,"227096712":106,"227857":263,"23":[8,15,17,41,106,118,120,141,169,231,236,238,246,267,271,273,284,295,306,312,414,415,420],"230":414,"230400":136,"231":41,"233":414,"2333":414,"233333":128,"2334ma":234,"23423":82,"23456":340,"235":169,"239":263,"24":[11,38,41,78,120,172,179,204,205,206,229,231,236,238,246,251,267,271,284,295,306,312,337,373,374],"240":[4,62,101,103,107,144,169,188,189,220,228,304,305,373,434,440],"2400":[136,279],"2400000":41,"24000000":[14,138,173],"24000000u":222,"240m":[219,312],"240mhz":[103,188,189,270],"240x240":431,"240x320":[331,431],"2425864":64,"244":124,"2452":106,"248kb":337,"2490":[356,357],"24_page":169,"24bit":38,"24hz":77,"24m":[103,246,304],"24mhz":[204,205,206,337],"24v":[396,401,406],"25":[2,41,103,135,141,229,231,236,238,246,253,266,267,271,284,291,295,306,312,322,325,338,364,368,369,372],"250":105,"2500":[220,228],"2549515":[356,357],"255":[14,15,19,25,41,64,124,138,141,169,173,204,205,206,383,394,414,415],"255tick":33,"256":[21,114,121,136,169,193,204,205,206,220,228,271,279,287,292,317,318,414,415],"2560m":106,"256k":[219,262,285,296,304],"256kb":275,"256m":[261,262,322],"25m":304,"26":[11,19,38,41,103,231,236,238,246,253,266,267,271,273,284,295,306,312,322,325],"2603":135,"2650":112,"2670":177,"2673":177,"2675":177,"26_slider":169,"26m":[291,331],"26mhz":321,"27":[3,8,17,22,39,41,60,76,82,135,181,182,183,231,236,238,240,246,253,259,263,266,267,271,273,284,295,306,312,381],"270":[11,38,135],"278":41,"2793ma":240,"28":[8,46,140,169,236,238,246,253,271,273,284,295,306,312,367,371],"281":169,"288":386,"288k":[270,304],"29":[28,34,39,126,169,234,236,238,246,253,271,273,284,295,306,312,414],"292":28,"299":266,"2999":34,"29bit":337,"2a":[406,407,412],"2bia":337,"2byte":263,"2d":41,"2d\u52a0\u901f":304,"2f":[53,181,182,183],"2g":[285,287,296,359,421],"2k":279,"2m":[103,126,220,232,237,304,322,386,394],"2ma":412,"2mbp":270,"2mhz":[103,188,189],"2msram":219,"2nd":[38,169,414,415],"2u":263,"2ua":277,"2v":[0,246,263,412],"2x":[135,169],"2y":135,"3":[0,2,4,10,11,15,17,19,24,25,26,36,37,38,39,41,49,54,59,61,64,65,66,67,75,81,82,84,88,89,90,98,101,103,106,107,109,112,115,117,118,120,123,124,126,128,132,135,141,144,169,173,175,177,181,182,183,199,200,201,203,204,205,206,210,215,217,219,220,225,228,229,231,236,241,242,245,253,258,261,262,271,278,279,284,287,292,295,304,310,314,317,318,322,336,337,342,355,356,357,362,365,369,370,373,378,386,387,388,390,392,395,398,400,401,403,416,417,429],"30":[11,38,59,106,107,120,135,144,169,173,186,195,215,217,236,238,246,253,263,273,277,284,295,306,311,312,337,349,403,415,418],"300":[66,67,112,120,172,192,195,365],"3000":[24,64,65,82,99,100,106,107,118,124,139,140,208,342,416],"30000":[64,65,66,130],"3000000":394,"30005":106,"3000m":[62,107,140],"3000u":133,"300k":[285,296],"300m":57,"300mah":219,"301":120,"302":331,"305419896":[188,189,190],"30cm":93,"30kb":255,"30ma":337,"30mil":229,"30u":263,"30v":406,"30w":[331,424],"31":[34,39,41,106,114,117,128,137,141,144,169,197,220,229,236,238,246,263,273,284,295,304,306,312,392,414,415],"31249":263,"3132":392,"313233616263":128,"31393033535138385400000000617603":190,"314":415,"31416e1":415,"3149ma":240,"32":[8,11,21,29,31,38,103,104,106,112,117,127,128,129,135,137,144,169,190,198,236,238,246,251,262,263,270,273,284,295,304,306,312,337,373,386,392,415],"320":[4,144,169,220,228,304,440],"3200":29,"32000u":222,"320480":108,"320m":106,"32472115200":34,"3250ma":240,"3269ua":247,"32765":289,"32768u":222,"32_textarea":169,"32bit":[3,103,110,261,322],"32k":[13,103,104,246,262],"32kb":[104,199,200,201,337],"32kbyte":226,"32khz":[246,337],"32mhz":337,"33":[39,126,128,137,144,169,236,238,246,284,295,370],"330":305,"3300":112,"330uf":229,"332kb":255,"34":[137,236,238,246,269,284,295,414],"3400":112,"345":[356,357,414,415],"34e1":415,"35":[41,188,189,231,236,246,267,284,415],"36":[41,231,236,246,258,267,284,415],"360":[169,409],"3600":[12,66,67,82],"3600000":280,"360k":297,"36khz":380,"37":[236,238,246,281,317,318,414],"37524839":339,"38":[22,236,238,246],"38400":136,"388":106,"3882":177,"3889":177,"3898":177,"38k":[35,380],"39":[124,246,284,295,304],"3\u7248\u672c":355,"3a":401,"3bia":337,"3cm":258,"3d":[41,430],"3duti":337,"3g":[285,287,296],"3hz":193,"3m":[331,398],"3rd":[38,414,415],"3v":[2,112,181,182,183,199,200,201,204,205,206,210,219,246,258,271,278,306,312,317,318,337,400,429],"3v3":[93,306,312],"3x":169,"3yn5g_tr":236,"4":[0,4,8,10,11,15,17,19,22,24,25,26,36,37,38,39,41,59,64,66,67,81,82,84,88,89,90,93,98,99,100,101,105,106,107,109,110,112,115,117,120,122,124,126,128,132,135,140,141,144,169,175,177,181,182,183,188,189,190,199,200,201,204,205,206,213,217,219,220,224,228,229,231,236,241,245,251,253,258,261,262,263,266,267,270,271,277,278,279,284,292,295,304,310,314,316,317,318,322,337,338,365,369,370,374,378,382,385,392,394,398,401,403,409,412,416,417,431],"40":[11,38,103,106,127,135,169,186,187,188,189,220,228,236,238,246,251,277,295,308,331,373,415],"400":[13,14,104,173],"400001004":[231,236],"4000mm":57,"400k":304,"400ma":246,"40123":124,"404":[27,40],"4067":41,"4095":19,"4096":[6,19,29,107,109,199,200,201,279],"4096bit":116,"40k":[169,229,259,262],"40kb":275,"40m":229,"40mhz":[188,189,229,251,270],"40u":[127,412],"41":[187,236,238,246,295,331],"4126ma":240,"4193":82,"42":[187,236,238,246,295,331],"42009":414,"43":[117,187,197,220,236,238,246,284,295],"4305ma":311,"433000000":[99,100],"4344ma":240,"4375":[220,228],"4392ma":311,"44":[106,246,247,266,284,295,304],"44000":9,"44100":29,"448":386,"448k":285,"448kb":280,"45":[169,215,246,284,415],"4500":[220,228],"45000":140,"456":[128,140],"4578":281,"458":169,"46":[103,187,200,201,206,246,247,266,295],"460":106,"460800":[136,394],"47":[60,187,246,284],"472":305,"4736522":64,"47pf":400,"47uf":229,"48":[64,169,173,187,190,246],"480":[169,219,304,331],"4800":[136,279],"48000000":33,"4804ma":247,"480k":[281,283,322],"480kb":280,"4846ma":234,"485":[136,217,279],"48m":[219,336],"48mhz":[259,337],"49":[187,246,295,414,415],"492":177,"494":177,"49k":229,"4_20210909":231,"4byte":[33,124],"4duti":337,"4e":415,"4f":414,"4g":[12,82,106,215,219,231,236,266,267,277,285,287,296,306,312,315,319,320,322,395,421],"4gmodem":219,"4hz":105,"4k":[13,17,204,205,206,217,263],"4kb":[12,199,200,201],"4kbyte":226,"4m":[246,304],"4mb":[306,307],"4mflash":219,"4mm":[232,233],"4th":[38,181,182,183,414,415],"4v":[177,220,228,229,246,337],"5":[8,11,15,19,22,25,26,28,31,33,36,39,41,43,57,59,60,64,66,67,71,73,76,78,82,89,90,96,98,103,104,106,107,112,114,120,124,128,135,136,138,141,144,169,172,173,175,177,180,181,182,183,190,192,193,195,199,200,201,205,206,217,219,220,226,228,236,241,245,251,253,258,261,263,270,278,279,284,289,291,292,295,304,306,312,318,322,331,354,365,370,372,386,394,395,398,400,401,403,412,414,416,417,418,443],"50":[22,32,41,101,114,118,135,169,181,182,183,193,194,195,246,265,279,295,320,414],"500":[22,50,76,81,84,90,105,130,169,181,182,183,195,220,222,228,320,401,418],"5000":[26,54,65,82,106,118,120,139,181,182,183,188,189,190,208,209,320,416],"5000m":[26,209],"5000u":222,"500\u03bca":401,"500m":[22,418],"500ma":229,"500ua":277,"5016":190,"5023":209,"5037":[188,189],"50736":177,"50788":177,"5080":76,"50832":177,"50hz":[22,308],"50kb":275,"50ksp":337,"50m":265,"50ma":401,"50mhz":271,"50mv":112,"51":[181,182,183,246,289,412],"510":115,"512":[14,32,82,119,143,169,279],"5120m":106,"512k":[297,304,312],"512kb":251,"514":414,"51k\u03c9":246,"51mm":[306,312],"52":[11,246,289,295,414],"520":172,"53":[243,246,289],"5370ma":240,"5383ma":234,"54":[11,246,289,431],"54mm":[230,235,242,264,276,277,278],"55":[106,107,246,289],"5576ua":234,"559":266,"56":[246,269,304,337],"560177349780":437,"567890":103,"57":[246,284],"57600":136,"58":[246,284],"587923556178":275,"59":[28,41,64,246,415],"591":28,"592":177,"593":177,"595":[84,177],"5\u03bca":412,"5a":[396,401,406],"5d":219,"5g":[231,236,267,285,287,296,356,357],"5k":[261,262,322],"5kb":277,"5m":[120,251],"5ma":401,"5mbp":172,"5msp":251,"5s":[188,189,190,208],"5th":[181,182,183,414],"5ua":337,"5v":[246,258,263,306,312,315,396,403,406,407],"5v2a":412,"6":[2,15,19,25,26,32,36,39,41,48,55,64,88,89,90,106,108,112,120,124,128,140,141,144,169,175,177,181,182,183,211,212,220,228,236,238,241,242,245,253,279,284,292,295,304,318,322,337,365,394,398,403,409,414],"60":[39,65,77,82,106,135,140,169,246,263,277,279],"600":[12,107,279],"60000":[64,65,106,118,124],"600000":280,"6050accel":74,"6050gyro":74,"6050temp":74,"6055f9779010":82,"606":305,"60fp":219,"60hz":39,"60kb":255,"60ma":277,"61":[128,246,415],"6100n":263,"6115ma":240,"6132ma":311,"618":73,"618_lua_lod":215,"61984":177,"62":[124,128,246],"6203cc94c7fb24029b110408_88888888":34,"62052":177,"62060":177,"6228":277,"63":[19,41,81,128,135,181,182,183,246],"64":[19,21,31,81,103,109,129,137,169,199,200,201,220,228,246,343,386,415],"640":5,"6400":5,"6406ma":234,"640k":[246,304],"640m":106,"640x":331,"649926645":420,"64bit":[3,103,110,121,279],"64hz":289,"64k":[17,121,262,289,297,304,368],"64kb":[199,200,201,251,275,280,337],"64mb":307,"65":[11,169,246],"65001":330,"65525":92,"6553":289,"65535":136,"65535u":33,"65536":180,"65555":22,"656786354871":440,"6584ma":247,"65k":[437,440],"66":[11,169,220,228,246,394],"660335018289":434,"661835138573":443,"665811924219":423,"666":414,"67":[106,246],"6703ma":247,"6721ua":234,"6728ma":234,"68":246,"6808454646333a0cbb8":[188,189],"688":76,"69":246,"6byte":138,"6c95875d0f5ba69607nzfl":34,"6mm":[220,239],"6th":[181,182,183],"6v":[177,229,246,263,337,398,403],"7":[6,11,15,22,25,26,28,37,38,39,41,43,55,64,78,79,88,89,90,103,106,112,120,124,127,134,135,136,141,169,175,177,181,182,183,206,213,229,231,236,238,241,244,245,253,263,267,277,279,318,322,352,353,354,356,357,394,409,414,417],"70":[169,220,228,246],"700":120,"700e":117,"700mil":[230,235,242,264,276,277,278],"70ua":337,"71":[246,263],"72":246,"7258089600":34,"7260ma":234,"72m":262,"72mhz":259,"73":246,"74":[246,304],"740":112,"74hc595":61,"75":[106,181,182,183,246],"750k":289,"754":415,"757ccd0cdc5c90eadbeeecf638dd0000":8,"75hc595":84,"76":246,"767":105,"767427989":420,"768":[105,304],"76v":0,"77":246,"78":[106,181,182,183,246,269],"780e":[117,277,279],"780ep":117,"789":[128,140,414],"78kb":255,"78mm":[230,235,242,264,276,277,278],"79":246,"7956ua":240,"7f":[36,279],"7g":36,"7k":246,"7mm":424,"7s":246,"7th":[263,414],"7uf":229,"7v":[39,246,337],"7z":[234,240,247,267,311,356,357,386,394,409],"8":[3,6,11,12,14,15,22,25,26,29,38,39,41,65,71,72,73,75,76,81,85,89,90,97,99,100,103,105,106,110,112,115,117,120,121,122,124,126,135,136,137,138,144,169,172,173,175,186,195,197,199,200,201,203,204,205,206,210,211,212,213,219,220,228,231,236,238,241,246,253,259,263,267,277,279,287,304,312,317,318,322,337,342,356,357,374,381,382,387,394,398,403,414,416,417,431],"80":[11,27,38,66,103,118,169,186,188,189,246,308],"8000":130,"8000000":222,"8000000u":222,"800k":[120,172],"802":270,"80300":177,"80364":177,"806":[304,414],"80khz":406,"80m":[103,232,237,322],"80mhz":[103,188,189],"81":246,"810":414,"81e0000":386,"82":246,"8222ua":240,"827963649":420,"8299999":41,"83":[11,246,394],"8311":291,"84":246,"85":[106,246,368],"86":246,"861":247,"861234":266,"862991234567890":48,"864040064024194":3,"86784":177,"86844":177,"86852":177,"87":246,"877164555":420,"88":246,"8883":107,"88v":0,"89":141,"8910":[268,322],"8bit":[38,126,263],"8k":[5,263,279],"8m":[304,307],"8mb":[220,251,307,312],"8n1":[41,136,229,269],"8th":263,"8ua":219,"8v":[0,2,112,177,242,278,398,403,412],"9":[3,11,25,26,33,36,37,41,88,89,90,99,100,103,106,107,108,112,117,120,144,169,175,229,236,238,241,246,253,279,356,357,394,406,414,417],"90":[2,11,38,118,120,135,169,246,269,279,374],"9000":[139,263],"90000":169,"91":286,"911cha":414,"921600":[115,136,211,212,215,220,233,239,306,312,317,331,386,394],"921fb54442d18p":415,"922u":263,"92k":265,"94k":270,"95":[118,220,277,370],"9501":[277,317,318],"96":[179,443],"9600":[136,279,291,317,318],"967368887":420,"96k":[258,261,262],"96m":304,"97":[284,415],"9731":135,"97656":177,"97672":177,"977":255,"97700":177,"97lo":415,"99":[41,107,266,356,357,374,414],"993":263,"999":[266,414],"9bit":38,"9m":263,"9th":414,"9u":33,"\u00df":169,"\u00e1":169,"\u03bca":[270,396,401,412],"\u03bcvision":[222,256,338],"\u03c0":415,"\u03c9":258,"\u2460":[215,412],"\u2460burn":217,"\u2460compil":217,"\u2461":[218,412],"\u2461creat":217,"\u2461develop":217,"\u2462":[412,418],"\u2462first":217,"\u2462luatask":217,"\u2463":[217,398,403,412],"\u2463manipul":217,"\u2464":[217,398,403,412],"\u2465":[217,398,403,412],"\u2466":[217,398,403],"\u2467":217,"\u2468":217,"\u4e0a\u8ff0\u76ee\u5f55\u7ed3\u6784\u4e2d\u7684makefile\u6587\u4ef6":354,"\u4e0b\u8f7d":355,"\u4e0b\u8f7d\u5e76\u89e3\u538b\u5230\u524d\u6b3e\u7684\u76ee\u5f55":355,"\u4e0b\u8f7dair302_sdk\u7684\u538b\u7f29\u5305":354,"\u4e0b\u8f7dluatos\u7684\u6e90\u7801":354,"\u4e0b\u8f7drtt\u7684\u73af\u5883\u5de5\u5177":355,"\u4e0b\u9762\u6211\u4eec\u5c31\u663e\u793a":172,"\u4e0d\u5efa\u8bae\u76f4\u63a5\u4e0b\u8f7dzip":354,"\u4e0d\u8981\u653e\u5728c\u76d8":355,"\u4e0d\u8981\u6709\u4e2d\u6587\u8def\u5f84":355,"\u4e0d\u9700\u8981\u540c\u6b65\u5b50\u6a21\u5757":354,"\u4e2dkeil\u7684\u8def\u5f84":354,"\u4f46\u6b22\u8fce\u62a5issu":354,"\u4f4d":337,"\u4f8b\u5982":355,"\u4fee\u6539":354,"\u4fee\u6539\u6216\u521b\u5efalocal":354,"\u5148\u542f\u52a8env":355,"\u5207\u6362\u5230rtt\u76844":355,"\u5382\u5546\u8981\u6c42":354,"\u53cc\u51fb":355,"\u53ef\u5355\u72ec\u6267\u884c":354,"\u53ef\u80fd\u6027\u4f4e":355,"\u5408\u5b99air001\u662f\u4e00\u6b3etssop20\u5c01\u88c5\u7684mcu":226,"\u542f\u52a8env\u7a97\u53e3":355,"\u5728":[354,355],"\u5730\u5740":355,"\u5927\u5927\u7684":354,"\u5982\u679c\u4f60\u662f\u5728\u627e\u5237\u673a":354,"\u5982\u679c\u53d1\u73b0\u7f16\u8bd1\u5931\u8d25":355,"\u5982\u679c\u7f16\u8bd1\u5931\u8d25":354,"\u5982\u679ckeil\u5b89\u88c5\u76ee\u5f55\u4e0d\u662f":354,"\u5982\u679cluatos\u4e0d\u5728":354,"\u5b89\u88c5\u80fd\u89e3\u538b7zip\u683c\u5f0f\u7684\u89e3\u538b\u7f29\u8f6f\u4ef6":354,"\u5b89\u88c5git":355,"\u5e76\u5efa\u597d":355,"\u5e76\u81ea\u52a8\u6253\u5305\u751f\u6210\u56fa\u4ef6\u538b\u7f29\u5305":354,"\u5f53\u524d\u7248\u672c\u4ec5\u652f\u6301keil\u7f16\u8bd1":354,"\u5f97\u5230\u7684\u76ee\u5f55\u7ed3\u6784\u662f\u8fd9\u6837\u7684":354,"\u5f97\u5230luatos\u76ee\u5f55":355,"\u5f97\u5230rt":355,"\u6211\u4eec\u63d0\u4f9b\u7684\u56fa\u4ef6\u5305\u5c31\u5305\u542b\u7f16\u8bd1\u597d\u7684\u56fa\u4ef6":354,"\u6216":355,"\u6267\u884c\u547d\u4ee4":355,"\u6267\u884c\u7f16\u8bd1":355,"\u62a5issue\u6216\u8005\u5230\u7fa4\u91cc\u558a\u4e00\u558a":355,"\u6307\u5411":354,"\u6309\u9ed8\u8ba4\u914d\u7f6e\u5c31\u5f88\u597d":355,"\u63a8\u8350\u76ee\u5f55\u4e3a":354,"\u6444\u50cf\u5934":304,"\u6572\u5165\u547d\u4ee4":355,"\u662f\u4e0d\u662fapi\u5f88\u7b80\u5355":172,"\u666e\u901a\u7528\u6237\u4e00\u822c\u4e0d\u9700\u8981\u7528\u5230\u672c\u6587\u7ae0":355,"\u66f4\u65b0\u8f6f\u4ef6\u5305":355,"\u672c\u6587\u8bb2\u8ff0\u7684\u662f\u81ea\u884c\u7f16\u8bd1\u56fa\u4ef6\u6587\u4ef6":355,"\u6bcf\u6b21luatos\u53d1\u65b0\u7248\u90fd\u4f1a\u628a\u7f16\u8bd1\u597d\u7684fls\u653e\u5230":355,"\u70e6\u8bf7\u53cd\u9988":355,"\u7248\u6743\u6240\u6709":415,"\u7535\u6e90\u529f\u80fd":406,"\u76ee\u5f55":354,"\u76ee\u5f55\u53ef\u4ee5\u770b\u5230":355,"\u76ee\u5f55\u6267\u884c":354,"\u770b\u770b\u5177\u4f53\u7684\u62a5\u9519\u539f\u56e0":354,"\u786c\u4ef6\u52a0\u901f":304,"\u786c\u72d7":304,"\u7b49\u5f85\u7f16\u8bd1\u5b8c\u6210":355,"\u7f16\u8bd1\u51fa\u7684\u56fa\u4ef6\u4f9d\u7136\u662fluatos\u56fa\u4ef6":354,"\u7f16\u8bd1\u6210\u529f\u4f1a\u663e\u793a":354,"\u7f16\u8bd1lua\u811a\u672c\u4e4b\u7c7b\u7684\u5e94\u7528\u578b\u6587\u6863":354,"\u83b7\u53d6luatos\u6e90\u7801":355,"\u83b7\u53d6rtt\u6e90\u7801":355,"\u89e3\u538b\u5230":354,"\u8bbe\u7f6ertt_root\u73af\u5883\u53d8\u91cf\u7684\u503c":355,"\u8be5sdk\u4e0d\u662fc":354,"\u8bf7\u4f7f\u7528":354,"\u8bf7\u786e\u4fdd\u6709\u6b63\u7248keil":354,"\u8bf7\u786e\u8ba4\u6240\u5728\u7684\u7f51\u7edc\u6ca1\u6709\u5c4f\u853dgitee\u7684\u8bbf\u95ee":355,"\u8d44\u6e90\u7ba1\u7406\u5668":355,"\u8d77\u7801\u9884\u75592gb\u7684\u78c1\u76d8\u7a7a\u95f4":354,"\u8dd1lua\u811a\u672c":354,"\u8df3\u8f6c\u4e00\u4e0b\u76ee\u5f55":355,"\u8df3\u8f6c\u76ee\u5f55":355,"\u8fd9\u4e2a\u6587\u6863\u4e0d\u662f\u4f60\u9700\u8981\u67e5\u770b\u7684\u5185\u5bb9":354,"\u8fd9\u4e2a\u8def\u5f84\u540e\u9762\u90fd\u4f1a\u7528\u5230":355,"\u8fd9\u662f\u7528\u4e8e\u81ea\u884c\u6269\u5c55\u56fa\u4ef6\u7684\u9ad8\u7ea7\u6587\u6863":354,"\u8fdb\u5165env\u6240\u5728\u76ee\u5f55":355,"\u8fdb\u5165rtt\u76ee\u5f55":355,"\u90091m\u7684\u56fa\u4ef6\u6587\u4ef6":355,"\u9009\u4e00\u4e2a\u7b80\u77ed\u7684\u76ee\u5f55":355,"\u901a\u5e38\u4e3a7zip\u683c\u5f0f":354,"\u901a\u5e38\u4f60\u4e0d\u9700\u8981\u8fd9\u4efd\u6587\u6863":354,"\u914d\u5408zbuff\u66f4\u7b80\u5355":172,"\u91c7\u7528\u9ad8\u6027\u80fd\u768432\u4f4darm":226,"\u9500\u552e\u72b6\u6001":406,"\u9650\u538b\u8f93\u51fa":406,"\u9650\u6d41\u8f93\u51fa":406,"abstract":[180,185,198,199,200,201,207,216,220,228,362,365,370,371,379,381,382,383,387,391,417],"air302_sdk\u5230":354,"boolean":[0,2,3,4,5,6,8,11,12,15,17,18,19,20,21,22,23,25,28,29,32,33,38,41,48,66,68,71,78,82,101,103,106,107,112,114,119,120,121,124,126,130,135,140,143,144,217,415],"break":[15,17,19,29,33,41,138,143,169,220,225,228,263,322,365,375,398,414,415,417],"byte":[3,4,6,13,14,15,18,19,21,28,29,32,38,64,72,81,82,84,85,103,104,106,109,110,115,116,118,121,124,126,141,144,169,173,175,180,181,182,183,188,189,190,199,200,201,204,205,206,220,228,246,261,262,271,289,317,318,322,337,342,356,357,369,373,374,378,381,391,392],"c\u7684\u5c01\u88c5":142,"case":[2,7,27,59,65,82,103,105,118,124,136,169,222,263,266,279,280,284,295,304,343,362,369,376,377,383,384,395,415,417],"catch":415,"char":[11,13,28,32,38,44,75,83,104,110,126,135,136,144,169,175,181,182,183,203,204,205,206,220,228,341,367,370,374,375,392],"class":[101,144,175,215,220,280,363,373,374,376,384,392],"const":[169,341,342,367,370,374,387,415],"default":[2,3,4,6,8,9,11,12,13,14,16,17,18,19,20,21,22,24,25,26,27,28,29,32,33,34,35,36,38,39,41,48,49,57,59,60,62,64,65,66,76,78,82,84,89,92,94,97,98,99,100,101,102,103,104,105,106,107,110,112,114,115,117,118,119,120,122,123,124,126,127,128,135,136,137,138,140,141,143,144,145,170,173,187,215,216,220,222,229,231,236,246,253,256,257,265,266,267,269,273,276,277,278,279,280,283,284,285,287,291,292,295,296,306,307,312,315,317,318,322,338,339,342,349,350,352,353,356,357,360,361,372,373,374,378,379,381,386,387,394,400,414,415],"do":[4,11,15,17,19,24,28,29,32,38,41,42,43,44,45,47,48,49,50,51,52,53,54,56,57,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,98,101,105,106,107,109,111,114,115,118,120,123,124,128,130,131,138,140,141,143,169,172,173,177,178,179,180,181,182,183,187,193,194,195,198,199,200,201,203,204,205,206,208,209,218,220,226,228,229,246,256,258,263,266,271,277,278,280,284,285,287,289,295,296,304,306,312,315,322,326,339,342,343,356,357,358,359,360,361,362,363,364,368,369,375,376,382,384,388,390,391,394,395,396,398,412,414,415,416,417,418],"ec\u540e\u7f00":354,"enum":259,"esp32s3\u91c7\u7528xtensa":312,"export":[326,415],"final":[19,31,140,215,255,256,275,280,342,343,356,357,403,412,415,417],"float":[3,36,41,82,105,110,144,263,279,373,374,409,414,415],"fls\u6587\u4ef6":355,"fls\u7ed3\u5c3e\u7684\u56fa\u4ef6\u6587\u4ef6":355,"function":[0,2,4,6,7,12,17,19,22,24,26,27,28,29,30,31,37,38,41,42,43,44,45,47,48,49,50,51,52,53,54,55,56,57,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,103,104,106,107,108,111,115,117,118,119,120,123,124,125,126,129,130,131,132,134,135,136,140,141,143,144,145,170,172,173,175,177,178,179,180,181,182,183,184,185,188,189,190,191,193,194,195,196,198,199,200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,219,221,225,228,231,236,237,241,246,251,253,254,256,257,261,262,265,266,267,268,269,273,274,277,279,280,283,284,287,290,292,294,295,297,310,314,316,317,320,321,322,325,333,337,338,339,340,350,356,357,359,360,361,362,363,364,369,370,372,376,379,380,382,383,384,387,388,390,391,395,396,406,407,412,417,418,419,421],"git\u5b98\u7f51":355,"goto":415,"import":[107,132,169,210,211,212,213,219,220,228,263,279,340,341,396,398,401,412,415,416,417,418],"ini\u4e2d\u7684plat_root\u8def\u5f84":354,"int":[0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,17,18,19,20,22,25,26,27,28,29,31,32,33,35,37,38,39,40,41,46,49,50,59,61,66,68,77,78,92,97,98,101,103,104,105,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,143,144,169,221,222,256,263,338,341,342,343,362,367,369,374,375,379,383,387,415],"long":[2,12,57,101,106,110,111,112,113,123,133,144,145,170,172,210,211,212,213,220,228,266,276,277,278,279,284,289,320,321,342,343,365,367,370,372,412,414,415,416,420,421],"luatos\u6e90\u7801\u76ee\u5f55\u4e0b\u7684":354,"m\u00b3":[96,414],"new":[8,11,12,21,22,28,31,34,41,61,68,103,106,112,123,124,126,127,135,140,141,144,145,170,185,204,205,206,208,214,215,216,217,220,225,228,257,258,261,266,279,281,283,292,306,307,309,318,322,336,339,349,356,357,358,360,361,369,370,374,375,384,388,390,400,406,407,409,412,414,415,417],"null":[68,169,279,342,343,368,370,414,415],"public":[21,48,62,106,116,279,416,429],"return":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,177,180,181,182,183,199,200,201,204,205,206,215,220,228,258,263,266,279,307,317,318,340,341,342,356,357,362,366,368,369,373,375,381,382,384,388,390,392,403,412,415,416,417,418],"s\u03bcg":96,"sdk\u672c\u8eab\u4e0d\u5f00\u6e90":354,"short":[41,57,101,110,123,144,169,177,220,228,229,246,258,263,279,315,348,359,387,401,412,414,415],"static":[27,44,106,138,169,221,222,229,279,316,342,343,375,383,387,388,390,412,415],"switch":[1,2,11,20,22,25,33,78,81,103,106,107,112,124,136,140,141,145,170,219,228,246,265,269,279,283,284,291,292,307,312,315,317,318,322,330,396,398,401,415,417],"swm181cbt6\u91c7\u752832":337,"thread\u76ee\u5f55":355,"throw":[258,415],"true":[2,3,4,5,6,8,9,11,12,14,15,17,18,19,20,21,22,23,25,27,28,29,32,33,34,35,38,39,41,42,43,44,45,47,48,50,51,53,54,56,57,60,63,65,68,70,71,72,73,74,75,76,77,78,79,80,82,83,85,86,87,88,91,93,95,96,97,99,100,101,102,103,105,106,107,108,109,112,114,116,117,119,120,121,122,123,124,126,128,130,132,134,135,136,137,139,140,141,143,144,169,177,180,181,182,183,187,188,189,193,194,195,199,200,201,204,205,206,208,209,211,212,213,218,220,228,277,284,291,339,340,341,358,360,361,375,382,386,387,414,415,416,417,418],"try":[2,6,12,14,17,59,103,124,169,173,215,220,228,258,263,278,279,307,312,342,362,366,378,387,394,400,412,414,415],"var":415,"void":[221,222,256,259,263,338,341,343,364,368,369,370,375,383,387,415],"while":[15,17,19,24,29,41,42,43,44,45,47,49,50,51,52,53,54,56,57,60,63,64,65,69,70,71,73,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,105,106,114,120,124,130,140,141,143,169,172,173,177,179,181,182,183,187,193,194,195,198,203,208,209,210,211,212,213,220,222,228,256,258,263,266,279,283,292,306,317,318,322,338,339,342,343,360,361,364,369,375,382,387,395,396,398,415,416,417,418],"windows\u5b89\u88c5\u5305\u53ef\u4ee5\u5728":355,"x64\u53ca\u4ee5\u4e0a":354,"y\u0101o":289,"y\u012b":289,A:[28,31,33,41,55,84,106,107,108,110,118,124,127,128,129,130,143,144,169,178,179,186,192,197,198,203,204,205,206,210,215,216,219,220,222,228,229,246,258,263,266,331,341,357,358,362,365,368,371,374,375,388,389,390,403,412,414,415,416,418,424],AND:[222,415],AT:[106,112,215,225,265,268,270,276,277,284,289,295,315,316,317,318,322,358],And:[75,112,124,169,232,259,262,279,322,378,387,415,417],As:[41,75,81,112,124,141,169,198,199,200,201,210,220,228,231,236,261,267,306,315,318,322,342,343,356,357,370,372,373,400,412,414,415],At:[75,117,169,197,203,215,220,228,258,269,292,312,317,332,341,342,343,356,357,359,362,366,380,385,387,394,396,400,414,415,416,417,419],Be:[220,228,280,342,358],But:[19,169,220,228,229,342,414,415],By:[22,59,124,169,246,266,320,321,341,362,414,415],For:[0,2,4,6,14,19,22,29,37,38,67,78,103,108,112,115,116,117,119,124,131,134,135,141,169,173,175,180,210,211,212,213,218,220,226,228,229,235,236,238,239,246,259,262,263,266,271,277,279,282,284,293,295,318,326,332,337,342,349,357,359,365,370,375,378,391,400,409,412,413,414,416,419,423],If:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,186,210,215,220,221,222,226,228,229,234,240,243,256,258,262,263,266,271,277,279,280,281,284,287,292,295,306,312,315,316,317,323,338,339,340,341,342,347,348,349,351,353,356,357,358,359,364,368,370,387,388,390,393,394,396,398,400,403,409,414,415,417],In:[2,7,11,34,38,64,65,75,82,106,107,111,118,124,135,169,178,179,198,204,205,206,215,220,222,226,228,229,246,251,258,263,266,269,271,277,279,281,284,289,292,304,306,312,317,333,340,341,343,344,347,356,359,362,364,365,367,370,378,383,386,387,398,400,409,412,413,414,415,416,417],Is:[4,6,29,48,144,181,182,183,204,205,206,210,211,212,213,220,228,266,278,279,284,295,322,396,414,415],It:[2,13,16,17,41,59,68,75,78,82,101,103,104,106,112,117,118,123,124,130,132,136,137,140,169,172,181,182,183,198,199,200,201,203,204,205,206,215,218,219,220,221,222,246,258,261,263,265,266,270,275,277,278,279,280,284,286,289,295,316,317,318,322,326,340,341,343,352,353,356,357,359,362,365,369,370,375,385,388,390,391,395,398,403,407,412,413,414,415,417],Its:[75,169,261,279,369,415],NO:221,NOT:415,Near:387,No:[2,4,5,7,8,11,12,14,20,22,25,27,28,29,38,39,41,50,65,66,67,76,78,82,98,100,101,103,106,107,112,113,114,115,118,120,124,126,130,131,133,134,135,136,137,140,169,172,215,217,220,228,232,237,245,252,261,262,272,276,277,279,280,300,306,309,310,322,341,342,349,369,370,387,396,414,415],Not:[2,27,59,103,106,108,111,134,169,263,279,287,304,308,331,333,341,352,385,392,400,406,414,415],ON:[169,222],OR:[135,169],Of:[169,172,218,243,409,414,415],On:[1,2,4,25,41,82,106,169,215,218,220,251,258,391,400,412,415,418],One:[62,145,170,177,188,189,190,210,211,212,213,220,228,229,280,362,415,417],Or:[112,124,126,258,263,266,269,284,322,343,356,380,415,420],Such:[112,387,414,415],That:[108,169,220,228,289,356,357,358,370,415],The:[0,2,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,24,25,26,28,29,30,32,33,34,36,37,38,39,40,41,42,43,44,45,47,48,49,51,53,54,55,59,60,61,63,64,66,67,70,71,72,73,74,75,76,77,78,79,80,82,84,86,87,89,90,91,92,93,97,98,99,100,101,103,104,105,106,107,108,110,111,112,113,116,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,135,136,137,138,140,141,142,143,144,169,172,173,175,177,178,180,181,182,183,187,188,189,190,193,194,195,197,199,200,201,203,204,205,206,208,209,210,211,212,213,215,217,218,219,220,221,222,226,228,229,246,251,255,256,257,259,261,262,265,268,271,273,275,276,277,278,279,280,281,284,285,286,287,289,290,291,292,295,296,304,305,306,307,312,315,316,317,318,319,320,322,323,330,332,333,336,337,338,339,340,341,342,343,344,349,352,353,356,357,358,359,360,361,362,363,365,366,367,368,369,372,373,376,378,379,380,381,382,383,384,385,387,388,389,390,392,393,398,400,401,403,406,409,416,417,418,421],Then:[41,169,172,173,215,220,228,229,243,266,343,352,353,357,362,398,414,415,417],There:[0,22,34,41,82,103,106,107,110,115,120,124,126,130,136,144,169,177,181,182,183,188,189,190,204,205,206,210,211,212,213,215,220,228,229,234,240,261,263,271,275,277,278,284,293,295,304,306,316,321,322,341,342,349,358,391,400,414,415,416,417,418],These:[169,263,392,414,415],To:[11,26,28,31,32,61,75,103,106,107,108,112,115,116,135,169,222,237,263,269,271,277,323,388,390,415],WITH:287,Will:[7,107,178,179,192,221,228,322,415],With:[107,169,258,266,277,331,337,358,383,415,417],_1:244,_1_:415,_:[7,8,28,110,111,169,271,287,341,373,393,395,415,417,418],__:415,____:75,________:75,____________________:75,____s________:75,__add:415,__air001_assert_h:222,__air001f0xx_it_h:222,__air001xx_hal_conf_default_h:222,__air001xx_it_h:222,__band:415,__bnot:415,__bor:415,__bxor:415,__call:415,__concat:415,__cplusplu:[169,222],__div:415,__eq:415,__ev_:415,__file__:222,__gc:415,__hal_afio_remap_swj_en:263,__hal_afio_remap_swj_nojtag:263,__hal_rcc_afio_clk_en:263,__hal_rcc_gpiob_clk_en:222,__hal_rcc_pwr_clk_en:263,__idiv:415,__index:[375,415],__ipair:415,__le:415,__len:415,__line__:222,__lt:415,__main_h:222,__metat:415,__mod:415,__mode:415,__mul:415,__name:415,__newindex:415,__pair:415,__pow:415,__shl:415,__shr:415,__sub:415,__tostr:415,__unm:415,_alloc:415,_arg_:415,_args_:415,_at_0x20000000:[225,322],_block_:415,_body_:415,_boolean_i:415,_c:[295,415],_call:415,_chunkname_:415,_clk:295,_close:415,_cnt:417,_currentline_:415,_d_:415,_ddd_:415,_debug:415,_e1_:415,_e2_:415,_e3_:415,_env:415,_error:415,_explist_:415,_extramsg_:415,_f_:415,_filenam:[367,370],_filename_:415,_funcname_:415,_function:415,_functioncall_:415,_g:[66,82,115,175,280,341,342,414,418],_getendpoint:263,_getfield:415,_getglob:415,_getinfo:415,_getistr:263,_gettop:415,_init:169,_isnumb:415,_kcontext:415,_lightweight:415,_limit_:415,_loadfil:415,_loadstr:415,_luato:280,_mod_:415,_mode:[367,370],_multret:415,_n_:415,_n_i:415,_newlibt:415,_next:415,_nil_i:415,_number:415,_number_repres:415,_o_:415,_param_t:169,_params_:415,_pcall:415,_pcallk:415,_pop:415,_pushcclosur:415,_pushcfunct:415,_pushinteg:415,_pushliter:415,_pushnil:415,_pushnumb:415,_regist:415,_remov:415,_repeat:[31,372],_s_:415,_set_:415,_setfunc:415,_setglob:415,_stat_:415,_state:415,_static:[108,400],_step_:415,_string_:415,_string_repres:415,_t:[374,415],_temp:394,_tonumb:415,_type:415,_typenam:415,_v1:[177,267],_v2:11,_v3:11,_valid:415,_var:415,_var_:415,_version:[175,179],_x_:415,_x_form:415,_xxx:215,_xxx_:415,a1:175,a2:175,a8:110,a8xza9cqs3cu79b:34,a_binari:415,a_c:415,a_cod:415,a_continu:415,a_dynam:415,a_find:415,a_garbag:415,a_long:415,a_messag:415,a_meta:415,a_pseudo:415,a_reference_in:415,a_registry_i:415,a_sequ:415,a_tail:415,a_temporari:415,a_vari:415,a_virtu:415,a_x_:415,a_y_:415,aa:415,aaa:[266,414],aabbccddeeff:141,aabcdefg:414,ab:[175,269,414],abandon:[15,106,109,118,136,415],abbrevi:[111,136,193,194,195,203,204,205,206,220,228],abc:[8,12,16,26,27,29,31,32,59,82,98,113,116,119,140,169,178,343,359,387,391,414],abcabcabc:414,abcd123:34,abcd:414,abcdabcd1234:169,abcdabcd:9,abcdefg:[34,144,340],abcdefgg:140,abcderg:140,abid:169,abil:[180,229,266,278,279,284,292,295,341],abl:[169,226,342,414],abmfa1ucw:34,abnorm:[12,112,263,279,292,409,415,417],abort:[263,415],about:[15,18,19,27,65,82,102,106,169,173,177,215,217,232,235,236,237,239,246,255,258,268,275,283,307,319,322,337,357,363,375,376,383,384,388,389,395,398,414,415],abov:[14,66,67,84,123,126,135,144,169,187,197,215,229,256,258,261,262,276,277,279,284,286,287,295,306,307,312,315,318,319,321,322,338,340,342,343,352,353,356,357,370,373,385,398,400,406,409,412,414,415,417,418],abroad:279,abscissa:[38,135],absenc:292,absolut:[32,93,143,169,409,414,415],ac5:338,accel:74,acceler:[61,74,106,219,270,316,331,357],acceleromet:[61,74],accept:[22,31,118,169,175,279,292],access:[106,112,169,261,268,271,322,340,359,371,378,393,414,415],access_kei:34,access_mod:378,accid:[266,412],accommod:101,accompani:362,accord:[3,4,15,19,22,24,33,38,42,48,49,60,71,81,84,90,95,96,103,106,107,110,122,123,136,138,139,140,141,144,169,177,180,181,182,183,194,205,220,222,228,229,246,256,258,263,269,280,306,307,312,316,317,320,321,322,338,340,341,343,352,353,357,359,365,373,387,394,398,401,409,412,414,415,416,441],accordingli:[144,169,373],account:[33,107,268,315,322,358,395],accumul:[8,403,414],accur:[124,133,197,219,220,412,415],accuraci:[41,65,108,114,169,193,194,195,246,251,279,316,320,337,398,401,412],accustom:416,acess_kei:34,achiev:[12,179,192,219,220,228,246,265,320,337,362,363,376,384,387,395,414,417,443],ack:[40,106,143],acknowledg:140,aco:175,acquir:[22,106],acquisit:[18,22,48,54,141,177,181,182,183,190,220,228,242,279,322,328,415,421],act:[75,141,169,373,385,415],action1:169,action2:169,action:[31,76,129,140,169,218,263,331,394],activ:[38,61,78,101,106,112,124,130,141,169,218,222,256,277,279,292,306,312,315,317,338,350,412,415],activelin:415,actual:[0,4,22,32,33,41,49,55,95,96,108,133,136,138,141,144,169,172,180,217,220,222,228,229,246,256,258,263,266,269,271,280,281,284,294,295,305,306,307,312,315,318,322,338,340,343,356,357,375,385,386,387,391,396,398,401,403,414,415,417],acyv3qdjrra0fw5ue58knq:34,ad:[3,6,8,12,14,15,16,17,19,21,22,28,32,33,34,41,48,98,103,106,124,131,132,133,135,140,141,169,172,204,205,206,225,229,246,256,266,277,278,279,280,291,292,312,322,323,338,341,342,363,365,376,384,387,393,415,417],adapt:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,169,220,258,265,279,284,319,322,333,352,353,361,365,386,387,388,390,395,403,407,409,412],adapter_index:31,adc0:[0,220,228,231,236,253,267],adc1:[0,177,231,236,263,267],adc2:[0,236],adc3:236,adc:[2,31,43,129,185,216,226,231,232,236,242,246,251,254,261,262,267,270,279,280,285,292,296,297,304,306,312,322,333,336,337,387,401,412,419],adc_0:[236,306],adc_1:[236,306],adc_2:[236,306],adc_3:[236,306],adc_4:306,adc_5:306,adc_clk:263,adc_cmd:263,adc_flag_eoc:263,adc_getconversionvalu:263,adc_getflagstatu:263,adc_in1:246,adc_in2:246,adc_in4:246,adc_in5:246,adc_in6:246,adc_initstructur:263,adc_range_1_2:0,adc_range_1_8:0,adc_range_3_6:0,adc_range_3_8:0,adc_scanconvmod:263,adc_softwarestartconvcmd:263,adc_temp:[220,228],adcgetconversionvalu:263,add:[12,14,31,32,33,61,98,112,135,145,170,192,197,215,218,220,225,228,246,256,259,262,263,271,277,279,280,284,286,292,308,322,323,338,343,347,352,353,356,357,359,366,367,375,384,386,387,388,390,400,413,414,415,420],add_btn:169,add_myap_5min:343,add_opt:169,add_tab:169,addb:414,addit:[3,11,22,23,26,31,38,75,98,106,107,118,129,131,140,169,210,220,222,228,232,237,245,246,251,262,280,281,283,285,294,310,312,315,316,320,322,342,349,352,353,356,357,367,368,400,414,415],addr:[31,61,64,75,126,220,228,366,374],address:[17,20,25,26,28,31,58,59,61,65,66,67,75,82,107,113,120,122,124,138,141,144,173,181,182,183,185,202,207,216,220,225,228,246,258,263,265,266,268,271,279,292,295,296,308,316,317,318,322,330,337,359,366,378,383,386,387,394,396,415,420,430],adequ:292,adfasdfadsfadsf:34,adhes:[398,412],adipisc:169,adjac:[106,169,280],adjust:[2,13,22,28,60,88,103,120,135,136,144,145,170,177,193,194,195,220,228,229,246,256,258,263,278,279,284,289,295,305,338,398,403,412,415],adjust_period:31,adler:104,adon:[261,322],adopt:[220,228,306,401,415],ads1115:[61,71,280],ads1115_conf_hcmd:[42,71],ads1115_conf_lcmd:[42,71],ads1115_data:42,ads1115plu:61,advanc:[6,105,106,145,170,175,217,222,246,256,319,322,338,357,359,398,415],advantag:[172,319,320,322,414,417],advic:415,adxl345:61,adxl346:61,adxl34x:61,adxl34x_data:44,ae:[8,178,279,287,383],af:61,afadjlw:62,affect:[19,89,90,117,144,169,220,228,263,277,295,320,403,414,415],affix:387,afford:225,after:[0,2,4,11,12,13,16,17,22,28,30,31,32,33,34,36,38,41,57,64,73,75,82,94,99,101,103,104,106,107,112,115,116,117,118,119,120,121,123,124,126,128,130,131,135,136,138,140,141,143,144,169,172,177,181,182,183,185,191,192,199,200,201,204,205,206,209,215,216,218,219,220,222,226,228,229,234,240,242,243,246,256,258,261,262,266,269,271,277,278,279,280,284,286,291,292,295,304,306,307,308,312,315,316,317,318,320,322,326,337,338,339,341,342,343,349,352,353,357,358,359,365,372,375,386,387,391,396,403,409,414,415,416,417,418],afterward:41,ag:[19,82,180,341],again:[4,6,11,12,15,22,33,75,118,135,138,141,142,169,173,180,211,212,213,218,229,243,263,266,277,279,284,292,317,318,342,357,396,403,409,412,414,415,417],against:[398,415],agent:365,aggress:415,agp:[277,319,322],agpio3:284,agpio4:284,agpio5:[284,295],agpio:[136,292],agpiowu0:295,agpiowu1:295,agr2:31,agre:169,agreement:[31,129,378,388,389],ah:[38,135,403,409],ahb:222,aht10:[61,184,185,216,347,350],aht10_data:45,aht20:347,aht:347,aid:41,aie:61,ain0:43,ain1:43,ain3:43,air001:[223,224,322],air001_assert:222,air001_dev:222,air001_pcb:[225,322],air001dev:222,air001xx_hal:222,air001xx_hal_conf:222,air001xx_hal_cortex:222,air001xx_hal_driv:222,air001xx_hal_flash:222,air001xx_hal_gpio:222,air001xx_hal_pwr:222,air001xx_hal_pwr_ex:222,air001xx_hal_rcc:222,air001xx_hal_rcc_ex:222,air001xx_it:222,air001xx_ll_bu:222,air001xx_ll_cortex:222,air001xx_ll_dma:222,air001xx_ll_gpio:222,air001xx_ll_pwr:222,air001xx_ll_rcc:222,air001xx_ll_system:222,air001xx_ll_util:222,air101:[22,75,84,89,103,111,112,115,117,134,172,173,177,178,179,184,185,186,191,192,196,197,198,202,203,207,210,214,215,216,220,230,231,239,240,241,268,271,304,321,322,333,341,342,348,349,350,353,358,386,388,390,395,421,441],air101_chip:[177,193,204],air101_core_bom_b_air101_core_a10_v1:231,air101_flash:394,air101_mcu:[211,231],air101_pcb:[232,322],air103:[22,39,75,103,111,112,115,117,134,172,177,184,185,191,196,202,207,214,215,216,220,229,234,235,236,241,268,271,304,322,333,341,348,358,394,395,421,441],air103_:236,air103_bom_b_air103_a10_v1:236,air103_cor:236,air103_mcu:[177,194,205,212,236],air103_pcb:[237,322],air105:[0,2,4,28,33,75,103,111,115,117,136,137,145,172,174,177,184,185,191,196,202,207,214,215,216,244,304,322,333,348,358,388,390,395,421,422,423,431,441],air105_cor:244,air105_download:394,air105_mcu:[206,213,244],air105_pcb:[245,322],air106:304,air107:348,air10x:[75,394,431],air112:219,air153c_wtd:61,air201:[0,2,3,6,8,11,14,16,18,19,20,22,24,25,28,30,32,34,36,38,41,97,98,103,104,108,109,110,112,114,117,118,120,122,126,128,129,130,132,135,136,139,140,141,144],air202:255,air302:[304,322,395],air302_sdk:354,air32:[58,59,64,82,140,256,258,261,322],air32cbt6:[257,260],air32f103:[235,236,237,239,257,259,260,322,338,441],air32f103_pcb:[261,322],air32f103cbt6:[256,258,261,262,263,322],air32f103cct6:[262,263],air32f103cxt6:257,air32f103rpt6:263,air32f103vet6:263,air32f103vgt6:263,air32f103zet6:263,air32f103zgt6:263,air510h:321,air510u:[41,277,285,316,319,321,322],air530z:[41,316,319,321,322],air600:[24,112,123,141,215,284,285,286,356,358],air601:[22,103,265,269,271,322,358,395],air640w:[304,322,395],air700:[22,112,215,281,283,285,304,315,322,333,356],air700e_gpio_table_20231227:22,air700eaq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air700ecq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air700emq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air722:421,air722ug:[268,322],air724:[22,106,421],air724ug:[268,321,322],air72xux:421,air780:[0,1,2,3,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,34,35,36,38,41,59,82,92,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,126,127,128,129,130,132,135,136,138,139,140,141,142,143,144,215,268,276,277,278,279,281,282,284,286,295,298,304,315,320,321,322,333,342,358,395],air780e_cdcpppdemo:315,air780e_pcb:[283,322],air780eg:[22,41,103,112,123,141,215,276,279,280,281,283,284,285,286,315,316,321,322,356,395],air780ep:[0,2,3,4,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,38,41,59,82,92,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,120,121,122,123,124,126,127,128,129,130,132,135,136,138,139,140,141,142,143,144,268,284,290,293,295,304,322,333,358,395],air780epv:[0,5,22,284,291,293,294,295,296,304,321,322,333,358],air780epvh:[294,316,321,322],air780eq:[3,8,18,19,20,22,24,25,30,32,34,36,98,103,104,108,110,112,117,118,123,128,129,130,132,136,139,140,141,144],air780et:321,air780etgg:321,air780ex:[22,284,356],air795ug:323,air820:421,air820ug:[268,321,322],air:[61,221,228,270,400,414,443],air_jlink_keil:256,air_rcc_pllconfig:259,airisp:226,airkiss:[141,265],airm2m:[222,306],airm2m_all_crc:385,airmcu:221,airpsm:112,airtun:[140,280,421],ak8963:[61,279],al:61,alarm:[61,112,124,234,240,409],alarm_int:78,alert:403,algorithm:[8,31,60,129,178,222,256,261,262,280,322,338,341,415],ali:61,alia:263,alias:169,alibaba:[34,58,61,62,156,279],align:[8,145,170,261,265,271,322,369,398,415],align_cent:[101,169,220,228],align_in_bottom_mid:169,align_in_top_mid:169,align_in_top_right:169,align_out_bottom_mid:169,align_out_left_mid:169,align_out_right_mid:169,aliot:66,aliqua:169,aliquip:169,aliyun:[31,61,62,108,124],all:[2,8,10,11,13,22,32,38,39,41,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,65,66,69,71,72,74,76,77,78,79,80,81,83,85,86,87,88,89,90,91,93,94,95,96,103,104,106,107,110,112,113,122,124,126,130,135,136,137,144,169,172,173,187,199,200,201,218,219,220,222,228,229,234,240,246,256,258,261,266,277,279,280,284,286,287,305,316,318,322,326,338,340,342,357,358,369,370,373,385,387,391,394,400,403,406,409,414,415,418],all_dead:415,all_don:143,allig:[398,400],alloc:[124,144,169,279,339,341,360,361,362,363,368,376,384,415,417],allow:[17,38,101,106,130,169,279,284,292,295,343,387,412,415,416],almost:[130,258,414,415],alo:415,alon:[226,322,415],along:[281,342],aloud:289,alpha:[145,170],alphabet:415,alphanumer:415,alreadi:[6,10,124,135,169,218,280,383,396,414,415],also:[0,16,22,27,59,61,78,82,89,90,103,106,110,112,116,124,126,130,132,136,141,144,169,172,178,179,186,199,200,201,215,220,226,228,229,246,251,258,263,265,266,273,277,278,279,284,285,289,290,295,296,316,317,318,321,340,341,342,343,356,357,358,365,366,370,373,391,393,394,395,401,409,414,415,417,419],alt4:[279,284,295],alt:[31,103,279],alt_fun:31,alt_func:[22,279],altern:[64,169,255,263,279,292,296,331,415],altfun:[31,295],although:[75,266,277,284,295,307,385,398,414,415],altitud:41,altogeth:366,alwai:[22,76,103,112,113,117,120,130,169,172,229,258,280,289,341,342,364,372,378,392,396,409,414,415],am2320:61,am:[211,212,213,289,414],ambient:[0,61],ambigu:[414,415],amd:226,amend:41,amet:169,among:[365,369,400],amount:[17,82,118,126,136,137,144,204,205,206,271,279,284,292,295,368,409,414,415],amp:412,amper:403,amplif:169,amplifi:278,amplitud:[220,228],amr:[2,6,279,280,285,292,296,297],amr_:6,amr_cod:6,amr_nb:[2,6],amr_quailti:31,amr_wb:[2,6],an:[2,3,6,11,12,15,19,20,21,23,26,27,33,34,36,38,50,59,66,67,72,75,77,78,82,98,99,101,103,105,106,107,108,112,124,126,128,130,132,135,141,143,144,145,170,172,173,177,178,192,198,199,200,201,203,204,205,206,210,215,217,219,220,221,225,228,229,238,246,251,258,262,263,268,271,277,279,280,281,284,292,295,306,307,312,317,320,321,322,323,330,337,338,341,343,352,353,356,357,358,359,362,364,365,368,369,370,373,375,378,383,387,388,390,392,393,394,395,403,407,412,414,415,416,417,419],an_error:415,an_index_to:415,an_iterator_funct:415,an_state_:415,analog:[31,61,101,129,177,179,193,194,195,220,228,246,251,312,337,387,417],analysi:[41,220,228,319,322,362,363,376,384,407,409,415,416],analyz:[136,263,344,396,401,412,415,417],anchor:415,and_hooks_:415,and_table_:415,android:400,angl:[41,145,170,172,337,378,415],angular:169,ani:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,180,187,208,209,215,220,222,228,229,258,266,270,278,279,280,306,312,322,340,352,353,358,387,391,396,400,401,409,412,414,415],anim:[31,145,170,220],anim_cr:31,anim_fre:31,anim_on:169,anim_ono:169,anim_path_set_cb:31,anim_path_t:31,anim_path_t_fre:31,anim_set_exec_cb:31,anim_set_path_str:31,anim_set_ready_cb:31,anim_tim:169,anim_time_m:169,anim_typ:101,annot:[384,414,415],anod:84,anom_on:169,anonym:[130,415],anoth:[16,75,106,126,169,210,211,212,213,220,228,256,263,271,338,357,370,414,415,417],answer:[5,331,420],ant:[31,129,279],antbot:[31,129],antenna:[41,81,112,270,277,306,312,316,317,320,322,333],antenna_on:61,anti:[22,38,81,112,169,215,229,279,284],anticol:61,anxieti:219,anyth:[169,172,415],anywai:412,anywher:[414,415],ao3400:75,aon_gpio:[112,278],aon_gpio_2:253,aon_gpio_4:253,aongpio:[22,284,295],ap3216:50,ap3216c:61,ap32_test:50,ap:[20,107,124,141,265,269,280,356,357,365,383],ap_readi:383,ap_start:383,ap_stop:383,apb1:222,apb:[261,322],api:[0,2,3,4,8,10,11,14,15,16,17,19,21,22,26,27,32,38,42,44,45,47,50,51,52,53,54,56,57,60,61,62,63,64,65,66,67,69,71,72,74,76,77,79,80,81,82,83,85,86,87,88,91,93,94,95,96,103,106,108,112,116,118,124,126,133,135,141,145,170,172,175,179,199,200,201,209,216,220,228,237,266,277,279,284,289,295,322,331,342,343,361,363,376,384,391,395,421],apidemo:342,apiurl:82,apn:[31,279],app:[341,352,353,354,386,394],app_addr:386,app_sta_get:31,appar:38,appear:[106,118,169,215,258,276,277,278,279,315,330,331,359,391,396,398,400,409,415],append:[32,415],appl:[169,414],appli:[124,144,169,172,279,285,292,296,299,368,392,415,417],applic:[26,28,59,84,103,117,124,144,169,171,172,174,210,211,212,213,219,220,228,251,263,266,279,286,331,352,353,359,368,409,414,415,417],appropri:[16,229,307,352,353,415],approx:[255,265,275],approxim:[41,108,251,320,415],april:169,apsta:[141,308],apt:[173,352,353,360],ar:[0,1,2,4,6,10,12,14,15,17,19,22,24,27,28,32,33,34,36,38,39,41,60,64,68,75,78,82,84,99,100,101,103,106,107,108,110,111,112,118,120,121,124,126,130,131,135,136,137,141,144,169,172,173,177,178,181,182,183,185,186,188,189,190,198,204,205,206,210,211,212,213,215,219,221,222,228,229,231,234,235,236,237,239,240,242,246,254,257,258,261,262,267,268,269,271,274,276,277,278,279,280,283,284,286,287,289,292,293,294,295,297,304,305,306,307,316,317,320,321,322,339,340,342,343,344,349,352,353,356,357,358,359,361,362,370,375,378,382,383,384,386,387,388,389,390,391,393,394,395,396,401,403,406,407,409,412,414,415,416,417,418,421,427],arab:169,arbitr:246,arbitrari:[59,115,265,337,385,414,415],arc:[145,170],arc_creat:169,arc_get_adjust:169,arc_get_angle_end:169,arc_get_angle_start:169,arc_get_bg_angle_end:169,arc_get_bg_angle_start:169,arc_get_max_valu:169,arc_get_min_valu:169,arc_get_typ:169,arc_get_valu:169,arc_is_drag:169,arc_part_ind:169,arc_part_knob:169,arc_part_main:169,arc_set_adjust:169,arc_set_angl:169,arc_set_bg_angl:169,arc_set_bg_end_angl:169,arc_set_bg_start:169,arc_set_bg_start_angl:169,arc_set_chg_r:169,arc_set_end_angl:169,arc_set_rang:169,arc_set_rot:169,arc_set_start:169,arc_set_start_angl:169,arc_set_typ:169,arc_set_valu:169,arc_type_norm:169,arc_type_revers:169,arc_type_symmetr:169,arc_type_t:169,architectur:[169,305,312,357],archiv:[62,107,356,357],arcsin:415,arctan:337,arctang:415,arduino:[225,226,306,322,332],are_first:415,area:[4,5,11,38,81,106,109,121,126,135,144,145,170,261,266,271,280,281,289,297,322,366,367,368,373,378,385,414,415],area_t:169,arg1:[31,175,365],arg2:[31,365],arg3:31,arg4:31,arg:[31,131,175,208,416,417],argn:31,argp:415,argument:[101,387,415,416,417],aris:414,arithmet:[31,129,415],ariyun:61,arm:[219,225,251,258,263,322,337,356,357],armcc:354,armink:[180,199,200,201],armmb:258,around:[135,169,219,396],arrai:[8,106,145,170,172,185,214,216,220,271,279,342,373,374,392,415],arrang:[169,304,312,378,400,414],array_id:81,array_len:169,arrear:279,arriv:[124,369],arrow:169,artboard:11,articl:[108,169,243,255,266,279,307,341,365,417],as_identifier_:415,ascend:[107,415],ascii:[38,135,373,378,392,414,415],asd8938kjjsidiajdl:414,asdfassdfasdfass:8,asdicagydausckfugdaflgscdabgsdbahhacbshbsd:414,asfb:373,asid:229,asin:175,ask:[145,170,357,388,390,417],aspect:[370,415],assembl:396,assert:[175,177,417],assert_fail:222,assert_param:222,asset:1,asset_data_publish:31,asset_datav:31,asset_id:31,asset_regist:31,asset_status_get:31,asset_typ:31,assign:[76,106,124,135,145,170,175,258,373,417],assist:[263,316,349],associ:[169,350,387,415,417],assset:1,assum:[22,25,98,280,341,356,357,370,415],assumpt:[349,415],asymmetr:[169,178,398],async:[31,375],asyncget:375,asynchron:[11,61,106,141,210,211,212,213,220,228,279,343,387],at6558r:318,atan2:415,atan:175,ate:414,ath10:349,ath20:349,ath:349,atla:169,atom:263,attach:[12,38,106,220,224,228,236,244,246,257,258,260,267,278,334,335,337,375,403],attach_fil:355,attempt:415,attent:[28,34,65,66,67,75,78,84,89,90,109,124,131,169,218,220,228,246,256,258,263,284,286,295,310,314,322,362,388,390,391,398,412,429],attribut:[59,169,279,323,415],au_out:295,audio:[5,6,31,112,129,246,276,279,285,289,291,292,296,417],audio_format:[6,31],audio_id:31,audio_play_stop:279,august:[106,169],aut:169,auth:[31,140],authent:[26,31,48,59,106,107,129,279,383],author:[142,218,387,415],authstat:61,auto:[4,107,140,141,145,170],auto_del:101,auto_format:31,auto_phone_fix:[31,279],auto_reconnect:31,auto_reset_stack:31,autocollectmem:31,autofit:169,autoflush:31,autoguessencod:218,autohint:169,autolong:31,automat:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,215,219,220,225,226,228,229,234,240,256,258,261,265,266,269,276,277,278,279,280,284,289,292,317,318,322,338,339,349,357,360,365,383,387,398,400,401,403,406,409,412,414,415],autoreconn:[31,62],autosav:409,aux_rx:[284,295],aux_tx:[284,295],aux_uart:277,auxiliari:[41,106,175,283,319,322],avail:[0,2,11,15,19,22,64,84,104,106,112,118,126,128,136,137,141,169,209,220,246,255,259,270,275,278,279,284,285,292,295,296,304,306,331,349,350,352,353,386,395,403,409,414,415],avd33:246,averag:[71,105,124,229,403,412,415],average_temp:31,avoid:[75,246,258,263,279,284,292,295,306,312,316,350,387,398,412,415],awai:[66,172,229,246,258,415],await:375,awaken:[112,130,234,240,417],awar:263,awsl:414,axi:[61,135,169,279,409],azimuth:41,azur:218,b0fmk1ga5cp:48,b0wlt3yrmiptspli3e7fob5nvbjxo6pm:266,b1:277,b1i:291,b1q:291,b2:392,b2b:291,b2i:291,b2q:291,b:[11,31,41,55,81,87,106,108,110,118,128,130,132,144,220,228,321,352,353,359,373,374,387,392,395,414,415,416,417,418],b_hd:11,b_v2:11,b_v3:11,b_xy_:415,bacground:169,back:[2,4,31,101,107,126,136,144,169,211,212,213,220,228,279,306,312,322,359,373,387,400,412,414,415],background:[38,82,127,135,169,225,251,261,279,306,322,336,388,389,415],backlight:[25,38],backparenthes:415,backslash:[414,415],backspac:415,backtrac:415,backtrack:415,backup:277,backward:[136,137,144,169,251,373,414,415],bad:[26,375,415],bai:258,baidu:[31,41,61,222,256,338,355,359],baiduyun:[62,279],balabala:[343,418],balanc:[112,415],banana:[169,398,403,414],band:[31,120,141,251,415],bandrat:31,bandwidth:[99,100,270],bandwidthafc:[99,100],baobao:289,bar1:169,bar:[145,170,220,222,256,338,415],bar_creat:169,bar_part_bg:169,bar_part_ind:169,bar_set_anim_tim:169,bar_set_rang:169,bar_set_start_valu:169,bar_set_typ:169,bar_set_valu:169,bar_type_symmetr:169,barabala:[343,375,387],bare:[105,370],base32:[8,128],base64:[8,128],base64_decod:31,base64_encod:31,base:[15,19,31,41,61,75,78,106,107,117,124,131,145,170,175,180,217,218,220,225,226,246,255,258,263,266,275,277,279,280,290,292,306,312,319,322,328,331,332,339,342,344,356,357,360,361,364,372,386,391,393,394,412,414,421],base_year:31,bash:360,basi:[386,417],basic:[12,17,31,129,137,140,156,169,173,175,185,199,200,201,216,246,251,255,263,266,271,279,285,289,292,296,297,322,341,357,362,363,370,376,377,378,384,387,388,390,398,403,416],bat:[31,354,355,356],batch:[82,256,258,279,280,286,293,306,312,318,330,415],batteri:[11,169,197,219,220,246,396,409,412,421],baud:[14,61,94,115,126,136,188,189,210,211,212,213,215,220,228,229,233,239,242,269,270,277,279,291,306,312,317,318,331,382,386,394],baud_rat:31,bbb:[266,414],bbbbbb:[220,228],bbdvssrgefaknfft:62,bc:11,bclk:29,bd09:[41,277],bd:[41,277,318],bdata:8,beauti:[169,220,228],becaus:[21,26,65,73,75,101,118,126,169,178,186,220,228,258,263,266,269,271,277,279,289,306,316,323,331,342,343,378,392,400,409,412,413,414,415,417,429],becom:[41,103,109,112,169,218,266,279,413,414,415,417],been:[6,10,12,15,17,29,33,41,65,75,101,106,107,109,118,119,124,131,140,141,169,178,263,279,284,295,306,307,331,342,343,347,395,396,414,415],befor:[0,2,11,12,13,14,28,38,75,103,104,106,107,112,117,124,126,135,141,144,169,173,180,199,200,201,204,205,206,209,215,220,226,228,229,234,240,242,243,256,258,263,269,279,280,284,289,295,306,307,312,341,342,352,353,385,387,394,403,409,414,415,417,430],began:[220,228],begin:[6,28,31,33,110,112,144,169,211,212,213,215,220,221,228,234,240,258,263,266,341,342,356,362,373,387,403,414,415,417],beginn:[395,417],behalf:[26,246],behav:415,behavior:[107,169,365,387,415],behind:415,beidou:[219,283,291,316,317,318,321,322],being:[27,136,169,177,218,228,229,258,263,269,279,292,315,369,370,403,412,414,415,417],believ:220,bell:415,belong:[29,169,266,277,304,369,387,415,417],below:[5,75,135,169,177,220,228,229,246,258,263,266,306,317,352,353,369,401,403,409,412,414,415,417],benchmark:[78,101],benefit:[393,417],besid:169,best:[316,356,357,362,365,398,414,415],better:[12,13,106,169,220,228,341,414,416,417],between:[2,38,65,75,103,106,135,144,169,181,182,183,185,191,204,205,206,211,212,213,216,219,220,230,235,242,258,261,264,271,276,277,278,279,280,290,312,319,322,337,358,365,374,378,380,396,398,403,409,414,415,417],bf30a2:293,bg_drag_dir:169,bg_grad_stop:169,bg_main_stop:169,bg_opa:169,bh1750:61,bh1750_data:51,bh1750_read_light:51,bi:[3,220,285,296],bia:31,bias_onefourth:39,bias_onehalf:39,bias_onethird:39,bias_stat:39,bidirect:[169,181,182,183,220,228],bif:[261,322],big:[30,110,124,126,136,144,169,218,266,277,279,317,318,331,414,415],bigd:19,bigdata:[13,104],bigger:307,biggest:415,bilater:379,bilibili:217,bilingu:403,bin:[16,17,26,82,94,101,108,169,263,266,350,355,356,385,386,394,415],binari:[32,37,40,113,116,128,169,210,217,317,318,394,415],bind:[31,415],binfil:[66,258,281,394,400],binop:415,binpkg:[281,286,357],bit0:[103,106],bit1:106,bit2:106,bit32:415,bit64:[31,103,129,279],bit7:28,bit:[2,4,6,8,11,21,22,28,29,31,37,38,39,75,81,84,89,90,103,116,120,129,135,136,169,172,175,181,182,183,204,205,206,210,211,212,213,220,228,251,261,262,266,270,271,306,308,312,317,318,322,336,337,343,374,381,382,401,412,414,434,437,440],bit_ord:31,bitdict:31,bitmap:[11,38,135,169],bits_per_sampl:[6,31],bitw:[31,386],bitwis:415,biu:414,biubiu:414,biubiubiu:414,bl921600:317,bl:[220,228,386,394],bl_addr:386,black:[11,101,279,306,340,400],blackbodi:366,blank:[38,101,103,106,124,128,135,138,144,373,414,415],ble:[231,236,265,267,270,304],blend:169,bless:277,blink:[145,170],blob:[280,357,391],block:[17,18,28,29,61,81,104,122,126,133,169,175,185,199,200,201,216,256,261,279,322,342,343,368,375,382,387,414,417,418],block_:415,blood:102,blue:[38,338],bluepil:[256,257],bluepill_pcb:[261,322],bluetooth:[219,265,269,312,316,319,322,396],blur:306,bme280:61,bme680:61,bmp180:61,bmp280:61,bmp:279,bmx:61,bmx_data:52,bmx_data_data:52,bnf:415,boad:306,board:[2,11,84,89,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,216,217,220,225,226,228,229,231,232,236,237,244,245,250,254,256,260,261,267,268,274,279,283,294,302,307,309,310,313,314,315,317,332,333,335,336,338,370,395,398,400,403,412,421,423,429,430,431,441],board_v1:230,boardguid:[285,296,331],bodi:[27,31,40,59,66,67,266,369,414,415,417],body_len:26,bodyfil:59,bold:387,bom:[231,236,244,428],bond:415,book:[226,279,415,429,431],bool:[5,11,14,15,19,20,27,28,32,34,35,38,39,41,42,43,44,45,47,51,53,54,56,57,60,62,63,64,65,70,72,73,74,75,76,79,80,81,82,83,85,86,87,88,91,93,94,95,96,97,101,102,103,105,106,107,108,109,113,115,116,117,119,122,123,128,132,134,136,137,139,140,141,144,180],boom:103,boost:[406,429],boot0:[226,263],boot1:263,boot:[106,112,137,215,220,226,228,229,231,236,253,256,263,267,273,276,277,278,279,284,295,306,312,337,349],bootim:32,bootload:[226,317,386,394],bootmod:[304,306],bootstrap:[261,322],boottim:32,border:[135,169],border_sid:169,bore:415,born:258,boss:322,both:[2,22,33,41,106,169,215,229,246,263,277,278,284,292,295,349,356,359,382,387,398,415],bother:342,bottom:[2,11,17,22,26,31,38,41,66,84,89,107,112,115,118,124,129,135,169,215,220,243,266,280,281,284,295,342,369,398,403,409,412,414,415,418],bottom_fit_typ:169,bought:316,bounc:101,bound:[144,169,415],boundari:[169,362,363,376,377,384],box:[38,135,145,170,266,340],boyfriend:172,bpp:[31,169],brace:415,bracket:[414,415],bracket_:415,bracketpair:218,bracketpaircolor:218,brackets_ar:415,brain:[349,359],brake:[261,322],branch:[217,387,415],brand:[398,403,412],breakag:20,breakpoint:[365,415],breath:[76,185,196,216,220,228],bri:61,bridg:315,briefli:[220,228],bright1:[89,90],bright3:89,bright5:89,bright8:[89,90],bright:[88,89,90,145,170,172,193,194,195,220,228,317,400],brightest:169,bring:[169,418],broadcast:[107,141,320,383],broken:[131,400],brought:[28,220,228],browser:[27,400],brush:[11,89,90,108,215,220,225,232,237,243,245,254,258,269,274,280,283,284,290,294,295,304,310,314,322,323,326,341,348,352,353,356,359,386,388,390,396,409,421],bs:[64,65],bsd:415,bsp:[6,22,24,28,31,111,112,129,141,173,177,237,279,285,296,322,339,342,354,355,356,357,360,361,386],bssid:[31,383],bt:[130,415],bt_cb:130,bt_readi:130,btn1:169,btn2:[101,169],btn3:169,btn:[101,145,170,220,228],btn_bw0:135,btn_bw1:135,btn_bw2:135,btn_bw3:135,btn_creat:[101,169,220,228],btn_get_stat:169,btn_hcenter:135,btn_id:169,btn_index:169,btn_inv:135,btn_part_main:169,btn_set_check:169,btn_set_fit2:169,btn_set_fit:169,btn_set_layout:169,btn_set_stat:169,btn_shadow0:135,btn_shadow1:135,btn_shadow2:135,btn_state_:169,btn_state_checked_dis:169,btn_state_checked_press:169,btn_state_checked_releas:169,btn_state_dis:169,btn_state_pr:169,btn_state_press:169,btn_state_releas:169,btn_state_t:169,btn_str:169,btn_toggl:169,btn_xframe:135,btna:169,btnb:169,btnm1:169,btnm:169,btnm_ctrl:169,btnm_ctrl_:169,btnm_ctrl_no_repeat:169,btnm_ctrl_tgl_enabl:169,btnm_map:169,btnmatrix:[145,170],btnmatrix_:169,btnmatrix_clear_btn_ctrl_al:169,btnmatrix_cr:169,btnmatrix_ctrl_check:169,btnmatrix_ctrl_check_st:169,btnmatrix_ctrl_click_trig:169,btnmatrix_ctrl_dis:169,btnmatrix_ctrl_hidden:169,btnmatrix_ctrl_no_repeat:169,btnmatrix_demo:169,btnmatrix_get_active_btn_text:169,btnmatrix_part_bg:169,btnmatrix_part_btn:169,btnmatrix_set_btn_ctrl:169,btnmatrix_set_btn_width:169,btnmatrix_set_map:169,bu:[2,4,28,38,42,43,44,45,47,49,51,53,54,60,63,70,73,74,75,79,80,86,87,91,93,102,103,105,119,120,121,181,182,183,203,204,205,206,210,211,212,213,220,228,246,251,258,261,295,322,363,364,370,372,375,376,384,403],bucket:414,buf:[17,136,169],buf_siz:169,buff1:5,buff2:[5,31],buff3:5,buff4:5,buff:[6,12,29,31,33,38,61,72,81,101,106,120,172,173,373,374,415],buff_mod:31,buff_point:5,buff_siz:[31,173],buffer:[4,5,11,31,38,68,101,107,124,135,136,169,211,212,213,220,228,263,279,292,363,376,382,384,415],buffer_offset:279,bug:[169,258,263,292,400,407,409],bui:[258,396,398,403,412],build:[169,217,218,225,268,280,322,326,339,345,347,349,352,353,354,356,357,360,361,386,415,420],build_at:386,build_bi:386,build_cmak:339,build_host:386,build_system:386,builddat:31,built:[14,41,66,67,101,106,112,118,124,169,179,186,187,208,219,220,226,228,246,251,259,263,270,277,279,280,291,297,306,312,317,318,336,337,357,362,367,375,378,391,415,417],bulk:423,bullet:169,bunch:[277,387],buoi:[145,170],burden:246,burn:[177,216,217,225,229,232,237,243,245,254,257,258,261,269,274,283,294,307,310,312,322,336,337,348,349,398,403],burn_efus:306,burner:[261,322],bus_dac:2,bus_i2:2,bus_soft_dac:2,bus_typ:31,bus_voltag:60,busi:[11,38,99,100,107,121,139,141,261,279,280,292,321,322,340,343,417,430],button:[134,135,145,170,215,218,220,221,222,226,228,229,237,246,256,258,266,276,277,278,306,315,322,338,400,403,409],bv1vf4y1l7rb:217,bv2:11,by_clean:415,bypass:415,byte0:394,byte1:394,byte2:394,byte3:394,c1:169,c1c2c3:[21,279],c1c3c2:21,c3:[306,309,322,388,390],c3_pcb:[310,322],c81234567830:266,c99:169,c:[1,11,22,31,38,52,87,108,110,118,128,129,130,136,169,175,216,220,225,228,246,256,263,306,312,315,317,322,338,342,352,353,356,357,359,363,370,376,377,384,388,390,392,394,396,398,403,407,412,413,414,431,443],c_n_:415,ca:[20,26,66,107,124],ca_fil:31,cabl:[131,215,220,228,315,398,400,403,424],cable_insert:131,cable_remov:131,cach:[5,12,17,29,68,107,123,124,136,251,263,279,357,382,415],cache_s:31,cal:61,calchum:[181,182,183],calctemp:[181,182,183],calcul:[0,8,21,81,103,104,144,169,185,191,216,220,228,262,266,271,279,316,337,414,415],calculate_crc:61,calendar:[145,170,317,318,429,431],calendar_:169,calendar_cr:169,calendar_date_t:169,calendar_get_pressed_d:169,calendar_part_bg:169,calendar_part_d:169,calendar_part_day_nam:169,calendar_part_head:169,calendar_set_highlighted_d:169,calendar_set_showed_d:169,calendar_set_shown_d:169,calendar_set_today_d:169,calibr:[60,263,401,412],call:[0,2,4,17,28,31,32,38,41,46,48,64,66,67,75,82,84,106,107,112,113,115,118,124,129,130,131,132,135,141,144,169,175,199,200,201,215,219,237,257,258,261,266,269,271,279,284,289,295,322,338,340,341,342,343,362,369,370,371,375,379,381,382,383,386,387,391,417,418],call_:415,callabl:387,callback:[2,4,5,22,26,27,28,29,41,48,64,66,67,75,90,100,101,107,123,124,126,130,131,132,136,140,169,185,210,214,216,220,228,266,271,279,284,292,295,343,364,369,375,379,382,383,387,416,417],callbacktest:416,called_cal:415,called_catch_:415,called_collabor:415,called_empti:415,called_environ:415,called_glob:415,called_iter:415,called_objects_in:415,called_terminator_:415,called_upp:415,caller:415,calorif:412,cam:103,cam_vcc:[112,279],camera:[31,112,129,292,293,312,322,387,422,431],camera_id:4,can:[0,2,3,4,7,8,9,11,12,13,14,16,17,19,20,21,22,23,24,28,29,32,33,34,37,38,41,57,59,61,62,64,65,66,68,75,78,82,84,89,90,98,99,101,103,104,106,107,108,110,111,112,115,116,117,118,120,121,123,124,125,126,130,131,132,135,136,137,138,140,141,144,145,170,172,173,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,218,219,220,221,222,225,226,228,229,234,240,243,246,251,255,256,257,258,259,261,262,265,266,269,270,271,273,277,278,279,280,284,285,286,287,289,290,295,296,304,306,307,312,315,316,317,318,320,321,322,323,332,337,338,339,340,342,343,348,349,350,351,352,353,356,357,358,359,360,361,362,365,366,369,370,371,374,375,378,380,385,387,388,390,391,392,394,395,396,398,401,403,406,407,409,412,413,414,415,416,417,418,421,424,429,430],can_500kbp:72,can_rx:263,can_tdhxr:263,can_tdtxr:263,can_tx:263,cancel:[75,106,117,137,284,398,403],cannot:[2,12,13,15,19,27,28,33,59,72,75,78,82,104,106,107,108,109,112,116,118,120,123,124,126,130,139,169,178,210,216,220,226,228,229,243,246,258,261,262,266,269,277,279,280,281,284,285,286,289,292,296,306,312,316,317,322,323,331,341,342,343,352,353,356,357,359,369,375,387,392,398,400,403,409,414,415,416,417],canva:[145,170],cap:[229,398],capabl:[24,124,169,219,246,277,284,306,312,331,384,414],capac:[5,122,124,199,200,201,220,228,246,263,279],capacit:[229,246],capacitor:[229,246,317,400,412],capend:31,capit:169,caplevel:31,captur:[22,31,169,175,263,323,396,401,403,409,412],capture_buff:31,capture_cnt:33,card:[2,14,16,26,61,68,106,118,119,123,124,131,137,169,173,220,228,246,261,271,279,285,292,296,312,315,322,358,367,391,414],care:[82,229,342,395,412,415],carefulli:[103,106,306,400,412,414,415,417],carri:[41,306,312,396,407,412,415],carriag:[115,414,415],carrier:35,carry_method:415,casic:41,casic_aid:[31,279],casic_data:318,casic_data_bd:318,casual:[220,228,266,416],cat1:[103,112],cat:[22,277,285,287,296,395,421],catalog:[218,359],catalogu:350,categori:[175,280,427],caught:[310,322,415],cauliflow:417,caus:[12,14,19,28,106,124,169,229,263,265,269,279,292,306,312,343,344,358,398,400,414,415],caution:[46,101,106],cb:[31,90,145,170,343,374,375,417],cb_is_inact:169,cbc:[8,21,178,287],cbfnc:[61,418],cbfncpara:48,cbfun:31,cbpara:61,cbt6:258,cc1:400,cc2:400,cc:[31,129,131,398,401,403,406,407,409],ccc:[229,414],ccccc:229,ccitt:8,ccm:287,cd:[31,339,355,359,414],cdata:[13,104],cdc:[215,258,285,296,306,312],cdma2000:287,cdn:[218,224,236,244,246,257,260,267,278,334,335,337,358],cdup:20,ce:61,cede:415,ceil:175,cele:415,cell:[106,131,145,170,279],cell_info_upd:[64,65,106],cell_typ:[145,170],cellid:279,cellinfo:279,cellular:[31,124,129,396],celsiu:[0,28,49,120,279],cen:263,center:[11,38,135,144,169,289],centimet:320,central:337,cer:62,certain:[22,33,55,57,76,112,144,169,178,215,220,228,315,318,398,414,415],certainli:[414,417],certif:[20,26,48,62,66,107,124,279,318],cf:415,cfgsy:[277,317],ch0:9,ch2o:61,ch340:[331,421],ch343:[115,215,306,312,421],ch343p:312,ch:31,ch_cpu:[0,231,236,267],ch_vbat:[0,231,236,267],chain:[31,129,221,279,280,344,357,361],chang:[20,22,39,99,103,106,112,131,135,138,144,145,170,175,178,179,186,216,220,228,258,263,265,266,279,283,284,292,306,307,308,322,341,347,349,352,353,359,363,370,376,384,387,396,403,409,414,416,417,441],changelog:[283,322],changelog_luato:280,changer:169,channel1:263,channel3:[261,322],channel4:263,channel:[0,1,2,6,9,31,33,38,43,77,99,100,119,120,130,138,169,177,181,182,183,185,193,194,195,207,211,212,213,216,220,226,242,251,262,263,270,278,279,284,295,312,331,337,365,383,387,396,401,406],channel_switch:31,chapter:[177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,220,228,263,271,362,400,414,415],char_arrai:169,charact:[30,38,81,82,103,104,106,108,113,128,135,137,141,144,145,170,175,210,211,212,213,220,228,229,279,306,317,323,352,353,356,358,378],character_:415,character_x_:415,character_x_itself:415,characterist:[2,210,211,212,213,220,228,241,246,283,284,316,321,322,386,415],charg:[38,112,124,169,219,245,258,277,322,396,398,403,406,412,417],charge_vbat:246,charge_vcc:246,charger:[396,400],charpattern:175,chart:[82,145,170,225,232,322],chart_add_cursor:169,chart_add_seri:169,chart_axis_:169,chart_creat:169,chart_cursor_non:169,chart_cursor_t:169,chart_get_nearest_index_from_coord:169,chart_get_point_count:169,chart_get_point_id:169,chart_get_series_area:169,chart_get_typ:169,chart_get_x_from_index:169,chart_get_x_start_point:169,chart_get_y_from_index:169,chart_init_point:169,chart_part_bg:169,chart_part_cursor:169,chart_part_seri:169,chart_part_series_bg:169,chart_point_def:169,chart_refresh:169,chart_set_cursor_point:169,chart_set_div_line_count:169,chart_set_ext_arrai:169,chart_set_next:169,chart_set_point:169,chart_set_point_count:169,chart_set_point_id:169,chart_set_rang:169,chart_set_typ:169,chart_set_update_mod:169,chart_set_x_start_point:169,chart_set_x_tick_length:169,chart_set_x_tick_text:169,chart_set_y_tick_length:169,chart_set_y_tick_text:169,chart_type_:169,chart_type_column:169,chart_type_lin:169,chart_type_non:169,chart_u:169,chart_update_mode_:169,chart_update_mode_circular:169,chart_update_mode_shift:169,chat:115,chcp:330,cheat:[398,400],check:[2,8,11,13,21,28,31,33,38,82,101,104,106,115,116,120,121,124,128,135,136,145,170,199,200,201,211,212,213,215,218,220,222,228,229,242,243,256,257,258,263,266,269,271,312,317,318,331,338,342,345,346,347,349,352,353,356,357,361,367,382,385,392,396,400,412,414,415,417],check_crc:31,check_sim_period:31,check_valu:31,checkbox:[145,170],checkbox_:169,checkbox_cr:169,checkbox_is_check:169,checkbox_part_bg:169,checkbox_part_bullet:169,checkbox_set_dis:169,checkbox_set_text:169,checkout:355,checkpoint:[352,353,359],checksum:[31,136],chef:417,cheng:172,chenxuuu:[366,375,380,381,382],chestnut:369,chi:75,child:169,children:169,china:[34,62,277,279,285,287,320,336],chines:[11,38,124,135,169,179,218,220,228,265,283,322,330,331,342,356,359,373,403,414],chip:[0,14,17,22,25,28,31,38,61,66,75,101,112,115,120,121,129,135,177,184,191,195,196,197,198,199,200,201,202,204,205,206,207,210,214,215,217,219,220,221,224,225,228,229,232,234,235,237,240,245,250,256,257,258,260,261,268,269,271,273,275,277,279,284,285,291,292,295,296,302,306,309,312,316,317,318,321,333,334,335,336,338,356,357,358,359,380,386,387,391,394,395,398,400,401,406,416,421,426,431],chip_check:61,chip_id:[31,75],chip_target:357,chiperas:31,chipid:[204,205,206],chmod:415,choic:[222,256,338,365,414],choos:[89,90,131,169,205,206,215,220,225,228,229,251,263,279,322,395,400,415],chooser:[145,170],chrome:[169,400],cht8305c:61,chuang:278,chunk:[175,279],chunknam:175,ci:[221,339],cid1:279,cid:31,cillum:169,cipapmac:269,cipher:[8,283,322],cipher_decrypt:[31,178],cipher_encrypt:[31,178],cipher_list:31,cipher_suit:[31,287],cipstamac:269,circl:[31,38,135,144,169,220,228,396,415],circuit:[89,90,177,193,194,195,220,228,232,245,259,262,263,312,315,322,398,401,412,415,429],circular:169,circularli:169,circumst:[229,315],circumv:[414,415],citizen:415,citizens_:415,citron:169,cj_temp:71,cjk:169,ck2af9qd2k:34,ck:8,clamp:398,class_i:415,classic:[169,215,306,421],classif:[283,322,360,395,415],classmat:218,clean:[123,128,145,170,279,292,342,415],cleanmsg:31,cleansess:31,cleanup:[128,375],clear:[12,15,22,31,61,78,81,103,106,107,123,132,135,136,169,179,217,261,279,292,304,306,322,373,403,409,412,415,417],clear_bit_mask:61,clear_btn_ctrl:169,clearbuff:31,cleardownlink:31,clearli:[169,220,228,279,396],clearlong:[31,279],clearuplink:31,cli:[350,409],click:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,48,49,59,61,65,66,67,92,97,99,100,101,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,169,215,218,220,221,222,243,256,258,266,269,271,286,330,338,339,349,351,352,353,356,359,400,407,409,412,413,415,420,421,442],clickabl:169,client:[1,27,31,66,68,124,129,141,279,344,393,396,398,400,401,403,406,407,410,412,415],client_ca:31,client_cert:[20,31,61,62,107],client_id:[31,34],client_kei:[20,31,61,62,107],client_password:[20,31,61,107],client_private_kei:62,clientid:107,clip:[128,169,290,398,400],clk:[31,61,199,200,201,204,205,206,220,228],clk_24m:246,clk_27p12:246,clock:[31,33,61,84,89,90,103,112,120,129,135,136,169,175,188,189,197,204,205,206,220,222,226,228,229,234,240,245,251,256,258,261,262,271,279,284,292,295,297,306,321,322,337,338,372],clock_source_to_output_on_mco_pin:259,clockwis:[41,55,169],clone:[352,353,354,355,356,357],close:[13,31,32,41,46,61,78,102,106,112,115,137,145,170,173,175,177,181,182,183,199,200,201,204,205,206,220,228,229,246,259,261,269,279,292,322,365,370,379,381,382,383,387,409,412,418],close_btn:169,close_watch_dog:61,closef:415,closest:169,closur:[22,175,343],closure_:415,cloud:[2,7,11,16,31,38,61,107,129,215,220,228,265,269,279,280,284,289,292,295,323,333,352,353,359,421],cloud_compil:38,cloudc:61,clutter:279,cmake:339,cmakefil:342,cmakelist:359,cmd:[31,33,169,259,262,271,349,356,359,365,380],cmd_cnt:31,cmd_com_mod:31,cmd_rc:31,cmd_sysen:31,cmiot:106,cmsi:[225,256,257,258,263,322,338],cn:[22,26,34,58,59,64,78,82,112,140,218,282,284,293,295,317,318,359],cnt:[22,31,144,169,261,322,416,417],co:[66,169,175,268,277,280,322,330,337,417,418],coap:[31,129],coapdata:31,code:[1,4,7,14,22,23,25,26,27,28,30,31,35,38,39,41,46,48,59,66,67,71,75,82,89,90,98,101,106,107,112,113,116,118,120,124,126,130,133,135,138,148,156,159,165,169,173,175,177,179,180,181,182,183,185,187,188,189,190,192,193,194,195,197,198,202,203,207,208,209,210,214,216,217,218,220,222,225,228,234,237,240,258,261,263,266,269,277,279,280,284,289,315,322,328,330,336,342,344,350,352,353,360,362,366,370,371,373,374,375,378,379,381,382,383,386,388,390,392,398,400,403,407,416,417,418,424],codebas:[388,390],codec:[2,31,112,129,276,291,292],codepoint:175,coder:[31,99,100],coexist:265,col:169,col_cnt:169,col_id:169,cold:[71,220,312],collabor:417,collat:415,colleagu:169,collect:[99,100,118,175,177,258,263,314,322,369,414],collectgarbag:175,collector:415,collector_to:415,collis:81,colloc:321,colon:[88,414],colon_syntax:415,color:[31,61,101,135,145,170,172,220,289,322,431,434,437],color_arrai:169,color_blu:169,color_hex3:169,color_mak:169,color_mode_hu:169,color_orang:169,color_purpl:169,color_transp:169,colro:169,column:[145,170,266,387],com0:[39,238,394],com1:[39,238],com20:306,com2:238,com3:238,com8:349,com:[12,26,31,38,41,61,64,65,66,67,78,82,101,108,113,115,124,142,169,180,199,200,201,204,205,206,215,217,218,220,221,222,224,233,236,239,244,246,255,256,257,258,260,266,267,269,275,276,277,278,280,281,285,289,296,316,317,318,329,334,335,337,339,341,342,351,352,353,355,356,357,358,359,391,414,420,422,423,430,432,434,435,437,438,440,443],com_mark:31,com_numb:31,combat:217,combin:[205,220,222,229,263,277,279,304,317,318,321,356,357,394,400,414,415,417,421],combine_ec7xx:323,comdb:357,come:[75,131,169,220,246,251,306,317,318,356,365,414,415,417],comma:[61,218,365,414,415],command:[11,25,31,33,38,57,61,99,112,113,120,135,169,175,184,185,199,200,201,216,220,228,281,291,306,307,316,318,330,339,356,357,365,388,390,396,401,406,409,412],comment:[0,144,220,228,263,326,352,353,359,387,415],comment_:415,commerci:[169,280],commiss:[363,376,384],commit:[279,387],commodo:169,common:[26,73,84,89,90,103,107,108,124,138,140,145,170,178,215,226,231,236,263,278,285,295,296,306,320,321,337,358,370,380,388,389,390,394,396,414,415,419],commonli:[136,141,172,186,220,228,229,263,279,304,414],commun:[75,81,107,112,124,140,169,181,182,183,203,204,205,206,210,211,212,213,219,220,226,228,231,236,251,257,263,267,270,271,284,285,295,296,306,318,319,320,322,363,376,381,382,384,392,395,398,403,415],comp:175,compact:[321,414],compar:[103,144,226,263,337,398,414,415],comparison:[19,144,175,246,261,322,337,407],compat:[19,21,75,78,103,104,136,169,198,215,220,228,251,255,261,262,263,265,270,279,285,292,312,332,333,342,415,429,441],compens:412,competit:412,compil:[0,7,11,16,38,41,73,112,115,118,141,169,215,217,222,225,228,256,265,266,269,279,280,281,284,289,291,292,295,305,306,307,322,330,333,338,341,342,378,388,390,414,415,421],complain:403,complement:[31,129,414,415],complementari:[251,337],complet:[2,4,7,17,19,22,28,33,68,75,82,100,106,107,111,112,119,124,126,131,136,143,169,181,182,183,210,211,212,213,220,222,226,228,229,235,236,237,239,256,258,263,266,269,271,277,279,280,292,306,307,315,316,317,337,338,339,343,346,349,357,359,370,382,388,390,394,396,409,414,415,416,419,441],complex:[219,279,414],compliant:251,complic:[186,220,228,266,342,417],compon:[4,38,101,145,170,177,220,228,256,280,342,356,357,359,384,395],compos:[128,169,414],composit:[258,394,415],compound:415,compress:[4,27,31,129,169,173,279,280,337,356,357,358,386,394],compressor:104,compromis:415,comput:[116,215,220,226,228,257,261,265,276,277,278,279,306,315,322,352,353,356,357,358,366,396,398,403,409,412,414],compute_adler32:104,comxx:258,con:40,conack:[107,140],concat:[175,220,228],concaten:[175,414],conced:415,concentr:95,concept:[145,170,175,375,414],concess:415,concis:[344,413,414],concord:130,concorout:130,concret:17,concurr:279,cond:415,condit:[169,172,246,263,279,289,337,365,415,417,418],condition:228,conf:[31,61,169,225,322,350,362],conf_ce_mod:106,conf_disable_ncell_mea:106,conf_fake_cell_bartim:106,conf_psm_mod:106,conf_qualityfirst:106,conf_reseltoweakncel:106,conf_reset_to_factori:106,conf_sim_wc_mod:106,conf_staticconfig:106,conf_t3324maxvalu:106,conf_usb_ethernet:106,conf_userdrxcycl:106,conf_xxx:106,confess:172,confid:400,confidenti:304,config:[31,61,175,279,307],config_get:31,config_set:31,configassert:263,configprio_bit:263,configur:[1,2,4,9,10,12,20,22,26,27,37,41,42,48,57,60,62,71,72,74,76,82,83,85,99,100,103,106,107,112,118,124,134,135,136,138,140,141,169,186,216,222,228,229,231,236,246,251,256,261,262,266,267,269,271,277,278,279,280,283,292,294,306,310,312,317,322,337,338,342,343,350,351,352,357,374,375,381,382,415],confirm:[263,307,312,349,359,400],conflict:[106,269,279,284,295,358,415],conform:[113,169,286,356,357,415],confus:271,conjunct:[131,320,417],connect:[12,20,25,26,31,34,48,61,64,66,67,75,78,89,90,98,99,106,120,145,148,156,159,165,169,171,174,177,179,181,182,183,186,198,203,210,211,212,213,215,219,220,221,222,226,228,229,246,256,257,261,263,265,270,276,277,278,279,284,291,292,295,306,308,312,315,316,317,321,322,333,338,356,357,365,383,394,396,403,409,414,415],connect_config:61,connector:400,consectetur:169,consecut:[169,261,322],consequ:412,consequat:169,consid:[2,107,220,228,246,280,315,349,370,414,415],consider:[261,289,322],consist:[14,29,68,169,181,182,183,204,205,206,266,269,339,362,409,414,415],consol:[7,330,388,390],consola:218,consolid:169,constant:[19,31,61,140,169,279,363,376,377,378,384,387,415],constant_:415,constantli:415,constel:[277,294,319,322],constraint:414,construct:[169,175,216,217,225,232,261,322,336,388,390],constructor:415,consult:[48,108,120,258,356],consum:[4,6,16,169,316,342,360,369,391,400],consumpt:[0,2,13,32,106,112,188,189,219,232,237,245,265,279,283,304,310,320,322,337,371,372,383,396,403,406,409,414,421],cont:[145,170,415],cont_creat:169,cont_part_main:169,cont_set_fit2:169,cont_set_fit4:169,cont_set_fit:169,cont_set_layout:169,contact:[1,61,106,229,263,283,322,358,420,423],contain:[32,38,59,103,106,107,110,113,124,145,170,181,182,183,229,251,258,265,279,280,281,323,352,353,356,357,359,364,414,415],contamin:258,content:[1,2,11,14,26,38,48,59,66,67,101,106,113,123,130,131,132,135,144,145,170,186,187,218,220,222,228,258,271,279,283,308,316,322,339,345,350,356,360,361,364,370,373,385,387,388,389,392,403,415],content_len:26,context:[82,94,218,343,415],continu:[0,2,4,29,31,71,112,114,124,169,193,194,195,217,220,228,229,234,240,261,266,277,279,316,317,318,320,322,343,351,368,371,378,398,403,409,414,415,417],contract:312,contrari:[215,220,414],contrast:[31,169,262,322],contribut:28,control:[2,14,17,28,31,44,46,61,75,76,79,81,82,93,101,106,112,126,129,136,145,170,172,175,181,182,183,185,193,194,195,207,216,220,228,229,246,251,256,257,258,261,262,271,277,279,284,291,310,314,321,322,331,336,337,342,344,380,383,394,396,414,417,419],convei:169,conveni:[169,204,205,206,220,228,279,306,312,374,383,395,398,409,415],convent:[27,175,278,295,343],converg:320,convers:[3,14,21,30,31,71,113,128,129,136,145,170,175,177,188,189,190,210,220,246,251,261,279,312,322,331,387,388,389,421],convert:[0,3,30,36,41,59,61,64,82,103,113,116,128,141,144,169,172,173,177,181,182,183,185,191,204,205,206,210,216,220,228,263,277,279,365,392,414,415],cook:417,cool:[22,341],cooper:[37,38,125,131,401,412],coord_min:169,coord_t:169,coordin:[11,32,38,41,64,65,82,101,105,135,144,169,277,279,320,337,409,415,421],copi:[31,135,169,218,222,258,266,339,341,349,359,360,361,362,369,370,414,415],coprocess:415,coprogram:417,copybuff:[31,279],copyright:[1,169,173,356,357],cord:406,core:[84,89,112,117,126,136,177,219,225,236,244,245,250,255,256,258,263,266,285,296,307,309,310,313,314,317,322,326,330,333,336,337,338,342,367,368,369,371,372,373,376,379,384,386,394,400,403,415,416,417,418,421,423,430,441,443],core_addr:386,core_v1103:279,coremark:[31,129,322,333],corner:[11,38,101,105,135,169,215,218,220,221,256,398,412],corout:[415,417],coroutag:415,coroutet:[415,418],corouti:415,coroutin:[42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,65,66,69,71,72,74,76,77,79,80,81,83,85,86,87,88,91,93,94,95,96,175,414,417],correct:[11,22,38,41,117,124,135,269,277,279,291,316,317,341,352,353,356,357,359,400,414,415,417],correctli:[17,28,110,126,265,279,284,317,414,415],correl:[283,322],correspond:[2,4,8,11,15,19,21,22,30,34,37,38,39,41,55,64,82,89,90,98,103,105,111,112,115,121,124,130,134,135,138,169,177,180,184,185,188,189,190,191,196,202,207,214,215,216,222,226,229,237,246,255,257,258,263,265,266,271,273,279,284,289,295,306,312,315,316,322,331,341,342,357,360,363,364,370,376,378,384,392,414,415,416,417,430,443],correspondingli:22,cortex:[226,258,337],cortextm:251,cosh:415,cosin:415,cost:[169,270,320,406],could:415,count:[31,55,88,103,131,134,144,175,203,208,221,261,279,322,378,403],counter:[103,106,124,131,134,263,312,337],counterclockwis:[55,169],coupon:258,courier:218,cours:[41,144,169,172,218,243,258,266,409,414,415,417],cover:[12,269,398],cozhou:266,cp2102:[409,412],cp210x_windows_driv:409,cp:[279,280],cpath:175,cpha:[14,31,75,173,381],cpicker:[145,170],cpicker_:169,cpicker_cr:169,cpicker_part_bg:169,cpicker_part_knob:169,cpicker_set_knob_color:169,cpin_is_readi:106,cpol:[14,31,75,173,381],cpp:113,cpp_out:113,cpu:[0,108,112,220,228,231,236,246,253,267,279,369,415,417],cr2:263,cr:[263,414],cr_opter_set:263,cr_strt_set:263,crash:[61,103,263,279,292,415],crc16:[31,110,262,385],crc16_modbu:[31,279],crc32:31,crc7:[31,279,304],crc8:[31,271],crc:[8,81,120,262,271,374],crc_modbu:374,crcon:[99,100],creat:[5,8,20,28,29,31,32,34,38,40,61,62,64,68,101,106,120,126,130,132,135,169,172,173,175,177,185,199,200,201,209,214,215,216,218,220,222,228,256,268,322,338,339,342,348,356,357,360,361,373,383,388,390,407,414,417,418],createap:31,createsoft:[31,73,279],creation:[107,140,141,144,169,199,200,201,279,349],creativ:395,criteria:128,critic:[145,170],crop:[145,170],cross:[145,170,280,357,363,376,384,415,421],crossov:263,crt:[62,107],crypto:[31,110,116,129,185,216,279,287,297,333,374],crystal:[103,197,220,225,231,232,236,246,263,322,337],cs1237:31,cs1237_data:120,cs:[11,14,25,31,61,75,99,135,138,173,185,199,200,201,207,216,220,228,271,381],cs_gpio:[204,205,206],cs_pin:31,csdk:[215,278,284,289,291,295,316,317,318,323,331,332,357,358],csfb_not_preferred_regist:106,csfb_not_preferred_registered_roam:106,csk:72,cspi_spe:31,cspin:[199,200,201],csq:31,css:169,csv:[307,409],ctr_lp:263,ctrip:177,ctrl:[31,218,279,292,409],ctrl_map:169,ctwing:279,ctx1:415,ctx2:415,ctx:[343,415],ctype:415,cubemx:[262,263],cuboid:414,culpa:169,cumul:[22,106,409],cupidatat:169,cur:415,cur_timestamp:31,curli:[414,415],current:[0,2,4,5,6,8,11,12,14,15,17,20,22,24,27,28,29,37,38,41,55,57,60,61,64,65,98,99,100,101,103,104,106,112,116,117,118,121,124,125,126,131,136,137,138,141,144,145,170,181,182,183,215,218,220,226,228,229,246,257,258,263,266,268,270,279,292,295,319,321,322,330,331,337,341,342,349,363,365,369,376,378,379,380,384,385,394,396,398,401,406,407,413,414,415,417,423],currentlin:415,cursor:[144,145,170,412],curv:[232,237,245,310,322,409],custom:[11,12,16,22,26,38,59,66,67,108,118,124,135,137,145,170,215,220,229,258,266,279,280,284,292,307,323,337,343,344,349,366,369,378,388,390,391,414,415],custom_id:31,custom_init:341,customiz:169,cut:[131,258,279],cute:415,cvcc:246,cwait:[132,343],cwait_id:343,cwait_mt:375,cwaitcreat:375,cwd:20,cycl:[33,39,77,106,107,114,118,136,140,169,185,187,193,194,195,209,210,214,216,217,220,228,261,279,292,316,317,318,322,337,370,372,412,415,416,417,418],cyclic:[232,237,245,310,322],d0:[259,262],d3102512a40000a:[231,236],d3:[259,262],d4:306,d5:306,d:[11,41,75,82,98,108,110,118,144,169,179,180,187,199,200,201,220,221,228,341,352,353,354,355,356,357,359,387,392,414,415],dac:[2,31,129,246,251,262,276,279,285,296,304,333],dac_en:[112,284],dacdelai:31,dacen:2,daclevel:31,dacpin:31,dactimedelai:31,dai:[41,64,78,108,117,169,197,219,220,352,353,359,413,414,415],daili:[198,220,228,342],dam:263,damag:[229,344,400,409,412],dap:[222,256,257,261,263,322,338,365],daplink:[221,222,256,257,261,262,322,338],daquan:431,dark_color:31,darken:169,darker:169,darkest:169,dat:[61,277,317,318],data0:263,data1:[31,180,208,263],data2:[8,31,180,208,263],data2_decrypt:178,data2_encrypt:178,data32bit:31,data3:[180,208],data4:[180,208],data5:208,data64bit:31,data6:263,data7:263,data:[4,5,12,14,17,20,22,23,24,26,31,33,35,37,42,43,44,45,47,49,51,52,53,54,57,59,60,61,63,64,65,66,68,69,70,72,74,75,78,80,83,84,85,86,87,89,90,91,92,93,95,96,97,101,105,110,112,125,129,130,131,141,145,170,171,173,177,178,181,182,183,185,186,195,199,200,201,203,204,205,206,208,210,214,216,217,218,219,220,225,226,228,229,232,237,245,250,254,257,258,261,262,266,268,271,274,277,279,280,283,284,289,292,294,295,302,306,310,314,316,319,320,321,322,334,336,337,340,343,356,357,362,363,364,365,366,370,373,375,376,380,381,382,384,385,386,387,388,389,391,394,395,396,401,407,412,415,416,417,424,427,429,434,437,440,443],data_2_lan:38,data_bit:31,data_first:31,data_len:124,data_mod:31,data_repres:415,data_w:172,dataa:369,datab:369,databas:[31,61,129,185,216,331,357,385,415],databook:224,datal:263,datar:[99,100],datasheet:[231,236],datasheet_1:244,datatraff:31,dataw:31,date:[31,41,61,78,117,118,124,131,140,145,170,175,179,197,220,279,339,360,361,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,387],date_t:169,day_nam:169,daylight:415,dbg:[278,365],dbg_rx:[284,295],dbg_tx:[284,295],dc2dc:246,dc:[11,135,220,228,406],dcdc:412,dcim:331,dcmi:246,dcmis_data0:246,dcmis_data10:246,dcmis_data11:246,dcmis_data12:246,dcmis_data13:246,dcmis_data1:246,dcmis_data2:246,dcmis_data3:246,dcmis_data4:246,dcmis_data5:246,dcmis_data6:246,dcmis_data7:246,dcmis_data8:246,dcmis_data9:246,dcmis_hsync:246,dcmis_pix_clk:246,dcmis_vsync:246,dd:41,ddd:414,ddddd:41,ddddddd:41,ddddddddd:41,ddlist:169,ddmm:41,de:[275,304,415],dead:[251,279,337,396,414,415,417],deal:[392,415,417],dealer:106,death:229,debounc:[31,279,284],debug:[9,26,29,31,59,82,103,113,136,169,173,175,187,220,222,225,228,232,256,257,261,306,312,316,322,326,338,356,357,363,365,370,376,384,386,394,414,417,419,421],debug_en:31,debugg:[221,222,226,256,257,258,263,338,363,376,384,415],debugge:257,dec:135,decemb:[64,169,269,400],decid:[17,67,103,266],decim:[41,64,103,169,185,191,216,337,414,415],decis:[321,401],declar:[169,175,341,342,374,414],decod:[2,4,8,31,116,128,142,169,204,205,206,251,263,279,373],decoi:[396,403,406,407,409],decompos:[392,415],decomposit:41,decompress:[13,104,173,215,280,331,352,353,356,358,394],decor:135,decoupl:[284,295],decreas:[28,106,169,193,194,195],decrement:169,decrypt:[21,31,129,178,279],decrypt_data:142,dedic:[103,126,169,219,278,279,342],deep:[112,131,232,237,245,277,279,284,292,322,337,356,373,415],def:[98,128,414,415],def_event_cb:169,defect:[279,292],defens:[269,279,323],defgroup:259,defin:[8,64,75,84,89,90,107,113,115,135,137,169,204,205,206,222,263,279,340,341,350,352,363,369,370,372,374,376,378,379,383,384,386,415,416,417,418],define_method_:415,definit:[113,144,169,175,219,220,225,228,229,237,245,256,310,314,322,337,341,342,352,370,387,388,389],defocus:169,deg:[74,169,175],degrad:229,degre:[0,11,28,41,49,120,169,228,279],deinit:31,del:31,del_len:144,delai:[2,31,41,76,101,120,124,130,136,138,169,181,182,183,185,188,189,190,197,209,216,220,221,228,261,279,322,364,369,372,380,382,396,401,417,418],delay1248:103,delay_u:263,dele:20,delet:[12,15,19,20,27,32,38,40,101,106,108,125,132,135,144,145,170,185,216,258,323,363,367,370,376,384,387,391,415,417],delimit:[31,415],deliv:[107,258],deliveri:[82,258,279],delta:[169,337],demand:[0,107,139,220,228,279,322,388,390,415],demo1:169,demo:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,55,59,65,66,67,75,92,97,99,100,101,103,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,172,173,186,209,215,217,220,228,237,262,265,266,279,280,281,289,306,312,315,322,331,343,350,387,391,422,429,431,432,435,438,441,443],demo_benchmark:31,demo_keypad_encod:31,demo_mus:31,demo_print:31,demo_stress:31,demo_widget:31,demonstr:[24,64,107,116,141,169,209,211,212,213,222,243,277,294,322,330,343,400,414],deni:106,denoise_forc:357,denot:415,densiti:[62,414],depart:279,depend:[11,24,28,39,103,106,108,112,124,136,169,246,256,277,284,318,331,344,360,370,372,385,415],deploi:82,deprec:415,depth:[101,144,342,414,415],der:21,deriv:[169,415],describ:[67,145,148,156,159,165,169,170,171,180,181,182,183,185,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,216,265,266,271,284,295,345,362,365,396,409,415,417],descript:[22,48,57,59,67,82,93,106,118,124,135,145,170,172,218,220,228,229,237,246,255,259,261,262,266,271,277,283,294,298,310,314,322,326,357,364,378,384,388,389,392,403,414,415,417,430],descriptor:169,deselect:169,deseri:36,deserunt:169,design:[60,177,194,198,205,206,211,212,213,220,228,231,232,236,237,244,245,258,259,261,262,263,267,277,280,284,304,306,312,322,332,363,364,366,370,375,377,384,389,401,412,414,415,430],desir:[41,169,415],despit:415,destroi:[169,414,415],destruct:344,detach:106,detail:[15,22,29,34,37,48,64,67,82,106,110,112,124,125,135,141,169,172,226,246,258,262,263,266,271,277,279,280,306,312,318,326,337,357,370,378,396,415,417],detect:[28,59,61,85,90,99,106,220,228,246,251,269,279,284,295,337,349,400,414,415,417,419],determin:[4,28,29,32,48,66,74,75,106,107,112,118,123,140,169,220,228,263,266,281,323,366,369,370,380,387,398,409,414,415,417,418],dev:360,dev_msg1:12,develop:[7,24,28,38,41,108,152,169,170,171,174,177,178,179,180,181,182,183,185,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,219,220,222,225,226,229,231,232,236,237,244,245,250,254,256,260,261,262,267,268,270,274,279,283,284,285,294,302,309,310,313,314,315,316,317,332,333,335,336,338,344,383,384,387,395,406,414,416,417,418,419,421,429,430],deviat:331,devic:[0,1,6,7,11,12,14,22,23,28,34,38,48,61,62,71,74,75,78,82,85,97,99,100,101,103,107,112,114,115,116,118,119,120,122,136,137,139,141,145,170,173,181,182,183,185,191,202,207,215,216,219,220,225,228,246,256,257,259,261,263,266,269,271,279,280,289,295,306,317,318,322,338,342,349,350,365,370,381,382,383,386,391,394,395,396,398,401,403,415],device_clos:[204,205,206],device_id:[31,140],device_kei:31,device_nam:[31,62],device_secret:[31,62],device_setup:126,device_status_get:31,devicenam:48,devicesecret:48,devicesetup:[11,31,38,71,97,100,122,173,199,200,201,204,205,206,220,228],devlog:12,dfp:[261,322],dfu:[400,403],dgps_age:41,dhcp:[138,141,279,292,383],dhcp_enabl:31,dhcp_timeout:131,dhe:287,dht11:120,dht12:[28,120],dht1x:31,dht30:28,di:[199,200,201,204,205,206],diagram:[75,177,179,181,182,183,186,210,220,225,228,229,232,246,256,257,258,278,294,306,322,332,338,396,417,429,431,443],dial:[31,398,400,403],dialog:266,did:[113,263,279,322,366,417],didn:414,diff_tick:103,differ:[11,13,19,22,24,38,41,59,95,96,98,103,106,107,108,112,120,126,135,136,144,169,185,187,191,193,194,195,205,216,220,228,229,235,236,237,239,246,261,262,271,276,277,279,280,281,284,285,289,290,295,306,312,317,318,322,331,333,342,343,344,352,353,358,359,362,365,370,375,378,385,386,391,394,396,403,409,412,414,415],differenti:[24,41,246,266,281,283,284,286,295,320,322,421],difficult:[366,412,414,415,417],difficulti:365,difftim:[31,175],dig1:90,dig4:90,dig:61,digit:[8,31,41,61,64,84,128,129,136,145,170,177,193,194,195,204,205,206,220,228,231,236,246,251,267,271,280,283,285,286,296,322,382,387,414,415,416],digit_count:169,digitalwrit:221,dim:169,dimens:[169,306,309],dimension:[11,38,101,135,269],dingd:279,dingtalk:279,dinner:417,dio1:[99,100],dio:306,diod:246,dipper:[277,316,317,318],dir:[169,263],dir_forward:169,dir_path:31,direct:[3,11,22,34,35,37,38,41,55,112,119,121,135,136,141,145,170,172,173,175,186,220,221,222,228,246,263,279,306,312,342,365,371,373,398,400,415,421],direction0:38,direction180:38,direction270:38,direction90:38,direction_0:38,direction_180:38,direction_270:38,direction_90:38,directli:[0,2,4,7,8,11,15,19,22,38,59,99,103,106,111,112,119,126,130,135,143,144,169,177,185,198,202,207,210,211,212,213,215,216,219,220,221,222,228,229,246,256,258,263,266,271,277,279,280,286,306,312,315,317,318,323,330,331,338,339,340,341,342,343,347,351,352,353,356,357,358,360,361,362,366,369,373,375,380,392,396,398,409,414,415,416],directori:[20,32,97,108,122,169,176,220,222,266,279,280,289,317,330,338,339,341,342,350,352,353,356,357,359,360,361,391,415],dirti:19,disabl:[38,39,75,104,106,115,123,135,141,145,170,185,207,216,259,263,279,287,342,415],disablepwm:31,disadvantag:[169,319,320,322,398],disassembl:412,disburs:369,disc:[145,170],discard:[0,124,136,234,240,415],discharg:[409,412],discon:31,disconnect:[26,31,61,66,67,68,124,140,219,258,263,265,279,383,403],discontinu:406,discrep:304,discuss:[289,370,415],dish:417,disk:[137,257,258,323,326,330,356,357,359,409,421],disp:[31,129,135,185,216,220,280],disp_get_default:169,disp_get_hor_r:169,disp_get_ver_r:169,disp_set_bg_color:[220,228],dispatch:417,displac:3,displai:[3,10,11,20,25,38,88,89,90,101,113,124,135,145,170,172,174,179,186,192,197,198,203,210,220,228,251,257,261,265,279,280,285,296,305,322,358,365,373,378,396,398,403,407,414,415,441],display_str:179,dist:[169,369],dist_px:169,distanc:[50,57,93,144,169,230,235,242,264,276,277,278,398],distinct:34,distinguish:[65,261,271,284,306,322,400,414,415],distort:398,distribut:[141,169,265,269,415,417],district:117,divid:[0,60,103,114,169,177,178,203,220,228,229,261,262,266,271,318,322,337,340,362,414,415],divis:[3,114,193,194,195,229,242,261,263,322,337,414,415],dl:[359,394],dlfcn:415,dll:[339,415],dma1_channel1_irqhandl:263,dma1_it_tc1:263,dma:[246,261,279,312,322,337],dma_clearflag:263,dma_clearitpendingbit:263,dma_cmd:263,dma_getitstatu:263,dn:[58,124,246,279,393],dnp:8,dns_index:31,dnsclient:393,doc:[78,169,255,281],dock:[279,320,375,391,393,443],document:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,152,156,159,165,169,170,171,174,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,216,217,220,222,225,226,228,229,232,241,242,245,256,258,263,265,266,283,284,285,295,296,299,315,316,318,322,333,338,342,345,349,350,352,353,356,357,365,384,387,389,390,409,415,421],doe:[6,14,16,22,28,30,31,32,36,38,41,59,73,75,76,78,89,90,99,101,103,106,107,111,112,114,115,118,124,129,136,137,138,139,144,169,199,200,201,215,219,229,242,256,261,262,265,266,271,276,277,278,279,280,284,285,287,290,292,295,296,306,312,316,317,318,321,322,326,333,338,348,351,352,353,356,357,358,364,369,371,374,375,378,387,391,392,396,403,414,415,417,419],doesn:[27,218,261,322,415],dofil:[175,340],dog:[7,46,139,187,209,364],dolor:169,domain:[12,26,61,64,65,68,107,124,218,266,279,306,312,415],domain_nam:61,domest:[41,106,277,421],domin:[258,262,336],don:[11,14,66,82,103,106,121,124,169,173,211,212,213,220,228,256,266,280,315,322,338,339,342,343,352,353,357,358,359,387,396,398,403,414,415],donald:289,done:[2,29,31,116,169,177,220,228,266,280,307,331,341,414,415,416],doom:284,door:400,dormanc:127,dormant:[219,412],dot:[38,135,169,179,186,220,222,228,366,415],doubl:[4,5,101,110,144,169,222,251,256,257,258,330,338,339,349,356,359,409,414,415],double64:373,down:[2,14,22,24,33,57,112,145,170,185,197,207,216,219,220,229,234,240,246,256,258,259,262,263,277,279,284,289,306,312,337,338,358,365,371,379,398,400,403,409,412,415,417],downgrad:258,downlink:[5,106],downlinkb:106,downlinkgb:106,download:[15,19,20,26,59,82,112,113,169,173,177,211,212,213,215,218,220,225,228,230,232,233,235,239,242,243,246,254,257,261,265,268,269,275,277,278,279,283,286,292,294,306,312,315,316,317,318,322,323,330,336,339,342,345,346,347,349,352,353,358,359,360,386,394,400,421,431,443],download_zbuff1:31,download_zbuff2:31,downstream:[106,271],downward:398,dp:[90,246,259,262,263],dp_puup:259,dpi:169,dr:[261,322],draft:[364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383],drag:[169,258,361,409],drain:[22,246,337,379],draw2lcd:31,draw:[31,105,135,144,169,173,186,220,228,258,279,373],draw_al:135,draw_lower_left:135,draw_lower_right:135,draw_mask_:169,draw_mask_fade_init:169,draw_mask_fade_param_t:[31,169],draw_mask_fade_param_t_fre:31,draw_mask_line_param_t:[31,169],draw_mask_line_param_t_fre:31,draw_mask_line_points_init:169,draw_mask_line_side_top:169,draw_mask_radius_init:169,draw_mask_radius_param_t:[31,169],draw_mask_radius_param_t_fre:31,draw_upper_left:135,draw_upper_right:135,drawbox:31,drawbuttonutf8:[31,279],drawcircl:[31,186,220,228],drawdisc:31,drawdrcod:31,drawellips:31,drawfilledellips:31,drawfram:31,drawglyph:31,drawgtfontgb2312:31,drawgtfontgb2312grai:31,drawgtfontutf8:31,drawgtfontutf8grai:31,drawlin:[31,120,186,220,228,322,373],drawn:[169,417],drawpixel:31,drawpoint:31,drawqrcod:31,drawrbox:31,drawrect:[31,373],drawrectangl:[31,186,220,228],drawrfram:31,drawstr:[31,135,179,220,228,373],drawtriangl:31,drawutf8:31,drawxbm:31,drawxxx:11,drift:316,drink:[352,353,359],drive:[31,61,75,84,89,90,120,129,135,169,172,179,185,215,216,220,228,246,257,258,278,279,284,295,306,312,321,322,356,357,409,421,437,441],driven:[84,186,220,228,415,429],driver:[11,31,38,61,90,101,112,129,145,169,171,179,186,199,200,201,215,220,228,251,256,261,262,279,280,306,312,317,318,322,337,338,349,356,357,400,409,421,430,434,440],driver_usart:[356,357],drop:[22,145,170,229,246,256,258,317,318,338,398,401,412,415],dropdown:[145,170],dropdown_:169,dropdown_add_opt:169,dropdown_cr:169,dropdown_dir_left:169,dropdown_down:169,dropdown_get_selected_str:169,dropdown_open:169,dropdown_part_list:169,dropdown_part_main:169,dropdown_part_scrlbar:169,dropdown_part_select:169,dropdown_set_dir:169,dropdown_set_opt:169,dropdown_set_show_select:169,dropdown_set_symbol:169,dropdown_set_text:169,drum:169,drv:[31,198],drxcycl:106,dry:396,ds18b20:[31,82,220,349],ds18b20_temp:82,ds3231:61,ds3231_read_tim:54,ds:394,dsp:[219,331],dst:[26,82,116],dt:31,dtick64:[31,190],dtick64data:190,dtick64r:190,dtimer:[112,234,240],dtimercheck:[31,279],dtimerstart:[31,117,192],dtimerstop:[31,192],dtimerwkid:31,dtl:279,dtp:31,dtr:[226,258],dual:[38,84,106,219,261,285,296,312,322,337,406],duck:289,due:[28,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,66,69,71,72,74,75,76,77,79,80,81,83,85,86,87,88,91,93,94,95,96,107,126,241,258,263,266,279,280,284,285,292,296,312,398,400,409,414,415],dui:169,duino:221,dummi:[169,415],dump:[31,169,175],dump_luadb:326,dup:107,duplex:[75,126,199,200,201,203,204,205,206,220,228,261,308,322,381],duplic:[107,169,279,417],dupont:[258,315],durat:[2,22,76,83,106,112,118,130,133,139,169,190,209,289,372],dure:[2,22,26,28,32,41,75,84,108,115,133,136,169,181,182,183,209,215,220,228,229,263,279,284,295,306,312,321,356,357,400,409,415,418],dust:61,duti:[31,77,114,193,194,195,220,228,279,292],duty_cycl:61,duty_oneeighth:39,duty_onefifth:39,duty_onefourth:39,duty_onehalf:39,duty_oneseventh:39,duty_onesixth:39,duty_onethird:39,duty_stat:39,dvp:[4,312],dynam:[8,28,62,126,138,144,169,229,265,279,406,409,414,415],e:[2,11,22,60,98,106,126,141,169,175,187,220,226,228,263,289,321,352,353,356,359,387,394,414],ea:169,eabi:[356,357],each:[11,17,24,28,31,38,61,81,106,107,120,135,169,186,210,211,212,213,218,220,222,226,228,246,251,261,262,263,266,269,271,284,295,322,352,353,358,375,376,394,396,403,412,414,415,417],earfcn:31,earli:[106,256,262,306,312,338],earlier:[220,228,280,414,415],eas:415,ease_in:101,ease_in_out:101,ease_out:101,easi:[31,113,124,129,169,258,279,292,312,343,344,374,375,407,415,417],easier:[169,279],easili:[124,258,366,375,398,413,414,415],east:[41,65,117],eat:[279,414],ec11:61,ec11_callback:55,ec616:255,ec616_0h00:354,ec618:[0,2,17,22,101,103,106,111,117,215,268,280,281,284,286,295,315,322,323,356,358,421],ec618_lua_lod:289,ec716:323,ec718:[0,22,106,268,295,322],ec718epv:290,ec718p:[22,290,295,322,323,357,358],ec718pv:[295,323],ec7xx:[17,323,421],ecb:[8,21,279],ecdh:287,ecdsa:287,ecg:169,echo:[140,401,412],eci:31,ectool2pi:421,ed:169,eda:[229,278],edg:[4,22,38,135,144,145,170,284,306,312,322,337,400],edit:[62,82,169,175,215,216,280,292,297,309,318,323,388,390,421],editor:[218,356],eeprom:[19,28,204,205,206],ef17:[204,205,206],ef4018:[220,228],ef:[204,205,206,414],effect:[2,55,93,103,106,111,112,124,144,145,170,172,174,185,192,196,216,220,228,243,263,277,279,289,312,322,330,337,342,343,356,357,388,390,400,406,415],effect_match:279,effici:[41,169,219,220,256,258,263,279,338,395,413,417],egg:396,eight:[169,415],eighth:117,eink1:431,eink:[31,129,220,280,285,296,331,333,358,378,430],einkbook:430,either:[169,225,322,386,392,415],eiusmod:169,elaps:415,electr:[219,245,322,398,400,403],electrochem:61,electrolyt:229,electron:[177,220,228,429,431],eleg:343,element:[19,59,145,170,277,316,342,414,415],elev:41,elf:[356,357],elig:414,elimin:[22,37,256,279,415],elit:169,ellips:135,ellipsoid:41,ello:414,els:[14,16,28,29,32,41,53,55,66,67,102,105,112,126,130,169,172,173,199,200,201,211,212,213,220,221,222,228,341,342,364,368,372,375,414,415,417],elseif:[27,100,169,414,415,417],elsewher:[169,415],email:113,emb:219,embed:[169,220,251,263,289,383,395,413,414,415],emerg:106,emergency_regist:106,emit:279,emot:378,emphas:229,empti:[2,4,12,15,17,19,20,21,33,78,88,101,103,106,110,118,128,135,136,143,144,169,185,216,220,228,258,263,279,284,295,322,369,373,403,414,415],emptyselectionclipboard:218,emtri:101,emul:[101,222,261,322,395],en:[31,169],enabl:[0,2,4,11,19,22,31,37,44,75,84,112,124,126,135,136,139,141,169,177,179,185,207,216,218,222,242,246,258,259,261,265,266,279,280,283,284,292,295,322,387,388,390,398,400,403],enbid:31,encapsul:[31,129,179,186,188,189,190,204,205,206,220,228,304,340,362,370,391,414,415,417],enclos:[414,415],encod:[8,14,16,19,27,30,31,32,41,48,59,61,65,78,106,108,117,123,124,128,131,140,141,169,173,178,197,220,228,279,292,366,415],encodestr:31,encount:[33,106,118,124,136,169,218,229,263,279,292,306,365,400,414,415,417],encrypt:[20,21,26,31,34,48,62,66,68,107,124,129,140,178,245,265,270,279,287,322,383],encrypt_data:142,end:[0,2,4,5,8,9,11,12,13,14,15,16,17,19,22,24,26,27,28,29,30,32,33,37,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,102,104,105,106,107,109,110,112,113,114,115,116,119,120,121,123,124,125,126,130,131,132,134,136,140,141,143,144,169,172,173,177,179,180,181,182,183,187,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,229,246,258,262,263,266,271,279,280,284,287,295,320,326,330,337,340,342,356,357,360,361,364,372,375,379,381,382,383,385,387,388,390,398,400,409,412,414,415,416,417,418],end_angl:169,endian:[30,61,110,124,126,136,137,144,415],endif:[169,222,342],endless:369,endpoint:[62,263],endswith:31,endur:219,energi:[75,112,172,219,263],engin:[169,257,259,334,395,414,429,431],english:[34,82,135,169,193,194,195,204,205,206,218,279,283,322,323,358,365,403],enhanc:[132,251,261,263,322],enim:169,enjoi:413,enlarg:[2,136,169],enodeb:106,enough:[6,14,28,106,116,124,126,136,137,169,220,228,271,307,331,352,374,414,415],ensur:[12,28,126,169,220,228,229,246,263,266,280,307,331,356,409,412,415],ent:31,enter:[2,6,11,14,30,33,72,81,82,103,106,112,115,118,143,169,173,192,215,221,222,226,229,234,240,243,263,268,269,277,284,292,295,306,307,312,317,322,330,339,348,349,352,353,356,359,363,365,376,377,384,394,396,400,409,412,414,415,417],enterpris:[62,169,420],enthusiasm:415,entir:[15,19,32,97,122,143,144,169,185,209,216,229,246,271,280,285,296,343,414,415],entireti:415,entiti:[32,92,363,376,384],entranc:229,entri:[99,100,101,175,220,350,369,414],entries_can:415,enumer:[32,169,259,262,279,284,415],enuserid:62,env:[15,175,180,355],environ:[64,103,106,175,216,217,220,225,232,257,258,261,279,316,322,336,339,351,356,357,358,391,395,412],environment:172,envisag:[362,374],eoc:263,eof:115,eol:395,ep:106,ep_ctr_rx:263,ep_ctr_tx:263,ep_id:263,epat:279,ephemer:277,ephemeri:[283,319,322],epindex:263,epoch:415,epv:292,eq:415,equal:[19,38,103,135,144,169,220,228,259,262,414,415],equip:[0,29,34,38,48,95,96,103,138,145,148,156,159,165,170,203,205,219,220,228,258,263,268,269,276,277,278,306,316,322,383,396,398,400,403,406,407,409],equival:[10,11,13,15,19,84,104,106,111,118,136,144,258,365,374,392,414,415,417],eras:[15,19,31,185,199,200,201,207,216,256,261,279,322,394,412],erasetimeout:263,erasewrit:31,ercoap:279,erp:[277,358],err:[2,14,36,173,375],err_:342,err_fail:342,errdump:[31,129,279,292,297],errio:32,errno:415,error:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,175,177,180,181,182,183,187,199,200,201,204,205,206,220,225,228,261,263,278,279,292,320,322,323,341,342,343,356,381,382,394,396,403,417],error_cod:[28,126],error_drop:31,error_handl:222,errstop:31,es7149:29,es8311:279,esc:307,escap:[128,415],esd:[229,231,236,258,267],esp32:[103,111,141,306,307,309,312,313,322,342,388,390,395],esp32_download:394,esp32c2:[115,333,359],esp32c3:[82,115,215,304,307,310,322,333,348,358,359,421,430,441],esp32c3_lua_lod:215,esp32s2:115,esp32s3:[215,314,315,322,358,359],esp32s3_lua_lod:215,esp:[111,112,315,359],especi:[126,271,279,283,289,322,342,415],espefus:306,esphttp:375,esphttp_evt:375,espressif:359,esptool:306,esptouch:[141,265],esptouch_v2:141,ess:[28,169],essenc:347,essenti:[169,321,342,370],est:169,establish:[107,124,140,141,352,353,417],estim:[320,358],et:169,etc:[0,22,99,100,111,112,126,136,143,144,169,229,263,266,279,304,343,349,358,365,386,396,403,414,415,417],eth0:[20,107,124,131,138],ethernet:[31,106,124,129,279,331],eu:169,ev:415,evalu:[31,129,320,415],evb:[236,267],evb_air601:267,even:[6,112,136,169,178,277,370,378,382,396,403,414,415],event:[2,29,31,41,48,68,100,101,107,112,124,130,131,137,140,145,170,185,210,214,216,220,228,261,277,279,322,363,376,383,384,387,415,416,417,418],event_appli:169,event_cancel:169,event_click:169,event_delet:169,event_handl:169,event_insert:169,event_long_press:169,event_long_pressed_repeat:169,event_on_data:375,event_press:[101,169],event_press_lost:169,event_releas:169,event_send:31,event_short_click:169,event_value_chang:169,eventu:82,everi:[12,22,82,169,256,263,277,316,317,338,350,352,353,359,372,414,415,416,420],everyon:[169,179,258,289,419],everyth:[169,356,357,414,415],evok:418,evt:[61,383],evt_ap_associ:383,evt_ap_disassoci:383,evt_ap_start:383,evt_ap_stop:383,evt_readi:383,evt_scan_don:383,evt_scan_report:383,evt_sta_connect:383,evt_sta_connected_fail:383,evt_sta_disconnect:383,ex:[113,169,173,215,220,326,330,339,356,361,394,409,415],exact:415,exactli:[133,318,343,400,409,415],examin:415,exampl:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,173,178,180,186,215,217,220,221,222,228,256,259,262,263,266,271,277,280,284,295,306,307,317,318,321,330,338,341,342,343,349,350,352,353,357,359,362,372,373,375,378,387,391,394,398,403,412,414,415,416,417,418,424,427,429,431,434,437,440,443],example_gnss:[317,318],example_h:222,example_l:222,exce:[17,38,103,106,109,116,118,133,135,136,137,144,177,220,228,229,261,279,280,281,292,322,415,417,418],exceed:[220,228,246,283,322,398,403,412],except:[6,8,12,17,26,68,106,112,124,169,220,228,261,273,279,292,306,322,387,412,414,415],excepteur:169,excerpt:417,excess:[409,414,415],exchang:[409,414],exclud:[38,169],exclus:[7,75,255,266,275,415],exec:127,execut:[2,7,15,19,22,33,59,65,75,82,94,108,112,124,127,130,133,144,175,177,204,205,206,208,209,263,266,279,292,307,326,330,341,342,343,349,352,353,357,360,361,364,365,369,372,387,409,414,417,418],exercis:414,exercit:169,exist:[3,15,19,27,30,31,36,41,59,111,144,169,180,199,200,201,216,220,228,234,240,263,266,279,284,341,347,348,352,353,356,359,363,366,369,373,376,384,387,391,398,400,414,415,417],exit:[12,68,106,132,169,175,215,266,307,326,357,364,365,370,414,417],exit_failur:415,exit_success:415,exp1:415,exp2:415,exp:175,expand:[6,124,136,137,144,169,258,266,343,352,353,409,415],expans:[144,216,251,279,280,283,312,322,342,359,388,390,415],expect:[169,220,228,263,366,388,390,415],expens:[316,320,412],experi:[169,341,365],experienc:400,experiment:415,expir:372,explain:[356,357,388,389,403,415,417],explan:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,220,228,283,322,387,415],explicit:[415,417],explicitli:[169,387,415],explist:415,explor:[218,415],expon:415,exponenti:[105,415],expos:[169,340,362],exposit:108,exposur:416,expr:222,express:[37,110,172,175,363,376,384,414],exquisit:306,ext:[169,316,365],extend:[21,24,31,35,72,129,231,236,267,279,317,318,363,376,384,388,390,415],extens:[61,107,378,395,414,415,418],extent:414,extern:[2,17,33,35,41,82,101,103,106,112,124,131,144,145,170,172,177,198,222,225,229,232,246,251,256,257,258,259,261,262,276,277,278,280,284,289,292,295,304,310,322,362,365,367,379,380,381,382,386,412,414,415,416,417,421],exti:31,extinguish:[193,194,195],extra:[6,23,59,131,135,169,372,415],extra_param:386,extract:[124,169,220,228,263,414],extramsg:415,extranet:124,extrem:[106,112,220,270,289,360],f01122334455:141,f103:[261,262],f1:[169,175,289],f2:175,f32:144,f5:[31,61],f64:144,f:[11,29,32,36,110,119,144,175,220,228,289,326,357,387,391,414],face:219,facil:[363,376,384,415],facilit:[108,412,414,415,419],fact:[169,179,220,228,278,379,414],factor:[41,169,316,415],factor_:415,factor_of:415,factori:[106,229,256,257,269,277,306,312,315,331,338],fade:[31,169],fail:[0,1,2,3,4,5,6,8,14,18,21,26,28,30,32,36,40,43,48,49,50,53,64,78,85,92,101,102,103,105,106,107,112,113,115,116,120,124,126,128,131,136,141,144,173,199,200,201,215,261,265,266,279,292,306,312,322,341,343,352,353,359,368,372,383,415,418],failur:[1,2,4,5,6,10,14,17,20,26,30,31,32,36,42,51,57,66,67,68,77,93,106,107,108,114,120,121,124,129,131,134,135,136,142,143,144,263,277,279,292,343,356,358,383,387,415],fake:[258,279,400],fal:[15,180],fall:[22,33,284,398,415],fals:[2,3,4,5,6,8,9,11,12,14,15,17,18,19,21,22,23,25,27,28,32,33,34,35,38,39,41,48,57,59,64,68,72,76,78,82,93,99,100,101,102,103,105,106,107,109,112,114,115,116,117,119,120,121,122,123,124,126,128,130,132,134,135,137,139,140,141,143,144,169,180,199,200,201,211,212,213,215,218,284,291,295,341,409,412,414,415,417,418],famili:[204,205,206],familiar:[103,185,216,342,352,353,419],faq:[225,261,314,322,396],far:[246,395,414],fast:[13,28,42,44,45,47,49,51,53,54,56,60,63,69,70,74,78,79,80,83,86,87,91,104,116,169,181,182,183,219,220,228,246,261,289,315,322,337,396,398,403,406,412],faster:[169,218,258,280,406],fastest:229,fastlz:[31,129,279,342],fat32:391,fatal:[98,279,356,415],fatf:[31,119,129,173,279,292,367,391],fault:[71,106,261,322],favorit:221,fb803786602df760:34,fbd:180,fd:32,fdb:[19,31,121,129,185,216,279,322,333],fdb_kv_set_blob:15,fdd:276,fdev:[99,100],feasibl:280,featur:[106,115,169,178,179,192,197,198,203,210,220,228,231,236,246,253,258,259,267,277,279,280,285,296,322,362,363,376,384,387,409,415],feature_xxx:387,februari:169,fed:279,feed:[31,46,115,169,187,209,269,317,364,400,414,415],feed_dog:61,feedback:[26,115,169,287,407],feel:[169,362,414],feet:[39,112,229,273,294,322,331],feichuang:275,feishu:279,felt:414,feng:415,feof:370,ferror:370,fetch:[279,373,415],few:[108,169,220,228,258,268,271,321,322,331,340,400,414,415],ff0000:169,ff00ff:169,ff:169,ffffffff:[386,394],ffmpeg:173,fft:322,fg_color:31,fi:[270,421],field:[39,78,106,169,172,263,374,388,390,415],fieldlist:415,fieldsep:415,fifo:[261,322,337,417],fifth:[48,64,414,415],figueiredo:415,figur:[7,204,205,206,210,220,221,222,228,246,256,257,258,263,266,278,338,398,400,409,414],file:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,174,175,185,202,204,205,206,215,216,218,219,220,221,225,228,232,237,245,255,256,258,263,268,275,277,279,280,281,286,297,307,310,317,318,322,323,328,330,331,338,339,344,347,349,350,352,353,356,357,358,361,362,363,364,366,370,373,376,378,384,386,388,389,390,394,400,409,416,430],file_cnt:173,file_don:143,file_no:2,file_path:[31,61],file_s:173,file_tld:[388,389],file_tld_t:385,filenam:175,files:31,filesystem:370,fill:[0,2,9,19,20,21,22,25,28,31,34,37,48,49,64,65,66,78,79,82,99,106,107,120,124,125,126,135,136,137,169,173,261,266,279,284,286,295,322,341,369,373,387,394,414,415],film:[75,271,284,315,398],filter:[61,104,112,145,170,229,246,261,279,322,415],filter_match:104,fin:31,find:[14,124,169,173,175,199,200,201,215,218,220,222,228,237,256,258,266,295,315,322,338,341,342,394,400,403,417],finder:415,fine:[33,136,306],finish:[2,31,127,220,345,348,415],fint2:169,fire:415,firmwar:[0,7,8,11,16,31,38,41,73,75,103,106,110,111,112,115,121,124,128,129,141,169,216,217,228,229,230,233,235,239,242,243,246,254,256,257,261,263,268,274,276,277,281,283,286,287,290,291,294,298,306,307,312,314,318,319,322,323,333,338,341,342,344,350,351,356,357,358,385,388,389,390,391,394,396,403,416],firmware_nam:266,firmware_upgrad:266,first:[2,11,14,19,22,27,32,38,39,41,59,64,103,106,107,108,110,112,120,124,130,135,144,152,169,172,173,177,181,182,183,188,189,190,204,205,206,215,220,226,228,229,246,256,258,261,262,266,271,277,279,280,284,292,293,297,307,312,316,317,318,322,330,341,342,343,357,359,374,380,385,387,392,396,398,403,412,415,416,417,418,429],first_exp_until:415,first_y_that:415,firsttck:190,firsttick:190,fit2:169,fit4:169,fit:[145,170,219,352,353,413],fit_:169,fit_max:169,fit_non:169,fit_par:169,fit_tight:169,five:[144,169,312,415],fix:[9,13,14,17,22,37,41,106,125,131,169,211,212,213,246,258,263,265,279,284,292,305,308,316,323,341,359,366,369,374,387,388,389,391,396,398,401,403,415,427],fix_qual:41,fix_typ:41,fixlen:[99,100],fixtur:229,fl:[386,394],flaaap:415,flag1:31,flag2:31,flag:[31,61,68,78,143,187,261,279,322,383,394,414],flah:[220,228],flash:[6,16,17,19,31,76,103,126,129,145,170,180,185,198,202,203,207,215,216,217,221,222,226,232,242,246,251,256,257,258,261,262,269,270,279,280,285,289,290,292,296,304,310,312,322,331,333,337,338,349,358,367,391,394,395],flash_c:306,flash_ck:306,flash_d0:306,flash_d1:306,flash_eraseoptionbyt:[261,322],flash_spi_mast:263,flash_spi_rx_dma_channel:263,flash_spi_tx_dma_channel:263,flash_waitforlastoper:263,flashdb:[15,180,331],flasher:307,flashtool:286,flat:289,flex:169,flexibl:[124,169,262,266,337,414,417],flicker:[145,170],flight:[76,106,112,169,277],flip:[38,262,284,398,403,415],float32:373,floor:[175,297],flow:[81,306,319,322,417],flower:279,fluctuat:[124,133],fluenci:409,flush:[11,31,175,391],fly:[169,220,279,331],flymcu:263,flymod:[31,76],fmod:175,fmt:[31,175],fn:[31,415],fname:415,fnc:31,focal:424,focu:[145,170,277],focus:[145,170],fold:31,folder1:169,folder:[32,143,215,218,220,222,228,256,266,279,307,322,328,330,338,342,352,353,360,361,363,376,384,387,391,416],follow:[0,13,16,17,19,22,28,32,41,59,64,66,67,78,82,84,103,106,107,108,110,111,115,116,124,132,135,141,144,169,172,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,218,220,225,228,229,246,256,257,258,262,263,266,269,271,277,279,280,284,285,287,292,295,296,297,306,312,317,318,322,330,338,339,341,343,349,352,353,356,357,359,360,361,369,370,374,375,378,387,388,390,392,398,400,403,409,414,415,416,417],following_keywords_ar:415,font:[31,129,145,170,179,186,220,228,265,279,350,426,431],font_32:101,font_:38,font_data:378,font_data_count:378,font_fre:31,font_get:[31,169],font_info:169,font_load:[31,169],font_map:378,font_open_iconic_weather_6x_t:[11,38],font_opposansm10:135,font_opposansm10_chines:11,font_opposansm12:[11,38,135],font_opposansm12_chines:[11,38,135,358],font_opposansm14_chines:[11,38],font_opposansm16:[11,38,135],font_opposansm16_chines:[11,38,135,220,228],font_opposansm18:[11,38,135],font_opposansm18_chines:[11,38],font_opposansm20:[11,38,135],font_opposansm20_chines:[11,38],font_opposansm22:[11,38,135],font_opposansm22_chines:[11,38],font_opposansm24:[11,38],font_opposansm24_chines:[11,38,135],font_opposansm32:[11,38,135],font_opposansm32_chines:[11,38,135],font_opposansm8:135,font_opposansm8_chines:11,font_unifont_t_symbol:[11,38,135],font_w:378,font_xxx:38,fontfamili:218,fontnam:169,foo:[415,417],foot:[99,126,138,229,279,295,306],footprint:[4,118,169,342,409,413],fopen:370,forc:[3,31,59,68,118,124,141,144,169,175,277,279,387,398,400,403,412],force_all_raw_block:104,force_all_static_block:104,force_br:386,force_level:31,forcibl:[143,279],fore:31,foreground:[38,169],foreign:421,forese:103,forev:[132,415],foreword:[145,171,174,261,322],forget:[169,220,228,266],form:[5,6,26,33,38,48,59,64,66,67,111,136,137,140,141,144,145,170,286,342,365,370,374,388,390,392,414,415,418],form_g:115,formal:[169,415],formaldehyd:61,format:[2,3,6,8,21,30,31,32,36,41,53,90,96,106,108,115,116,118,123,124,129,137,145,170,175,180,181,182,183,199,200,201,220,251,255,278,279,280,283,317,322,365,374,387,388,389,390,391,394,417],format_len:386,formatstr:[175,414],former:365,formula:[181,182,183,220,228,414],forth:169,forum:169,forward:[41,59,144,415],fota:[26,31,59,61,129,265,268,270,279,280,283,286,292,297,322,421],fota_cb:280,fotademo:280,fotademo_luato:266,fotadon:17,found:[8,15,27,177,180,198,203,204,205,206,208,210,211,212,213,215,220,228,263,269,280,284,292,295,323,342,345,347,352,353,356,359,396,414,415,417,418],foundat:[145,170,217],four:[38,41,75,135,169,181,182,183,204,205,206,258,263,266,271,280,396,400,403,412,414,415],fourth:[64,181,182,183,414,415,417],fpc:424,fps16hz:105,fps1hz:105,fps2hz:105,fps32hz:105,fps4hz:105,fps64hz:105,fps8hz:105,fraction:[7,169,415],fragment:[17,123,124,128,415],frame:[72,75,105,135,140,220,228,279,373,415],framebit:31,framebuff:[38,144,169,373],frametab:75,framework:[131,175,217,383,395,409,415],fread:370,free:[14,31,38,169,229,258,266,277,279,342,358,366,409,415],free_count:368,free_kb:14,free_sector:14,freed:[279,292,415],freeli:[219,398,409,412,415],freerto:[263,322,362,368,369,417],freertosconfig:263,freestrong:383,freez:279,freq:[31,61],freqhopon:[99,100],frequenc:[2,6,7,9,14,38,75,77,84,89,99,100,103,106,114,120,122,169,172,173,185,191,193,194,195,216,219,220,228,229,232,237,245,246,258,261,262,263,270,271,278,289,308,310,312,317,320,322,336,337,380,381,393],frequent:[106,210,211,212,213,220,228,356,357],fresh_rat:31,frexp:415,friend:[307,430],friendli:[40,220,369,395,415],from:[0,2,6,9,11,16,17,21,22,28,32,33,38,41,59,66,75,101,106,107,112,113,115,119,120,122,123,124,126,130,135,136,140,144,145,170,177,178,187,193,194,195,211,212,213,215,219,225,228,229,234,240,246,251,255,258,261,262,265,271,277,279,284,285,289,292,295,296,316,317,318,320,322,328,331,337,339,341,342,344,356,357,359,360,361,364,365,366,370,373,374,378,385,391,394,396,398,403,409,414,415,416,417,418],frombase32:31,frombase64:[8,31],fromcod:31,fromhex:[9,31,116,138,141,279,392],fromidx:415,front:[22,169,271,381,400,414,415],fruit:169,fs:[31,32,122,129,173,199,200,201,220,228,292,297,326,386,391],fs_addr:386,fseek:370,fsize:[31,32,173,220,228],fskv:[15,31,121,129,279,292,297],fsr:61,fsstat:[31,122,199,200,201,220,228],ftp:[31,129,279,285,287,292,296,297],ftp_login:20,fugiat:169,full:[12,29,31,33,68,75,108,124,126,135,136,169,175,185,202,203,207,214,215,216,217,220,221,228,251,255,258,261,265,277,279,280,292,308,312,322,339,351,360,361,372,378,381,387,388,390,391,421,429],fullclean:[342,359],fulli:[169,219,220,228,246,251,279,292,349,387,396,406,407,412,415],fun:[31,383,417],func:[31,220,228,374,415],funcbodi:415,funcindex1:415,funcindex2:415,funcindex:415,funclist:414,funcnam:175,function_:415,function_given:415,functioncal:415,functiondef:415,functionon:414,functions_:415,fundament:289,funni:417,further:[169,401],fuse:306,futil:[352,353,359],futur:[103,130,281,292,367,386,415],fuzzi:349,g0:289,g:[31,36,75,87,126,169,220,228,263,270,289,321,352,353,356,357,387,414,415,416],ga:95,galileo:[219,317],gap:[75,135,415],garbag:175,garbl:[242,322,330],gatewai:[31,124,383],gaug:[145,170],gauge1:169,gauge_cr:169,gauge_part_main:169,gauge_part_major:169,gauge_part_needl:169,gauge_set_angle_offset:169,gauge_set_critical_valu:169,gauge_set_needle_count:169,gauge_set_needle_img:169,gauge_set_rang:169,gauge_set_scal:169,gauge_set_valu:169,gb2312:[30,38,135,378],gb:106,gbk:279,gbr:172,gc032a:[293,331,431],gc032a_initreg:4,gc9106l:38,gc9306:[228,279,331,440],gc9306x:38,gc9a01:38,gc:[144,279],gcc:[339,356,357,360],gcc_mcu:356,gcc_path:356,gcj02:[41,65,277],gcm:287,gdma:312,gear:[61,396,401,403,409],gener:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,188,189,198,220,222,228,246,251,256,261,266,269,280,286,289,295,304,312,316,318,322,328,331,337,339,342,343,352,353,357,359,360,361,362,364,365,366,369,375,378,381,387,394,403,412,414,415],genrsa:116,genuin:[263,306],geomagnet:61,gestur:219,get:[1,2,5,8,11,13,14,15,16,17,18,20,24,26,27,29,31,32,38,40,41,42,43,44,45,47,48,51,52,53,58,59,61,63,66,67,69,70,73,74,75,80,83,86,87,91,95,98,101,103,104,105,106,108,118,120,122,124,131,135,136,141,144,145,170,173,175,178,180,185,191,197,199,200,201,215,216,220,222,232,258,263,268,279,312,322,341,342,343,352,353,358,360,366,368,369,370,373,375,379,383,387,395,398,414,415],get_accel:61,get_cell_period:31,get_data:61,get_device_t:122,get_gyro:61,get_int_sourc:61,get_left_valu:169,get_lux:61,get_mag:61,get_numb:131,get_pressed_d:169,get_rgb:61,get_select:169,get_selected_str:169,get_stat:169,get_temp:61,get_temperatur:61,get_text:169,get_val:61,get_vdd:31,get_xxx:169,getaht10data:[181,182,183],getapinfo:383,getapnet:383,getband:31,getc:370,getcellinfo:[31,131],getclk:[31,188,189,190],getdevic:31,getdevicenum:[31,220,228],getdevicet:[31,199,200,201,220,228],getdisplayheight:31,getdisplaywidth:31,getenv:175,geterror:31,getfre:[31,173],getgga:31,getgll:31,getgsa:31,getgsv:31,gethook:175,getinfo:[31,175,383],getintloc:[31,279],getip:31,getjionapinfo:383,getlevel:[31,187],getloc:175,getloccb:64,getmac:31,getmetat:175,getnumberlist:414,getpara:31,getpm_10:61,getpm_1:61,getpm_2_5:61,getppb:61,getppm:61,getpw:383,getraw:31,getregistri:175,getrmc:31,getrssi:383,getsiz:31,getstanet:383,gettable_ev:415,gettxt:31,getupvalu:175,getuservalu:175,getvtg:31,getwin:31,getzda:31,gga:41,gif:31,gif_creat:31,gif_restart:31,gift:304,girlfriend:172,git:[279,341,342,344,350,352,353,354,355,356,357,359,360,384],gite:[12,38,82,215,222,233,239,255,256,265,280,285,289,296,316,329,342,350,351,352,353,355,356,357,359,387,388,390,391,422,430,432,435,438],github:[113,142,180,199,200,201,221,258,339,354,356,357,359,387,391],github_mirror:357,gitignor:350,gitxxx:348,give:[6,106,124,169,175,229,287,321,341,357,369,400,414],given:[84,111,169,220,228,280,343,385,414,415],glb:415,gll:41,global:[115,130,132,169,175,263,341,342,368,370,409],globalsign:62,glonass:[219,317,318],glossari:[363,376,384],glow:[193,194,195],glu:169,glue:[145,170],glyph:169,gmatch:[175,414],gmssl:[31,129,279],gmtime:415,gnd:[43,75,93,177,181,182,183,193,194,195,199,200,201,204,205,206,210,211,212,213,226,228,246,258,271,306,312,315],gnss:[41,131,219,279,283,284,285,292,294,316,317,318,320,321,322,421],gnss_state:[41,279,292],go:[0,11,81,169,215,220,234,240,251,258,282,293,306,312,343,365,396,400,403,412,414,415,417,442],goal:[19,28,363,376,384],god:[220,228,258,417],goe:[169,364],gold:258,gone:415,good:[218,229,246,258,266,277,279,316,322,358,414,415],goodgoodstudi:[15,19],googl:[169,400],got:130,govern:[258,415],gp:[41,82,112,219,277,284,285,294,316,317,318,322],gpio00:312,gpio02:306,gpio03:[306,312],gpio04:[306,312],gpio05:[306,312],gpio06:[306,312],gpio07:[306,312],gpio08:[306,312],gpio09:[306,312],gpio0:[93,276,277,278,295,306,312],gpio10:[136,246,253,277,278,284,295,306,312],gpio11:[253,278,284,295,310,312,322,430],gpio12:[103,111,253,284,295,306,312],gpio12cbfnc:284,gpio13:[103,253,277,284,295,306,312],gpio14:[253,279,284,295,306,312],gpio15:[253,279,284,295,306,312],gpio16:[22,103,246,253,284,292,306,312],gpio17:[22,103,120,246,253,291,292,306,312],gpio18:[22,199,204,205,246,253,279,284,295,306,312],gpio19:[199,204,205,246,253,279,284,295,306,312],gpio1:[76,93,181,182,253,284,295,306,312],gpio20:[199,204,205,246,284,306],gpio21:[199,204,205,246,253,276,306],gpio22:[82,211,212],gpio23:[211,212,253,277,284,291],gpio24:[284,295],gpio25:[2,284,295],gpio27:[22,82,276,277,278,284,295],gpio28:246,gpio29:[246,284],gpio2:[246,253,284,312],gpio30:[246,284],gpio31:246,gpio32:[213,246],gpio33:[213,246,312],gpio34:295,gpio35:[246,295],gpio36:[246,295],gpio37:[246,295],gpio38:[246,295],gpio39:246,gpio3:[25,253],gpio3uart0_rt:246,gpio40:246,gpio41:246,gpio44:[200,201,206,246],gpio45:[200,201,206,246],gpio46:[103,200,201,206,246],gpio47:[200,201,206,246,312],gpio48:312,gpio49:246,gpio4:[25,76,103,106,181,182,253,284,295],gpio50:246,gpio51:246,gpio54:246,gpio55:246,gpio56:246,gpio57:246,gpio58:246,gpio59:246,gpio5:[25,103,246,253],gpio60:246,gpio61:246,gpio62:246,gpio63:246,gpio64:246,gpio65:246,gpio66:246,gpio67:246,gpio6:[55,103,246],gpio70:[183,246],gpio71:[183,246],gpio72:246,gpio73:246,gpio74:246,gpio75:246,gpio7:[22,55,103,246,253],gpio8:[246,253,284,295],gpio9:[246,253,284,295,306],gpio:[14,24,25,28,31,33,35,55,72,75,76,78,82,93,99,103,111,112,120,121,127,129,135,136,172,173,185,206,207,215,216,217,231,232,234,236,238,240,241,246,253,256,261,262,267,270,273,276,277,278,279,280,283,285,292,294,296,297,304,306,312,321,322,333,337,338,350,369,370,371,376,377,380,384],gpio_01:236,gpio_02:236,gpio_03:236,gpio_04:236,gpio_05:236,gpio_06:236,gpio_07:236,gpio_08:236,gpio_09:236,gpio_0:387,gpio_10:236,gpio_11:236,gpio_12:236,gpio_13:236,gpio_14:236,gpio_15:236,gpio_16:236,gpio_17:236,gpio_18:236,gpio_19:236,gpio_20:236,gpio_21:236,gpio_22:[220,228,236],gpio_23:[220,228,236],gpio_24:[220,228,236],gpio_25:[220,228,236],gpio_26:[220,228,236],gpio_27:[220,228,236],gpio_28:236,gpio_29:236,gpio_30:236,gpio_31:236,gpio_32:236,gpio_33:236,gpio_34:236,gpio_37:236,gpio_38:236,gpio_40:236,gpio_41:236,gpio_42:236,gpio_43:236,gpio_a:61,gpio_b:61,gpio_fal:379,gpio_forcepullupconfig:259,gpio_forcepupdcmd:259,gpio_init:338,gpio_inittypedef:222,gpio_invbit:338,gpio_irq_count:22,gpio_l:222,gpio_mode_output_pp:222,gpio_pin_0:222,gpio_pin_8:259,gpio_pin_9:259,gpio_pinremapconfig:263,gpio_remap_swj_jtagdis:263,gpio_remap_swjjtagdis:263,gpio_ris:379,gpio_rising_fal:379,gpio_set:127,gpiob:[222,259],gpiod:338,gpiox:271,gpr:[76,124],gps_ant:[112,277],gps_uart_id:277,gptxt:41,gpu:169,grab:[400,409],grad_dir_v:169,grade:[124,280],gradient:169,gradual:[228,280],graffiti:[34,61,279],grai:[31,169,366],gram:414,grammar:[217,331,415],grammat:415,grandpar:169,grant:415,granular:[199,200,201],grape:169,graph:[169,415],graphic:[31,129,169,220,228,344,357],grayscal:[38,169],great:258,greater:[35,72,92,103,104,106,118,130,135,144,228,372,398,403,414,415],greatli:[169,258,279,395,409],greedi:104,greedy_parsing_flag:104,green:[38,257],grid16:89,grid1:89,grid:[61,169],ground:[41,75,220,228,246,263,271,297,306,312,396],group:[1,33,169,220,222,226,233,239,251,255,256,263,338,370,388,390,400,403,407,412,415,430],grow:[169,415],gsa:41,gsm:76,gsub:175,gsv:41,gt5slcd1e:23,gt5sucd2:426,gt911:61,gt911_i2c:61,gt911_int:61,gt911_re:61,gt911callback:56,gtfont:[31,38,129,135,279,333],guangdong:169,guarante:[64,75,118,280,306,316,337,415],guest:417,gui:[169,344],guid:[218,241,259,263,307,350,388,390],guidelin:415,gw:141,gy53l1:61,gyro:74,gyroscop:[61,74],gz:[27,415],h01:[277,317],h10:[277,317],h11:317,h:[28,31,41,49,108,110,120,144,169,173,179,186,220,222,228,263,331,338,341,342,352,353,356,357,359,362,392,394,414,415],ha:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,68,75,81,90,92,97,99,100,101,103,106,107,108,109,111,112,113,114,116,117,118,119,120,122,123,124,126,127,128,131,135,136,137,138,139,140,141,144,169,172,177,178,186,193,194,195,198,204,205,206,211,212,213,219,220,228,229,246,255,256,257,261,262,263,266,269,270,275,277,279,284,289,290,295,306,312,318,320,321,322,323,331,338,340,341,342,347,352,353,373,383,388,390,391,394,398,400,406,409,412,414,415,417],habit:[387,415],had:[173,415],hal:[225,262,322,370],hal_cortex_module_en:222,hal_delai:222,hal_flash_module_en:222,hal_gpio_init:222,hal_gpio_module_en:222,hal_gpio_togglepin:222,hal_inctick:222,hal_init:222,hal_ll:222,hal_module_en:222,hal_mspinit:263,hal_pwr_module_en:222,hal_rcc_module_en:222,half:[38,116,126,135,169,199,200,201,204,205,206,220,228,256,277,289,378,381,413,414],hall:337,halt:61,hand:[221,306,312,349,375,396,407,412,415],handheld:396,handl:[30,32,71,103,133,136,143,145,170,175,219,266,279,308,337,343,375,416],handler:[31,48,169,343,363,369,376,383,384,415,417],handler_on:415,handler_to:415,handshak:[68,124,279],hang:[5,31,129,263],hangup:31,hanlder:369,happen:[133,169,415],happi:7,happili:[388,390],hard:[7,133,185,216,251,409],hardfault:[31,279,292],hardfault_handl:[222,263],hardwar:[0,2,4,21,22,25,28,31,33,38,73,75,81,84,103,109,112,118,124,126,129,134,135,136,138,144,169,172,184,185,191,196,202,207,214,216,225,232,237,245,250,254,255,261,262,268,270,274,277,279,283,284,294,295,302,304,310,314,319,320,322,331,336,337,363,370,372,376,384,391,400,424,427,429,431,434,437,440,443],harmless:344,has_more_input:104,has_n_el:415,hash:[21,31,129,178,279],hash_finish:31,hash_init:31,hash_upd:31,hashjeremi:430,hashresult:8,have:[6,10,11,33,38,57,81,82,99,106,110,111,112,115,124,135,136,138,141,144,169,193,194,195,199,200,201,218,220,256,258,262,263,276,277,279,284,285,296,306,307,312,316,317,321,322,338,341,342,349,356,357,358,359,370,391,392,393,394,395,396,412,414,415,416,419],haven:[82,172],hclk:259,hcode:31,hd8128:291,hd:11,hdiv_num:169,hdop:41,he:[225,228,414,420,429],head:[32,41,75,80,128,144,365,373,385,396,398,403,412,415,417],headach:82,header:[27,31,59,104,169,199,200,201,225,265,271,279,292,322,341,342,343,362,375,385,415,417],header_tld:[388,389],header_tld_t:385,headingdegre:80,heap:[38,279,368],heap_4:368,heap_auto:[5,144],heap_psram:144,heap_sram:144,heard:279,heart:[31,129,219],heartbeat:[62,107,124,140,279,372],hebrew:169,hecheng:277,heet:378,height:[4,31,38,41,101,135,145,170,366,414],held:[169,407,412],hello:[142,217,218,221,289,414,415],helloworld:[145,170,330],help:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,220,228,259,263,277,349,357,358,388,390,412],helper:415,henc:415,henriqu:415,here:[0,6,12,17,41,64,112,116,124,131,141,169,172,173,186,199,200,201,204,205,206,215,218,220,221,222,228,256,271,277,280,307,322,338,341,342,343,352,353,356,357,358,360,369,370,373,376,388,389,390,398,400,403,407,409,414,415,416,417,418,427],here_x_and_y_ar:415,here_x_cannot:415,here_x_i:415,herebi:279,heshou:421,heshuo:239,heszhou:266,heterogen:[219,415],hex:[8,13,21,31,103,104,116,135,141,178,210,232,233,258,263,385,388,389,394],hexadecim:[37,64,103,136,141,169,185,191,216,388,389,394,414,415],hexstr:[31,392],hezhou:[246,265],hfashfp9qw38hrfaio:[13,104],hfiuoaghfluaeisw:[13,104],hi:[12,121,198,211,212,213,339,360,361,416],hib:[112,192,277,279,371],hibern:[7,112,292],hid:[137,258,285,296],hid_mod:31,hid_rx:31,hid_tx:31,hidden:[141,169,231,236,267,383],hide:[141,145,170,265],hierarchi:415,high:[2,5,11,22,28,33,38,41,52,75,84,103,112,126,127,172,177,181,182,183,185,187,191,193,194,195,197,203,204,205,206,216,219,220,221,222,228,229,231,236,246,251,258,261,262,263,267,271,279,284,295,304,306,312,315,316,320,322,331,337,352,353,371,373,379,381,382,396,398,401,403,406,409,415],high_irq:22,higher:[0,6,7,13,19,59,169,220,228,229,258,263,316,320,406,407,415],highest:[4,7,14,105,107,138,169,220,228,251,263,271,278,285,304,306,317,318,322,396,413],highli:342,highlight:[145,170,342],highlighted_d:169,highlighted_dai:169,highlighted_days1:169,highlighted_days2:169,highlighted_days3:169,himself:31,hint:[17,415],histor:[41,65,266,279,323],histori:[82,118,283,322,325],hit:169,hizhou:[226,233,239,262,323,331,337,420],hmac:[21,31,178],hmac_md5:[31,178],hmac_sha1:[31,178],hmac_sha256:[31,178],hmac_sha512:[31,178],hmacmd5:34,hmacsha1:34,hmacsha256:34,hmeta:[31,129],hold:[1,112,169,215,234,240,256,400,403,409,412,414,415],hole:[169,229,246,306,312,398,403],hollow:135,home:415,homepag:[22,82,295,409],hook:175,hope:[343,412],hopperiod:[99,100],hor:169,hor_fit_typ:169,hor_r:169,horizont:[38,41,169,415],horn:2,host:[31,61,62,126,181,182,183,203,220,228,263,271,279,284,285,295,296,312,364,366,374,415],hostnam:31,hot:[220,228,277,315,383,429],hotspot:[265,383],hour:[12,28,41,64,78,82,108,112,117,197,220,277,316,317,318,403,409,415],hour_offset:41,hous:396,how:[2,6,24,33,107,113,120,128,136,148,156,159,165,169,180,181,182,183,185,186,187,188,189,190,193,194,195,199,200,201,204,205,206,209,211,212,213,215,220,228,229,243,256,258,266,268,277,307,315,322,338,341,357,359,362,363,366,376,384,396,414,415,416,417,421],howev:[112,169,220,228,229,266,295,320,400,409,414,415],hozhou:66,hpa:52,hse:263,hse_startup_timeout:222,hse_valu:222,hsi:222,hsi_startup_timeout:222,hsi_valu:222,hsmode:28,hspi:[206,242,246,271],hspi_0:126,hspi_clk:[200,201,206],hspi_csn:[200,201,206],hspi_miso:[200,201,206],hspi_mosi:[200,201,206],hsv:169,ht1621:[31,129],ht1621b:[31,129],htm:[275,423,434,437,440,443],html:[7,11,27,38,41,108,169,172,220,221,228,285,296,331,400],http:[7,11,12,17,22,31,34,38,40,41,61,66,67,78,82,101,108,112,113,129,132,142,169,172,180,199,200,201,204,205,206,215,217,218,220,221,222,224,228,233,236,239,244,246,255,256,257,260,265,266,267,275,277,278,279,280,281,285,287,289,292,296,297,316,317,318,329,331,333,334,335,337,339,341,342,343,344,349,351,352,353,355,356,357,358,359,360,375,391,400,414,422,423,430,432,434,435,437,438,440,443],http_error_bodi:26,http_error_clos:26,http_error_connect:26,http_error_download:26,http_error_fota:26,http_error_head:26,http_error_rx:26,http_error_st:26,http_error_timeout:26,httpbin:[26,59],httpc:375,httpdn:61,httpplu:61,httpsrv:[31,129,279],httptest:26,huacon:[334,335],huawei:[34,61,279,398,403,412],huaxin:337,hue:169,huffman:104,huge:[82,175],huge_v:415,hum:52,human:415,humid:[28,61,82,120,181,182,183,217,220,228],humiditybit:[181,182,183],hump:387,hungri:417,hw:372,hwid_0:38,hwtimer:220,hwtimer_id:31,hwver:31,hx711:31,hxxt_bds_agnss_data:317,hxxt_gps_bds_agnss_data:[277,317],hz:[9,31,61,188,189,190,222],i16:144,i2:[2,31,103,129,251,279,285,296,312],i2c0:[28,103,220,228,276,284,295],i2c0_scl:[246,253,284,295],i2c0_sda:[246,253,284,295],i2c1:[28,103,276,279,284,295],i2c1_scl:[284,295],i2c1_sda:[284,295],i2c2:28,i2c:[2,24,31,42,43,44,45,47,49,50,51,52,53,54,56,60,63,69,70,73,74,77,78,79,80,83,86,87,91,93,102,103,129,135,179,185,216,232,245,251,270,279,283,285,294,296,304,306,312,322,333,337,349,387],i2c_hw:135,i2c_id:[28,31,50,52,56,61,69,77,93,135],i2c_scl:[88,135,181,182,183,231,236,267,273,306,312],i2c_sda:[88,135,181,182,183,231,236,267,273,306,312],i2c_spe:[42,43,44,45,47,51,52,53,54,56,63,69,70,73,74,79,80,83,86,87,91,105],i2c_sw:[135,179],i2cdon:28,i2cid:[42,43,45,47,51,52,53,54,56,60,61,63,69,70,73,74,78,79,80,87,91,105,181,182,183],i2cscl:93,i2csda:93,i2cslaveaddr:[181,182,183],i2ctool:297,i2s0:29,i2s1:[29,279],i2s:[261,322],i2s_bclk:284,i2s_dout:22,i2s_lrck:284,i2s_mclk:284,i2smod:263,i32:144,i64:144,i8080:312,i8:144,i:[2,4,8,20,22,33,38,56,60,77,79,81,82,84,85,89,90,98,110,136,141,144,169,172,173,175,177,180,181,182,183,186,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,220,226,228,229,246,258,263,268,279,289,322,342,352,357,375,388,390,392,396,414,417],i_:415,i_n_:415,iam_domain:62,iam_password:62,iam_usernam:62,iap:[251,258],iar:[257,258],ibid:[169,246,400,416],ibm:8,ic:[31,38,135,246,434,437,440],iccid:31,icm20608d:61,icm2068g:61,icon:[11,169,218,269],icon_img:169,iconv:[31,129,279,292,297],id0:38,id15:169,id1:11,id2:169,id4:221,id:[1,5,12,14,31,33,34,42,43,44,45,47,48,49,50,51,53,54,60,61,62,63,70,73,74,75,77,79,80,82,83,86,87,91,98,99,101,102,103,105,107,113,120,122,124,131,132,143,169,173,181,182,183,185,191,192,198,202,203,207,210,211,212,213,216,220,225,228,241,263,275,279,284,295,322,343,344,351,364,372,381,382,387,392,394,417,423,434,437,440,443],idcod:263,iddpd:246,idea:[220,228,279,280,349,363,376,377,384,414,415,419],ideal:[396,407,412],ident:[12,414,415],identif:[12,59,82,106,258,266,293,306,392],identifi:[24,41,106,218,226,258,266,323,337,344,415,418],ideograph:169,idf5:[307,342,358,359],idf:[307,315,342,359],idiom:415,idl:[76,112,118,121,124,369,371],idp:343,idx:415,ie:415,ieee:415,ierusalimschi:415,if_n_i:415,ifdef:[169,222,342],ifndef:[169,222],ignor:[3,4,8,28,37,41,106,112,120,124,125,131,138,169,263,279,284,286,295,318,350,356,357,414,415],igor:[356,357],ii:[38,261,317,318,322],iic:[220,226,259,262,292,297,306],iic_inttransmit:259,iih:373,iiha10:144,iiha:144,iii:[317,318],ili9341:[220,228,322],ili9486:38,illeg:[26,169,279,415],illumin:258,illustr:[322,415,417],imag:[4,11,31,129,135,145,170,219,220,228,251,357,358,394],image_recolor:169,image_recolor_opa:169,imagin:374,imei:[12,31,34,62,82,266,277,280],img1:[169,322],img2:169,img:[145,170,322,386],img_btn_part_main:169,img_cf_alpha_:169,img_cf_indexed_:169,img_cogwheel_argb:169,img_creat:169,img_dsc_t:169,img_part_main:169,img_set_angl:169,img_set_antialia:169,img_set_auto_s:169,img_set_offset_i:169,img_set_offset_x:169,img_set_pivot:169,img_set_src:[169,322],img_set_zoom:169,img_src:169,img_src_left:169,img_src_mid:169,img_src_right:169,img_zoom_non:169,imgbtn1:169,imgbtn:[145,170],imgbtn_:169,imgbtn_blu:169,imgbtn_creat:169,imgbtn_green:[169,322],imgbtn_part_main:169,imgbtn_set_check:169,imgbtn_set_src:169,imgbtn_til:169,imgbtn_toggl:169,imit:[220,228,341],immedi:[11,22,28,41,75,76,103,107,112,140,141,256,263,266,284,316,318,343,414,415],immut:[414,415],impact:[269,279],imped:[22,75,246,284,295,379,412],implement:[1,19,21,75,106,107,111,169,178,217,228,263,279,280,285,296,341,342,363,366,369,370,374,376,380,384,385,387,388,390,391,395,414,415,416,417,418],implements_ful:415,impli:[204,205,206,412],implicit:415,implicitli:364,imposs:[130,284,295,370],improv:[126,169,178,193,194,195,229,256,258,279,338,395,412,414,415],imsecret0i1m2jkl:34,imsi:31,in0_process:263,in2bc:11,in_buff:31,in_protect:415,in_set:415,in_set_:415,in_set_repres:415,in_set_to:415,ina226:[61,279],ina226_data:60,ina226_i2c:61,inaccess:415,inaccur:396,inact:[61,169],inappropri:417,inbuf:[6,31],inc_cmsi:[356,357],inch:[11,179,219,322,431,443],incident:130,incididunt:169,includ:[7,12,13,14,26,28,100,104,106,107,133,140,169,181,182,183,187,209,215,219,222,251,258,263,266,280,285,286,296,304,316,318,338,341,342,352,353,359,363,367,370,376,384,386,391,400,414,415,417,418,421,443],inclus:415,incom:[0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,384,414,415,418],incompat:[175,279],incomplet:[229,279],inconsist:[281,396,409,414],inconst:415,inconveni:359,incorrect:[26,199,200,201,263,279,400,415],incorrectli:[229,279],increas:[28,38,106,120,169,193,194,195,220,229,279,280,292,306,323,409,414,415],increment:[103,169,415],indata:[40,41],indefinit:[11,38,135,220,228,364,415,416],indent:[31,387,415],independ:[106,112,169,175,219,251,261,262,320,322,337,339,368,409,412,414],indetermin:[416,417],indev:169,indev_drv_regist:31,indev_kb_upd:31,indev_point_emulator_upd:31,index1:415,index2:415,index:[27,31,39,41,145,170,175,180,374,400,414],index_:415,index_n_ref:415,index_ref:415,indic:[2,5,12,17,48,61,64,66,67,75,106,107,112,120,124,132,140,144,169,257,258,277,306,322,343,359,381,382,396,400,409,414,415,417],indirectli:415,individu:[169,246],indivis:415,indoor:[319,320,322],induc:412,induct:412,industri:[270,322],ineffici:322,inf_timeout:417,inferior:306,infin:415,infinit:[33,169,364,418],info:[0,2,3,5,8,9,11,13,14,15,16,17,18,19,21,22,24,26,27,28,29,31,32,34,38,40,41,42,43,44,45,47,48,49,50,51,52,53,54,55,57,58,59,60,63,64,65,66,67,69,70,71,73,74,75,76,78,80,82,83,86,87,88,90,91,93,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,116,117,118,120,121,122,123,124,126,128,130,131,134,136,138,140,141,142,169,173,177,178,179,180,181,182,183,186,187,188,189,190,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,280,284,287,339,341,342,343,360,361,373,374,375,383,388,389,394,416,418],inform:[2,6,10,11,12,14,18,20,26,29,41,48,64,78,82,98,103,106,107,118,122,124,131,135,138,140,141,145,170,173,178,181,182,183,185,197,202,216,220,221,225,228,232,235,236,237,239,254,258,263,267,275,279,282,283,290,291,293,294,310,314,315,316,319,320,322,323,326,342,349,359,362,363,376,377,384,386,387,388,390,393,395,396,398,400,403,407,415,431,443],infrar:[31,50,61,129,380],inher:415,inherit:169,init:[31,52,61,69,131,169,173,175,179,186,187,198,199,200,201,209,220,228,263,341,348,349,375,414],init_in_servic:31,init_level:31,initi:[1,4,5,10,11,12,14,15,17,19,22,23,25,28,29,31,33,37,38,39,42,43,44,45,46,47,50,51,52,53,54,55,56,57,60,63,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,99,100,101,102,104,106,107,119,121,122,125,126,134,135,136,138,139,141,143,144,169,173,179,180,184,185,187,202,207,209,210,214,216,220,228,229,263,265,266,271,279,322,343,346,349,368,381,382,387,415,417],initr:[199,200,201],initreg_or_cspi_id:31,inject:[261,316,317,318,320,322],ink:[31,129,220,322,431],inlai:[145,170],inlet:229,inlin:[304,415],inner:[169,415],innermost:415,input:[6,8,22,31,37,82,99,101,103,106,124,125,128,145,170,173,175,177,199,200,201,217,229,231,232,236,246,262,263,266,267,269,277,279,284,291,295,306,312,322,337,349,363,370,376,379,384,396,398,403,407,412,414,419],input_buff:31,input_cnt:33,input_pulldown:379,input_pullup:379,inreversem:31,insert:[2,131,169,175,220,228,258,284,295,306,315,349,375,400,403,414,417],insertfinalnewlin:218,insid:[89,90,131,144,169,277,322,363,365,369,376,384,398,400,414,415],inspect:169,instal:[169,173,215,216,220,225,258,261,262,306,312,322,336,339,352,353,356,357,359,360,361,398,400,409],instanc:[41,48,50,55,62,77,107,121,135,140,258,388,390,415],instance_id:62,instanceid:48,instant:[284,295],instantan:[398,403,409,412],instead:[12,19,22,169,222,306,362,369,392,415,417,418],instruct:[25,82,103,127,169,181,182,183,186,198,204,205,206,220,222,228,229,242,258,261,267,268,270,278,283,285,294,310,315,317,318,322,342,356,357,365,396,398,400,414,415,417],instrument:[145,170],insuffici:[6,10,32,135,137,144,279,292,358,409],int16_t:374,int1:83,int2:83,int32:374,int32_t:[169,374],int64:373,int8:373,int8_t:[374,381,382],intact:414,integ:[3,4,28,41,64,82,101,120,124,127,128,279,289,308,337,373,414,415,418],integer_and_flo:415,integer_n_i:415,integr:[75,169,172,199,200,201,220,222,228,246,265,270,279,316,319,322,337,340,344,406],intend:[108,342],intens:[42,50,61,169],inter:[220,228,246],interact:[106,137,169,263,279,322,328,337,342,344,384,415,419,428],interchang:[169,220,239],interconnect:169,interest:266,interf:75,interfac:[16,28,38,48,75,103,117,120,129,131,138,144,145,170,175,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,217,219,220,222,228,229,243,246,251,256,261,266,270,279,280,285,286,296,306,312,315,322,337,344,356,357,363,365,370,376,380,384,388,390,391,395,403,406,413,414,417,419,421,429,430],interface_mod:38,interfer:[75,229,246,398,400],interg:28,intermedi:[169,222,256,280,338,359,414],intermitt:415,intern:[0,6,17,21,22,24,25,82,112,124,131,144,145,170,177,220,228,231,236,242,246,261,262,263,267,279,283,322,331,337,340,375,396,406,414,415,416,417,418],internet:[34,124,141,315,333,356,357,383],interpret:[30,169,326,394,414,415],interrupt:[22,33,44,56,75,78,83,85,90,93,99,112,136,209,217,220,225,228,229,246,261,271,279,284,292,295,322,337,338,343,369,370,379,383,409,415],interv:[2,57,104,106,107,124,134,138,140,221,261,279,322,368,415],interval_:415,inton:[283,322],intptr_t:415,intranet:[124,279,421],introduc:[26,152,169,174,177,178,179,184,187,191,192,196,197,198,202,203,207,208,210,214,220,222,228,322,341,342,383,417],introduct:[37,59,112,125,129,145,148,152,156,159,165,170,171,175,184,185,191,196,202,207,214,216,217,232,238,283,294,310,314,319,322,325,388,390,416],introductori:414,intuit:[169,374],invalid:[0,11,22,25,38,41,46,84,106,112,130,135,169,266,277,412,415,417],inventori:[342,359],invers:[75,169,414,415],invert:[145,170,415],invis:[103,106,113,210,228,414,415],invoff:31,involv:[41,368,369,370,388,390,392,415],invon:31,io00:[306,312],io01:[306,312],io02:[306,312],io03:[306,312],io04:[306,312],io05:[306,312],io06:[306,312],io07:[306,312],io08:[306,312],io09:[306,312],io10:[306,312],io11:312,io12:[306,312],io13:[306,312],io14:312,io15:312,io16:312,io17:312,io18:[306,312],io19:306,io:[2,14,29,31,61,62,75,103,106,107,112,113,116,119,129,169,172,173,175,198,199,200,201,220,228,246,259,261,262,263,273,278,279,283,294,306,312,322,337,360,363,367,376,384,391,414,416],io_sel:295,ioh:246,iol:246,iomux:[22,31,279,284,295],ionospher:316,ioqueu:[31,129,292],iosel:[112,294,322],iot:[12,31,61,62,64,66,67,129,141,148,159,165,255,268,280,286,315,322,331,395,398,406,409,416],iot_config:61,iot_core_id:31,iotauth:[31,129,279,292,297],iotcloud:[61,279],iotcloudc:62,iotda:31,iotpl:409,iotpow:[400,403,407,409,412],iotpower_cc_usb_driv:409,iotpowerpro:409,iovl:112,iovol:[31,279],iovol_all_gpio:112,ip1:124,ip2:124,ip3:124,ip4:124,ip:[31,41,58,62,68,106,107,131,279,383],ip_addr:31,ip_los:279,ip_readi:[64,65,82],ip_typ:31,ipair:175,ipc:365,ipsum:169,ipv4:[106,124,141],ipv4v6:106,ipv6:[26,31,59,107,124,140,279,421],iqinvert:[99,100],ir:[8,31,61,75,129,376,377,384],iron:[220,228],irq:[31,61,138],irq_27:22,irq_mod:31,irq_pin:[31,61],irqf_act_ctl:61,irqf_cfg:61,irqf_dur:61,irqf_en:61,irqf_map:61,irqf_th:61,irregular:217,irrevers:178,irrig:246,irtu:421,irur:169,is_comment_:415,is_ddr:31,is_default:31,is_don:375,is_drag:169,is_e_:415,is_en:31,is_function_:415,is_input:31,is_instantiated_:415,is_msb:31,is_ok:31,is_short:415,is_sign:[6,31],is_tl:31,is_udp:31,is_weak:415,isbigend:31,isclos:61,isdecod:31,isdelet:31,isdon:31,isdst:415,isend:31,isequ:31,isexist:387,isfix:31,isfloat:31,isipv6:31,isn:[169,414],isnum:415,iso14443_a:81,iso:[312,415],isol:[229,246,364,370,391,400],isp:[251,256,261,322,337],isreadi:124,isrun:415,issign:31,issu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,258,268,277,310,319,322,342,358,387,393,407,415],issue_xxx:387,istailcal:415,istl:34,istr_ctr:263,istr_dir:263,istr_ep_id:263,isvararg:415,isyield:175,item:[28,31,62,82,103,135,141,144,169,216,268,275,277,279,284,295,307,322,350,357,403,415,423,434,437,440,443],iter:[31,279,363,376,384,414,415],its:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,75,92,97,99,100,101,106,107,108,112,113,114,116,117,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,204,205,206,246,262,266,287,316,343,370,391,392,412,413,414,415,417],itself:[38,61,65,169,228,277,278,289,317,318,320,321,345,356,358,386,388,390,398,400,403,413,414,415],iv:31,j16:355,j:[172,175,414],januari:169,japanes:169,java:392,jedec:[199,200,201],jeremi:180,jin:306,jlink:263,job:[246,415],join:[279,383,395,407,414,415],joint:[66,67,266,270,277],jointli:350,joo:67,joystick:409,jpeg:[4,38,251,292,304],jpg:[4,8,38],json:[8,14,16,19,27,31,32,41,59,65,78,106,108,117,123,124,128,129,131,140,141,169,173,197,218,220,221,279,292,297,333,350,374,388,389,394],jt808:279,jtag:[261,312,322],jtdo:263,jtrst:[261,322],jubj62lnbb:34,judg:[17,61,78,106,107,118,124,229,261,279,280,322],judgment:[76,128,217,279,289,342,369],juli:[19,64,141,169],jump:[169,403,415],junction:71,june:[169,258],junior:[222,256,338],just:[17,33,82,99,119,131,144,169,180,209,215,218,220,221,228,258,266,279,307,315,316,322,341,342,343,352,353,359,369,373,387,414,415],k:[15,19,71,72,115,141,180,414,415],kb:[14,169,199,200,201],kb_creat:169,kb_event_cb:169,kb_inc:37,kcu:246,keep:[7,112,124,128,169,197,215,220,229,281,317,318,352,353,412,414,415],keep_cnt:31,keep_idl:31,keep_interv:31,keepal:[31,62],keepemtri:31,kei:[12,20,26,31,41,48,61,62,64,66,103,107,112,124,125,129,131,141,145,170,185,215,216,218,232,246,268,276,277,278,279,284,295,310,314,315,322,340,396,398,400,409,414,415,417,419,421,443],keil:[225,226,256,257,261,322,338,354],keil_v5:354,keilbuild:354,kept:[116,415],kere:169,kern:169,kernel:[226,258,304,415],key_b:81,key_cb:61,key_cod:90,key_down:169,key_ent:169,key_in:31,key_left:169,key_out:31,key_right:169,key_up:169,keyboard0:[37,246],keyboard1:246,keyboard2:246,keyboard3:246,keyboard4:[37,246],keyboard5:246,keyboard6:246,keyboard7:246,keyboard8:246,keyboard:[31,101,129,137,145,170,304,322,333],keyboard_:169,keyboard_cr:169,keyboard_def_event_cb:169,keyboard_mode_num:169,keyboard_mode_text_low:169,keyboard_mode_text_speci:169,keyboard_mode_text_upp:169,keyboard_part_bg:169,keyboard_part_btn:169,keyboard_set_cursor_manag:169,keyboard_set_textarea:169,keypad_encod:101,keystrok:169,keyword:[107,169,340,415],khz:246,kib:[356,357],kicad7:258,kicad:[229,258,278,428],kick:107,kill:409,kind:[76,124,210,211,212,213,220,228,293,316,362,415,417],kindli:258,km:41,kn:41,knob:[145,170],knock:[137,349],knot:41,know:[107,133,144,178,220,228,266,343,359,413,414,415,416],knowledg:[152,216,363,376,377,384,388,390,400,416],known:[107,229,255,319,321,322,337,414,415,417],korean:169,kp:90,kuf3nt:34,kv:[31,61,129,297,331],kv_clr:[31,180],kv_count:[15,19],kv_del:[31,180],kv_get:[19,31,180],kv_iter:31,kv_next:31,kv_set:[31,180],kv_stat:31,kvdb:180,kvdb_init:[19,31,180],kword:415,l1:[169,277,415],l1i:291,l3g4200d:61,l3g4200d_data:63,l6985e:[225,322],l:[32,110,144,169,229,341,342,343,362,364,369,374,375,387,414,415],l_alloc:370,l_font:366,l_gpio_handl:369,l_module_funct:387,l_mylib_abc:343,l_mymath_myplu:342,l_rtos_recv:364,l_xxxx_block:[343,375],l_xxxx_cb:343,la:415,label1:169,label2:[101,169],label:[101,145,170,220,228,306,415],label_align_cent:169,label_align_left:169,label_align_let:169,label_align_right:169,label_cnt:169,label_cr:[101,169,220,228],label_demo:169,label_label:169,label_long_:169,label_long_break:169,label_long_crop:169,label_long_dot:169,label_long_expand:169,label_long_mode_break:169,label_long_srol:169,label_long_sroll_circ:169,label_long_txt_hint:169,label_part_main:169,label_set_align:169,label_set_array_text:169,label_set_long_mod:169,label_set_recolor:169,label_set_static_text:169,label_set_text:[101,169,220,228],label_set_text_fmt:169,labor:169,labori:169,laborum:169,lac:106,lack:256,ladder:169,lamp:[172,193,194,195,220,228,278,317,331],languag:[104,136,169,175,218,220,283,315,322,341,370,392,395,409,412,413,414,431,443],language_:415,larg:[6,38,59,65,126,135,169,172,219,220,222,226,228,229,233,239,255,256,258,279,284,292,307,317,321,322,338,342,356,357,359,400,409,412,414,415],larger:[6,13,104,106,169,199,200,201,265,308,342,407,414,415],largest:[4,415],laser:61,last:[4,5,12,17,20,22,106,107,112,124,140,144,169,181,182,183,199,200,201,204,205,206,220,228,229,263,271,277,279,280,292,379,385,414,415,417,418,421],lastlinedefin:415,lastnum:31,lastreson:[31,279],lat:[41,64,65],latch:61,later:[33,67,124,127,169,220,228,258,266,280,284,291,295,342,343,378,414,415,418],latest:[2,141,169,180,199,200,201,215,220,221,222,228,233,239,256,261,269,279,280,292,322,339,357,359,400,421],latitud:[41,64,65],latter:[0,169,220,228,340,365,415],lau:279,launch:[107,140,270,285,296],lauxlib:415,law:266,layer:[2,17,41,66,84,89,101,107,115,118,124,135,140,169,180,215,220,229,243,246,251,258,266,280,281,284,295,341,342,343,356,362,364,366,369,374,376,377,384,415,418],layer_si:31,layer_top:31,layout:[145,170,204,205,206,224,280,284,289,295,388,389,396,409,415],layout_:169,layout_cent:169,layout_column_left:169,layout_column_mid:169,layout_column_right:169,layout_grid:169,layout_off:169,layout_pretti:169,layout_pretty_bottom:169,layout_pretty_mid:169,layout_pretty_top:169,layout_row_bottom:169,layout_row_mid:169,layout_row_top:169,lb:320,lbsloc2:[61,277,320],lbsloc:[61,277,279,320],lbsyun:41,lc:415,lcc:304,lcd:[4,31,103,105,126,129,169,173,185,216,232,238,251,278,279,280,285,292,295,296,312,322,333,337,352,358,378,429,431,432,435,438,441],lcd_dout:295,lcd_r:295,lcd_rst:[284,295],lcdi:246,lcdseg:[31,129,238,304,333],lcoal:387,lcsloc:279,ld0:246,ld8s5j1l07:34,ld:356,ldata:367,ldexp:415,ldo:[229,236,245,258,322,337,412],ldo_ctl:[112,284],le:415,lead:[169,177,228,277,284,292,333,409,414,415],leak:[22,279,362],learn:[169,216,220,228,258,266,359,395,396,407,413,414],least:[6,59,169,222,229,356,357,359,380,415],leav:[106,126,169,229,312,403,409,415],led1:[169,220,228],led2:169,led3:169,led:[22,27,61,76,82,90,145,170,172,193,194,195,220,221,222,228,242,258,276,277,278,310,314,322,338,348,349,365,370,419],led_creat:169,led_demo:169,led_off:169,led_on:169,led_part_main:169,led_set_bright:169,led_toggl:169,leda:[27,76,312],ledb:312,ledblinktim:76,ledpin:61,ledpinsetfunc:61,left:[3,11,29,31,38,55,61,78,101,103,105,106,124,135,138,144,169,215,218,220,221,256,263,279,351,396,398,400,403,407,409,412,414,415],left_fit_typ:169,leftmost:[144,169],legaci:62,legal:415,legend:322,legitim:26,len:[31,41,61,72,81,85,143,175,199,200,201,204,205,206,210,211,212,213,271,341,366,368,373,382,385,391,392],length:[4,8,13,15,17,19,21,22,26,28,29,31,32,59,62,72,81,82,85,101,104,107,109,110,113,118,119,120,121,124,126,128,130,136,137,138,141,145,170,175,199,200,201,220,228,271,279,292,306,308,366,369,373,374,378,381,382,385,387,392,394,414,417,424],less:[4,6,13,26,32,65,92,103,104,121,124,144,169,229,251,259,261,262,270,277,279,317,318,322,341,395,398,400,412,414,415],lesson:169,let:[169,172,173,220,228,243,369,378,392,394,395,412,414,415,416,417],letter:[8,34,82,169,365,387,414,415],level:[2,6,11,14,26,31,35,38,41,48,62,79,107,118,124,133,135,136,169,175,185,210,216,219,220,228,229,246,258,263,265,278,279,280,284,289,292,295,306,312,317,318,320,337,338,352,353,363,374,376,377,380,383,384,394,409],lever:409,lexer:415,lexic:175,lexin:[306,312,331],lf:[18,31,122,185,202,216,391,414],lfs2:118,lfs_mount:[199,200,201],lga:304,lgc:[352,353,359],li:[271,278],liansheng:275,lianshengd:[239,304,333],lib:[280,320,330,333,341,416],lib_xx:341,libcoap:[31,129],libcool:341,libemqtt:279,libfota2:[61,266],libfota:[61,266,279,280,286],libfota_cb:[66,67],libfota_timeout:61,libgnss:[31,129,279,292,297,333],libgt:341,libluato:[356,357],libnam:175,libnet:[61,132,280],librari:[0,1,2,3,4,5,6,7,8,9,12,13,14,15,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,35,37,38,39,40,41,48,49,65,66,67,75,84,89,92,97,99,100,103,104,106,107,108,110,111,112,113,114,116,117,119,122,123,124,127,128,129,137,138,140,141,142,143,169,175,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,217,220,225,228,241,256,262,265,266,273,277,279,280,284,285,289,290,292,295,296,297,308,317,318,319,322,330,338,339,344,350,356,357,358,366,370,373,374,384,386,387,388,390,392,395,406,413,416],library_provid:415,libsdl2:360,licens:415,lichuang:412,life:[172,391],lifftef:391,lift:279,light:[42,61,76,112,169,172,185,196,215,216,218,222,232,237,257,258,276,277,278,284,295,306,312,322,337,338,348,349,350,396],light_color:31,lightweight:[169,414,415],like:[134,144,169,215,220,222,228,258,266,269,307,316,322,338,349,400,412,414,415],limit:[1,6,31,121,136,137,143,144,169,220,228,246,255,263,271,279,280,285,286,292,296,308,331,356,373,388,389,412,414,415],line1:169,line:[19,31,32,38,84,89,90,98,108,115,118,131,135,144,145,170,175,186,187,203,204,205,206,210,211,212,213,216,220,222,228,229,246,258,263,266,269,277,279,281,284,295,306,307,315,326,330,331,339,342,356,357,364,365,373,375,387,388,390,396,401,403,406,409,412,414,416,417,418],line_color:169,line_cr:169,line_demo:169,line_num:169,line_part_main:169,line_point:169,line_ref:415,line_set_auto_s:169,line_set_point:169,line_set_y_invert:169,linear:101,linedefin:415,linemet:169,linemeter_:169,linemeter_cr:169,linemeter_part_main:169,linemeter_set_rang:169,linemeter_set_scal:169,linemeter_set_valu:169,linetyp:169,link:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,92,97,99,100,101,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,218,222,229,237,255,265,267,279,283,284,294,295,310,314,315,317,318,322,332,342,352,353,356,357,359,363,376,384,388,390,415,424,429,431,434,437,440,443],link_pin:31,linkag:68,linker:415,linkup:31,linkv2:263,linkv3:263,linux:[145,174,220,228,330,356,357,365,391,396,400,401,412,415],lion:172,lis2dh12:61,lis2dh12_data:69,list1:169,list:[8,20,26,31,32,61,125,131,145,170,175,186,220,222,228,256,261,263,266,271,322,323,338,340,342,348,349,350,351,362,385,387,396,414,417],list_add_btn:169,list_btn:169,list_clean:169,list_creat:169,list_demo:169,list_down:169,list_focu:169,list_get_btn_img:169,list_get_btn_index:169,list_get_btn_label:169,list_get_btn_text:169,list_of_valu:169,list_part_bg:169,list_part_edge_flash:169,list_part_scrl:169,list_part_scrlbar:169,list_part_scrollbar:169,list_remov:169,list_set_anim_tim:169,list_set_btn_select:169,list_set_edge_flash:169,list_set_layout:169,list_set_scroll_propag:169,list_set_scrollbar_mod:169,list_up:169,listen:[27,31,61,403],lit:[193,194,195,400],liter:415,literalstr:415,lithium:246,littl:[31,110,124,126,129,136,137,169,193,194,195,341,388,390,415],little_flash:[31,129],little_flash_devic:97,littlef:[18,220,255,391],littlevgl:169,live:[124,415],ll:[172,173,220,225,228,322],ll_apb1_grp1_enableclock:222,ll_apb1_grp1_periph_pwr:222,ll_apb1_grp2_enableclock:222,ll_apb1_grp2_periph_syscfg:222,ll_gpio_mode_output:222,ll_gpio_pin_0:222,ll_gpio_setpinmod:222,ll_gpio_togglepin:222,ll_init1mstick:222,ll_iop_grp1_enableclock:222,ll_iop_grp1_periph_gpiob:222,ll_mdelai:222,ll_rcc_apb1_div_1:222,ll_rcc_getsysclksourc:222,ll_rcc_hsi_en:222,ll_rcc_hsi_isreadi:222,ll_rcc_setahbprescal:222,ll_rcc_setapb1prescal:222,ll_rcc_setsysclksourc:222,ll_rcc_sys_clksource_hsisi:222,ll_rcc_sys_clksource_status_hsisi:222,ll_rcc_sysclk_div_1:222,ll_setsystemcoreclock:222,lla:41,llcc68:[99,100],llogd:341,llvm:[360,361],lm75:61,lm75_data:[61,85],lm75a:61,lm75b:61,lm:124,lmathlib:362,lmeter:[145,170],lmeter_demo:169,lng:[41,64,65],lnk:356,lo:414,load:[16,31,101,118,169,175,218,229,232,237,245,246,261,279,310,315,319,322,328,340,352,353,366,370,400,414],loadedlib:342,loader:415,loader_:415,loadfil:[175,370],loadlib:175,loc:31,local:[0,2,3,6,8,12,13,14,15,17,19,20,21,25,26,28,29,30,32,33,34,38,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,103,104,106,107,108,109,110,112,113,114,116,117,118,119,120,121,122,124,126,127,128,130,135,136,138,140,141,142,143,144,169,172,173,175,178,179,181,182,183,190,197,198,199,200,201,203,204,205,206,208,210,211,212,213,220,228,266,279,280,284,287,292,316,339,340,341,343,349,360,361,364,366,367,369,370,372,373,374,375,381,382,383,387,391,392,416,417,418],local_nam:31,local_port:31,localip:[31,106],localtim:415,locat:[11,16,32,41,61,65,75,98,102,103,105,121,126,135,144,169,199,200,201,215,281,319,320,322,326,339,341,352,353,357,369,370,415,416],lock:[31,106],lockcel:31,locstr:31,loctyp:64,lod:350,log:[0,2,3,5,7,8,9,11,12,13,14,15,16,17,18,19,21,22,24,26,27,28,29,31,32,34,38,40,41,42,43,44,45,47,48,49,50,51,52,53,54,55,57,58,59,60,63,64,65,66,67,69,70,71,73,74,75,76,78,80,82,83,86,87,88,90,91,93,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,116,117,118,120,121,122,123,124,126,128,129,130,131,134,135,136,138,140,141,142,173,175,177,178,179,180,181,182,183,185,186,188,189,190,192,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,216,221,229,232,242,253,263,266,278,279,280,284,287,295,304,306,312,322,323,339,341,342,343,344,349,357,358,360,361,365,373,374,375,416,417,418,419,421],log_br:386,log_debug:98,log_error:98,log_info:98,log_level:31,log_sil:98,log_warn:98,logarithm:[409,415],logger:409,logic:[17,31,75,118,129,136,175,219,279,280,292,340,342,343,364,369],login:[31,107,266,279],logo:[8,38,215,350],logstor:[31,129],longer:[12,64,107,115,124,140,169,219,220,255,275,279,387,415],longest:415,longitud:[41,64],longjmp:415,longlong:3,look:[17,27,103,124,169,172,173,193,195,204,205,206,211,212,213,215,220,228,266,277,293,306,341,352,353,359,362,378,392,394,395,400,414,415,416,417],lookup:415,loop:[31,33,129,130,177,185,210,216,220,221,228,263,279,364,369,372,398,415,416,417,418],loopback:[220,228],loopid:418,loosen:[169,412],lora2:[31,129,279],lora:[31,100,129,279],lora_devic:31,lora_init:99,lora_rx_don:[99,100],loraconfig:31,lorem:169,lose:[31,41,129,131,220,228,277,308],loss:[228,412],lost:[41,112,131,234,240,269,277,279,317,318],lot:[186,220,228,266,290,341,374,386,417],love:172,low:[2,5,22,26,28,75,103,111,112,124,127,169,172,187,219,220,221,222,229,246,251,258,262,263,270,271,277,279,289,304,306,312,320,331,337,363,370,376,379,381,382,384,395,396,398,400,415,417,421],low_irq:22,lower:[14,19,38,101,135,173,175,181,182,183,188,189,218,219,222,226,229,258,263,271,279,359,398,400,409,414],lowercas:[169,387,414,415],lowest:[105,112,169,271,317,318],lpmem:[322,371],lpt:258,lpuart:279,lqfp100:304,lqlq666lqlq946:21,lsat:289,lsb:[29,84,126,136,199,200,201,381,382],lsdir:[31,279,367],lse:222,lse_startup_timeout:222,lse_valu:222,lsec:124,lsi_valu:222,lsmount:31,lspd_mode:357,lst:415,lt:415,ltd:169,lte:[76,106,285,296],ltepin:61,ltrim:31,lua53doc:108,lua:[7,13,15,16,19,32,33,41,64,76,82,98,101,103,104,108,110,115,118,126,130,132,144,169,175,179,186,187,198,199,200,201,209,215,217,220,228,229,234,240,255,265,266,275,277,279,280,285,286,296,317,318,326,330,339,341,342,343,347,350,352,353,356,357,359,360,361,363,365,369,374,376,377,384,386,388,389,390,391,395,409,416,417,418],lua_32bit:415,lua_:415,lua_absindex:175,lua_alloc:175,lua_api:387,lua_arith:175,lua_atpan:175,lua_cal:[175,375,387],lua_callk:175,lua_cfunct:175,lua_checkint:364,lua_checkstack:175,lua_clos:175,lua_compar:175,lua_concat:175,lua_copi:175,lua_cpath:415,lua_cpath_5_3:415,lua_createt:175,lua_debug:175,lua_dump:175,lua_errerr:415,lua_errfil:415,lua_errgcmm:415,lua_errmem:415,lua_error:175,lua_errrun:415,lua_errsyntax:415,lua_extraspac:415,lua_fil:370,lua_filehandl:415,lua_gc:175,lua_gccollect:415,lua_gccount:415,lua_gccountb:415,lua_gcisrun:415,lua_gcrestart:415,lua_gcsetpaus:415,lua_gcsetstepmul:415,lua_gcstep:415,lua_gcstop:415,lua_getallocf:175,lua_getctx:415,lua_getextraspac:175,lua_getfield:175,lua_getglob:[175,375,387],lua_gethook:175,lua_gethookcount:175,lua_gethookmask:175,lua_geti:175,lua_getinfo:175,lua_getloc:175,lua_getmetat:175,lua_getstack:175,lua_gett:[175,375],lua_gettop:175,lua_getupvalu:175,lua_getuservalu:175,lua_hook:175,lua_hookcal:415,lua_hookcount:415,lua_hooklin:415,lua_hookret:415,lua_hooktailcal:415,lua_ids:415,lua_init:415,lua_init_5_3:415,lua_insert:175,lua_int:415,lua_integ:175,lua_isboolean:175,lua_iscfunct:175,lua_isfunct:175,lua_isinteg:175,lua_islightuserdata:175,lua_isnil:175,lua_isnon:175,lua_isnoneornil:175,lua_isnumb:175,lua_isstr:175,lua_ist:175,lua_isthread:175,lua_isuserdata:175,lua_isyield:175,lua_kcontext:175,lua_kfunct:175,lua_len:175,lua_load:175,lua_maskcal:415,lua_maskcount:415,lua_masklin:415,lua_maskret:415,lua_maxinteg:415,lua_mininteg:415,lua_minstack:415,lua_multret:415,lua_newst:[175,370],lua_newt:175,lua_newthread:175,lua_newuserdata:175,lua_next:175,lua_noref:415,lua_numb:175,lua_numbertointeg:175,lua_ok:415,lua_opadd:415,lua_opband:415,lua_opbnot:415,lua_opbor:415,lua_opbxor:415,lua_opdiv:415,lua_opeq:415,lua_opidiv:415,lua_opl:415,lua_oplt:415,lua_opmod:415,lua_opmul:415,lua_oppow:415,lua_opshl:415,lua_opshr:415,lua_opsub:415,lua_opunm:415,lua_path:415,lua_path_5_3:415,lua_pcal:175,lua_pcallk:175,lua_pop:175,lua_pushboolean:[175,341],lua_pushcclosur:175,lua_pushcfunct:[175,341],lua_pushfstr:[175,341],lua_pushglobalt:175,lua_pushinteg:[175,343,369,375],lua_pushlightuserdata:[169,175],lua_pushliter:175,lua_pushlstr:175,lua_pushnil:[175,343],lua_pushnumb:175,lua_pushstr:[175,342,343,375,387],lua_pushthread:175,lua_pushunsign:415,lua_pushvalu:175,lua_pushvfstr:175,lua_rawequ:175,lua_rawget:175,lua_rawgeti:175,lua_rawgetp:175,lua_rawlen:175,lua_rawset:175,lua_rawseti:175,lua_rawsetp:175,lua_read:175,lua_real:415,lua_refnil:415,lua_regist:175,lua_registryindex:415,lua_remov:175,lua_replac:175,lua_resum:175,lua_ridx_glob:415,lua_ridx_mainthread:415,lua_rot:175,lua_setallocf:175,lua_setfield:175,lua_setglob:[175,341],lua_sethook:175,lua_seti:175,lua_setloc:175,lua_setmetat:175,lua_sett:175,lua_settop:175,lua_setupvalu:175,lua_setuservalu:175,lua_stat:[169,175,341,342,343,362,374,375,387],lua_statu:175,lua_stringtonumb:175,lua_sys_xxx:362,lua_tboolean:415,lua_tfunct:415,lua_tlightuserdata:415,lua_tnil:415,lua_tnon:415,lua_tnumb:415,lua_toboolean:175,lua_tocfunct:175,lua_tointeg:175,lua_tointegerx:175,lua_tolstr:175,lua_tonumb:175,lua_tonumberx:175,lua_topoint:175,lua_tostr:175,lua_tothread:175,lua_tounsign:415,lua_tounsignedx:415,lua_touserdata:175,lua_tstr:415,lua_ttabl:415,lua_tthread:415,lua_tuserdata:415,lua_typ:175,lua_typenam:175,lua_unsign:175,lua_upvalueid:175,lua_upvalueindex:175,lua_upvaluejoin:175,lua_use_apicheck:415,lua_valu:370,lua_vers:175,lua_writ:175,lua_writestr:370,lua_xmov:175,lua_yield:175,lua_yieldk:175,luac:[18,118,386,415],luac_strip:326,luaconf:415,luadb:[8,16,27,29,32,38,62,94,107,108,113,116,279,322,328,331,386,388,389,391],luadb_t:385,luahelp:218,luai_throw:415,lual:415,lual_:415,lual_add:415,lual_addchar:175,lual_addlstr:175,lual_adds:175,lual_addstr:175,lual_addvalu:175,lual_argcheck:175,lual_argerror:175,lual_buff:175,lual_buffers:415,lual_buffinit:175,lual_buffinits:175,lual_callmeta:175,lual_check:415,lual_checkani:175,lual_checkint:415,lual_checkinteg:[175,341],lual_checklong:415,lual_checklstr:[175,341],lual_checknumb:175,lual_checkopt:175,lual_checkstack:175,lual_checkstr:[169,175],lual_checktyp:175,lual_checkudata:175,lual_checkunsign:415,lual_checkvers:175,lual_checkxxx:362,lual_dofil:175,lual_dostr:175,lual_error:175,lual_execresult:175,lual_fileresult:175,lual_getmetafield:175,lual_getmetat:175,lual_getsubt:175,lual_gsub:175,lual_len:175,lual_loadbuff:175,lual_loadbufferx:175,lual_loadfil:175,lual_loadfilex:175,lual_loadstr:175,lual_newlib:175,lual_newlibt:175,lual_newmetat:175,lual_newst:175,lual_openlib:175,lual_optint:415,lual_optinteg:175,lual_optlong:415,lual_optlstr:175,lual_optnumb:175,lual_optstr:175,lual_optunsign:415,lual_prepbuff:175,lual_prepbuffs:175,lual_pushresult:175,lual_pushresults:175,lual_pushxxxx:362,lual_ref:175,lual_reg:[175,342],lual_requiref:175,lual_setfunc:175,lual_setmetat:175,lual_stream:175,lual_testudata:175,lual_tolstr:175,lual_traceback:175,lual_typenam:175,lual_unref:175,lual_wher:175,lualib:415,luamod_api:342,luao:270,luaopen_:415,luaopen_a_:415,luaopen_a_b_c:415,luaopen_bas:415,luaopen_coroutin:415,luaopen_debug:415,luaopen_fastlz:342,luaopen_io:415,luaopen_math:415,luaopen_mymath:342,luaopen_packag:415,luaopen_str:415,luaopen_t:415,luaopen_utf8:415,luaopen_xxx:341,luaoto:359,luastat:[364,369],luat:[38,133,175,179,209,341,342,354,356,357,359,363,367,368,371,373,376,379,384,420],luat_:387,luat_bas:[169,341,342],luat_base_:342,luat_base_air101:342,luat_base_ec618:342,luat_base_xxx:341,luat_cbcwait:343,luat_cbcwait_noarg:343,luat_conf_bsp:[169,331,341,342,352,353,359],luat_custom_init:341,luat_custom_sayhi:341,luat_demo_xxx:362,luat_fil:367,luat_font:366,luat_font_data:378,luat_font_data_t:378,luat_font_get:366,luat_font_t:366,luat_fota:266,luat_fs_fclos:367,luat_fs_fopen:[279,367,370],luat_fs_fseek:367,luat_fs_ftel:367,luat_fs_getc:367,luat_gpio_callback:369,luat_gpio_clos:379,luat_gpio_fal:379,luat_gpio_get:379,luat_gpio_high:379,luat_gpio_input:379,luat_gpio_input_pulldown:379,luat_gpio_input_pullup:379,luat_gpio_low:379,luat_gpio_output:379,luat_gpio_output_od:379,luat_gpio_ris:379,luat_gpio_rising_fal:379,luat_gpio_rtt:369,luat_gpio_set:379,luat_gpio_setup:[362,370,379],luat_gpio_t:[362,369,379],luat_has_custom_lib_init:341,luat_heap_alloc:[368,370,387],luat_heap_calloc:368,luat_heap_fre:[342,343,368],luat_heap_getfre:368,luat_heap_init:368,luat_heap_mallac:362,luat_heap_malloc:[342,343,368,370],luat_heap_realloc:368,luat_lib:342,luat_lib_:38,luat_lib_fonts_h:169,luat_lib_gpio:369,luat_lib_mymath:342,luat_lib_sys_run:362,luat_lib_xxx:[341,362],luat_log:341,luat_log_tag:341,luat_lv_font_get:169,luat_lvgl_font:169,luat_malloc:[341,342],luat_malloc_heap_s:368,luat_mcu_xtal_ref_output:291,luat_msg_hanld:369,luat_msgbu:356,luat_msgbus_data:[364,369],luat_msgbus_frees:369,luat_msgbus_get:[364,369],luat_msgbus_init:369,luat_msgbus_itemcount:369,luat_msgbus_put:[343,369],luat_mymath:342,luat_newlib2:342,luat_os_get_tim:370,luat_pm_mod:371,luat_pushcwait:343,luat_pushcwait_error:343,luat_rto:342,luat_sfud:279,luat_spi_clos:381,luat_spi_recv:381,luat_spi_send:381,luat_spi_setup:381,luat_spi_t:381,luat_spi_transf:381,luat_struct_map:374,luat_timer_maxid:372,luat_timer_start:372,luat_timer_stop:372,luat_timer_t:[343,372],luat_uart_clos:382,luat_uart_read:382,luat_uart_setup:[279,382],luat_uart_t:382,luat_uart_writ:382,luat_use_adc:387,luat_use_fastlz:342,luat_websocket_p:279,luat_wlan_ap_get_info:383,luat_wlan_ap_get_stainfo:383,luat_wlan_ap_is_act:383,luat_wlan_ap_stop:383,luat_wlan_connect:383,luat_wlan_evt_ap_associ:383,luat_wlan_evt_ap_disassoci:383,luat_wlan_evt_ap_start:383,luat_wlan_evt_ap_stop:383,luat_wlan_evt_readi:383,luat_wlan_evt_scan_don:383,luat_wlan_evt_scan_report:383,luat_wlan_evt_sta_connect:383,luat_wlan_evt_sta_connected_fail:383,luat_wlan_evt_sta_disconnect:383,luat_wlan_get_apnet:383,luat_wlan_get_info:383,luat_wlan_get_powersav:383,luat_wlan_get_rssi:383,luat_wlan_get_stanet:383,luat_wlan_info_t:383,luat_wlan_is_readi:383,luat_wlan_net_t:383,luat_wlan_register_event_handl:383,luat_wlan_scan_with_info:383,luat_wlan_security_open:383,luat_wlan_security_wep_psk:383,luat_wlan_security_wep_shar:383,luat_wlan_security_wpa2_aes_psk:383,luat_wlan_security_wpa2_mixed_psk:383,luat_wlan_security_wpa2_tkip_psk:383,luat_wlan_security_wpa_aes_psk:383,luat_wlan_security_wpa_tkip_psk:383,luat_wlan_security_wps_open:383,luat_wlan_security_wps_secur:383,luat_wlan_set_apnet:383,luat_wlan_set_powersav:383,luat_wlan_set_stanet:383,luat_wlan_start_ap:383,luat_wlan_unregister_event_handl:383,luat_xxx:362,luat_xxx_freerto:362,luat_xxx_rtt:362,luatask:[175,217,220,409,417],luatcommun:[224,236,244,246,257,260,267,278,334,335,337,358],luatgpiopin:370,luatgpiopul:370,luatid:[306,312,386,391],luato:[7,11,12,32,38,75,82,84,89,101,107,108,121,124,131,145,170,171,173,174,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,218,219,221,222,226,228,229,231,233,234,236,239,240,242,246,247,253,254,256,265,267,268,270,274,276,277,278,280,281,283,286,287,290,291,292,294,306,307,311,315,316,317,318,319,322,323,326,329,330,331,332,333,339,341,342,343,349,351,352,353,354,355,356,357,358,359,360,361,363,376,384,385,387,388,389,390,392,393,394,395,400,413,418,420,422,429,430,431,432,435,438,443],luatool:[66,115,215,220,229,243,265,266,269,280,281,284,286,289,295,306,312,322,331,342,356,357,359,365,386,391,394,421],luatos1234:141,luatos_0022eecc2399:141,luatos_:[118,141],luatos_esp32:394,luatos_root:359,luatos_vers:118,luavm:[2,12,104,118,339,360,361],luiz:415,lure:400,lux:[87,91],lux_dat:87,luxuri:312,lv:169,lv_anim_path_t:101,lv_at:169,lv_conf:169,lv_draw_mask_fade_param_t:101,lv_draw_mask_line_param_t:101,lv_draw_mask_radius_param_t:101,lv_font:169,lv_font_:169,lv_font_conv:169,lv_font_declar:169,lv_font_dejavu_16_persian_hebrew:169,lv_font_montserrat_10:169,lv_font_montserrat_12:169,lv_font_montserrat_12_subpx:169,lv_font_montserrat_14:169,lv_font_montserrat_16:169,lv_font_montserrat_18:169,lv_font_montserrat_20:169,lv_font_montserrat_22:169,lv_font_montserrat_24:169,lv_font_montserrat_26:169,lv_font_montserrat_28:169,lv_font_montserrat_28_compress:169,lv_font_montserrat_30:169,lv_font_montserrat_32:169,lv_font_montserrat_34:169,lv_font_montserrat_36:169,lv_font_montserrat_38:169,lv_font_montserrat_40:169,lv_font_montserrat_42:169,lv_font_montserrat_44:169,lv_font_montserrat_46:169,lv_font_montserrat_48:169,lv_font_montserrat_8:169,lv_font_opposans_m_10:169,lv_font_opposans_m_12:169,lv_font_opposans_m_14:169,lv_font_opposans_m_16:169,lv_font_opposans_m_18:169,lv_font_opposans_m_20:169,lv_font_opposans_m_22:169,lv_font_opposans_m_8:169,lv_font_simsun_16_cjk:169,lv_font_simsun_48:169,lv_font_t:169,lv_font_unscii_16:169,lv_font_unscii_8:169,lv_obj_t:101,lv_scr_load_anim:101,lv_scr_load_anim_t:101,lvgl:[16,31,129,145,219,232,279,280,285,292,296,322,333,352,378,441],lvglfonttool:169,lvl:415,lwip:[124,279,370],lwip_ap:124,lwip_eth:124,lwip_gp:[124,131],lwip_sta:124,lx7:312,ly:400,ly_key_ent:169,m0:[219,226,336,337],m1:81,m33:[219,251,258,304],m3:[263,304,305],m4f:[304,305],m52:289,m85:258,m:[31,41,52,108,169,172,175,179,229,289,317,414],m_cannot:415,ma:[246,412],mac:[31,82,265,266,268,308,322,383,396,400,401,412,415],machin:[31,48,62,118,129,181,182,183,215,220,225,232,237,243,245,254,266,269,271,279,283,284,294,295,310,315,322,331,341,342,348,352,353,356,357,359,362,364,367,368,369,374,386,388,390,391,400,412,414,415],maco:365,macosx:357,macro:[225,322,341,342,387,415],made:[106,116,169,173,220,228,279,321,341,387,393,400,415,417],mag:47,magic:[222,256,258,271,338,378,385,415],magna:169,magnet:41,magnetic_track_degre:41,magnif:[105,415],magnitud:414,mai:[2,6,8,28,33,38,103,106,110,112,120,130,135,141,144,169,218,221,226,228,229,246,258,263,266,279,291,292,318,349,362,367,369,372,387,398,400,403,409,412,414,415],mailbox:[263,279],main:[7,15,18,19,28,41,64,75,82,98,103,130,132,169,185,187,191,197,215,216,217,219,220,221,225,232,237,245,246,256,261,262,266,277,278,279,280,285,286,296,306,308,310,321,322,326,330,331,338,339,340,342,343,350,352,353,359,360,361,371,381,391,395,415,416,417,418,430],main_ct:284,main_dcd:284,main_dtr:295,main_ri:[276,284,295],main_rx:[284,295],main_rxd:284,main_tx:[284,295],main_uart:295,mainli:[2,12,116,124,204,205,206,222,256,271,280,315,338,362,365,412,415,427],mainstream:[261,262,270],maintain:[22,112,169,219,246,263,284,292,295,415],mainten:258,major:[107,118,169,357,396],major_tick_len:169,make:[5,37,101,106,112,126,144,169,186,193,194,195,216,219,220,228,243,258,266,271,339,342,349,360,366,386,388,390,403,414,415,417],makefil:354,malici:415,mall:[226,233,239,262,337,396,412,420],malloc:[342,370,415],man:420,manag:[31,129,169,175,215,220,221,243,261,286,306,315,322,328,342,344,345,349,350,363,376,377,379,381,382,384,400,403,417,421],mandarin:289,mandatori:[104,107],mani:[6,24,32,33,34,41,120,124,128,136,169,220,228,229,246,258,263,266,277,279,284,289,306,316,322,342,343,344,358,362,366,378,383,388,390,391,395,414,415,416],manipul:[31,129,169,415],manner:[3,398,415],manpow:269,manual:[2,12,22,25,62,103,108,112,126,145,170,175,177,181,182,183,185,194,207,211,212,213,215,216,220,225,226,231,232,236,241,244,261,262,263,266,267,271,277,278,279,284,304,306,312,322,336,337,352,353,359,375,382,387,394,395,396,400,409,414,417,418],manual_v1:267,manufactur:[185,199,200,201,207,216,220,228,229,246,370,386,403],maopi:120,map0:378,map1:378,map:[10,27,31,41,44,103,125,129,131,169,205,220,232,237,254,268,274,277,278,279,284,295,322,340,378,400,415],map_typ:378,march:[141,169],margin:169,mark:[110,144,169,263,278,289,340,386,414,415,418],markdown:169,marker:[110,415],market:[261,262,263,391],mask:[31,37,39,61,72,124,138,141,145,170,175,279,292,365,383],mask_p:169,mask_param:169,maskabl:263,mass:[64,66,229,283,322,414],massiv:409,master:[29,38,75,126,135,181,182,183,203,220,222,228,229,246,251,261,271,280,306,322,337,350,352,353,356,357,359,381,386,387,391,406,413,422,432,435,438],match:[78,123,175,177,210,211,212,213,220,228,265,266,277,284,295,321,322,356,357,398,403,419],materi:[277,332],material_dark:101,material_light:101,material_no_focu:101,material_no_transit:101,math:[175,414],mathemat:[175,414],matic:169,matrix:[31,105,129,131,145,170,179,366],matter:[218,266,283,322,414,415],max30102:[31,129],max31856:61,max31856_spi_devic:71,max:[15,29,31,169,175,222,226,258,414],max_char_num:169,max_conn:141,max_h:169,max_temp:31,max_tick:31,maxbuff:382,maxim:[8,75],maximum:[12,13,17,22,32,33,66,85,101,105,106,112,116,118,133,136,137,138,141,145,170,188,189,190,193,204,205,206,219,220,246,265,266,270,279,289,292,322,336,337,381,396,401,407,409,414,415,417,418],maxinteg:175,maxout:31,maxsiz:31,mbedtl:124,mbedtls_ssl_conf_handshake_timeout:279,mbox1:169,mbox:169,mbox_set_anim_tim:169,mbox_stop_auto_clos:169,mbp:[251,331],mc68hcxx:[204,205,206],mcc:106,mco:[261,262,322],mco_plldiv:259,mcp25125:280,mcp2515:61,mcp2515_c:72,mcp2515_int:72,mcp2515_spi:72,mcpwm:312,mcu:[12,31,33,72,82,93,106,108,124,129,136,138,172,185,188,189,190,192,209,216,220,221,225,229,232,233,239,246,258,263,279,284,291,292,295,331,337,367,371,386,387,395],mcu_font:169,mcuisp:263,md5:[31,34,178,217,304,385],md5_stream:8,md:[31,350,356,357],md_file:31,md_sha1:116,md_sha256:116,mdeb:258,mdelai:[31,209],mdh201808109:[231,236],mdk5:[222,256,338],mdk:[225,226,257,258,322],me:[215,220,269,442],meal:289,mean:[2,14,17,19,33,38,64,76,103,106,120,123,124,126,127,132,136,144,169,178,181,182,183,222,263,266,276,277,278,284,295,316,317,322,330,351,365,388,389,394,403,412,414,415,417],meaning:[64,111,124,141,372,415],meaningless:[64,106,284,295],meanwhil:365,measur:[0,31,38,57,93,102,106,129,177,184,185,216,220,228,229,271,277,294,322,366,372,396,398,401,403,406,407,415],measuring_long:57,measuring_short:57,measuring_time_1:57,measuring_time_3:57,mechan:[19,107,118,132,133,140,175,209,220,228,263,269,280,364,367,368,369,371,372,373,379,412,415,416],media:[292,297],medium:[57,193,194,195],meet:[107,220,228,229,258,266,270,277,280,284,331,344,378,396,406,412,414,415,417],megabyt:322,melon:169,mem:[118,368],member:415,memcmp:144,memcpi:144,meminfo:[31,179,339,360,361],memori:[6,10,13,16,31,32,38,89,90,101,104,118,124,126,129,135,169,199,200,201,219,220,228,255,258,263,265,275,279,285,292,296,337,339,341,342,360,361,362,363,369,371,373,376,378,384,386,391,395,409,414,415],memset:144,mention:[220,228,263,369,409,414,415,417],menu:[115,218,222,256,266,269,280,281,338,357,358,359],menuconfig:307,merg:[10,123,144,145,170,279],messag:[2,28,36,48,59,62,66,67,72,106,107,111,118,123,124,126,130,132,133,140,141,145,170,175,185,187,209,216,219,220,228,258,261,279,292,322,363,364,370,372,375,376,384,387,388,390,409,416,417,418],messagequeu:417,met:[78,365,414,415],meta:[107,123,175,350,375,414],metabl:415,metadata:[31,107,123,129],metat:175,meter:[41,47,145,170,320,396,400,401,412,414],method:[2,4,5,14,20,21,22,27,29,31,59,76,101,107,115,120,126,130,133,136,140,169,172,175,178,180,209,211,212,213,220,222,228,246,256,257,258,261,262,271,277,279,291,292,306,317,318,319,322,328,338,341,342,343,351,356,357,358,363,366,368,369,370,375,376,382,384,387,388,389,394,398,400,414,416,417,418],method_:415,metr:41,mg:74,mhz:[31,169,219,246],mic:[2,291,293],micro:[318,334,335,337],microchip:336,microcomput:416,microcontrol:[75,169,246,263,417],microphon:293,microprocessor:[193,194,195],micropython:169,microsecond:103,microsoft:[218,256,262,306,312,338,365,400,409],micvol:31,middl:[11,38,135,169,218,257,289,341,409,415],middlewar:[376,377,384],midlin:169,mifi:315,might:[169,415],migrat:[259,263,415],mile:41,million:103,millisecond:[22,64,65,66,76,82,103,106,112,118,124,130,139,169,181,182,183,265,279,289,372,418],millivolt:[11,112],min:[41,78,108,117,169,175,197,220,406,414],min_temp:31,mingw32:339,mingw64:339,mini:263,miniatur:270,minim:[169,409],minimum:[13,33,105,106,135,169,220,222,232,246,279,322,359,395,406,409,415],mininteg:175,miniz:[13,31,129,279,292,297],minor_tick_len:169,minu:[31,32,64,169,415],minut:[12,26,41,64,78,82,112,141,192,197,217,219,220,280,292,310,316,317,318,322,372,417],minute_offset:41,mipp:396,mirror:[145,170,421],misalign:263,miscellan:414,miso:[31,75,220,228,284],misrecogn:[398,403,412],miss:[218,219,256,342,356,415],mission:68,misspel:342,mistak:136,mistakenli:412,mix:[106,121,141,169,251,415],mkd:20,mkdir:31,mkf:31,mlx90614:[28,61,279],mlx90614_ambient:73,mlx90640:[31,129],mm:93,mmm:41,mnc:106,mo:[169,412],mobil:[31,34,62,64,65,76,112,123,124,129,169,219,265,276,277,279,280,285,296,315,316,320,395,396,398,403],mock:349,mod:415,mod_typ:177,modbu:[8,110,363,376,384],modbus_slav:374,modbus_t:374,mode2:31,mode:[2,11,24,25,26,31,33,34,35,36,38,46,61,71,73,75,76,84,98,101,104,107,118,119,120,124,128,136,145,170,172,175,179,192,199,200,201,204,205,206,215,217,219,220,222,228,229,234,240,246,251,257,261,262,268,270,278,279,280,283,284,285,287,292,295,296,306,308,312,317,322,328,337,358,365,371,378,379,381,383,394,396,400,406,417],mode_i2:29,mode_key_input:90,mode_led_output:90,mode_lsb:29,mode_msb:29,mode_norm:169,mode_rx:85,mode_tx:85,model:[23,28,31,75,99,100,101,112,118,120,126,145,170,204,205,206,215,220,222,228,261,262,263,277,280,294,306,312,320,321,322,359,395,406,412,430,441],model_1in02d:11,model_1in54:[11,430],model_1in54_v2:11,model_1in54_v3:11,model_1in54b:11,model_1in54b_v2:11,model_1in54c:11,model_1in54r:11,model_2in13:11,model_2in13_v2:11,model_2in13bc:11,model_2in13d:11,model_2in54b_v3:11,model_2in66:11,model_2in66b:11,model_2in7:11,model_2in7b:11,model_2in9:11,model_2in9_v2:11,model_2in9b_v3:11,model_2in9bc:11,model_2in9d:11,model_3in52:11,model_3in7:11,model_3in7_u:11,model_4:11,model_4in2:11,model_4in2b_v2:11,model_4in2bc:11,model_4in2v2:11,model_5in65f:11,model_5in83:11,model_5in83_v2:11,model_5in83b_v2:11,model_5in83bc:11,model_7in5:11,model_7in5_hd:11,model_7in5_v2:11,model_7in5b_hd:11,model_7in5b_v2:11,model_7in5bc:11,moder:414,modf:175,modif:[169,263,279,370,415],modifi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,185,186,215,216,225,261,266,279,284,295,322,340,341,342,347,351,356,357,359,367,387,388,390,394,412,414,415],modnam:175,modul:[0,1,14,22,24,25,31,32,39,41,61,75,76,84,103,106,107,108,112,115,117,123,124,129,132,141,169,175,178,192,193,194,195,210,211,212,213,215,216,220,226,228,229,231,232,236,237,245,251,253,254,259,261,268,271,274,278,279,281,282,283,284,286,293,294,295,298,305,307,315,316,317,318,319,320,322,323,336,342,356,357,365,367,369,370,384,387,391,395,396,417,418,421,434,440],moduledemo:[222,259],modulo_264_:415,modulu:415,mold:[11,135,279],mollit:169,moment:[105,415],mon:[78,108,117,197,220,279],monei:266,monetari:415,monitor:[107,219,221,421],monkei:414,mono:[101,279],mono_l:29,mono_r:29,monochrom:[11,169],monospac:[169,218],month:[41,64,78,145,170,197,220,414,415],month_names_arrai:169,montserrat:169,montserrat_14:169,more:[0,2,6,7,12,25,29,33,40,41,82,103,104,106,124,141,169,181,182,183,188,189,190,215,219,220,226,228,229,258,262,263,265,268,277,279,280,282,290,292,293,316,321,322,340,342,343,356,357,358,365,370,383,387,391,393,394,395,396,398,403,406,407,409,412,414,415,417,419],more_a_:415,more_data:2,morn:414,mosi:[31,220,228],most:[7,26,27,112,124,136,139,169,197,209,210,211,212,213,220,228,263,266,280,320,339,342,349,363,370,376,384,391,403,412,413,414,415,417],mostli:[124,169],mother:[221,222],motion:219,motiv:[363,376,384],moto6800:312,motor:322,motorola:[204,205,206],moun:[199,200,201],mount:[31,32,60,118,119,137,173,185,198,202,216,220,228,279,306,367,391,396],mount_flash:[199,200,201],mount_point:31,mous:[169,322,409],mouth:[258,398,403],move:[32,103,112,126,136,137,144,145,170,175,211,212,213,263,373,409,412,414],movement:[169,219],mp3:[2,6,279,280,285,289,292,296,297],mp4:173,mpram:219,mpu6050:61,mpu6500:61,mpu6xxx:61,mpu9250:[61,279],mpu:251,mqtt:[31,34,48,62,82,129,279,280,285,287,292,296,297,333],mqtt_client:107,mqtt_isssl:48,mqtt_port:48,mqtt_sent:107,mqtt_state_connect:107,mqtt_state_disconnect:107,mqtt_state_error:107,mqtt_state_readi:107,mqttc:31,mqttconnect:[279,292],mr122:6,mr475:6,ms:[14,26,31,62,99,100,106,107,124,133,140,222,289,417],ms_h:103,ms_l:103,msb:[4,11,29,38,71,72,75,81,84,85,97,100,122,126,136,173,186,199,200,201,203,204,205,206,220,228,381,382,387],msc:258,msdbox:[145,170],msdbox_demo:169,msg:[2,31,75,132,140,341,343,363,369,376,384,415,417],msg_gpio:369,msg_timer:417,msgbox:169,msgbox_:169,msgbox_add_btn:169,msgbox_creat:169,msgbox_get_active_btn_text:169,msgbox_part_btn:169,msgbox_part_btn_bg:169,msgbox_part_main:169,msgbox_set_text:169,msgbu:[343,363,376,384],msgbuf_send:369,msgbus_clear:369,msgbus_current_s:369,msgbus_list:369,msgdata:[364,369],msgh:175,msgid:[31,118,369],msgtype:[364,369],msp:263,mspinit:263,msy:339,mu1:61,mu:22,much:[13,24,124,169,220,228,279,280,292,316,357,370,398,403,412,414,415,417],muid:31,muldownload:286,multi:[11,31,75,101,115,129,131,169,217,219,226,246,270,279,322,330,375,387,396,401,406,415,417],multimedia:[5,29,31,129],multimedia_id:[2,31],multimet:[229,396],multipart:59,multipl:[0,2,3,5,29,38,105,106,107,109,112,119,124,135,144,169,220,221,234,240,246,262,263,270,279,283,284,289,295,322,331,337,340,371,378,386,387,391,392,409,415,416,417],multiplex:[22,103,220,246,259,262,263,271,277,278,279,283,294,304,306,312,322],multipli:[251,415],multitask:[331,343,419],multithread:417,multithreading_:415,music:101,must:[3,4,5,6,14,17,21,22,28,29,32,33,64,66,67,75,78,81,82,84,92,98,103,105,106,107,109,113,118,119,124,130,138,141,169,177,210,211,212,213,215,218,220,228,229,231,236,246,262,263,266,267,271,276,280,284,286,289,295,306,312,340,341,342,349,352,353,356,357,359,362,369,370,375,387,394,398,400,403,415,416,417],must_mark_it:415,mutat:[229,412],mute:[283,322],mutex:[279,292],mutual:[363,376,384],mux:43,mv:[0,43,177],mwsy:173,my:[141,169,220,228,268,322,357,396],my_img:169,my_ir_cb:75,my_map:169,myabc:340,myap:141,myapi:[280,341],myblib:343,myctx:343,myctx_t:343,mydevic:34,myfil:391,myflib:340,myfont:350,myfontd:169,myfunc:[340,350],myid:340,mykei:340,mykv:19,mylib:343,mymath:342,myplu:342,myself:[229,258],myserv:280,mytabl:19,mytim:31,n123:415,n1:[175,289,414],n2:[175,414],n60:169,n:[22,28,31,41,78,81,101,103,107,110,120,124,128,130,136,137,140,169,175,211,212,213,221,234,240,270,277,289,291,317,318,347,357,373,414,416,417],n_refer:415,na:246,nabc:128,name:[2,4,5,8,11,12,19,20,24,26,31,34,48,61,64,65,68,97,106,107,112,113,122,123,124,129,132,136,141,145,170,175,180,204,205,206,210,211,212,213,218,220,222,228,231,236,246,253,256,258,267,268,273,279,280,284,291,295,306,307,312,316,322,326,338,341,342,343,348,350,352,353,356,357,358,359,367,375,384,385,386,391,394,412,414,418,421],name_font:358,name_wil:415,namelist:415,namespac:350,namewhat:415,namework:415,nan:415,narg:415,narr:415,nation:[31,129,262,279],nativ:[32,108,141,220,228,339,361,367,395,415],natur:[169,266,414,415],navig:[145,170,294,322,341],nb:[6,255],nbiot:[304,395],nc:[246,306,331],ndelai:124,nearbi:[228,320],nearest:[169,415],nec:[35,61,380],necessari:[2,38,103,111,118,140,144,225,229,258,263,277,316,322,340,341,344,362,386,398,403,412,414,415],necessarili:[112,131,364,414,415],necir:61,need:[0,2,3,4,6,7,8,11,13,14,16,22,23,25,26,28,29,31,32,34,36,37,38,40,41,42,44,45,47,48,49,50,51,52,53,54,56,57,60,62,63,64,65,66,67,69,71,72,74,75,76,77,79,80,81,82,83,85,86,87,88,91,93,94,95,96,101,103,106,107,111,112,113,121,123,124,125,126,131,132,134,135,136,138,141,143,169,173,179,181,182,183,188,189,199,200,201,204,205,206,215,218,220,222,226,228,229,246,256,258,259,262,263,265,266,270,277,278,279,280,281,284,291,292,293,295,306,307,312,315,316,317,318,320,321,330,331,338,341,342,343,349,351,352,353,356,357,358,362,363,365,366,374,375,376,377,378,380,384,387,391,394,395,398,400,403,406,409,412,414,415,416,418,420,421],need_ipv6_dn:31,needl:[145,170,312],needle_color:169,needle_id:169,needle_num:169,neg:[38,41,89,90,103,169,267,293,387,398,403,412,414,415,417],neither:415,nest:[337,374,415],net:[106,169,271,383,409],net_l:253,net_readi:130,net_status_ind:[417,418],netc:[31,40,61],netcom:[285,296],netl:[61,284,295],netlab:124,netmask:[31,383],network:[26,31,34,59,61,64,65,68,82,92,107,112,129,131,138,141,143,178,219,265,269,271,276,277,279,280,283,284,285,292,295,296,297,315,316,320,322,356,357,363,369,372,376,383,384,415,419],network_check_period:31,network_ctrl:124,network_force_close_socket:279,never:[169,193,194,195,364,415],nevertheless:415,new_apn_nam:31,new_data:137,new_nam:31,new_netc:124,new_param:169,new_path:31,new_scr:101,new_valu:169,newcnt:263,newer:169,newindex:415,newli:[277,415],newlin:[169,414,415],newnam:175,next:[14,15,31,33,124,143,169,175,218,220,228,256,263,279,280,315,342,365,398,400,413,414,416,417,442],next_id:31,nexti:392,nfc:219,nic:124,nice:169,nightli:221,nil:[0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,19,20,21,22,24,25,26,27,28,29,30,32,34,36,38,40,41,42,43,46,48,49,50,51,59,64,65,66,67,72,75,76,77,78,81,82,85,92,97,98,100,101,102,104,105,106,107,108,109,112,113,114,115,116,117,118,119,120,121,122,123,124,126,127,130,131,132,133,134,135,136,137,138,140,142,144,169,180,217,220,228,295,343,383,387,415,416,417,418],nimbl:[265,333],nine:61,nisi:169,nline2:169,nline4:169,nmea:[31,129,279,292,317],nmi_handl:222,nmo:75,no_autoat:[225,322],no_error:143,no_n:415,no_readi:137,noclear:31,node:263,nodebug:82,nodej:169,nois:[41,106],nojtag:263,nomin:[316,401,412],non:[8,19,21,28,38,40,41,61,75,82,103,106,107,115,124,126,130,132,135,136,169,199,200,201,219,261,278,279,280,284,295,315,317,322,342,343,344,350,374,382,387,396,403,414,415],nondeterministic_parsing_flag:104,none:[0,1,2,3,5,6,7,8,11,13,14,15,17,19,20,21,22,24,27,29,30,32,33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,60,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,105,106,107,108,109,112,113,115,117,118,119,120,122,123,124,125,128,130,131,132,135,136,137,138,139,140,141,142,143,144,169,179,211,212,213,262,284,356,357,366,380,382,387,394,415,417,418],nonsens:217,noop:20,nop:[31,120],nor:[112,287,415],nordi:131,norm:229,normal:[4,10,22,59,72,99,100,106,107,112,135,140,141,169,199,200,201,210,211,212,213,215,218,220,221,226,228,229,234,240,243,246,256,258,263,277,278,279,284,290,295,306,307,312,315,316,317,318,337,338,342,343,352,353,356,403,409,412,414,415,417,429,430],north:41,norun:326,nostrud:169,notat:415,note:[0,2,11,12,13,14,19,22,28,29,31,32,38,41,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,66,69,71,72,74,76,77,78,79,80,81,82,83,85,86,87,88,91,93,94,95,96,103,106,108,112,113,115,116,117,123,124,126,130,132,135,137,141,143,144,169,177,181,182,183,210,222,228,233,235,236,237,239,242,243,246,263,266,268,280,283,285,286,289,294,296,298,306,310,312,318,322,326,330,333,338,341,342,343,349,352,353,356,357,358,359,364,365,373,374,387,388,390,392,394,396,398,409,414,415,417,430,441],noth:[118,343,368,396,415],notic:169,notif:[124,271,337],notifi:[107,169,258,266],novel:419,novemb:[169,220],now:[139,169,331,342,344,373,413,414,415,417],nparam:415,npm:169,npn:[199,200,201],nr:41,nrec:415,nresult:415,nrst:263,nsec:169,nsecond:169,nsize:[368,370,387,415],nstinput:31,nstonoff:31,nstr:263,nth:110,nthird:169,ntp1:124,ntp2:124,ntp:[124,277,279,285,292,296,297,316],ntp_error:124,ntp_updat:[124,277],ntptm:[31,279],ntrip:[320,393],nulla:169,num:[31,61,123,169,383,414],num_channel:[6,31],num_table_ax:[89,90],num_tick_mark:169,numa:392,numb:392,number:[0,1,2,3,4,6,8,9,11,12,14,15,18,19,20,22,24,25,27,28,29,30,31,32,33,34,35,36,38,39,41,42,43,44,45,47,48,49,51,53,54,55,56,57,59,60,62,63,64,65,66,67,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,105,107,110,111,112,114,116,118,120,122,123,124,126,127,128,131,132,135,136,137,138,140,141,144,145,170,179,180,185,186,187,191,215,216,220,228,231,236,238,246,253,263,266,267,271,273,277,279,280,283,284,286,295,304,306,312,317,318,322,341,342,356,357,362,365,372,373,378,380,381,383,385,386,387,392,394,396,412,415,416,417,418,429],number_:415,numbl:64,numer:[22,34,98,108,112,135,169,286,289,364,369,372,392,414,415],nup:415,nv3037:293,nvic:337,nvm:[322,386],nvm_addr:386,nxp:78,nyou:169,o1:289,o2:7,o3:[7,305],o:[4,33,169,225,246,289,322,360,398,403,414,415],obj:[31,145,170,175],obj_add_styl:169,obj_align:[101,169,220,228],obj_align_origo:169,obj_clean:169,obj_creat:[101,169,220,228],obj_del:169,obj_get_height:169,obj_get_st:169,obj_get_width:169,obj_l:169,obj_part_main:169,obj_set_adv_hittest:169,obj_set_auto_realign:169,obj_set_click:169,obj_set_drag:169,obj_set_event_cb:[31,169],obj_set_height:169,obj_set_po:169,obj_set_s:169,obj_set_signal_cb:31,obj_set_style_local_bg_color:169,obj_set_style_local_text_font:169,obj_set_style_local_value_str:169,obj_set_width:169,obj_xxx:169,object:[25,28,36,38,62,73,78,97,100,101,105,122,126,130,136,137,144,145,170,175,199,200,201,211,212,213,220,228,317,369,388,390,414,417],object_:415,objects_:415,objmask:[145,170],objmask_add_mask:169,objmask_cr:169,objmask_demo:169,objmask_mask_t:169,objmask_part_bg:169,objmask_remove_mask:169,objmask_update_mask:169,observ:[136,177,220,221,228,229,342],obsolet:[31,129,415],obtain:[1,8,15,17,18,19,22,29,34,41,47,48,54,58,60,64,74,82,96,101,102,103,105,106,108,110,111,120,122,124,136,138,141,144,169,185,191,202,215,216,219,220,228,263,265,266,279,283,286,306,316,320,322,343,349,366,367,383,394,400,414,415,417,418],obviou:306,obvious:[172,414,417],occaecat:169,occas:[322,412],occasion:415,occup:358,occupi:[16,124,126,229,277,306,312,391,415],occur:[2,124,229,263,279,400,412,415,417],occurr:415,octal:414,octob:[21,141,169],octuari:415,odd:[136,382,414],oe:84,of_ex_:415,of_intermitt:415,of_set_:415,of_step:415,of_templates_separ:415,off:[0,1,2,5,7,9,12,22,25,28,30,31,33,41,61,78,81,82,89,90,106,107,112,114,118,124,130,131,134,135,136,137,139,141,169,177,185,192,207,215,216,220,228,245,258,261,277,279,284,295,315,317,318,321,322,337,338,363,365,376,379,380,384,396,398,403,409,415,418],offend:169,offici:[7,34,84,89,103,169,215,216,218,220,228,255,258,285,292,296,306,320,332,339,356,357,400,415,420],officia:169,offlin:[124,169,261,289,322,356,359],offset:[21,31,38,41,120,124,135,145,170,175,229,246,279,331,367,373,386],often:[178,414,415],ohm:246,ok:[8,27,28,41,98,101,102,105,112,124,126,169,199,200,201,256,258,341,342,343,356,357,358,362,373,375,382,394,398,403,414,415],okai:169,ol:179,old:[12,21,34,99,103,112,124,144,169,220,228,266,277,279,281,319,322,415],old_mqtt:34,old_path:31,oldnam:175,om:169,omit:[343,374,378,414],on_lin:[124,279],on_off:31,onboard:[219,220,228,270,306,312,429],onc:[12,22,35,43,57,82,109,112,113,131,139,169,220,221,263,306,316,317,318,357,372,414,415,416,417],onchip:121,onchip_fdb:[15,180],one:[0,3,5,17,22,29,48,57,62,75,82,84,101,107,123,124,131,136,137,144,169,172,177,199,200,201,204,205,206,208,210,211,212,213,215,220,225,228,229,255,258,261,266,270,271,277,278,279,284,289,292,295,304,306,307,312,322,326,340,341,342,349,351,364,385,387,398,400,412,414,415,417,418],one_and_zero:8,onenet:[31,61,98,156,279,393],onenetcor:[320,393],ones:306,oneself:258,oneshot:71,onff:31,onheap:31,onlevel:31,onli:[0,2,3,4,5,6,11,12,13,14,15,17,19,20,22,23,28,29,32,33,35,36,38,39,41,62,64,65,68,74,75,76,78,82,93,101,103,104,106,107,108,109,110,111,112,113,115,116,117,118,119,121,123,124,126,128,130,135,136,137,138,140,141,144,145,170,177,181,182,183,190,199,200,201,203,204,205,206,215,220,222,228,229,231,236,241,246,258,261,266,267,269,271,276,277,278,279,280,284,285,286,289,295,296,306,312,315,317,320,321,322,323,331,333,340,341,342,343,344,356,357,362,365,368,369,370,371,374,378,380,385,387,391,394,400,403,406,409,414,415,416,417,418,423,429],onlin:[124,169,220,280,352,353,359,428],only_i:31,only_references_to:415,onoff:[2,31],onto:[362,415],onus:62,op:[412,415],opa_30:169,opa_cov:169,opa_transp:169,opac:169,opaqu:415,opcod:140,open:[1,12,14,20,22,26,29,31,32,34,41,46,59,61,75,78,81,99,100,103,106,107,112,115,119,124,140,145,170,173,175,177,193,194,195,199,200,201,215,218,219,220,221,222,228,229,243,246,259,261,279,280,285,286,291,292,296,306,312,315,316,317,322,332,337,341,342,352,353,356,357,359,379,381,382,383,387,391,396,400,403,406,409,412,413,414,421],openf:415,openluat:[12,38,41,64,65,66,67,82,115,215,222,224,233,236,239,244,246,255,256,257,260,266,267,277,278,280,281,285,289,296,316,317,318,329,334,335,337,341,342,350,351,352,353,355,356,357,358,359,391,420,422,432,435,438],openocd:[261,322],openssl:116,oper:[2,7,12,14,20,31,32,41,81,89,90,101,112,119,124,129,135,144,169,175,188,189,190,192,199,200,201,204,205,206,209,215,218,220,226,228,229,234,240,251,258,263,266,279,289,292,306,312,318,319,322,328,331,337,339,341,342,356,357,363,365,367,369,373,376,384,387,391,392,395,396,398,400,412,413,416,430],operand:415,operson:113,oppo12:16,oppo:169,oppo_8:16,oppo_bold_12:358,oppo_bold_8:16,opposan:169,opposans_m_10:[101,169],opposans_m_12:[101,169],opposans_m_14:169,opposans_m_16:169,opposans_m_18:169,opposans_m_20:169,opposans_m_22:169,opposans_m_8:169,opposansm8_chines:16,opposit:[22,124,136,414,415],opt:[31,61,175],optim:[104,106,265,279,292,323,362,395],option:[2,3,8,11,13,14,15,18,19,21,22,26,28,29,34,35,38,40,41,59,62,64,66,79,84,89,92,101,103,106,107,112,116,124,126,128,130,134,135,136,137,140,141,144,145,170,218,220,225,261,262,271,279,292,321,322,337,339,340,342,348,357,360,361,362,374,381,386,387,394,398,403,414,415,421],optional_a_:415,or_closed_:415,or_closure_:415,or_ful:415,or_numer:415,or_out:415,orang:169,orbit:316,order:[4,38,75,126,169,187,197,220,228,229,258,263,279,306,341,343,344,359,364,365,370,378,381,383,385,387,409,412,413,414,415,416,417,419],ordin:[144,403,409],ordinari:[112,169,229,266,284,295,318,342,343,412,415,429],org:[7,11,38,108,169,172,220,221,228,285,296,331,400,415],organ:[169,391,417],orient:[169,279,352,353,359,415],origin:[0,2,4,6,13,15,19,40,41,104,106,144,169,177,178,262,279,283,306,307,312,322,356,358,365,367,370,386,409,414,415],originstr:31,os:[7,31,32,41,78,117,124,129,131,140,175,179,197,220,339,360,361,370,372,414],osc:246,oscil:[25,103,197,220,222,231,232,236,246,263,322,337],oscilloscop:[136,229],osiz:[368,370,387,415],ota:[62,66,82,118,268,279,283,292,297,322],ota_port:61,ota_url:[61,82,280],ota_vers:82,otf:169,otg:[251,312,400],other:[1,2,4,5,12,14,17,22,23,41,59,61,68,75,82,103,104,106,107,112,114,115,118,124,132,136,137,169,197,199,200,201,204,205,206,219,220,221,222,226,228,229,231,236,246,254,256,257,258,261,265,266,267,269,271,273,277,279,281,284,292,295,306,312,315,317,319,322,331,337,338,340,342,343,344,356,357,359,362,367,370,374,380,383,385,386,387,392,394,396,398,403,412,414,415,416,417,421],otherwis:[2,4,6,8,9,11,12,13,14,15,16,18,19,21,22,23,24,27,28,32,34,36,38,39,46,59,62,65,78,82,97,100,101,102,103,104,105,106,107,108,109,112,116,117,119,120,121,122,123,124,126,127,130,132,135,137,139,140,141,143,169,177,210,211,212,213,218,220,226,228,242,263,266,271,277,278,279,317,330,341,343,352,398,400,412,414,415,416,418],otp:[8,31,129,292,304,333],otpdata:109,our:[169,172,220,243,256,338,352,353,357,359,362,414,415],ourselv:414,out0_process:263,out:[12,19,61,75,78,106,116,123,124,126,131,137,144,169,173,177,181,182,183,204,205,206,220,222,228,263,279,290,292,310,312,322,333,343,349,352,353,356,357,362,373,398,403,409,414,415,417,429],out_buff:31,out_mode_queri:57,out_path:31,outbuf:6,outdoor:[219,316],outer:[169,215,415],outermost:364,outlin:169,output:[2,3,4,6,7,9,11,21,22,28,31,37,39,41,57,66,75,77,84,90,93,98,103,106,111,112,114,120,124,125,129,141,144,169,172,175,177,178,185,191,196,199,200,201,216,222,225,229,232,246,261,262,276,277,278,279,284,285,291,295,296,306,312,317,321,322,337,338,349,356,357,362,363,370,374,376,379,380,384,392,396,398,401,403,407,416,417,419,421],output_od:379,outrevers:31,outsid:[169,215,259,262,279,415],over:[107,112,118,128,169,263,387,414,415],overal:[169,220,228,229,256,257,280,338,342,365,414],overflow:[103,337,352,415],overflow_:415,overlap:415,overli:169,overload:415,overrid:[145,170,415],oversea:221,overshoot:101,overview:[145,170,245,261,322,396,424,431],overwrit:[28,347,415],overwritten:19,own:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,60,65,66,67,92,97,99,100,101,106,107,108,112,113,114,116,117,118,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,215,219,220,268,321,322,338,340,350,380,391,396,412,414,415],owner:400,ownership:[268,322],oxygen:102,p0_1:76,p0_4:76,p100:263,p2000:289,p7zip:360,p:[86,229,246,289,306,414,415],p_index:169,pa00:[56,228],pa01:111,pa04:177,pa06:238,pa07:[22,56,75,238],pa08:238,pa09:238,pa0:[220,228,229,231,246,263,267],pa10:[238,246],pa11:[238,263],pa12:[111,238,263],pa13:[222,226,238],pa14:[222,226,238],pa15:[238,263],pa1:[135,181,182,220,228,229,231,236,246,263,267],pa2:[226,236,246,256,257,263,338],pa3:[226,236,246,256,257,263,338],pa4:[135,181,182,220,228,229,231,236,267],pa5:246,pa6:246,pa7:[22,134,231,246,267],pa8:246,pa9:246,pa:[2,279],pa_00:[236,273],pa_01:[236,273],pa_02:236,pa_03:236,pa_04:[236,273],pa_05:[236,273],pa_06:236,pa_07:[236,241],pa_08:236,pa_09:[236,241],pa_10:[236,241],pa_11:236,pa_12:[236,241],pa_13:236,pa_14:[236,241],pa_15:236,pac:386,pack:[8,31,129,175,217,221,222,256,258,261,279,292,297,322,333,338,373,374,392],packag:[17,24,26,31,66,82,129,173,175,192,218,220,225,232,233,239,245,255,261,263,267,268,270,274,279,283,285,304,318,322,333,336,337,344,345,350,352,353,356,357,358,359,369,370,373,378,385,386,392,394,400,409,412,417,421],package_air_cn_index:221,package_air_index:221,packet:[40,113,124,220,228,271,279,283,286,322,421],packsiz:175,pacman:[352,353],pad12:277,pad28:277,pad:[31,103,112,169,229,267,279,284,295,312,315,415],pad_bottom:169,pad_index:31,pad_inn:169,pad_left:169,pad_right:169,pad_top:169,padaddr:277,padd_inn:169,padd_left:169,padd_right:169,padd_top:169,padding_bottom:169,padding_inn:169,padding_top:169,paddr:[22,103,284,295],padelai:31,page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,204,205,206,215,218,222,235,236,237,239,255,258,261,279,285,296,306,307,322,349,358,387,396,398,400,407,409,413,415,442],page_clean:169,page_cr:169,page_demo:169,page_focu:169,page_get_scrl:169,page_get_width_fit:169,page_glue_obj:169,page_part_bg:169,page_part_scrl:169,page_scroll_hor:169,page_scroll_v:169,page_set_anim_tim:169,page_set_edge_flash:169,page_set_scrl_fit:169,page_set_scrl_fit_height:169,page_set_scrl_fit_width:169,page_set_scrl_height:169,page_set_scrl_layout:169,page_set_scrl_width:169,page_set_scrlbar_mod:169,page_set_scroll_propag:169,pai:[34,66,67,78,124,131,218,220,228,246,258,263,284,286,306,362,391,398,412,429],paid:[220,228,246,256,306,312],paint:[38,144],pair:[15,19,72,82,115,124,141,175,180,279,287,417],palett:[145,170],pan:[265,355],panel:[337,396],panic:415,panicf:415,paper:[11,415,429,431],papin:31,par:169,para:[31,417],paragraph:[135,341],parallel:[312,400],param1:[31,61],param2:31,param:[48,417,418],paramet:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,199,200,201,204,205,206,210,211,212,213,220,228,246,263,268,271,279,280,283,292,305,316,319,322,326,331,341,343,344,349,357,362,365,369,370,374,379,381,382,387,388,390,396,403,407,412,415,416,417,418],parametr:169,paraphras:[417,418],parasit:412,parent:[31,169],parenthes:[304,414,415],parenthesi:415,parenthet:415,pariatur:169,pariti:[136,210,211,212,213,220,228],parlist:415,pars:[6,31,37,104,125,129,131,217,279,292,364,365,380,414,415],parse_zlib_head:104,parser:415,part:[12,38,64,135,144,145,170,179,184,185,191,196,202,207,214,216,217,220,228,242,266,277,279,280,284,289,290,295,343,350,352,362,364,370,374,396,400,403,409,412,414,415,417],parti:[124,169,261,320,322,391,403],partial:[0,11,177,263,279,284,304,333,373],particip:277,particular:[246,414,415],particularli:415,partii:31,partit:[18,31,228,279,298,307,322,386,394],partition_addr:386,partli:414,pascal:415,pass:[2,6,14,17,22,29,38,41,42,44,45,47,48,51,52,53,54,63,64,66,67,69,70,74,75,78,79,80,83,86,87,91,98,99,117,118,123,124,126,130,136,141,169,199,200,201,211,212,213,229,246,284,295,342,343,354,362,364,369,370,372,374,387,392,396,414,415,417],passag:414,passiv:277,passthrough:17,passwd:31,password:[8,26,31,34,66,81,116,124,145,170,243,266,315,383],past:[8,321,341,398],pasv:[279,292],patch:[279,306],path:[4,6,26,31,38,66,94,118,143,169,175,219,222,256,258,265,266,279,331,338,339,342,352,353,356,357,359,360,361,391,394,417],patha:31,pathb:31,pathc:31,pathd:31,patient:[221,266],pattern:[41,116,135,169,175,219],pattern_:415,patters_ref:415,paus:[31,101,112,234,240,365,403],pavlov:[356,357],payload:[31,61,140,279,369],payloadlen:[99,100],pb00:[85,99,228,238],pb01:[33,72,81,85,99,135,228,238],pb02:238,pb03:[75,135,228,238],pb04:[72,81,85,99,135,228,238],pb05:238,pb06:[22,89,90,99,238,271],pb07:[89,90,238,271],pb08:[84,90,228,238],pb09:[84,238,271],pb0:[220,222,228,231,246,256,257,267,338],pb10:[84,228,231,238,263,267,271],pb11:[71,231,238,263,267,271],pb12:[111,238,246,271],pb13:[138,238,246,256,257,271,338],pb14:[238,246,256,257,271,338],pb15:[238,246,271],pb16:[238,271],pb17:238,pb18:238,pb19:[231,267],pb1:[220,228,231,246,267],pb20:[231,267],pb21:238,pb22:238,pb24:238,pb25:238,pb26:238,pb27:238,pb2:[220,228,231,246,267],pb3:[14,173,220,228,231,246,263,267],pb4:[220,228,231,246,267],pb5:[220,228,231,246,267],pb6:[220,228,231,267],pb7:[220,228,231,267],pb8:[228,231,259,267],pb9:[231,259,267],pb:113,pb_00:[236,241],pb_01:[236,241],pb_02:[236,241],pb_03:[236,241],pb_04:[236,241],pb_05:[236,241],pb_06:[220,228,236,241,273],pb_07:[220,228,236,241,273],pb_08:[220,228,236,241,273],pb_09:[220,228,236,241,273],pb_0:221,pb_10:[220,228,236,273],pb_11:[220,228,236,273,306],pb_12:[236,273],pb_13:[236,273],pb_14:[236,273],pb_15:[236,273],pb_16:[236,273],pb_17:[236,273],pb_18:[236,273],pb_19:236,pb_20:236,pb_21:236,pb_22:236,pb_24:236,pb_25:236,pb_26:236,pb_27:236,pbdata:31,pbtxt:113,pc05:102,pc08:138,pc09:138,pc0:[2,177,246],pc12:[173,246],pc13:246,pc14:[173,246],pc15:246,pc1:246,pc3:[242,246],pc4:246,pc5:246,pc6:246,pc7:246,pc8:246,pc9:246,pc:[169,211,212,213,322,326,329,330,395,396,398,400,401,403,406,407,410,412,419],pca9685:61,pcall:175,pcas01:[291,318],pcas04:318,pcb:[204,205,206,224,231,236,241,258,259,262,267,270,278,306,412,428],pcf8563:78,pcf8563t:[61,279],pcf8574:61,pci:31,pclose:370,pcm:[2,6,261,322],pctolcd2002:[11,38,135],pd10:[125,246],pd11:246,pd12:[125,246],pd13:[125,246],pd14:[125,242,246],pd15:[125,242,246],pd1:246,pd2:246,pd3:246,pd6:246,pd7:246,pd8:246,pd9:246,pd:[396,398,401,406,407],pdf:[22,78,169,177,193,194,195,204,205,206,211,212,213,223,224,226,230,231,236,241,242,244,257,260,267,278,295,332,334,335,337,415,426],pdop:41,pe00:125,pe01:125,pe02:125,pe08:173,pe09:173,pe0:246,pe10:246,pe11:246,pe1:246,pe2:246,pe3:246,pe6:[183,246],pe7:[183,246],pe8:246,pe9:246,peach:414,peak:[279,403,409,412],pear:414,peer:124,pelulamu:169,pem:[107,116],pend:[263,378,415,417],pendsv_handl:222,penetr:[82,421],penultim:414,peopl:[258,392,393,414],per:[41,55,82,103,169,185,191,216,279,416,418],percent:[107,394],percentag:[2,118,169,415],percept:415,perfect:[82,169,279,414],perfectli:[218,413],perform:[32,33,76,101,106,112,118,124,215,219,220,229,245,258,261,279,280,284,306,316,322,342,349,352,357,365,372,375,396,403,414,415,416],perhap:[391,414],perimet:414,period:[22,28,31,59,103,106,107,124,132,133,169,209,220,228,229,263,279,284,316,317,318,322,358,409,417],peripher:[103,112,126,145,181,182,183,185,203,207,216,220,225,226,228,245,251,256,261,262,263,270,279,280,285,292,296,297,304,312,322,331,338,339,349,363,376,384,395,419],perisan:169,perman:[26,106,118,229,418],permiss:[266,415],perpendicular:169,perpetu:127,persian:169,persist:358,person:[113,417],perspect:[278,284,295,344],phase:[394,400],phenomena:400,phenomenon:[228,261,322,400,409,412],philip:[181,182,183,220,228],phone:[5,31,106,131,219,265,315,316,396,398,403],photo:4,photograph:[4,424],php:41,phycellid:106,physic:[0,106,115,284,295,306],pi:[175,332],piao:258,pick:[277,409,414],picker:169,pico:332,pictur:[4,38,145,170,218,220,228,266,279,292,350],pid:31,pide:31,pie:[332,396,401,412],piec:[2,122,144,220,228,391,415],pilot:35,pin0:[179,338],pin1:[31,179],pin2:31,pin2pin:443,pin33:22,pin:[2,11,14,17,25,28,31,37,38,46,55,56,61,71,72,75,76,78,81,83,84,85,89,90,99,102,106,121,125,126,129,131,135,136,138,145,170,172,173,179,185,186,207,216,220,221,222,226,228,229,230,232,234,235,237,240,242,245,254,255,256,257,258,261,264,268,270,271,274,276,277,278,279,284,291,292,293,295,310,314,317,322,333,337,338,369,370,379,400,403,430],pin_busi:[31,100],pin_c:[31,100,186],pin_chang:106,pin_clk:31,pin_dat:31,pin_data:31,pin_dc:[31,38,173,186,220,228],pin_dio1:100,pin_dis:106,pin_en:106,pin_pwr:[11,38,173,186,220,228],pin_reset:[31,100],pin_rst:[11,38,173,186,220,228],pin_unblock:106,pin_verifi:106,pin_wr:31,pin_xxxx:106,ping:[99,100,131,289],pinmod:221,pinout:[225,228,232,237,245,261,268,283,322,336],pio:76,pip:306,pipelin:312,piraci:306,pirat:306,pit:[268,322],pivot:169,pivot_i:169,pivot_x:169,pix_fmt:173,pixel:[11,31,38,105,135,169,172,322,373,424],pkcs5:21,pkcs5pad:21,pkcs7:[8,21,178,279],pkg:[317,345,349,350,354,355],pkg_cachedir:357,pkg_installdir:357,pkg_searchdir:357,pkgid:279,pkx:31,pky:31,place:[28,116,135,169,173,187,220,225,228,229,246,258,277,322,342,343,352,353,359,391,398,414,415,429],placehold:[145,170],placement:229,plai:[31,145,174,279,289],plain:[175,289,414],plan:[169,258,263],plat:[354,356,357],plate:[398,412],platform:[2,12,17,20,21,22,31,61,66,67,103,106,107,112,124,129,136,140,145,148,159,165,174,258,263,268,270,279,280,285,286,296,315,322,330,351,357,358,362,363,369,376,377,384,391,393,406,415,416,421],playback:[2,145,279,280,285,296],playstop:31,pld_0204:258,pleas:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,152,169,215,218,220,221,225,228,233,235,236,237,239,241,242,243,246,256,258,262,263,266,269,271,277,279,280,282,283,284,285,293,295,306,307,312,317,318,320,321,322,332,337,338,342,343,349,351,356,357,358,359,388,390,396,398,400,403,407,409,412,414,415,419,420,423,429],pll:[103,246,251,261,262,322],pllclk:259,plot:169,plu:[28,31,169,204,205,206,263,406,414,415,417],plug:[198,215,218,219,220,228,257,261,279,315,322,396],plural:169,pm10:96,pm1:96,pm2:96,pm:[31,117,118,129,185,215,216,220,234,240,277,279,284,292,295,371],pm_mode:31,png:[169,246,279,322,358],pnum:31,po:[169,175,414],point:[3,11,14,22,31,32,36,38,41,81,82,101,105,106,108,129,135,144,145,170,175,199,200,201,215,229,266,271,279,316,317,342,363,376,377,384,409,414,415,442],point_arrai:169,point_cnt:169,point_num:169,point_t:169,pointer:[11,14,15,16,19,23,29,32,38,101,120,126,127,136,137,144,169,199,200,201,211,212,213,342,366,369,370,373,374,378,415],pole:[293,398,403],poli:31,polici:[169,283,322],poll:[279,382],polygon:135,polynomi:[8,262],pong:[107,414],pool:[363,370,376,384],poor:316,pop:[169,258,279,341,349,400,403,409,415],popen:[175,370],popul:[144,368,373,415],popular:400,popup:356,porridg:[258,352,353,359],port:[4,11,14,26,31,38,41,48,57,61,66,72,81,88,94,106,115,120,129,131,143,173,185,186,188,189,210,214,215,216,217,220,222,225,228,229,242,256,257,258,262,269,277,278,279,284,295,306,312,317,318,322,338,342,346,349,352,353,365,381,382,383,387,394,396,398,401,403,406,412,416,421,434,440],portabl:[257,314,322],portal:[215,257,306,312,334],portcon:337,portion:[169,415],posit:[17,25,29,32,38,41,61,64,66,105,110,120,126,127,131,135,136,137,144,145,170,219,222,256,261,267,279,280,283,285,289,292,293,317,318,319,322,338,373,385,387,392,393,398,401,403,409,412,414,415,417,421],posix:[124,360,370,391,415],possibl:[100,107,112,169,198,229,246,258,263,277,279,280,292,316,322,340,341,359,375,398,400,403,412,414,415],post:[26,27,40,59,115,208,220,228,388,390],potenti:415,pour:279,pow:415,power:[0,2,14,17,25,31,57,60,75,99,100,103,106,129,131,135,141,169,172,177,188,189,197,215,220,228,232,237,245,258,263,265,270,271,276,278,279,283,284,291,292,295,304,310,314,317,318,320,321,322,337,349,363,376,377,383,384,395,403,406,409,414,415,421,429],power_kei:246,power_on_delai:31,power_pin:31,powerkei:[112,279],poweroff:[2,279],powersav:31,powershel:[173,356,359],pp:[317,396,401,403,409],ppb:95,ppm:95,ppp:266,pr:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144],practic:[169,220,232,279,322,388,414,415],pram:144,pre:[48,62,216,261,292,322,388,390,415],preamblelen:[99,100],precaut:[115,145,170,261,292,310,322,400],preced:[21,106,112,387,415],precis:[31,36,41,103,169,185,191,197,216,220,229,251,279,308,319,320,322,337,380,396,401,412,415],precompil:[339,415],predefin:[169,415],prefac:415,prefer:[89,124,136,221],preferenti:[306,312],prefilt:169,prefix:[31,169,375,387,415],prefixexp:415,preliminari:416,preload:[169,175],prematur:26,premis:[107,141,400,412],prepar:[13,104,145,156,174,184,185,191,196,202,207,214,215,216,225,232,261,266,283,322,336,343,391,400,414,415],preparatori:[388,390],prepend:415,present:[117,120,169,197,203,220,332,343,362,366,394,415],preset:412,press:[37,52,90,101,112,120,125,131,169,179,186,215,218,220,226,228,246,256,276,277,278,284,306,307,312,315,338,341,400,403,409,415],press_sta:56,pressur:[0,61,120,279,412,415],presuppos:415,prevail:[41,304],prevent:[7,20,61,75,136,177,228,229,246,279,292,362,409,412,415],preview:[31,169,243,396,409],previou:[14,20,28,36,115,141,169,173,175,180,220,225,228,258,266,279,322,342,349,385,412,414],previous:[38,169,180,263,266,279,322,415],price:[169,220,414],primari:[106,169,284,295],primit:[101,415],principl:[169,173,175,210,211,212,213,220,228,320,370,415],print:[3,4,7,18,19,20,21,22,31,34,56,61,66,72,73,79,81,85,98,103,111,113,115,116,118,124,128,130,140,169,173,175,177,178,180,187,190,192,197,203,209,210,211,212,213,215,220,221,228,242,253,269,279,292,306,312,322,323,341,342,343,345,381,382,386,388,390,392,414,416,417],printabl:415,printer:101,printf:[169,221,261,322,414,415],printout:414,prioriti:[59,106,112,118,124,175,222,261,279,322,337,357],privat:[20,26,31,62,66,107,116,124,169,362,370,398,403,412,415],privkei:116,prj:[345,346,348,349],prlh:263,prll:263,pro:[406,409],proactiv:115,probabilist:400,probabl:[112,120,222,261,279,312,315,322,359,398,400],probe:[124,346,415],problem:[26,59,107,108,111,169,215,222,229,256,258,262,263,265,268,269,279,312,322,323,331,338,342,343,344,352,353,358,359,363,370,376,378,384,400,409,414,415,417],proce:[342,415],procedur:[263,279,415,417],proceed:173,process:[2,8,13,14,17,28,31,75,103,104,106,107,112,114,115,118,123,126,128,129,143,169,175,198,199,200,201,209,210,211,212,213,215,219,220,221,228,229,258,263,268,279,281,283,292,322,337,339,342,343,349,363,370,374,375,376,384,387,392,416,417,418,419],processor:[169,204,205,206,226,270,312,364,415],produc:[197,220,336,369,372,412,415],product:[34,48,62,64,66,103,106,145,169,174,229,245,258,266,267,277,281,283,284,295,310,314,321,322,396,406,407,409,414],product_id:[31,62],product_kei:[31,64,266,280],product_secret:62,productkei:[48,61],productsecret:48,produt_id:[31,62],profession:323,profil:[268,322,415],prog:175,program:[108,112,113,169,172,175,185,216,229,242,243,251,255,263,266,268,275,312,315,322,337,341,349,363,376,384,392,394,413,417],program_:415,programm:[169,261,268,322,415],progress:[124,145,170,220,279,304,333,387,394],prohibit:[35,106,229,246,387,398,403,412],proident:169,project:[34,42,50,64,71,77,82,106,148,156,159,165,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,217,218,220,222,243,256,258,259,263,268,280,286,310,315,322,323,331,332,338,342,344,345,354,356,357,386,391,412,416,429,431],project_id:62,project_kei:266,prompt:[11,21,38,111,114,135,169,256,263,266,279,292,306,341,342,347,348,356,359,394,409,415],pronunci:[283,322],proof:258,propag:[145,170,415],proper:414,properli:[169,263,279,281,290,415],properti:[24,38,144,169,258,279,415],proport:169,proportion:169,prosecut:169,protect:[144,172,220,231,236,258,261,267,279,292,315,322,398,415],protobuf:[31,129,279,292],protobuff:[31,129],protoc:113,protocol:[31,41,61,107,120,124,140,181,182,183,204,205,206,210,211,212,213,219,220,228,246,257,266,270,271,279,283,317,318,320,322,337,363,376,380,384,393,394,398,400,403,412,415,421],protocolbuff:113,prototyp:[341,368,370,415],prove:[169,215,400,403],provid:[8,15,19,84,115,135,140,169,178,180,181,182,183,185,197,204,205,206,216,219,229,246,251,254,258,274,277,279,281,283,294,321,322,337,342,343,344,350,352,353,356,359,362,366,367,368,369,370,371,373,379,381,382,383,386,387,391,395,398,400,403,409,412,414,415,417,419],proxi:[10,365],proxy_pac:357,ps:[61,141,270,284,357],ps_max_modem:141,ps_min_modem:141,ps_none:141,pseudo:[106,279,415],psk:[124,287],psm:[106,112,279,421],psram:[118,144,220,251,304,312,331],psram_c:236,psram_clk:236,psram_d0:236,psram_d1:236,psram_d2:236,psram_d3:236,ptr:[343,364,368,369,370,387,415],ptrdiff_t:415,pub:[132,416],puback:107,pubcomp:107,publictimercbfnc:130,publish:[1,28,31,61,126,140,208,220,228,265,279,323,375,384,388,390,416,417],pubout:116,pubrec:107,puc:415,puk:106,pull:[2,14,24,28,31,33,126,131,204,205,206,220,226,228,229,234,240,246,261,262,263,271,279,284,306,312,322,337,379,400,415],pull_mod:31,pulldown:[22,33],pullup:[22,31,33,76,78,82,127,220,228,284,295,370],puls:[31,55,84,193,194,195,220,228,263,284,312],punctiv:263,punctuat:[414,415],purchas:[217,221,222,225,232,237,258,261,274,306,322,336,395,396,412,424,429,431,434,437,440,443],pure:[34,107,135,216,320,362,387,388,390,393,403,406,407,414],purpos:[24,64,75,106,143,169,246,261,312,322,337,387,415],push:[31,107,246,337,341,342,343,362,379,387,415],put:[27,40,106,169,215,220,221,228,279,289,321,341,343,358,359,369,388,390,398,414,415],puya:306,puzzl:358,pw:383,pwb:[306,312],pwd:[20,31],pwk_mode:[112,215,284],pwm00:194,pwm0:[114,193,228,231,246,267],pwm11:[284,295],pwm1:[231,246,267,284,295],pwm22:295,pwm2:[231,246,267],pwm3:[231,246,267,284,295],pwm4:[231,246,267],pwm5:[114,195,246,284,295],pwm6:246,pwm7:246,pwm:[31,33,35,61,103,120,129,172,185,216,232,251,270,278,279,283,285,292,294,296,297,304,306,308,312,322,333,337,380,419],pwm_00:236,pwm_01:236,pwm_02:236,pwm_03:236,pwm_04:236,pwm_10:236,pwm_11:236,pwm_12:236,pwm_13:236,pwm_14:236,pwm_20:236,pwm_21:236,pwm_22:236,pwm_23:236,pwm_24:236,pwm_30:236,pwm_31:236,pwm_32:236,pwm_33:236,pwm_34:236,pwm_captur:114,pwmh:114,pwml:114,pwr:[215,222,276,277,278],pwrkei:[112,276,277,278,284,295,315],pxxx:111,py:[306,307,342,354,359],pyocd:[257,258],python:[306,354],q2:412,q4:357,q:[307,339,415],qa:84,qcloud:31,qfn32:[232,233,304,333],qfn56:[220,239,304,333],qfn88:[246,304],qh:84,qio:306,qmc5883l:61,qmc5883l_data:80,qo:[31,61,279],qos0:107,qos1:107,qos2:[107,279],qq:[113,220,226,233,239,255,358,388,390],qqlb:[320,393],qr:101,qrcode:[31,38,135],qrcode_cr:31,qrcode_delet:31,qrcode_upd:31,qspi:219,quadrant:415,quailti:2,qualcomm:[31,101,129,279,426,431],qualifi:[356,357],qualiti:[2,31,48,106,169,292,306],quantiti:[106,263,304,415],quantity_:415,quantiz:263,quasi:280,queri:[31,32,59,64,75,82,106,185,191,204,205,206,216,277,279,287,292,349,365,368,415,418,421],question:[115,169,258,412,415,420],queu:370,queue:[33,107,118,132,343,364,369,370,417,418],qui:169,quick:[145,170,216,263,279,292,341,350,395],quickli:[104,112,169,179,219,279,395,396,414,415,419],quiescent:337,quit:[228,374],quo:[268,322],quot:[169,343,394,414,415,417],quotat:[414,415],quotient:415,qwer:20,qzss:[277,291,317],r1:169,r:[8,31,41,87,120,128,136,140,169,173,199,200,201,203,220,228,277,291,317,318,375,391,414,415,417],rad:[31,175],radial:169,radian:415,radic:169,radiu:[31,38,135,144,169],radius_circl:169,rais:279,ram:[6,14,103,112,144,169,219,226,234,240,246,258,261,262,279,304,386,391,395],ramrun:394,random:[8,175],randomli:107,randomse:175,rang:[31,61,77,103,106,107,112,134,135,144,145,170,177,193,220,228,229,242,246,263,279,287,289,320,337,400,401,403,406,409,412,414,415],rank:[187,415],rapid:[169,383,388,390],rapidli:400,rar:337,rare:229,raspberri:[169,332],rate:[14,24,29,31,39,72,94,105,115,126,129,136,172,188,189,210,211,212,213,215,219,220,222,228,229,233,239,242,251,259,262,265,269,270,271,277,279,291,306,312,317,318,331,337,382,386,394,396,401,406,407,409,412,415],rate_:415,rate_and_garbag:415,rather:[266,415],ratio:[13,41,106,135,219],raw:[2,21,41,43,104,120,141,322,387],raw_data:31,raw_point:31,rawdata:31,rawequ:175,rawget:[175,375],rawlen:175,rawset:175,rawvideo:173,rb:[32,173,220,228],rc522:61,rc522_authent1b:81,rc522_bit_fram:81,rc522_com_irq:81,rc522_config_isotyp:61,rc522_fifo_level:81,rc5:380,rc:[25,229],rcc:259,rcc_apb1periph_usb:259,rcc_apb1periphclockcmd:259,rcc_apb2periph_afio:263,rcc_apb2periphclockcmd:263,rcc_clockconfig:259,rcc_mco_hs:259,rcc_mco_hsi:259,rcc_mco_noclock:259,rcc_mco_pllclk_div10:259,rcc_mco_pllclk_div11:259,rcc_mco_pllclk_div12:259,rcc_mco_pllclk_div13:259,rcc_mco_pllclk_div14:259,rcc_mco_pllclk_div15:259,rcc_mco_pllclk_div16:259,rcc_mco_pllclk_div2:259,rcc_mco_pllclk_div3:259,rcc_mco_pllclk_div4:259,rcc_mco_pllclk_div5:259,rcc_mco_pllclk_div6:259,rcc_mco_pllclk_div7:259,rcc_mco_pllclk_div8:259,rcc_mco_pllclk_div9:259,rcc_mco_sysclk:259,rcc_pllcmd:259,rcc_pllmul_27:259,rcc_pllsource_hse_div1:259,rcc_usbclkconfig:259,rcc_usbclksource_pllclk_4div5:259,rclk:61,rcr:31,rd:375,rda8910:365,rddi:[261,322],rdy:[131,136],re:[11,28,31,33,99,100,116,169,199,200,201,204,205,206,208,220,228,258,259,262,263,364,392,400,403,409,414,415],reach:[85,108,118,169,261,401,409,412,414,417],reachabl:415,react:169,read:[2,12,15,17,19,26,28,29,31,32,33,41,42,43,50,51,53,59,61,64,71,75,79,82,99,103,106,108,113,116,117,118,119,120,126,129,137,138,141,143,169,173,175,177,180,184,185,197,198,202,203,207,210,211,212,213,216,217,220,228,261,262,265,266,268,277,279,283,292,308,322,323,356,357,362,364,365,367,370,373,374,379,382,385,387,388,389,392,400,414,417],read_cj_temp:61,read_datablock:61,read_fault:61,read_light:61,read_rawrc:61,read_tc_temp:61,read_tim:61,readabl:[271,391,415],readback:[401,412],readdht12:31,reader:415,readfil:[31,62,107,113,116,199,200,201],readi8:144,readi:[2,17,31,61,64,106,124,131,135,137,220,228,317,341,349,383,415],readint8:373,readm:[350,356,357],readr:[204,205,206],readreg:31,readsht30:31,readu32:144,reaet:229,real:[31,48,61,82,106,123,129,169,178,197,204,205,206,220,251,266,279,322,398,412,414,415],realign:169,realist:412,realiz:[107,198,210,211,212,213,219,220,228,229,246,259,262,284,295,306,312,322,343,372],realli:[112,144,229,266,359,415],realloc:[144,415],really_hold_their:415,reamd:350,reason:[14,108,112,169,173,268,279,312,322,343,365,375,387,394,409,415],reboot:[31,66,67,82,280],receipt:140,receiv:[4,17,26,28,29,31,41,61,62,64,66,67,72,81,85,92,99,100,106,107,123,124,126,131,132,136,137,140,141,169,185,208,210,214,216,219,220,228,258,261,271,278,279,285,292,296,312,317,318,320,322,343,364,365,369,372,380,381,382,387,414,415,416,417,418],receive_buff:61,receivebuff:[211,212,213],receiveddata:[181,182,183],recent:[306,321],recept:[55,75,136,143,220,228,279,387],recharg:246,reciproc:271,reciv:[99,131],reclaim:[414,415],reclam:279,recogn:[24,220,228,261,279,322,365,387,396],recognit:[106,219],recolor:[145,170],recommend:[0,2,7,13,15,38,41,82,94,101,103,104,106,107,108,111,116,117,118,126,133,136,143,169,172,215,216,220,221,222,226,228,229,231,236,246,256,257,258,263,268,278,284,285,286,295,304,306,312,316,322,331,341,352,353,356,357,359,360,388,390,396,398,403,412,417],recompil:[342,415],reconfigur:[42,71,261,322],reconnect:[31,62,141,258,279],reconnect_tim:31,record:[29,31,106,219,228,258,277,279,292,306,340,409,415],record_callback_tim:2,record_data:2,record_don:2,record_of:415,record_tim:31,record_typ:31,recordstop:31,recov:[106,279],recoveri:[2,106,415],rect:31,rectangl:[11,144,169,373,414],rectangular:169,recurs:415,recursion_:415,recv:[31,41,75,107,140,181,182,183,203,220,228,364,369,381,387,392],recv_buf:381,recv_cb:61,recv_len:31,recvlen:[204,205,206],recvreadi:[220,228],recycl:415,red:[11,38,144,169,278,398],redi:180,reduc:[2,103,144,169,177,193,194,195,220,222,246,265,279,280,289,316,409,412,414,415],reduct:144,redund:2,reentrant:415,ref:415,refer:[0,1,7,10,16,21,22,25,29,38,92,103,106,108,124,134,135,140,141,152,169,175,177,178,179,181,182,183,186,187,188,189,190,192,193,194,195,197,199,200,201,204,206,209,217,220,221,225,228,229,241,243,244,245,259,263,271,277,279,280,281,284,285,289,295,306,309,312,316,317,318,322,331,332,337,339,341,342,343,344,351,356,357,358,362,387,388,390,391,398,400,401,403,409,412,414,416,418,430],referenc:[101,169,415],reflect:[246,343,396],refp:246,refr_now:169,refresh:[11,32,38,39,101,169,358,366,394,403,409],refresh_r:31,reg32:31,reg:31,reg_mymath:342,regaddr:374,regard:[107,330,414,415],regardless:[94,117,144,169,269,281,358],region:[109,169,268,322,409,415],regist:[2,4,5,20,28,29,48,62,76,81,84,100,101,103,106,107,120,124,132,136,138,140,169,185,199,200,201,210,214,216,220,226,228,231,236,262,263,268,269,271,277,306,322,337,343,358,369,383,387,388,390,415,417,418],registered_roam:106,registr:[1,48,62,76,106,124,175,266,277,359,362,383,415],registri:[175,342],regul:[342,412],regular:[12,106,117,141,169,284,306,341,415,416,419],regularli:[76,139,279],regulatori:277,reimag:263,reiniti:[135,279],reissu:258,reject:106,rel:[32,49,169,266,315,331,378,415],relat:[0,11,22,29,38,41,75,104,109,119,135,144,145,170,174,221,225,229,246,256,263,266,267,269,277,279,283,294,310,314,315,322,333,338,350,357,362,365,368,370,393,394,400,415,418],relationship:[220,284,295,417],releas:[4,8,31,37,62,75,101,106,107,113,118,125,131,140,144,169,215,220,221,226,228,233,239,255,256,261,266,268,275,280,283,284,285,289,294,295,296,298,308,312,322,343,355,368,400,403,414,415,416,418],relev:[106,119,169,229,284,322,342,357,363,376,377,384,387,391,409,415],reli:[222,339,370,391,415],reliabl:[220,396,407,412],relinquish:415,reload:[261,322],reluct:172,rem:356,remain:[29,78,112,124,136,144,169,229,261,279,322,356,357,368,369,414],remaind:[337,414,415],remark:[246,284,295,395],rememb:[115,116,169,266,315,343,375,398,415],remind:[3,14,16,22,23,41,64,103,106,141,215,218,266,278,279,280,317,318,321,398,409,412,419],remot:[20,31,61,72,129,292,380,421],remote_ip:124,remote_nam:31,remote_port:[31,279],remoteip:31,remov:[7,31,32,101,128,137,145,170,175,229,243,279,307,326,356,375,387,398,412,414,417],renam:[31,175],render:[169,219,220,228,415],renderlinehighlight:218,rep:[175,220,228],repackag:279,repair:[279,292,312,400,409,412],repeat:[31,33,169,173,220,228,279,344,372,375,415],repeat_cnt:31,repeatedli:[16,221,420],repetit:[33,118,127,372,380,414],repl:[31,129,175,279],replac:[19,66,67,106,119,137,169,218,220,228,258,259,261,270,293,310,322,348,370,373,412,414,415],replai:101,repli:[107,124,169,220,228,374],report:[20,22,23,26,31,82,107,124,129,263,266,279,320,323,352,356,358,387,406,407,415],repositori:[215,285,296,342,351,352,353,356,430],reprehenderit:169,repres:[2,11,18,22,28,38,110,111,112,135,169,204,205,206,271,279,307,317,356,357,358,378,387,392,414,415,416],represent:415,reproduc:263,req_cod:61,reqaddr:61,reqal:81,reqcellinfo:[31,64,65,279],reqidl:81,reqiur:340,reqop_norm:72,reqtim:61,request:[31,40,61,75,82,106,192,234,240,263,266,279,280,368,371,375,414,415],requir:[0,2,4,8,11,13,15,17,19,21,23,26,28,33,38,40,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,59,60,62,63,64,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,103,104,106,107,108,112,115,117,118,120,123,124,131,132,136,137,140,141,145,170,172,175,177,179,180,181,182,183,188,189,190,193,194,195,199,200,201,204,205,206,208,211,212,213,220,221,225,228,229,237,246,258,263,266,277,279,280,281,284,291,292,295,304,306,315,317,318,319,320,322,326,333,339,340,341,342,344,349,350,356,357,359,360,361,362,364,368,369,370,375,378,384,386,388,390,395,396,400,407,412,414,416,417,418,420,430],reqwifi:61,rerult:144,research:[319,322],reselect:[106,215],resembl:169,resent:57,reserv:[9,28,37,101,106,112,124,125,169,322,370,378,401,415],reset:[11,14,31,38,56,61,99,112,120,135,138,139,169,199,200,201,215,220,222,226,232,234,240,246,251,256,257,258,261,276,277,278,279,292,295,306,308,312,322,337,338,394,409],reshap:120,residu:[263,279,292],resist:[229,231,236,246,258,262,267,306,312,317,400],resistor:[0,229,246,261,262,263,322,400,401,412],resiz:[31,145,170],resolut:[6,38,61,124,169,173,219,251,279,304,396,401,412,431],resolv:[263,415],reson:112,resourc:[1,4,33,107,140,204,205,206,215,219,220,232,255,258,279,280,289,292,297,310,314,322,323,326,350,369,370,391,395,413,414,415],resp:[59,365,375],respect:[75,169,177,210,211,212,213,220,222,228,242,278,378,400,401,412,414,415,417],respond:[27,59,64,66,67,209],respons:[26,59,107,215,219,220,229,266,279,292,362,363,364,376,384,415],rest:[169,220,228,414,415],restart:[7,28,82,103,106,112,118,215,218,220,229,268,269,279,280,317,322,338,352,353,356,357,396,403,415,417],restaur:417,restor:[103,141,143,169,268,306,317,322,365,414,415],restrict:[295,415],result:[0,2,3,6,7,8,12,14,17,19,28,30,33,36,58,59,61,64,66,67,72,81,82,94,95,96,103,106,112,114,116,119,120,124,126,130,141,144,169,173,178,181,182,183,198,210,215,220,228,261,262,279,292,317,322,337,343,358,375,381,382,383,384,398,400,403,409,412,414,415,416,417,418],resum:[2,101,132,175,417,418],resurrect:415,ret:[32,114,116,141,280,343,374,375],retain:[31,61,119,279,326,415],retransmiss:107,retri:[12,107,138,279,292],retriev:[169,266,415],retstat:415,reus:[22,75,103,141,229,246,261,278,279,284,295,304,322,415],reusabl:306,rev:416,revc:[204,205,206],revers:[8,32,38,75,135,169,175,178,199,200,201,279,338,398,400,403,412],revert:[31,387],review:[266,415],revis:[251,258],reviv:415,revvc:[204,205,206],rewrit:[222,268,279,322,415],rewritten:269,rf:[106,232,237,268,277,322],rgb565:[31,251,312,331],rgb565be:173,rgb888:251,rgb:[4,38,87,101,169,173,312,322],rgb_data:87,rgb_date:87,rgb_file:173,rh:[45,53],right:[3,11,28,29,38,55,66,101,135,169,172,218,256,258,271,279,338,341,398,403,409,412,414,415,421],right_fit_typ:169,rio:415,rippl:229,risc:304,riscv:270,rise:[22,33,284,321],risk:[258,398,403,412,415],riski:412,rle:[104,169],rle_match:104,rmc:41,rmd:20,rmdir:31,rmt:312,rndi:315,road:[61,306,337],roam:106,roberto:415,robot:279,robust:415,role:[378,415],roll:[145,170,263,387],rollback:279,roller1:169,roller:[145,170],roller_:169,roller_cr:169,roller_demo:169,roller_get_selected_str:169,roller_mode_infinit:169,roller_part_bg:169,roller_part_select:169,roller_set_opt:169,roller_set_visible_row_count:169,rom:[169,317,366,378,386],romf:391,room:[169,228],root:[18,108,280,350,356,357,415],roreg_func:342,roreg_int:342,rotable2:342,rotable_reg:341,rotable_reg_t:342,rotari:61,rotat:[31,55,106,145,170,337,403,415],rotation_angl:169,rough:[136,306,319,322],roughli:[222,356,357,417],round:[135,169,415],rout:[246,258],router:[269,279,292],routin:[145,171,174,220,228,263,322,332],row:[32,145,170,221,222,230,235,242,261,264,276,277,278,279,322,365,378,414,415],row_cnt:169,rp2040:322,rp2040_pcb:[322,332],rrc:[106,279,292],rs232:210,rs485:[210,279],rs485_delai:31,rs485_gpio:31,rs485_level:31,rs8554:412,rs:394,rsa:[31,129,287],rshift:120,rsrp:31,rsrq:31,rssi:[31,131,141,383],rst:[40,61,138,220,226,256,257,258,306,312,338],rst_pin:31,rt:[220,226,258,355,362,383,394,395],rtc:[31,41,112,129,185,216,234,240,246,251,261,279,292,297,304,322,333],rtc_setprescal:263,rtcauto:31,rtcm:317,rtime:31,rtk:[316,319,322,393],rtkv:[61,421],rto:[24,31,66,67,82,129,177,179,280,322,339,360,361,364,369,370,372,391,417],rtos_msg:[364,369],rtos_msg_t:343,rtr:[31,72],rtrim:31,rtt:[355,369],rtt_root:355,rtthread:355,rule:[78,175,220,228,263,266,271,279,283,322,350,414],rule_:415,run:[4,23,31,38,50,76,77,112,129,169,175,177,180,181,182,183,185,188,189,190,193,194,195,199,200,201,204,205,206,208,211,212,213,215,216,218,219,220,221,222,225,228,229,234,240,243,256,258,279,280,290,312,317,322,328,338,339,342,343,349,352,353,360,361,364,365,369,370,371,387,394,395,409,414,417],running_script_:415,runtim:[108,112,169,415],rx0:229,rx:[31,210,211,212,213,220,226,228,231,236,256,257,267,273,279,308,312,317,338],rx_bit:31,rx_done:100,rx_error:100,rx_hwtimer_id:31,rx_len:31,rx_pin:31,rx_timeout:100,rxbuf:85,rxbuff:31,rxclear:31,rxcontinu:[99,100],rxd:[226,317,318],rxdata:28,rxe:[261,322],rxlen:31,rxpacket:61,rxsize:[31,107],ry:31,s1:414,s2:414,s3:[312,313,322,414],s3_pcb:[314,322],s5:289,s:[2,4,5,11,12,19,20,22,32,34,38,41,62,66,89,90,99,101,103,106,107,108,118,124,131,144,169,172,173,175,179,180,198,209,215,218,220,221,228,243,246,256,258,263,268,278,279,284,287,289,306,307,322,331,333,338,340,341,342,343,349,350,355,356,362,363,364,365,367,368,376,380,382,383,384,387,388,389,394,407,414,416,417,419],s_intermitt:415,s_loader_:415,s_n_:415,sacrif:409,safe:[169,383,415],safer:415,safeti:246,sai:[220,228,258,268,277,322,356,357,414,415,416],said:[107,315,413,414],sale:[281,420,423],same:[2,5,8,14,16,22,24,33,59,68,75,78,89,90,103,106,107,108,111,112,113,124,130,169,215,220,228,239,263,265,269,277,279,280,281,284,289,295,306,312,318,322,343,352,353,356,357,358,367,378,387,392,400,409,414,415,417,418,419],sampl:[2,4,6,22,31,41,71,169,185,216,220,222,228,251,261,268,270,306,322,337,357,388,390,396,400,401,406,407,409,412,414],sample16:71,sample1:71,sample2:71,sample4:71,sample8:71,sample_count:61,sample_r:[6,31],san:169,sar:[251,312,337],sarasa:279,sat:41,satellit:[41,283,285,291,317,318,320,322],satellites_track:41,satisfi:[78,414],satur:169,saturdai:78,save:[2,4,15,19,41,57,82,103,106,107,112,135,141,143,169,172,185,204,205,206,216,218,219,256,258,265,271,277,307,316,317,321,322,343,352,357,369,409,414,415,421],save_path:31,sayhi:341,sb_mode:169,sba:277,sc12a:31,sc7a20:61,sc7a20_data:83,sc:[138,141],sc_result:141,scalabl:169,scale:[38,145,170,173,366,368],scale_end_color:169,scale_grad_color:169,scale_width:169,scan:[4,31,61,104,134,258,263,279,285,296,320,333,337,350,356,357,383,387,407,415,424],scan_mod:31,scan_period:31,scanresult:31,scatter:[172,225,258,322],scdma:287,scell:[31,131],scenario:[82,132,234,240,247,279,280,284,285,296,304,311,318,349,363,376,384],scene:[306,312,349,370],scenic:101,schedul:[54,66,67,169,208,306,363,376,384,417,418],schema:415,schemat:[181,182,183,193,194,195,199,200,201,204,205,206,211,212,213,220,225,229,232,242,244,246,257,258,260,267,278,309,313,322,332,334,335,429,431,443],scheme:[41,48,215,258,268,271,295,322,356,357,376],scienc:400,scientif:279,sck:[76,258],scl:[31,61,93,135,179,181,182,183,220,228,284],scl_pin:61,sclk:61,scm:322,scon:355,scope:[145,170,289,415],score:[7,305],scr2:101,scr:[31,220,228],scr_act:[31,169,220,228],scr_load:[31,169,220,228],scr_load_anim:31,scr_load_anim_over_left:101,scrambl:28,scratch:415,screen:[4,31,38,101,111,129,135,169,179,185,216,219,220,228,237,279,293,295,306,322,336,349,396,398,403,407,431,434],screen_label:169,screenshot:[246,266,322,358,403],screw:[398,412],scrip:330,script:[84,89,118,169,186,216,219,228,232,237,245,265,266,279,280,281,285,286,289,292,296,297,310,322,323,328,341,347,349,350,351,352,353,359,361,364,365,367,386,391,394,395,413,414,415,416],script_addr:386,scrlbar_mode_:169,scrlbar_mode_auto:169,scrlbar_mode_drag:169,scrlbar_mode_hid:169,scrlbar_mode_off:169,scrlbar_mode_on:169,scrlbar_mode_unhid:169,scroll:[145,170,172,409],scrollabl:[145,170],scrollbar:169,scrollbar_mode_off:169,sd:[2,14,16,32,118,119,169,173,220,228,322,367,391],sd_mount:[220,228],sd_read:31,sd_user_main:118,sd_write:31,sda:[31,61,93,135,179,181,182,183,220,228],sda_pin:61,sdat:31,sdcard:118,sdhc:137,sdio:[14,31,129,232,251,259,262,270,271,304,312,322,331,333],sdio_clk:[220,228,236,312],sdio_cmd:[220,228,236,312],sdio_d0:[220,228,236,312],sdio_d1:[220,228,236,312],sdio_d2:[220,228,236,312],sdio_d3:[220,228,236,312],sdk:[1,222,256,258,262,322,337,354,361,370,393],sdk_appid:31,sdl2:[360,361],sdl:360,sdram:251,sea:41,seal:312,seamless:270,search:[31,61,81,106,107,118,218,221,277,279,315,320,341,349,352,353,357,415],search_cell_tim:31,searcher:175,searchpath:175,seat:[398,403],sec:[41,78,108,117,197,220,415],sec_h:103,sec_l:103,second:[2,8,12,15,38,41,59,64,76,78,82,103,106,107,108,110,112,118,120,124,130,135,140,169,177,181,182,183,185,191,197,215,216,219,220,221,229,258,263,276,277,278,279,284,306,315,316,317,318,323,338,341,343,365,387,392,403,414,415,416,417,418],second_exp:415,secondari:[15,19,169,279,284,285,406],secondli:400,secondtick:190,secret:[31,48,62,116,129,262],section:[152,169,181,182,183,220,225,228,263,271,278,322,356,387,414,415],sector:[14,81,185,207,216],secur:[178,220,270,279,383,415],securit:383,sed:169,see:[4,22,29,67,82,103,106,107,110,117,124,135,141,144,169,173,186,195,199,200,201,204,205,206,211,212,213,215,218,220,221,222,226,228,229,238,243,256,258,262,263,284,295,306,315,316,326,331,338,341,342,392,398,403,409,414,415,421],seeall:417,seed:415,seek:[31,32,175,211,212,213,373],seek_cur:[32,144],seek_end:[32,144],seek_set:[32,144,373],seem:[322,415],seen:[177,193,204,205,206,215,220,262,331,342,370,414],seg10:238,seg11:238,seg12:238,seg13:238,seg14:238,seg15:238,seg16:238,seg17:238,seg18:238,seg19:238,seg1:238,seg20:238,seg21:238,seg22:238,seg23:238,seg24:238,seg25:238,seg26:238,seg27:238,seg28:238,seg29:238,seg2:238,seg30:238,seg31:238,seg3:238,seg4:238,seg5:238,seg6:238,seg7:238,seg8:238,seg9:238,seg:31,seg_data:61,seg_mark:31,seg_set:31,segment:[31,84,89,90,129,140,169,237,266,279,317,318,322,336,415],select:[11,14,20,22,25,26,38,41,43,55,57,59,61,75,78,84,89,90,95,96,99,101,103,106,107,121,122,124,126,135,136,138,140,145,170,175,184,191,196,199,200,201,202,204,205,206,207,214,215,218,220,221,225,228,229,235,236,237,239,246,251,256,257,258,261,262,266,269,271,279,283,284,292,295,306,307,312,317,321,322,330,331,337,338,341,356,357,358,386,391,395,396,400,403,407,417],selector:[145,170],self:[66,67,82,145,170,258,265,280,306,330,331,337,352,353,359,398,400,403,409,415],sell:169,seller:306,sem:370,semant:415,semaphor:370,semicircl:169,semicolon:[342,415],send:[12,25,31,35,40,61,62,72,73,75,84,85,89,90,101,106,107,115,124,131,132,135,136,143,169,184,185,203,204,205,206,210,214,216,220,228,229,261,271,277,279,285,292,296,317,318,322,343,363,365,372,374,376,381,382,384,387,392,394,416,417],send_buf:381,send_buff:61,send_data:31,send_finish:416,send_len:31,send_ok:137,sendbuff:[31,211,212,213],senddisplaydata:61,sender:143,sendlen:[204,205,206],sendmsg:[31,68],sendnec:[31,75,380],sendqueu:[220,228],sens:[6,120],sensit:[82,415],sensor:[28,31,61,82,102,105,129,131,134,172,181,182,183,217,220,228,237,246,279,280,297,322,331],sent:[28,29,35,68,72,84,106,107,115,120,123,124,126,131,136,137,140,169,210,261,279,291,292,318,322,343,372,373,380,381,387],sentenc:[220,228,263,280,415],sep:[175,414],separ:[31,41,106,169,181,182,183,258,265,295,365,378,387,394,396,414,415,417,418],separator_posit:169,septemb:[106,131,169],seq_typ:31,sequenc:[4,31,75,124,129,169,203,210,211,212,213,220,228,381,382,403,415,429],ser1:169,ser2:169,ser:169,seri:[0,17,22,29,41,103,106,111,112,115,117,141,144,145,170,215,217,220,222,228,229,235,236,237,239,246,256,258,261,262,263,280,281,299,304,315,316,320,322,323,338,342,351,358,373,395,396,398,400,406,407,414,415,417,429,431],serial:[4,14,20,31,36,41,57,81,84,89,103,106,107,115,124,129,140,143,173,181,182,183,185,199,200,201,203,204,205,206,210,214,216,217,220,225,228,233,239,242,246,251,256,257,258,269,278,279,284,295,306,307,309,312,317,322,337,338,349,365,381,382,383,387,394,396,398,401,403,412,415,416,421,434,440],series_t:169,seriou:106,serv:[106,169,279],server:[12,20,26,31,40,59,61,62,64,65,66,67,82,107,116,124,129,140,268,277,279,280,289,292,308,320,322,415],server_cert:[20,31,61,62,107],servic:[27,38,65,82,92,106,131,258,263,279,287,358,415],session:107,set:[0,2,4,7,8,11,14,15,31,33,37,38,39,41,44,46,54,57,59,61,64,71,72,77,78,81,83,88,89,90,98,99,100,101,103,106,107,110,111,112,115,118,120,123,124,126,127,131,135,136,137,138,140,141,143,145,170,180,185,190,191,193,194,195,197,198,215,216,218,220,222,226,228,229,233,234,239,240,242,256,258,261,262,269,270,279,280,283,284,292,295,306,308,322,331,337,338,355,356,357,359,364,365,370,371,373,379,381,382,383,387,391,394,396,398,401,409,413,414,415,417],set_accepted_char:169,set_act:169,set_align:169,set_angle_offset:169,set_anim_tim:169,set_arc_length:169,set_avgsel:61,set_bit_mask:61,set_btn_ctrl:169,set_btn_ctrl_al:169,set_btn_width:169,set_btns_po:169,set_cap:31,set_cell_merge_right_t:169,set_cell_typ:169,set_channel:31,set_check:169,set_cmod:61,set_color:169,set_color_mod:169,set_color_mode_fix:169,set_ctrl_map:169,set_cursor_blink_tim:169,set_cursor_click_po:169,set_cursor_hidden:169,set_cursor_manag:169,set_cursor_po:169,set_day_nam:169,set_debounc:22,set_dir:169,set_edge_flash:169,set_highlighted_d:169,set_hsv:169,set_hu:169,set_id:31,set_irqf:61,set_map:169,set_max_height:169,set_max_length:169,set_mirror:169,set_mod:[61,169],set_month_nam:169,set_one_check:169,set_one_lin:169,set_opt:169,set_placeholder_text:169,set_pwd_mod:169,set_pwd_show_tim:169,set_recolor:169,set_rxconfig:31,set_scal:169,set_scrollbar_mod:169,set_select:169,set_set_i:415,set_show_select:169,set_spin_tim:169,set_src:169,set_src_til:169,set_stat:169,set_static_opt:169,set_static_text:169,set_symbol:169,set_tab_act:169,set_tc_typ:61,set_text:169,set_text_align:169,set_text_label:169,set_text_sel:169,set_thresh:61,set_tile_act:169,set_tim:[46,61],set_today_d:169,set_txconfig:31,set_typ:169,set_usbclock:259,set_valid_posit:169,set_valu:169,set_visible_row_count:169,set_width:169,set_xxx:169,setapnet:383,setauto:31,setband:31,setbaseyear:31,setbitmapmod:31,setblinktim:61,setbright:61,setbu:31,setcap:33,setclk:[31,188,189],setcolor:31,setcontrast:31,setctx:31,setdefaultpul:31,setdelai:31,setdn:31,setdrawcolor:31,setfont:[16,31,179,220,228,358],setfontmod:31,setframebuff:[31,120],setfreq:61,setgpio:31,sethook:175,setjmp:415,setlevel:[31,187],setlight:61,setloc:175,setlocal:175,setmac:[31,269],setmetat:[175,375],setmod:31,setnewsmscb:[31,131],setpath:31,setpaus:415,setpin:279,setpix:373,setpowersav:[31,279],setpwm:61,setrang:31,setstanet:383,setstat:61,setstepmul:415,setstrt:263,sett:[31,279],settable_ev:415,settimeout:31,setup0_process:263,setup:[14,31,41,42,44,45,47,49,50,51,52,53,54,56,60,61,63,69,70,72,73,74,75,77,79,80,81,83,85,86,87,91,105,111,112,115,127,141,143,169,173,181,182,183,186,188,189,203,204,205,206,210,211,212,213,220,221,228,279,284,295,370,379,381,382,387,403],setupbreatel:61,setupbuff:31,setupdevic:387,setupr:[181,182,183,204,205,206],setupvalu:175,setuservalu:175,setvbuf:175,setwin:31,setxtal:31,seven:169,sever:[82,103,107,144,145,170,210,211,212,213,215,220,228,229,266,322,343,362,396,412,414,415],sfd:[31,129,185,216],sfdp:[199,200,201],sfud:[31,129,185,216,232,279,289,292,322,333],sfud_devic:[122,220,228],sfuddevic:[199,200,201],sgm2019:236,sh1106:135,sh1107:135,sh1108:135,sh:339,sha1:[31,34,116,178,304],sha1_stream:8,sha256:[31,34,178,287,349],sha256_stream:8,sha384:287,sha512:[31,178],sha:[287,304],shadow:[135,169],shake:[22,37,112,215,279,284],shall:[41,169,229,258,304,344,350],shape:[3,144,169,415],share:[33,75,219,220,228,383,384,393,407,412,415],shdn:93,sheet:[78,204,205,206,226,257,260,262,334,335,337],sheet_1:[177,195],shell:[396,430],shen:306,shget:360,shield:[61,269,362],shift595:61,shift:[31,84,112,117,136,255,285,296,396,398,401,403,406,415,421],ship:277,shipment:256,shop:[226,233,239,262,337],short_src:415,shortcut:[218,359,415],shorten:169,shortest:415,shot:208,should:[0,3,7,17,41,64,89,90,106,124,126,135,141,169,209,218,220,222,226,228,229,246,263,271,277,279,280,306,312,316,317,342,344,362,365,366,368,375,414,415,417,430],show:[25,31,66,67,88,145,170,186,220,246,358,365,396,398,403,412,414,415],show_520:172,show_520_h:172,show_520_w:172,show_data:172,show_otaurl:66,showimag:31,shown:[75,210,220,221,222,256,257,258,263,304,306,338,398,400,409,414],shown_dat:169,showonlin:218,shrink:[169,415],sht30:[28,220,228],shunt:400,shunt_voltag:60,shut:[185,207,216,246,284,412,415],shutdown:[2,20,31,62,103,107,140,169,246,263,279,284,292],si24r1:61,si24r1test:85,si:72,sibl:415,side:[12,38,84,107,110,116,124,126,135,169,258,271,315,398,400,414,415,419],sieg:172,sig:31,sigma:337,sign:[21,31,103,144,169,387,414,415],signal:[11,28,41,73,75,84,101,106,141,177,204,205,206,220,228,229,246,263,277,279,306,316,379,383,415],signatur:[21,116,178,279],signifi:414,signific:65,significantli:229,silenc:187,silent:[2,98,187],silk:[111,306],sim0:[106,279],sim1:106,sim2:[284,295],sim:[106,123,131,279],sim_id:31,sim_ind:[106,417,418],sim_pin:131,sim_wc:[106,131],simerr:76,simid:31,similar:[12,19,22,28,34,40,107,124,135,136,144,169,180,199,200,201,220,222,228,256,304,338,362,370,391,412,414,415],similarli:[169,340,348,414,415,416],simpin:31,simpl:[8,26,82,106,115,140,145,170,172,173,181,182,183,198,220,228,263,269,271,279,306,345,349,379,387,388,389,413,415,417],simpler:279,simplest:[20,48,107,388,390,414,418],simpli:[118,169,193,194,195,220,228,338,414,415,417],simplifi:[130,169,215,365,414,415,421],simsun_48:169,simul:[28,101,135,137,169,284,295,322,330,339,349,395,409,412,419],simultan:4,sin:[175,337],sinc:[17,21,36,75,144,169,218,220,256,258,262,263,279,306,312,338,396,398,403,409,415,416,430],sine:[229,412,415],singl:[2,9,33,38,41,57,65,71,75,93,101,105,107,114,115,120,124,140,145,170,185,216,220,228,258,263,279,283,285,286,296,316,317,318,320,321,322,330,337,342,365,369,370,372,391,393,414,415,416,417],singleshow:61,sinh:415,sink:258,sint:169,sit:169,site0:26,site:[266,306],situat:[136,138,215,229,263,271,280,343,412,415],six:[8,61,169,403],sixth:[64,414],siyuan:366,size:[4,8,13,14,18,26,29,31,32,59,84,97,99,100,104,107,110,118,124,131,136,144,145,170,175,180,199,200,201,204,205,206,220,225,228,232,233,235,242,245,251,255,258,261,262,264,275,276,277,278,279,280,281,292,297,304,306,310,312,321,322,333,342,356,357,358,363,366,369,376,378,382,384,386,394],size_t:[110,341,366,368,369,370,372,387,415],sizeof:[144,343,374],skei:31,skill:[266,387],skip:[32,126,169,211,212,213,356,414,417],sky:316,slave:[29,75,126,181,182,183,203,220,228,251,263,265,271,284,337,381],sleep1:[277,371],sleep2:[277,284,371],sleep:[2,31,81,99,100,103,112,118,131,136,192,219,229,234,240,261,270,278,279,284,292,295,322,337,371],sleepcmd:38,sleepcount:337,slice:[306,415],slide:169,slider:[145,170],slider_:169,slider_cr:169,slider_demo:169,slider_get_valu:169,slider_part_bg:169,slider_part_ind:169,slider_part_knob:169,slider_set:169,slider_set_rang:169,slider_type_:169,slider_type_norm:169,slider_type_rang:169,slider_type_symmetr:169,slightli:[169,193,194,195,221,412,414],slip:398,slogan:124,slot:[106,312,415],sloval:[268,322],slow:[2,28,50,52,73,77,116,169,215,218,220,228,258,263,279,284,292,306,312,315,366],slower:[28,104,106,169,221,284,289,331],slowli:[177,415],sm1:[21,262],sm2:[31,129,279],sm2decrypt:31,sm2encrypt:31,sm2sign:31,sm2verifi:31,sm3:[31,129,262,279],sm3hmac:31,sm3updat:21,sm4:[31,129,262,279],sm4decrypt:31,sm4encrypt:31,sm7:262,sm9:21,sm:[31,106,124,129,279,285,287,292,296,331],small:[4,6,121,124,126,136,144,169,193,194,195,216,219,228,258,271,276,278,279,280,284,285,292,312,321,396,398,400,403,407,412,415,417,419],smaller:[13,106,124,169,258,317,318,414,415],smallest:[398,413,415],smart:[219,261,322],smartconfig:31,smartphon:169,smartpro:263,smartwatch:169,smd:270,smooth:169,smoothli:[220,228],sms_only_regist:106,sms_only_registered_roam:106,sn:31,snail:383,snap:[169,429],snippet:[279,415],snowman:135,snq:106,snr:[31,41,131],sntp:[31,41,131,277,279],sntp_connect:279,sntp_port:31,sntp_server:31,so:[6,17,72,84,88,106,111,112,121,128,131,132,136,143,144,169,172,177,178,179,185,215,218,220,228,229,246,256,258,263,268,269,271,276,277,279,284,290,306,307,315,321,322,331,338,342,343,357,369,370,386,391,395,403,409,412,414,415,417],soc:[2,4,84,89,103,124,136,145,169,170,171,173,174,180,187,208,209,215,218,220,222,234,239,240,247,256,266,280,281,283,307,311,316,322,323,329,342,350,352,353,356,357,358,359,388,389,390,394],soc_air101_v0008:350,soc_air601:266,soc_download:394,soc_script:265,soc_v0001_esp32c3_rc2:311,soc_v0005_air105:247,soc_v0007_air101:234,soc_v0007_air103:240,soc_v0017_air101:[84,89],soc_v1001_ec618:356,soc_v1001_ec718p:357,soc_v1001_ec718pv:292,soc_v1002_ec718pv:292,soc_v1105_ec618:280,soc_v1105_ec618_ful:280,soc_v1105_ec618_tt:280,soc_v1108_ec618:280,soc_v1108_ec618_cloud:280,soc_v1108_ec618_ful:280,soc_v1108_ec618_tt:280,soc_v1108_ec618_tts_onchip:280,socket:[12,20,31,41,61,106,107,129,132,138,140,265,277,279,280,292,297,308,333,344,365,387,392,398,403,416],socket_ctrl:124,soft:[105,261,276,285,296,317,322,409],soft_kb_inc:125,softap:270,softi2c:28,softkb:[31,129],softspidevic:126,softwar:[2,11,21,28,31,38,50,61,73,77,78,112,126,129,131,135,136,184,185,191,196,202,207,214,216,218,229,232,246,257,258,259,261,262,268,269,270,279,283,284,295,306,319,322,337,363,372,376,384,394,400,403,406,407,415],solari:415,sold:[398,400,403,423],solder:[307,312],solid:[135,258],solut:[41,107,220,228,261,263,268,279,283,322,356,357,363,376,384,412,413],solv:[15,19,28,107,111,222,229,256,263,265,269,279,338,343,358,359,378,414],some:[0,2,6,22,28,31,32,38,65,76,82,106,111,112,117,118,124,127,129,135,139,141,145,152,169,171,188,189,190,192,197,204,205,206,215,218,220,221,222,246,258,261,262,268,277,279,284,289,292,307,320,322,343,345,349,352,371,387,391,398,400,403,409,412,414,415,416,419],someon:415,someth:[17,66,67,130,169,176,218,220,228,364,414,415],sometim:[13,169,279,409,414,415],somewhat:415,song:179,soni:380,soon:[12,279,292,375],sop:412,sort:[169,175,278,287,362,378,414],sota:266,sound:[2,5,6,278,279],sourc:[12,30,33,41,44,103,108,143,145,170,172,197,199,200,201,217,219,220,225,229,237,246,261,262,266,271,279,280,285,296,306,312,315,322,330,332,337,341,342,360,370,378,380,391,396,398,403,413,414,415,416,417,421],source_32k:31,source_main:31,source_sans_16:366,south:41,sp:251,space:[5,6,14,15,16,17,19,28,38,66,126,128,135,136,137,144,169,172,204,205,206,255,263,266,279,280,285,290,292,296,307,321,323,331,341,352,356,357,359,387,414,415],spacer:414,spacer_posit:169,spare:372,spawn:415,spe:[261,322],speak:[34,116,169,188,189,222,266,414],speaker:[2,278,289],spec_v1:204,special:[12,23,31,106,107,109,112,129,141,169,188,189,190,192,218,258,279,283,289,295,310,314,322,331,356,359,362,387,388,389,412,414,415],specif:[0,1,11,17,21,24,25,28,29,38,39,64,65,66,92,99,100,103,106,107,109,119,130,169,177,185,202,216,220,222,228,241,246,251,256,261,262,267,268,279,281,285,296,306,312,316,322,338,342,350,351,356,357,358,364,365,369,370,373,384,386,391,396,400,403,407,409,414,415],specifi:[2,4,8,9,11,17,20,22,32,38,41,82,84,89,90,101,107,109,110,112,114,115,122,124,126,128,130,132,133,135,141,144,169,185,207,209,216,266,277,279,322,326,363,365,366,373,376,377,383,384,387,396,398,409,414,415],specification_v1:[193,267],specified_script_:415,specimen:169,speech:[283,322],speed:[2,4,14,19,31,41,103,126,145,170,181,182,183,203,204,205,206,215,218,219,220,222,228,229,251,256,257,258,271,279,283,284,304,306,312,315,316,322,338,394,401,406,412,414,415],speed_knot:41,speed_kph:41,speed_typ:31,spend:417,spent:417,spi0:[11,38,126,220,278,284,295],spi0_c:[236,284,295],spi0_clk:[236,246],spi0_csn:246,spi0_miso:[236,246,284,295],spi0_mosi:[236,246,284,295],spi0_scl:[284,295],spi1:[126,263,284,295],spi1_c:[236,284,295],spi1_clk:236,spi1_csn:246,spi1_miso:[236,246,284,295],spi1_mosi:[236,246,284,295],spi1_sck:246,spi1_scl:[284,295],spi2:126,spi2_c:[306,312],spi2_ck:[306,312],spi2_csn:246,spi2_miso:[246,306,312],spi2_mosi:[246,306,312],spi2_sck:246,spi3:126,spi3_miso:312,spi3_mosi:312,spi3_sclk:312,spi4:126,spi5:[242,295],spi5_c:295,spi5_clk:[246,295],spi5_csn:246,spi5_miso:246,spi5_mosi:246,spi5_r:295,spi5_rst:295,spi5_scl:295,spi:[4,11,14,16,23,24,31,38,71,72,75,81,85,97,99,100,103,120,129,135,138,172,173,185,186,198,202,216,217,226,232,246,251,261,265,268,270,278,279,280,283,285,289,292,294,296,297,304,308,310,312,322,333,337,349,376,377,384,387,391,392,394,434,440],spi_0:[75,126,138],spi_12s_flag_bsi:263,spi_12s_flag_tx:263,spi_12s_getflagstatu:263,spi_1:126,spi_2:126,spi_3:126,spi_4:126,spi_bandr:31,spi_c:[31,72,135,199,204,205,231,253,267,271],spi_clk:[199,204,205,253,271],spi_cmd:263,spi_dc:135,spi_dev:31,spi_devic:[17,31,61,66,220,228],spi_eink:11,spi_flash:[199,200,201,204,205,206,220,228],spi_hw_4pin:135,spi_i25_dmareq_rx:263,spi_i2s_dmacmd:263,spi_i2s_dmareq_tx:263,spi_i2s_flag_bsi:263,spi_i2s_flag_rxn:263,spi_i2s_flag_tx:263,spi_i2s_getflagstatu:263,spi_i2s_receivedata:263,spi_i2s_senddata:263,spi_id:[11,31,61,100,126,135,381],spi_lcd:[38,173,220,228],spi_lora:100,spi_mcp2515:72,spi_miso:[72,75,199,204,205,231,253,267,271],spi_mosi:[72,199,204,205,231,253,267,271],spi_r:135,spi_rc522:81,spi_sck:[72,231,267],spi_si24r1:85,spi_slav:265,spi_spe:31,spiclk:306,spiconfig:31,spics0:306,spid:306,spidevic:387,spidon:126,spiflash:[17,66,118,199,200,201,204,205,206],spihd:306,spiid:[14,31,173,199,200,201,204,205,206,381],spiid_or_spidevic:31,spinbox:[145,170],spinbox_cr:169,spinbox_decr:169,spinbox_decrement_event_cb:169,spinbox_demo:169,spinbox_incr:169,spinbox_increment_event_cb:169,spinbox_part_bg:169,spinbox_part_cursor:169,spinbox_set_digit_format:169,spinbox_set_padding_left:169,spinbox_set_rang:169,spinbox_set_step:169,spinbox_set_valu:169,spinbox_step_prev:169,spinner:[145,170],spinner_:169,spinner_cr:169,spinner_demo:169,spinner_part_bg:169,spinner_part_ind:169,spinner_type_:169,spinner_type_constant_arc:169,spinner_type_fillspin_arc:169,spinner_type_spinning_arc:169,spiq:306,spiwp:306,spix:263,spk:[278,291],spl06:61,spl06_01:61,spl06_data:86,splice:[220,228],split:[31,145,170,415,417],spot:[101,315,383],spr_i2s_cetflagstatu:263,sprinkl:246,sprintf:415,sqrt:175,squar:[22,101,169,220,228,337,415],sram:[144,251,263,270,312,337,352],src:[169,342,348,350,352,353,359],ss:416,ssd1306:[135,179,220,348,349],ssd1306_128x32:135,ssd1309:[135,279],ssd1322:135,ssd1683:11,ssec:124,ssi:337,ssid:[31,265,383],ssl:[20,31,48,124,279,287],ssllog:31,st7565:279,st7567:135,st7735:[38,173,186,220,322,348,349,437],st7735v:38,st7789:[38,434],st7796:38,st:263,sta:[20,107,124,141,265,269,308,383],stabil:[103,229,246,266,279],stabl:[124,258,396,407,412,415],stabli:[258,263],stack:[106,107,124,175,217,279,292,341,342,343,362,364,365],stack_to:415,staff:[420,423],stage:[169,312,394,395,415],stagger:106,stai:[263,412,415,417],staip:31,stamp:[34,306,312],stand:[169,415],standalon:[365,415],standard:[21,29,41,72,75,124,144,175,246,261,279,289,322,342,365,370,373,375,391,396,403,414],standbi:[2,99,100,106,118,219,277,285,291,295,296,317,318,321,412],standi:31,star:[28,277,341,430],start2:31,start:[0,7,11,12,17,22,28,31,32,38,40,41,61,66,93,97,106,107,112,118,119,120,121,122,124,126,135,140,141,145,170,173,177,179,185,199,200,201,204,205,206,209,210,211,212,213,215,216,220,222,229,231,232,236,246,263,266,267,269,271,277,279,284,289,322,337,339,343,346,349,352,353,359,363,365,366,370,375,376,383,384,387,394,395,396,398,409,415,416,417],start_angl:169,start_auto_clos:169,startraw:31,startswith:31,startup:[2,12,103,106,124,185,191,215,216,225,256,284,295,304,317,322,338,342,343,372,383,415],stat:[106,140,415],state:[2,5,22,29,31,37,41,61,81,106,112,125,129,130,131,143,144,145,170,215,219,229,246,261,277,279,284,295,322,331,338,363,376,379,384,387,400,409,412,414,415,416,417],state_check:169,state_default:169,state_disconnect:107,state_focus:169,state_mqtt:107,state_press:169,state_readi:107,state_sconnect:107,statem:[31,129,331,333],statement:[19,41,111,115,175,279,280,287,292,317,330,342,343,356,365],statement_:415,statements_and:415,station:[41,61,106,131,141,221,270,277,279,292,319,322,352,353,359,383,393,395,421],statist:[106,131,279,403,415],statu:[1,5,9,15,26,29,31,33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,103,107,111,115,119,124,125,131,133,134,137,138,145,170,175,181,182,183,198,199,200,201,228,231,236,263,267,268,279,284,292,295,304,322,333,363,376,383,384,387,417,418],status:417,status_cod:375,stderr:415,stdin:[370,415],stdint:222,stdout:[370,415],steer:[61,292],step:[101,112,169,180,185,211,212,213,216,218,263,266,312,314,322,342,356,359,365,396,400,406,414,415],stepin:365,stepout:365,stereo:29,stick:[398,414],sticker:398,still:[2,24,82,112,124,136,140,169,180,220,228,261,269,279,280,284,289,295,307,315,316,317,322,331,339,356,358,365,374,396,398,414,415],stm32cubeprogramm:263,stm32f103c6t6:262,stm32f103c8t6:262,stmflashload:263,stock:429,stop:[31,44,73,103,112,136,141,169,185,210,211,212,213,216,220,228,256,261,262,279,306,312,317,318,322,338,343,363,371,372,376,382,383,384,406,414,415,418],stop_bit:31,stopap:31,storag:[5,17,66,169,180,246,366,386,415],store:[2,4,6,13,16,17,29,33,61,66,75,82,104,124,126,136,137,169,180,219,266,277,289,326,342,350,367,376,378,386,388,389,390,391,398,403,409,414,415,417,418],storge_loc:[31,61],stori:349,str1:414,str2:414,str3:414,str4:414,str:[4,31,124,144,179,220,228,373,382,414,415],straightforward:[289,415],strang:266,strategi:[169,415],strawberri:[332,396,401,412],strcmp:169,stream:[4,31,104,144,173,279,367,415],strength:[106,141,383,417],stress:[101,103],stretch:169,strftime:[108,415],strict:263,strictli:[387,398,403,415],string:[1,2,3,4,5,6,8,9,11,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,31,32,34,36,38,40,41,44,48,53,57,58,59,62,64,65,66,68,72,75,76,81,82,83,85,90,92,94,96,97,98,99,100,101,103,104,106,107,108,109,113,115,116,118,119,120,121,122,123,124,126,129,130,131,132,135,136,137,138,140,141,142,143,144,169,175,180,181,182,183,185,191,199,200,201,203,204,205,206,214,216,220,228,279,289,341,342,359,365,373,387,388,389,394,416,417],string_:415,string_can:415,stringdata:180,strip:175,strong:[31,129,169,246,316,415],strongli:[133,266,278,352,353,370,396],strt:263,strtoll:[31,279],struct:[343,366,369,374,378,385,415],structur:[6,8,97,103,121,122,169,175,217,295,340,343,352,353,356,357,359,362,363,376,384,393,414,417],stuck:[120,312],studi:[220,228,258,316,414,419],studio:[34,218,361],sty_en:31,sty_zh:31,style:[31,145,170,179,185,216,279,283,322,363,376,384,403,415],style_cr:[31,169],style_delet:31,style_init:[101,169],style_lin:169,style_list:101,style_list_cr:31,style_list_delet:31,style_list_t:31,style_screen_label4_main:169,style_screen_label_main:169,style_set_image_recolor:169,style_set_image_recolor_opa:169,style_set_line_color:169,style_set_line_round:169,style_set_line_width:169,style_set_text_color:169,style_set_text_font:169,style_t:[31,169],su:[169,287],sub:[28,41,132,169,175,220,228],subcallback:[416,417],subcontract:[279,292],subject:[48,101,107,415],sublibrari:415,submask:31,submiss:384,submit:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,266,369,393],submodul:[354,415],subnet:[138,383],subroutin:414,subscrib:[31,37,41,55,56,61,72,99,100,106,124,125,131,134,141,185,216,220,228,343,416,417],subscript:[48,62,106,131,144,343,392,417,418],subsequ:[4,38,112,124,126,135,136,144,169,199,200,201,256,263,279,295,318,342,400,414,415],subset:[317,318,415],substandard:414,substitut:415,substr:[414,415],subsystem:251,subtl:41,subtract:[3,169,280,414,415],subtyp:415,succ:[17,28,29,106,124,126],succe:[28,123,243,269,292,372,415],succeed:[30,112,415],success:[1,2,4,5,6,8,9,11,13,14,15,17,18,19,20,21,22,23,27,28,29,30,32,36,38,39,41,42,43,44,45,47,48,51,53,54,56,57,60,63,64,65,66,67,68,70,71,73,74,77,78,79,80,82,83,85,86,87,88,91,93,94,95,96,97,100,101,102,103,104,105,106,107,108,109,112,113,114,116,117,119,120,121,122,123,124,126,127,131,132,134,135,136,137,139,140,141,143,144,177,180,181,182,183,199,200,201,222,251,256,263,277,279,292,316,317,356,357,358,359,372,381,382,383,387,400,415,417],successfulli:[2,4,5,17,32,64,75,85,107,112,116,121,124,126,141,144,199,200,201,220,263,279,307,312,316,317,349,358,381,382,387,394,414,415,418],sudo:[173,360],suffici:[104,124,136,263,415],suffix:[31,220,228,266,280,286,342,352,353,374,386,415],sugar:415,suggest:[169,340,341,412,415],suit:[8,48,283,322,395],suitabl:[11,41,103,126,169,172,258,284,304,356,357,359,374,413,414,415,421],sum:[169,414,415],summari:[322,331,387,388,389],sundai:[78,415],sunni:316,sunt:169,superimpos:412,superpro:263,supplement:[61,118,132,251,279,415],supplementari:[333,365,414],suppli:[0,2,25,75,112,169,177,197,220,228,229,245,258,277,291,310,314,315,317,318,321,322,337,349,396,403,406,407,412,415,429],support:[0,1,2,4,5,6,7,8,11,14,15,16,19,20,21,22,23,24,26,27,28,29,31,36,38,39,41,55,59,61,64,65,73,75,76,82,90,99,101,103,104,106,107,112,114,115,116,117,121,123,124,126,127,128,129,131,134,135,136,137,139,141,144,145,170,172,175,190,199,200,201,204,205,206,215,219,220,225,228,231,236,237,241,246,251,257,258,261,262,265,267,270,271,276,277,278,279,280,283,284,285,287,289,292,294,295,296,297,304,306,308,312,319,322,323,336,337,339,341,350,357,358,362,363,366,370,372,373,376,378,380,384,387,391,395,396,398,403,406,407,414,416,417,419,421,431],support_empti:415,suppos:[169,269,340,414,415,417],sure:[28,32,38,101,126,131,144,169,220,228,229,243,280,284,286,341,342,349,356,357,358,398,414,415],surg:[246,398,412,414],surpris:414,surround:[204,205,206,320,415],suspend:[220,228,263,306,312,363,376,384,415,416,417,418],svc_handler:222,svd:331,svn:344,sw1:169,sw2:169,sw:[222,256,258,261,322,338],swap:[31,415],swclk:[222,226,263],swd:[222,225,256,258,263,279,322,337],swd_clk:[256,257,338],swd_dio:[256,257,338],swdclk:[256,257,338],swdio:[222,226,256,257,263,338],swing:[145,170],swipe:[169,266,279,349,357,359,391,400],switch_:169,switch_creat:169,switch_demo:169,switch_get_st:169,switch_off:169,switch_on:169,switch_part_bg:169,switch_part_ind:169,switch_part_knob:169,switch_toggl:169,swm181:[322,334,335,336,337],swm181_lib:337,swm181_pcb:[322,336],swm181cbt6:[322,334,335],swm181xb:338,swm81:337,sx1268:[99,100],sxx32:263,sxx32f103:[261,262,322],sxx32f1xx:[261,322],sxx32f1xx_dfp:263,sxx32f1xx_hal_msp:263,sy:[11,17,22,24,26,28,29,31,37,38,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,60,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,103,105,106,107,112,114,118,120,124,125,126,129,134,139,140,141,169,172,173,177,179,180,181,182,183,185,188,189,190,193,194,195,197,198,199,200,201,203,204,205,206,210,211,212,213,216,220,228,277,280,339,340,342,343,360,361,363,372,376,382,384,386,387,391,416,417],symbol:[2,6,11,38,110,135,144,145,170,258,331,356,374,387,392,409,414,415],symbol_:169,symbol_backspac:169,symbol_battery_ful:169,symbol_bel:169,symbol_clos:169,symbol_directori:169,symbol_dummi:169,symbol_edit:169,symbol_fil:169,symbol_left:169,symbol_minu:169,symbol_ok:169,symbol_plu:169,symbol_right:169,symbol_sav:169,symbol_set:169,symbtimeout:[99,100],symmetr:[8,169,178],symmetri:[145,170,337],sync:[106,251],synchron:[41,61,106,124,131,181,182,183,203,204,205,206,220,228,229,263,279,292,370,394,396,401],synctim:31,synergi:175,syntact:415,syntax:[175,341,346,387,413,414],synthes:[266,289,349],synthesi:[41,286,289,363,376,384],synthet:[41,268,322],synwit:338,sys_pub:[375,384],sys_send:[68,132],sys_wait:[124,132],syscfg:222,sysplu:[11,26,31,68,129,280],syst:20,system:[2,4,8,12,13,14,17,20,25,31,32,33,41,64,65,66,97,101,104,106,108,118,119,122,124,129,145,170,175,185,202,208,215,216,219,220,222,228,232,246,251,255,256,258,261,262,266,275,279,283,284,295,297,306,312,322,326,337,338,339,343,361,362,363,364,366,368,376,384,385,386,388,389,394,421],system_air001xx:[225,322],systemclock_config:222,systemcoreclock:338,systeminit:338,systick_config:338,systick_handl:[222,338],sz:[135,415],t0h:31,t0l:31,t1:[0,175],t1h:31,t1l:31,t2:[0,175],t3324:106,t5:289,t9000:263,t:[11,14,19,23,27,28,31,41,45,49,53,65,66,82,86,103,106,108,117,119,120,121,124,169,172,173,175,197,211,212,213,218,220,228,229,256,261,266,279,280,289,315,317,322,338,339,342,343,352,353,357,358,359,372,375,379,387,388,390,396,398,403,414,417],ta1:169,ta:169,ta_cursor_last:169,ta_event_cb:169,ta_loc:169,ta_set_edge_flash:169,ta_set_insert_replac:169,ta_set_scroll_propag:169,ta_temp:31,tab1:169,tab2:169,tab3:169,tab:[31,145,170,220,256,258,338,412],tab_pag:169,tab_pos_top:169,tabal:26,tabl:[2,4,8,10,11,14,15,16,19,20,22,25,26,27,28,30,32,36,38,40,41,44,45,47,48,52,53,54,59,60,62,63,65,67,69,70,72,73,74,75,78,80,81,82,83,86,87,89,90,91,92,99,100,103,104,105,106,107,108,112,113,117,122,124,125,128,132,135,136,140,141,144,145,170,175,180,185,202,216,220,228,232,237,244,246,254,268,271,274,279,284,287,292,295,306,307,312,322,340,343,364,374,375,378,386,387,392,394,400,401,409,412,417],table_:415,table_cell_style_cnt:169,table_cr:169,table_demo:169,table_i:415,table_part_bg:169,table_part_cell1:169,table_part_cell2:169,table_part_cell3:169,table_part_cell4:169,table_ref:415,table_set_cell_align:169,table_set_cell_crop:169,table_set_cell_typ:169,table_set_cell_valu:169,table_set_col_cnt:169,table_set_col_width:169,table_set_row_cnt:169,table_typ:169,tableconstructor:415,tablet:400,tabul:415,tabview:[145,170],tabview_:169,tabview_add_tab:169,tabview_cr:169,tabview_demo:169,tabview_part_bg:169,tabview_part_bg_scrl:169,tabview_part_ind:169,tabview_part_tab_bg:169,tabview_part_tab_btn:169,tabview_set_tab_nam:169,tabview_tab_pos_non:169,tac:31,tag:[31,120,130,145,170,199,200,201,279,387,391,415,417],tagtyp:81,tail:[6,128,373,415],tailor:414,take:[0,4,12,33,82,98,102,103,105,106,112,113,124,144,169,172,173,175,204,205,206,243,263,266,271,279,280,284,289,290,292,295,321,330,341,343,352,353,356,357,359,362,369,373,375,392,394,395,398,400,414,417],taken:[11,82,101,124,135],talk:[5,169,173,415],tamb:246,tan:175,tangent:415,tanh:415,taobao:[226,233,239,258,262,275,306,337,396,412,420,423,434,437,440,443],tar:415,target:[30,31,40,41,59,108,199,200,201,222,256,279,280,284,286,338,359,403,412,414,415],task1:[132,418],task1_don:418,task2:418,task3:418,task:[19,26,68,76,82,130,132,185,216,217,279,342,363,376,384,387,388,390,414,415,416,417],task_:417,task_a_cnt:417,task_b_cnt:417,task_read:61,task_recv:61,task_timer_id_max:417,taskdel:31,taskdisable_interrupt:263,taskexec:343,taskget:343,taskid:417,taskinit:[17,24,26,31,42,43,44,45,46,47,49,50,51,52,53,54,56,57,60,63,64,65,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,106,120,124,141,173,177,179,180,181,182,183,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,220,228,339,342,343,360,361,375,382,387,416,417],taskinitex:[31,68],taskl:61,tasklt:61,tasknam:[31,61,124],tasktimerid:417,tasktimerpool:417,tb:113,tc:[71,261,322],tc_temp:71,tcount:130,tcp:[34,106,107,124,140,279,285,292,296,297,421],tcp_ssl:[292,297],tcptcp:107,tcs3472:61,tctype_:71,tctype_b:71,tctype_j:71,tctype_k:71,tctype_n:71,tctype_r:71,tctype_t:71,td:287,tdd:[106,276,285],te:263,teach:[258,307],tear:[315,398],technic:[1,222,237,256,266,280,283,306,322,331,338,396,400,415],techniqu:414,technolog:[193,194,195,320],telecom:[123,131,277,279,285,287,296],tell:[22,169,277,414],temp1:120,temp:[0,52,69,74,82,414],temp_data:173,tempbit:[181,182,183],temperatur:[0,28,31,54,61,74,82,120,129,181,182,183,217,220,228,229,231,236,246,251,253,267,279,331,372],templat:[222,348,362,415],tempor:169,temporari:[103,350,356,357,414,415],temporarili:[75,106,124,169,284,292,295,331,414,415],ten:[400,409,415],tencent:[34,58,62,156,265,279,320,393],tengxun:[61,279],term:[169,246,266,363,376,384,415,420],term_sequence_to:415,termin:[169,173,263,357,396,398,412,415,417],test1:208,test2:208,test:[11,21,23,32,34,38,41,48,62,65,75,84,89,94,103,106,118,141,148,156,159,165,169,177,180,188,189,190,199,200,201,204,205,206,208,210,215,220,221,222,228,229,232,237,243,245,261,279,280,287,292,310,316,322,330,336,348,349,350,366,381,382,387,388,390,396,398,400,406,409,412,415,416,417,419,421],test_123123:375,test_data:208,test_json:350,testabl:344,testcrypto:142,testdemo:416,tester:400,testlbsloc:64,testmsgpub:416,testmsgsub:416,testsm:21,text:[13,104,111,123,135,142,145,170,216,258,289,356,360,374,395,415],text_line_spac:169,textarae_:169,textarea:[145,170],textarea_:169,textarea_add_char:169,textarea_add_text:169,textarea_cr:169,textarea_cursor_down:169,textarea_cursor_left:169,textarea_cursor_right:169,textarea_cursor_up:169,textarea_del_char:169,textarea_get_text:169,textarea_part_cursor:169,textarea_set_scroll_propag:169,textarea_set_text:169,textur:169,texture_atla:169,tf:[14,16,61,119,137,173,220,228,279,292,391],tf_c:[14,173],tft:[251,331,431,434,440],tft_:431,tg_pr:169,tgz:354,th:414,than:[0,7,12,13,25,28,32,33,35,40,59,65,82,92,103,104,106,118,124,130,135,144,169,181,182,183,188,189,190,215,219,220,228,229,251,258,259,261,262,265,277,279,284,289,316,317,318,322,331,341,356,357,370,372,385,398,400,403,409,414,415,417],thank:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,341,409],that_long:415,the_:415,the_act:415,the_al:415,the_bord:415,the_catch_i:415,the_continu:415,the_d_th:415,the_error:415,the_integration_load:415,the_iter:415,the_load:415,the_mag:415,the_meta:415,the_metatable_:415,the_n:415,the_n_catch:415,the_n_equ:415,the_n_her:415,the_n_lay:415,the_n_level:415,the_name_:415,the_not:415,the_pan:415,the_protect:415,the_step:415,the_upp:415,the_y_at:415,thei:[34,169,178,263,278,316,342,359,414,415,417],them:[38,106,135,169,177,256,258,263,279,284,295,330,340,342,365,369,398,400,407,412,414,415,417,420],them_primitive_:415,theme:[62,101,107,145,170],theme_appli:169,theme_get_font_smal:169,theme_set_act:31,theme_spinbox_btn:169,themselv:[359,415],theoret:[21,107,220,228,316],theori:[356,414],therebi:[169,317,318],therefor:[103,106,169,263,312,356,370,398,409,415,417],thermal:[312,412],thermocoupl:61,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,152,156,159,165,169,170,171,172,174,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,220,221,222,228,229,231,235,236,237,239,241,243,256,258,259,263,265,266,267,277,278,279,280,284,285,286,295,296,299,306,307,312,315,316,317,322,330,338,340,341,342,343,345,350,352,353,356,357,358,359,362,364,365,367,368,369,370,373,375,381,383,385,386,387,391,392,395,398,400,403,409,412,414,415,416,417,418,419,430],thick:[31,169],thin:[169,414],thinbug:339,thing:[34,107,169,186,220,228,229,263,266,277,383,414,415,417],thingscloud:393,think:[169,176,220,228,322,392,414],third:[28,64,130,169,181,182,183,261,318,320,322,387,391,403,414,415,417,418],third_exp_:415,this_meta:415,those:[106,277,415,418],though:415,thought:[220,228],thousand:[103,415],thread:[7,132,175,279,322,342,343,355,362,369,383,395,417,418],three:[11,21,28,34,38,61,75,107,111,169,172,215,219,220,222,228,246,266,277,316,331,343,370,373,412,414,415,417],threshold:[31,44,83,106,169,220,228],through:[0,4,12,22,28,41,58,59,82,101,104,106,112,122,143,169,198,208,209,211,212,213,215,219,220,221,222,228,229,234,240,246,261,269,279,280,284,289,292,295,306,312,320,321,322,330,337,340,342,349,352,353,363,364,365,366,369,370,372,376,384,391,394,396,398,409,414,415,416,417],throughout:[199,200,201,415],thrown:415,thu:[169,219,279,415],ti:258,tick1:31,tick2:31,tick64:[31,124,190],tick:[22,31,33,41,108,131,145,170,185,191,209,216,222],tick_int_prior:222,tick_per:103,tick_str:103,tickperu:190,ticks1:[188,189,190],ticks2:[31,188,189,190],ticks32:103,tid:[130,208],tie:61,tielview:169,tight:101,tighten:398,tightli:398,tile1:169,tile2:169,tile3:169,tile:[145,170],tileview:[145,170],tileview_:169,tileview_add_el:169,tileview_cr:169,tileview_demo:169,tileview_set_edge_flash:169,tileview_set_tile_act:169,tileview_set_valid_posit:169,tim1_ch4:263,tim1_etr:263,tim2:[261,322],tim2_ch1_etr:263,tim2_ch2:263,tim2_ch3:263,tim2_ch4:263,tim2_remap:263,tim3_irqhandl:263,tim5:[261,322],tim:[261,322],tim_clearitpendingbit:263,tim_cmd:263,tim_getitstatu:263,tim_it_upd:263,tim_itconfig:263,tim_opmode_singl:263,tim_selectonepulsemod:263,tim_setcount:263,time:[2,4,6,12,13,14,17,22,26,27,29,31,33,34,35,40,41,44,46,57,59,61,62,64,65,66,67,75,82,101,103,104,112,120,123,124,129,130,131,136,137,145,170,172,175,181,182,183,197,204,205,206,220,222,228,229,234,240,243,246,251,256,261,265,266,269,271,277,279,289,292,295,306,308,312,317,318,319,322,338,342,343,350,357,358,360,369,370,372,387,396,398,400,403,412,414,416,417,418,419],time_inact:61,time_m:169,time_t:370,time_tick:31,time_u:31,timea:31,timeb:31,timeout:[26,31,59,61,66,82,101,107,124,131,187,209,220,228,279,292,308,343,369,372,417,418],timeout_tim:279,timer0:33,timer1:279,timer4:279,timer:[19,31,33,46,57,78,101,112,118,129,130,131,136,139,175,185,192,210,214,216,220,226,228,232,237,245,251,261,262,279,292,304,310,322,331,337,343,363,364,369,370,371,376,384,417],timer_handl:343,timer_id:[112,131,372],timer_start:[31,417],timer_stop:[31,372,417],timerid:417,timerloopstart:[22,31,66,67,139,208,210,211,212,213,280,416],timerout:372,timerpool:417,timerstart:[31,118,208,220,228,416],timerstop:[31,118,208],timerstopal:31,timestamp:[8,34,108,117,124,261,265,279,322],timezon:[31,279],timx:263,tin:312,tinder:409,tinyml:219,tip:[218,339,414],titl:[41,145,170,362],tkip:383,tl:[34,62,124,265,270,279,283,322,421],tld:[385,391],tlink:61,tm1637:61,tm1638:350,tm1640:61,tm1650:61,tm1650_kcb:90,tm8211:29,tm:124,tm_hour:54,tm_mdai:54,tm_min:54,tm_mon:54,tm_sec:54,tm_wdai:54,tm_year:54,tmp:[53,128,350],tmpfile:175,tmpname:175,tname:415,to32:31,to64:31,to_:415,to_garbag:415,to_set_:415,tobase32:31,tobase64:[8,31],toc:169,tocod:31,todai:[11,38,135,169,173,414],today_d:169,todo:[37,125,146,147,149,150,151,153,157,158,160,161,162,163,164,166,167,168,176,179,227,248,249,301,303,324,327,349,364,365,370,425,433,436,439],togeth:[112,169,277,365,398,400,414,415,423],toggl:[31,169,315,403],tohex:[3,13,21,31,64,75,81,103,104,106,109,110,113,116,121,138,141,178,188,189,190,198,203,204,205,206,210,220,228,392],toidx:415,tointeg:175,token:[31,82,415],tolumb:414,tone:169,tonumb:[128,175,414],too:[101,111,124,169,177,215,218,229,279,292,306,312,316,317,342,343,356,358,359,369,398,400,412,414,415,429],tool:[15,19,103,112,115,169,216,221,226,229,256,261,266,269,274,281,284,292,295,297,306,322,330,339,361,362,386,396,406,407,409,412,414,415,419],toolbar:222,toolchain:[356,360],top:[11,38,135,144,169,221,258,289,343,387,403,409,415],top_fit_typ:169,topic:[31,61,126,319,322,343,375,384,414],topolog:396,toss:307,tostr:[31,175,414],total:[14,15,18,19,26,29,33,41,81,97,106,118,122,124,169,177,181,182,183,194,229,251,263,266,271,280,304,331,362,363,376,378,384,385,386,394,415,417],total_count:368,total_kb:14,total_len:386,total_sat:41,total_sector:14,totp:[31,279],touch:[31,101,106,120,129,131,169,237,322,412,414],touch_sensor:241,touchkei:[31,129,241],touchkey_inc:134,tovalu:31,tp:[31,415],tpara:61,tpname:31,trace:[229,246,415,421],traceback:175,traceswo:[261,322],track:[219,277],tract:29,tradit:126,traffic:[106,124],trail:415,train:106,transceiv:[136,210,211,212,213,220,228],transfer:[31,41,84,136,143,181,182,183,204,205,206,211,212,213,220,228,261,279,322,343,364,381,401,412,415,421],transfer_done_top:31,transform:[3,22,169,263,414,415],transit:[71,101,143,169,280],translat:[323,415],transmiss:[28,35,75,94,106,112,124,126,140,178,181,182,183,210,211,212,213,220,228,251,263,271,279,280],transmit:[14,59,106,121,124,126,141,210,211,212,213,219,220,228,263,271,312,374],transmitt:[210,211,212,213,220,228],transpar:[135,145,170,421],transplant:[258,261,322],transport:124,travers:[415,417],treasur:[396,398],treat:[169,414,415],treatment:[393,415],tree:[38,222,415,422,432,435,438],tri:[106,289,400,415],trial:29,triangl:[135,320],trick:[400,401],trigger:[22,78,107,112,118,124,136,184,185,216,220,228,261,278,284,322,337,338,343,365,370,379,396,403,409,415],trim:31,trimmer:[145,170],trimtrailingwhitespac:218,triod:[259,262],tripl:[34,107],triplet:34,trng:31,troubl:[268,322,341],troubleshoot:[232,263,322],troublesom:[82,198,220,228,343,374,375],true_track_degre:41,truli:106,truncat:[32,144,279,391],try_ipv6:59,tsec:124,tsl2561:61,tsl2561_data:91,tssop20:225,tstg:246,tt:[29,31,279,280,283,285,292,296,297,322],ttf:169,ttl:[210,211,212,213,306],tts_onchip:[279,280],tube:[61,84,124,229,412],tune:[33,136],tupl:34,turn:[0,2,5,7,9,12,20,22,28,30,38,41,55,76,82,89,90,106,107,112,114,118,124,130,134,135,136,137,139,140,141,169,177,185,192,196,207,215,216,220,222,228,246,258,261,276,277,278,279,284,291,292,295,306,312,315,322,333,349,363,376,378,384,396,398,403,415,418],turnkei:[280,395],turnov:322,tutori:[22,110,126,130,136,144,145,171,184,191,196,202,207,214,218,220,221,225,228,232,237,243,245,254,261,283,294,310,312,322,331,336,341,351,352,353,359,387,395,398,409,418],tuya:[31,62],tv:229,twai:312,twice:[169,261,279,289,322,414,415,417],twinkl:220,two:[11,14,22,26,38,41,65,101,103,107,135,169,172,177,181,182,183,185,191,199,200,201,204,205,206,210,214,216,218,220,222,228,230,235,236,237,239,242,246,261,264,266,269,270,276,277,278,279,284,306,312,315,318,322,330,337,342,343,356,357,359,365,378,396,400,409,414,415,417,418,427],tx0:229,tx:[29,31,59,61,210,211,212,213,220,226,228,256,257,312,338],tx_:124,tx_done:100,tx_hwtimer_id:31,tx_ok:124,tx_pin:31,tx_timeout:100,txbuff:31,txconfig:31,txd:226,txfp:[261,322],txpacket:61,txstat:31,txt:[20,32,41,108,119,123,169,199,200,201,220,228,280,357,359,391],type:[0,1,2,4,5,7,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,170,175,180,185,199,200,201,214,216,246,263,266,278,279,284,289,306,312,315,322,337,350,356,357,358,363,364,369,373,376,378,384,386,387,388,389,394,398,401,403,412,416,417,418],type_font:358,type_funct:415,type_rect:169,type_si:12,type_thread_:415,type_usr:12,typec:[215,258,306,396],typedef:[366,374,378,385,415],typic:[2,7,28,39,41,101,103,141,169,220,222,228,229,266,281,283,294,322,401,409,412,415],tz:31,u0_rx:306,u0_tx:306,u16:144,u1_rx:[210,211,212,213],u1_tx:[210,211,212,213],u32:144,u4:322,u64:144,u8:144,u8g2:[10,16,31,129,179,279,280,285,292,296,333,352,358,378],u8g2_font_unifont_t_symbol:135,u8g2_get:31,u8g2_load:31,u:[124,137,169,175,257,258,421],uart0:[115,136,211,212,213,220,228,229,278,279,284,295,304,306],uart0_ct:246,uart0_rx:[231,236,246,253,267,284,295,306],uart0_tx:[229,231,236,246,253,267,273,284,295,306],uart1:[136,185,210,214,216,220,228,278,279,284,295,306],uart1_ct:246,uart1_rt:246,uart1_rx:[220,228,231,236,246,253,267,273,284,295,306,312],uart1_rxd:284,uart1_tx:[220,228,231,236,246,253,267,273,284,295,306,312],uart2:[41,57,103,277,278,279,284,291,295],uart2_ct:246,uart2_rt:246,uart2_rx:[231,236,246,253,267,277,284,295,312],uart2_tx:[231,236,246,253,267,284,295,312],uart3:295,uart3_ct:246,uart3_rt:246,uart3_rx:[231,236,246,267,295],uart3_tx:[231,236,246,267,295],uart485:[279,292],uart4_rx:[231,236,267],uart4_tx:[231,236,267],uart5_rx:236,uart5_tx:236,uart:[4,31,41,59,94,103,106,115,129,143,185,188,189,209,216,217,232,246,251,270,277,279,283,291,292,294,297,304,306,312,319,321,322,323,337,365,369,374,376,377,384,392],uart_br:61,uart_data:106,uart_id:[31,61,136,220,228],uart_recv_id:[220,228],uart_tx:136,uartid:[95,96,210,382],uartimeout:[220,228],uarttask:[220,228],uatt0_rx:273,ubuntu:[356,357],uc1701:135,uc6228:317,uc6228ci:317,uc:330,uco:417,ucs2:30,ucs2b:30,ucs2betoutf8:30,ud:[368,370,387,415],udata:[13,104,175],udelai:31,udisk_attach_sdhc:31,udisk_detach_sdhc:31,udp:[61,124,279,285,292,296,297,421],udpsrv:61,uev:263,ui:[179,218,280,285,289,296,360,361,406],ui_upd:179,uid:[61,220,228],uint16_t:[263,271,366,374,378,385],uint32:373,uint32_t:[101,169,222,263,364,366,367,369,371,372,374,378,381,382,385,387],uint64:103,uint64_t:343,uint8:[373,374],uint8_t:[222,263,271,366,367,370,371,374,378,381,382,385],uion:374,ulink2:263,ullamco:169,ult:175,ultim:276,ultra:[217,258,277,279,320,421],ulwip:265,unabl:[65,225,229,265,279,292,308,322,323,331],unambigu:344,unari:415,unauthor:178,unavail:292,uncertain:415,unchang:[144,417],uncheck:[145,170],uncom:[352,353,359],uncompress:31,unconfigur:2,uncontrol:278,uncov:[283,322],uncreat:415,undeclar:414,undefin:415,under:[2,16,24,27,76,108,169,199,200,201,220,222,229,246,256,266,269,279,283,294,315,318,322,323,330,338,341,342,356,357,360,361,365,398,400,415],underli:[1,9,14,24,29,31,32,41,75,101,103,105,106,107,111,112,124,129,133,135,139,169,175,192,209,216,265,266,278,279,280,281,292,323,341,342,358,361,370,372,374,395,415,421],underlin:[387,415],underscor:[387,415],understand:[82,138,169,217,266,284,295,339,341,342,398,403,415,416,417],understood:[38,414,417],undervoltag:[251,337],unequ:[144,415],unexpect:[169,220,228],unfamiliar:417,unfil:78,unfinish:415,unhid:169,unic:306,unicod:[30,135,169,378,415],unicode_max:378,unicode_min:378,unicode_w:378,unicom:[123,131,277,296],unifi:[169,258,289,386],unifont_t_symbol:16,uniform:[279,342,366,415],uniformli:[358,415],uninstal:[258,279,292],union:415,uniqu:[82,103,106,107,138,185,191,216,266,269,343,415,417,418],unique_id:[12,31,62,82,106,188,189,190,331],unit:[0,2,9,12,14,15,19,22,26,28,29,39,41,62,74,93,99,100,103,106,107,112,117,120,133,134,136,138,140,177,246,263,279,289,350,372,400,412,414,415,417,418],univers:[199,200,201,210,211,212,213,215,220,228,242,258,269,366,403,415],unix:415,unknow:106,unknown:[5,9,37,39,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,93,94,95,96,103,106,111,112,119,124,125,133,134,137],unless:[75,112,113,130,133,169,229,277,342,364,415],unlik:[263,289,340,414,415],unlimit:[59,279],unload:101,unlock:[106,109,310,322,430],unmount:31,unnecessari:412,unop:415,unpack:[8,31,129,175,220,228,279,373,375,392,417],unpars:[279,292],unplug:215,unposit:41,unpredict:415,unprotect:[415,417],unreach:415,unread:415,unreason:279,unregist:[106,383],unreli:412,unrepres:415,unrespons:28,unrol:415,unscii:169,unsign:[3,103,110,144,289,374,392,415],unsignen:144,unsold:263,unstabl:400,unsubscrib:[31,61,417],unsuccess:322,unsupport:[137,263],until:[7,28,106,112,118,124,173,312,365,415,417],unus:417,up:[5,14,15,19,21,22,24,28,33,38,72,99,101,106,112,115,117,121,123,124,126,132,133,141,145,170,175,192,193,194,195,204,205,206,211,212,213,220,222,226,228,231,232,234,236,240,246,251,256,258,261,262,263,266,267,270,271,279,284,285,290,292,295,296,306,312,316,320,321,322,337,349,350,365,369,371,378,379,388,390,391,396,398,403,409,414,417,418,429],updat:[8,17,26,38,48,76,82,101,103,131,135,145,170,179,216,221,255,261,263,269,275,277,279,292,316,317,318,322,323,337,349,351,355,356,357,365,387,409,415],upgrad:[19,31,61,111,118,129,256,257,258,262,265,268,270,279,283,289,292,306,312,322,338,396,398,406,416,421],uplink:[5,106,107],uplinkb:106,uplinkgb:106,upload:[12,20,59,82,137,220,221,228,266,279],upload_zbuff1:31,upload_zbuff2:31,upon:415,upper:[11,38,101,105,135,169,175,218,256,263,398,412,414],uppercas:[8,169,387,414,415],upstream:[106,271],upvalu:415,upvalueid:175,upvaluejoin:175,urg:344,uri:[27,31],url:[31,59,66,67,128,268,279,322,387,414],urlencod:[26,31,59],us:[0,2,4,6,7,8,9,10,11,12,14,15,16,17,18,19,22,23,24,26,28,31,32,33,35,36,37,38,41,42,44,45,46,47,48,50,51,52,53,54,56,57,59,60,61,63,64,65,66,67,68,69,71,72,74,75,76,77,79,80,81,82,83,84,85,86,87,88,91,93,94,95,96,101,103,104,106,107,108,109,111,112,115,116,117,118,119,120,124,126,128,129,130,131,133,135,136,138,140,141,143,145,169,171,173,175,177,178,179,180,181,182,183,185,186,187,188,189,190,192,193,194,195,197,198,202,203,204,205,206,209,210,214,215,216,218,219,220,221,225,228,229,239,243,246,256,259,261,262,265,267,268,269,270,273,277,278,279,280,281,284,285,286,287,289,291,292,295,296,307,310,312,315,317,319,320,322,326,328,332,336,337,338,339,340,341,342,344,347,349,350,351,352,353,356,357,359,360,361,362,363,365,366,367,368,370,375,376,377,378,383,384,385,386,387,388,390,392,393,394,395,396,398,401,403,407,409,413,414,416,417,419,424,427,429,431,434,437,440,443],us_h:103,us_l:103,usag:[1,12,21,29,42,44,45,46,47,49,50,51,52,53,54,55,56,57,60,63,64,66,67,69,70,71,72,73,74,75,76,77,79,80,81,83,84,85,86,87,88,89,91,92,93,94,95,96,103,106,107,110,116,118,140,141,144,145,170,185,216,232,261,262,265,279,292,322,342,345,349,374,387,396,398,403,409,415,417],usart1_ct:263,usart1_rt:263,usart:[226,261,322],usb:[4,8,14,31,106,112,124,129,210,211,212,213,215,220,228,245,251,257,258,261,262,279,283,285,294,296,304,306,312,315,322,333,365,396,398,401,403,406,407,421],usb_d:306,usb_istr:263,usb_uart:279,usba:258,usbapp:[31,129],usbboot:[294,322],usbclk:259,usbdm:263,usbdp:263,use_full_assert:222,use_ipv6:31,use_lvgl_simsun_48:169,use_spiid_init:[199,200,201],use_zbuff:[211,212,213],useless:[0,263,394],user:[1,2,4,8,12,15,19,20,26,31,35,62,64,66,67,75,76,90,98,106,107,112,118,124,137,169,177,178,180,181,182,183,185,187,188,189,190,199,200,201,204,205,206,209,216,219,220,225,226,244,256,258,263,266,279,280,284,295,304,322,323,337,338,344,347,348,349,362,368,369,370,371,374,375,379,381,382,383,386,387,388,390,396,398,401,403,407,409,412,415,417,418],user_data:124,user_flag:31,user_msg:208,user_nam:[31,34],user_script:326,user_stop:2,userdata:[6,8,11,15,16,17,19,23,25,26,30,32,38,40,66,68,71,97,100,101,107,121,122,124,126,135,140,143,169,415],userid:62,userkei:62,usernam:[31,106],usim_det:[284,295],using_non_wrapping_output_buf:104,usleep:127,usr:415,usual:[0,2,14,26,36,39,41,82,101,108,109,112,113,115,116,117,118,119,121,124,130,133,137,139,143,144,169,177,186,215,220,228,229,246,266,280,316,317,320,340,342,349,352,353,356,358,362,365,369,371,378,385,391,409,412,415],usual_wrap_rul:415,ut:169,utc:[41,108,117,124,277,319,322],utf16:366,utf8:[30,38,48,131,135,175],utf:[169,175],util:[19,126,400],utran:106,uuid:322,uwb:[319,322],v0001:[118,294,322],v0004:386,v0007:[279,386],v0:[180,263],v1000:292,v1001:[294,295,322],v1002:[279,284,294,322],v1003:[294,322],v1004:[298,322],v1006:[310,322],v1016:284,v1020:[268,322],v1021:[268,322],v1022:[268,322],v1023:[268,322],v1103:[277,280,283,284,286,322],v1104:[283,289,322],v1105:[280,283,322],v1106:[276,283,322],v1107:[280,283,284,322],v1108:[280,283,322],v1109:[283,322],v1110:[283,322],v1111:[283,322],v1112:[277,283,322],v1120:276,v1:[141,175,177,180,194,199,200,201,205,206,211,212,213,231,236,241,242,244,258,267,278,293,322,365,396,406,407,409],v2023:265,v2:[11,61,141,175,256,257,258,293,320,334,335,337,342,345,386,396],v32xeaksgtieqxtqgwcldp5aplcnps3k:64,v4:355,v5:[289,359],v:[19,31,41,72,115,141,169,175,180,246,287,289,304],va_list:415,vaild:124,val1:[31,175],val2:31,val3:31,val:[31,61,82,93,110,120,144,220,228,415],valid:[11,14,15,17,19,21,22,28,33,38,41,107,116,124,126,135,136,137,144,169,175,197,220,277,279,306,316,317,318,388,390,414],valid_po:169,valid_pos_arrai:169,vallei:403,valn:31,valu:[0,1,3,4,5,6,7,8,9,10,11,12,13,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,175,177,180,181,182,183,197,203,204,205,206,210,215,220,222,228,229,246,261,266,269,273,279,284,286,289,295,305,316,317,318,322,337,340,341,342,356,358,359,362,364,369,370,372,373,374,379,381,382,387,388,389,390,392,394,396,398,401,403,409,417,418,421],value_:415,value_arrai:169,value_n:415,values_:415,vari:[21,169],variabl:[64,110,115,132,169,175,217,234,240,269,340,342,356,357,365,368,370,416,417,418],variables_:415,variad:415,variant:291,variat:41,varieti:[131,169,186,220,228,251,279,280,406],variou:[4,28,31,129,140,169,199,200,201,220,221,266,280,321,386,389,414,415],varlist:415,varnam:175,vast:118,vbat33:246,vbat:[0,82,220,228,253],vbu:[246,284,295,306,312],vcc33:246,vcc:[199,200,201,204,205,206,246,258],vcodec:173,vdd12:246,vdd25:246,vdd33:246,vdd33_out:246,vdd3p3_cpu:[306,312],vdd3p3_rtc:[306,312],vdd:[105,246,263,306],vdd_ref:317,vdd_spi:306,vdd_spi_as_gpio:306,vdiv:169,vdop:41,ve:169,vector:[101,337,366,426,427],velit:169,vendor:[369,370],veniam:169,ver_fit_typ:169,ver_r:169,veri:[82,116,133,145,170,172,173,186,193,194,195,198,218,220,228,258,278,279,284,295,306,316,322,343,370,375,393,409,414,415,417],verif:[62,104,106,107,116,124,136,279,317,318,387],verifi:[31,34,81,106,107,120,124,243,266,279,306,320,356,357,362,394,396,409],versa:415,version:[1,7,11,21,24,31,36,38,50,61,62,66,67,77,82,99,107,111,115,124,132,135,138,145,170,173,175,177,179,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,220,221,222,232,237,245,255,256,257,261,263,265,266,275,277,278,279,281,283,284,285,286,292,295,296,306,309,310,317,318,321,322,325,344,347,349,357,359,365,366,378,385,386,387,388,390,395,396,400,401,407,409,412,416],version_:118,version_get:31,vertex:11,vertic:[38,41,135,145,170,409,415],veteran:[395,413],vf:[173,391],vfs_fatf:279,vhid_cancel_upload:31,vhid_upload:31,via:[58,135,169,215,218,226,263,277,284,291,295,365,396,409,415],vibrat:229,vice:415,vid:31,vid_0d28:258,video:[22,31,89,90,110,126,130,136,144,145,215,216,218,220,228,351,352,353,359,387,395,398,400,418],video_h:173,video_plai:173,video_w:173,view:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,48,49,59,61,64,65,66,67,82,92,97,99,100,101,103,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,145,170,172,178,184,191,196,202,207,214,216,225,232,258,266,271,306,322,323,349,357,359,365,374,394,396,398,401,407,409,412,414,415,417,442],viewer:428,vih:246,vil:246,vin:[93,181,182,183],violat:415,virtual:[4,14,41,106,112,115,118,136,169,220,228,229,256,257,279,283,294,306,312,322,338,341,342,362,364,367,368,369,386,391,414,415],virtual_com_port:259,visibl:[41,136,137,145,170,175,266,388,390,414],visit:[169,266,420,421],visual:[169,218,361],visualstudio:218,vl6180:61,vlcd:31,vm:[16,38,209,342],vocal:29,voh:246,voic:[285,287,289,296,322],vol:[31,246,279],volatil:[199,200,201],volt:[31,129,219,285,287,290,296],voltag:[0,2,11,39,60,71,112,172,177,220,228,229,231,236,242,246,251,253,261,267,279,292,322,337,396,398,401,406,407,409],voltage_1800:2,voltage_3300:2,volum:[2,106,279,283,322,412,414],volupt:169,vs1838:75,vscode:[216,341,352,353,356,365],vsiminit:31,vsimonoff:31,vss:246,vta:41,vtg:41,vuart_0:[4,41,106,136],vulner:279,w1_connect:31,w1_read:31,w1_reset:31,w1_write:31,w25q128:[199,200,201,204,205,206,220,228,307],w25q128jv:[204,205,206],w25q128jv_dtr:[204,205,206],w25q32:75,w25q64:75,w25qxx:75,w5100:265,w5500:[31,124,126,129,279,292,333],w600:[126,273,275],w800:[231,236,271,304,322,333],w801:[304,333],w805:[304,333],w806:[239,322,333],w:[14,31,32,98,169,173,186,187,199,200,201,220,228,375,391,403,415],w_:415,wa:[3,6,8,15,17,19,21,22,28,41,48,103,106,107,124,133,135,140,141,169,204,205,206,220,228,258,269,341,356,359,409,414,415],wai:[15,17,19,22,26,41,73,107,112,115,126,131,169,178,199,200,201,204,205,206,210,211,212,213,218,220,228,258,266,268,278,284,306,312,319,322,330,337,340,341,342,343,364,365,366,367,369,398,403,414,415,416,417,418,443],wait485:[31,279],wait:[11,20,22,24,26,28,29,31,38,42,43,44,45,47,49,50,51,52,53,54,56,57,60,61,62,63,64,65,66,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,103,105,106,107,112,118,120,132,136,139,140,141,169,172,173,177,179,181,182,183,185,188,189,190,193,194,195,197,198,203,204,205,206,215,216,220,221,228,229,243,263,269,277,279,310,322,339,342,349,358,360,361,363,364,369,372,376,382,384,387,388,390,392,394,415,416,417],waitabl:[388,390],waitc:[363,376,384],waitlink:61,waitmsg:31,waitt:[363,376,384],waituntil:[28,31,64,65,82,106,107,114,126,140,141,208,375,387,416,417],waitxxx:130,wake:[38,99,112,117,132,192,220,232,234,240,279,284,292,295,322,371,417,418],wakecmd:38,wakeup0:[284,295],wakeup1:[284,295],wakeup2:[284,295],wakeup3:295,wakeup4:295,wakeup5:295,wakeup:[31,112,229,234,240,284,295,337],wakeup_in:253,wakeupin:112,wakeuppin:31,wakup0:[284,295],waldemar:415,walk:[118,365],wand:[222,256,258,338],want:[11,82,103,106,138,169,172,220,226,228,258,266,307,322,340,341,343,352,353,357,359,396,414,415,416],ware:338,warehous:[173,215,217,220,258,285,296,306,312,352,353,357,359,409],warm:228,warn:[16,31,111,118,187,220,228,279,356,357,375,398,403,412,417],warning_level:31,wast:[75,378],watch:398,watchdog:[31,61,112,129,187,209,220,251,337],watchdogpin:61,water:118,watt:403,wav:[2,6,29,292,297],wave:[22,35,220,228,229,412],waveform:[9,220,228,396,401,409,412],wb:[6,32,220,228],wba_abc:343,wbc_abc_cb:343,wbc_abc_handl:343,wcdma:287,wdai:[78,415],wdata:81,wdt:[31,129,187,209,220,279,292,297,308,333],we:[101,169,172,173,177,178,186,193,194,195,198,199,200,201,204,205,206,211,212,213,218,220,222,226,228,243,256,258,338,340,342,343,352,353,357,358,359,370,394,395,412,414,415,417,419],weak:[106,175,278,279,284,295],wealth:[270,395],weather:[11,38],weather_icon:31,web:[258,306,366,415,421],web_audio:280,websit:[8,21,34,64,82,218,266,277,279,317,318,332,339,356,357,400,415,420],websocket:[31,107,129,279,285,292,296,297,333],websocket_cli:140,websocket_conack:140,webusb:258,wechat:[141,396,407],week:[78,415],wei:84,weight:[101,169,414],welcom:[221,287,384,393,395,396],weld:[229,312,398,403],well:[169,172,173,220,228,266,271,316,398,403,414,415],wendal:[15,19,113,341,364,365,367,368,369,371,372,373,374,379],wenquanyi:179,went:17,wep:383,wep_psk:383,wep_shar:383,wepval:263,were:[32,128,131,269,415],west:[41,117],western:169,wget:360,wgs84:[41,64,65,277,421],wh:[403,409],what:[0,24,133,138,141,144,169,172,175,176,199,200,201,218,225,232,254,261,268,274,283,294,322,336,341,343,349,352,353,359,362,363,370,375,376,384,388,389,414,416,417],whatev:415,wheel:[409,412],when:[2,5,11,12,14,15,17,19,22,26,28,32,33,34,36,38,41,48,59,64,65,75,78,82,84,103,106,107,112,117,118,120,121,123,124,126,132,135,136,137,138,141,144,169,172,173,177,181,182,183,188,189,193,194,195,197,204,205,206,211,212,213,218,219,220,222,226,228,229,231,236,246,258,259,261,262,265,266,267,269,271,276,277,278,279,281,284,289,292,295,306,308,312,321,322,323,339,342,343,345,359,360,361,365,369,378,387,391,392,394,396,398,401,403,409,414,415,416,417,418],whenc:175,whenev:[78,415],where:[28,37,75,101,102,105,110,121,126,144,169,187,215,220,228,268,271,286,306,322,326,339,348,366,370,388,390,409,414,415,416],where_ddd_i:415,where_n_i:415,where_set_i:415,where_x_and_y_remain_balanc:415,where_xx_must:415,where_xxx_i:415,wherein:330,whether:[2,3,6,8,11,12,14,17,20,24,26,28,29,32,33,35,38,39,41,48,59,64,66,68,72,75,76,94,99,103,104,106,107,112,118,120,123,124,126,128,135,136,140,141,144,169,215,220,222,228,229,256,258,261,262,277,279,284,295,306,322,326,338,342,347,356,357,370,383,387,391,400,412,414,415,417,418],which:[0,2,5,8,12,13,16,18,21,22,24,26,29,30,32,34,36,38,40,41,49,59,64,66,75,78,82,90,98,99,100,101,103,104,105,106,107,108,110,111,112,113,115,118,119,121,124,130,132,136,141,143,144,169,172,177,181,182,183,187,199,200,201,209,210,215,218,219,220,221,222,228,229,246,251,258,259,263,266,269,271,277,278,279,280,281,284,289,291,292,295,304,306,312,316,317,318,322,330,332,337,340,341,342,343,356,358,359,360,362,365,369,370,374,375,378,379,385,387,395,398,400,401,403,409,412,414,415,417,418],white:[11,101,216,229,306,322,413,415],whiteboard:[221,222],who:[106,256,258,307,338,413,414,416],whole:[258,284,295,406,414,415,417],whose:[169,415],why:[145,170,322,362,363,376,377,384,396,414,415],wi:[270,421],wide:[11,38,169,172,373,385],wideband:320,widget:[101,145,170],width:[4,14,31,38,75,101,126,135,145,170,173,193,194,195,220,228,229,306,366,378,381,414,415],wifi:[31,41,64,82,124,129,135,231,236,265,266,267,275,279,285,296,304,312,314,316,319,322,333,376,377,384,387,393,395,396,421],wifiloc:[320,393],wifiscan:141,wignor:[356,357],wiki:[7,11,38,108,169,172,173,220,221,228,229,281,285,296,331,349,392,400],wiki_page_id:281,wikipedia:169,win10:[215,323,409],win11:323,win32:[136,339,357,360],win7:[215,256,258,262,306,312,338,356,400,406,409],win8:[256,262,306,312,338],win:[145,170,173,396,401,412],win_add_btn:169,win_add_btn_left:169,win_add_btn_right:169,win_close_event_cb:169,win_creat:169,win_demo:169,win_focu:169,win_part_bg:169,win_part_content_scrl:169,win_part_head:169,win_scroll_hor:169,win_scroll_v:169,win_set_anim_tim:169,win_set_layout:169,win_set_scrlbar_mod:169,win_set_titl:169,winbond:[199,200,201,204,205,206],window:[11,31,145,170,174,215,218,220,222,258,306,316,330,349,354,356,357,359,361,365,396,409,415],winter:220,winusb:[256,258,262,306,312,338],wip:[304,333],wire:[38,49,55,75,177,181,182,183,193,194,195,199,200,201,204,205,206,211,212,213,220,221,226,228,258,263,271,283,284,295,306,321,322,349,396,400,403],wire_3_bit_9_interface_i:38,wire_3_bit_9_interface_ii:38,wire_4_bit_8_interface_i:38,wire_4_bit_8_interface_ii:38,wireless:[322,383,395],wistr:263,with_x_and:415,with_y_:415,within:[22,169,219,220,228,229,263,287,289,316,320,340,343,364,384,414,415],without:[2,8,16,17,20,21,23,48,101,106,107,115,124,141,169,177,215,220,225,229,263,266,271,277,284,295,306,317,318,320,321,331,342,343,349,358,359,365,370,387,414,415,417,418,421],withstand:[261,322,412],wizpro200st8:[261,322],wlan:[31,129,269,297,333,376,377,384,387],wlan_scan_don:[141,387],wlanscan:[292,297],wmm:270,woff2:169,woff:169,woken:417,won:[414,415,417],wonder:414,word:[169,215,268,289,306,322,358,359,366,387,393,400,415],work:[2,4,20,29,38,57,75,76,81,90,124,169,197,210,211,212,213,219,220,228,229,246,251,262,263,279,290,292,337,339,361,394,403,415],work_mod:112,workaround:[263,279],workflow:339,workstat:323,world:[142,217,218,414,415],worri:[82,258,263,357,375,415],worst:[4,280],worth:[108,220,228,279,414],would:[266,415],wow:418,wp:[270,383],wpa2:[270,383],wpa2_aes_psk:383,wpa2_mixed_psk:383,wpa2_tkip_psk:383,wpa:[270,383],wpa_aes_psk:383,wpa_tkip_psk:383,wps_open:383,wps_secur:383,wr:25,wrap:[115,169,175,374],writ:[199,200,201],writabl:[169,271,391],write:[4,11,12,15,17,19,22,26,28,29,31,32,33,39,55,61,89,90,103,104,106,111,119,120,124,126,129,135,138,145,170,173,175,176,179,185,198,202,207,210,211,212,213,216,217,218,220,228,261,265,268,277,279,280,286,317,318,322,338,339,341,342,360,361,362,364,365,373,374,381,382,387,388,389,390,392,394,414,417,418],write_datablock:61,write_rawrc:81,write_zlib_head:104,writefil:[31,199,200,201],writei8:144,writeint8:373,writer:415,writereg:31,writeu32:144,written:[4,8,12,17,19,32,55,81,99,100,103,104,106,108,119,120,121,122,124,131,136,144,169,172,204,205,206,220,228,263,269,271,279,317,318,340,342,369,375,409,414,415,416],wrong:[17,66,67,103,120,258,263,268,279,293,322,341,352,353,359,364,372,400,415],wrote:[199,200,201,204,205,206,220,228],wrprterr:263,ws2812:[145,171,279],ws2812_h:172,ws2812_roll_show:172,ws2812_w:172,ws2812b:31,ws2812b_pwm:[31,172],ws2812b_spi:[31,172],ws:[140,394],wsc:31,wsc_conack:140,wsg84:64,wss:140,www:[26,41,59,78,204,205,206,217,339,415],x00ff0200:394,x01:28,x02:28,x03:28,x0:31,x1:[31,169],x1ffff7e8:263,x200ma:412,x200ua:412,x25:8,x2:[31,169],x2a:412,x2ma:412,x32:[31,188,189,190],x64:[356,357,359],x7f:415,x7fffffff:[33,103],x80:415,x8218dbc0:417,x:[4,21,26,31,44,47,56,59,63,69,74,80,83,110,129,169,175,220,221,232,233,239,246,263,279,286,365,378,398,403,414,416,417],x_id:169,x_of:169,x_offset:135,x_op_:415,x_xx_:415,xbf:415,xc2:415,xeltek:263,xf4:415,xfer:31,xhh:414,xi12m:246,xi32:246,xiao:[258,289],xiaomi:[398,403,412],xingli:[277,317,318],xip:219,xlsx:[231,236,244],xmake:[341,342,356,357,360,361],xmodem:[8,61,143,317],xo12m:246,xo32:246,xoffset:[11,38,173,220,228,331],xor:[8,135,169,262,415],xpcall:175,xt804:[22,268,271,304,305,322,333],xtal32k:246,xtal:246,xtalrefoutput:[31,291],xu:289,xuyuan:172,xx:[179,186,347,349,414,415],xxtea:[31,129,279,308],xxtea_encrypt:142,xxteatest:142,xxx:[6,14,17,20,27,32,59,62,66,67,82,107,108,115,119,124,289,316,341,343,345,346,347,349,356,357,383,387,394,414],xxxx:[32,124,331,349,352,387,417],xxxxx:[343,414,417],xxxxxblock:343,xxxxxx:[2,66,67,107,141,218],xxxxxxx:387,xxxxxxxxx:[343,375],xxxxxxxxxx:387,xy:417,y0:[31,289],y1:[31,169,289],y2:[31,169],y877bgo8x5owd3lcb5wwdjrynpob:34,y:[4,21,31,44,47,56,63,69,74,80,83,108,129,145,170,175,179,234,240,286,289,345,347,357,360,414,417],y_id:169,y_max:169,y_min:169,y_of:169,yahei:218,yc:317,ye:[4,106,112,124,169,218,266,331,342,357,400,414,417],yeah:22,year:[41,64,78,108,117,169,197,220,256,414,415],yeild:417,yellow:315,yet:[322,415],yhm27xx:120,yhm27xxx:31,yield:[175,417],yin:[89,90],yml:339,ymodem:[31,129,279],yoffset:[11,38,173,220,228,331],you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,172,173,178,179,180,184,186,191,192,196,197,198,199,200,201,202,203,207,208,210,211,212,213,214,215,217,218,220,221,222,226,228,229,243,246,256,258,259,262,263,266,269,277,279,280,281,284,287,292,306,307,312,315,317,321,322,338,339,341,342,343,349,351,352,353,356,357,359,360,361,362,363,376,377,384,387,391,393,394,395,396,398,403,409,413,414,415,416,417,418],you_:415,young:279,your:[124,138,169,179,186,215,221,222,256,307,321,338,343,352,358,359,398,400,403,412,413,414,415],yourself:[2,7,66,67,120,141,169,218,256,258,262,338,341,351,352,353,400,414,415,419],yuan:[400,415],yum:[352,353],yun:415,yuv411:312,yuv420:312,yuv422:312,yyi:[66,67,115,349,394],z:[44,47,63,69,74,80,83,110,286,415],zadig:[256,262,338],zbuff:[2,4,5,6,11,17,26,28,29,31,32,33,38,59,106,120,121,124,126,129,135,136,137,143,172,173,185,214,216,217,220,279,292,297,333,373,374,392],zda:41,ze08g:61,ze08g_ch2o:61,zeo:[285,296],zero:[8,21,106,169,234,240,279,289,403,415],zeropad:21,zeros_and_len:8,zeu:[258,270],zh07:61,zh07_pm10:96,zh07_pm1:96,zh07_pm25:96,zh:78,zhongk:318,zhou:[225,277,280,289,420,429],zhuff:28,zip:[267,278,279,280,352,353,356,357,359,386],zlib:[31,129],zone:[31,41,65,117,246,337,368],zoom:[2,169],zstruct:[374,393],zzz:[66,67,349],zzzzz:266,zzzzzzzzz:375},titles:["adc - Analog-to-digital conversion","antbot - Ant Chain","audio - Multimedia-Audio","bit64 - 32 Basic arithmetic and logical operations on 64-bit data on bit systems","camera - Camera","cc - VoLTE Call function","codec - Multimedia-Codec","coremark - Running points","crypto - Encryption and decryption and hash functions","dac - Digital-to-analog conversion","disp - disp Library (Obsolete)","eink - ink screen operation library","errDump - Error reporting","fastlz - FastLZ Compression","fatfs - read/write fatfs format","fdb - kv Database, power failure does not lose data","fonts - Font Library","fota - Underlying Firmware Upgrade","fs - Additional File System Operations","fskv - kv Database, power failure does not lose data","ftp - ftp Client","gmssl - national secret algorithm(SM2/SM3/SM4)","gpio - GPIO Operation","gtfont - Qualcomm Font Chip","hmeta - Hardware metadata","ht1621 - LCD Driver(HT1621/HT1621B)","http - http Client","httpsrv - http Server","i2c - I2C Operation","i2s - Digital Audio","iconv - iconv Operation","\ud83c\udf74 LuatOS-SOC Interface Documentation","io - io action (extended)","ioqueue - io Sequence operation","iotauth - IoT Authentication library, used to generate parameters for various cloud platforms","ir - infrared remote control","json - json Generating and parsing libraries","keyboard - Keyboard Matrix","lcd - lcd Drive module","lcdseg - Segment lcd","libcoap - coap Data processing","libgnss - NMEA Data processing","ads1115 - ads1115 analog-to-digital converter","ads1115plus - ADS1115 Drive","adxl34x - adxl34x 3 Axis accelerometer currently supports adxl345 adxl346","aht10 - aht10 Temperature and humidity sensor","air153C_wtd - Add software watchdog function to prevent crashes","ak8963 - ak8963 geomagnetic sensor","aliyun - AliYun Alibaba Cloud IoT Platform","am2320 - am2320 Temperature and humidity sensor","ap3216c - ap3216c Light sensor","bh1750 - bh1750 Digital light intensity sensor","bmx - bmx The air pressure sensor currently supports bmp180 bmp280 bme280 bme680 will automatically judge the device","cht8305c - cht8305c Temperature and humidity sensor","ds3231 - ds3231 Real Time Clock Sensor","ec11 - ec11 Rotary encoder","gt911 - gt911 Drive","gy53l1 - gy53l1 laser ranging sensor","httpdns - Domain name resolution using Http","httpplus - http Supplement to the library","ina226 - ina226 Drive","\ud83e\udd62 Extended Library Interface Documentation","iotcloud - iotcloud Cloud platform library (supported: tengxun cloud ariyun onenet huawei cloud graffiti cloud baidu cloud tlink cloud others will also support, and the useful issue will accelerate support )","l3g4200d - l3g4200d Three-Axis Digital Gyroscope Sensor","lbsLoc - lbsLoc Sending Base Station Location Request","lbsLoc2 - base station positioning v2","libfota - libfota fota Upgrade","libfota2 - fota Upgrade v2","libnet - libnet synchronous blocking api based on the socket library, the socket library itself is asynchronous non-blocking api","lis2dh12 - lis2dh12 Three-axis sensor","lm75 - lm75 Temperature Sensor Support lm75a lm75b","max31856 - max31856 Thermocouple temperature detection","mcp2515 - mcp2515 CAN Protocol Controller Driver","mlx90614 - mlx90614 infrared temperature","mpu6xxx - mpu6xxx Six-axis/nine-axis sensor support mpu6500,mpu6050,mpu9250,icm2068g,icm20608d","necir - necir NEC protocol infrared receiving","netLed - netLed Network status indicator","pca9685 - pca9685 16 Road PWM drive steering gear","pcf8563t - pcf8563t Clock Module","pcf8574 - pcf8574 IO Extension","qmc5883l - qmc5883l geomagnetic sensor","rc522 - rc522 Non-contact read/write card driver","rtkv - Remote KV Database","sc7a20 - sc7a20","shift595 - shift595 74HC595 Chip","si24r1 - si24r1 Drive","spl06 - spl06_01 Air pressure sensor","tcs3472 - tcs3472 Color Sensor","tm1637 - tm1637 Digital tube","tm1640 - tm1640 Digital tube and LED driver chip","tm1650 - tm1650 Digital tube and key scanning chip","tsl2561 - tsl2561 light intensity sensor","udpsrv - UDP Server","vl6180 - VL6180 laser ranging sensor","xmodem - xmodem Drive","ze08g_ch2o - ZE08G-CH2O electrochemical formaldehyde module","zh07 - ZH07 Laser Dust Sensor","little_flash - LITTLE FLASH Software package","log - Logstore","lora - lora Drive module","lora2 - lora2 Driver module (supports multi-hanging)","lvgl - LVGL Image Library","max30102 - Heart Rate Module(MAX30102)","mcu - encapsulation mcu some special operations","miniz - Easy zlib compression","mlx90640 - infrared temperature measurement(MLX90640)","mobile - Cellular Network","mqtt - mqtt Client","os - os Operation","otp - OTP Operation Library","pack - Packing and unpacking format string","pin - Pin Naming Map","pm - Power Management","protobuf - ProtoBuffs Codec","pwm - PWM Module","repl - \u201cRead-evaluate-output \u201cloop","rsa - RSA encryption and decryption","rtc - Real Time Clock","rtos - RTOS underlying operation library","sdio - sdio","sensor - Sensor Operation Library","sfd - SPI FLASH Operation Library","sfud - SPI FLASH sfud Software package","sms - SMS","socket - Network Interface","softkb - Software Keyboard Matrix","spi - spi Operation Library","statem - SM State Machine","string - String Manipulation Functions","Adaptation status","sys - sys Library","\ud83d\udcee sys System Messages","sysplus - sys A strong complement to the library","timer - Operating the bottom timer","touchkey - Touch keys","u8g2 - u8g2 graphics processing library","uart - serial port operation library","usbapp - USB Functional operation","w5500 - w5500 Ethernet driver","wdt - watchdog Operation Library","websocket - websocket Client","wlan - wifi Operation","xxtea - xxtea encryption and decryption","ymodem - ymodem Agreement","zbuff - c Memory Data Manipulation Library","\u2328\ufe0f Application Development","Code","Equipment","\u2328\ufe0f Alibaba Cloud application development","Introduction","Project","Test","\u2328\ufe0f Cloud Platform Basic Preparation","Introduction","<no title>","<no title>","\u2328\ufe0f Cloud Platform Application Development (Incomplete)","Code","Equipment","\u2328\ufe0f OneNet Application Development","Introduction","Project","Test","Code","Equipment","\u2328\ufe0f Tencent Cloud Application Development","Introduction","Project","Test","LVGL for LuatOS Manual","lvgl","Peripherals","LuatOS-Soc Driver WS2812 Tutorial","Air105 Video playback","Video playback","\ud83d\uddc3\ufe0f Data Archiving","Technical Miscellaneous Talks","adc","CRYPTO","DISP","fdb","air101","air103","air105","i2c","API Tutorial","LCD Drive screen","log","air101","air103","air105","mcu","PM","air101","air103","air105","pwm","RTC","sfd","air101","air103","air105","sfud","SPI","air101","air103","air105","spi","sys","timer","UART","air101","air103","air105","uart","Burn Tutorial","\ud83d\udcda Development Tutorial","recommend learning line","Construction of development environment","Air Watch","\ud83d\ude97 W806","Air001 Arduino-based user manual","Air001 Keil MDK-based user manual","Development Board","Hardware Data","\ud83d\udef4 Air001","Air001 Chip","Air001 power consumption curve","Air101 Getting Started Manual","Air101 Hardware Design Tutorial","Development Board","Hardware Data","\ud83d\ude97 Air101","Air101 Chip","Air101 power consumption curve","Development Board","Hardware Data","\ud83d\ude97 Air103","Function Description of Segment Screen/Segment Screen","Air103 Chip","Air103 power consumption curve","Touch sensor/touch button","Air105 Development Board","Air105 Script Encryption","Hardware Data","\ud83d\ude97 Air105","Air105 Chip","Air105 power consumption curve","Air106 Development Board","Hardware Data","\ud83d\ude97 Air106","Air106 Chip","Development Board","Hardware Data","\ud83d\udcf6 Air302","Air302 Module","Air32F103 Manual","Development Board","DAPLink Manual","Enhanced function instructions","Hardware Data","\ud83d\udeb2 Air32F103","AIR32F103 Chip","Transplant from SXX32F103","Air601-12F Development Board","Firmware Release Notes","Upgrade with the co-IoT platform","Air601 Hardware Data","\ud83d\udce1 Air601","About the mac address","Air601","SPI SLOVAL FUNCTION","Development Board","Hardware Data","\ud83d\udce1 Air640w","Air640w","Air700E Additional instructions","Air780EG Additional instructions","Development Board","EC618 Series Firmware Release Notes","Firmware Description","FOTA Upgrade and generation of upgrade package","Hardware Data","\ud83d\udcf6 Air780E(EC618 Series General)","LuatOS IO multiplexing configuration under firmware","Air780E Module (EC618 Series General)","Description of mass production brush machine","Network Characteristics","Setting and difference of anti-shake of power-on key","TTS Description of the function","Air780EPV Additional instructions","Air780EPVH Additional instructions","Ec718p Series Firmware Release Notes","Hardware Data","\ud83d\udcf6 Air780EP(EC718P Series General)","LuatOS IO multiplexing configuration under firmware","Air780EP Module (EC718P Series General)","Air780EPS Module Firmware Release Notes","\ud83d\udcf6 Air780EP(EC718P Series General)","Air780ES Module","Development Board","Hardware Data","\ud83d\udea2 Air901","Air901 Chip","\ud83d\udcca Chip comparison and selection table","Performance testing (based on coremark)","ESP32C3-CORE Development Board","Replace flash tutorial","Issue Notes","Hardware Data","\ud83d\udce1 ESP32-C3","ESP32C3 power consumption curve","ESP32S3-CORE Development Board","Hardware Data","\ud83d\udce1 ESP32-S3","Portable wifi data collection","auxiliary positioning AGPS","Air510U","Air530Z","\ud83d\udea2 satellite navigation GNSS","Introduction to Other Positioning Methods","Used with communication modules (such as 4G modules)","\ud83e\uddee Chips and Development Boards","LuaTools Version History","Function introduction","Core Software LuaTools","Generate and manage luadb files","Detailed Command Line Manual","\ud83d\udce1 PC Simulator","Code base for simulator","Method of use","FAQ List","\ud83d\udce1 RP2040","Equipment Support/Supported Devices","Development Board","Hardware Data","\ud83d\udeb2 SWM181CBT6","SWM181CBT6 Chip","SWM181 Manual","\ud83d\udda5\ufe0f PC End version","Lua Library File Writing Guide (Pure Lua Writing)","Add Custom Functions (Rapid Edition)","Add custom libraries and functions (full version)","C Interface implements Task waiting function","LuatOS CLI - Command Line Tools","LuatOS CLI Basic Commands","LuatOS Burn command","LuatOS Package Management Commands","LuatOS Project Management Commands","CLI Interactive Conceptual Design","LuatOS User Project","\ud83d\udc68\u200d\ud83d\udcbb Compile source code","\ud83d\ude97 Air101 / Air103","\ud83d\ude97 Air105","\ud83d\udcf6 Air302","\ud83d\udce1 Air640w","\ud83d\udcf6 Air780E Compilation Guide","\ud83d\udcf6 Air780EP Compilation Guide","\u2601\ufe0f Cloud Compilation","\ud83d\udce1 ESP32 Series Compilation Document","\ud83d\udda5\ufe0f Linux","\ud83d\udda5\ufe0f Win32","Add New Library","Core Layer","Luat Core","Luat Debugger","Font module","File System","Memory Pool","Message Bus","Luat Platform layer","Power and Low Power Management","Luat Timer","C style buffer","C The Structure of Style","C Interface implements Task waiting function","Design Document","Peripherals API","LuatOS dot matrix font format","GPIO","IR","SPI","UART","WLAN","\u2764\ufe0f Contribution Code","LuaDB File Format","LuatOS-SoC Common Firmware Format soc","Coding Specification","\ud83d\udcc1 Development documentation","Development Information","Development practice","LuatOS-SoC The file system","Explain lua\u2019s string and hex data (hexadecimal)","Community Extension Library","Command Line Brush Guide","<no title>","\u26a1 IoT Power - CC","\u26a1 IoT Power - CC","Connection and assembly","Connection and assembly","FAQ","Technical indicators","Technical index","Operating Instructions","Operating Instructions","<no title>","\ud83d\udd0d Version Comparison","\u23f3 IoT Power Power consumption test artifact","\u23f3 IoT Power Power Consumption Tester","\ud83d\udda5 PC Client","<no title>","IoT Power User Guide","\ud83d\udd0b IoT Power - V1","\ud83c\udf19 Lua Tutorial","Basic Grammar","Lua 5.3 Reference Manual","Luat Framework","Luat framework (advanced-underlying mechanism)","LuaTask Framework","\ud83d\udd79\ufe0f Online Experience LuatOS","\ud83d\udcac Technical Support","\ud83d\udee0 LuatOS Tools Daquan","Use Example","Hardware Data","Air105 Supporting GC032A camera","Use Example","Hardware Data","Qualcomm Font Chip","Hardware Data","EINK1.54 Ink screen","Use Example","\ud83e\uddf7 Peripheral expansion data","Use Example","Hardware Data","1.54 Inch TFT_ LCD resolution 240x240","Use Example","Hardware Data","1.8 TFT LCD resolution 128x160","Use Example","Hardware Data","2.4 Inch TFT_ LCD color screen resolution 240x320","Use Example","Hardware Data","Air10x Series Screen Expansion Board"],titleterms:{"0":[263,289,400,412],"01":131,"0x":131,"0x00":222,"0x001f":331,"0x01":222,"0x02":222,"0x03":222,"0x04":222,"0x05":222,"0x06":222,"0x07":222,"0x08":222,"0x09":222,"0x20000000":222,"0xffff":263,"1":[222,246,256,259,263,289,306,312,331,338,341,394,414,415,434,437],"10":415,"101":331,"103":394,"105":331,"10x":331,"11":415,"123":128,"128x160":437,"12f":[264,270],"12m":331,"15":105,"150":331,"16":[77,259],"160m":311,"192m":247,"2":[222,246,256,259,263,306,312,323,331,338,341,394,412,414,415,440],"20":331,"200m":305,"2023":105,"20v":400,"240x240":434,"240x320":440,"25":323,"256m":305,"26":323,"2m":[234,240],"3":[44,222,246,256,259,263,306,312,331,338,394,414,415],"32":3,"32bit":263,"4":[246,259,306,312,331,414,415,440],"480k":280,"4g":321,"5":[105,246,259,415],"54":[429,434],"5k":259,"5v":[400,412],"6":[246,415],"64":3,"7":[246,331,415],"74hc595":84,"8":[331,412,415,437],"80m":[234,240],"8910":266,"9":415,"\u03bca":400,"\u51c6\u5907\u6750\u6599":355,"\u5f00\u59cb\u4e0b\u8f7d\u6e90\u7801":355,"\u5f00\u59cb\u7f16\u8bd1":355,"\u63d0\u524d\u544a\u77e5":354,"\u7f16\u8bd1\u73af\u5883":354,"\u7f16\u8bd1\u8bf4\u660e":354,"\u8bf4\u660e":355,"abstract":[204,205,206],"boolean":414,"break":222,"byte":[131,263,331,414,415],"case":[380,381,382,414],"char":[414,415],"class":[365,415,421],"default":[169,218,289,331],"do":[331,341,367,372,400],"export":409,"final":[8,359],"function":[5,8,46,128,137,169,208,220,222,238,255,258,259,263,271,275,285,289,291,296,306,312,324,331,341,342,343,349,375,398,400,403,409,414,415,416],"import":409,"int":[72,83,93,102],"long":169,"new":[40,62,169,211,212,213,218,222,256,277,338,341,342,343,362],"return":[343,387,414],"static":341,"switch":[169,277,403,409,412],"try":349,"while":[289,400,414],A:[132,217,340,391],AT:[222,269],And:[229,331],As:263,At:398,For:415,If:[343,352,412],Is:[331,412],It:331,No:[234,240,247,263,311,331,400,412],One:169,Or:331,The:[52,258,263,266,269,321,331,364,370,374,375,386,391,394,412,414,415],There:[258,331],To:[105,341,414],Will:331,_at_0x20000000:222,_g:415,_repeat:118,_version:415,a1:415,a2:415,ab:415,abc:128,about:[229,266,269,276,277,316,364,386],abov:[263,320,331],acceler:62,acceleromet:44,accept:[5,124,415],access:[263,266],accord:393,account:266,achiev:[366,375],aco:415,acquisit:330,action:32,activ:[44,83],actual:[291,412],ad:[222,375,414],adapt:[20,92,107,124,129,140,317,318,343],adapter_index:124,adc:[0,177,220,228,229,253,263,331],add:[46,122,169,221,222,341,342,362],addit:[18,234,240,247,276,277,284,290,291,295,311],addr:[25,28,35,81,122],address:[81,103,199,200,201,204,205,206,221,222,269],adjust:[169,409],adjust_period:136,adon:263,ads1115:[42,43],ads1115plu:43,advanc:[169,317,414,417],advantag:321,adxl345:44,adxl346:44,adxl34x:44,af:78,after:[105,188,189,190,263,331,400,412],again:400,agp:316,agr2:130,agreement:[143,385],aht10:[45,181,182,183],aie:78,air001:[221,222,225,226,227],air101:[181,188,193,199,204,211,228,229,232,233,234,266,331,352,394],air103:[182,189,194,200,205,212,237,239,240,266,305,331,352],air105:[173,183,190,195,201,206,213,242,243,245,246,247,305,331,353,394,424],air106:[248,250,251],air10x:443,air153c_wtd:46,air302:[254,255,354],air32:263,air32f103:[256,261,262,263],air32f103cbt6:305,air510u:317,air530z:318,air601:[264,266,267,268,270],air640w:[274,275,355],air700:276,air722ug:266,air724ug:[266,421],air780:[266,283,285,299,305,356,421],air780eg:277,air780ep:[266,294,296,297,298,357],air780epv:290,air780epvh:291,air820ug:266,air901:[302,303],air:[52,86,219,421],ak8963:47,al:50,alarm:78,algorithm:[21,263,331],ali:58,alibaba:[48,148],align:[169,263],aliyun:[34,48],all:[263,359],alloc:370,alon:331,alpha:169,alreadi:400,also:[62,412],alt:22,alt_fun:103,altfun:103,alwai:[400,412],am2320:49,ambient:73,amplifi:412,amr_quailti:2,an:[169,222,266,331,342,409],analog:[0,9,42],analysi:[316,374],analyz:409,angl:169,ani:331,anim:[101,169],anim_cr:101,anim_fre:101,anim_path_set_cb:101,anim_path_t:101,anim_path_t_fre:101,anim_set_exec_cb:101,anim_set_path_str:101,anim_set_ready_cb:101,annot:387,ant:1,antbot:1,antenna:331,antenna_on:81,anti:288,anticol:81,ap3216c:50,apb:263,api:[68,169,185,238,362,367,368,369,370,371,372,373,377,379,380,381,382,383,387,415],apn:106,app_sta_get:1,appear:403,applic:[145,148,156,159,165],ar:[220,255,263,266,275,285,296,331,341,400],arc:169,archiv:175,arduino:221,area:[169,263,409],arg1:[130,415],arg2:[130,132],arg3:132,arg4:132,arg:[11,38,415],argn:130,arithmet:[3,414],ariyun:62,arm:222,around:400,arrai:[169,211,212,213,414],artifact:407,asin:415,ask:[169,341],assembl:[398,399],assert:415,asset_data_publish:1,asset_datav:1,asset_id:1,asset_regist:1,asset_status_get:1,asset_typ:1,assign:[169,414,415],async:11,asynchron:68,atan:415,attent:[306,312,394],audio:[2,29],audio_format:2,audio_id:2,auth:107,authent:34,authstat:81,auto:169,auto_format:14,auto_phone_fix:123,auto_reconnect:141,auto_reset_stack:106,autocollectmem:118,autoflush:38,autolong:123,automat:[52,169,222,263],autoreconn:[107,140],auxiliari:[277,316,415],averag:409,average_temp:105,axi:[44,63,69,74],b:[3,38],back:[38,331],background:[222,256,338,392],baidu:[34,62],band:106,bandrat:126,bar:169,base64_decod:8,base64_encod:8,base:[3,64,65,68,144,169,221,222,305,316,320,329,415],base_year:117,basi:414,basic:[3,152,217,333,340,344,345,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,414,415],bat:11,batteri:400,baud:72,baud_rat:136,been:400,befor:359,begin:135,beidou:277,between:[190,263,321,400,412,418,420],bh1750:51,bia:39,bif:263,bind:[41,138],bit64:3,bit:[3,144,263,331,415],bit_ord:136,bitdict:126,bits_per_sampl:2,bitw:29,black:412,blink:169,block:[68,209,263,415],bluetooth:[320,331],bme280:52,bme680:52,bmp180:52,bmp280:52,bmx:52,board:[221,223,224,230,235,242,248,252,257,258,264,272,276,277,278,293,300,306,312,322,331,334,420,443],bodi:26,book:430,bootstrap:263,boss:331,bottom:133,boundari:[367,368,369,371,372,373,374,379,380,381,382,383],box:169,bpp:101,brake:263,branch:414,breath:[193,194,195],bri:[89,90],brief:418,bright:169,brush:[226,229,233,239,242,255,275,285,286,296,306,315,331,349,394,400],bsp:[118,239,333],bssid:141,btn:169,btnmatrix:169,bu:[263,331,369],buff2:[11,144],buff:[4,11,17,32,85,124,126,135,136,137,144],buff_mod:101,buff_siz:[101,136,137],buffer:[29,373],build:[222,266,358,359],builddat:118,buoi:169,burn:[215,220,222,226,228,233,239,242,255,256,263,275,285,296,306,331,338,346,412],burner:[258,263],burp:412,bus_typ:2,busi:263,button:[169,241],c3:[310,394],c:[135,144,217,222,341,343,362,364,366,367,368,369,371,372,373,374,375,379,380,381,382,383,387,415,441],ca_fil:26,cach:409,cache_s:101,cal:60,calcul:190,calculate_crc:81,calendar:[169,430],call:[5,238,263,414,415,416],callback:[211,212,213,418],camera:[4,331,424],can:[72,169,263,331,341,400],cannot:[217,263],canva:169,capend:33,caplevel:22,captur:[4,33,114,415],capture_buff:33,card:[81,263,331],casic_aid:41,categori:415,caught:307,cb:[100,107,124,140,169],cbfnc:[48,64,66,67],cbfun:132,cbpara:48,cc:[5,396,397,400],cc_ind:131,cd:30,ce:[85,93],ceil:415,cell:169,cell_info_upd:131,cell_typ:169,cellular:106,ch2o:95,ch:9,chain:[1,356],chang:[169,218,280,331,358,365,400,412,415],changelog:279,channel3:263,channel:[29,103,114,141,204,205,206],channel_switch:1,charact:[169,414,415],characterist:[276,277,287,412],charg:[246,400],charpattern:415,chart:[169,223,230,409],chat:420,check:[112,169,358],check_crc:120,check_sim_period:106,check_valu:103,checkbox:169,checksum:8,chines:289,chip:[23,84,89,90,222,226,233,236,239,244,246,251,262,263,270,303,304,322,331,337,412,427],chip_check:85,chip_id:120,chiperas:122,choos:[221,222],chooser:169,cht8305c:53,chunk:415,chunknam:415,cid:106,cipher:287,cipher_decrypt:8,cipher_encrypt:8,cipher_list:8,cipher_suit:8,circl:[11,400],circuit:[229,246],classif:280,clean:169,cleanmsg:132,cleansess:107,clear:[11,19,33,38,41,88,89,90,113,144,263,331],clear_bit_mask:81,clearbuff:135,cleardownlink:106,clearli:400,clearlong:123,clearuplink:106,cli:[344,345,349],click:358,client:[20,26,107,140,409],client_ca:26,client_cert:[66,124],client_id:107,client_kei:[26,66,124],client_password:[26,66,124],clk:[89,126],clock:[54,78,108,117,246,259,263,331,415],close:[0,4,9,20,22,28,29,30,38,62,68,75,89,90,94,107,114,124,126,134,135,136,139,140,169,263,415],close_watch_dog:46,closur:415,cloud:[34,48,62,148,152,156,165,358],cloudc:62,cmd:[1,20,25,35,38],cmd_cnt:33,cmd_com_mod:25,cmd_rc:25,cmd_sysen:25,cmsi:222,cnt:[101,263],co:[266,415],coap:40,coapdata:40,code:[11,40,146,157,163,199,200,201,204,205,206,211,212,213,221,239,256,329,331,338,341,343,351,356,357,359,384,387,414,415],codebas:342,codec:[6,113],codepoint:415,coder:6,collect:[315,415],collectgarbag:415,color:[11,38,87,144,169,331,440],column:169,com:[39,88],com_mark:39,com_numb:39,comma:88,command:[20,81,181,182,183,327,344,345,346,347,348,349,394,415],comment:414,commiss:365,common:[169,342,356,357,386,391,400,412,421],commun:[321,331,365,370,393,420],comp:415,comparison:[263,304,406,414,415],compil:[220,221,339,351,352,353,356,357,358,359,360,361],complement:132,complet:[340,398],compon:[169,358,362],compress:[13,104],comput:[258,400],concat:[414,415],concaten:415,concept:[169,415],conceptu:349,condit:[378,414],conf:[10,37,38,60,82,135,222],config:[1,2,12,72,106,124,138,415],config_get:1,config_set:1,configur:[215,218,220,258,259,263,284,295,307],connect:[62,68,107,124,140,141,172,173,258,331,398,399,400,412],connect_config:62,consecut:263,consider:263,consol:394,constant:[0,2,4,6,11,22,28,29,38,39,62,98,99,100,103,104,105,106,107,112,124,126,135,136,137,141,144,371,372,379,380,381,382,383,412],constel:[291,317,318],constraint:378,construct:[218,222,226,228,256,262,337,338,341,415],consum:412,consumpt:[227,234,240,247,277,311,407,408],cont:169,contact:[81,281],contain:169,content:[169,280,386,414],continu:[33,263],contrast:[135,304],contribut:384,control:[35,72,78,169,204,205,206,219,259,263,306,312,409,415],conveni:[352,353],convent:415,convers:[0,9,169,263,392,414,415],convert:[42,188,189,190],copi:144,copybuff:135,core:[222,242,248,306,312,325,363,364],coremark:[7,305],corner:358,coroutin:415,correl:277,correspond:[204,205,206,241,375],count:[22,127,263,415],cpath:415,cpha:126,cpicker:169,cpol:126,crash:46,crc16:8,crc16_modbu:8,crc32:8,crc7:8,crc8:8,creat:[6,92,107,124,127,140,143,144,208,211,212,213,266,341,349,415],createap:141,createsoft:[28,126,136],critic:169,crop:169,cross:[169,370,414],crypto:[8,178],crystal:[229,331],cs1237:120,cs:[72,81,85,126,204,205,206],cs_pin:138,cspi_spe:4,csq:106,ctrl:124,cur_timestamp:34,current:[44,52,169,269,316,375,400,403,409,412],cursor:169,curv:[227,234,240,247,311],custom:[169,341,342,352,353,358,359],custom_id:12,cycl:[208,211,212,213,263,414],cyclic:[234,240,247,311],dac:9,dacdelai:2,daclevel:2,dacpin:2,dactimedelai:2,dap:258,daplink:258,daquan:421,dark_color:101,dat:[84,89],data1:120,data2:120,data32bit:3,data64bit:3,data:[1,2,3,6,8,9,11,13,15,19,21,25,28,29,32,38,40,41,62,81,82,99,100,104,106,107,109,113,115,116,119,120,121,122,124,126,135,136,137,140,142,143,144,169,172,175,180,211,212,213,224,231,234,236,240,244,247,249,253,260,263,267,273,282,290,291,293,301,305,309,311,313,315,317,318,331,335,369,372,374,378,392,403,409,414,418,422,423,426,428,431,433,436,439,442],data_bit:136,data_first:106,data_mod:41,databas:[15,19,82,180],datatraff:106,dataw:126,date:[88,108,169,415],dead:400,debounc:[22,37],debug:[2,14,20,41,98,107,124,140,226,229,258,263,331,369,415],debug_en:136,debugg:365,decim:[188,189,190],declar:415,decod:[6,36,113],decoi:400,decrypt:[8,116,142],deep:[234,240,247],defin:368,definit:[222,236,246,306,312,349,385,386,415],deg:415,deinit:125,del:[19,144],delai:[22,28,33,103,208,263,331],delet:[169,180,347,372,414],delimit:128,demand:343,demo:[238,346,349,430,442],demo_benchmark:101,demo_keypad_encod:101,demo_mus:101,demo_print:101,demo_stress:101,demo_widget:101,demonstr:291,descript:[169,238,263,276,280,284,286,289,295,297,306,312,360,361,387,391,418],design:[229,241,246,344,349,362,365,367,368,369,371,372,373,374,376,379,380,381,382,383],detail:[327,403,406,414],detect:71,develop:[145,148,156,159,165,216,217,218,221,223,224,228,230,235,242,248,252,257,264,272,276,277,278,293,300,306,312,322,331,334,362,388,389,390,420],devic:[52,169,188,189,190,199,200,201,204,205,206,222,258,331,333,400,409,412],device_id:34,device_kei:34,device_nam:34,device_secret:34,device_status_get:1,devicesetup:126,dfp:263,dhcp_enabl:141,dht1x:120,diagram:[223,230,291,398,428,442],dial:[5,412],did:[331,358],differ:[190,263,288,400],differenti:280,difftim:[108,415],dig:90,digit:[0,9,29,42,51,63,88,89,90,169,289],dir_path:143,direct:[169,416],directli:[199,200,201,204,205,206,349,400],disabl:[169,204,205,206],disablepwm:35,disadvantag:321,disc:169,discon:124,disconnect:[62,107,141],disp:[10,179],displai:[169,173,258,331,345,393,400,409,412],distinct:420,distinguish:263,divid:[259,263],divis:259,dma:263,dns_index:124,document:[31,61,224,231,244,286,359,362,376,388,418],doe:[15,19,258,263,331,400,412],doesn:258,dofil:415,domain:58,domain_nam:58,don:[331,400],done:33,dot:378,down:[169,204,205,206],download:[221,222,226,229,255,256,258,263,266,280,285,296,331,338,356,357,409,442],download_zbuff1:5,download_zbuff2:5,dr:263,draw2lcd:105,draw:[11,38],draw_mask_fade_param_t:101,draw_mask_fade_param_t_fre:101,draw_mask_line_param_t:101,draw_mask_line_param_t_fre:101,draw_mask_radius_param_t:101,draw_mask_radius_param_t_fre:101,drawbox:135,drawbuttonutf8:135,drawcircl:[38,135,144],drawdisc:135,drawdrcod:135,drawellips:135,drawfilledellips:135,drawfram:135,drawglyph:135,drawgtfontgb2312:[38,135],drawgtfontgb2312grai:38,drawgtfontutf8:[38,135],drawgtfontutf8grai:38,drawlin:[38,135,144,331],drawpixel:135,drawpoint:38,drawqrcod:38,drawrbox:135,drawrect:144,drawrectangl:38,drawrfram:135,drawstr:38,drawtriangl:135,drawutf8:135,drawxbm:[11,38,135],drive:[38,43,56,60,77,85,94,99,186,331],driver:[25,72,81,89,100,138,172,258,331],drop:169,dropdown:169,drv:121,dry:400,ds18b20:120,ds3231:54,dt:41,dtick64:103,dtimer_wakeup:131,dtimercheck:112,dtimerstart:112,dtimerstop:112,dtimerwkid:112,dtp:101,dual:[263,331],dump:[12,415],duplex:263,dust:96,duti:39,duty_cycl:77,e:415,each:[331,418],earfcn:106,easi:104,ec11:55,ec618:[266,279,283,285,305],ec718:266,ec718p:[292,294,296,298],eci:106,edg:[169,331],edit:[218,341,415],effect:[169,173,193,194,195,331,341],eink1:429,eink:11,either:[222,331],electr:[246,412],electrochem:95,electron:430,element:169,empti:[180,331],emul:263,en:39,enabl:[12,38,39,41,101,106,115,204,205,206,263,289,341,409],enbid:106,encapsul:103,encod:[6,36,55,113,135],encodestr:21,encrypt:[8,116,142,243],end:[339,343],endian:84,endswith:128,engin:428,english:289,enhanc:[259,262],ent:101,enter:[266,371,379,403],entir:180,entiti:365,entri:415,env:415,environ:[218,222,226,228,256,262,337,338,352,353,359,361,415],ephemeri:[277,316,317,318],equip:[147,158,164,169,266,331,333,412],eras:[109,121,122,204,205,206,263],erasewrit:122,errdump:12,error:[12,98,222,258,331,352,415],error_drop:136,errstop:2,escap:414,esp32:[310,314,331,359,394],esp32c3:[306,311],esp32s3:312,especi:277,essenc:414,etc:400,ethernet:138,evalu:115,even:400,event:[4,5,136,169,211,212,213,263,365],event_send:101,evt:48,exampl:[169,422,425,430,432,435,438,441],exce:263,exceed:280,except:263,execut:[339,415],exist:[28,32,136,218,364],exit:415,exp:415,expans:[218,278,331,341,431,443],expect:341,experi:419,explain:[392,414],explan:280,express:[364,415],extend:[32,61,340,374],extens:[79,393],extern:[169,220,228,263,306,331],exti:33,f1:415,f2:415,f:415,facil:364,fade:101,fail:[263,358],failur:[15,19],faq:[222,258,315,331,358,400,412],fast:[263,400],fastlz:13,fatf:14,fault:[263,412],fdb:[15,180,331],featur:[331,375],feed:[105,139],feed_dog:46,feet:295,few:266,fft:331,fg_color:38,field:394,fifo:263,file:[17,18,38,169,173,199,200,201,222,234,240,247,266,311,326,340,341,342,359,367,385,387,391,414,415],file_path:[6,94,143],file_tld:385,filenam:415,files:32,fill:[11,32,38,144,263],filter:[72,169,263],fin:140,find:[331,393,414,415],finish:17,firmwar:[17,118,215,220,255,258,265,266,269,275,279,280,284,285,289,292,295,296,297,315,317,331,340,352,353,359,386,400,409,412,421],first:[131,263,400,414],fit:169,fix:[385,400],flag1:3,flag2:3,flag:[3,76,104,124,135,263],flash:[97,121,122,169,199,200,201,204,205,206,220,228,263,306,307],flash_eraseoptionbyt:263,flicker:169,floor:415,flow:317,flush:[38,415],flymod:106,fmod:415,fmt:[108,415],fn:41,fnc:[130,418],focu:169,focus:169,fold:105,folder:[326,359,367],follow:[222,342,394],font:[11,16,23,38,101,135,169,358,366,378,427],font_fre:101,font_get:101,font_load:101,forc:[11,112,409,415],force_level:118,fore:38,foreword:[172,173,263],form:[169,340],formaldehyd:95,format:[14,29,110,144,169,289,340,378,385,386,414,415],formatstr:415,forward:393,fota:[17,66,67,266,281],foundat:169,four:398,framebit:29,framework:[416,417,418],free:144,freerto:331,freq:[9,77,99,100],frequenc:[188,189,190,234,240,247,259,305,311,331],fresh_rat:39,from:[169,222,263,326,400,412],frombase32:128,frombase64:128,fromcod:30,fromhex:128,fs:18,fsize:18,fskv:19,fsr:43,fsstat:18,ftp:20,full:[11,199,200,201,204,205,206,211,212,213,263,342,343,415],fun:[132,418],func:[2,4,5,22,27,29,101,123,130,136],funcnam:415,g:38,gadget:419,garbag:415,garbl:331,gatewai:[138,141],gaug:169,gc032a:424,gear:[77,400,412],gener:[34,36,263,281,283,285,294,296,298,326,421],geomagnet:[47,80],get:[0,19,22,33,57,82,93,102,111,117,169,188,189,190,228,266,331,359,417,418],get_accel:74,get_cell_period:106,get_data:[44,45,52,53,60,63,69,70,80,83,86,91],get_gyro:74,get_int_sourc:44,get_lux:87,get_mag:47,get_rgb:87,get_temp:74,get_temperatur:54,get_val:42,get_vdd:105,getband:106,getcellinfo:106,getclk:103,getdevic:122,getdevicenum:122,getdevicet:122,getdisplayheight:135,getdisplaywidth:135,getenv:415,geterror:2,getfre:14,getgga:41,getgll:41,getgsa:41,getgsv:41,gethook:415,getinfo:[122,141,415],getintloc:41,getip:141,getlevel:98,getloc:415,getmac:[138,141],getmetat:415,getpara:29,getpm_10:96,getpm_1:96,getpm_2_5:96,getppb:95,getppm:95,getraw:4,getregistri:415,getrmc:41,getsiz:38,gettxt:41,getupvalu:415,getuservalu:415,getvtg:41,getwin:11,getzda:41,gif:101,gif_creat:101,gif_restart:101,git:387,gite:[341,393],github:393,give:415,global:[414,415],glossari:365,glue:169,gmatch:415,gmssl:21,gnss:[277,291,319],gnss_state:131,goal:[366,375],good:331,gp:291,gpio11:306,gpio:[22,204,205,220,228,229,259,263,284,295,331,379,387],gpio_a:55,gpio_b:55,graffiti:62,grai:38,grammar:414,graphic:135,grid:89,ground:400,group:[341,420],gsub:[414,415],gt911:56,gt911_i2c:56,gt911_int:56,gt911_re:56,gtfont:23,guid:[340,356,357,394,411],gy53l1:57,gyroscop:63,h:[4,11,38,101,135],ha:[258,343],hal:222,halt:81,hand:398,handl:[169,415],handler:[143,364],hang:100,hangup:5,happili:341,hard:209,hardfault:103,hardwar:[24,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,224,228,229,231,236,241,244,249,253,258,260,263,267,271,273,282,293,301,306,307,309,312,313,317,318,335,365,423,426,428,433,436,439,442],hash:[8,116],hash_finish:8,hash_init:8,hash_upd:8,have:[331,400],hcode:40,head:400,header:[26,40,140,222],header_tld:385,heart:102,height:[11,144,169],helloworld:169,help:[169,341,345],here:331,hex:[128,392],hexadecim:[188,189,190,392],hexstr:141,hid_mod:137,hid_rx:137,hid_tx:137,hide:169,high:[190,259,412],higher:412,highest:331,highlight:169,himself:105,histor:[409,421],histori:[280,323],hmac:8,hmac_md5:8,hmac_sha1:8,hmac_sha256:8,hmac_sha512:8,hmeta:24,hook:415,host:[12,64,65,107],hostnam:141,hous:398,how:[269,331,358,369,400],ht1621:25,ht1621b:25,http:[26,27,58,59],httpdn:58,httpplu:59,httpsrv:27,huawei:62,huge:415,humid:[45,49,53],hwtimer_id:33,hwver:24,hx711:120,hz:[77,103],i2:29,i2c:[28,105,181,182,183,184,220,228,246,284,295,331],i2c_id:[42,43,44,45,47,49,51,53,54,63,70,73,74,79,80,83,87,91,102,105],i2cid:[44,50,77,83,86],i2s:263,i:[266,331,341,358,400,412,415],ic:[99,100],iccid:106,icm20608d:74,icm2068g:74,iconv:30,id:[0,2,4,21,28,29,41,57,72,78,81,93,106,112,117,118,119,121,126,130,134,136,137,138,188,189,190,199,200,201,204,205,206,221,331,418],idea:[367,368,369,371,372,373,374,379,380,381,382,383],ii:263,ili9341:331,illustr:[304,333],imag:[101,169],imei:106,img1:331,img:[169,331],img_set_src:331,imgbtn:169,imgbtn_green:331,implement:[343,362,375],imsi:106,in_buff:6,ina226:60,ina226_i2c:60,inaccur:400,inact:44,inbuf:30,inch:[331,434,440],includ:[364,372],incom:387,incompat:415,incomplet:156,inconsist:400,increas:412,indent:[38,135],independ:[259,415],indev_drv_regist:101,indev_kb_upd:101,indev_point_emulator_upd:101,index:[11,105,106,122,124,169,402,415],indic:[76,331,401,412],indoor:316,industri:331,ineffici:331,info:[6,98,386],inform:[169,199,200,201,224,231,255,278,285,296,306,312,317,318,331,345,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,389,394,442],infrar:[35,73,75,105],init:[1,4,5,10,11,17,19,23,33,37,38,42,44,45,46,47,50,51,53,54,55,56,57,60,63,70,71,72,73,74,75,77,79,80,81,83,84,85,86,87,88,89,90,91,93,95,96,97,99,100,101,102,105,110,119,121,122,125,138,139,141,415],init_in_servic:38,init_level:33,initi:[8,105,181,182,183,199,200,201,204,205,206,208,211,212,213,331,348,414],initreg_or_cspi_id:4,inject:263,ink:[11,331,429,430],inlai:169,input:[33,169,220,228,365,400,415],input_buff:33,inreversem:8,insert:415,insid:[331,370],instal:[218,221,222,256,331,338,347,349],instanc:342,instruct:[257,259,262,263,271,276,277,284,290,291,295,306,339,403,404,412],instrument:169,integr:321,intens:[51,91],interact:[330,339,349,387],interfac:[31,61,105,124,169,263,331,343,366,372,375,387,409,415,418],intern:[169,259,277,398],interrupt:[222,263,414],interv:263,inton:289,introduc:331,introduct:[149,153,160,166,169,172,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,289,291,306,312,320,324,394,409,415],invert:169,invoff:38,involv:342,invon:38,io:[32,33,79,284,295,370,415],iomux:103,ioqueu:33,iosel:295,iot:[34,48,266,396,397,400,407,408,411,412],iot_config:62,iot_core_id:34,iotauth:34,iotcloud:62,iotda:34,iovol:112,ip:[124,138,141],ip_addr:20,ip_los:131,ip_readi:131,ip_typ:106,ipair:415,ipv6:106,ir:[35,50,380],irq:[22,85],irq_mod:33,irq_pin:[75,90,138],irqf_act_ctl:44,irqf_cfg:83,irqf_dur:83,irqf_en:44,irqf_map:44,irqf_th:83,is_ddr:4,is_default:106,is_en:135,is_input:[33,103],is_msb:4,is_ok:17,is_sign:2,is_tl:124,is_udp:124,isbigend:144,isclos:75,isdecod:6,isdelet:12,isdon:17,isend:2,isequ:144,isfix:41,isfloat:144,isipv6:107,isp:263,issign:144,issu:[62,266,308,317,318,356,357,366,420],isyield:415,item:[106,218,266],iter:[15,19,367],itself:68,iv:8,j:415,json:[36,386],jtag:263,jtrst:263,judg:[52,263,414],judgment:414,just:[331,349],kb_inc:131,keep_cnt:124,keep_idl:124,keep_interv:124,keepal:[107,140],keepemtri:128,kei:[8,15,19,21,34,81,82,90,101,116,134,142,169,180,220,228,266,288,306,312,403],keil:[222,258,263,331],key_cb:90,key_in:125,key_out:125,keyboard:[37,125,131,169,331],knob:169,knowledg:[217,340,341,342,364,366,367,368,369,370,371,372,373,375,379,383,414],known:[316,317,318,366],kv:[15,19,82],kv_clr:15,kv_del:15,kv_get:15,kv_iter:15,kv_next:15,kv_set:15,kv_stat:15,kvdb_init:15,l3g4200d:63,l6985e:222,label:169,languag:[289,415,441],larg:331,laser:[57,93,96],lastnum:5,lastreson:112,latch:84,latest:258,layer:[363,370,371,372,379,380,381,382,383],layer_si:101,layer_top:101,layout:[169,391,398],lbsloc2:65,lbsloc:64,lcd:[25,38,39,101,186,220,228,331,434,437,440],lcdseg:39,ldo:246,learn:217,led:[89,169,306,312],ledpin:76,ledpinsetfunc:76,legal:414,legend:[304,333],len:[8,17,22,28,29,32,66,109,119,120,121,124,126,136,137,144,414,415],length:[144,169,415],less:263,level:[13,22,33,98,112,187,364,371,379,415],lexic:415,lf:[97,199,200,201],libcoap:40,libfota2:67,libfota:[66,67],libfota_timeout:66,libgnss:[41,131],libnam:415,libnet:68,librari:[10,11,16,34,36,59,61,62,68,101,109,118,120,121,126,130,132,135,136,139,144,222,320,331,333,340,341,342,349,352,353,359,362,393,414,415,418],light:[50,51,88,91,193,194,195,220,228,234,240,331,400],light_color:101,like:331,limit:[124,385],line:[11,101,169,217,327,344,394,400,415,420],link:[236,285,290,291,296,306,312,341,365,422,423,442],link_pin:138,linkup:124,linux:[173,352,353,360],lis2dh12:69,list:[16,136,169,258,331,398,415],listen:[68,124],littl:[97,340],little_flash:97,ll:222,lm75:70,lm75_data:70,lm75a:70,lm75b:70,lmeter:169,load:[113,234,240,247,263,311,317,326,412,415],loadfil:415,loadlib:415,loc:41,local:[414,415],local_nam:20,local_port:124,localip:124,locat:[64,316],lock:109,lockcel:106,locstr:41,log:[98,187,215,220,228,305,415],log_level:124,logic:[3,414,415],login:[20,358],logstor:98,look:393,loop:[115,208,414],lora2:100,lora:[99,131],lora_devic:100,lora_rx_don:131,lora_rx_error:131,lora_rx_timeout:131,lora_tx_don:131,lora_tx_timeout:131,loraconfig:[99,100],lose:[15,19],low:371,lower:415,lpmem:331,lsdir:32,lsmount:32,ltepin:76,ltrim:128,lua:[340,362,364,366,367,368,370,371,372,373,375,379,380,381,382,383,387,392,413,414,415,419],lua_absindex:415,lua_alloc:415,lua_arith:415,lua_atpan:415,lua_cal:415,lua_callk:415,lua_cfunct:415,lua_checkstack:415,lua_clos:415,lua_compar:415,lua_concat:415,lua_copi:415,lua_createt:415,lua_debug:415,lua_dump:415,lua_error:415,lua_gc:415,lua_getallocf:415,lua_getextraspac:415,lua_getfield:415,lua_getglob:415,lua_gethook:415,lua_gethookcount:415,lua_gethookmask:415,lua_geti:415,lua_getinfo:415,lua_getloc:415,lua_getmetat:415,lua_getstack:415,lua_gett:415,lua_gettop:415,lua_getupvalu:415,lua_getuservalu:415,lua_hook:415,lua_insert:415,lua_integ:415,lua_isboolean:415,lua_iscfunct:415,lua_isfunct:415,lua_isinteg:415,lua_islightuserdata:415,lua_isnil:415,lua_isnon:415,lua_isnoneornil:415,lua_isnumb:415,lua_isstr:415,lua_ist:415,lua_isthread:415,lua_isuserdata:415,lua_isyield:415,lua_kcontext:415,lua_kfunct:415,lua_len:415,lua_load:415,lua_newst:415,lua_newt:415,lua_newthread:415,lua_newuserdata:415,lua_next:415,lua_numb:415,lua_numbertointeg:415,lua_pcal:415,lua_pcallk:415,lua_pop:415,lua_pushboolean:415,lua_pushcclosur:415,lua_pushcfunct:415,lua_pushfstr:415,lua_pushglobalt:415,lua_pushinteg:415,lua_pushlightuserdata:415,lua_pushliter:415,lua_pushlstr:415,lua_pushnil:415,lua_pushnumb:415,lua_pushstr:415,lua_pushthread:415,lua_pushvalu:415,lua_pushvfstr:415,lua_rawequ:415,lua_rawget:415,lua_rawgeti:415,lua_rawgetp:415,lua_rawlen:415,lua_rawset:415,lua_rawseti:415,lua_rawsetp:415,lua_read:415,lua_regist:415,lua_remov:415,lua_replac:415,lua_resum:415,lua_rot:415,lua_setallocf:415,lua_setfield:415,lua_setglob:415,lua_sethook:415,lua_seti:415,lua_setloc:415,lua_setmetat:415,lua_sett:415,lua_settop:415,lua_setupvalu:415,lua_setuservalu:415,lua_stat:415,lua_statu:415,lua_stringtonumb:415,lua_toboolean:415,lua_tocfunct:415,lua_tointeg:415,lua_tointegerx:415,lua_tolstr:415,lua_tonumb:415,lua_tonumberx:415,lua_topoint:415,lua_tostr:415,lua_tothread:415,lua_touserdata:415,lua_typ:415,lua_typenam:415,lua_unsign:415,lua_upvalueid:415,lua_upvalueindex:415,lua_upvaluejoin:415,lua_vers:415,lua_writ:415,lua_xmov:415,lua_yield:415,lua_yieldk:415,luadb:[326,385],lual_addchar:415,lual_addlstr:415,lual_adds:415,lual_addstr:415,lual_addvalu:415,lual_argcheck:415,lual_argerror:415,lual_buff:415,lual_buffinit:415,lual_buffinits:415,lual_callmeta:415,lual_checkani:415,lual_checkinteg:415,lual_checklstr:415,lual_checknumb:415,lual_checkopt:415,lual_checkstack:415,lual_checkstr:415,lual_checktyp:415,lual_checkudata:415,lual_checkvers:415,lual_dofil:415,lual_dostr:415,lual_error:415,lual_execresult:415,lual_fileresult:415,lual_getmetafield:415,lual_getmetat:415,lual_getsubt:415,lual_gsub:415,lual_len:415,lual_loadbuff:415,lual_loadbufferx:415,lual_loadfil:415,lual_loadfilex:415,lual_loadstr:415,lual_newlib:415,lual_newlibt:415,lual_newmetat:415,lual_newst:415,lual_openlib:415,lual_optinteg:415,lual_optlstr:415,lual_optnumb:415,lual_optstr:415,lual_prepbuff:415,lual_prepbuffs:415,lual_pushresult:415,lual_pushresults:415,lual_ref:415,lual_reg:415,lual_requiref:415,lual_setfunc:415,lual_setmetat:415,lual_stream:415,lual_testudata:415,lual_tolstr:415,lual_traceback:415,lual_typenam:415,lual_unref:415,lual_wher:415,luat:[364,365,369,370,372,416,417],luatask:[416,418],luato:[31,169,172,208,217,220,255,269,275,279,284,285,289,295,296,320,340,344,345,346,347,348,350,365,378,386,391,419,421,441],luatool:[323,325],lvgl:[101,169,170,220,228,331],m:[11,415],mac:[138,141,269],machin:[127,226,229,233,239,242,255,285,286,296,306,349,394],macro:222,main:[188,189,190,222,234,240,247,258,263,305,311],mainten:412,make:341,manag:[112,258,326,347,348,371,383,415],mani:[331,341],manipul:[128,144],manual:[169,204,205,206,221,222,228,256,258,327,331,338,403,412,415],manufactur:[204,205,206],map:[37,111,231,236,238,253,267,273],mask:[81,103,169,415],mass:[286,349],master:[219,263],match:[331,414,415],math:415,mathemat:415,matrix:[37,125,169,378],matter:281,max30102:102,max31856:71,max:[136,415],max_temp:105,max_tick:33,maximum:[169,331,412],maxinteg:415,maxout:13,maxsiz:[97,122],mco:259,mcp2515:72,mcu:[103,191],md5:8,md:[8,116],md_file:8,mdelai:133,mdk:222,mean:[304,333,385],measur:[105,181,182,183,291,400,412],mechan:417,megabyt:331,meminfo:118,memori:[144,368,370],merg:169,messag:[131,169,208,263,343,369,415],meta:415,metadata:24,metat:415,meter:169,method:[8,26,34,263,320,330,331,352,353,365,392,409,415],mhz:103,micvol:2,middlewar:383,min:415,min_temp:105,minimum:229,mininteg:415,miniz:104,minu:3,minut:307,mipp:400,mirror:169,miscellan:176,miso:126,mkdir:32,mkf:32,mlx90614:73,mlx90640:105,mobil:[106,131,400],modbu:374,mode2:21,mode:[4,6,8,9,14,21,22,29,32,41,57,72,81,85,90,99,100,103,106,112,123,126,135,137,141,169,263,266,271,277,330,331,339,398,403,409,412,415],model:[11,24,169,293,331],modf:415,modifi:[169,187,222,263,331],modnam:415,modul:[38,78,95,99,100,102,114,233,239,246,255,262,263,266,267,270,275,285,296,297,299,321,331,337,362,366,415,420],month:169,more:[266,352,353],mosi:126,most:364,motiv:374,motor:331,mount:[14,97,122,199,200,201,398],mount_point:[14,97,122],mous:331,move:[169,415],mpu6050:74,mpu6500:74,mpu6xxx:74,mpu9250:74,mqtt:107,mqttc:107,ms:[22,126,418],msdbox:169,msg:[123,364],msgbu:369,msgh:415,msgid:40,mu1:43,muid:106,multi:[3,100,331,414],multimedia:[2,6],multimedia_id:5,multimet:400,multipl:[280,414,418],multiplex:[284,295],multitask:418,mute:289,mutual:365,my:[266,400],mytim:108,n1:415,n2:415,n:[144,415],name:[15,16,58,101,111,169,266,387,415],nation:21,navig:[169,291,317,318,319],nec:75,necessari:[222,331],necir:75,need:[105,359,367,368,369,370,371,372,379,381,382,383],need_ipv6_dn:124,needl:169,netc:[68,124],netl:76,netmask:141,network:[76,106,124,287,331,333,370,421],network_check_period:106,new_apn_nam:106,new_nam:141,new_path:108,newnam:415,next:[19,415],next_id:41,nil:414,nine:74,nmea:41,no_autoat:222,noclear:11,non:[68,81,263,400],nop:118,note:[105,220,265,277,279,284,292,295,297,308,340,403],noth:400,nstinput:106,nstonoff:106,ntp_error:131,ntp_updat:131,ntptm:124,num:[77,106,144],num_channel:2,number:[5,106,169,188,189,190,289,345,400,414],nvm:331,o:222,obj:[36,101,169,415],obj_set_event_cb:101,obj_set_signal_cb:101,object:[169,343,415],objmask:169,obsolet:10,obtain:[190,199,200,201,289],occas:331,off:[38,76,204,205,246,263,372,400,412],offlin:263,offset:[17,32,97,109,119,121,122,144,169,415],old:316,old_path:108,oldnam:415,on_off:[2,5],one:[222,263,331],onenet:[34,62,159],onff:106,onheap:38,onlevel:2,onli:[169,263],onlin:419,only_i:4,onoff:[4,20,25,33,106,107,112,124,140],open:[0,9,30,89,90,114,169,258,331,415],openocd:258,oper:[3,11,18,22,28,30,33,103,106,108,109,118,120,121,126,133,136,137,139,141,317,330,370,403,404,414,415,417],opt:[26,59,67,135,140,141,415],option:[169,222,259,263],ordinari:346,origin:[289,331],originstr:21,os:[108,415],oscil:[229,331],ota:[266,280],ota_port:66,ota_url:66,other:[62,255,262,263,320,409,418],otp:109,out:[84,307],out_buff:6,out_path:4,output:[33,115,187,188,189,190,193,194,195,220,221,228,259,263,365,400,409,412,414,415],outrevers:8,overrid:169,overview:[169,219,246,258,350,403,406,412,423],own:[266,400],ownership:266,pack:[110,144,263,415],packag:[97,122,222,246,256,266,275,276,277,280,281,338,347,349,415],packet:280,packsiz:415,pad:[8,21],pad_index:103,padelai:2,page:[169,263,403],pair:415,palett:169,panel:398,paper:430,papin:2,para:144,param1:[17,66],param2:17,paramet:[34,266,289,317,318,394,414],parent:101,pars:[36,40,41],part:[169,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,398],parti:263,partial:393,partii:136,partit:[15,297],pass:[400,418],passwd:141,password:[20,21,106,107,141,169],path:[2,8,16,17,18,32,101,108,415,420],patha:118,pathb:118,pathc:118,pathd:118,pattern:415,paus:2,payload:[40,48,107],pbdata:113,pc:[328,339,409],pca9685:77,pcall:415,pcf8563t:78,pcf8574:79,pci:106,pcm:263,pd:[400,403],per:[188,189,190],perform:[246,263,305],period:[12,114,118,331],peripher:[171,204,205,206,222,246,333,370,377,431],phenomenon:263,phone:[123,400],pi:415,pictur:169,pid:137,pide:3,pin1:106,pin2:106,pin:[22,33,35,79,111,112,120,169,204,205,206,231,236,238,246,253,263,267,273,306,312,331],pin_busi:11,pin_c:[11,25],pin_clk:120,pin_dat:120,pin_data:25,pin_dc:11,pin_reset:11,pin_wr:25,pinout:[223,226,230,233,235,239,242,244,257,262,264,276,277,278,334,337],pit:266,pixel:[144,331],pkg:347,pkx:21,pky:21,place:222,placehold:169,plai:[2,173],plain:415,plan:412,platform:[34,48,62,152,156,173,266,352,353,370,371,372,379,380,381,382,383],playback:[173,174],playstop:2,pleas:[222,281,340],pll:259,plu:3,plug:[258,331,400],plugin:[352,353],pm:[2,112,131,192],pm_mode:2,png:331,pnum:114,po:415,point:[7,169,364,366,367,368,369,370,371,372,373,375,379,383,417],poli:8,polici:289,pool:368,pop:412,popen:415,port:[12,20,27,37,64,65,92,107,124,125,136,211,212,213,221,226,331,400],portabl:315,posit:[65,169,263,277,316,320,331],possibl:331,post:341,power:[15,19,39,112,219,227,229,234,240,246,247,277,288,306,311,312,371,379,396,397,398,400,407,408,411,412],power_on_delai:14,power_pin:14,powersav:141,pp:400,practic:[228,390],pre:[217,263,342],precaut:[169,262,263,306,412],precis:[114,190,316],prefix:128,preload:415,prepar:[152,173,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,221,222,228,229,256,286,338,352,353,356,357,359],preparatori:341,press:412,pressur:[52,86],prevent:46,preview:[4,403],previou:[222,415],previous:331,principl:[344,417],print:[11,90,331,394,415],printf:263,prioriti:[263,415],privat:21,probabl:263,problem:[266,375],process:[40,41,135,266,289,364,365,415],product:[173,246,286,306,312,349,403,420],product_id:34,product_kei:34,productkei:64,produt_id:34,profil:267,prog:415,program:[217,271,331,345,365,414,415,416],programm:[263,266],progress:169,project:[150,161,167,266,271,307,348,349,350,352,353,359,430],prompt:349,pronunci:289,propag:169,protect:263,protobuf:113,protobuff:113,protocol:[72,75,106,287,365],provid:[220,255,275,285,296,331],ps:50,publish:[48,62,107,130,343,387,418],pull:[20,22,259],pull_mod:33,pullup:28,puls:[22,114],purchas:[226,233,239,262,275,337,420,423],pure:[217,340],purpos:263,push:[20,115],put:342,pwd:116,pwm:[77,114,193,194,195,196,220,228,284,295,331],qcloud:34,qmc5883l:80,qo:[48,62,107],qq:[341,420],qrcode:[11,101],qrcode_cr:101,qrcode_delet:101,qrcode_upd:101,qualcomm:[23,427],qualiti:[4,5,6],quantiti:412,queri:[144,180,188,189,190,347],question:414,quick:[169,217,414],quickli:400,quiz:414,quo:269,r:[38,135,144],rad:[135,415],radiu:[11,101],random:415,randomse:415,rang:[0,57,93,169],rapid:341,rate:102,raw:305,raw_data:105,raw_point:105,rawdata:40,rawequ:415,rawget:415,rawlen:415,rawset:415,rc522:81,rc522_config_isotyp:81,rclk:84,rcr:138,rddi:258,re:115,read:[0,14,49,78,81,109,115,121,122,124,136,144,181,182,183,199,200,201,204,205,206,263,271,289,331,391,415],read_cj_temp:71,read_datablock:81,read_fault:71,read_light:51,read_rawrc:81,read_tc_temp:71,read_tim:54,readdht12:28,readfil:32,readi:[48,107,140,141,358],readreg:28,readsht30:28,real:[54,117,331,409],realiz:331,reason:266,reboot:[112,118],receiv:[75,118,143,211,212,213,263],receive_buff:72,recogn:[258,400],recolor:169,recommend:[217,218,271,342,420],reconfigur:263,reconnect:[107,140],reconnect_tim:[107,140],record:[2,5,12],record_tim:2,record_typ:2,recordstop:2,rect:11,recv:[28,29,99,100,126],recv_cb:75,recv_len:126,refer:[222,246,415],refresh_r:105,reg32:103,reg:[28,120],region:266,regist:[211,212,213,266,331,342],registr:416,registri:415,regular:414,relat:[169,173,222,278,280,285,296,306,312,414],releas:[6,33,124,143,263,265,279,292,297],relev:[331,364,366,367,368,369,370,371,372,373,375,379,383],reload:263,remain:263,remind:358,remot:[35,82],remote_nam:20,remote_port:124,remoteip:124,remov:[108,169,347,415],renam:[108,415],rep:[414,415],repeat:[35,127],repeat_cnt:33,repl:[115,415,419],replac:[262,263,307],report:12,req_cod:81,reqaddr:64,reqcellinfo:106,reqtim:[64,65],request:[26,59,64,65,66,67,81,112],requir:[169,222,241,316,387,394,415],reqwifi:64,research:316,reserv:331,reset:[72,81,106,143,229,263],resistor:259,resiz:[144,169],resolut:[58,352,434,437,440],resourc:[229,306,312],respons:365,restart:[266,400],restor:269,result:[48,263,387],resum:415,retain:[62,107],reus:263,revers:415,revert:8,rewrit:269,rf:[231,236,267,333],rgb565:38,rgb:331,right:358,rmdir:32,road:77,roll:169,roller:169,rotari:55,rotat:[11,169],rough:316,routin:331,row:[169,263],rp2040:332,rs485_delai:136,rs485_gpio:136,rs485_level:136,rsa:116,rsrp:106,rsrq:106,rssi:106,rst:81,rst_pin:138,rtc:[117,197,220,263,331],rtcauto:41,rtime:106,rtk:320,rtkv:82,rto:[118,331],rtr:138,rtrim:128,rule:[289,415],run:[7,17,130,330,331,415,416,418],rx:[124,135,136],rx_bit:4,rx_hwtimer_id:136,rx_len:126,rx_pin:136,rxbuff:[28,126],rxclear:136,rxe:263,rxlen:28,rxpacket:85,rxsize:136,ry:135,s3:314,s:[266,373,392,415],sai:266,same:331,sampl:[29,263,271,331,341,343],sample_count:71,sample_r:2,satellit:[277,316,319],save:[180,331,358],save_path:4,sc12a:120,sc7a20:83,scale:[169,409],scan:[28,90,141],scan_mod:4,scan_period:134,scanresult:141,scatter:222,scell:106,scell_info:131,scenario:374,schedul:370,schemat:[223,230,428,442],scheme:266,scl:[28,88,120],scl_pin:90,sclk:84,scm:331,scope:169,scr:101,scr_act:101,scr_load:101,scr_load_anim:101,screen:[11,186,238,331,400,412,429,430,440,443],screenshot:305,script:[215,220,234,240,243,247,311,326,330,331,409],scroll:[169,412],scrollabl:169,sd:331,sd_read:119,sd_write:119,sda:[28,88,120],sda_pin:90,sdat:25,sdio:[119,220,228],sdk:331,sdk_appid:34,search_cell_tim:106,searcher:415,searchpath:415,second:[188,189,190],secret:[8,21],section:222,sector:[204,205,206],seek:[144,415],seem:331,seg:[25,39],seg_data:[89,90],seg_mark:39,seg_set:39,segment:[39,238],select:[81,169,222,263,289,304,409,415],selector:169,self:[169,339,414],send:[28,29,64,94,99,100,123,126,140,181,182,183,208,211,212,213,263,369],send_buff:72,send_data:126,send_len:126,sendbuff:135,senddisplaydata:89,sendmsg:132,sendnec:35,sensor:[45,47,49,50,51,52,53,54,57,63,69,70,74,80,86,87,91,93,96,120,241],sent:[263,331],sep:415,separ:[128,400],seq_typ:4,sequenc:33,seri:[169,279,283,285,292,294,296,298,331,359,421,443],serial:[136,211,212,213,215,221,226,331],seriesiot:400,server:[27,92,266],server_cert:[66,124],servic:421,set:[19,22,82,85,117,144,169,188,189,263,288,289,400,403,412],set_avgsel:71,set_bit_mask:81,set_cap:33,set_channel:[99,100],set_cmod:71,set_id:137,set_irqf:[44,83],set_mod:85,set_rxconfig:[99,100],set_tc_typ:71,set_thresh:[44,83],set_tim:54,set_txconfig:[99,100],setauto:106,setband:106,setbaseyear:117,setbitmapmod:135,setblinktim:76,setbright:[89,90],setbu:2,setclk:103,setcolor:38,setcontrast:135,setctx:11,setdefaultpul:22,setdelai:33,setdn:124,setdrawcolor:135,setfont:[11,38,135],setfontmod:135,setframebuff:144,setfreq:77,setgpio:33,sethook:415,setlevel:98,setlight:88,setloc:415,setlocal:415,setmac:141,setmetat:415,setmod:141,setnewsmscb:123,setpath:118,setpowersav:135,setpwm:77,setrang:0,setstat:76,sett:19,settimeout:139,setup:[11,22,25,28,29,39,43,48,76,78,82,126,134,136],setupbreatel:76,setupbuff:38,setupvalu:415,setuservalu:415,setvbuf:415,setwin:11,setxtal:103,sever:[169,331,400],sfd:[121,198],sfud:[122,199,200,201,202,220,228],sha1:8,sha256:8,sha512:8,shake:288,shell:398,shield:72,shift595:84,shift:3,show:[3,11,169],showimag:38,shut:[204,205,206],shutdown:[102,112],si24r1:85,sig:[21,116],sign:116,sim_id:5,sim_ind:131,simid:106,simpin:106,simpl:[169,339,360,361,391,414],simplest:340,simul:[328,329,331],sin:415,sinc:400,singl:[169,208,277,331],singleshow:88,site:358,six:74,size:[11,38,101,122,126,135,169,223,230,246,263,307,368,414,415],skei:[15,19],sleep:[11,38,101,263],slider:169,sloval:271,sm2:21,sm2decrypt:21,sm2encrypt:21,sm2sign:21,sm2verifi:21,sm3:21,sm3hmac:21,sm4:21,sm4decrypt:21,sm4encrypt:21,sm:[21,123,127,131],small:[217,414],smaller:412,smart:263,smartconfig:141,smell:412,smoothli:412,sms_inc:131,sn:[103,106],snr:106,sntp:124,sntp_port:124,sntp_server:124,so:266,soc:[31,172,279,331,340,386,391,421],socket:[68,124,131],soft:263,soft_kb_inc:131,softkb:125,softkeyboard:131,softwar:[46,97,122,125,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,219,220,228,263,271,276,277,317,318,325,331,347,365,409],solut:[258,269,280,366,375],some:[103,263,266],sort:415,sound:412,sourc:[169,222,239,258,351,356,357,359],source_32k:103,source_main:103,spe:263,special:[103,220,277,306,312,385],specif:[199,200,201,263,266,387,420],specifi:[204,205,206,331,371,379],speech:289,speed:[28,138,169,289,331],speed_typ:41,spi:[121,122,126,199,200,201,203,204,205,206,207,220,228,263,271,284,295,306,331,381],spi_bandr:122,spi_c:[14,121,122],spi_dev:38,spi_devic:[11,23,71,97,101,122,126],spi_id:[72,75,81,85,121,122],spi_spe:14,spiconfig:[99,100],spiid:[11,138],spiid_or_spidevic:14,spinbox:169,spinner:169,spl06:86,spl06_01:86,splice:414,split:[128,169],sqrt:415,ssid:141,ssl:107,ssllog:124,st7735:331,stack:415,staip:141,standard:[263,331,400,415],standi:118,start2:144,start:[2,4,8,27,33,75,131,136,137,144,169,208,217,228,356,357,372,400,414,418],startraw:4,startswith:128,startup:[188,189,190,222],state:[76,101,107,124,127,169,263,365],statem:127,statement:[414,415],station:[64,65,316,320],statu:[19,76,106,121,129,169,269,365,415],steer:77,step:[315,331,398],still:[258,400],stop:[2,4,27,28,33,137,208,263,365],stop_bit:136,stopap:141,store:[48,341,359],storge_loc:[17,66],str:[8,11,36,38,40,41,128,135],stream:8,string:[12,110,128,188,189,190,211,212,213,392,414,415],strip:415,strong:132,strongli:420,strtoll:3,structur:[350,369,372,374,378,412,415],sty_en:101,sty_zh:101,style:[98,101,169,187,289,373,374],style_cr:101,style_delet:101,style_list_cr:101,style_list_delet:101,style_list_t:101,style_t:101,sub:[414,415],submask:138,submiss:[387,420],subscrib:[48,62,107,130,208,418],subscript:414,suffix:128,suit:287,summari:[305,392],supplement:59,suppli:[246,306,312,398,400],support:[44,52,62,70,74,100,169,222,239,256,259,263,281,291,317,318,320,331,333,338,374,400,415,420,424],suspend:365,sw:263,swap:[38,414],swd:226,swing:169,swm181:338,swm181cbt6:[336,337],sxx32f103:263,sxx32f1xx:263,sy:[130,131,132,208,375,418],symbol:169,symmetri:169,synchron:68,synctim:106,synergi:[415,416],syntax:415,synthesi:374,synthet:266,sys_pub:387,sysplu:132,system:[3,18,131,169,199,200,201,229,263,277,287,367,370,391,415],system_air001xx:222,t0h:120,t0l:120,t1:415,t1h:120,t1l:120,t2:415,t:[36,40,258,331,341,400,415],ta_temp:105,tab:[117,169],tabl:[169,199,200,201,231,236,241,253,267,273,304,333,414,415],tabview:169,tac:106,tag:[98,169,393],take:415,talk:176,tan:415,target:132,task:[208,343,370,375,418],task_read:43,task_recv:43,taskdel:132,taskinit:[130,418],taskinitex:132,taskl:76,tasklt:76,tasknam:[68,132],tc:263,tcs3472:87,technic:[176,239,281,401,402,412,420],temperatur:[45,49,53,70,71,73,105],tencent:165,tengxun:62,term:[349,365],termin:400,terminolog:344,test:[151,162,168,234,240,247,256,305,311,338,341,407,414],tester:408,text:[169,217,414],textarea:169,tf:78,tft:437,tft_:[434,440],than:[263,412],theme:169,theme_set_act:101,thermocoupl:71,thi:[105,331],thick:101,think:331,third:263,thread:[331,415],three:[63,69],threshold:134,through:[263,331,367,400],tick1:103,tick2:103,tick64:103,tick:[103,169,188,189,190],ticks2:103,tie:78,tile:169,tileview:169,tim2:263,tim5:263,tim:263,time:[8,54,78,106,107,108,117,169,258,263,316,331,409,415],time_inact:[44,83],time_tick:33,time_u:33,timea:108,timeb:108,timeout:[28,64,65,68,99,100,106,112,118,130,132,133,139],timer:[133,208,209,211,212,213,234,240,247,263,311,372,416,418],timer_start:118,timer_stop:118,timerisact:418,timerloopstart:[130,418],timerstart:[117,130,418],timerstop:[117,130,418],timerstopal:[130,418],timestamp:263,timezon:117,titl:169,tl:287,tlink:62,tm1637:88,tm1640:89,tm1650:90,tmpfile:415,tmpname:415,to32:3,to64:3,tobase32:128,tobase64:128,tocod:30,toggl:22,tohex:128,tointeg:415,token:40,tonumb:415,tool:[215,220,263,275,344,356,357,421],toolkit:349,top:358,topic:[48,62,92,107,130,317,387],topolog:398,tostr:[144,415],total:368,totp:8,touch:[134,241,331],touchkei:[131,134],touchkey_inc:131,tovalu:128,tp:[8,11,16,38,41,101,141],tpara:48,tpname:113,traceback:415,traceswo:263,tradit:418,transfer:[28,126,263],transfer_done_top:[28,126],transpar:169,transplant:263,treasur:400,triangl:414,trigger:[181,182,183,263,400],trim:128,trimmer:169,trng:8,troubl:266,troubleshoot:229,tsl2561:91,tt:[2,289,331],tube:[88,89,90],turn:[193,194,195,204,205,263,372,400,412,414],turnov:331,tutori:[172,185,215,216,217,226,229,233,239,242,255,258,262,285,296,306,307,337,413,414],tuya:34,twice:263,two:[190,211,212,213,263,398],tx:[58,68,124,136],tx_hwtimer_id:136,tx_pin:136,txbuff:[28,126],txconfig:[99,100],txfp:263,txpacket:85,txstat:29,type:[3,6,8,12,40,71,94,103,118,121,144,169,211,212,213,331,349,374,385,391,414,415],typec:400,typic:[285,296],tz:117,u4:331,u8g2:135,u8g2_get:16,u8g2_load:16,u:415,ua:412,uart1:[211,212,213],uart:[136,210,211,212,213,214,220,228,284,295,317,318,331,382],uart_br:94,uart_id:[94,95,96,106],udata:415,udelai:133,udisk_attach_sdhc:137,udisk_detach_sdhc:137,udp:92,udpsrv:92,uid:81,ult:415,unabl:222,uncheck:169,uncompress:[13,104],uncov:281,under:[284,295,331],underli:[17,118,217,417],understand:414,uniqu:[188,189,190],unique_id:103,unlock:306,unmount:14,unpack:[110,144,415],unstabl:412,unsubscrib:[62,107,130,418],unsuccess:331,up:[169,229,259,342,400,412,415],updat:[169,217,258,345,347,414],upgrad:[17,66,67,266,280,281,345,400,403,409,412],upload_zbuff1:5,upload_zbuff2:5,upper:[358,415],upvalueid:415,upvaluejoin:415,uri:40,url:[26,140,266],urlencod:128,us:[34,58,62,105,144,172,199,200,201,208,211,212,213,217,222,226,257,258,263,266,306,316,321,330,331,343,358,369,373,374,380,381,382,400,412,415,418,422,425,430,432,435,438,441],usag:[169,178,179,186,192,197,198,203,210,220,228,263,339,360,361],usart:263,usb:[137,246,259,263,284,295,331,400,412],usbapp:137,usbboot:295,use_ipv6:140,user:[105,208,221,222,343,350,352,353,411],user_flag:12,user_nam:106,usernam:[20,107],utc:316,utf8:415,utf:415,uuid:331,uwb:320,v0001:292,v1001:292,v1002:292,v1003:292,v1004:297,v1006:308,v1020:265,v1021:265,v1022:265,v1023:265,v1103:279,v1104:279,v1105:279,v1106:279,v1107:279,v1108:279,v1109:279,v1110:279,v1111:279,v1112:279,v1:[331,400,412,415],v2:[65,67,400,415],v:[135,415],val1:[110,144,415],val2:[98,110,144],val3:[98,110],val:[22,79,98,112,418],valid:[342,415],valn:110,valu:[2,14,15,19,22,81,82,103,106,169,263,343,385,400,412,414,415],variabl:[414,415],variou:[34,349],varnam:415,veri:[169,331],verifi:116,version:[34,81,118,169,234,240,247,258,280,311,323,331,339,342,345,406,414,415,421],version_get:1,vertic:169,vhid_cancel_upload:137,vhid_upload:137,vid:137,video:[4,173,174,217,414],view:[169,215,220,221,228],virtual:[284,295],visibl:[169,340,415],visit:358,vl6180:93,vlcd:39,voic:[331,412],vol:2,volt:5,voltag:[263,400,403,412],volum:289,vscode:218,vsiminit:106,vsimonoff:106,w1_connect:120,w1_read:120,w1_reset:120,w1_write:120,w5500:[131,138],w5500_ind:131,w800:331,w806:220,w:[4,11,38,101,135],wai:[269,321],wait485:136,wait:[17,68,124,130,208,307,343,365,375,414,418],waitabl:343,waitc:365,waitlink:68,waitmsg:132,waitt:365,waituntil:[130,418],waituntilext:418,wake:229,wakeup:38,wakeuppin:112,want:[331,358,400,412],warn:98,warning_level:118,watch:219,watchdog:[46,139],watchdogpin:46,waveform:403,wdt:139,weak:415,weather_icon:11,websocket:140,what:[220,226,233,255,262,266,275,285,296,331,337,364,373,392,412,415],when:[263,400,412],whenc:415,where:[266,331,342],whether:263,which:331,white:[217,331],why:[169,331,358,367,368,369,370,371,372,379,381,382,383,400],widget:169,width:[11,144,169],wifi:[141,315,320,383],win32:361,win:169,window:[134,169,173,352,353,400],wire:[277,398],wireless:[219,331],within:387,withstand:263,wizpro200st8:263,wlan:[141,383],word:266,wrap:415,write:[2,9,14,78,81,109,121,122,136,144,169,199,200,201,204,205,206,263,266,271,340,391,415],write_datablock:81,writefil:32,writereg:28,wrong:266,ws2812:172,ws2812b:120,ws2812b_pwm:120,ws2812b_spi:120,wsc:140,x0:[38,135],x1:[38,135,144],x2:[11,38,135,144],x32:103,x:[11,38,101,105,135,144,415],xfer:[28,126],xmake:[352,353],xmodem:94,xpcall:415,xt804:266,xtalrefoutput:103,xxtea:142,y0:[38,135],y1:[38,135,144],y2:[11,38,135,144],y:[11,38,101,105,135,144,169,415],yet:331,yhm27xxx:120,yield:415,ymodem:143,you:[331,358,367,368,369,370,371,372,383,400,412],your:393,zbuff:[12,144,211,212,213],ze08g:95,ze08g_ch2o:95,zero:412,zh07:96,zlib:104,zone:109,zoom:409}}) \ No newline at end of file +Search.setIndex({docnames:["api/adc","api/antbot","api/audio","api/bit64","api/camera","api/cc","api/codec","api/coremark","api/crypto","api/dac","api/disp","api/eink","api/errDump","api/fastlz","api/fatfs","api/fdb","api/fonts","api/fota","api/fs","api/fskv","api/ftp","api/gmssl","api/gpio","api/gtfont","api/hmeta","api/ht1621","api/http","api/httpsrv","api/i2c","api/i2s","api/iconv","api/index","api/io","api/ioqueue","api/iotauth","api/ir","api/json","api/keyboard","api/lcd","api/lcdseg","api/libcoap","api/libgnss","api/libs/ads1115","api/libs/ads1115plus","api/libs/adxl34x","api/libs/aht10","api/libs/air153C_wtd","api/libs/ak8963","api/libs/aliyun","api/libs/am2320","api/libs/ap3216c","api/libs/bh1750","api/libs/bmx","api/libs/cht8305c","api/libs/ds3231","api/libs/ec11","api/libs/gt911","api/libs/gy53l1","api/libs/httpdns","api/libs/httpplus","api/libs/ina226","api/libs/index","api/libs/iotcloud","api/libs/l3g4200d","api/libs/lbsLoc","api/libs/lbsLoc2","api/libs/libfota","api/libs/libfota2","api/libs/libnet","api/libs/lis2dh12","api/libs/lm75","api/libs/max31856","api/libs/mcp2515","api/libs/mlx90614","api/libs/mpu6xxx","api/libs/necir","api/libs/netLed","api/libs/pca9685","api/libs/pcf8563t","api/libs/pcf8574","api/libs/qmc5883l","api/libs/rc522","api/libs/rtkv","api/libs/sc7a20","api/libs/shift595","api/libs/si24r1","api/libs/spl06","api/libs/tcs3472","api/libs/tm1637","api/libs/tm1640","api/libs/tm1650","api/libs/tsl2561","api/libs/udpsrv","api/libs/vl6180","api/libs/xmodem","api/libs/ze08g_ch2o","api/libs/zh07","api/little_flash","api/log","api/lora","api/lora2","api/lvgl","api/max30102","api/mcu","api/miniz","api/mlx90640","api/mobile","api/mqtt","api/os","api/otp","api/pack","api/pin","api/pm","api/protobuf","api/pwm","api/repl","api/rsa","api/rtc","api/rtos","api/sdio","api/sensor","api/sfd","api/sfud","api/sms","api/socket","api/softkb","api/spi","api/statem","api/string","api/supported","api/sys","api/sys_pub","api/sysplus","api/timer","api/touchkey","api/u8g2","api/uart","api/usbapp","api/w5500","api/wdt","api/websocket","api/wlan","api/xxtea","api/ymodem","api/zbuff","appDevelopment/index","appDevelopment/iotcloud/aliyun/code","appDevelopment/iotcloud/aliyun/device","appDevelopment/iotcloud/aliyun/index","appDevelopment/iotcloud/aliyun/intro","appDevelopment/iotcloud/aliyun/project","appDevelopment/iotcloud/aliyun/test","appDevelopment/iotcloud/basic/index","appDevelopment/iotcloud/basic/intro","appDevelopment/iotcloud/basic/json","appDevelopment/iotcloud/basic/protocol","appDevelopment/iotcloud/index","appDevelopment/iotcloud/onenet/code","appDevelopment/iotcloud/onenet/device","appDevelopment/iotcloud/onenet/index","appDevelopment/iotcloud/onenet/intro","appDevelopment/iotcloud/onenet/project","appDevelopment/iotcloud/onenet/test","appDevelopment/iotcloud/qcloud/code","appDevelopment/iotcloud/qcloud/device","appDevelopment/iotcloud/qcloud/index","appDevelopment/iotcloud/qcloud/intro","appDevelopment/iotcloud/qcloud/project","appDevelopment/iotcloud/qcloud/test","appDevelopment/lvgl/LVGL_for_LuatOS/LVGL_for_LuatOS","appDevelopment/lvgl/index","appDevelopment/peripheral/index","appDevelopment/peripheral/ws2812/ws2812","appDevelopment/video_play/105/video_play","appDevelopment/video_play/index","archives","blog/index","boardGuide/common/adc/index","boardGuide/common/crypto","boardGuide/common/disp","boardGuide/common/fdb","boardGuide/common/i2c/air101","boardGuide/common/i2c/air103","boardGuide/common/i2c/air105","boardGuide/common/i2c/index","boardGuide/common/index","boardGuide/common/lcd","boardGuide/common/log","boardGuide/common/mcu/air101","boardGuide/common/mcu/air103","boardGuide/common/mcu/air105","boardGuide/common/mcu/index","boardGuide/common/pm","boardGuide/common/pwm/air101","boardGuide/common/pwm/air103","boardGuide/common/pwm/air105","boardGuide/common/pwm/index","boardGuide/common/rtc","boardGuide/common/sfd","boardGuide/common/sfud/air101","boardGuide/common/sfud/air103","boardGuide/common/sfud/air105","boardGuide/common/sfud/index","boardGuide/common/spi","boardGuide/common/spi/air101","boardGuide/common/spi/air103","boardGuide/common/spi/air105","boardGuide/common/spi/index","boardGuide/common/sys","boardGuide/common/timer","boardGuide/common/uart","boardGuide/common/uart/air101","boardGuide/common/uart/air103","boardGuide/common/uart/air105","boardGuide/common/uart/index","boardGuide/flash","boardGuide/index","boardGuide/roadmap","boardGuide/vscode","chips/AirWatch","chips/W806","chips/air001/Air001-Arduino","chips/air001/Air001-MDK","chips/air001/board","chips/air001/hardware","chips/air001/index","chips/air001/mcu","chips/air001/power_dissipation","chips/air101/Air101","chips/air101/Air101-Hard-design","chips/air101/board","chips/air101/hardware","chips/air101/index","chips/air101/mcu","chips/air101/power_dissipation","chips/air103/board","chips/air103/hardware","chips/air103/index","chips/air103/lcdseg","chips/air103/mcu","chips/air103/power_dissipation","chips/air103/touchkey","chips/air105/board","chips/air105/encrypt","chips/air105/hardware","chips/air105/index","chips/air105/mcu","chips/air105/power_dissipation","chips/air106/board","chips/air106/hardware","chips/air106/index","chips/air106/mcu","chips/air302/board","chips/air302/hardware","chips/air302/index","chips/air302/mcu","chips/air32f103/Air32f103","chips/air32f103/board","chips/air32f103/daplink","chips/air32f103/enhancement","chips/air32f103/hardware","chips/air32f103/index","chips/air32f103/mcu","chips/air32f103/switchFromSxx","chips/air601/board","chips/air601/changelog","chips/air601/fota_iot","chips/air601/hardware","chips/air601/index","chips/air601/macaddr","chips/air601/mcu","chips/air601/spi_slave","chips/air640w/board","chips/air640w/hardware","chips/air640w/index","chips/air640w/mcu","chips/air780e/air700e","chips/air780e/air780eg","chips/air780e/board","chips/air780e/changelog","chips/air780e/firmware","chips/air780e/fota","chips/air780e/hardware","chips/air780e/index","chips/air780e/iomux","chips/air780e/mcu","chips/air780e/multiownload","chips/air780e/network","chips/air780e/pwrkey","chips/air780e/tts","chips/air780ep/air780epv","chips/air780ep/air780epvh","chips/air780ep/changelog","chips/air780ep/hardware","chips/air780ep/index","chips/air780ep/iomux","chips/air780ep/mcu","chips/air780eps/changelog","chips/air780eps/index","chips/air780eps/mcu","chips/air901/board","chips/air901/hardware","chips/air901/index","chips/air901/mcu","chips/chips","chips/coremark/README","chips/esp32c3/board","chips/esp32c3/change_flash","chips/esp32c3/changelog","chips/esp32c3/hardware","chips/esp32c3/index","chips/esp32c3/power_dissipation","chips/esp32s3/board","chips/esp32s3/hardware","chips/esp32s3/index","chips/esp32s3/mifi","chips/gnss/agps","chips/gnss/air510u","chips/gnss/air530z","chips/gnss/index","chips/gnss/others","chips/gnss/with4g","chips/index","chips/luatools/changelog","chips/luatools/features","chips/luatools/index","chips/pc/cmd_luadb","chips/pc/cmds","chips/pc/index","chips/pc/repo","chips/pc/usage","chips/question","chips/rp2040/index","chips/supported","chips/swm181/board","chips/swm181/hardware","chips/swm181/index","chips/swm181/mcu","chips/swm181/swm181","chips/win32","develop/add_lua_module","develop/add_myapi_5min","develop/add_myapi_lib","develop/c_wait","develop/cli/README","develop/cli/cmd_base","develop/cli/cmd_burn","develop/cli/cmd_pkg","develop/cli/cmd_prj","develop/cli/frontend","develop/cli/project","develop/compile","develop/compile/Air101","develop/compile/Air105","develop/compile/Air302","develop/compile/Air640w","develop/compile/Air780E","develop/compile/Air780EP","develop/compile/Cloud_compilation","develop/compile/ESP32C3","develop/compile/Linux","develop/compile/Win32","develop/contribute/add_module","develop/contribute/dev_doc/core/index","develop/contribute/dev_doc/core/luat_core","develop/contribute/dev_doc/core/luat_debugger","develop/contribute/dev_doc/core/luat_font","develop/contribute/dev_doc/core/luat_fs","develop/contribute/dev_doc/core/luat_memory","develop/contribute/dev_doc/core/luat_msgbus","develop/contribute/dev_doc/core/luat_platform","develop/contribute/dev_doc/core/luat_pm","develop/contribute/dev_doc/core/luat_timer","develop/contribute/dev_doc/core/luat_zbuff","develop/contribute/dev_doc/core/luat_zstruct","develop/contribute/dev_doc/core/sys_wait_pub","develop/contribute/dev_doc/index","develop/contribute/dev_doc/peripherals/index","develop/contribute/dev_doc/peripherals/luat_fonts","develop/contribute/dev_doc/peripherals/luat_gpio","develop/contribute/dev_doc/peripherals/luat_ir","develop/contribute/dev_doc/peripherals/luat_spi","develop/contribute/dev_doc/peripherals/luat_usart","develop/contribute/dev_doc/peripherals/luat_wlan","develop/contribute/index","develop/contribute/luadb","develop/contribute/soc_format","develop/contribute/style","develop/docs","develop/docs_design","develop/docs_use","develop/filesystems","develop/hex_string","develop/libs","develop/soc_download","index","iotpower/cc/index","iotpower/cc/index-en","iotpower/cc/parts","iotpower/cc/parts-en","iotpower/cc/question","iotpower/cc/tech","iotpower/cc/tech-en","iotpower/cc/usage","iotpower/cc/usage-en","iotpower/cc/wrong","iotpower/devices","iotpower/index","iotpower/index-en","iotpower/pc","iotpower/pc-en","iotpower/power/english","iotpower/power/index","luaGuide/index","luaGuide/introduction","luaGuide/luaReference","luaGuide/luatFramework","luaGuide/luatFramework_exts","luaGuide/luatask","pages/emulator","pages/supports","pages/tools","peripherals/camera_gc032a/demos","peripherals/camera_gc032a/hardware","peripherals/camera_gc032a/index","peripherals/chip_gtfont/demos","peripherals/chip_gtfont/hardware","peripherals/chip_gtfont/index","peripherals/eink_1.54/hardware","peripherals/eink_1.54/index","peripherals/eink_1.54/software","peripherals/index","peripherals/lcd_1in54_240x240/demos","peripherals/lcd_1in54_240x240/hardware","peripherals/lcd_1in54_240x240/index","peripherals/lcd_1in8_128x160/demos","peripherals/lcd_1in8_128x160/hardware","peripherals/lcd_1in8_128x160/index","peripherals/lcd_2in4_320x240/demos","peripherals/lcd_2in4_320x240/hardware","peripherals/lcd_2in4_320x240/index","peripherals/lcd_air10x/demos","peripherals/lcd_air10x/hardware","peripherals/lcd_air10x/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["api/adc.md","api/antbot.md","api/audio.md","api/bit64.md","api/camera.md","api/cc.md","api/codec.md","api/coremark.md","api/crypto.md","api/dac.md","api/disp.md","api/eink.md","api/errDump.md","api/fastlz.md","api/fatfs.md","api/fdb.md","api/fonts.md","api/fota.md","api/fs.md","api/fskv.md","api/ftp.md","api/gmssl.md","api/gpio.md","api/gtfont.md","api/hmeta.md","api/ht1621.md","api/http.md","api/httpsrv.md","api/i2c.md","api/i2s.md","api/iconv.md","api/index.md","api/io.md","api/ioqueue.md","api/iotauth.md","api/ir.md","api/json.md","api/keyboard.md","api/lcd.md","api/lcdseg.md","api/libcoap.md","api/libgnss.md","api/libs/ads1115.md","api/libs/ads1115plus.md","api/libs/adxl34x.md","api/libs/aht10.md","api/libs/air153C_wtd.md","api/libs/ak8963.md","api/libs/aliyun.md","api/libs/am2320.md","api/libs/ap3216c.md","api/libs/bh1750.md","api/libs/bmx.md","api/libs/cht8305c.md","api/libs/ds3231.md","api/libs/ec11.md","api/libs/gt911.md","api/libs/gy53l1.md","api/libs/httpdns.md","api/libs/httpplus.md","api/libs/ina226.md","api/libs/index.md","api/libs/iotcloud.md","api/libs/l3g4200d.md","api/libs/lbsLoc.md","api/libs/lbsLoc2.md","api/libs/libfota.md","api/libs/libfota2.md","api/libs/libnet.md","api/libs/lis2dh12.md","api/libs/lm75.md","api/libs/max31856.md","api/libs/mcp2515.md","api/libs/mlx90614.md","api/libs/mpu6xxx.md","api/libs/necir.md","api/libs/netLed.md","api/libs/pca9685.md","api/libs/pcf8563t.md","api/libs/pcf8574.md","api/libs/qmc5883l.md","api/libs/rc522.md","api/libs/rtkv.md","api/libs/sc7a20.md","api/libs/shift595.md","api/libs/si24r1.md","api/libs/spl06.md","api/libs/tcs3472.md","api/libs/tm1637.md","api/libs/tm1640.md","api/libs/tm1650.md","api/libs/tsl2561.md","api/libs/udpsrv.md","api/libs/vl6180.md","api/libs/xmodem.md","api/libs/ze08g_ch2o.md","api/libs/zh07.md","api/little_flash.md","api/log.md","api/lora.md","api/lora2.md","api/lvgl.md","api/max30102.md","api/mcu.md","api/miniz.md","api/mlx90640.md","api/mobile.md","api/mqtt.md","api/os.md","api/otp.md","api/pack.md","api/pin.md","api/pm.md","api/protobuf.md","api/pwm.md","api/repl.md","api/rsa.md","api/rtc.md","api/rtos.md","api/sdio.md","api/sensor.md","api/sfd.md","api/sfud.md","api/sms.md","api/socket.md","api/softkb.md","api/spi.md","api/statem.md","api/string.md","api/supported.md","api/sys.md","api/sys_pub.md","api/sysplus.md","api/timer.md","api/touchkey.md","api/u8g2.md","api/uart.md","api/usbapp.md","api/w5500.md","api/wdt.md","api/websocket.md","api/wlan.md","api/xxtea.md","api/ymodem.md","api/zbuff.md","appDevelopment/index.md","appDevelopment/iotcloud/aliyun/code.md","appDevelopment/iotcloud/aliyun/device.md","appDevelopment/iotcloud/aliyun/index.md","appDevelopment/iotcloud/aliyun/intro.md","appDevelopment/iotcloud/aliyun/project.md","appDevelopment/iotcloud/aliyun/test.md","appDevelopment/iotcloud/basic/index.md","appDevelopment/iotcloud/basic/intro.md","appDevelopment/iotcloud/basic/json.md","appDevelopment/iotcloud/basic/protocol.md","appDevelopment/iotcloud/index.md","appDevelopment/iotcloud/onenet/code.md","appDevelopment/iotcloud/onenet/device.md","appDevelopment/iotcloud/onenet/index.md","appDevelopment/iotcloud/onenet/intro.md","appDevelopment/iotcloud/onenet/project.md","appDevelopment/iotcloud/onenet/test.md","appDevelopment/iotcloud/qcloud/code.md","appDevelopment/iotcloud/qcloud/device.md","appDevelopment/iotcloud/qcloud/index.md","appDevelopment/iotcloud/qcloud/intro.md","appDevelopment/iotcloud/qcloud/project.md","appDevelopment/iotcloud/qcloud/test.md","appDevelopment/lvgl/LVGL_for_LuatOS/LVGL_for_LuatOS.md","appDevelopment/lvgl/index.md","appDevelopment/peripheral/index.md","appDevelopment/peripheral/ws2812/ws2812.md","appDevelopment/video_play/105/video_play.md","appDevelopment/video_play/index.md","archives.md","blog/index.md","boardGuide/common/adc/index.md","boardGuide/common/crypto.md","boardGuide/common/disp.md","boardGuide/common/fdb.md","boardGuide/common/i2c/air101.md","boardGuide/common/i2c/air103.md","boardGuide/common/i2c/air105.md","boardGuide/common/i2c/index.md","boardGuide/common/index.md","boardGuide/common/lcd.md","boardGuide/common/log.md","boardGuide/common/mcu/air101.md","boardGuide/common/mcu/air103.md","boardGuide/common/mcu/air105.md","boardGuide/common/mcu/index.md","boardGuide/common/pm.md","boardGuide/common/pwm/air101.md","boardGuide/common/pwm/air103.md","boardGuide/common/pwm/air105.md","boardGuide/common/pwm/index.md","boardGuide/common/rtc.md","boardGuide/common/sfd.md","boardGuide/common/sfud/air101.md","boardGuide/common/sfud/air103.md","boardGuide/common/sfud/air105.md","boardGuide/common/sfud/index.md","boardGuide/common/spi.md","boardGuide/common/spi/air101.md","boardGuide/common/spi/air103.md","boardGuide/common/spi/air105.md","boardGuide/common/spi/index.md","boardGuide/common/sys.md","boardGuide/common/timer.md","boardGuide/common/uart.md","boardGuide/common/uart/air101.md","boardGuide/common/uart/air103.md","boardGuide/common/uart/air105.md","boardGuide/common/uart/index.md","boardGuide/flash.md","boardGuide/index.md","boardGuide/roadmap.md","boardGuide/vscode.md","chips/AirWatch.md","chips/W806.md","chips/air001/Air001-Arduino.md","chips/air001/Air001-MDK.md","chips/air001/board.md","chips/air001/hardware.md","chips/air001/index.md","chips/air001/mcu.md","chips/air001/power_dissipation.md","chips/air101/Air101.md","chips/air101/Air101-Hard-design.md","chips/air101/board.md","chips/air101/hardware.md","chips/air101/index.md","chips/air101/mcu.md","chips/air101/power_dissipation.md","chips/air103/board.md","chips/air103/hardware.md","chips/air103/index.md","chips/air103/lcdseg.md","chips/air103/mcu.md","chips/air103/power_dissipation.md","chips/air103/touchkey.md","chips/air105/board.md","chips/air105/encrypt.md","chips/air105/hardware.md","chips/air105/index.md","chips/air105/mcu.md","chips/air105/power_dissipation.md","chips/air106/board.md","chips/air106/hardware.md","chips/air106/index.md","chips/air106/mcu.md","chips/air302/board.md","chips/air302/hardware.md","chips/air302/index.md","chips/air302/mcu.md","chips/air32f103/Air32f103.md","chips/air32f103/board.md","chips/air32f103/daplink.md","chips/air32f103/enhancement.md","chips/air32f103/hardware.md","chips/air32f103/index.md","chips/air32f103/mcu.md","chips/air32f103/switchFromSxx.md","chips/air601/board.md","chips/air601/changelog.md","chips/air601/fota_iot.md","chips/air601/hardware.md","chips/air601/index.md","chips/air601/macaddr.md","chips/air601/mcu.md","chips/air601/spi_slave.md","chips/air640w/board.md","chips/air640w/hardware.md","chips/air640w/index.md","chips/air640w/mcu.md","chips/air780e/air700e.md","chips/air780e/air780eg.md","chips/air780e/board.md","chips/air780e/changelog.md","chips/air780e/firmware.md","chips/air780e/fota.md","chips/air780e/hardware.md","chips/air780e/index.md","chips/air780e/iomux.md","chips/air780e/mcu.md","chips/air780e/multiownload.md","chips/air780e/network.md","chips/air780e/pwrkey.md","chips/air780e/tts.md","chips/air780ep/air780epv.md","chips/air780ep/air780epvh.md","chips/air780ep/changelog.md","chips/air780ep/hardware.md","chips/air780ep/index.md","chips/air780ep/iomux.md","chips/air780ep/mcu.md","chips/air780eps/changelog.md","chips/air780eps/index.md","chips/air780eps/mcu.md","chips/air901/board.md","chips/air901/hardware.md","chips/air901/index.md","chips/air901/mcu.md","chips/chips.md","chips/coremark/README.md","chips/esp32c3/board.md","chips/esp32c3/change_flash.md","chips/esp32c3/changelog.md","chips/esp32c3/hardware.md","chips/esp32c3/index.md","chips/esp32c3/power_dissipation.md","chips/esp32s3/board.md","chips/esp32s3/hardware.md","chips/esp32s3/index.md","chips/esp32s3/mifi.md","chips/gnss/agps.md","chips/gnss/air510u.md","chips/gnss/air530z.md","chips/gnss/index.md","chips/gnss/others.md","chips/gnss/with4g.md","chips/index.md","chips/luatools/changelog.md","chips/luatools/features.md","chips/luatools/index.md","chips/pc/cmd_luadb.md","chips/pc/cmds.md","chips/pc/index.md","chips/pc/repo.md","chips/pc/usage.md","chips/question.md","chips/rp2040/index.md","chips/supported.md","chips/swm181/board.md","chips/swm181/hardware.md","chips/swm181/index.md","chips/swm181/mcu.md","chips/swm181/swm181.md","chips/win32.md","develop/add_lua_module.md","develop/add_myapi_5min.md","develop/add_myapi_lib.md","develop/c_wait.md","develop/cli/README.md","develop/cli/cmd_base.md","develop/cli/cmd_burn.md","develop/cli/cmd_pkg.md","develop/cli/cmd_prj.md","develop/cli/frontend.md","develop/cli/project.md","develop/compile.md","develop/compile/Air101.md","develop/compile/Air105.md","develop/compile/Air302.rst","develop/compile/Air640w.rst","develop/compile/Air780E.md","develop/compile/Air780EP.md","develop/compile/Cloud_compilation.md","develop/compile/ESP32C3.md","develop/compile/Linux.md","develop/compile/Win32.md","develop/contribute/add_module.md","develop/contribute/dev_doc/core/index.md","develop/contribute/dev_doc/core/luat_core.md","develop/contribute/dev_doc/core/luat_debugger.md","develop/contribute/dev_doc/core/luat_font.md","develop/contribute/dev_doc/core/luat_fs.md","develop/contribute/dev_doc/core/luat_memory.md","develop/contribute/dev_doc/core/luat_msgbus.md","develop/contribute/dev_doc/core/luat_platform.md","develop/contribute/dev_doc/core/luat_pm.md","develop/contribute/dev_doc/core/luat_timer.md","develop/contribute/dev_doc/core/luat_zbuff.md","develop/contribute/dev_doc/core/luat_zstruct.md","develop/contribute/dev_doc/core/sys_wait_pub.md","develop/contribute/dev_doc/index.md","develop/contribute/dev_doc/peripherals/index.md","develop/contribute/dev_doc/peripherals/luat_fonts.md","develop/contribute/dev_doc/peripherals/luat_gpio.md","develop/contribute/dev_doc/peripherals/luat_ir.md","develop/contribute/dev_doc/peripherals/luat_spi.md","develop/contribute/dev_doc/peripherals/luat_usart.md","develop/contribute/dev_doc/peripherals/luat_wlan.md","develop/contribute/index.md","develop/contribute/luadb.md","develop/contribute/soc_format.md","develop/contribute/style.md","develop/docs.md","develop/docs_design.md","develop/docs_use.md","develop/filesystems.md","develop/hex_string.md","develop/libs.md","develop/soc_download.md","index.md","iotpower/cc/index.md","iotpower/cc/index-en.md","iotpower/cc/parts.md","iotpower/cc/parts-en.md","iotpower/cc/question.md","iotpower/cc/tech.md","iotpower/cc/tech-en.md","iotpower/cc/usage.md","iotpower/cc/usage-en.md","iotpower/cc/wrong.md","iotpower/devices.md","iotpower/index.md","iotpower/index-en.md","iotpower/pc.md","iotpower/pc-en.md","iotpower/power/english.md","iotpower/power/index.md","luaGuide/index.md","luaGuide/introduction.md","luaGuide/luaReference.md","luaGuide/luatFramework.md","luaGuide/luatFramework_exts.md","luaGuide/luatask.md","pages/emulator.md","pages/supports.md","pages/tools.md","peripherals/camera_gc032a/demos.md","peripherals/camera_gc032a/hardware.md","peripherals/camera_gc032a/index.md","peripherals/chip_gtfont/demos.md","peripherals/chip_gtfont/hardware.md","peripherals/chip_gtfont/index.md","peripherals/eink_1.54/hardware.md","peripherals/eink_1.54/index.md","peripherals/eink_1.54/software.md","peripherals/index.md","peripherals/lcd_1in54_240x240/demos.md","peripherals/lcd_1in54_240x240/hardware.md","peripherals/lcd_1in54_240x240/index.md","peripherals/lcd_1in8_128x160/demos.md","peripherals/lcd_1in8_128x160/hardware.md","peripherals/lcd_1in8_128x160/index.md","peripherals/lcd_2in4_320x240/demos.md","peripherals/lcd_2in4_320x240/hardware.md","peripherals/lcd_2in4_320x240/index.md","peripherals/lcd_air10x/demos.md","peripherals/lcd_air10x/hardware.md","peripherals/lcd_air10x/index.md"],objects:{},objnames:{},objtypes:{},terms:{"0":[0,1,2,4,5,6,8,9,11,12,14,15,17,18,22,25,26,27,28,29,30,32,33,34,35,36,37,38,39,41,42,43,44,45,47,48,49,50,51,52,53,54,55,56,59,60,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,96,97,98,99,100,101,102,103,105,106,107,108,109,110,111,112,114,116,117,118,119,120,121,122,124,125,126,127,128,130,131,134,135,136,137,138,140,141,143,144,169,172,173,177,179,180,181,182,183,186,187,188,189,190,192,193,194,195,198,199,200,201,203,204,205,206,208,209,211,212,213,220,221,224,228,229,230,231,236,241,242,244,246,251,253,255,257,258,260,261,266,267,271,277,278,279,280,283,284,285,286,287,291,295,296,306,312,322,326,331,338,339,341,342,343,345,347,349,354,355,362,364,365,368,369,372,373,374,375,379,381,382,383,387,391,394,396,401,406,409,414,415,416,417,418,426,443],"00":[13,28,41,60,104,124,126,144,194,263,271,356,357,414],"000":[400,415],"0000":394,"00000000":[386,394],"000000000000":141,"00008000":394,"0000ff":169,"0001":[199,200,201],"00010000":394,"0002":[199,200,201],"000287":190,"0003":[199,200,201],"0004":[199,200,201],"0005":[199,200,201],"0006":[199,200,201],"0007":[199,200,201],"0008":[199,200,201],"0009":[199,200,201],"000\u03bca":400,"000bc":415,"001":[0,330],"0010":60,"00182946365f":141,"002f0200":386,"00380000":394,"00390000":386,"0060ma":234,"00ff0200":394,"01":[0,28,34,41,120,121,124,126,140,141,144,263,271,277,306,308,312,365,374,382,383,391],"0100":60,"01000000":17,"01001000":394,"01010000":394,"0102":28,"010203":128,"0107ma":234,"0111":60,"0123":414,"0123456789":169,"01300000":394,"01380000":394,"02":[11,28,41,60,135,204,205,206,279,306,312,356,357,365,375,394],"02d":414,"02x":[8,90],"03":[17,28,141,279,306,312,366,373,381],"03083333":41,"031":64,"03272018":[204,205,206],"0335":41,"03_event":169,"03_overview":169,"03d":124,"04":[28,140,266,306,312,349,420],"0455":41,"04923":415,"04_widget":169,"05":[13,22,133,306,312,374],"05_btnmatrix":169,"05_indev":169,"05v":246,"06":[8,28,106,131,141,279,306,312,374],"07":[8,15,16,28,64,306,312,334,335,337,380,414],"07946":142,"08":[306,312],"09":[12,306,312],"0921ma":240,"092v":220,"09_chart":169,"0_":415,"0a":337,"0b":337,"0m":2,"0rndi":106,"0u":222,"0v":[229,246,263,400,401,412],"0x":[13,17,28,33,60,64,85,104,124,126,135,137,144,204,205,206,271,373,378,392,394,414,415],"0x0":415,"0x00":[3,8,11,28,38,72,75,81,83,126,135,144,169,181,182,183,199,200,201,204,205,206,225,259,271,322,379,383,385,414],"0x0000":[38,378],"0x000000":172,"0x00000000":386,"0x000080":[199,200,201],"0x0000ff":[38,120,172],"0x0001":378,"0x0002":378,"0x0003":378,"0x0004":378,"0x001f":[38,186,220,228,322],"0x00300000":17,"0x00ff00":[38,172],"0x00ffff":120,"0x00u":222,"0x01":[11,28,38,72,81,103,120,126,135,144,204,205,206,225,271,322,373,374,379,383,385,414],"0x01001000":246,"0x0105":374,"0x0190":374,"0x02":[11,25,38,44,72,135,204,205,206,225,322,379,383,385,414],"0x03":[39,72,136,204,205,206,225,322,379,383,385,414],"0x04":[11,38,72,120,135,204,205,206,225,259,322,379,383,385],"0x05":[44,72,83,120,225,322,383],"0x06":[72,89,90,204,205,206,220,225,228,322,374,383],"0x07":[72,81,89,90,199,200,201,225,322,383],"0x08":[11,38,135,199,200,201,225,322,383],"0x09":[225,322,383],"0x0a":[25,60,318,383,414],"0x0b":64,"0x0c":[64,199,200,201],"0x0ce0":[220,228],"0x0d":318,"0x0f":[11,28,38,135,181,182,183,199,200,201],"0x1":415,"0x10":[11,38,44,120,135,199,200,201,271],"0x100":[120,121,181,182,183,198],"0x1000":120,"0x10000":[181,182,183],"0x11":[28,35,38,64],"0x12":[32,64,144,373,380],"0x1234":[137,144,373],"0x12345678":[188,189,190],"0x13":32,"0x14":37,"0x18":[199,200,201],"0x1a":144,"0x1a5a5bbx":263,"0x1a5a5ccx":263,"0x1a6a5cdx":263,"0x1a8a6ddx":263,"0x1a8a6edx":263,"0x1a9a6ddx":263,"0x1ba01477":263,"0x1f":37,"0x1f450":169,"0x1f451":169,"0x1f470":169,"0x1ff":[37,72],"0x1fffffe6":72,"0x20":[11,38,85,120,135,199,200,201,204,205,206,271,414],"0x200":120,"0x2000":120,"0x20000000":[225,322],"0x2009fffc":103,"0x21":[38,271,373],"0x22":[35,271],"0x23":271,"0x24":271,"0x25":271,"0x26":271,"0x2603":135,"0x27":271,"0x28":271,"0x29":271,"0x2a":271,"0x2b":271,"0x2ba01477":263,"0x2c":[220,228,271],"0x2c06":[220,228],"0x2f":28,"0x30":[25,64,144,169,414],"0x31":[8,144,392,414],"0x3132":392,"0x32":[144,373,392,414],"0x33":[126,144,181,182,183,373,414],"0x3333ff":101,"0x34":380,"0x38":[181,182,183],"0x39":169,"0x3b":[64,199,200,201],"0x3ba00477":263,"0x3f":[89,90,134],"0x40":[11,38,120,135,199,200,201],"0x400":120,"0x4000":120,"0x4001244e":263,"0x41":[169,414],"0x411fc231":263,"0x412fc230":263,"0x42":[199,200,201,414],"0x44":[28,199,200,201,220,228,414],"0x4567":[144,373],"0x48":[11,38,135],"0x4b":136,"0x4ba00477":263,"0x4e":25,"0x4e00":169,"0x4f":[89,90],"0x52":[25,199,200,201],"0x55":[136,144,263],"0x5678":137,"0x5a":[169,385],"0x5b":[89,90],"0x5c":28,"0x60":[11,38,135],"0x61":[169,414],"0x62":414,"0x65":414,"0x66":[89,90],"0x67":414,"0x68":[28,414],"0x69":414,"0x6b":[199,200,201],"0x6c":414,"0x6d":[89,90],"0x6e":414,"0x6f":[89,90,414],"0x70":414,"0x72":414,"0x74":414,"0x75":[28,414],"0x79":414,"0x7a":169,"0x7d":[89,90],"0x7f":[89,90],"0x7ff":72,"0x7fff":169,"0x7fffffff":103,"0x80":[11,38,81,120,135,169],"0x800":120,"0x8000":120,"0x81e0000":386,"0x82":84,"0x83":[11,38,135],"0x84":[11,38,135],"0x86":136,"0x8a":25,"0x8f":25,"0x90":[75,204,205,206],"0x9f":[126,203,220,228],"0x9fff":169,"0xa23p":415,"0xa5":[271,385],"0xa9":22,"0xaa":[136,144,263],"0xac":[181,182,183],"0xad":25,"0xbb":[199,200,201],"0xbebada":415,"0xc":144,"0xc5":378,"0xc7":25,"0xc8":144,"0xcf":25,"0xd8":[199,200,201],"0xe0000000":17,"0xe5":[8,199,200,201],"0xe7":25,"0xeb":[25,199,200,201],"0xeeeeff":101,"0xef":[25,199,200,201],"0xef15":75,"0xef16":75,"0xef17":[204,205,206],"0xef4018":[220,228],"0xf":37,"0xf0":[37,181,182,183],"0xf005":169,"0xf1":25,"0xf2":28,"0xf33":169,"0xf8":[11,38,135],"0xf800":[144,220,228],"0xf9":[199,200,201],"0xfe":[199,200,201,378,385],"0xff":[8,35,37,38,39,44,85,89,169,199,200,201,369,372,394,414,415],"0xff0000":38,"0xffff":[8,38,39,76,106,144,261,322,372],"0xffffff":[220,228],"0xffffffff":[39,103,136,262,372],"0y":135,"1":[0,1,2,4,5,8,10,11,13,14,15,17,19,20,22,24,25,26,27,28,29,30,32,33,34,36,37,38,39,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,59,60,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,103,105,106,107,108,109,110,111,112,114,115,117,118,120,121,122,124,125,126,127,128,130,131,132,134,135,136,137,138,140,141,143,144,169,172,173,175,177,179,180,181,182,183,186,187,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,209,210,211,212,213,217,219,220,221,224,225,226,228,229,231,236,239,241,242,243,244,245,251,253,255,257,258,260,261,262,266,267,269,270,271,277,278,279,280,283,284,285,286,287,291,292,295,296,304,310,314,316,317,318,322,326,336,337,340,342,343,345,347,349,357,359,364,365,369,371,372,373,374,375,378,381,382,383,386,387,388,390,392,395,398,400,401,403,412,416,417,418,421,424,431],"10":[0,3,8,11,12,21,22,26,32,33,34,38,46,72,74,77,81,85,88,100,101,102,106,112,120,124,127,130,133,135,136,144,169,175,187,193,194,195,204,205,206,209,219,220,228,229,236,238,241,246,251,258,262,263,265,266,271,277,279,280,284,289,306,312,316,317,318,337,356,357,359,372,380,381,394,409,414,417,418,420],"100":[2,11,17,22,26,29,39,45,47,53,57,59,74,77,86,89,101,106,112,114,118,120,169,181,182,183,193,194,195,204,205,206,220,228,258,263,279,356,357,382,401,414,415,417],"1000":[2,11,14,26,42,43,44,45,49,51,52,53,54,56,57,60,63,65,66,67,69,70,71,72,73,75,76,77,80,81,82,83,84,85,86,87,88,89,90,91,94,95,96,99,100,101,103,112,114,120,122,130,131,132,141,169,173,177,179,186,188,189,190,192,193,194,195,198,199,200,201,203,204,205,206,208,210,220,221,222,228,279,339,342,360,361,386,392,415,416,417,418],"10000":[33,75,106,114,118,139,187,209,416,418],"100000":75,"1000000":[190,394],"1000000hz":114,"1000hz":[220,228],"1000m":[416,417],"10086":34,"100\u03c9":246,"100ask":169,"100k":[258,259,262,271,368],"100khz":[222,226,406],"100ksp":306,"100m":[2,22,28,220,228],"100ma":277,"100mbp":331,"100mv":39,"100pf":400,"100u":[138,222,229,401],"101":[178,322,352,414],"101_lua_lod":215,"1024":[6,13,17,32,41,103,106,119,122,126,136,144,199,200,201,211,212,213,220,228,251,304,368,373,385,392,415],"1024k":297,"1024m":133,"1025":266,"1027923658":420,"102a3b4c5d6":138,"103":[331,388,390],"103336":177,"103348":177,"103372":177,"103_lua_lod":215,"105":[17,28,101,126,251,322,353],"105_lua_lod":215,"106":107,"1061":177,"1061642968":[220,226,233,239,255,341,420],"1063":177,"107":[41,106],"108mhz":246,"109":106,"109pin":304,"10_anim":169,"10cm":93,"10k":[262,263,265,407],"10khz":[114,396,401,406,412],"10m":[14,317],"10ma":412,"10mbp":331,"10mhz":222,"10mil":[230,235,242,264,276,277,278],"10mm":246,"10mv":[401,406],"10u":[127,263],"10v":398,"10w":219,"10x":322,"11":[8,16,41,78,106,120,124,128,135,141,169,175,219,220,228,229,234,236,238,240,241,246,263,265,271,277,279,284,306,308,312,317,364,367,368,369,371,372,394,409,414,417],"110":289,"110m":35,"11100":37,"11111":37,"112":386,"1120":106,"112kb":220,"113":41,"114":[41,106,124,414],"114514":414,"115":106,"115200":[41,94,136,143,188,189,210,213,220,221,228,229,269,277,291,317,318,382,394],"1152000":394,"1173":177,"1174":177,"1175":177,"11898":312,"11b":270,"11bit":337,"11g":41,"11th":[64,414],"12":[8,11,12,16,22,32,38,41,60,98,106,111,112,117,120,127,128,135,144,169,179,236,238,241,246,251,253,263,265,269,271,277,279,284,295,306,312,337,373,379,391,392,394,400,401,412,414,415],"120":[38,50,101,107,169,186,220,228,304],"1200":[103,279,394],"120000":[417,418],"12010126":34,"120kb":337,"120mhz":246,"121":64,"122":128,"1222":20,"12222":20,"123":[8,19,21,26,31,59,98,107,113,124,126,140,144,266,280,289,341,373,414,415],"12312121212":289,"123123":414,"123321456654":[144,373],"1234":[19,103,106,128,137,414],"12341234":[141,315],"12342334":34,"12345":[266,387,414],"123456":[8,82,107,124,128,414],"1234567":[107,414],"12345678":[12,107,141,315,414],"1234567812345678":21,"123456789":[34,62,107,414],"1234567890":[8,103,116,178,220,228],"12345678901234":178,"1234567890123456":[8,21,178],"1234567890666666":[8,21,178],"1234567890m":103,"1234567890u":103,"12345678910":414,"1234567891011":414,"123abc":128,"123jfoiq4hlkfjbnasdilfhuqwo":[13,104],"124":32,"124045331":106,"124045360":106,"12411":[64,65],"12425":12,"1248":103,"124999":263,"125":246,"125000":263,"1262":177,"126322567":[417,418],"1264":177,"127":[22,38,134,135],"128":[8,21,32,94,116,144,169,173,178,186,220,228,263,279,287,304,373,437],"128035":263,"1280m":106,"128hz":289,"128k":[261,262,285,395],"128kb":280,"128m":[204,205,206],"128mb":307,"128x160":431,"1298":[356,357],"12awsaslwlaawsllslllswasllalssawwlawslaw":414,"12awslawslaw":414,"12bit":[136,226],"12f":[36,267,268,269,322],"12f\u4f7f\u7528\u8bf4\u660e":267,"12f_\u6a21\u5757\u4ea7\u54c1\u89c4\u683c\u4e66":267,"12f_modul":267,"12f_wifi":267,"12f_wifi\u6a21\u5757\u786c\u4ef6\u8bbe\u8ba1\u624b\u518c":267,"12k":342,"12m":[246,322],"12mhz":246,"12x":135,"12x12":179,"13":[11,41,78,106,120,124,127,141,234,236,238,240,241,246,253,266,273,279,284,295,304,306,312,394,400,414],"1300001":41,"132":417,"1328565":[356,357],"132mhz":246,"133":417,"134":417,"1348":177,"135":417,"1350":177,"1354":177,"135hello":414,"136":417,"137":[107,417],"138":417,"139":417,"13m":278,"14":[11,36,38,41,78,106,120,124,127,229,234,236,238,241,246,253,273,279,284,295,306,312,382,383,394,415],"140":[106,417],"141":417,"1415926":414,"1416":[414,415],"142":[177,417],"144":177,"144mhz":246,"145":177,"1460":124,"14bit":337,"15":[31,33,41,64,65,78,82,106,107,120,121,124,134,135,144,169,190,211,212,213,219,229,236,238,241,246,263,273,279,284,304,306,312,366,394,401],"150":[169,322],"1500":[124,271],"15000":[65,106,140,141],"1500000":[115,215,242,331],"150m":246,"150mbp":270,"152":11,"15200":394,"1526hz":77,"156mhz":246,"15\u03bca":[396,401],"15dbm":106,"15km":316,"16":[2,3,6,8,11,14,22,29,38,39,41,61,81,101,103,105,106,117,128,135,136,137,144,169,199,200,201,220,228,231,236,238,246,251,253,261,262,263,267,270,284,295,304,306,312,322,336,337,373,392,394,415,434,437,440],"160":[11,38,103,144,169,173,186,188,189,220,304,308,437],"1600":177,"16000":2,"16000000":263,"1601":177,"160kb":275,"160khz":193,"160m":[310,322],"160mhz":[188,189,251],"160x":173,"16384":[6,220,228],"1650":112,"1652230554":117,"165kb":104,"16777216":[199,200,201],"168":[138,141],"168mhz":246,"16bit":226,"16byte":[124,263],"16e":415,"16k":[5,395],"16kb":[6,337],"16ksp":337,"16m":[134,263,307],"16mb":[199,200,201,306,307,312],"16mflash":219,"16px":366,"16x":[11,38,135],"17":[11,21,22,38,48,82,97,103,106,117,120,121,122,124,126,140,197,204,205,206,220,229,230,231,235,236,238,242,246,253,258,264,267,273,276,277,278,284,306,311,312,387,420],"1709":177,"1712":177,"1712mv":177,"1713":177,"172":169,"176":386,"1776":177,"1777":177,"177x177":[11,38,135],"17955":414,"18":[11,22,38,41,64,73,82,133,179,180,220,231,236,238,246,253,267,270,273,304,306,312,318,341,375,379,420],"180":[11,38,135,141,169],"1800":112,"180mhz":246,"1850":106,"1860":106,"1884":107,"18khz":84,"19":[11,21,28,38,41,73,106,220,231,236,238,246,253,267,273,291,295,304,306,312,318,341,356,357],"190":169,"1900":[117,124],"1919810":414,"192":[38,101,135,138,141,190,305],"19200":136,"1926":414,"192kb":255,"192m":[245,322],"192mhz":246,"194":41,"1999":[263,356,357],"1\u03bca":[406,412],"1_":415,"1_20211022":236,"1_layer":415,"1a":[23,318,400],"1a_v1":426,"1b":318,"1byte":[33,124],"1cg28rk":355,"1e":415,"1ecm":106,"1f":414,"1fp":4,"1k":[94,270,279],"1kb":[211,212,213],"1khz":[114,193,194,195,220,228],"1m":[2,279,304,394],"1ma":412,"1mb":270,"1mbyte":[339,360,361],"1msp":337,"1mv":[406,412],"1nat":106,"1nf":229,"1s":[188,189,190,208,418],"1st":[38,415],"1u":[103,190],"1ua":[337,401],"1uf":[229,246],"1us_tick":33,"1v":263,"1x":135,"1y":135,"2":[0,2,4,5,10,11,13,14,15,19,22,24,25,26,27,28,29,36,37,38,39,41,49,57,59,62,64,65,66,67,75,78,82,83,84,88,89,90,93,94,98,101,103,105,106,107,108,109,110,112,115,120,121,124,126,128,130,131,132,134,135,136,138,141,144,169,172,173,175,177,181,182,183,187,188,189,194,199,200,201,204,205,206,211,212,215,217,219,220,221,225,226,228,229,230,231,234,235,236,240,241,242,243,245,251,253,255,258,261,262,264,266,267,270,271,276,277,278,279,280,284,285,286,287,289,292,293,295,296,304,310,314,315,317,318,322,325,326,330,336,337,339,340,342,343,347,349,357,359,362,365,371,373,375,378,385,387,388,390,392,398,401,403,409,416,417,431],"20":[11,38,41,72,93,101,106,122,126,135,144,169,173,181,182,183,186,188,189,194,198,199,200,201,203,204,205,220,228,231,236,238,246,267,270,271,273,277,279,284,304,306,312,322,373,378,398,403,414,415,420],"200":[2,11,26,27,40,66,67,75,82,89,93,120,141,169,181,182,183,266,277,305,375,412,415],"2000":[38,57,64,77,78,90,93,108,112,114,120,136,138,169,197,208,211,212,213,220,228,284,416,417],"20000":[64,136,375],"2000000":[38,97,122,126,136,203,220,228,387,394],"20000000":[11,126,381],"2000m":417,"20034598":180,"200345a8":180,"200\u03bca":412,"200k":13,"200kb":[255,275],"200m":[133,322],"200ma":[246,412],"200mhz":251,"201":38,"2015":[1,414,415],"2017":64,"2018":[34,169,356,357,414],"2019":[356,357,364,367,368,369,371,372,379,414],"2020":[256,262,306,312,338,357,381,382,383],"2021":[54,117,197,220,258,356,365,373,380],"20211011092353":358,"20211011092608787_qq\u622a\u56fe":358,"20211202193519160_air103_\u6838\u5fc3\u677f\u8bbe\u8ba1\u624b\u518c":236,"20211202193606476_air103_mcu\u8bbe\u8ba1\u624b\u518c":236,"2022":[0,8,15,16,22,41,112,169,280,281,342,349,356,366,374,375],"20220114193313925_air105\u82af\u7247\u6570\u636e\u624b\u518c":244,"20220303111656608_air105\u6838\u5fc3\u677f\u4f7f\u7528\u624b\u518c":244,"20220419_220202":345,"20220420_223344":347,"20220511":243,"20220513112445291_air105_mcu\u8bbe\u8ba1\u624b\u518c":244,"20220605164850945_air32f103\u82af\u7247\u6570\u636e\u624b\u518c":[257,260],"20220612160340":246,"20220612160407604_qq":246,"20220721163511464_\u534e\u82af\u5fae\u7279swm181\u6570\u636e\u624b\u518c":[334,335,337],"20221028114557272_air780e\u5f00\u53d1\u677f\u539f\u7406\u56fev1":278,"20221104135203881_780x\u5f00\u53d1\u677f\u539f\u7406\u56fe\u548cpcb":278,"20221110145812309_air780e\u5f00\u53d1\u677f\u5587\u53ed\u6269\u5c55\u677fv1":278,"20221219":284,"2023":[1,3,8,12,14,17,19,21,22,28,31,32,41,73,78,106,121,124,128,131,133,135,140,141,258,269,277,279,357,391,400],"20230330":284,"20230619165631229_air601":267,"20230626161923628_\u5f00\u53d1\u677fevb_air601":267,"20230721175506039_air001\u82af\u7247\u6570\u636e\u624b\u518c":224,"20230726105503590_air601":267,"2024":[17,22,34,36,41,48,103,106,124,126,140,141,266,291,308,318,357],"2048":[116,124],"2048bit":116,"204mhz":246,"205":40,"20_list":169,"20bit":263,"20k":[169,262],"20khz":89,"20m":[126,381],"20mhz":251,"20mv":401,"20ppm":401,"20v":[396,398],"21":[20,41,93,136,169,220,231,236,238,246,267,271,273,284,306,312,356,357,391,414,420],"211013":337,"216m":258,"216mhz":259,"21mm":[306,312],"21v":401,"21x21":[11,38,135],"22":[11,12,38,41,82,99,100,112,120,209,231,234,236,238,240,246,256,267,270,271,273,284,306,312],"220":[38,169],"2200":34,"223":414,"227096712":106,"227857":263,"23":[8,15,17,41,106,118,120,141,169,231,236,238,246,267,271,273,284,295,306,312,414,415,420],"230":414,"230400":136,"231":41,"233":414,"2333":414,"233333":128,"2334ma":234,"23423":82,"23456":340,"235":169,"239":263,"24":[11,38,41,78,120,172,179,204,205,206,229,231,236,238,246,251,267,271,284,295,306,312,337,373,374],"240":[4,62,101,103,107,144,169,188,189,220,228,304,305,373,434,440],"2400":[136,279],"2400000":41,"24000000":[14,138,173],"24000000u":222,"240m":[219,312],"240mhz":[103,188,189,270],"240x240":431,"240x320":[331,431],"2425864":64,"244":124,"2452":106,"248kb":337,"2490":[356,357],"24_page":169,"24bit":38,"24hz":77,"24m":[103,246,304],"24mhz":[204,205,206,337],"24v":[396,401,406],"25":[2,41,103,135,141,229,231,236,238,246,253,266,267,271,284,291,295,306,312,322,325,338,364,368,369,372],"250":105,"2500":[220,228],"2549515":[356,357],"255":[14,15,19,25,41,64,124,138,141,169,173,204,205,206,383,394,414,415],"255tick":33,"256":[21,114,121,136,169,193,204,205,206,220,228,271,279,287,292,317,318,414,415],"2560m":106,"256k":[219,262,285,296,304],"256kb":275,"256m":[261,262,322],"25m":304,"26":[11,19,38,41,103,231,236,238,246,253,266,267,271,273,284,295,306,312,322,325],"2603":135,"2650":112,"2670":177,"2673":177,"2675":177,"26_slider":169,"26m":[291,331],"26mhz":321,"27":[3,8,17,22,39,41,60,76,82,135,181,182,183,231,236,238,240,246,253,259,263,266,267,271,273,284,295,306,312,381],"270":[11,38,135],"278":41,"2793ma":240,"28":[8,46,140,169,236,238,246,253,271,273,284,295,306,312,367,371],"281":169,"288":386,"288k":[270,304],"29":[28,34,39,126,169,234,236,238,246,253,271,273,284,295,306,312,414],"292":28,"299":266,"2999":34,"29bit":337,"2a":[406,407,412],"2bia":337,"2byte":263,"2d":41,"2d\u52a0\u901f":304,"2f":[53,181,182,183],"2g":[285,287,296,359,421],"2k":279,"2m":[103,126,220,232,237,304,322,386,394],"2ma":412,"2mbp":270,"2mhz":[103,188,189],"2msram":219,"2nd":[38,169,414,415],"2u":263,"2ua":277,"2v":[0,246,263,412],"2x":[135,169],"2y":135,"3":[0,2,4,10,11,15,17,19,24,25,26,36,37,38,39,41,49,54,59,61,64,65,66,67,75,81,82,84,88,89,90,98,101,103,106,107,109,112,115,117,118,120,123,124,126,128,132,135,141,144,169,173,175,177,181,182,183,199,200,201,203,204,205,206,210,215,217,219,220,225,228,229,231,236,241,242,245,253,258,261,262,271,278,279,284,287,292,295,304,310,314,317,318,322,336,337,342,355,356,357,362,365,369,370,373,378,386,387,388,390,392,395,398,400,401,403,416,417,429],"30":[11,38,59,106,107,120,135,144,169,173,186,195,215,217,236,238,246,253,263,273,277,284,295,306,311,312,337,349,403,415,418],"300":[66,67,112,120,172,192,195,365],"3000":[24,64,65,82,99,100,106,107,118,124,139,140,208,342,416],"30000":[64,65,66,130],"3000000":394,"30005":106,"3000m":[62,107,140],"3000u":133,"300k":[285,296],"300m":57,"300mah":219,"301":120,"302":331,"305419896":[188,189,190],"30cm":93,"30kb":255,"30ma":337,"30mil":229,"30u":263,"30v":406,"30w":[331,424],"31":[34,39,41,106,114,117,128,137,141,144,169,197,220,229,236,238,246,263,273,284,295,304,306,312,392,414,415],"31249":263,"3132":392,"313233616263":128,"31393033535138385400000000617603":190,"314":415,"31416e1":415,"3149ma":240,"32":[8,11,21,29,31,38,103,104,106,112,117,127,128,129,135,137,144,169,190,198,236,238,246,251,262,263,270,273,284,295,304,306,312,337,373,386,392,415],"320":[4,144,169,220,228,304,440],"3200":29,"32000u":222,"320480":108,"320m":106,"32472115200":34,"3250ma":240,"3269ua":247,"32765":289,"32768u":222,"32_textarea":169,"32bit":[3,103,110,261,322],"32k":[13,103,104,246,262],"32kb":[104,199,200,201,337],"32kbyte":226,"32khz":[246,337],"32mhz":337,"33":[39,126,128,137,144,169,236,238,246,284,295,370],"330":305,"3300":112,"330uf":229,"332kb":255,"34":[137,236,238,246,269,284,295,414],"3400":112,"345":[356,357,414,415],"34e1":415,"35":[41,188,189,231,236,246,267,284,415],"36":[41,231,236,246,258,267,284,415],"360":[169,409],"3600":[12,66,67,82],"3600000":280,"360k":297,"36khz":380,"37":[236,238,246,281,317,318,414],"37524839":339,"38":[22,236,238,246],"38400":136,"388":106,"3882":177,"3889":177,"3898":177,"38k":[35,380],"39":[124,246,284,295,304],"3\u7248\u672c":355,"3a":401,"3bia":337,"3cm":258,"3d":[41,430],"3duti":337,"3g":[285,287,296],"3hz":193,"3m":[331,398],"3rd":[38,414,415],"3v":[2,112,181,182,183,199,200,201,204,205,206,210,219,246,258,271,278,306,312,317,318,337,400,429],"3v3":[93,306,312],"3x":169,"3yn5g_tr":236,"4":[0,4,8,10,11,15,17,19,22,24,25,26,36,37,38,39,41,59,64,66,67,81,82,84,88,89,90,93,98,99,100,101,105,106,107,109,110,112,115,117,120,122,124,126,128,132,135,140,141,144,169,175,177,181,182,183,188,189,190,199,200,201,204,205,206,213,217,219,220,224,228,229,231,236,241,245,251,253,258,261,262,263,266,267,270,271,277,278,279,284,292,295,304,310,314,316,317,318,322,337,338,365,369,370,374,378,382,385,392,394,398,401,403,409,412,416,417,431],"40":[11,38,103,106,127,135,169,186,187,188,189,220,228,236,238,246,251,277,295,308,331,373,415],"400":[13,14,104,173],"400001004":[231,236],"4000mm":57,"400k":304,"400ma":246,"40123":124,"404":[27,40],"4067":41,"4095":19,"4096":[6,19,29,107,109,199,200,201,279],"4096bit":116,"40k":[169,229,259,262],"40kb":275,"40m":229,"40mhz":[188,189,229,251,270],"40u":[127,412],"41":[187,236,238,246,295,331],"4126ma":240,"4193":82,"42":[187,236,238,246,295,331],"42009":414,"43":[117,187,197,220,236,238,246,284,295],"4305ma":311,"433000000":[99,100],"4344ma":240,"4375":[220,228],"4392ma":311,"44":[106,246,247,266,284,295,304],"44000":9,"44100":29,"448":386,"448k":285,"448kb":280,"45":[169,215,246,284,415],"4500":[220,228],"45000":140,"456":[128,140],"4578":281,"458":169,"46":[103,187,200,201,206,246,247,266,295],"460":106,"460800":[136,394],"47":[60,187,246,284],"472":305,"4736522":64,"47pf":400,"47uf":229,"48":[64,169,173,187,190,246],"480":[169,219,304,331],"4800":[136,279],"48000000":33,"4804ma":247,"480k":[281,283,322],"480kb":280,"4846ma":234,"485":[136,217,279],"48m":[219,336],"48mhz":[259,337],"49":[187,246,295,414,415],"492":177,"494":177,"49k":229,"4_20210909":231,"4byte":[33,124],"4duti":337,"4e":415,"4f":414,"4g":[12,82,106,215,219,231,236,266,267,277,285,287,296,306,312,315,319,320,322,395,421],"4gmodem":219,"4hz":105,"4k":[13,17,204,205,206,217,263],"4kb":[12,199,200,201],"4kbyte":226,"4m":[246,304],"4mb":[306,307],"4mflash":219,"4mm":[232,233],"4th":[38,181,182,183,414,415],"4v":[177,220,228,229,246,337],"5":[8,11,15,19,22,25,26,28,31,33,36,39,41,43,57,59,60,64,66,67,71,73,76,78,82,89,90,96,98,103,104,106,107,112,114,120,124,128,135,136,138,141,144,169,172,173,175,177,180,181,182,183,190,192,193,195,199,200,201,205,206,217,219,220,226,228,236,241,245,251,253,258,261,263,270,278,279,284,289,291,292,295,304,306,312,318,322,331,354,365,370,372,386,394,395,398,400,401,403,412,414,416,417,418,443],"50":[22,32,41,101,114,118,135,169,181,182,183,193,194,195,246,265,279,295,320,414],"500":[22,50,76,81,84,90,105,130,169,181,182,183,195,220,222,228,320,401,418],"5000":[26,54,65,82,106,118,120,139,181,182,183,188,189,190,208,209,320,416],"5000m":[26,209],"5000u":222,"500\u03bca":401,"500m":[22,418],"500ma":229,"500ua":277,"5016":190,"5023":209,"5037":[188,189],"50736":177,"50788":177,"5080":76,"50832":177,"50hz":[22,308],"50kb":275,"50ksp":337,"50m":265,"50ma":401,"50mhz":271,"50mv":112,"51":[181,182,183,246,289,412],"510":115,"512":[14,32,82,119,143,169,279],"5120m":106,"512k":[297,304,312],"512kb":251,"514":414,"51k\u03c9":246,"51mm":[306,312],"52":[11,246,289,295,414],"520":172,"53":[243,246,289],"5370ma":240,"5383ma":234,"54":[11,246,289,431],"54mm":[230,235,242,264,276,277,278],"55":[106,107,246,289],"5576ua":234,"559":266,"56":[246,269,304,337],"560177349780":437,"567890":103,"57":[246,284],"57600":136,"58":[246,284],"587923556178":275,"59":[28,41,64,246,415],"591":28,"592":177,"593":177,"595":[84,177],"5\u03bca":412,"5a":[396,401,406],"5d":219,"5g":[231,236,267,285,287,296,356,357],"5k":[261,262,322],"5kb":277,"5m":[120,251],"5ma":401,"5mbp":172,"5msp":251,"5s":[188,189,190,208],"5th":[181,182,183,414],"5ua":337,"5v":[246,258,263,306,312,315,396,403,406,407],"5v2a":412,"6":[2,15,19,25,26,32,36,39,41,48,55,64,88,89,90,106,108,112,120,124,128,140,141,144,169,175,177,181,182,183,211,212,220,228,236,238,241,242,245,253,279,284,292,295,304,318,322,337,365,394,398,403,409,414],"60":[39,65,77,82,106,135,140,169,246,263,277,279],"600":[12,107,279],"60000":[64,65,106,118,124],"600000":280,"6050accel":74,"6050gyro":74,"6050temp":74,"6055f9779010":82,"606":305,"60fp":219,"60hz":39,"60kb":255,"60ma":277,"61":[128,246,415],"6100n":263,"6115ma":240,"6132ma":311,"618":73,"618_lua_lod":215,"61984":177,"62":[124,128,246],"6203cc94c7fb24029b110408_88888888":34,"62052":177,"62060":177,"6228":277,"63":[19,41,81,128,135,181,182,183,246],"64":[19,21,31,81,103,109,129,137,169,199,200,201,220,228,246,343,386,415],"640":5,"6400":5,"6406ma":234,"640k":[246,304],"640m":106,"640x":331,"649926645":420,"64bit":[3,103,110,121,279],"64hz":289,"64k":[17,121,262,289,297,304,368],"64kb":[199,200,201,251,275,280,337],"64mb":307,"65":[11,169,246],"65001":330,"65525":92,"6553":289,"65535":136,"65535u":33,"65536":180,"65555":22,"656786354871":440,"6584ma":247,"65k":[437,440],"66":[11,169,220,228,246,394],"660335018289":434,"661835138573":443,"665811924219":423,"666":414,"67":[106,246],"6703ma":247,"6721ua":234,"6728ma":234,"68":246,"6808454646333a0cbb8":[188,189],"688":76,"69":246,"6byte":138,"6c95875d0f5ba69607nzfl":34,"6mm":[220,239],"6th":[181,182,183],"6v":[177,229,246,263,337,398,403],"7":[6,11,15,22,25,26,28,37,38,39,41,43,55,64,78,79,88,89,90,103,106,112,120,124,127,134,135,136,141,169,175,177,181,182,183,206,213,229,231,236,238,241,244,245,253,263,267,277,279,318,322,352,353,354,356,357,394,409,414,417],"70":[169,220,228,246],"700":120,"700e":117,"700mil":[230,235,242,264,276,277,278],"70ua":337,"71":[246,263],"72":246,"7258089600":34,"7260ma":234,"72m":262,"72mhz":259,"73":246,"74":[246,304],"740":112,"74hc595":61,"75":[106,181,182,183,246],"750k":289,"754":415,"757ccd0cdc5c90eadbeeecf638dd0000":8,"75hc595":84,"76":246,"767":105,"767427989":420,"768":[105,304],"76v":0,"77":246,"78":[106,181,182,183,246,269],"780e":[117,277,279],"780ep":117,"789":[128,140,414],"78kb":255,"78mm":[230,235,242,264,276,277,278],"79":246,"7956ua":240,"7f":[36,279],"7g":36,"7k":246,"7mm":424,"7s":246,"7th":[263,414],"7uf":229,"7v":[39,246,337],"7z":[234,240,247,267,311,356,357,386,394,409],"8":[3,6,11,12,14,15,22,25,26,29,38,39,41,65,71,72,73,75,76,81,85,89,90,97,99,100,103,105,106,110,112,115,117,120,121,122,124,126,135,136,137,138,144,169,172,173,175,186,195,197,199,200,201,203,204,205,206,210,211,212,213,219,220,228,231,236,238,241,246,253,259,263,267,277,279,287,304,312,317,318,322,337,342,356,357,374,381,382,387,394,398,403,414,416,417,431],"80":[11,27,38,66,103,118,169,186,188,189,246,308],"8000":130,"8000000":222,"8000000u":222,"800k":[120,172],"802":270,"80300":177,"80364":177,"806":[304,414],"80khz":406,"80m":[103,232,237,322],"80mhz":[103,188,189],"81":246,"810":414,"81e0000":386,"82":246,"8222ua":240,"827963649":420,"8299999":41,"83":[11,246,394],"8311":291,"84":246,"85":[106,246,368],"86":246,"861":247,"861234":266,"862991234567890":48,"864040064024194":3,"86784":177,"86844":177,"86852":177,"87":246,"877164555":420,"88":246,"8883":107,"88v":0,"89":141,"8910":[268,322],"8bit":[38,126,263],"8k":[5,263,279],"8m":[304,307],"8mb":[220,251,307,312],"8n1":[41,136,229,269],"8th":263,"8ua":219,"8v":[0,2,112,177,242,278,398,403,412],"9":[3,11,25,26,33,36,37,41,88,89,90,99,100,103,106,107,108,112,117,120,144,169,175,229,236,238,241,246,253,279,356,357,394,406,414,417],"90":[2,11,38,118,120,135,169,246,269,279,374],"9000":[139,263],"90000":169,"91":286,"911cha":414,"921600":[115,136,211,212,215,220,233,239,306,312,317,331,386,394],"921fb54442d18p":415,"922u":263,"92k":265,"94k":270,"95":[118,220,277,370],"9501":[277,317,318],"96":[179,443],"9600":[136,279,291,317,318],"967368887":420,"96k":[258,261,262],"96m":304,"97":[284,415],"9731":135,"97656":177,"97672":177,"977":255,"97700":177,"97lo":415,"99":[41,107,266,356,357,374,414],"993":263,"999":[266,414],"9bit":38,"9m":263,"9th":414,"9u":33,"\u00df":169,"\u00e1":169,"\u03bca":[270,396,401,412],"\u03bcvision":[222,256,338],"\u03c0":415,"\u03c9":258,"\u2460":[215,412],"\u2460burn":217,"\u2460compil":217,"\u2461":[218,412],"\u2461creat":217,"\u2461develop":217,"\u2462":[412,418],"\u2462first":217,"\u2462luatask":217,"\u2463":[217,398,403,412],"\u2463manipul":217,"\u2464":[217,398,403,412],"\u2465":[217,398,403,412],"\u2466":[217,398,403],"\u2467":217,"\u2468":217,"\u4e0a\u8ff0\u76ee\u5f55\u7ed3\u6784\u4e2d\u7684makefile\u6587\u4ef6":354,"\u4e0b\u8f7d":355,"\u4e0b\u8f7d\u5e76\u89e3\u538b\u5230\u524d\u6b3e\u7684\u76ee\u5f55":355,"\u4e0b\u8f7dair302_sdk\u7684\u538b\u7f29\u5305":354,"\u4e0b\u8f7dluatos\u7684\u6e90\u7801":354,"\u4e0b\u8f7drtt\u7684\u73af\u5883\u5de5\u5177":355,"\u4e0b\u9762\u6211\u4eec\u5c31\u663e\u793a":172,"\u4e0d\u5efa\u8bae\u76f4\u63a5\u4e0b\u8f7dzip":354,"\u4e0d\u8981\u653e\u5728c\u76d8":355,"\u4e0d\u8981\u6709\u4e2d\u6587\u8def\u5f84":355,"\u4e0d\u9700\u8981\u540c\u6b65\u5b50\u6a21\u5757":354,"\u4e2dkeil\u7684\u8def\u5f84":354,"\u4f46\u6b22\u8fce\u62a5issu":354,"\u4f4d":337,"\u4f8b\u5982":355,"\u4fee\u6539":354,"\u4fee\u6539\u6216\u521b\u5efalocal":354,"\u5148\u542f\u52a8env":355,"\u5207\u6362\u5230rtt\u76844":355,"\u5382\u5546\u8981\u6c42":354,"\u53cc\u51fb":355,"\u53ef\u5355\u72ec\u6267\u884c":354,"\u53ef\u80fd\u6027\u4f4e":355,"\u5408\u5b99air001\u662f\u4e00\u6b3etssop20\u5c01\u88c5\u7684mcu":226,"\u542f\u52a8env\u7a97\u53e3":355,"\u5728":[354,355],"\u5730\u5740":355,"\u5927\u5927\u7684":354,"\u5982\u679c\u4f60\u662f\u5728\u627e\u5237\u673a":354,"\u5982\u679c\u53d1\u73b0\u7f16\u8bd1\u5931\u8d25":355,"\u5982\u679c\u7f16\u8bd1\u5931\u8d25":354,"\u5982\u679ckeil\u5b89\u88c5\u76ee\u5f55\u4e0d\u662f":354,"\u5982\u679cluatos\u4e0d\u5728":354,"\u5b89\u88c5\u80fd\u89e3\u538b7zip\u683c\u5f0f\u7684\u89e3\u538b\u7f29\u8f6f\u4ef6":354,"\u5b89\u88c5git":355,"\u5e76\u5efa\u597d":355,"\u5e76\u81ea\u52a8\u6253\u5305\u751f\u6210\u56fa\u4ef6\u538b\u7f29\u5305":354,"\u5f53\u524d\u7248\u672c\u4ec5\u652f\u6301keil\u7f16\u8bd1":354,"\u5f97\u5230\u7684\u76ee\u5f55\u7ed3\u6784\u662f\u8fd9\u6837\u7684":354,"\u5f97\u5230luatos\u76ee\u5f55":355,"\u5f97\u5230rt":355,"\u6211\u4eec\u63d0\u4f9b\u7684\u56fa\u4ef6\u5305\u5c31\u5305\u542b\u7f16\u8bd1\u597d\u7684\u56fa\u4ef6":354,"\u6216":355,"\u6267\u884c\u547d\u4ee4":355,"\u6267\u884c\u7f16\u8bd1":355,"\u62a5issue\u6216\u8005\u5230\u7fa4\u91cc\u558a\u4e00\u558a":355,"\u6307\u5411":354,"\u6309\u9ed8\u8ba4\u914d\u7f6e\u5c31\u5f88\u597d":355,"\u63a8\u8350\u76ee\u5f55\u4e3a":354,"\u6444\u50cf\u5934":304,"\u6572\u5165\u547d\u4ee4":355,"\u662f\u4e0d\u662fapi\u5f88\u7b80\u5355":172,"\u666e\u901a\u7528\u6237\u4e00\u822c\u4e0d\u9700\u8981\u7528\u5230\u672c\u6587\u7ae0":355,"\u66f4\u65b0\u8f6f\u4ef6\u5305":355,"\u672c\u6587\u8bb2\u8ff0\u7684\u662f\u81ea\u884c\u7f16\u8bd1\u56fa\u4ef6\u6587\u4ef6":355,"\u6bcf\u6b21luatos\u53d1\u65b0\u7248\u90fd\u4f1a\u628a\u7f16\u8bd1\u597d\u7684fls\u653e\u5230":355,"\u70e6\u8bf7\u53cd\u9988":355,"\u7248\u6743\u6240\u6709":415,"\u7535\u6e90\u529f\u80fd":406,"\u76ee\u5f55":354,"\u76ee\u5f55\u53ef\u4ee5\u770b\u5230":355,"\u76ee\u5f55\u6267\u884c":354,"\u770b\u770b\u5177\u4f53\u7684\u62a5\u9519\u539f\u56e0":354,"\u786c\u4ef6\u52a0\u901f":304,"\u786c\u72d7":304,"\u7b49\u5f85\u7f16\u8bd1\u5b8c\u6210":355,"\u7f16\u8bd1\u51fa\u7684\u56fa\u4ef6\u4f9d\u7136\u662fluatos\u56fa\u4ef6":354,"\u7f16\u8bd1\u6210\u529f\u4f1a\u663e\u793a":354,"\u7f16\u8bd1lua\u811a\u672c\u4e4b\u7c7b\u7684\u5e94\u7528\u578b\u6587\u6863":354,"\u83b7\u53d6luatos\u6e90\u7801":355,"\u83b7\u53d6rtt\u6e90\u7801":355,"\u89e3\u538b\u5230":354,"\u8bbe\u7f6ertt_root\u73af\u5883\u53d8\u91cf\u7684\u503c":355,"\u8be5sdk\u4e0d\u662fc":354,"\u8bf7\u4f7f\u7528":354,"\u8bf7\u786e\u4fdd\u6709\u6b63\u7248keil":354,"\u8bf7\u786e\u8ba4\u6240\u5728\u7684\u7f51\u7edc\u6ca1\u6709\u5c4f\u853dgitee\u7684\u8bbf\u95ee":355,"\u8d44\u6e90\u7ba1\u7406\u5668":355,"\u8d77\u7801\u9884\u75592gb\u7684\u78c1\u76d8\u7a7a\u95f4":354,"\u8dd1lua\u811a\u672c":354,"\u8df3\u8f6c\u4e00\u4e0b\u76ee\u5f55":355,"\u8df3\u8f6c\u76ee\u5f55":355,"\u8fd9\u4e2a\u6587\u6863\u4e0d\u662f\u4f60\u9700\u8981\u67e5\u770b\u7684\u5185\u5bb9":354,"\u8fd9\u4e2a\u8def\u5f84\u540e\u9762\u90fd\u4f1a\u7528\u5230":355,"\u8fd9\u662f\u7528\u4e8e\u81ea\u884c\u6269\u5c55\u56fa\u4ef6\u7684\u9ad8\u7ea7\u6587\u6863":354,"\u8fdb\u5165env\u6240\u5728\u76ee\u5f55":355,"\u8fdb\u5165rtt\u76ee\u5f55":355,"\u90091m\u7684\u56fa\u4ef6\u6587\u4ef6":355,"\u9009\u4e00\u4e2a\u7b80\u77ed\u7684\u76ee\u5f55":355,"\u901a\u5e38\u4e3a7zip\u683c\u5f0f":354,"\u901a\u5e38\u4f60\u4e0d\u9700\u8981\u8fd9\u4efd\u6587\u6863":354,"\u914d\u5408zbuff\u66f4\u7b80\u5355":172,"\u91c7\u7528\u9ad8\u6027\u80fd\u768432\u4f4darm":226,"\u9500\u552e\u72b6\u6001":406,"\u9650\u538b\u8f93\u51fa":406,"\u9650\u6d41\u8f93\u51fa":406,"abstract":[180,185,198,199,200,201,207,216,220,228,362,365,370,371,379,381,382,383,387,391,417],"air302_sdk\u5230":354,"boolean":[0,2,3,4,5,6,8,11,12,15,17,18,19,20,21,22,23,25,28,29,32,33,38,41,48,66,68,71,78,82,101,103,106,107,112,114,119,120,121,124,126,130,135,140,143,144,217,415],"break":[15,17,19,29,33,41,138,143,169,220,225,228,263,322,365,375,398,414,415,417],"byte":[3,4,6,13,14,15,18,19,21,28,29,32,38,64,72,81,82,84,85,103,104,106,109,110,115,116,118,121,124,126,141,144,169,173,175,180,181,182,183,188,189,190,199,200,201,204,205,206,220,228,246,261,262,271,289,317,318,322,337,342,356,357,369,373,374,378,381,391,392],"c\u7684\u5c01\u88c5":142,"case":[2,7,27,59,65,82,103,105,118,124,136,169,222,263,266,279,280,284,295,304,343,362,369,376,377,383,384,395,415,417],"catch":415,"char":[11,13,28,32,38,44,75,83,104,110,126,135,136,144,169,175,181,182,183,203,204,205,206,220,228,341,367,370,374,375,392],"class":[101,144,175,215,220,280,363,373,374,376,384,392],"const":[169,341,342,367,370,374,387,415],"default":[2,3,4,6,8,9,11,12,13,14,16,17,18,19,20,21,22,24,25,26,27,28,29,32,33,34,35,36,38,39,41,48,49,57,59,60,62,64,65,66,76,78,82,84,89,92,94,97,98,99,100,101,102,103,104,105,106,107,110,112,114,115,117,118,119,120,122,123,124,126,127,128,135,136,137,138,140,141,143,144,145,170,173,187,215,216,220,222,229,231,236,246,253,256,257,265,266,267,269,273,276,277,278,279,280,283,284,285,287,291,292,295,296,306,307,312,315,317,318,322,338,339,342,349,350,352,353,356,357,360,361,372,373,374,378,379,381,386,387,394,400,414,415],"do":[4,11,15,17,19,24,28,29,32,38,41,42,43,44,45,47,48,49,50,51,52,53,54,56,57,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,98,101,105,106,107,109,111,114,115,118,120,123,124,128,130,131,138,140,141,143,169,172,173,177,178,179,180,181,182,183,187,193,194,195,198,199,200,201,203,204,205,206,208,209,218,220,226,228,229,246,256,258,263,266,271,277,278,280,284,285,287,289,295,296,304,306,312,315,322,326,339,342,343,356,357,358,359,360,361,362,363,364,368,369,375,376,382,384,388,390,391,394,395,396,398,412,414,415,416,417,418],"ec\u540e\u7f00":354,"enum":259,"esp32s3\u91c7\u7528xtensa":312,"export":[326,415],"final":[19,31,140,215,255,256,275,280,342,343,356,357,403,412,415,417],"float":[3,36,41,82,105,110,144,263,279,373,374,409,414,415],"fls\u6587\u4ef6":355,"fls\u7ed3\u5c3e\u7684\u56fa\u4ef6\u6587\u4ef6":355,"function":[0,2,4,6,7,12,17,19,22,24,26,27,28,29,30,31,37,38,41,42,43,44,45,47,48,49,50,51,52,53,54,55,56,57,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,103,104,106,107,108,111,115,117,118,119,120,123,124,125,126,129,130,131,132,134,135,136,140,141,143,144,145,170,172,173,175,177,178,179,180,181,182,183,184,185,188,189,190,191,193,194,195,196,198,199,200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,219,221,225,228,231,236,237,241,246,251,253,254,256,257,261,262,265,266,267,268,269,273,274,277,279,280,283,284,287,290,292,294,295,297,310,314,316,317,320,321,322,325,333,337,338,339,340,350,356,357,359,360,361,362,363,364,369,370,372,376,379,380,382,383,384,387,388,390,391,395,396,406,407,412,417,418,419,421],"git\u5b98\u7f51":355,"goto":415,"import":[107,132,169,210,211,212,213,219,220,228,263,279,340,341,396,398,401,412,415,416,417,418],"ini\u4e2d\u7684plat_root\u8def\u5f84":354,"int":[0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,17,18,19,20,22,25,26,27,28,29,31,32,33,35,37,38,39,40,41,46,49,50,59,61,66,68,77,78,92,97,98,101,103,104,105,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,143,144,169,221,222,256,263,338,341,342,343,362,367,369,374,375,379,383,387,415],"long":[2,12,57,101,106,110,111,112,113,123,133,144,145,170,172,210,211,212,213,220,228,266,276,277,278,279,284,289,320,321,342,343,365,367,370,372,412,414,415,416,420,421],"luatos\u6e90\u7801\u76ee\u5f55\u4e0b\u7684":354,"m\u00b3":[96,414],"new":[8,11,12,21,22,28,31,34,41,61,68,103,106,112,123,124,126,127,135,140,141,144,145,170,185,204,205,206,208,214,215,216,217,220,225,228,257,258,261,266,279,281,283,292,306,307,309,318,322,336,339,349,356,357,358,360,361,369,370,374,375,384,388,390,400,406,407,409,412,414,415,417],"null":[68,169,279,342,343,368,370,414,415],"public":[21,48,62,106,116,279,416,429],"return":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,177,180,181,182,183,199,200,201,204,205,206,215,220,228,258,263,266,279,307,317,318,340,341,342,356,357,362,366,368,369,373,375,381,382,384,388,390,392,403,412,415,416,417,418],"s\u03bcg":96,"sdk\u672c\u8eab\u4e0d\u5f00\u6e90":354,"short":[41,57,101,110,123,144,169,177,220,228,229,246,258,263,279,315,348,359,387,401,412,414,415],"static":[27,44,106,138,169,221,222,229,279,316,342,343,375,383,387,388,390,412,415],"switch":[1,2,11,20,22,25,33,78,81,103,106,107,112,124,136,140,141,145,170,219,228,246,265,269,279,283,284,291,292,307,312,315,317,318,322,330,396,398,401,415,417],"swm181cbt6\u91c7\u752832":337,"thread\u76ee\u5f55":355,"throw":[258,415],"true":[2,3,4,5,6,8,9,11,12,14,15,17,18,19,20,21,22,23,25,27,28,29,32,33,34,35,38,39,41,42,43,44,45,47,48,50,51,53,54,56,57,60,63,65,68,70,71,72,73,74,75,76,77,78,79,80,82,83,85,86,87,88,91,93,95,96,97,99,100,101,102,103,105,106,107,108,109,112,114,116,117,119,120,121,122,123,124,126,128,130,132,134,135,136,137,139,140,141,143,144,169,177,180,181,182,183,187,188,189,193,194,195,199,200,201,204,205,206,208,209,211,212,213,218,220,228,277,284,291,339,340,341,358,360,361,375,382,386,387,414,415,416,417,418],"try":[2,6,12,14,17,59,103,124,169,173,215,220,228,258,263,278,279,307,312,342,362,366,378,387,394,400,412,414,415],"var":415,"void":[221,222,256,259,263,338,341,343,364,368,369,370,375,383,387,415],"while":[15,17,19,24,29,41,42,43,44,45,47,49,50,51,52,53,54,56,57,60,63,64,65,69,70,71,73,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,105,106,114,120,124,130,140,141,143,169,172,173,177,179,181,182,183,187,193,194,195,198,203,208,209,210,211,212,213,220,222,228,256,258,263,266,279,283,292,306,317,318,322,338,339,342,343,360,361,364,369,375,382,387,395,396,398,415,416,417,418],"windows\u5b89\u88c5\u5305\u53ef\u4ee5\u5728":355,"x64\u53ca\u4ee5\u4e0a":354,"y\u0101o":289,"y\u012b":289,A:[28,31,33,41,55,84,106,107,108,110,118,124,127,128,129,130,143,144,169,178,179,186,192,197,198,203,204,205,206,210,215,216,219,220,222,228,229,246,258,263,266,331,341,357,358,362,365,368,371,374,375,388,389,390,403,412,414,415,416,418,424],AND:[222,415],AT:[106,112,215,225,265,268,270,276,277,284,289,295,315,316,317,318,322,358],And:[75,112,124,169,232,259,262,279,322,378,387,415,417],As:[41,75,81,112,124,141,169,198,199,200,201,210,220,228,231,236,261,267,306,315,318,322,342,343,356,357,370,372,373,400,412,414,415],At:[75,117,169,197,203,215,220,228,258,269,292,312,317,332,341,342,343,356,357,359,362,366,380,385,387,394,396,400,414,415,416,417,419],Be:[220,228,280,342,358],But:[19,169,220,228,229,342,414,415],By:[22,59,124,169,246,266,320,321,341,362,414,415],For:[0,2,4,6,14,19,22,29,37,38,67,78,103,108,112,115,116,117,119,124,131,134,135,141,169,173,175,180,210,211,212,213,218,220,226,228,229,235,236,238,239,246,259,262,263,266,271,277,279,282,284,293,295,318,326,332,337,342,349,357,359,365,370,375,378,391,400,409,412,413,414,416,419,423],If:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,186,210,215,220,221,222,226,228,229,234,240,243,256,258,262,263,266,271,277,279,280,281,284,287,292,295,306,312,315,316,317,323,338,339,340,341,342,347,348,349,351,353,356,357,358,359,364,368,370,387,388,390,393,394,396,398,400,403,409,414,415,417],In:[2,7,11,34,38,64,65,75,82,106,107,111,118,124,135,169,178,179,198,204,205,206,215,220,222,226,228,229,246,251,258,263,266,269,271,277,279,281,284,289,292,304,306,312,317,333,340,341,343,344,347,356,359,362,364,365,367,370,378,383,386,387,398,400,409,412,413,414,415,416,417],Is:[4,6,29,48,144,181,182,183,204,205,206,210,211,212,213,220,228,266,278,279,284,295,322,396,414,415],It:[2,13,16,17,41,59,68,75,78,82,101,103,104,106,112,117,118,123,124,130,132,136,137,140,169,172,181,182,183,198,199,200,201,203,204,205,206,215,218,219,220,221,222,246,258,261,263,265,266,270,275,277,278,279,280,284,286,289,295,316,317,318,322,326,340,341,343,352,353,356,357,359,362,365,369,370,375,385,388,390,391,395,398,403,407,412,413,414,415,417],Its:[75,169,261,279,369,415],NO:221,NOT:415,Near:387,No:[2,4,5,7,8,11,12,14,20,22,25,27,28,29,38,39,41,50,65,66,67,76,78,82,98,100,101,103,106,107,112,113,114,115,118,120,124,126,130,131,133,134,135,136,137,140,169,172,215,217,220,228,232,237,245,252,261,262,272,276,277,279,280,300,306,309,310,322,341,342,349,369,370,387,396,414,415],Not:[2,27,59,103,106,108,111,134,169,263,279,287,304,308,331,333,341,352,385,392,400,406,414,415],ON:[169,222],OR:[135,169],Of:[169,172,218,243,409,414,415],On:[1,2,4,25,41,82,106,169,215,218,220,251,258,391,400,412,415,418],One:[62,145,170,177,188,189,190,210,211,212,213,220,228,229,280,362,415,417],Or:[112,124,126,258,263,266,269,284,322,343,356,380,415,420],Such:[112,387,414,415],That:[108,169,220,228,289,356,357,358,370,415],The:[0,2,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,24,25,26,28,29,30,32,33,34,36,37,38,39,40,41,42,43,44,45,47,48,49,51,53,54,55,59,60,61,63,64,66,67,70,71,72,73,74,75,76,77,78,79,80,82,84,86,87,89,90,91,92,93,97,98,99,100,101,103,104,105,106,107,108,110,111,112,113,116,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,135,136,137,138,140,141,142,143,144,169,172,173,175,177,178,180,181,182,183,187,188,189,190,193,194,195,197,199,200,201,203,204,205,206,208,209,210,211,212,213,215,217,218,219,220,221,222,226,228,229,246,251,255,256,257,259,261,262,265,268,271,273,275,276,277,278,279,280,281,284,285,286,287,289,290,291,292,295,296,304,305,306,307,312,315,316,317,318,319,320,322,323,330,332,333,336,337,338,339,340,341,342,343,344,349,352,353,356,357,358,359,360,361,362,363,365,366,367,368,369,372,373,376,378,379,380,381,382,383,384,385,387,388,389,390,392,393,398,400,401,403,406,409,416,417,418,421],Then:[41,169,172,173,215,220,228,229,243,266,343,352,353,357,362,398,414,415,417],There:[0,22,34,41,82,103,106,107,110,115,120,124,126,130,136,144,169,177,181,182,183,188,189,190,204,205,206,210,211,212,213,215,220,228,229,234,240,261,263,271,275,277,278,284,293,295,304,306,316,321,322,341,342,349,358,391,400,414,415,416,417,418],These:[169,263,392,414,415],To:[11,26,28,31,32,61,75,103,106,107,108,112,115,116,135,169,222,237,263,269,271,277,323,388,390,415],WITH:287,Will:[7,107,178,179,192,221,228,322,415],With:[107,169,258,266,277,331,337,358,383,415,417],_1:244,_1_:415,_:[7,8,28,110,111,169,271,287,341,373,393,395,415,417,418],__:415,____:75,________:75,____________________:75,____s________:75,__add:415,__air001_assert_h:222,__air001f0xx_it_h:222,__air001xx_hal_conf_default_h:222,__air001xx_it_h:222,__band:415,__bnot:415,__bor:415,__bxor:415,__call:415,__concat:415,__cplusplu:[169,222],__div:415,__eq:415,__ev_:415,__file__:222,__gc:415,__hal_afio_remap_swj_en:263,__hal_afio_remap_swj_nojtag:263,__hal_rcc_afio_clk_en:263,__hal_rcc_gpiob_clk_en:222,__hal_rcc_pwr_clk_en:263,__idiv:415,__index:[375,415],__ipair:415,__le:415,__len:415,__line__:222,__lt:415,__main_h:222,__metat:415,__mod:415,__mode:415,__mul:415,__name:415,__newindex:415,__pair:415,__pow:415,__shl:415,__shr:415,__sub:415,__tostr:415,__unm:415,_alloc:415,_arg_:415,_args_:415,_at_0x20000000:[225,322],_block_:415,_body_:415,_boolean_i:415,_c:[295,415],_call:415,_chunkname_:415,_clk:295,_close:415,_cnt:417,_currentline_:415,_d_:415,_ddd_:415,_debug:415,_e1_:415,_e2_:415,_e3_:415,_env:415,_error:415,_explist_:415,_extramsg_:415,_f_:415,_filenam:[367,370],_filename_:415,_funcname_:415,_function:415,_functioncall_:415,_g:[66,82,115,175,280,341,342,414,418],_getendpoint:263,_getfield:415,_getglob:415,_getinfo:415,_getistr:263,_gettop:415,_init:169,_isnumb:415,_kcontext:415,_lightweight:415,_limit_:415,_loadfil:415,_loadstr:415,_luato:280,_mod_:415,_mode:[367,370],_multret:415,_n_:415,_n_i:415,_newlibt:415,_next:415,_nil_i:415,_number:415,_number_repres:415,_o_:415,_param_t:169,_params_:415,_pcall:415,_pcallk:415,_pop:415,_pushcclosur:415,_pushcfunct:415,_pushinteg:415,_pushliter:415,_pushnil:415,_pushnumb:415,_regist:415,_remov:415,_repeat:[31,372],_s_:415,_set_:415,_setfunc:415,_setglob:415,_stat_:415,_state:415,_static:[108,400],_step_:415,_string_:415,_string_repres:415,_t:[374,415],_temp:394,_tonumb:415,_type:415,_typenam:415,_v1:[177,267],_v2:11,_v3:11,_valid:415,_var:415,_var_:415,_version:[175,179],_x_:415,_x_form:415,_xxx:215,_xxx_:415,a1:175,a2:175,a8:110,a8xza9cqs3cu79b:34,a_binari:415,a_c:415,a_cod:415,a_continu:415,a_dynam:415,a_find:415,a_garbag:415,a_long:415,a_messag:415,a_meta:415,a_pseudo:415,a_reference_in:415,a_registry_i:415,a_sequ:415,a_tail:415,a_temporari:415,a_vari:415,a_virtu:415,a_x_:415,a_y_:415,aa:415,aaa:[266,414],aabbccddeeff:141,aabcdefg:414,ab:[175,269,414],abandon:[15,106,109,118,136,415],abbrevi:[111,136,193,194,195,203,204,205,206,220,228],abc:[8,12,16,26,27,29,31,32,59,82,98,113,116,119,140,169,178,343,359,387,391,414],abcabcabc:414,abcd123:34,abcd:414,abcdabcd1234:169,abcdabcd:9,abcdefg:[34,144,340],abcdefgg:140,abcderg:140,abid:169,abil:[180,229,266,278,279,284,292,295,341],abl:[169,226,342,414],abmfa1ucw:34,abnorm:[12,112,263,279,292,409,415,417],abort:[263,415],about:[15,18,19,27,65,82,102,106,169,173,177,215,217,232,235,236,237,239,246,255,258,268,275,283,307,319,322,337,357,363,375,376,383,384,388,389,395,398,414,415],abov:[14,66,67,84,123,126,135,144,169,187,197,215,229,256,258,261,262,276,277,279,284,286,287,295,306,307,312,315,318,319,321,322,338,340,342,343,352,353,356,357,370,373,385,398,400,406,409,412,414,415,417,418],abroad:279,abscissa:[38,135],absenc:292,absolut:[32,93,143,169,409,414,415],ac5:338,accel:74,acceler:[61,74,106,219,270,316,331,357],acceleromet:[61,74],accept:[22,31,118,169,175,279,292],access:[106,112,169,261,268,271,322,340,359,371,378,393,414,415],access_kei:34,access_mod:378,accid:[266,412],accommod:101,accompani:362,accord:[3,4,15,19,22,24,33,38,42,48,49,60,71,81,84,90,95,96,103,106,107,110,122,123,136,138,139,140,141,144,169,177,180,181,182,183,194,205,220,222,228,229,246,256,258,263,269,280,306,307,312,316,317,320,321,322,338,340,341,343,352,353,357,359,365,373,387,394,398,401,409,412,414,415,416,441],accordingli:[144,169,373],account:[33,107,268,315,322,358,395],accumul:[8,403,414],accur:[124,133,197,219,220,412,415],accuraci:[41,65,108,114,169,193,194,195,246,251,279,316,320,337,398,401,412],accustom:416,acess_kei:34,achiev:[12,179,192,219,220,228,246,265,320,337,362,363,376,384,387,395,414,417,443],ack:[40,106,143],acknowledg:140,aco:175,acquir:[22,106],acquisit:[18,22,48,54,141,177,181,182,183,190,220,228,242,279,322,328,415,421],act:[75,141,169,373,385,415],action1:169,action2:169,action:[31,76,129,140,169,218,263,331,394],activ:[38,61,78,101,106,112,124,130,141,169,218,222,256,277,279,292,306,312,315,317,338,350,412,415],activelin:415,actual:[0,4,22,32,33,41,49,55,95,96,108,133,136,138,141,144,169,172,180,217,220,222,228,229,246,256,258,263,266,269,271,280,281,284,294,295,305,306,307,312,315,318,322,338,340,343,356,357,375,385,386,387,391,396,398,401,403,414,415,417],acyv3qdjrra0fw5ue58knq:34,ad:[3,6,8,12,14,15,16,17,19,21,22,28,32,33,34,41,48,98,103,106,124,131,132,133,135,140,141,169,172,204,205,206,225,229,246,256,266,277,278,279,280,291,292,312,322,323,338,341,342,363,365,376,384,387,393,415,417],adapt:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,169,220,258,265,279,284,319,322,333,352,353,361,365,386,387,388,390,395,403,407,409,412],adapter_index:31,adc0:[0,220,228,231,236,253,267],adc1:[0,177,231,236,263,267],adc2:[0,236],adc3:236,adc:[2,31,43,129,185,216,226,231,232,236,242,246,251,254,261,262,267,270,279,280,285,292,296,297,304,306,312,322,333,336,337,387,401,412,419],adc_0:[236,306],adc_1:[236,306],adc_2:[236,306],adc_3:[236,306],adc_4:306,adc_5:306,adc_clk:263,adc_cmd:263,adc_flag_eoc:263,adc_getconversionvalu:263,adc_getflagstatu:263,adc_in1:246,adc_in2:246,adc_in4:246,adc_in5:246,adc_in6:246,adc_initstructur:263,adc_range_1_2:0,adc_range_1_8:0,adc_range_3_6:0,adc_range_3_8:0,adc_scanconvmod:263,adc_softwarestartconvcmd:263,adc_temp:[220,228],adcgetconversionvalu:263,add:[12,14,31,32,33,61,98,112,135,145,170,192,197,215,218,220,225,228,246,256,259,262,263,271,277,279,280,284,286,292,308,322,323,338,343,347,352,353,356,357,359,366,367,375,384,386,387,388,390,400,413,414,415,420],add_btn:169,add_myap_5min:343,add_opt:169,add_tab:169,addb:414,addit:[3,11,22,23,26,31,38,75,98,106,107,118,129,131,140,169,210,220,222,228,232,237,245,246,251,262,280,281,283,285,294,310,312,315,316,320,322,342,349,352,353,356,357,367,368,400,414,415],addr:[31,61,64,75,126,220,228,366,374],address:[17,20,25,26,28,31,58,59,61,65,66,67,75,82,107,113,120,122,124,138,141,144,173,181,182,183,185,202,207,216,220,225,228,246,258,263,265,266,268,271,279,292,295,296,308,316,317,318,322,330,337,359,366,378,383,386,387,394,396,415,420,430],adequ:292,adfasdfadsfadsf:34,adhes:[398,412],adipisc:169,adjac:[106,169,280],adjust:[2,13,22,28,60,88,103,120,135,136,144,145,170,177,193,194,195,220,228,229,246,256,258,263,278,279,284,289,295,305,338,398,403,412,415],adjust_period:31,adler:104,adon:[261,322],adopt:[220,228,306,401,415],ads1115:[61,71,280],ads1115_conf_hcmd:[42,71],ads1115_conf_lcmd:[42,71],ads1115_data:42,ads1115plu:61,advanc:[6,105,106,145,170,175,217,222,246,256,319,322,338,357,359,398,415],advantag:[172,319,320,322,414,417],advic:415,adxl345:61,adxl346:61,adxl34x:61,adxl34x_data:44,ae:[8,178,279,287,383],af:61,afadjlw:62,affect:[19,89,90,117,144,169,220,228,263,277,295,320,403,414,415],affix:387,afford:225,after:[0,2,4,11,12,13,16,17,22,28,30,31,32,33,34,36,38,41,57,64,73,75,82,94,99,101,103,104,106,107,112,115,116,117,118,119,120,121,123,124,126,128,130,131,135,136,138,140,141,143,144,169,172,177,181,182,183,185,191,192,199,200,201,204,205,206,209,215,216,218,219,220,222,226,228,229,234,240,242,243,246,256,258,261,262,266,269,271,277,278,279,280,284,286,291,292,295,304,306,307,308,312,315,316,317,318,320,322,326,337,338,339,341,342,343,349,352,353,357,358,359,365,372,375,386,387,391,396,403,409,414,415,416,417,418],afterward:41,ag:[19,82,180,341],again:[4,6,11,12,15,22,33,75,118,135,138,141,142,169,173,180,211,212,213,218,229,243,263,266,277,279,284,292,317,318,342,357,396,403,409,412,414,415,417],against:[398,415],agent:365,aggress:415,agp:[277,319,322],agpio3:284,agpio4:284,agpio5:[284,295],agpio:[136,292],agpiowu0:295,agpiowu1:295,agr2:31,agre:169,agreement:[31,129,378,388,389],ah:[38,135,403,409],ahb:222,aht10:[61,184,185,216,347,350],aht10_data:45,aht20:347,aht:347,aid:41,aie:61,ain0:43,ain1:43,ain3:43,air001:[223,224,322],air001_assert:222,air001_dev:222,air001_pcb:[225,322],air001dev:222,air001xx_hal:222,air001xx_hal_conf:222,air001xx_hal_cortex:222,air001xx_hal_driv:222,air001xx_hal_flash:222,air001xx_hal_gpio:222,air001xx_hal_pwr:222,air001xx_hal_pwr_ex:222,air001xx_hal_rcc:222,air001xx_hal_rcc_ex:222,air001xx_it:222,air001xx_ll_bu:222,air001xx_ll_cortex:222,air001xx_ll_dma:222,air001xx_ll_gpio:222,air001xx_ll_pwr:222,air001xx_ll_rcc:222,air001xx_ll_system:222,air001xx_ll_util:222,air101:[22,75,84,89,103,111,112,115,117,134,172,173,177,178,179,184,185,186,191,192,196,197,198,202,203,207,210,214,215,216,220,230,231,239,240,241,268,271,304,321,322,333,341,342,348,349,350,353,358,386,388,390,395,421,441],air101_chip:[177,193,204],air101_core_bom_b_air101_core_a10_v1:231,air101_flash:394,air101_mcu:[211,231],air101_pcb:[232,322],air103:[22,39,75,103,111,112,115,117,134,172,177,184,185,191,196,202,207,214,215,216,220,229,234,235,236,241,268,271,304,322,333,341,348,358,394,395,421,441],air103_:236,air103_bom_b_air103_a10_v1:236,air103_cor:236,air103_mcu:[177,194,205,212,236],air103_pcb:[237,322],air105:[0,2,4,28,33,75,103,111,115,117,136,137,145,172,174,177,184,185,191,196,202,207,214,215,216,244,304,322,333,348,358,388,390,395,421,422,423,431,441],air105_cor:244,air105_download:394,air105_mcu:[206,213,244],air105_pcb:[245,322],air106:304,air107:348,air10x:[75,394,431],air112:219,air153c_wtd:61,air201:[0,2,3,6,8,11,14,16,18,19,20,22,24,25,28,30,32,34,36,38,41,97,98,103,104,108,109,110,112,114,117,118,120,122,126,128,129,130,132,135,136,139,140,141,144],air202:255,air302:[304,322,395],air302_sdk:354,air32:[58,59,64,82,140,256,258,261,322],air32cbt6:[257,260],air32f103:[235,236,237,239,257,259,260,322,338,441],air32f103_pcb:[261,322],air32f103cbt6:[256,258,261,262,263,322],air32f103cct6:[262,263],air32f103cxt6:257,air32f103rpt6:263,air32f103vet6:263,air32f103vgt6:263,air32f103zet6:263,air32f103zgt6:263,air510h:321,air510u:[41,277,285,316,319,321,322],air530z:[41,316,319,321,322],air600:[24,112,123,141,215,284,285,286,356,358],air601:[22,103,265,269,271,322,358,395],air640w:[304,322,395],air700:[22,112,215,281,283,285,304,315,322,333,356],air700e_gpio_table_20231227:22,air700eaq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air700ecq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air700emq:[0,3,8,19,20,22,24,25,28,30,32,34,36,98,103,104,108,110,112,114,117,118,123,126,128,129,130,132,136,139,140,141,144],air722:421,air722ug:[268,322],air724:[22,106,421],air724ug:[268,321,322],air72xux:421,air780:[0,1,2,3,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,34,35,36,38,41,59,82,92,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,126,127,128,129,130,132,135,136,138,139,140,141,142,143,144,215,268,276,277,278,279,281,282,284,286,295,298,304,315,320,321,322,333,342,358,395],air780e_cdcpppdemo:315,air780e_pcb:[283,322],air780eg:[22,41,103,112,123,141,215,276,279,280,281,283,284,285,286,315,316,321,322,356,395],air780ep:[0,2,3,4,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,38,41,59,82,92,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,120,121,122,123,124,126,127,128,129,130,132,135,136,138,139,140,141,142,143,144,268,284,290,293,295,304,322,333,358,395],air780epv:[0,5,22,284,291,293,294,295,296,304,321,322,333,358],air780epvh:[294,316,321,322],air780eq:[3,8,18,19,20,22,24,25,30,32,34,36,98,103,104,108,110,112,117,118,123,128,129,130,132,136,139,140,141,144],air780et:321,air780etgg:321,air780ex:[22,284,356],air795ug:323,air820:421,air820ug:[268,321,322],air:[61,221,228,270,400,414,443],air_jlink_keil:256,air_rcc_pllconfig:259,airisp:226,airkiss:[141,265],airm2m:[222,306],airm2m_all_crc:385,airmcu:221,airpsm:112,airtun:[140,280,421],ak8963:[61,279],al:61,alarm:[61,112,124,234,240,409],alarm_int:78,alert:403,algorithm:[8,31,60,129,178,222,256,261,262,280,322,338,341,415],ali:61,alia:263,alias:169,alibaba:[34,58,61,62,156,279],align:[8,145,170,261,265,271,322,369,398,415],align_cent:[101,169,220,228],align_in_bottom_mid:169,align_in_top_mid:169,align_in_top_right:169,align_out_bottom_mid:169,align_out_left_mid:169,align_out_right_mid:169,aliot:66,aliqua:169,aliquip:169,aliyun:[31,61,62,108,124],all:[2,8,10,11,13,22,32,38,39,41,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,65,66,69,71,72,74,76,77,78,79,80,81,83,85,86,87,88,89,90,91,93,94,95,96,103,104,106,107,110,112,113,122,124,126,130,135,136,137,144,169,172,173,187,199,200,201,218,219,220,222,228,229,234,240,246,256,258,261,266,277,279,280,284,286,287,305,316,318,322,326,338,340,342,357,358,369,370,373,385,387,391,394,400,403,406,409,414,415,418],all_dead:415,all_don:143,allig:[398,400],alloc:[124,144,169,279,339,341,360,361,362,363,368,376,384,415,417],allow:[17,38,101,106,130,169,279,284,292,295,343,387,412,415,416],almost:[130,258,414,415],alo:415,alon:[226,322,415],along:[281,342],aloud:289,alpha:[145,170],alphabet:415,alphanumer:415,alreadi:[6,10,124,135,169,218,280,383,396,414,415],also:[0,16,22,27,59,61,78,82,89,90,103,106,110,112,116,124,126,130,132,136,141,144,169,172,178,179,186,199,200,201,215,220,226,228,229,246,251,258,263,265,266,273,277,278,279,284,285,289,290,295,296,316,317,318,321,340,341,342,343,356,357,358,365,366,370,373,391,393,394,395,401,409,414,415,417,419],alt4:[279,284,295],alt:[31,103,279],alt_fun:31,alt_func:[22,279],altern:[64,169,255,263,279,292,296,331,415],altfun:[31,295],although:[75,266,277,284,295,307,385,398,414,415],altitud:41,altogeth:366,alwai:[22,76,103,112,113,117,120,130,169,172,229,258,280,289,341,342,364,372,378,392,396,409,414,415],am2320:61,am:[211,212,213,289,414],ambient:[0,61],ambigu:[414,415],amd:226,amend:41,amet:169,among:[365,369,400],amount:[17,82,118,126,136,137,144,204,205,206,271,279,284,292,295,368,409,414,415],amp:412,amper:403,amplif:169,amplifi:278,amplitud:[220,228],amr:[2,6,279,280,285,292,296,297],amr_:6,amr_cod:6,amr_nb:[2,6],amr_quailti:31,amr_wb:[2,6],an:[2,3,6,11,12,15,19,20,21,23,26,27,33,34,36,38,50,59,66,67,72,75,77,78,82,98,99,101,103,105,106,107,108,112,124,126,128,130,132,135,141,143,144,145,170,172,173,177,178,192,198,199,200,201,203,204,205,206,210,215,217,219,220,221,225,228,229,238,246,251,258,262,263,268,271,277,279,280,281,284,292,295,306,307,312,317,320,321,322,323,330,337,338,341,343,352,353,356,357,358,359,362,364,365,368,369,370,373,375,378,383,387,388,390,392,393,394,395,403,407,412,414,415,416,417,419],an_error:415,an_index_to:415,an_iterator_funct:415,an_state_:415,analog:[31,61,101,129,177,179,193,194,195,220,228,246,251,312,337,387,417],analysi:[41,220,228,319,322,362,363,376,384,407,409,415,416],analyz:[136,263,344,396,401,412,415,417],anchor:415,and_hooks_:415,and_table_:415,android:400,angl:[41,145,170,172,337,378,415],angular:169,ani:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,180,187,208,209,215,220,222,228,229,258,266,270,278,279,280,306,312,322,340,352,353,358,387,391,396,400,401,409,412,414,415],anim:[31,145,170,220],anim_cr:31,anim_fre:31,anim_on:169,anim_ono:169,anim_path_set_cb:31,anim_path_t:31,anim_path_t_fre:31,anim_set_exec_cb:31,anim_set_path_str:31,anim_set_ready_cb:31,anim_tim:169,anim_time_m:169,anim_typ:101,annot:[384,414,415],anod:84,anom_on:169,anonym:[130,415],anoth:[16,75,106,126,169,210,211,212,213,220,228,256,263,271,338,357,370,414,415,417],answer:[5,331,420],ant:[31,129,279],antbot:[31,129],antenna:[41,81,112,270,277,306,312,316,317,320,322,333],antenna_on:61,anti:[22,38,81,112,169,215,229,279,284],anticol:61,anxieti:219,anyth:[169,172,415],anywai:412,anywher:[414,415],ao3400:75,aon_gpio:[112,278],aon_gpio_2:253,aon_gpio_4:253,aongpio:[22,284,295],ap3216:50,ap3216c:61,ap32_test:50,ap:[20,107,124,141,265,269,280,356,357,365,383],ap_readi:383,ap_start:383,ap_stop:383,apb1:222,apb:[261,322],api:[0,2,3,4,8,10,11,14,15,16,17,19,21,22,26,27,32,38,42,44,45,47,50,51,52,53,54,56,57,60,61,62,63,64,65,66,67,69,71,72,74,76,77,79,80,81,82,83,85,86,87,88,91,93,94,95,96,103,106,108,112,116,118,124,126,133,135,141,145,170,172,175,179,199,200,201,209,216,220,228,237,266,277,279,284,289,295,322,331,342,343,361,363,376,384,391,395,421],apidemo:342,apiurl:82,apn:[31,279],app:[341,352,353,354,386,394],app_addr:386,app_sta_get:31,appar:38,appear:[106,118,169,215,258,276,277,278,279,315,330,331,359,391,396,398,400,409,415],append:[32,415],appl:[169,414],appli:[124,144,169,172,279,285,292,296,299,368,392,415,417],applic:[26,28,59,84,103,117,124,144,169,171,172,174,210,211,212,213,219,220,228,251,263,266,279,286,331,352,353,359,368,409,414,415,417],appropri:[16,229,307,352,353,415],approx:[255,265,275],approxim:[41,108,251,320,415],april:169,apsta:[141,308],apt:[173,352,353,360],ar:[0,1,2,4,6,10,12,14,15,17,19,22,24,27,28,32,33,34,36,38,39,41,60,64,68,75,78,82,84,99,100,101,103,106,107,108,110,111,112,118,120,121,124,126,130,131,135,136,137,141,144,169,172,173,177,178,181,182,183,185,186,188,189,190,198,204,205,206,210,211,212,213,215,219,221,222,228,229,231,234,235,236,237,239,240,242,246,254,257,258,261,262,267,268,269,271,274,276,277,278,279,280,283,284,286,287,289,292,293,294,295,297,304,305,306,307,316,317,320,321,322,339,340,342,343,344,349,352,353,356,357,358,359,361,362,370,375,378,382,383,384,386,387,388,389,390,391,393,394,395,396,401,403,406,407,409,412,414,415,416,417,418,421,427],arab:169,arbitr:246,arbitrari:[59,115,265,337,385,414,415],arc:[145,170],arc_creat:169,arc_get_adjust:169,arc_get_angle_end:169,arc_get_angle_start:169,arc_get_bg_angle_end:169,arc_get_bg_angle_start:169,arc_get_max_valu:169,arc_get_min_valu:169,arc_get_typ:169,arc_get_valu:169,arc_is_drag:169,arc_part_ind:169,arc_part_knob:169,arc_part_main:169,arc_set_adjust:169,arc_set_angl:169,arc_set_bg_angl:169,arc_set_bg_end_angl:169,arc_set_bg_start:169,arc_set_bg_start_angl:169,arc_set_chg_r:169,arc_set_end_angl:169,arc_set_rang:169,arc_set_rot:169,arc_set_start:169,arc_set_start_angl:169,arc_set_typ:169,arc_set_valu:169,arc_type_norm:169,arc_type_revers:169,arc_type_symmetr:169,arc_type_t:169,architectur:[169,305,312,357],archiv:[62,107,356,357],arcsin:415,arctan:337,arctang:415,arduino:[225,226,306,322,332],are_first:415,area:[4,5,11,38,81,106,109,121,126,135,144,145,170,261,266,271,280,281,289,297,322,366,367,368,373,378,385,414,415],area_t:169,arg1:[31,175,365],arg2:[31,365],arg3:31,arg4:31,arg:[31,131,175,208,416,417],argn:31,argp:415,argument:[101,387,415,416,417],aris:414,arithmet:[31,129,415],ariyun:61,arm:[219,225,251,258,263,322,337,356,357],armcc:354,armink:[180,199,200,201],armmb:258,around:[135,169,219,396],arrai:[8,106,145,170,172,185,214,216,220,271,279,342,373,374,392,415],arrang:[169,304,312,378,400,414],array_id:81,array_len:169,arrear:279,arriv:[124,369],arrow:169,artboard:11,articl:[108,169,243,255,266,279,307,341,365,417],as_identifier_:415,ascend:[107,415],ascii:[38,135,373,378,392,414,415],asd8938kjjsidiajdl:414,asdfassdfasdfass:8,asdicagydausckfugdaflgscdabgsdbahhacbshbsd:414,asfb:373,asid:229,asin:175,ask:[145,170,357,388,390,417],aspect:[370,415],assembl:396,assert:[175,177,417],assert_fail:222,assert_param:222,asset:1,asset_data_publish:31,asset_datav:31,asset_id:31,asset_regist:31,asset_status_get:31,asset_typ:31,assign:[76,106,124,135,145,170,175,258,373,417],assist:[263,316,349],associ:[169,350,387,415,417],assset:1,assum:[22,25,98,280,341,356,357,370,415],assumpt:[349,415],asymmetr:[169,178,398],async:[31,375],asyncget:375,asynchron:[11,61,106,141,210,211,212,213,220,228,279,343,387],at6558r:318,atan2:415,atan:175,ate:414,ath10:349,ath20:349,ath:349,atla:169,atom:263,attach:[12,38,106,220,224,228,236,244,246,257,258,260,267,278,334,335,337,375,403],attach_fil:355,attempt:415,attent:[28,34,65,66,67,75,78,84,89,90,109,124,131,169,218,220,228,246,256,258,263,284,286,295,310,314,322,362,388,390,391,398,412,429],attribut:[59,169,279,323,415],au_out:295,audio:[5,6,31,112,129,246,276,279,285,289,291,292,296,417],audio_format:[6,31],audio_id:31,audio_play_stop:279,august:[106,169],aut:169,auth:[31,140],authent:[26,31,48,59,106,107,129,279,383],author:[142,218,387,415],authstat:61,auto:[4,107,140,141,145,170],auto_del:101,auto_format:31,auto_phone_fix:[31,279],auto_reconnect:31,auto_reset_stack:31,autocollectmem:31,autofit:169,autoflush:31,autoguessencod:218,autohint:169,autolong:31,automat:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,215,219,220,225,226,228,229,234,240,256,258,261,265,266,269,276,277,278,279,280,284,289,292,317,318,322,338,339,349,357,360,365,383,387,398,400,401,403,406,409,412,414,415],autoreconn:[31,62],autosav:409,aux_rx:[284,295],aux_tx:[284,295],aux_uart:277,auxiliari:[41,106,175,283,319,322],avail:[0,2,11,15,19,22,64,84,104,106,112,118,126,128,136,137,141,169,209,220,246,255,259,270,275,278,279,284,285,292,295,296,304,306,331,349,350,352,353,386,395,403,409,414,415],avd33:246,averag:[71,105,124,229,403,412,415],average_temp:31,avoid:[75,246,258,263,279,284,292,295,306,312,316,350,387,398,412,415],awai:[66,172,229,246,258,415],await:375,awaken:[112,130,234,240,417],awar:263,awsl:414,axi:[61,135,169,279,409],azimuth:41,azur:218,b0fmk1ga5cp:48,b0wlt3yrmiptspli3e7fob5nvbjxo6pm:266,b1:277,b1i:291,b1q:291,b2:392,b2b:291,b2i:291,b2q:291,b:[11,31,41,55,81,87,106,108,110,118,128,130,132,144,220,228,321,352,353,359,373,374,387,392,395,414,415,416,417,418],b_hd:11,b_v2:11,b_v3:11,b_xy_:415,bacground:169,back:[2,4,31,101,107,126,136,144,169,211,212,213,220,228,279,306,312,322,359,373,387,400,412,414,415],background:[38,82,127,135,169,225,251,261,279,306,322,336,388,389,415],backlight:[25,38],backparenthes:415,backslash:[414,415],backspac:415,backtrac:415,backtrack:415,backup:277,backward:[136,137,144,169,251,373,414,415],bad:[26,375,415],bai:258,baidu:[31,41,61,222,256,338,355,359],baiduyun:[62,279],balabala:[343,418],balanc:[112,415],banana:[169,398,403,414],band:[31,120,141,251,415],bandrat:31,bandwidth:[99,100,270],bandwidthafc:[99,100],baobao:289,bar1:169,bar:[145,170,220,222,256,338,415],bar_creat:169,bar_part_bg:169,bar_part_ind:169,bar_set_anim_tim:169,bar_set_rang:169,bar_set_start_valu:169,bar_set_typ:169,bar_set_valu:169,bar_type_symmetr:169,barabala:[343,375,387],bare:[105,370],base32:[8,128],base64:[8,128],base64_decod:31,base64_encod:31,base:[15,19,31,41,61,75,78,106,107,117,124,131,145,170,175,180,217,218,220,225,226,246,255,258,263,266,275,277,279,280,290,292,306,312,319,322,328,331,332,339,342,344,356,357,360,361,364,372,386,391,393,394,412,414,421],base_year:31,bash:360,basi:[386,417],basic:[12,17,31,129,137,140,156,169,173,175,185,199,200,201,216,246,251,255,263,266,271,279,285,289,292,296,297,322,341,357,362,363,370,376,377,378,384,387,388,390,398,403,416],bat:[31,354,355,356],batch:[82,256,258,279,280,286,293,306,312,318,330,415],batteri:[11,169,197,219,220,246,396,409,412,421],baud:[14,61,94,115,126,136,188,189,210,211,212,213,215,220,228,229,233,239,242,269,270,277,279,291,306,312,317,318,331,382,386,394],baud_rat:31,bbb:[266,414],bbbbbb:[220,228],bbdvssrgefaknfft:62,bc:11,bclk:29,bd09:[41,277],bd:[41,277,318],bdata:8,beauti:[169,220,228],becaus:[21,26,65,73,75,101,118,126,169,178,186,220,228,258,263,266,269,271,277,279,289,306,316,323,331,342,343,378,392,400,409,412,413,414,415,417,429],becom:[41,103,109,112,169,218,266,279,413,414,415,417],been:[6,10,12,15,17,29,33,41,65,75,101,106,107,109,118,119,124,131,140,141,169,178,263,279,284,295,306,307,331,342,343,347,395,396,414,415],befor:[0,2,11,12,13,14,28,38,75,103,104,106,107,112,117,124,126,135,141,144,169,173,180,199,200,201,204,205,206,209,215,220,226,228,229,234,240,242,243,256,258,263,269,279,280,284,289,295,306,307,312,341,342,352,353,385,387,394,403,409,414,415,417,430],began:[220,228],begin:[6,28,31,33,110,112,144,169,211,212,213,215,220,221,228,234,240,258,263,266,341,342,356,362,373,387,403,414,415,417],beginn:[395,417],behalf:[26,246],behav:415,behavior:[107,169,365,387,415],behind:415,beidou:[219,283,291,316,317,318,321,322],being:[27,136,169,177,218,228,229,258,263,269,279,292,315,369,370,403,412,414,415,417],believ:220,bell:415,belong:[29,169,266,277,304,369,387,415,417],below:[5,75,135,169,177,220,228,229,246,258,263,266,306,317,352,353,369,401,403,409,412,414,415,417],benchmark:[78,101],benefit:[393,417],besid:169,best:[316,356,357,362,365,398,414,415],better:[12,13,106,169,220,228,341,414,416,417],between:[2,38,65,75,103,106,135,144,169,181,182,183,185,191,204,205,206,211,212,213,216,219,220,230,235,242,258,261,264,271,276,277,278,279,280,290,312,319,322,337,358,365,374,378,380,396,398,403,409,414,415,417],bf30a2:293,bg_drag_dir:169,bg_grad_stop:169,bg_main_stop:169,bg_opa:169,bh1750:61,bh1750_data:51,bh1750_read_light:51,bi:[3,220,285,296],bia:31,bias_onefourth:39,bias_onehalf:39,bias_onethird:39,bias_stat:39,bidirect:[169,181,182,183,220,228],bif:[261,322],big:[30,110,124,126,136,144,169,218,266,277,279,317,318,331,414,415],bigd:19,bigdata:[13,104],bigger:307,biggest:415,bilater:379,bilibili:217,bilingu:403,bin:[16,17,26,82,94,101,108,169,263,266,350,355,356,385,386,394,415],binari:[32,37,40,113,116,128,169,210,217,317,318,394,415],bind:[31,415],binfil:[66,258,281,394,400],binop:415,binpkg:[281,286,357],bit0:[103,106],bit1:106,bit2:106,bit32:415,bit64:[31,103,129,279],bit7:28,bit:[2,4,6,8,11,21,22,28,29,31,37,38,39,75,81,84,89,90,103,116,120,129,135,136,169,172,175,181,182,183,204,205,206,210,211,212,213,220,228,251,261,262,266,270,271,306,308,312,317,318,322,336,337,343,374,381,382,401,412,414,434,437,440],bit_ord:31,bitdict:31,bitmap:[11,38,135,169],bits_per_sampl:[6,31],bitw:[31,386],bitwis:415,biu:414,biubiu:414,biubiubiu:414,bl921600:317,bl:[220,228,386,394],bl_addr:386,black:[11,101,279,306,340,400],blackbodi:366,blank:[38,101,103,106,124,128,135,138,144,373,414,415],ble:[231,236,265,267,270,304],blend:169,bless:277,blink:[145,170],blob:[280,357,391],block:[17,18,28,29,61,81,104,122,126,133,169,175,185,199,200,201,216,256,261,279,322,342,343,368,375,382,387,414,417,418],block_:415,blood:102,blue:[38,338],bluepil:[256,257],bluepill_pcb:[261,322],bluetooth:[219,265,269,312,316,319,322,396],blur:306,bme280:61,bme680:61,bmp180:61,bmp280:61,bmp:279,bmx:61,bmx_data:52,bmx_data_data:52,bnf:415,boad:306,board:[2,11,84,89,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,216,217,220,225,226,228,229,231,232,236,237,244,245,250,254,256,260,261,267,268,274,279,283,294,302,307,309,310,313,314,315,317,332,333,335,336,338,370,395,398,400,403,412,421,423,429,430,431,441],board_v1:230,boardguid:[285,296,331],bodi:[27,31,40,59,66,67,266,369,414,415,417],body_len:26,bodyfil:59,bold:387,bom:[231,236,244,428],bond:415,book:[226,279,415,429,431],bool:[5,11,14,15,19,20,27,28,32,34,35,38,39,41,42,43,44,45,47,51,53,54,56,57,60,62,63,64,65,70,72,73,74,75,76,79,80,81,82,83,85,86,87,88,91,93,94,95,96,97,101,102,103,105,106,107,108,109,113,115,116,117,119,122,123,128,132,134,136,137,139,140,141,144,180],boom:103,boost:[406,429],boot0:[226,263],boot1:263,boot:[106,112,137,215,220,226,228,229,231,236,253,256,263,267,273,276,277,278,279,284,295,306,312,337,349],bootim:32,bootload:[226,317,386,394],bootmod:[304,306],bootstrap:[261,322],boottim:32,border:[135,169],border_sid:169,bore:415,born:258,boss:322,both:[2,22,33,41,106,169,215,229,246,263,277,278,284,292,295,349,356,359,382,387,398,415],bother:342,bottom:[2,11,17,22,26,31,38,41,66,84,89,107,112,115,118,124,129,135,169,215,220,243,266,280,281,284,295,342,369,398,403,409,412,414,415,418],bottom_fit_typ:169,bought:316,bounc:101,bound:[144,169,415],boundari:[169,362,363,376,377,384],box:[38,135,145,170,266,340],boyfriend:172,bpp:[31,169],brace:415,bracket:[414,415],bracket_:415,bracketpair:218,bracketpaircolor:218,brackets_ar:415,brain:[349,359],brake:[261,322],branch:[217,387,415],brand:[398,403,412],breakag:20,breakpoint:[365,415],breath:[76,185,196,216,220,228],bri:61,bridg:315,briefli:[220,228],bright1:[89,90],bright3:89,bright5:89,bright8:[89,90],bright:[88,89,90,145,170,172,193,194,195,220,228,317,400],brightest:169,bring:[169,418],broadcast:[107,141,320,383],broken:[131,400],brought:[28,220,228],browser:[27,400],brush:[11,89,90,108,215,220,225,232,237,243,245,254,258,269,274,280,283,284,290,294,295,304,310,314,322,323,326,341,348,352,353,356,359,386,388,390,396,409,421],bs:[64,65],bsd:415,bsp:[6,22,24,28,31,111,112,129,141,173,177,237,279,285,296,322,339,342,354,355,356,357,360,361,386],bssid:[31,383],bt:[130,415],bt_cb:130,bt_readi:130,btn1:169,btn2:[101,169],btn3:169,btn:[101,145,170,220,228],btn_bw0:135,btn_bw1:135,btn_bw2:135,btn_bw3:135,btn_creat:[101,169,220,228],btn_get_stat:169,btn_hcenter:135,btn_id:169,btn_index:169,btn_inv:135,btn_part_main:169,btn_set_check:169,btn_set_fit2:169,btn_set_fit:169,btn_set_layout:169,btn_set_stat:169,btn_shadow0:135,btn_shadow1:135,btn_shadow2:135,btn_state_:169,btn_state_checked_dis:169,btn_state_checked_press:169,btn_state_checked_releas:169,btn_state_dis:169,btn_state_pr:169,btn_state_press:169,btn_state_releas:169,btn_state_t:169,btn_str:169,btn_toggl:169,btn_xframe:135,btna:169,btnb:169,btnm1:169,btnm:169,btnm_ctrl:169,btnm_ctrl_:169,btnm_ctrl_no_repeat:169,btnm_ctrl_tgl_enabl:169,btnm_map:169,btnmatrix:[145,170],btnmatrix_:169,btnmatrix_clear_btn_ctrl_al:169,btnmatrix_cr:169,btnmatrix_ctrl_check:169,btnmatrix_ctrl_check_st:169,btnmatrix_ctrl_click_trig:169,btnmatrix_ctrl_dis:169,btnmatrix_ctrl_hidden:169,btnmatrix_ctrl_no_repeat:169,btnmatrix_demo:169,btnmatrix_get_active_btn_text:169,btnmatrix_part_bg:169,btnmatrix_part_btn:169,btnmatrix_set_btn_ctrl:169,btnmatrix_set_btn_width:169,btnmatrix_set_map:169,bu:[2,4,28,38,42,43,44,45,47,49,51,53,54,60,63,70,73,74,75,79,80,86,87,91,93,102,103,105,119,120,121,181,182,183,203,204,205,206,210,211,212,213,220,228,246,251,258,261,295,322,363,364,370,372,375,376,384,403],bucket:414,buf:[17,136,169],buf_siz:169,buff1:5,buff2:[5,31],buff3:5,buff4:5,buff:[6,12,29,31,33,38,61,72,81,101,106,120,172,173,373,374,415],buff_mod:31,buff_point:5,buff_siz:[31,173],buffer:[4,5,11,31,38,68,101,107,124,135,136,169,211,212,213,220,228,263,279,292,363,376,382,384,415],buffer_offset:279,bug:[169,258,263,292,400,407,409],bui:[258,396,398,403,412],build:[169,217,218,225,268,280,322,326,339,345,347,349,352,353,354,356,357,360,361,386,415,420],build_at:386,build_bi:386,build_cmak:339,build_host:386,build_system:386,builddat:31,built:[14,41,66,67,101,106,112,118,124,169,179,186,187,208,219,220,226,228,246,251,259,263,270,277,279,280,291,297,306,312,317,318,336,337,357,362,367,375,378,391,415,417],bulk:423,bullet:169,bunch:[277,387],buoi:[145,170],burden:246,burn:[177,216,217,225,229,232,237,243,245,254,257,258,261,269,274,283,294,307,310,312,322,336,337,348,349,398,403],burn_efus:306,burner:[261,322],bus_dac:2,bus_i2:2,bus_soft_dac:2,bus_typ:31,bus_voltag:60,busi:[11,38,99,100,107,121,139,141,261,279,280,292,321,322,340,343,417,430],button:[134,135,145,170,215,218,220,221,222,226,228,229,237,246,256,258,266,276,277,278,306,315,322,338,400,403,409],bv1vf4y1l7rb:217,bv2:11,by_clean:415,bypass:415,byte0:394,byte1:394,byte2:394,byte3:394,c1:169,c1c2c3:[21,279],c1c3c2:21,c3:[306,309,322,388,390],c3_pcb:[310,322],c81234567830:266,c99:169,c:[1,11,22,31,38,52,87,108,110,118,128,129,130,136,169,175,216,220,225,228,246,256,263,306,312,315,317,322,338,342,352,353,356,357,359,363,370,376,377,384,388,390,392,394,396,398,403,407,412,413,414,431,443],c_n_:415,ca:[20,26,66,107,124],ca_fil:31,cabl:[131,215,220,228,315,398,400,403,424],cable_insert:131,cable_remov:131,cach:[5,12,17,29,68,107,123,124,136,251,263,279,357,382,415],cache_s:31,cal:61,calchum:[181,182,183],calctemp:[181,182,183],calcul:[0,8,21,81,103,104,144,169,185,191,216,220,228,262,266,271,279,316,337,414,415],calculate_crc:61,calendar:[145,170,317,318,429,431],calendar_:169,calendar_cr:169,calendar_date_t:169,calendar_get_pressed_d:169,calendar_part_bg:169,calendar_part_d:169,calendar_part_day_nam:169,calendar_part_head:169,calendar_set_highlighted_d:169,calendar_set_showed_d:169,calendar_set_shown_d:169,calendar_set_today_d:169,calibr:[60,263,401,412],call:[0,2,4,17,28,31,32,38,41,46,48,64,66,67,75,82,84,106,107,112,113,115,118,124,129,130,131,132,135,141,144,169,175,199,200,201,215,219,237,257,258,261,266,269,271,279,284,289,295,322,338,340,341,342,343,362,369,370,371,375,379,381,382,383,386,387,391,417,418],call_:415,callabl:387,callback:[2,4,5,22,26,27,28,29,41,48,64,66,67,75,90,100,101,107,123,124,126,130,131,132,136,140,169,185,210,214,216,220,228,266,271,279,284,292,295,343,364,369,375,379,382,383,387,416,417],callbacktest:416,called_cal:415,called_catch_:415,called_collabor:415,called_empti:415,called_environ:415,called_glob:415,called_iter:415,called_objects_in:415,called_terminator_:415,called_upp:415,caller:415,calorif:412,cam:103,cam_vcc:[112,279],camera:[31,112,129,292,293,312,322,387,422,431],camera_id:4,can:[0,2,3,4,7,8,9,11,12,13,14,16,17,19,20,21,22,23,24,28,29,32,33,34,37,38,41,57,59,61,62,64,65,66,68,75,78,82,84,89,90,98,99,101,103,104,106,107,108,110,111,112,115,116,117,118,120,121,123,124,125,126,130,131,132,135,136,137,138,140,141,144,145,170,172,173,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,218,219,220,221,222,225,226,228,229,234,240,243,246,251,255,256,257,258,259,261,262,265,266,269,270,271,273,277,278,279,280,284,285,286,287,289,290,295,296,304,306,307,312,315,316,317,318,320,321,322,323,332,337,338,339,340,342,343,348,349,350,351,352,353,356,357,358,359,360,361,362,365,366,369,370,371,374,375,378,380,385,387,388,390,391,392,394,395,396,398,401,403,406,407,409,412,413,414,415,416,417,418,421,424,429,430],can_500kbp:72,can_rx:263,can_tdhxr:263,can_tdtxr:263,can_tx:263,cancel:[75,106,117,137,284,398,403],cannot:[2,12,13,15,19,27,28,33,59,72,75,78,82,104,106,107,108,109,112,116,118,120,123,124,126,130,139,169,178,210,216,220,226,228,229,243,246,258,261,262,266,269,277,279,280,281,284,285,286,289,292,296,306,312,316,317,322,323,331,341,342,343,352,353,356,357,359,369,375,387,392,398,400,403,409,414,415,416,417],canva:[145,170],cap:[229,398],capabl:[24,124,169,219,246,277,284,306,312,331,384,414],capac:[5,122,124,199,200,201,220,228,246,263,279],capacit:[229,246],capacitor:[229,246,317,400,412],capend:31,capit:169,caplevel:31,captur:[22,31,169,175,263,323,396,401,403,409,412],capture_buff:31,capture_cnt:33,card:[2,14,16,26,61,68,106,118,119,123,124,131,137,169,173,220,228,246,261,271,279,285,292,296,312,315,322,358,367,391,414],care:[82,229,342,395,412,415],carefulli:[103,106,306,400,412,414,415,417],carri:[41,306,312,396,407,412,415],carriag:[115,414,415],carrier:35,carry_method:415,casic:41,casic_aid:[31,279],casic_data:318,casic_data_bd:318,casual:[220,228,266,416],cat1:[103,112],cat:[22,277,285,287,296,395,421],catalog:[218,359],catalogu:350,categori:[175,280,427],caught:[310,322,415],cauliflow:417,caus:[12,14,19,28,106,124,169,229,263,265,269,279,292,306,312,343,344,358,398,400,414,415],caution:[46,101,106],cb:[31,90,145,170,343,374,375,417],cb_is_inact:169,cbc:[8,21,178,287],cbfnc:[61,418],cbfncpara:48,cbfun:31,cbpara:61,cbt6:258,cc1:400,cc2:400,cc:[31,129,131,398,401,403,406,407,409],ccc:[229,414],ccccc:229,ccitt:8,ccm:287,cd:[31,339,355,359,414],cdata:[13,104],cdc:[215,258,285,296,306,312],cdma2000:287,cdn:[218,224,236,244,246,257,260,267,278,334,335,337,358],cdup:20,ce:61,cede:415,ceil:175,cele:415,cell:[106,131,145,170,279],cell_info_upd:[64,65,106],cell_typ:[145,170],cellid:279,cellinfo:279,cellular:[31,124,129,396],celsiu:[0,28,49,120,279],cen:263,center:[11,38,135,144,169,289],centimet:320,central:337,cer:62,certain:[22,33,55,57,76,112,144,169,178,215,220,228,315,318,398,414,415],certainli:[414,417],certif:[20,26,48,62,66,107,124,279,318],cf:415,cfgsy:[277,317],ch0:9,ch2o:61,ch340:[331,421],ch343:[115,215,306,312,421],ch343p:312,ch:31,ch_cpu:[0,231,236,267],ch_vbat:[0,231,236,267],chain:[31,129,221,279,280,344,357,361],chang:[20,22,39,99,103,106,112,131,135,138,144,145,170,175,178,179,186,216,220,228,258,263,265,266,279,283,284,292,306,307,308,322,341,347,349,352,353,359,363,370,376,384,387,396,403,409,414,416,417,441],changelog:[283,322],changelog_luato:280,changer:169,channel1:263,channel3:[261,322],channel4:263,channel:[0,1,2,6,9,31,33,38,43,77,99,100,119,120,130,138,169,177,181,182,183,185,193,194,195,207,211,212,213,216,220,226,242,251,262,263,270,278,279,284,295,312,331,337,365,383,387,396,401,406],channel_switch:31,chapter:[177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,220,228,263,271,362,400,414,415],char_arrai:169,charact:[30,38,81,82,103,104,106,108,113,128,135,137,141,144,145,170,175,210,211,212,213,220,228,229,279,306,317,323,352,353,356,358,378],character_:415,character_x_:415,character_x_itself:415,characterist:[2,210,211,212,213,220,228,241,246,283,284,316,321,322,386,415],charg:[38,112,124,169,219,245,258,277,322,396,398,403,406,412,417],charge_vbat:246,charge_vcc:246,charger:[396,400],charpattern:175,chart:[82,145,170,225,232,322],chart_add_cursor:169,chart_add_seri:169,chart_axis_:169,chart_creat:169,chart_cursor_non:169,chart_cursor_t:169,chart_get_nearest_index_from_coord:169,chart_get_point_count:169,chart_get_point_id:169,chart_get_series_area:169,chart_get_typ:169,chart_get_x_from_index:169,chart_get_x_start_point:169,chart_get_y_from_index:169,chart_init_point:169,chart_part_bg:169,chart_part_cursor:169,chart_part_seri:169,chart_part_series_bg:169,chart_point_def:169,chart_refresh:169,chart_set_cursor_point:169,chart_set_div_line_count:169,chart_set_ext_arrai:169,chart_set_next:169,chart_set_point:169,chart_set_point_count:169,chart_set_point_id:169,chart_set_rang:169,chart_set_typ:169,chart_set_update_mod:169,chart_set_x_start_point:169,chart_set_x_tick_length:169,chart_set_x_tick_text:169,chart_set_y_tick_length:169,chart_set_y_tick_text:169,chart_type_:169,chart_type_column:169,chart_type_lin:169,chart_type_non:169,chart_u:169,chart_update_mode_:169,chart_update_mode_circular:169,chart_update_mode_shift:169,chat:115,chcp:330,cheat:[398,400],check:[2,8,11,13,21,28,31,33,38,82,101,104,106,115,116,120,121,124,128,135,136,145,170,199,200,201,211,212,213,215,218,220,222,228,229,242,243,256,257,258,263,266,269,271,312,317,318,331,338,342,345,346,347,349,352,353,356,357,361,367,382,385,392,396,400,412,414,415,417],check_crc:31,check_sim_period:31,check_valu:31,checkbox:[145,170],checkbox_:169,checkbox_cr:169,checkbox_is_check:169,checkbox_part_bg:169,checkbox_part_bullet:169,checkbox_set_dis:169,checkbox_set_text:169,checkout:355,checkpoint:[352,353,359],checksum:[31,136],chef:417,cheng:172,chenxuuu:[366,375,380,381,382],chestnut:369,chi:75,child:169,children:169,china:[34,62,277,279,285,287,320,336],chines:[11,38,124,135,169,179,218,220,228,265,283,322,330,331,342,356,359,373,403,414],chip:[0,14,17,22,25,28,31,38,61,66,75,101,112,115,120,121,129,135,177,184,191,195,196,197,198,199,200,201,202,204,205,206,207,210,214,215,217,219,220,221,224,225,228,229,232,234,235,237,240,245,250,256,257,258,260,261,268,269,271,273,275,277,279,284,285,291,292,295,296,302,306,309,312,316,317,318,321,333,334,335,336,338,356,357,358,359,380,386,387,391,394,395,398,400,401,406,416,421,426,431],chip_check:61,chip_id:[31,75],chip_target:357,chiperas:31,chipid:[204,205,206],chmod:415,choic:[222,256,338,365,414],choos:[89,90,131,169,205,206,215,220,225,228,229,251,263,279,322,395,400,415],chooser:[145,170],chrome:[169,400],cht8305c:61,chuang:278,chunk:[175,279],chunknam:175,ci:[221,339],cid1:279,cid:31,cillum:169,cipapmac:269,cipher:[8,283,322],cipher_decrypt:[31,178],cipher_encrypt:[31,178],cipher_list:31,cipher_suit:[31,287],cipstamac:269,circl:[31,38,135,144,169,220,228,396,415],circuit:[89,90,177,193,194,195,220,228,232,245,259,262,263,312,315,322,398,401,412,415,429],circular:169,circularli:169,circumst:[229,315],circumv:[414,415],citizen:415,citizens_:415,citron:169,cj_temp:71,cjk:169,ck2af9qd2k:34,ck:8,clamp:398,class_i:415,classic:[169,215,306,421],classif:[283,322,360,395,415],classmat:218,clean:[123,128,145,170,279,292,342,415],cleanmsg:31,cleansess:31,cleanup:[128,375],clear:[12,15,22,31,61,78,81,103,106,107,123,132,135,136,169,179,217,261,279,292,304,306,322,373,403,409,412,415,417],clear_bit_mask:61,clear_btn_ctrl:169,clearbuff:31,cleardownlink:31,clearli:[169,220,228,279,396],clearlong:[31,279],clearuplink:31,cli:[350,409],click:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,48,49,59,61,65,66,67,92,97,99,100,101,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,169,215,218,220,221,222,243,256,258,266,269,271,286,330,338,339,349,351,352,353,356,359,400,407,409,412,413,415,420,421,442],clickabl:169,client:[1,27,31,66,68,124,129,141,279,344,393,396,398,400,401,403,406,407,410,412,415],client_ca:31,client_cert:[20,31,61,62,107],client_id:[31,34],client_kei:[20,31,61,62,107],client_password:[20,31,61,107],client_private_kei:62,clientid:107,clip:[128,169,290,398,400],clk:[31,61,199,200,201,204,205,206,220,228],clk_24m:246,clk_27p12:246,clock:[31,33,61,84,89,90,103,112,120,129,135,136,169,175,188,189,197,204,205,206,220,222,226,228,229,234,240,245,251,256,258,261,262,271,279,284,292,295,297,306,321,322,337,338,372],clock_source_to_output_on_mco_pin:259,clockwis:[41,55,169],clone:[352,353,354,355,356,357],close:[13,31,32,41,46,61,78,102,106,112,115,137,145,170,173,175,177,181,182,183,199,200,201,204,205,206,220,228,229,246,259,261,269,279,292,322,365,370,379,381,382,383,387,409,412,418],close_btn:169,close_watch_dog:61,closef:415,closest:169,closur:[22,175,343],closure_:415,cloud:[2,7,11,16,31,38,61,107,129,215,220,228,265,269,279,280,284,289,292,295,323,333,352,353,359,421],cloud_compil:38,cloudc:61,clutter:279,cmake:339,cmakefil:342,cmakelist:359,cmd:[31,33,169,259,262,271,349,356,359,365,380],cmd_cnt:31,cmd_com_mod:31,cmd_rc:31,cmd_sysen:31,cmiot:106,cmsi:[225,256,257,258,263,322,338],cn:[22,26,34,58,59,64,78,82,112,140,218,282,284,293,295,317,318,359],cnt:[22,31,144,169,261,322,416,417],co:[66,169,175,268,277,280,322,330,337,417,418],coap:[31,129],coapdata:31,code:[1,4,7,14,22,23,25,26,27,28,30,31,35,38,39,41,46,48,59,66,67,71,75,82,89,90,98,101,106,107,112,113,116,118,120,124,126,130,133,135,138,148,156,159,165,169,173,175,177,179,180,181,182,183,185,187,188,189,190,192,193,194,195,197,198,202,203,207,208,209,210,214,216,217,218,220,222,225,228,234,237,240,258,261,263,266,269,277,279,280,284,289,315,322,328,330,336,342,344,350,352,353,360,362,366,370,371,373,374,375,378,379,381,382,383,386,388,390,392,398,400,403,407,416,417,418,424],codebas:[388,390],codec:[2,31,112,129,276,291,292],codepoint:175,coder:[31,99,100],coexist:265,col:169,col_cnt:169,col_id:169,cold:[71,220,312],collabor:417,collat:415,colleagu:169,collect:[99,100,118,175,177,258,263,314,322,369,414],collectgarbag:175,collector:415,collector_to:415,collis:81,colloc:321,colon:[88,414],colon_syntax:415,color:[31,61,101,135,145,170,172,220,289,322,431,434,437],color_arrai:169,color_blu:169,color_hex3:169,color_mak:169,color_mode_hu:169,color_orang:169,color_purpl:169,color_transp:169,colro:169,column:[145,170,266,387],com0:[39,238,394],com1:[39,238],com20:306,com2:238,com3:238,com8:349,com:[12,26,31,38,41,61,64,65,66,67,78,82,101,108,113,115,124,142,169,180,199,200,201,204,205,206,215,217,218,220,221,222,224,233,236,239,244,246,255,256,257,258,260,266,267,269,275,276,277,278,280,281,285,289,296,316,317,318,329,334,335,337,339,341,342,351,352,353,355,356,357,358,359,391,414,420,422,423,430,432,434,435,437,438,440,443],com_mark:31,com_numb:31,combat:217,combin:[205,220,222,229,263,277,279,304,317,318,321,356,357,394,400,414,415,417,421],combine_ec7xx:323,comdb:357,come:[75,131,169,220,246,251,306,317,318,356,365,414,415,417],comma:[61,218,365,414,415],command:[11,25,31,33,38,57,61,99,112,113,120,135,169,175,184,185,199,200,201,216,220,228,281,291,306,307,316,318,330,339,356,357,365,388,390,396,401,406,409,412],comment:[0,144,220,228,263,326,352,353,359,387,415],comment_:415,commerci:[169,280],commiss:[363,376,384],commit:[279,387],commodo:169,common:[26,73,84,89,90,103,107,108,124,138,140,145,170,178,215,226,231,236,263,278,285,295,296,306,320,321,337,358,370,380,388,389,390,394,396,414,415,419],commonli:[136,141,172,186,220,228,229,263,279,304,414],commun:[75,81,107,112,124,140,169,181,182,183,203,204,205,206,210,211,212,213,219,220,226,228,231,236,251,257,263,267,270,271,284,285,295,296,306,318,319,320,322,363,376,381,382,384,392,395,398,403,415],comp:175,compact:[321,414],compar:[103,144,226,263,337,398,414,415],comparison:[19,144,175,246,261,322,337,407],compat:[19,21,75,78,103,104,136,169,198,215,220,228,251,255,261,262,263,265,270,279,285,292,312,332,333,342,415,429,441],compens:412,competit:412,compil:[0,7,11,16,38,41,73,112,115,118,141,169,215,217,222,225,228,256,265,266,269,279,280,281,284,289,291,292,295,305,306,307,322,330,333,338,341,342,378,388,390,414,415,421],complain:403,complement:[31,129,414,415],complementari:[251,337],complet:[2,4,7,17,19,22,28,33,68,75,82,100,106,107,111,112,119,124,126,131,136,143,169,181,182,183,210,211,212,213,220,222,226,228,229,235,236,237,239,256,258,263,266,269,271,277,279,280,292,306,307,315,316,317,337,338,339,343,346,349,357,359,370,382,388,390,394,396,409,414,415,416,419,441],complex:[219,279,414],compliant:251,complic:[186,220,228,266,342,417],compon:[4,38,101,145,170,177,220,228,256,280,342,356,357,359,384,395],compos:[128,169,414],composit:[258,394,415],compound:415,compress:[4,27,31,129,169,173,279,280,337,356,357,358,386,394],compressor:104,compromis:415,comput:[116,215,220,226,228,257,261,265,276,277,278,279,306,315,322,352,353,356,357,358,366,396,398,403,409,412,414],compute_adler32:104,comxx:258,con:40,conack:[107,140],concat:[175,220,228],concaten:[175,414],conced:415,concentr:95,concept:[145,170,175,375,414],concess:415,concis:[344,413,414],concord:130,concorout:130,concret:17,concurr:279,cond:415,condit:[169,172,246,263,279,289,337,365,415,417,418],condition:228,conf:[31,61,169,225,322,350,362],conf_ce_mod:106,conf_disable_ncell_mea:106,conf_fake_cell_bartim:106,conf_psm_mod:106,conf_qualityfirst:106,conf_reseltoweakncel:106,conf_reset_to_factori:106,conf_sim_wc_mod:106,conf_staticconfig:106,conf_t3324maxvalu:106,conf_usb_ethernet:106,conf_userdrxcycl:106,conf_xxx:106,confess:172,confid:400,confidenti:304,config:[31,61,175,279,307],config_get:31,config_set:31,configassert:263,configprio_bit:263,configur:[1,2,4,9,10,12,20,22,26,27,37,41,42,48,57,60,62,71,72,74,76,82,83,85,99,100,103,106,107,112,118,124,134,135,136,138,140,141,169,186,216,222,228,229,231,236,246,251,256,261,262,266,267,269,271,277,278,279,280,283,292,294,306,310,312,317,322,337,338,342,343,350,351,352,357,374,375,381,382,415],confirm:[263,307,312,349,359,400],conflict:[106,269,279,284,295,358,415],conform:[113,169,286,356,357,415],confus:271,conjunct:[131,320,417],connect:[12,20,25,26,31,34,48,61,64,66,67,75,78,89,90,98,99,106,120,145,148,156,159,165,169,171,174,177,179,181,182,183,186,198,203,210,211,212,213,215,219,220,221,222,226,228,229,246,256,257,261,263,265,270,276,277,278,279,284,291,292,295,306,308,312,315,316,317,321,322,333,338,356,357,365,383,394,396,403,409,414,415],connect_config:61,connector:400,consectetur:169,consecut:[169,261,322],consequ:412,consequat:169,consid:[2,107,220,228,246,280,315,349,370,414,415],consider:[261,289,322],consist:[14,29,68,169,181,182,183,204,205,206,266,269,339,362,409,414,415],consol:[7,330,388,390],consola:218,consolid:169,constant:[19,31,61,140,169,279,363,376,377,378,384,387,415],constant_:415,constantli:415,constel:[277,294,319,322],constraint:414,construct:[169,175,216,217,225,232,261,322,336,388,390],constructor:415,consult:[48,108,120,258,356],consum:[4,6,16,169,316,342,360,369,391,400],consumpt:[0,2,13,32,106,112,188,189,219,232,237,245,265,279,283,304,310,320,322,337,371,372,383,396,403,406,409,414,421],cont:[145,170,415],cont_creat:169,cont_part_main:169,cont_set_fit2:169,cont_set_fit4:169,cont_set_fit:169,cont_set_layout:169,contact:[1,61,106,229,263,283,322,358,420,423],contain:[32,38,59,103,106,107,110,113,124,145,170,181,182,183,229,251,258,265,279,280,281,323,352,353,356,357,359,364,414,415],contamin:258,content:[1,2,11,14,26,38,48,59,66,67,101,106,113,123,130,131,132,135,144,145,170,186,187,218,220,222,228,258,271,279,283,308,316,322,339,345,350,356,360,361,364,370,373,385,387,388,389,392,403,415],content_len:26,context:[82,94,218,343,415],continu:[0,2,4,29,31,71,112,114,124,169,193,194,195,217,220,228,229,234,240,261,266,277,279,316,317,318,320,322,343,351,368,371,378,398,403,409,414,415,417],contract:312,contrari:[215,220,414],contrast:[31,169,262,322],contribut:28,control:[2,14,17,28,31,44,46,61,75,76,79,81,82,93,101,106,112,126,129,136,145,170,172,175,181,182,183,185,193,194,195,207,216,220,228,229,246,251,256,257,258,261,262,271,277,279,284,291,310,314,321,322,331,336,337,342,344,380,383,394,396,414,417,419],convei:169,conveni:[169,204,205,206,220,228,279,306,312,374,383,395,398,409,415],convent:[27,175,278,295,343],converg:320,convers:[3,14,21,30,31,71,113,128,129,136,145,170,175,177,188,189,190,210,220,246,251,261,279,312,322,331,387,388,389,421],convert:[0,3,30,36,41,59,61,64,82,103,113,116,128,141,144,169,172,173,177,181,182,183,185,191,204,205,206,210,216,220,228,263,277,279,365,392,414,415],cook:417,cool:[22,341],cooper:[37,38,125,131,401,412],coord_min:169,coord_t:169,coordin:[11,32,38,41,64,65,82,101,105,135,144,169,277,279,320,337,409,415,421],copi:[31,135,169,218,222,258,266,339,341,349,359,360,361,362,369,370,414,415],coprocess:415,coprogram:417,copybuff:[31,279],copyright:[1,169,173,356,357],cord:406,core:[84,89,112,117,126,136,177,219,225,236,244,245,250,255,256,258,263,266,285,296,307,309,310,313,314,317,322,326,330,333,336,337,338,342,367,368,369,371,372,373,376,379,384,386,394,400,403,415,416,417,418,421,423,430,441,443],core_addr:386,core_v1103:279,coremark:[31,129,322,333],corner:[11,38,101,105,135,169,215,218,220,221,256,398,412],corout:[415,417],coroutag:415,coroutet:[415,418],corouti:415,coroutin:[42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,65,66,69,71,72,74,76,77,79,80,81,83,85,86,87,88,91,93,94,95,96,175,414,417],correct:[11,22,38,41,117,124,135,269,277,279,291,316,317,341,352,353,356,357,359,400,414,415,417],correctli:[17,28,110,126,265,279,284,317,414,415],correl:[283,322],correspond:[2,4,8,11,15,19,21,22,30,34,37,38,39,41,55,64,82,89,90,98,103,105,111,112,115,121,124,130,134,135,138,169,177,180,184,185,188,189,190,191,196,202,207,214,215,216,222,226,229,237,246,255,257,258,263,265,266,271,273,279,284,289,295,306,312,315,316,322,331,341,342,357,360,363,364,370,376,378,384,392,414,415,416,417,430,443],correspondingli:22,cortex:[226,258,337],cortextm:251,cosh:415,cosin:415,cost:[169,270,320,406],could:415,count:[31,55,88,103,131,134,144,175,203,208,221,261,279,322,378,403],counter:[103,106,124,131,134,263,312,337],counterclockwis:[55,169],coupon:258,courier:218,cours:[41,144,169,172,218,243,258,266,409,414,415,417],cover:[12,269,398],cozhou:266,cp2102:[409,412],cp210x_windows_driv:409,cp:[279,280],cpath:175,cpha:[14,31,75,173,381],cpicker:[145,170],cpicker_:169,cpicker_cr:169,cpicker_part_bg:169,cpicker_part_knob:169,cpicker_set_knob_color:169,cpin_is_readi:106,cpol:[14,31,75,173,381],cpp:113,cpp_out:113,cpu:[0,108,112,220,228,231,236,246,253,267,279,369,415,417],cr2:263,cr:[263,414],cr_opter_set:263,cr_strt_set:263,crash:[61,103,263,279,292,415],crc16:[31,110,262,385],crc16_modbu:[31,279],crc32:31,crc7:[31,279,304],crc8:[31,271],crc:[8,81,120,262,271,374],crc_modbu:374,crcon:[99,100],creat:[5,8,20,28,29,31,32,34,38,40,61,62,64,68,101,106,120,126,130,132,135,169,172,173,175,177,185,199,200,201,209,214,215,216,218,220,222,228,256,268,322,338,339,342,348,356,357,360,361,373,383,388,390,407,414,417,418],createap:31,createsoft:[31,73,279],creation:[107,140,141,144,169,199,200,201,279,349],creativ:395,criteria:128,critic:[145,170],crop:[145,170],cross:[145,170,280,357,363,376,384,415,421],crossov:263,crt:[62,107],crypto:[31,110,116,129,185,216,279,287,297,333,374],crystal:[103,197,220,225,231,232,236,246,263,322,337],cs1237:31,cs1237_data:120,cs:[11,14,25,31,61,75,99,135,138,173,185,199,200,201,207,216,220,228,271,381],cs_gpio:[204,205,206],cs_pin:31,csdk:[215,278,284,289,291,295,316,317,318,323,331,332,357,358],csfb_not_preferred_regist:106,csfb_not_preferred_registered_roam:106,csk:72,cspi_spe:31,cspin:[199,200,201],csq:31,css:169,csv:[307,409],ctr_lp:263,ctrip:177,ctrl:[31,218,279,292,409],ctrl_map:169,ctwing:279,ctx1:415,ctx2:415,ctx:[343,415],ctype:415,cubemx:[262,263],cuboid:414,culpa:169,cumul:[22,106,409],cupidatat:169,cur:415,cur_timestamp:31,curli:[414,415],current:[0,2,4,5,6,8,11,12,14,15,17,20,22,24,27,28,29,37,38,41,55,57,60,61,64,65,98,99,100,101,103,104,106,112,116,117,118,121,124,125,126,131,136,137,138,141,144,145,170,181,182,183,215,218,220,226,228,229,246,257,258,263,266,268,270,279,292,295,319,321,322,330,331,337,341,342,349,363,365,369,376,378,379,380,384,385,394,396,398,401,406,407,413,414,415,417,423],currentlin:415,cursor:[144,145,170,412],curv:[232,237,245,310,322,409],custom:[11,12,16,22,26,38,59,66,67,108,118,124,135,137,145,170,215,220,229,258,266,279,280,284,292,307,323,337,343,344,349,366,369,378,388,390,391,414,415],custom_id:31,custom_init:341,customiz:169,cut:[131,258,279],cute:415,cvcc:246,cwait:[132,343],cwait_id:343,cwait_mt:375,cwaitcreat:375,cwd:20,cycl:[33,39,77,106,107,114,118,136,140,169,185,187,193,194,195,209,210,214,216,217,220,228,261,279,292,316,317,318,322,337,370,372,412,415,416,417,418],cyclic:[232,237,245,310,322],d0:[259,262],d3102512a40000a:[231,236],d3:[259,262],d4:306,d5:306,d:[11,41,75,82,98,108,110,118,144,169,179,180,187,199,200,201,220,221,228,341,352,353,354,355,356,357,359,387,392,414,415],dac:[2,31,129,246,251,262,276,279,285,296,304,333],dac_en:[112,284],dacdelai:31,dacen:2,daclevel:31,dacpin:31,dactimedelai:31,dai:[41,64,78,108,117,169,197,219,220,352,353,359,413,414,415],daili:[198,220,228,342],dam:263,damag:[229,344,400,409,412],dap:[222,256,257,261,263,322,338,365],daplink:[221,222,256,257,261,262,322,338],daquan:431,dark_color:31,darken:169,darker:169,darkest:169,dat:[61,277,317,318],data0:263,data1:[31,180,208,263],data2:[8,31,180,208,263],data2_decrypt:178,data2_encrypt:178,data32bit:31,data3:[180,208],data4:[180,208],data5:208,data64bit:31,data6:263,data7:263,data:[4,5,12,14,17,20,22,23,24,26,31,33,35,37,42,43,44,45,47,49,51,52,53,54,57,59,60,61,63,64,65,66,68,69,70,72,74,75,78,80,83,84,85,86,87,89,90,91,92,93,95,96,97,101,105,110,112,125,129,130,131,141,145,170,171,173,177,178,181,182,183,185,186,195,199,200,201,203,204,205,206,208,210,214,216,217,218,219,220,225,226,228,229,232,237,245,250,254,257,258,261,262,266,268,271,274,277,279,280,283,284,289,292,294,295,302,306,310,314,316,319,320,321,322,334,336,337,340,343,356,357,362,363,364,365,366,370,373,375,376,380,381,382,384,385,386,387,388,389,391,394,395,396,401,407,412,415,416,417,424,427,429,434,437,440,443],data_2_lan:38,data_bit:31,data_first:31,data_len:124,data_mod:31,data_repres:415,data_w:172,dataa:369,datab:369,databas:[31,61,129,185,216,331,357,385,415],databook:224,datal:263,datar:[99,100],datasheet:[231,236],datasheet_1:244,datatraff:31,dataw:31,date:[31,41,61,78,117,118,124,131,140,145,170,175,179,197,220,279,339,360,361,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,387],date_t:169,day_nam:169,daylight:415,dbg:[278,365],dbg_rx:[284,295],dbg_tx:[284,295],dc2dc:246,dc:[11,135,220,228,406],dcdc:412,dcim:331,dcmi:246,dcmis_data0:246,dcmis_data10:246,dcmis_data11:246,dcmis_data12:246,dcmis_data13:246,dcmis_data1:246,dcmis_data2:246,dcmis_data3:246,dcmis_data4:246,dcmis_data5:246,dcmis_data6:246,dcmis_data7:246,dcmis_data8:246,dcmis_data9:246,dcmis_hsync:246,dcmis_pix_clk:246,dcmis_vsync:246,dd:41,ddd:414,ddddd:41,ddddddd:41,ddddddddd:41,ddlist:169,ddmm:41,de:[275,304,415],dead:[251,279,337,396,414,415,417],deal:[392,415,417],dealer:106,death:229,debounc:[31,279,284],debug:[9,26,29,31,59,82,103,113,136,169,173,175,187,220,222,225,228,232,256,257,261,306,312,316,322,326,338,356,357,363,365,370,376,384,386,394,414,417,419,421],debug_en:31,debugg:[221,222,226,256,257,258,263,338,363,376,384,415],debugge:257,dec:135,decemb:[64,169,269,400],decid:[17,67,103,266],decim:[41,64,103,169,185,191,216,337,414,415],decis:[321,401],declar:[169,175,341,342,374,414],decod:[2,4,8,31,116,128,142,169,204,205,206,251,263,279,373],decoi:[396,403,406,407,409],decompos:[392,415],decomposit:41,decompress:[13,104,173,215,280,331,352,353,356,358,394],decor:135,decoupl:[284,295],decreas:[28,106,169,193,194,195],decrement:169,decrypt:[21,31,129,178,279],decrypt_data:142,dedic:[103,126,169,219,278,279,342],deep:[112,131,232,237,245,277,279,284,292,322,337,356,373,415],def:[98,128,414,415],def_event_cb:169,defect:[279,292],defens:[269,279,323],defgroup:259,defin:[8,64,75,84,89,90,107,113,115,135,137,169,204,205,206,222,263,279,340,341,350,352,363,369,370,372,374,376,378,379,383,384,386,415,416,417,418],define_method_:415,definit:[113,144,169,175,219,220,225,228,229,237,245,256,310,314,322,337,341,342,352,370,387,388,389],defocus:169,deg:[74,169,175],degrad:229,degre:[0,11,28,41,49,120,169,228,279],deinit:31,del:31,del_len:144,delai:[2,31,41,76,101,120,124,130,136,138,169,181,182,183,185,188,189,190,197,209,216,220,221,228,261,279,322,364,369,372,380,382,396,401,417,418],delay1248:103,delay_u:263,dele:20,delet:[12,15,19,20,27,32,38,40,101,106,108,125,132,135,144,145,170,185,216,258,323,363,367,370,376,384,387,391,415,417],delimit:[31,415],deliv:[107,258],deliveri:[82,258,279],delta:[169,337],demand:[0,107,139,220,228,279,322,388,390,415],demo1:169,demo:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,55,59,65,66,67,75,92,97,99,100,101,103,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,172,173,186,209,215,217,220,228,237,262,265,266,279,280,281,289,306,312,315,322,331,343,350,387,391,422,429,431,432,435,438,441,443],demo_benchmark:31,demo_keypad_encod:31,demo_mus:31,demo_print:31,demo_stress:31,demo_widget:31,demonstr:[24,64,107,116,141,169,209,211,212,213,222,243,277,294,322,330,343,400,414],deni:106,denoise_forc:357,denot:415,densiti:[62,414],depart:279,depend:[11,24,28,39,103,106,108,112,124,136,169,246,256,277,284,318,331,344,360,370,372,385,415],deploi:82,deprec:415,depth:[101,144,342,414,415],der:21,deriv:[169,415],describ:[67,145,148,156,159,165,169,170,171,180,181,182,183,185,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,216,265,266,271,284,295,345,362,365,396,409,415,417],descript:[22,48,57,59,67,82,93,106,118,124,135,145,170,172,218,220,228,229,237,246,255,259,261,262,266,271,277,283,294,298,310,314,322,326,357,364,378,384,388,389,392,403,414,415,417,430],descriptor:169,deselect:169,deseri:36,deserunt:169,design:[60,177,194,198,205,206,211,212,213,220,228,231,232,236,237,244,245,258,259,261,262,263,267,277,280,284,304,306,312,322,332,363,364,366,370,375,377,384,389,401,412,414,415,430],desir:[41,169,415],despit:415,destroi:[169,414,415],destruct:344,detach:106,detail:[15,22,29,34,37,48,64,67,82,106,110,112,124,125,135,141,169,172,226,246,258,262,263,266,271,277,279,280,306,312,318,326,337,357,370,378,396,415,417],detect:[28,59,61,85,90,99,106,220,228,246,251,269,279,284,295,337,349,400,414,415,417,419],determin:[4,28,29,32,48,66,74,75,106,107,112,118,123,140,169,220,228,263,266,281,323,366,369,370,380,387,398,409,414,415,417,418],dev:360,dev_msg1:12,develop:[7,24,28,38,41,108,152,169,170,171,174,177,178,179,180,181,182,183,185,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,219,220,222,225,226,229,231,232,236,237,244,245,250,254,256,260,261,262,267,268,270,274,279,283,284,285,294,302,309,310,313,314,315,316,317,332,333,335,336,338,344,383,384,387,395,406,414,416,417,418,419,421,429,430],deviat:331,devic:[0,1,6,7,11,12,14,22,23,28,34,38,48,61,62,71,74,75,78,82,85,97,99,100,101,103,107,112,114,115,116,118,119,120,122,136,137,139,141,145,170,173,181,182,183,185,191,202,207,215,216,219,220,225,228,246,256,257,259,261,263,266,269,271,279,280,289,295,306,317,318,322,338,342,349,350,365,370,381,382,383,386,391,394,395,396,398,401,403,415],device_clos:[204,205,206],device_id:[31,140],device_kei:31,device_nam:[31,62],device_secret:[31,62],device_setup:126,device_status_get:31,devicenam:48,devicesecret:48,devicesetup:[11,31,38,71,97,100,122,173,199,200,201,204,205,206,220,228],devlog:12,dfp:[261,322],dfu:[400,403],dgps_age:41,dhcp:[138,141,279,292,383],dhcp_enabl:31,dhcp_timeout:131,dhe:287,dht11:120,dht12:[28,120],dht1x:31,dht30:28,di:[199,200,201,204,205,206],diagram:[75,177,179,181,182,183,186,210,220,225,228,229,232,246,256,257,258,278,294,306,322,332,338,396,417,429,431,443],dial:[31,398,400,403],dialog:266,did:[113,263,279,322,366,417],didn:414,diff_tick:103,differ:[11,13,19,22,24,38,41,59,95,96,98,103,106,107,108,112,120,126,135,136,144,169,185,187,191,193,194,195,205,216,220,228,229,235,236,237,239,246,261,262,271,276,277,279,280,281,284,285,289,290,295,306,312,317,318,322,331,333,342,343,344,352,353,358,359,362,365,370,375,378,385,386,391,394,396,403,409,412,414,415],differenti:[24,41,246,266,281,283,284,286,295,320,322,421],difficult:[366,412,414,415,417],difficulti:365,difftim:[31,175],dig1:90,dig4:90,dig:61,digit:[8,31,41,61,64,84,128,129,136,145,170,177,193,194,195,204,205,206,220,228,231,236,246,251,267,271,280,283,285,286,296,322,382,387,414,415,416],digit_count:169,digitalwrit:221,dim:169,dimens:[169,306,309],dimension:[11,38,101,135,269],dingd:279,dingtalk:279,dinner:417,dio1:[99,100],dio:306,diod:246,dipper:[277,316,317,318],dir:[169,263],dir_forward:169,dir_path:31,direct:[3,11,22,34,35,37,38,41,55,112,119,121,135,136,141,145,170,172,173,175,186,220,221,222,228,246,263,279,306,312,342,365,371,373,398,400,415,421],direction0:38,direction180:38,direction270:38,direction90:38,direction_0:38,direction_180:38,direction_270:38,direction_90:38,directli:[0,2,4,7,8,11,15,19,22,38,59,99,103,106,111,112,119,126,130,135,143,144,169,177,185,198,202,207,210,211,212,213,215,216,219,220,221,222,228,229,246,256,258,263,266,271,277,279,280,286,306,312,315,317,318,323,330,331,338,339,340,341,342,343,347,351,352,353,356,357,358,360,361,362,366,369,373,375,380,392,396,398,409,414,415,416],directori:[20,32,97,108,122,169,176,220,222,266,279,280,289,317,330,338,339,341,342,350,352,353,356,357,359,360,361,391,415],dirti:19,disabl:[38,39,75,104,106,115,123,135,141,145,170,185,207,216,259,263,279,287,342,415],disablepwm:31,disadvantag:[169,319,320,322,398],disassembl:412,disburs:369,disc:[145,170],discard:[0,124,136,234,240,415],discharg:[409,412],discon:31,disconnect:[26,31,61,66,67,68,124,140,219,258,263,265,279,383,403],discontinu:406,discrep:304,discuss:[289,370,415],dish:417,disk:[137,257,258,323,326,330,356,357,359,409,421],disp:[31,129,135,185,216,220,280],disp_get_default:169,disp_get_hor_r:169,disp_get_ver_r:169,disp_set_bg_color:[220,228],dispatch:417,displac:3,displai:[3,10,11,20,25,38,88,89,90,101,113,124,135,145,170,172,174,179,186,192,197,198,203,210,220,228,251,257,261,265,279,280,285,296,305,322,358,365,373,378,396,398,403,407,414,415,441],display_str:179,dist:[169,369],dist_px:169,distanc:[50,57,93,144,169,230,235,242,264,276,277,278,398],distinct:34,distinguish:[65,261,271,284,306,322,400,414,415],distort:398,distribut:[141,169,265,269,415,417],district:117,divid:[0,60,103,114,169,177,178,203,220,228,229,261,262,266,271,318,322,337,340,362,414,415],divis:[3,114,193,194,195,229,242,261,263,322,337,414,415],dl:[359,394],dlfcn:415,dll:[339,415],dma1_channel1_irqhandl:263,dma1_it_tc1:263,dma:[246,261,279,312,322,337],dma_clearflag:263,dma_clearitpendingbit:263,dma_cmd:263,dma_getitstatu:263,dn:[58,124,246,279,393],dnp:8,dns_index:31,dnsclient:393,doc:[78,169,255,281],dock:[279,320,375,391,393,443],document:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,152,156,159,165,169,170,171,174,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,216,217,220,222,225,226,228,229,232,241,242,245,256,258,263,265,266,283,284,285,295,296,299,315,316,318,322,333,338,342,345,349,350,352,353,356,357,365,384,387,389,390,409,415,421],doe:[6,14,16,22,28,30,31,32,36,38,41,59,73,75,76,78,89,90,99,101,103,106,107,111,112,114,115,118,124,129,136,137,138,139,144,169,199,200,201,215,219,229,242,256,261,262,265,266,271,276,277,278,279,280,284,285,287,290,292,295,296,306,312,316,317,318,321,322,326,333,338,348,351,352,353,356,357,358,364,369,371,374,375,378,387,391,392,396,403,414,415,417,419],doesn:[27,218,261,322,415],dofil:[175,340],dog:[7,46,139,187,209,364],dolor:169,domain:[12,26,61,64,65,68,107,124,218,266,279,306,312,415],domain_nam:61,domest:[41,106,277,421],domin:[258,262,336],don:[11,14,66,82,103,106,121,124,169,173,211,212,213,220,228,256,266,280,315,322,338,339,342,343,352,353,357,358,359,387,396,398,403,414,415],donald:289,done:[2,29,31,116,169,177,220,228,266,280,307,331,341,414,415,416],doom:284,door:400,dormanc:127,dormant:[219,412],dot:[38,135,169,179,186,220,222,228,366,415],doubl:[4,5,101,110,144,169,222,251,256,257,258,330,338,339,349,356,359,409,414,415],double64:373,down:[2,14,22,24,33,57,112,145,170,185,197,207,216,219,220,229,234,240,246,256,258,259,262,263,277,279,284,289,306,312,337,338,358,365,371,379,398,400,403,409,412,415,417],downgrad:258,downlink:[5,106],downlinkb:106,downlinkgb:106,download:[15,19,20,26,59,82,112,113,169,173,177,211,212,213,215,218,220,225,228,230,232,233,235,239,242,243,246,254,257,261,265,268,269,275,277,278,279,283,286,292,294,306,312,315,316,317,318,322,323,330,336,339,342,345,346,347,349,352,353,358,359,360,386,394,400,421,431,443],download_zbuff1:31,download_zbuff2:31,downstream:[106,271],downward:398,dp:[90,246,259,262,263],dp_puup:259,dpi:169,dr:[261,322],draft:[364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383],drag:[169,258,361,409],drain:[22,246,337,379],draw2lcd:31,draw:[31,105,135,144,169,173,186,220,228,258,279,373],draw_al:135,draw_lower_left:135,draw_lower_right:135,draw_mask_:169,draw_mask_fade_init:169,draw_mask_fade_param_t:[31,169],draw_mask_fade_param_t_fre:31,draw_mask_line_param_t:[31,169],draw_mask_line_param_t_fre:31,draw_mask_line_points_init:169,draw_mask_line_side_top:169,draw_mask_radius_init:169,draw_mask_radius_param_t:[31,169],draw_mask_radius_param_t_fre:31,draw_upper_left:135,draw_upper_right:135,drawbox:31,drawbuttonutf8:[31,279],drawcircl:[31,186,220,228],drawdisc:31,drawdrcod:31,drawellips:31,drawfilledellips:31,drawfram:31,drawglyph:31,drawgtfontgb2312:31,drawgtfontgb2312grai:31,drawgtfontutf8:31,drawgtfontutf8grai:31,drawlin:[31,120,186,220,228,322,373],drawn:[169,417],drawpixel:31,drawpoint:31,drawqrcod:31,drawrbox:31,drawrect:[31,373],drawrectangl:[31,186,220,228],drawrfram:31,drawstr:[31,135,179,220,228,373],drawtriangl:31,drawutf8:31,drawxbm:31,drawxxx:11,drift:316,drink:[352,353,359],drive:[31,61,75,84,89,90,120,129,135,169,172,179,185,215,216,220,228,246,257,258,278,279,284,295,306,312,321,322,356,357,409,421,437,441],driven:[84,186,220,228,415,429],driver:[11,31,38,61,90,101,112,129,145,169,171,179,186,199,200,201,215,220,228,251,256,261,262,279,280,306,312,317,318,322,337,338,349,356,357,400,409,421,430,434,440],driver_usart:[356,357],drop:[22,145,170,229,246,256,258,317,318,338,398,401,412,415],dropdown:[145,170],dropdown_:169,dropdown_add_opt:169,dropdown_cr:169,dropdown_dir_left:169,dropdown_down:169,dropdown_get_selected_str:169,dropdown_open:169,dropdown_part_list:169,dropdown_part_main:169,dropdown_part_scrlbar:169,dropdown_part_select:169,dropdown_set_dir:169,dropdown_set_opt:169,dropdown_set_show_select:169,dropdown_set_symbol:169,dropdown_set_text:169,drum:169,drv:[31,198],drxcycl:106,dry:396,ds18b20:[31,82,220,349],ds18b20_temp:82,ds3231:61,ds3231_read_tim:54,ds:394,dsp:[219,331],dst:[26,82,116],dt:31,dtick64:[31,190],dtick64data:190,dtick64r:190,dtimer:[112,234,240],dtimercheck:[31,279],dtimerstart:[31,117,192],dtimerstop:[31,192],dtimerwkid:31,dtl:279,dtp:31,dtr:[226,258],dual:[38,84,106,219,261,285,296,312,322,337,406],duck:289,due:[28,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,66,69,71,72,74,75,76,77,79,80,81,83,85,86,87,88,91,93,94,95,96,107,126,241,258,263,266,279,280,284,285,292,296,312,398,400,409,414,415],dui:169,duino:221,dummi:[169,415],dump:[31,169,175],dump_luadb:326,dup:107,duplex:[75,126,199,200,201,203,204,205,206,220,228,261,308,322,381],duplic:[107,169,279,417],dupont:[258,315],durat:[2,22,76,83,106,112,118,130,133,139,169,190,209,289,372],dure:[2,22,26,28,32,41,75,84,108,115,133,136,169,181,182,183,209,215,220,228,229,263,279,284,295,306,312,321,356,357,400,409,415,418],dust:61,duti:[31,77,114,193,194,195,220,228,279,292],duty_cycl:61,duty_oneeighth:39,duty_onefifth:39,duty_onefourth:39,duty_onehalf:39,duty_oneseventh:39,duty_onesixth:39,duty_onethird:39,duty_stat:39,dvp:[4,312],dynam:[8,28,62,126,138,144,169,229,265,279,406,409,414,415],e:[2,11,22,60,98,106,126,141,169,175,187,220,226,228,263,289,321,352,353,356,359,387,394,414],ea:169,eabi:[356,357],each:[11,17,24,28,31,38,61,81,106,107,120,135,169,186,210,211,212,213,218,220,222,226,228,246,251,261,262,263,266,269,271,284,295,322,352,353,358,375,376,394,396,403,412,414,415,417],earfcn:31,earli:[106,256,262,306,312,338],earlier:[220,228,280,414,415],eas:415,ease_in:101,ease_in_out:101,ease_out:101,easi:[31,113,124,129,169,258,279,292,312,343,344,374,375,407,415,417],easier:[169,279],easili:[124,258,366,375,398,413,414,415],east:[41,65,117],eat:[279,414],ec11:61,ec11_callback:55,ec616:255,ec616_0h00:354,ec618:[0,2,17,22,101,103,106,111,117,215,268,280,281,284,286,295,315,322,323,356,358,421],ec618_lua_lod:289,ec716:323,ec718:[0,22,106,268,295,322],ec718epv:290,ec718p:[22,290,295,322,323,357,358],ec718pv:[295,323],ec7xx:[17,323,421],ecb:[8,21,279],ecdh:287,ecdsa:287,ecg:169,echo:[140,401,412],eci:31,ectool2pi:421,ed:169,eda:[229,278],edg:[4,22,38,135,144,145,170,284,306,312,322,337,400],edit:[62,82,169,175,215,216,280,292,297,309,318,323,388,390,421],editor:[218,356],eeprom:[19,28,204,205,206],ef17:[204,205,206],ef4018:[220,228],ef:[204,205,206,414],effect:[2,55,93,103,106,111,112,124,144,145,170,172,174,185,192,196,216,220,228,243,263,277,279,289,312,322,330,337,342,343,356,357,388,390,400,406,415],effect_match:279,effici:[41,169,219,220,256,258,263,279,338,395,413,417],egg:396,eight:[169,415],eighth:117,eink1:431,eink:[31,129,220,280,285,296,331,333,358,378,430],einkbook:430,either:[169,225,322,386,392,415],eiusmod:169,elaps:415,electr:[219,245,322,398,400,403],electrochem:61,electrolyt:229,electron:[177,220,228,429,431],eleg:343,element:[19,59,145,170,277,316,342,414,415],elev:41,elf:[356,357],elig:414,elimin:[22,37,256,279,415],elit:169,ellips:135,ellipsoid:41,ello:414,els:[14,16,28,29,32,41,53,55,66,67,102,105,112,126,130,169,172,173,199,200,201,211,212,213,220,221,222,228,341,342,364,368,372,375,414,415,417],elseif:[27,100,169,414,415,417],elsewher:[169,415],email:113,emb:219,embed:[169,220,251,263,289,383,395,413,414,415],emerg:106,emergency_regist:106,emit:279,emot:378,emphas:229,empti:[2,4,12,15,17,19,20,21,33,78,88,101,103,106,110,118,128,135,136,143,144,169,185,216,220,228,258,263,279,284,295,322,369,373,403,414,415],emptyselectionclipboard:218,emtri:101,emul:[101,222,261,322,395],en:[31,169],enabl:[0,2,4,11,19,22,31,37,44,75,84,112,124,126,135,136,139,141,169,177,179,185,207,216,218,222,242,246,258,259,261,265,266,279,280,283,284,292,295,322,387,388,390,398,400,403],enbid:31,encapsul:[31,129,179,186,188,189,190,204,205,206,220,228,304,340,362,370,391,414,415,417],enclos:[414,415],encod:[8,14,16,19,27,30,31,32,41,48,59,61,65,78,106,108,117,123,124,128,131,140,141,169,173,178,197,220,228,279,292,366,415],encodestr:31,encount:[33,106,118,124,136,169,218,229,263,279,292,306,365,400,414,415,417],encrypt:[20,21,26,31,34,48,62,66,68,107,124,129,140,178,245,265,270,279,287,322,383],encrypt_data:142,end:[0,2,4,5,8,9,11,12,13,14,15,16,17,19,22,24,26,27,28,29,30,32,33,37,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,102,104,105,106,107,109,110,112,113,114,115,116,119,120,121,123,124,125,126,130,131,132,134,136,140,141,143,144,169,172,173,177,179,180,181,182,183,187,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,229,246,258,262,263,266,271,279,280,284,287,295,320,326,330,337,340,342,356,357,360,361,364,372,375,379,381,382,383,385,387,388,390,398,400,409,412,414,415,416,417,418],end_angl:169,endian:[30,61,110,124,126,136,137,144,415],endif:[169,222,342],endless:369,endpoint:[62,263],endswith:31,endur:219,energi:[75,112,172,219,263],engin:[169,257,259,334,395,414,429,431],english:[34,82,135,169,193,194,195,204,205,206,218,279,283,322,323,358,365,403],enhanc:[132,251,261,263,322],enim:169,enjoi:413,enlarg:[2,136,169],enodeb:106,enough:[6,14,28,106,116,124,126,136,137,169,220,228,271,307,331,352,374,414,415],ensur:[12,28,126,169,220,228,229,246,263,266,280,307,331,356,409,412,415],ent:31,enter:[2,6,11,14,30,33,72,81,82,103,106,112,115,118,143,169,173,192,215,221,222,226,229,234,240,243,263,268,269,277,284,292,295,306,307,312,317,322,330,339,348,349,352,353,356,359,363,365,376,377,384,394,396,400,409,412,414,415,417],enterpris:[62,169,420],enthusiasm:415,entir:[15,19,32,97,122,143,144,169,185,209,216,229,246,271,280,285,296,343,414,415],entireti:415,entiti:[32,92,363,376,384],entranc:229,entri:[99,100,101,175,220,350,369,414],entries_can:415,enumer:[32,169,259,262,279,284,415],enuserid:62,env:[15,175,180,355],environ:[64,103,106,175,216,217,220,225,232,257,258,261,279,316,322,336,339,351,356,357,358,391,395,412],environment:172,envisag:[362,374],eoc:263,eof:115,eol:395,ep:106,ep_ctr_rx:263,ep_ctr_tx:263,ep_id:263,epat:279,ephemer:277,ephemeri:[283,319,322],epindex:263,epoch:415,epv:292,eq:415,equal:[19,38,103,135,144,169,220,228,259,262,414,415],equip:[0,29,34,38,48,95,96,103,138,145,148,156,159,165,170,203,205,219,220,228,258,263,268,269,276,277,278,306,316,322,383,396,398,400,403,406,407,409],equival:[10,11,13,15,19,84,104,106,111,118,136,144,258,365,374,392,414,415,417],eras:[15,19,31,185,199,200,201,207,216,256,261,279,322,394,412],erasetimeout:263,erasewrit:31,ercoap:279,erp:[277,358],err:[2,14,36,173,375],err_:342,err_fail:342,errdump:[31,129,279,292,297],errio:32,errno:415,error:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,175,177,180,181,182,183,187,199,200,201,204,205,206,220,225,228,261,263,278,279,292,320,322,323,341,342,343,356,381,382,394,396,403,417],error_cod:[28,126],error_drop:31,error_handl:222,errstop:31,es7149:29,es8311:279,esc:307,escap:[128,415],esd:[229,231,236,258,267],esp32:[103,111,141,306,307,309,312,313,322,342,388,390,395],esp32_download:394,esp32c2:[115,333,359],esp32c3:[82,115,215,304,307,310,322,333,348,358,359,421,430,441],esp32c3_lua_lod:215,esp32s2:115,esp32s3:[215,314,315,322,358,359],esp32s3_lua_lod:215,esp:[111,112,315,359],especi:[126,271,279,283,289,322,342,415],espefus:306,esphttp:375,esphttp_evt:375,espressif:359,esptool:306,esptouch:[141,265],esptouch_v2:141,ess:[28,169],essenc:347,essenti:[169,321,342,370],est:169,establish:[107,124,140,141,352,353,417],estim:[320,358],et:169,etc:[0,22,99,100,111,112,126,136,143,144,169,229,263,266,279,304,343,349,358,365,386,396,403,414,415,417],eth0:[20,107,124,131,138],ethernet:[31,106,124,129,279,331],eu:169,ev:415,evalu:[31,129,320,415],evb:[236,267],evb_air601:267,even:[6,112,136,169,178,277,370,378,382,396,403,414,415],event:[2,29,31,41,48,68,100,101,107,112,124,130,131,137,140,145,170,185,210,214,216,220,228,261,277,279,322,363,376,383,384,387,415,416,417,418],event_appli:169,event_cancel:169,event_click:169,event_delet:169,event_handl:169,event_insert:169,event_long_press:169,event_long_pressed_repeat:169,event_on_data:375,event_press:[101,169],event_press_lost:169,event_releas:169,event_send:31,event_short_click:169,event_value_chang:169,eventu:82,everi:[12,22,82,169,256,263,277,316,317,338,350,352,353,359,372,414,415,416,420],everyon:[169,179,258,289,419],everyth:[169,356,357,414,415],evok:418,evt:[61,383],evt_ap_associ:383,evt_ap_disassoci:383,evt_ap_start:383,evt_ap_stop:383,evt_readi:383,evt_scan_don:383,evt_scan_report:383,evt_sta_connect:383,evt_sta_connected_fail:383,evt_sta_disconnect:383,ex:[113,169,173,215,220,326,330,339,356,361,394,409,415],exact:415,exactli:[133,318,343,400,409,415],examin:415,exampl:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,173,178,180,186,215,217,220,221,222,228,256,259,262,263,266,271,277,280,284,295,306,307,317,318,321,330,338,341,342,343,349,350,352,353,357,359,362,372,373,375,378,387,391,394,398,403,412,414,415,416,417,418,424,427,429,431,434,437,440,443],example_gnss:[317,318],example_h:222,example_l:222,exce:[17,38,103,106,109,116,118,133,135,136,137,144,177,220,228,229,261,279,280,281,292,322,415,417,418],exceed:[220,228,246,283,322,398,403,412],except:[6,8,12,17,26,68,106,112,124,169,220,228,261,273,279,292,306,322,387,412,414,415],excepteur:169,excerpt:417,excess:[409,414,415],exchang:[409,414],exclud:[38,169],exclus:[7,75,255,266,275,415],exec:127,execut:[2,7,15,19,22,33,59,65,75,82,94,108,112,124,127,130,133,144,175,177,204,205,206,208,209,263,266,279,292,307,326,330,341,342,343,349,352,353,357,360,361,364,365,369,372,387,409,414,417,418],exercis:414,exercit:169,exist:[3,15,19,27,30,31,36,41,59,111,144,169,180,199,200,201,216,220,228,234,240,263,266,279,284,341,347,348,352,353,356,359,363,366,369,373,376,384,387,391,398,400,414,415,417],exit:[12,68,106,132,169,175,215,266,307,326,357,364,365,370,414,417],exit_failur:415,exit_success:415,exp1:415,exp2:415,exp:175,expand:[6,124,136,137,144,169,258,266,343,352,353,409,415],expans:[144,216,251,279,280,283,312,322,342,359,388,390,415],expect:[169,220,228,263,366,388,390,415],expens:[316,320,412],experi:[169,341,365],experienc:400,experiment:415,expir:372,explain:[356,357,388,389,403,415,417],explan:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,220,228,283,322,387,415],explicit:[415,417],explicitli:[169,387,415],explist:415,explor:[218,415],expon:415,exponenti:[105,415],expos:[169,340,362],exposit:108,exposur:416,expr:222,express:[37,110,172,175,363,376,384,414],exquisit:306,ext:[169,316,365],extend:[21,24,31,35,72,129,231,236,267,279,317,318,363,376,384,388,390,415],extens:[61,107,378,395,414,415,418],extent:414,extern:[2,17,33,35,41,82,101,103,106,112,124,131,144,145,170,172,177,198,222,225,229,232,246,251,256,257,258,259,261,262,276,277,278,280,284,289,292,295,304,310,322,362,365,367,379,380,381,382,386,412,414,415,416,417,421],exti:31,extinguish:[193,194,195],extra:[6,23,59,131,135,169,372,415],extra_param:386,extract:[124,169,220,228,263,414],extramsg:415,extranet:124,extrem:[106,112,220,270,289,360],f01122334455:141,f103:[261,262],f1:[169,175,289],f2:175,f32:144,f5:[31,61],f64:144,f:[11,29,32,36,110,119,144,175,220,228,289,326,357,387,391,414],face:219,facil:[363,376,384,415],facilit:[108,412,414,415,419],fact:[169,179,220,228,278,379,414],factor:[41,169,316,415],factor_:415,factor_of:415,factori:[106,229,256,257,269,277,306,312,315,331,338],fade:[31,169],fail:[0,1,2,3,4,5,6,8,14,18,21,26,28,30,32,36,40,43,48,49,50,53,64,78,85,92,101,102,103,105,106,107,112,113,115,116,120,124,126,128,131,136,141,144,173,199,200,201,215,261,265,266,279,292,306,312,322,341,343,352,353,359,368,372,383,415,418],failur:[1,2,4,5,6,10,14,17,20,26,30,31,32,36,42,51,57,66,67,68,77,93,106,107,108,114,120,121,124,129,131,134,135,136,142,143,144,263,277,279,292,343,356,358,383,387,415],fake:[258,279,400],fal:[15,180],fall:[22,33,284,398,415],fals:[2,3,4,5,6,8,9,11,12,14,15,17,18,19,21,22,23,25,27,28,32,33,34,35,38,39,41,48,57,59,64,68,72,76,78,82,93,99,100,101,102,103,105,106,107,109,112,114,115,116,117,119,120,121,122,123,124,126,128,130,132,134,135,137,139,140,141,143,144,169,180,199,200,201,211,212,213,215,218,284,291,295,341,409,412,414,415,417,418],famili:[204,205,206],familiar:[103,185,216,342,352,353,419],faq:[225,261,314,322,396],far:[246,395,414],fast:[13,28,42,44,45,47,49,51,53,54,56,60,63,69,70,74,78,79,80,83,86,87,91,104,116,169,181,182,183,219,220,228,246,261,289,315,322,337,396,398,403,406,412],faster:[169,218,258,280,406],fastest:229,fastlz:[31,129,279,342],fat32:391,fatal:[98,279,356,415],fatf:[31,119,129,173,279,292,367,391],fault:[71,106,261,322],favorit:221,fb803786602df760:34,fbd:180,fd:32,fdb:[19,31,121,129,185,216,279,322,333],fdb_kv_set_blob:15,fdd:276,fdev:[99,100],feasibl:280,featur:[106,115,169,178,179,192,197,198,203,210,220,228,231,236,246,253,258,259,267,277,279,280,285,296,322,362,363,376,384,387,409,415],feature_xxx:387,februari:169,fed:279,feed:[31,46,115,169,187,209,269,317,364,400,414,415],feed_dog:61,feedback:[26,115,169,287,407],feel:[169,362,414],feet:[39,112,229,273,294,322,331],feichuang:275,feishu:279,felt:414,feng:415,feof:370,ferror:370,fetch:[279,373,415],few:[108,169,220,228,258,268,271,321,322,331,340,400,414,415],ff0000:169,ff00ff:169,ff:169,ffffffff:[386,394],ffmpeg:173,fft:322,fg_color:31,fi:[270,421],field:[39,78,106,169,172,263,374,388,390,415],fieldlist:415,fieldsep:415,fifo:[261,322,337,417],fifth:[48,64,414,415],figueiredo:415,figur:[7,204,205,206,210,220,221,222,228,246,256,257,258,263,266,278,338,398,400,409,414],file:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,174,175,185,202,204,205,206,215,216,218,219,220,221,225,228,232,237,245,255,256,258,263,268,275,277,279,280,281,286,297,307,310,317,318,322,323,328,330,331,338,339,344,347,349,350,352,353,356,357,358,361,362,363,364,366,370,373,376,378,384,386,388,389,390,394,400,409,416,430],file_cnt:173,file_don:143,file_no:2,file_path:[31,61],file_s:173,file_tld:[388,389],file_tld_t:385,filenam:175,files:31,filesystem:370,fill:[0,2,9,19,20,21,22,25,28,31,34,37,48,49,64,65,66,78,79,82,99,106,107,120,124,125,126,135,136,137,169,173,261,266,279,284,286,295,322,341,369,373,387,394,414,415],film:[75,271,284,315,398],filter:[61,104,112,145,170,229,246,261,279,322,415],filter_match:104,fin:31,find:[14,124,169,173,175,199,200,201,215,218,220,222,228,237,256,258,266,295,315,322,338,341,342,394,400,403,417],finder:415,fine:[33,136,306],finish:[2,31,127,220,345,348,415],fint2:169,fire:415,firmwar:[0,7,8,11,16,31,38,41,73,75,103,106,110,111,112,115,121,124,128,129,141,169,216,217,228,229,230,233,235,239,242,243,246,254,256,257,261,263,268,274,276,277,281,283,286,287,290,291,294,298,306,307,312,314,318,319,322,323,333,338,341,342,344,350,351,356,357,358,385,388,389,390,391,394,396,403,416],firmware_nam:266,firmware_upgrad:266,first:[2,11,14,19,22,27,32,38,39,41,59,64,103,106,107,108,110,112,120,124,130,135,144,152,169,172,173,177,181,182,183,188,189,190,204,205,206,215,220,226,228,229,246,256,258,261,262,266,271,277,279,280,284,292,293,297,307,312,316,317,318,322,330,341,342,343,357,359,374,380,385,387,392,396,398,403,412,415,416,417,418,429],first_exp_until:415,first_y_that:415,firsttck:190,firsttick:190,fit2:169,fit4:169,fit:[145,170,219,352,353,413],fit_:169,fit_max:169,fit_non:169,fit_par:169,fit_tight:169,five:[144,169,312,415],fix:[9,13,14,17,22,37,41,106,125,131,169,211,212,213,246,258,263,265,279,284,292,305,308,316,323,341,359,366,369,374,387,388,389,391,396,398,401,403,415,427],fix_qual:41,fix_typ:41,fixlen:[99,100],fixtur:229,fl:[386,394],flaaap:415,flag1:31,flag2:31,flag:[31,61,68,78,143,187,261,279,322,383,394,414],flah:[220,228],flash:[6,16,17,19,31,76,103,126,129,145,170,180,185,198,202,203,207,215,216,217,221,222,226,232,242,246,251,256,257,258,261,262,269,270,279,280,285,289,290,292,296,304,310,312,322,331,333,337,338,349,358,367,391,394,395],flash_c:306,flash_ck:306,flash_d0:306,flash_d1:306,flash_eraseoptionbyt:[261,322],flash_spi_mast:263,flash_spi_rx_dma_channel:263,flash_spi_tx_dma_channel:263,flash_waitforlastoper:263,flashdb:[15,180,331],flasher:307,flashtool:286,flat:289,flex:169,flexibl:[124,169,262,266,337,414,417],flicker:[145,170],flight:[76,106,112,169,277],flip:[38,262,284,398,403,415],float32:373,floor:[175,297],flow:[81,306,319,322,417],flower:279,fluctuat:[124,133],fluenci:409,flush:[11,31,175,391],fly:[169,220,279,331],flymcu:263,flymod:[31,76],fmod:175,fmt:[31,175],fn:[31,415],fname:415,fnc:31,focal:424,focu:[145,170,277],focus:[145,170],fold:31,folder1:169,folder:[32,143,215,218,220,222,228,256,266,279,307,322,328,330,338,342,352,353,360,361,363,376,384,387,391,416],follow:[0,13,16,17,19,22,28,32,41,59,64,66,67,78,82,84,103,106,107,108,110,111,115,116,124,132,135,141,144,169,172,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,218,220,225,228,229,246,256,257,258,262,263,266,269,271,277,279,280,284,285,287,292,295,296,297,306,312,317,318,322,330,338,339,341,343,349,352,353,356,357,359,360,361,369,370,374,375,378,387,388,390,392,398,400,403,409,414,415,416,417],following_keywords_ar:415,font:[31,129,145,170,179,186,220,228,265,279,350,426,431],font_32:101,font_:38,font_data:378,font_data_count:378,font_fre:31,font_get:[31,169],font_info:169,font_load:[31,169],font_map:378,font_open_iconic_weather_6x_t:[11,38],font_opposansm10:135,font_opposansm10_chines:11,font_opposansm12:[11,38,135],font_opposansm12_chines:[11,38,135,358],font_opposansm14_chines:[11,38],font_opposansm16:[11,38,135],font_opposansm16_chines:[11,38,135,220,228],font_opposansm18:[11,38,135],font_opposansm18_chines:[11,38],font_opposansm20:[11,38,135],font_opposansm20_chines:[11,38],font_opposansm22:[11,38,135],font_opposansm22_chines:[11,38],font_opposansm24:[11,38],font_opposansm24_chines:[11,38,135],font_opposansm32:[11,38,135],font_opposansm32_chines:[11,38,135],font_opposansm8:135,font_opposansm8_chines:11,font_unifont_t_symbol:[11,38,135],font_w:378,font_xxx:38,fontfamili:218,fontnam:169,foo:[415,417],foot:[99,126,138,229,279,295,306],footprint:[4,118,169,342,409,413],fopen:370,forc:[3,31,59,68,118,124,141,144,169,175,277,279,387,398,400,403,412],force_all_raw_block:104,force_all_static_block:104,force_br:386,force_level:31,forcibl:[143,279],fore:31,foreground:[38,169],foreign:421,forese:103,forev:[132,415],foreword:[145,171,174,261,322],forget:[169,220,228,266],form:[5,6,26,33,38,48,59,64,66,67,111,136,137,140,141,144,145,170,286,342,365,370,374,388,390,392,414,415,418],form_g:115,formal:[169,415],formaldehyd:61,format:[2,3,6,8,21,30,31,32,36,41,53,90,96,106,108,115,116,118,123,124,129,137,145,170,175,180,181,182,183,199,200,201,220,251,255,278,279,280,283,317,322,365,374,387,388,389,390,391,394,417],format_len:386,formatstr:[175,414],former:365,formula:[181,182,183,220,228,414],forth:169,forum:169,forward:[41,59,144,415],fota:[26,31,59,61,129,265,268,270,279,280,283,286,292,297,322,421],fota_cb:280,fotademo:280,fotademo_luato:266,fotadon:17,found:[8,15,27,177,180,198,203,204,205,206,208,210,211,212,213,215,220,228,263,269,280,284,292,295,323,342,345,347,352,353,356,359,396,414,415,417,418],foundat:[145,170,217],four:[38,41,75,135,169,181,182,183,204,205,206,258,263,266,271,280,396,400,403,412,414,415],fourth:[64,181,182,183,414,415,417],fpc:424,fps16hz:105,fps1hz:105,fps2hz:105,fps32hz:105,fps4hz:105,fps64hz:105,fps8hz:105,fraction:[7,169,415],fragment:[17,123,124,128,415],frame:[72,75,105,135,140,220,228,279,373,415],framebit:31,framebuff:[38,144,169,373],frametab:75,framework:[131,175,217,383,395,409,415],fread:370,free:[14,31,38,169,229,258,266,277,279,342,358,366,409,415],free_count:368,free_kb:14,free_sector:14,freed:[279,292,415],freeli:[219,398,409,412,415],freerto:[263,322,362,368,369,417],freertosconfig:263,freestrong:383,freez:279,freq:[31,61],freqhopon:[99,100],frequenc:[2,6,7,9,14,38,75,77,84,89,99,100,103,106,114,120,122,169,172,173,185,191,193,194,195,216,219,220,228,229,232,237,245,246,258,261,262,263,270,271,278,289,308,310,312,317,320,322,336,337,380,381,393],frequent:[106,210,211,212,213,220,228,356,357],fresh_rat:31,frexp:415,friend:[307,430],friendli:[40,220,369,395,415],from:[0,2,6,9,11,16,17,21,22,28,32,33,38,41,59,66,75,101,106,107,112,113,115,119,120,122,123,124,126,130,135,136,140,144,145,170,177,178,187,193,194,195,211,212,213,215,219,225,228,229,234,240,246,251,255,258,261,262,265,271,277,279,284,285,289,292,295,296,316,317,318,320,322,328,331,337,339,341,342,344,356,357,359,360,361,364,365,366,370,373,374,378,385,391,394,396,398,403,409,414,415,416,417,418],frombase32:31,frombase64:[8,31],fromcod:31,fromhex:[9,31,116,138,141,279,392],fromidx:415,front:[22,169,271,381,400,414,415],fruit:169,fs:[31,32,122,129,173,199,200,201,220,228,292,297,326,386,391],fs_addr:386,fseek:370,fsize:[31,32,173,220,228],fskv:[15,31,121,129,279,292,297],fsr:61,fsstat:[31,122,199,200,201,220,228],ftp:[31,129,279,285,287,292,296,297],ftp_login:20,fugiat:169,full:[12,29,31,33,68,75,108,124,126,135,136,169,175,185,202,203,207,214,215,216,217,220,221,228,251,255,258,261,265,277,279,280,292,308,312,322,339,351,360,361,372,378,381,387,388,390,391,421,429],fullclean:[342,359],fulli:[169,219,220,228,246,251,279,292,349,387,396,406,407,412,415],fun:[31,383,417],func:[31,220,228,374,415],funcbodi:415,funcindex1:415,funcindex2:415,funcindex:415,funclist:414,funcnam:175,function_:415,function_given:415,functioncal:415,functiondef:415,functionon:414,functions_:415,fundament:289,funni:417,further:[169,401],fuse:306,futil:[352,353,359],futur:[103,130,281,292,367,386,415],fuzzi:349,g0:289,g:[31,36,75,87,126,169,220,228,263,270,289,321,352,353,356,357,387,414,415,416],ga:95,galileo:[219,317],gap:[75,135,415],garbag:175,garbl:[242,322,330],gatewai:[31,124,383],gaug:[145,170],gauge1:169,gauge_cr:169,gauge_part_main:169,gauge_part_major:169,gauge_part_needl:169,gauge_set_angle_offset:169,gauge_set_critical_valu:169,gauge_set_needle_count:169,gauge_set_needle_img:169,gauge_set_rang:169,gauge_set_scal:169,gauge_set_valu:169,gb2312:[30,38,135,378],gb:106,gbk:279,gbr:172,gc032a:[293,331,431],gc032a_initreg:4,gc9106l:38,gc9306:[228,279,331,440],gc9306x:38,gc9a01:38,gc:[144,279],gcc:[339,356,357,360],gcc_mcu:356,gcc_path:356,gcj02:[41,65,277],gcm:287,gdma:312,gear:[61,396,401,403,409],gener:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,188,189,198,220,222,228,246,251,256,261,266,269,280,286,289,295,304,312,316,318,322,328,331,337,339,342,343,352,353,357,359,360,361,362,364,365,366,369,375,378,381,387,394,403,412,414,415],genrsa:116,genuin:[263,306],geomagnet:61,gestur:219,get:[1,2,5,8,11,13,14,15,16,17,18,20,24,26,27,29,31,32,38,40,41,42,43,44,45,47,48,51,52,53,58,59,61,63,66,67,69,70,73,74,75,80,83,86,87,91,95,98,101,103,104,105,106,108,118,120,122,124,131,135,136,141,144,145,170,173,175,178,180,185,191,197,199,200,201,215,216,220,222,232,258,263,268,279,312,322,341,342,343,352,353,358,360,366,368,369,370,373,375,379,383,387,395,398,414,415],get_accel:61,get_cell_period:31,get_data:61,get_device_t:122,get_gyro:61,get_int_sourc:61,get_left_valu:169,get_lux:61,get_mag:61,get_numb:131,get_pressed_d:169,get_rgb:61,get_select:169,get_selected_str:169,get_stat:169,get_temp:61,get_temperatur:61,get_text:169,get_val:61,get_vdd:31,get_xxx:169,getaht10data:[181,182,183],getapinfo:383,getapnet:383,getband:31,getc:370,getcellinfo:[31,131],getclk:[31,188,189,190],getdevic:31,getdevicenum:[31,220,228],getdevicet:[31,199,200,201,220,228],getdisplayheight:31,getdisplaywidth:31,getenv:175,geterror:31,getfre:[31,173],getgga:31,getgll:31,getgsa:31,getgsv:31,gethook:175,getinfo:[31,175,383],getintloc:[31,279],getip:31,getjionapinfo:383,getlevel:[31,187],getloc:175,getloccb:64,getmac:31,getmetat:175,getnumberlist:414,getpara:31,getpm_10:61,getpm_1:61,getpm_2_5:61,getppb:61,getppm:61,getpw:383,getraw:31,getregistri:175,getrmc:31,getrssi:383,getsiz:31,getstanet:383,gettable_ev:415,gettxt:31,getupvalu:175,getuservalu:175,getvtg:31,getwin:31,getzda:31,gga:41,gif:31,gif_creat:31,gif_restart:31,gift:304,girlfriend:172,git:[279,341,342,344,350,352,353,354,355,356,357,359,360,384],gite:[12,38,82,215,222,233,239,255,256,265,280,285,289,296,316,329,342,350,351,352,353,355,356,357,359,387,388,390,391,422,430,432,435,438],github:[113,142,180,199,200,201,221,258,339,354,356,357,359,387,391],github_mirror:357,gitignor:350,gitxxx:348,give:[6,106,124,169,175,229,287,321,341,357,369,400,414],given:[84,111,169,220,228,280,343,385,414,415],glb:415,gll:41,global:[115,130,132,169,175,263,341,342,368,370,409],globalsign:62,glonass:[219,317,318],glossari:[363,376,384],glow:[193,194,195],glu:169,glue:[145,170],glyph:169,gmatch:[175,414],gmssl:[31,129,279],gmtime:415,gnd:[43,75,93,177,181,182,183,193,194,195,199,200,201,204,205,206,210,211,212,213,226,228,246,258,271,306,312,315],gnss:[41,131,219,279,283,284,285,292,294,316,317,318,320,321,322,421],gnss_state:[41,279,292],go:[0,11,81,169,215,220,234,240,251,258,282,293,306,312,343,365,396,400,403,412,414,415,417,442],goal:[19,28,363,376,384],god:[220,228,258,417],goe:[169,364],gold:258,gone:415,good:[218,229,246,258,266,277,279,316,322,358,414,415],goodgoodstudi:[15,19],googl:[169,400],got:130,govern:[258,415],gp:[41,82,112,219,277,284,285,294,316,317,318,322],gpio00:312,gpio02:306,gpio03:[306,312],gpio04:[306,312],gpio05:[306,312],gpio06:[306,312],gpio07:[306,312],gpio08:[306,312],gpio09:[306,312],gpio0:[93,276,277,278,295,306,312],gpio10:[136,246,253,277,278,284,295,306,312],gpio11:[253,278,284,295,310,312,322,430],gpio12:[103,111,253,284,295,306,312],gpio12cbfnc:284,gpio13:[103,253,277,284,295,306,312],gpio14:[253,279,284,295,306,312],gpio15:[253,279,284,295,306,312],gpio16:[22,103,246,253,284,292,306,312],gpio17:[22,103,120,246,253,291,292,306,312],gpio18:[22,199,204,205,246,253,279,284,295,306,312],gpio19:[199,204,205,246,253,279,284,295,306,312],gpio1:[76,93,181,182,253,284,295,306,312],gpio20:[199,204,205,246,284,306],gpio21:[199,204,205,246,253,276,306],gpio22:[82,211,212],gpio23:[211,212,253,277,284,291],gpio24:[284,295],gpio25:[2,284,295],gpio27:[22,82,276,277,278,284,295],gpio28:246,gpio29:[246,284],gpio2:[246,253,284,312],gpio30:[246,284],gpio31:246,gpio32:[213,246],gpio33:[213,246,312],gpio34:295,gpio35:[246,295],gpio36:[246,295],gpio37:[246,295],gpio38:[246,295],gpio39:246,gpio3:[25,253],gpio3uart0_rt:246,gpio40:246,gpio41:246,gpio44:[200,201,206,246],gpio45:[200,201,206,246],gpio46:[103,200,201,206,246],gpio47:[200,201,206,246,312],gpio48:312,gpio49:246,gpio4:[25,76,103,106,181,182,253,284,295],gpio50:246,gpio51:246,gpio54:246,gpio55:246,gpio56:246,gpio57:246,gpio58:246,gpio59:246,gpio5:[25,103,246,253],gpio60:246,gpio61:246,gpio62:246,gpio63:246,gpio64:246,gpio65:246,gpio66:246,gpio67:246,gpio6:[55,103,246],gpio70:[183,246],gpio71:[183,246],gpio72:246,gpio73:246,gpio74:246,gpio75:246,gpio7:[22,55,103,246,253],gpio8:[246,253,284,295],gpio9:[246,253,284,295,306],gpio:[14,24,25,28,31,33,35,55,72,75,76,78,82,93,99,103,111,112,120,121,127,129,135,136,172,173,185,206,207,215,216,217,231,232,234,236,238,240,241,246,253,256,261,262,267,270,273,276,277,278,279,280,283,285,292,294,296,297,304,306,312,321,322,333,337,338,350,369,370,371,376,377,380,384],gpio_01:236,gpio_02:236,gpio_03:236,gpio_04:236,gpio_05:236,gpio_06:236,gpio_07:236,gpio_08:236,gpio_09:236,gpio_0:387,gpio_10:236,gpio_11:236,gpio_12:236,gpio_13:236,gpio_14:236,gpio_15:236,gpio_16:236,gpio_17:236,gpio_18:236,gpio_19:236,gpio_20:236,gpio_21:236,gpio_22:[220,228,236],gpio_23:[220,228,236],gpio_24:[220,228,236],gpio_25:[220,228,236],gpio_26:[220,228,236],gpio_27:[220,228,236],gpio_28:236,gpio_29:236,gpio_30:236,gpio_31:236,gpio_32:236,gpio_33:236,gpio_34:236,gpio_37:236,gpio_38:236,gpio_40:236,gpio_41:236,gpio_42:236,gpio_43:236,gpio_a:61,gpio_b:61,gpio_fal:379,gpio_forcepullupconfig:259,gpio_forcepupdcmd:259,gpio_init:338,gpio_inittypedef:222,gpio_invbit:338,gpio_irq_count:22,gpio_l:222,gpio_mode_output_pp:222,gpio_pin_0:222,gpio_pin_8:259,gpio_pin_9:259,gpio_pinremapconfig:263,gpio_remap_swj_jtagdis:263,gpio_remap_swjjtagdis:263,gpio_ris:379,gpio_rising_fal:379,gpio_set:127,gpiob:[222,259],gpiod:338,gpiox:271,gpr:[76,124],gps_ant:[112,277],gps_uart_id:277,gptxt:41,gpu:169,grab:[400,409],grad_dir_v:169,grade:[124,280],gradient:169,gradual:[228,280],graffiti:[34,61,279],grai:[31,169,366],gram:414,grammar:[217,331,415],grammat:415,grandpar:169,grant:415,granular:[199,200,201],grape:169,graph:[169,415],graphic:[31,129,169,220,228,344,357],grayscal:[38,169],great:258,greater:[35,72,92,103,104,106,118,130,135,144,228,372,398,403,414,415],greatli:[169,258,279,395,409],greedi:104,greedy_parsing_flag:104,green:[38,257],grid16:89,grid1:89,grid:[61,169],ground:[41,75,220,228,246,263,271,297,306,312,396],group:[1,33,169,220,222,226,233,239,251,255,256,263,338,370,388,390,400,403,407,412,415,430],grow:[169,415],gsa:41,gsm:76,gsub:175,gsv:41,gt5slcd1e:23,gt5sucd2:426,gt911:61,gt911_i2c:61,gt911_int:61,gt911_re:61,gt911callback:56,gtfont:[31,38,129,135,279,333],guangdong:169,guarante:[64,75,118,280,306,316,337,415],guest:417,gui:[169,344],guid:[218,241,259,263,307,350,388,390],guidelin:415,gw:141,gy53l1:61,gyro:74,gyroscop:[61,74],gz:[27,415],h01:[277,317],h10:[277,317],h11:317,h:[28,31,41,49,108,110,120,144,169,173,179,186,220,222,228,263,331,338,341,342,352,353,356,357,359,362,392,394,414,415],ha:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,68,75,81,90,92,97,99,100,101,103,106,107,108,109,111,112,113,114,116,117,118,119,120,122,123,124,126,127,128,131,135,136,137,138,139,140,141,144,169,172,177,178,186,193,194,195,198,204,205,206,211,212,213,219,220,228,229,246,255,256,257,261,262,263,266,269,270,275,277,279,284,289,290,295,306,312,318,320,321,322,323,331,338,340,341,342,347,352,353,373,383,388,390,391,394,398,400,406,409,412,414,415,417],habit:[387,415],had:[173,415],hal:[225,262,322,370],hal_cortex_module_en:222,hal_delai:222,hal_flash_module_en:222,hal_gpio_init:222,hal_gpio_module_en:222,hal_gpio_togglepin:222,hal_inctick:222,hal_init:222,hal_ll:222,hal_module_en:222,hal_mspinit:263,hal_pwr_module_en:222,hal_rcc_module_en:222,half:[38,116,126,135,169,199,200,201,204,205,206,220,228,256,277,289,378,381,413,414],hall:337,halt:61,hand:[221,306,312,349,375,396,407,412,415],handheld:396,handl:[30,32,71,103,133,136,143,145,170,175,219,266,279,308,337,343,375,416],handler:[31,48,169,343,363,369,376,383,384,415,417],handler_on:415,handler_to:415,handshak:[68,124,279],hang:[5,31,129,263],hangup:31,hanlder:369,happen:[133,169,415],happi:7,happili:[388,390],hard:[7,133,185,216,251,409],hardfault:[31,279,292],hardfault_handl:[222,263],hardwar:[0,2,4,21,22,25,28,31,33,38,73,75,81,84,103,109,112,118,124,126,129,134,135,136,138,144,169,172,184,185,191,196,202,207,214,216,225,232,237,245,250,254,255,261,262,268,270,274,277,279,283,284,294,295,302,304,310,314,319,320,322,331,336,337,363,370,372,376,384,391,400,424,427,429,431,434,437,440,443],harmless:344,has_more_input:104,has_n_el:415,hash:[21,31,129,178,279],hash_finish:31,hash_init:31,hash_upd:31,hashjeremi:430,hashresult:8,have:[6,10,11,33,38,57,81,82,99,106,110,111,112,115,124,135,136,138,141,144,169,193,194,195,199,200,201,218,220,256,258,262,263,276,277,279,284,285,296,306,307,312,316,317,321,322,338,341,342,349,356,357,358,359,370,391,392,393,394,395,396,412,414,415,416,419],haven:[82,172],hclk:259,hcode:31,hd8128:291,hd:11,hdiv_num:169,hdop:41,he:[225,228,414,420,429],head:[32,41,75,80,128,144,365,373,385,396,398,403,412,415,417],headach:82,header:[27,31,59,104,169,199,200,201,225,265,271,279,292,322,341,342,343,362,375,385,415,417],header_tld:[388,389],header_tld_t:385,headingdegre:80,heap:[38,279,368],heap_4:368,heap_auto:[5,144],heap_psram:144,heap_sram:144,heard:279,heart:[31,129,219],heartbeat:[62,107,124,140,279,372],hebrew:169,hecheng:277,heet:378,height:[4,31,38,41,101,135,145,170,366,414],held:[169,407,412],hello:[142,217,218,221,289,414,415],helloworld:[145,170,330],help:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,220,228,259,263,277,349,357,358,388,390,412],helper:415,henc:415,henriqu:415,here:[0,6,12,17,41,64,112,116,124,131,141,169,172,173,186,199,200,201,204,205,206,215,218,220,221,222,228,256,271,277,280,307,322,338,341,342,343,352,353,356,357,358,360,369,370,373,376,388,389,390,398,400,403,407,409,414,415,416,417,418,427],here_x_and_y_ar:415,here_x_cannot:415,here_x_i:415,herebi:279,heshou:421,heshuo:239,heszhou:266,heterogen:[219,415],hex:[8,13,21,31,103,104,116,135,141,178,210,232,233,258,263,385,388,389,394],hexadecim:[37,64,103,136,141,169,185,191,216,388,389,394,414,415],hexstr:[31,392],hezhou:[246,265],hfashfp9qw38hrfaio:[13,104],hfiuoaghfluaeisw:[13,104],hi:[12,121,198,211,212,213,339,360,361,416],hib:[112,192,277,279,371],hibern:[7,112,292],hid:[137,258,285,296],hid_mod:31,hid_rx:31,hid_tx:31,hidden:[141,169,231,236,267,383],hide:[141,145,170,265],hierarchi:415,high:[2,5,11,22,28,33,38,41,52,75,84,103,112,126,127,172,177,181,182,183,185,187,191,193,194,195,197,203,204,205,206,216,219,220,221,222,228,229,231,236,246,251,258,261,262,263,267,271,279,284,295,304,306,312,315,316,320,322,331,337,352,353,371,373,379,381,382,396,398,401,403,406,409,415],high_irq:22,higher:[0,6,7,13,19,59,169,220,228,229,258,263,316,320,406,407,415],highest:[4,7,14,105,107,138,169,220,228,251,263,271,278,285,304,306,317,318,322,396,413],highli:342,highlight:[145,170,342],highlighted_d:169,highlighted_dai:169,highlighted_days1:169,highlighted_days2:169,highlighted_days3:169,himself:31,hint:[17,415],histor:[41,65,266,279,323],histori:[82,118,283,322,325],hit:169,hizhou:[226,233,239,262,323,331,337,420],hmac:[21,31,178],hmac_md5:[31,178],hmac_sha1:[31,178],hmac_sha256:[31,178],hmac_sha512:[31,178],hmacmd5:34,hmacsha1:34,hmacsha256:34,hmeta:[31,129],hold:[1,112,169,215,234,240,256,400,403,409,412,414,415],hole:[169,229,246,306,312,398,403],hollow:135,home:415,homepag:[22,82,295,409],hook:175,hope:[343,412],hopperiod:[99,100],hor:169,hor_fit_typ:169,hor_r:169,horizont:[38,41,169,415],horn:2,host:[31,61,62,126,181,182,183,203,220,228,263,271,279,284,285,295,296,312,364,366,374,415],hostnam:31,hot:[220,228,277,315,383,429],hotspot:[265,383],hour:[12,28,41,64,78,82,108,112,117,197,220,277,316,317,318,403,409,415],hour_offset:41,hous:396,how:[2,6,24,33,107,113,120,128,136,148,156,159,165,169,180,181,182,183,185,186,187,188,189,190,193,194,195,199,200,201,204,205,206,209,211,212,213,215,220,228,229,243,256,258,266,268,277,307,315,322,338,341,357,359,362,363,366,376,384,396,414,415,416,417,421],howev:[112,169,220,228,229,266,295,320,400,409,414,415],hozhou:66,hpa:52,hse:263,hse_startup_timeout:222,hse_valu:222,hsi:222,hsi_startup_timeout:222,hsi_valu:222,hsmode:28,hspi:[206,242,246,271],hspi_0:126,hspi_clk:[200,201,206],hspi_csn:[200,201,206],hspi_miso:[200,201,206],hspi_mosi:[200,201,206],hsv:169,ht1621:[31,129],ht1621b:[31,129],htm:[275,423,434,437,440,443],html:[7,11,27,38,41,108,169,172,220,221,228,285,296,331,400],http:[7,11,12,17,22,31,34,38,40,41,61,66,67,78,82,101,108,112,113,129,132,142,169,172,180,199,200,201,204,205,206,215,217,218,220,221,222,224,228,233,236,239,244,246,255,256,257,260,265,266,267,275,277,278,279,280,281,285,287,289,292,296,297,316,317,318,329,331,333,334,335,337,339,341,342,343,344,349,351,352,353,355,356,357,358,359,360,375,391,400,414,422,423,430,432,434,435,437,438,440,443],http_error_bodi:26,http_error_clos:26,http_error_connect:26,http_error_download:26,http_error_fota:26,http_error_head:26,http_error_rx:26,http_error_st:26,http_error_timeout:26,httpbin:[26,59],httpc:375,httpdn:61,httpplu:61,httpsrv:[31,129,279],httptest:26,huacon:[334,335],huawei:[34,61,279,398,403,412],huaxin:337,hue:169,huffman:104,huge:[82,175],huge_v:415,hum:52,human:415,humid:[28,61,82,120,181,182,183,217,220,228],humiditybit:[181,182,183],hump:387,hungri:417,hw:372,hwid_0:38,hwtimer:220,hwtimer_id:31,hwver:31,hx711:31,hxxt_bds_agnss_data:317,hxxt_gps_bds_agnss_data:[277,317],hz:[9,31,61,188,189,190,222],i16:144,i2:[2,31,103,129,251,279,285,296,312],i2c0:[28,103,220,228,276,284,295],i2c0_scl:[246,253,284,295],i2c0_sda:[246,253,284,295],i2c1:[28,103,276,279,284,295],i2c1_scl:[284,295],i2c1_sda:[284,295],i2c2:28,i2c:[2,24,31,42,43,44,45,47,49,50,51,52,53,54,56,60,63,69,70,73,74,77,78,79,80,83,86,87,91,93,102,103,129,135,179,185,216,232,245,251,270,279,283,285,294,296,304,306,312,322,333,337,349,387],i2c_hw:135,i2c_id:[28,31,50,52,56,61,69,77,93,135],i2c_scl:[88,135,181,182,183,231,236,267,273,306,312],i2c_sda:[88,135,181,182,183,231,236,267,273,306,312],i2c_spe:[42,43,44,45,47,51,52,53,54,56,63,69,70,73,74,79,80,83,86,87,91,105],i2c_sw:[135,179],i2cdon:28,i2cid:[42,43,45,47,51,52,53,54,56,60,61,63,69,70,73,74,78,79,80,87,91,105,181,182,183],i2cscl:93,i2csda:93,i2cslaveaddr:[181,182,183],i2ctool:297,i2s0:29,i2s1:[29,279],i2s:[261,322],i2s_bclk:284,i2s_dout:22,i2s_lrck:284,i2s_mclk:284,i2smod:263,i32:144,i64:144,i8080:312,i8:144,i:[2,4,8,20,22,33,38,56,60,77,79,81,82,84,85,89,90,98,110,136,141,144,169,172,173,175,177,180,181,182,183,186,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,220,226,228,229,246,258,263,268,279,289,322,342,352,357,375,388,390,392,396,414,417],i_:415,i_n_:415,iam_domain:62,iam_password:62,iam_usernam:62,iap:[251,258],iar:[257,258],ibid:[169,246,400,416],ibm:8,ic:[31,38,135,246,434,437,440],iccid:31,icm20608d:61,icm2068g:61,icon:[11,169,218,269],icon_img:169,iconv:[31,129,279,292,297],id0:38,id15:169,id1:11,id2:169,id4:221,id:[1,5,12,14,31,33,34,42,43,44,45,47,48,49,50,51,53,54,60,61,62,63,70,73,74,75,77,79,80,82,83,86,87,91,98,99,101,102,103,105,107,113,120,122,124,131,132,143,169,173,181,182,183,185,191,192,198,202,203,207,210,211,212,213,216,220,225,228,241,263,275,279,284,295,322,343,344,351,364,372,381,382,387,392,394,417,423,434,437,440,443],idcod:263,iddpd:246,idea:[220,228,279,280,349,363,376,377,384,414,415,419],ideal:[396,407,412],ident:[12,414,415],identif:[12,59,82,106,258,266,293,306,392],identifi:[24,41,106,218,226,258,266,323,337,344,415,418],ideograph:169,idf5:[307,342,358,359],idf:[307,315,342,359],idiom:415,idl:[76,112,118,121,124,369,371],idp:343,idx:415,ie:415,ieee:415,ierusalimschi:415,if_n_i:415,ifdef:[169,222,342],ifndef:[169,222],ignor:[3,4,8,28,37,41,106,112,120,124,125,131,138,169,263,279,284,286,295,318,350,356,357,414,415],igor:[356,357],ii:[38,261,317,318,322],iic:[220,226,259,262,292,297,306],iic_inttransmit:259,iih:373,iiha10:144,iiha:144,iii:[317,318],ili9341:[220,228,322],ili9486:38,illeg:[26,169,279,415],illumin:258,illustr:[322,415,417],imag:[4,11,31,129,135,145,170,219,220,228,251,357,358,394],image_recolor:169,image_recolor_opa:169,imagin:374,imei:[12,31,34,62,82,266,277,280],img1:[169,322],img2:169,img:[145,170,322,386],img_btn_part_main:169,img_cf_alpha_:169,img_cf_indexed_:169,img_cogwheel_argb:169,img_creat:169,img_dsc_t:169,img_part_main:169,img_set_angl:169,img_set_antialia:169,img_set_auto_s:169,img_set_offset_i:169,img_set_offset_x:169,img_set_pivot:169,img_set_src:[169,322],img_set_zoom:169,img_src:169,img_src_left:169,img_src_mid:169,img_src_right:169,img_zoom_non:169,imgbtn1:169,imgbtn:[145,170],imgbtn_:169,imgbtn_blu:169,imgbtn_creat:169,imgbtn_green:[169,322],imgbtn_part_main:169,imgbtn_set_check:169,imgbtn_set_src:169,imgbtn_til:169,imgbtn_toggl:169,imit:[220,228,341],immedi:[11,22,28,41,75,76,103,106,107,112,140,141,256,263,266,284,316,318,343,414,415],immut:[414,415],impact:[269,279],imped:[22,75,246,284,295,379,412],implement:[1,19,21,75,106,107,111,169,178,217,228,263,279,280,285,296,341,342,363,366,369,370,374,376,380,384,385,387,388,390,391,395,414,415,416,417,418],implements_ful:415,impli:[204,205,206,412],implicit:415,implicitli:364,imposs:[130,284,295,370],improv:[126,169,178,193,194,195,229,256,258,279,338,395,412,414,415],imsecret0i1m2jkl:34,imsi:31,in0_process:263,in2bc:11,in_buff:31,in_protect:415,in_set:415,in_set_:415,in_set_repres:415,in_set_to:415,ina226:[61,279],ina226_data:60,ina226_i2c:61,inaccess:415,inaccur:396,inact:[61,169],inappropri:417,inbuf:[6,31],inc_cmsi:[356,357],inch:[11,179,219,322,431,443],incident:130,incididunt:169,includ:[7,12,13,14,26,28,100,104,106,107,133,140,169,181,182,183,187,209,215,219,222,251,258,263,266,280,285,286,296,304,316,318,338,341,342,352,353,359,363,367,370,376,384,386,391,400,414,415,417,418,421,443],inclus:415,incom:[0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,384,414,415,418],incompat:[175,279],incomplet:[229,279],inconsist:[281,396,409,414],inconst:415,inconveni:359,incorrect:[26,199,200,201,263,279,400,415],incorrectli:[229,279],increas:[28,38,106,120,169,193,194,195,220,229,279,280,292,306,323,409,414,415],increment:[103,169,415],indata:[40,41],indefinit:[11,38,135,220,228,364,415,416],indent:[31,387,415],independ:[106,112,169,175,219,251,261,262,320,322,337,339,368,409,412,414],indetermin:[416,417],indev:169,indev_drv_regist:31,indev_kb_upd:31,indev_point_emulator_upd:31,index1:415,index2:415,index:[27,31,39,41,145,170,175,180,374,400,414],index_:415,index_n_ref:415,index_ref:415,indic:[2,5,12,17,48,61,64,66,67,75,106,107,112,120,124,132,140,144,169,257,258,277,306,322,343,359,381,382,396,400,409,414,415,417],indirectli:415,individu:[169,246],indivis:415,indoor:[319,320,322],induc:412,induct:412,industri:[270,322],ineffici:322,inf_timeout:417,inferior:306,infin:415,infinit:[33,169,364,418],info:[0,2,3,5,8,9,11,13,14,15,16,17,18,19,21,22,24,26,27,28,29,31,32,34,38,40,41,42,43,44,45,47,48,49,50,51,52,53,54,55,57,58,59,60,63,64,65,66,67,69,70,71,73,74,75,76,78,80,82,83,86,87,88,90,91,93,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,116,117,118,120,121,122,123,124,126,128,130,131,134,136,138,140,141,142,169,173,177,178,179,180,181,182,183,186,187,188,189,190,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,280,284,287,339,341,342,343,360,361,373,374,375,383,388,389,394,416,418],inform:[2,6,10,11,12,14,18,20,26,29,41,48,64,78,82,98,103,106,107,118,122,124,131,135,138,140,141,145,170,173,178,181,182,183,185,197,202,216,220,221,225,228,232,235,236,237,239,254,258,263,267,275,279,282,283,290,291,293,294,310,314,315,316,319,320,322,323,326,342,349,359,362,363,376,377,384,386,387,388,390,393,395,396,398,400,403,407,415,431,443],infrar:[31,50,61,129,380],inher:415,inherit:169,init:[31,52,61,69,131,169,173,175,179,186,187,198,199,200,201,209,220,228,263,341,348,349,375,414],init_in_servic:31,init_level:31,initi:[1,4,5,10,11,12,14,15,17,19,22,23,25,28,29,31,33,37,38,39,42,43,44,45,46,47,50,51,52,53,54,55,56,57,60,63,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,99,100,101,102,104,106,107,119,121,122,125,126,134,135,136,138,139,141,143,144,169,173,179,180,184,185,187,202,207,209,210,214,216,220,228,229,263,265,266,271,279,322,343,346,349,368,381,382,387,415,417],initr:[199,200,201],initreg_or_cspi_id:31,inject:[261,316,317,318,320,322],ink:[31,129,220,322,431],inlai:[145,170],inlet:229,inlin:[304,415],inner:[169,415],innermost:415,input:[6,8,22,31,37,82,99,101,103,106,124,125,128,145,170,173,175,177,199,200,201,217,229,231,232,236,246,262,263,266,267,269,277,279,284,291,295,306,312,322,337,349,363,370,376,379,384,396,398,403,407,412,414,419],input_buff:31,input_cnt:33,input_pulldown:379,input_pullup:379,inreversem:31,insert:[2,131,169,175,220,228,258,284,295,306,315,349,375,400,403,414,417],insertfinalnewlin:218,insid:[89,90,131,144,169,277,322,363,365,369,376,384,398,400,414,415],inspect:169,instal:[169,173,215,216,220,225,258,261,262,306,312,322,336,339,352,353,356,357,359,360,361,398,400,409],instanc:[41,48,50,55,62,77,107,121,135,140,258,388,390,415],instance_id:62,instanceid:48,instant:[284,295],instantan:[398,403,409,412],instead:[12,19,22,169,222,306,362,369,392,415,417,418],instruct:[25,82,103,127,169,181,182,183,186,198,204,205,206,220,222,228,229,242,258,261,267,268,270,278,283,285,294,310,315,317,318,322,342,356,357,365,396,398,400,414,415,417],instrument:[145,170],insuffici:[6,10,32,135,137,144,279,292,358,409],int16_t:374,int1:83,int2:83,int32:374,int32_t:[169,374],int64:373,int8:373,int8_t:[374,381,382],intact:414,integ:[3,4,28,41,64,82,101,120,124,127,128,279,289,308,337,373,414,415,418],integer_and_flo:415,integer_n_i:415,integr:[75,169,172,199,200,201,220,222,228,246,265,270,279,316,319,322,337,340,344,406],intend:[108,342],intens:[42,50,61,169],inter:[220,228,246],interact:[106,137,169,263,279,322,328,337,342,344,384,415,419,428],interchang:[169,220,239],interconnect:169,interest:266,interf:75,interfac:[16,28,38,48,75,103,117,120,129,131,138,144,145,170,175,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,215,217,219,220,222,228,229,243,246,251,256,261,266,270,279,280,285,286,296,306,312,315,322,337,344,356,357,363,365,370,376,380,384,388,390,391,395,403,406,413,414,417,419,421,429,430],interface_mod:38,interfer:[75,229,246,398,400],interg:28,intermedi:[169,222,256,280,338,359,414],intermitt:415,intern:[0,6,17,21,22,24,25,82,112,124,131,144,145,170,177,220,228,231,236,242,246,261,262,263,267,279,283,322,331,337,340,375,396,406,414,415,416,417,418],internet:[34,124,141,315,333,356,357,383],interpret:[30,169,326,394,414,415],interrupt:[22,33,44,56,75,78,83,85,90,93,99,112,136,209,217,220,225,228,229,246,261,271,279,284,292,295,322,337,338,343,369,370,379,383,409,415],interv:[2,57,104,106,107,124,134,138,140,221,261,279,322,368,415],interval_:415,inton:[283,322],intptr_t:415,intranet:[124,279,421],introduc:[26,152,169,174,177,178,179,184,187,191,192,196,197,198,202,203,207,208,210,214,220,222,228,322,341,342,383,417],introduct:[37,59,112,125,129,145,148,152,156,159,165,170,171,175,184,185,191,196,202,207,214,216,217,232,238,283,294,310,314,319,322,325,388,390,416],introductori:414,intuit:[169,374],invalid:[0,11,22,25,38,41,46,84,106,112,130,135,169,266,277,412,415,417],inventori:[342,359],invers:[75,169,414,415],invert:[145,170,415],invis:[103,106,113,210,228,414,415],invoff:31,involv:[41,368,369,370,388,390,392,415],invon:31,io00:[306,312],io01:[306,312],io02:[306,312],io03:[306,312],io04:[306,312],io05:[306,312],io06:[306,312],io07:[306,312],io08:[306,312],io09:[306,312],io10:[306,312],io11:312,io12:[306,312],io13:[306,312],io14:312,io15:312,io16:312,io17:312,io18:[306,312],io19:306,io:[2,14,29,31,61,62,75,103,106,107,112,113,116,119,129,169,172,173,175,198,199,200,201,220,228,246,259,261,262,263,273,278,279,283,294,306,312,322,337,360,363,367,376,384,391,414,416],io_sel:295,ioh:246,iol:246,iomux:[22,31,279,284,295],ionospher:316,ioqueu:[31,129,292],iosel:[112,294,322],iot:[12,31,61,62,64,66,67,129,141,148,159,165,255,268,280,286,315,322,331,395,398,406,409,416],iot_config:61,iot_core_id:31,iotauth:[31,129,279,292,297],iotcloud:[61,279],iotcloudc:62,iotda:31,iotpl:409,iotpow:[400,403,407,409,412],iotpower_cc_usb_driv:409,iotpowerpro:409,iovl:112,iovol:[31,279],iovol_all_gpio:112,ip1:124,ip2:124,ip3:124,ip4:124,ip:[31,41,58,62,68,106,107,131,279,383],ip_addr:31,ip_los:279,ip_readi:[64,65,82],ip_typ:31,ipair:175,ipc:365,ipsum:169,ipv4:[106,124,141],ipv4v6:106,ipv6:[26,31,59,107,124,140,279,421],iqinvert:[99,100],ir:[8,31,61,75,129,376,377,384],iron:[220,228],irq:[31,61,138],irq_27:22,irq_mod:31,irq_pin:[31,61],irqf_act_ctl:61,irqf_cfg:61,irqf_dur:61,irqf_en:61,irqf_map:61,irqf_th:61,irregular:217,irrevers:178,irrig:246,irtu:421,irur:169,is_comment_:415,is_ddr:31,is_default:31,is_don:375,is_drag:169,is_e_:415,is_en:31,is_function_:415,is_input:31,is_instantiated_:415,is_msb:31,is_ok:31,is_short:415,is_sign:[6,31],is_tl:31,is_udp:31,is_weak:415,isbigend:31,isclos:61,isdecod:31,isdelet:31,isdon:31,isdst:415,isend:31,isequ:31,isexist:387,isfix:31,isfloat:31,isipv6:31,isn:[169,414],isnum:415,iso14443_a:81,iso:[312,415],isol:[229,246,364,370,391,400],isp:[251,256,261,322,337],isreadi:124,isrun:415,issign:31,issu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,258,268,277,310,319,322,342,358,387,393,407,415],issue_xxx:387,istailcal:415,istl:34,istr_ctr:263,istr_dir:263,istr_ep_id:263,isvararg:415,isyield:175,item:[28,31,62,82,103,135,141,144,169,216,268,275,277,279,284,295,307,322,350,357,403,415,423,434,437,440,443],iter:[31,279,363,376,384,414,415],its:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,75,92,97,99,100,101,106,107,108,112,113,114,116,117,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,204,205,206,246,262,266,287,316,343,370,391,392,412,413,414,415,417],itself:[38,61,65,169,228,277,278,289,317,318,320,321,345,356,358,386,388,390,398,400,403,413,414,415],iv:31,j16:355,j:[172,175,414],januari:169,japanes:169,java:392,jedec:[199,200,201],jeremi:180,jin:306,jlink:263,job:[246,415],join:[279,383,395,407,414,415],joint:[66,67,266,270,277],jointli:350,joo:67,joystick:409,jpeg:[4,38,251,292,304],jpg:[4,8,38],json:[8,14,16,19,27,31,32,41,59,65,78,106,108,117,123,124,128,129,131,140,141,169,173,197,218,220,221,279,292,297,333,350,374,388,389,394],jt808:279,jtag:[261,312,322],jtdo:263,jtrst:[261,322],jubj62lnbb:34,judg:[17,61,78,106,107,118,124,229,261,279,280,322],judgment:[76,128,217,279,289,342,369],juli:[19,64,141,169],jump:[169,403,415],junction:71,june:[169,258],junior:[222,256,338],just:[17,33,82,99,119,131,144,169,180,209,215,218,220,221,228,258,266,279,307,315,316,322,341,342,343,352,353,359,369,373,387,414,415],k:[15,19,71,72,115,141,180,414,415],kb:[14,169,199,200,201],kb_creat:169,kb_event_cb:169,kb_inc:37,kcu:246,keep:[7,112,124,128,169,197,215,220,229,281,317,318,352,353,412,414,415],keep_cnt:31,keep_idl:31,keep_interv:31,keepal:[31,62],keepemtri:31,kei:[12,20,26,31,41,48,61,62,64,66,103,107,112,124,125,129,131,141,145,170,185,215,216,218,232,246,268,276,277,278,279,284,295,310,314,315,322,340,396,398,400,409,414,415,417,419,421,443],keil:[225,226,256,257,261,322,338,354],keil_v5:354,keilbuild:354,kept:[116,415],kere:169,kern:169,kernel:[226,258,304,415],key_b:81,key_cb:61,key_cod:90,key_down:169,key_ent:169,key_in:31,key_left:169,key_out:31,key_right:169,key_up:169,keyboard0:[37,246],keyboard1:246,keyboard2:246,keyboard3:246,keyboard4:[37,246],keyboard5:246,keyboard6:246,keyboard7:246,keyboard8:246,keyboard:[31,101,129,137,145,170,304,322,333],keyboard_:169,keyboard_cr:169,keyboard_def_event_cb:169,keyboard_mode_num:169,keyboard_mode_text_low:169,keyboard_mode_text_speci:169,keyboard_mode_text_upp:169,keyboard_part_bg:169,keyboard_part_btn:169,keyboard_set_cursor_manag:169,keyboard_set_textarea:169,keypad_encod:101,keystrok:169,keyword:[107,169,340,415],khz:246,kib:[356,357],kicad7:258,kicad:[229,258,278,428],kick:107,kill:409,kind:[76,124,210,211,212,213,220,228,293,316,362,415,417],kindli:258,km:41,kn:41,knob:[145,170],knock:[137,349],knot:41,know:[107,133,144,178,220,228,266,343,359,413,414,415,416],knowledg:[152,216,363,376,377,384,388,390,400,416],known:[107,229,255,319,321,322,337,414,415,417],korean:169,kp:90,kuf3nt:34,kv:[31,61,129,297,331],kv_clr:[31,180],kv_count:[15,19],kv_del:[31,180],kv_get:[19,31,180],kv_iter:31,kv_next:31,kv_set:[31,180],kv_stat:31,kvdb:180,kvdb_init:[19,31,180],kword:415,l1:[169,277,415],l1i:291,l3g4200d:61,l3g4200d_data:63,l6985e:[225,322],l:[32,110,144,169,229,341,342,343,362,364,369,374,375,387,414,415],l_alloc:370,l_font:366,l_gpio_handl:369,l_module_funct:387,l_mylib_abc:343,l_mymath_myplu:342,l_rtos_recv:364,l_xxxx_block:[343,375],l_xxxx_cb:343,la:415,label1:169,label2:[101,169],label:[101,145,170,220,228,306,415],label_align_cent:169,label_align_left:169,label_align_let:169,label_align_right:169,label_cnt:169,label_cr:[101,169,220,228],label_demo:169,label_label:169,label_long_:169,label_long_break:169,label_long_crop:169,label_long_dot:169,label_long_expand:169,label_long_mode_break:169,label_long_srol:169,label_long_sroll_circ:169,label_long_txt_hint:169,label_part_main:169,label_set_align:169,label_set_array_text:169,label_set_long_mod:169,label_set_recolor:169,label_set_static_text:169,label_set_text:[101,169,220,228],label_set_text_fmt:169,labor:169,labori:169,laborum:169,lac:106,lack:256,ladder:169,lamp:[172,193,194,195,220,228,278,317,331],languag:[104,136,169,175,218,220,283,315,322,341,370,392,395,409,412,413,414,431,443],language_:415,larg:[6,38,59,65,126,135,169,172,219,220,222,226,228,229,233,239,255,256,258,279,284,292,307,317,321,322,338,342,356,357,359,400,409,412,414,415],larger:[6,13,104,106,169,199,200,201,265,308,342,407,414,415],largest:[4,415],laser:61,last:[4,5,12,17,20,22,106,107,112,124,140,144,169,181,182,183,199,200,201,204,205,206,220,228,229,263,271,277,279,280,292,379,385,414,415,417,418,421],lastlinedefin:415,lastnum:31,lastreson:[31,279],lat:[41,64,65],latch:61,later:[33,67,124,127,169,220,228,258,266,280,284,291,295,342,343,378,414,415,418],latest:[2,141,169,180,199,200,201,215,220,221,222,228,233,239,256,261,269,279,280,292,322,339,357,359,400,421],latitud:[41,64,65],latter:[0,169,220,228,340,365,415],lau:279,launch:[107,140,270,285,296],lauxlib:415,law:266,layer:[2,17,41,66,84,89,101,107,115,118,124,135,140,169,180,215,220,229,243,246,251,258,266,280,281,284,295,341,342,343,356,362,364,366,369,374,376,377,384,415,418],layer_si:31,layer_top:31,layout:[145,170,204,205,206,224,280,284,289,295,388,389,396,409,415],layout_:169,layout_cent:169,layout_column_left:169,layout_column_mid:169,layout_column_right:169,layout_grid:169,layout_off:169,layout_pretti:169,layout_pretty_bottom:169,layout_pretty_mid:169,layout_pretty_top:169,layout_row_bottom:169,layout_row_mid:169,layout_row_top:169,lb:320,lbsloc2:[61,277,320],lbsloc:[61,277,279,320],lbsyun:41,lc:415,lcc:304,lcd:[4,31,103,105,126,129,169,173,185,216,232,238,251,278,279,280,285,292,295,296,312,322,333,337,352,358,378,429,431,432,435,438,441],lcd_dout:295,lcd_r:295,lcd_rst:[284,295],lcdi:246,lcdseg:[31,129,238,304,333],lcoal:387,lcsloc:279,ld0:246,ld8s5j1l07:34,ld:356,ldata:367,ldexp:415,ldo:[229,236,245,258,322,337,412],ldo_ctl:[112,284],le:415,lead:[169,177,228,277,284,292,333,409,414,415],leak:[22,279,362],learn:[169,216,220,228,258,266,359,395,396,407,413,414],least:[6,59,169,222,229,356,357,359,380,415],leav:[106,126,169,229,312,403,409,415],led1:[169,220,228],led2:169,led3:169,led:[22,27,61,76,82,90,145,170,172,193,194,195,220,221,222,228,242,258,276,277,278,310,314,322,338,348,349,365,370,419],led_creat:169,led_demo:169,led_off:169,led_on:169,led_part_main:169,led_set_bright:169,led_toggl:169,leda:[27,76,312],ledb:312,ledblinktim:76,ledpin:61,ledpinsetfunc:61,left:[3,11,29,31,38,55,61,78,101,103,105,106,124,135,138,144,169,215,218,220,221,256,263,279,351,396,398,400,403,407,409,412,414,415],left_fit_typ:169,leftmost:[144,169],legaci:62,legal:415,legend:322,legitim:26,len:[31,41,61,72,81,85,143,175,199,200,201,204,205,206,210,211,212,213,271,341,366,368,373,382,385,391,392],length:[4,8,13,15,17,19,21,22,26,28,29,31,32,59,62,72,81,82,85,101,104,107,109,110,113,118,119,120,121,124,126,128,130,136,137,138,141,145,170,175,199,200,201,220,228,271,279,292,306,308,366,369,373,374,378,381,382,385,387,392,394,414,417,424],less:[4,6,13,26,32,65,92,103,104,121,124,144,169,229,251,259,261,262,270,277,279,317,318,322,341,395,398,400,412,414,415],lesson:169,let:[169,172,173,220,228,243,369,378,392,394,395,412,414,415,416,417],letter:[8,34,82,169,365,387,414,415],level:[2,6,11,14,26,31,35,38,41,48,62,79,107,118,124,133,135,136,169,175,185,210,216,219,220,228,229,246,258,263,265,278,279,280,284,289,292,295,306,312,317,318,320,337,338,352,353,363,374,376,377,380,383,384,394,409],lever:409,lexer:415,lexic:175,lexin:[306,312,331],lf:[18,31,122,185,202,216,391,414],lfs2:118,lfs_mount:[199,200,201],lga:304,lgc:[352,353,359],li:[271,278],liansheng:275,lianshengd:[239,304,333],lib:[280,320,330,333,341,416],lib_xx:341,libcoap:[31,129],libcool:341,libemqtt:279,libfota2:[61,266],libfota:[61,266,279,280,286],libfota_cb:[66,67],libfota_timeout:61,libgnss:[31,129,279,292,297,333],libgt:341,libluato:[356,357],libnam:175,libnet:[61,132,280],librari:[0,1,2,3,4,5,6,7,8,9,12,13,14,15,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,35,37,38,39,40,41,48,49,65,66,67,75,84,89,92,97,99,100,103,104,106,107,108,110,111,112,113,114,116,117,119,122,123,124,127,128,129,137,138,140,141,142,143,169,175,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,217,220,225,228,241,256,262,265,266,273,277,279,280,284,285,289,290,292,295,296,297,308,317,318,319,322,330,338,339,344,350,356,357,358,366,370,373,374,384,386,387,388,390,392,395,406,413,416],library_provid:415,libsdl2:360,licens:415,lichuang:412,life:[172,391],lifftef:391,lift:279,light:[42,61,76,112,169,172,185,196,215,216,218,222,232,237,257,258,276,277,278,284,295,306,312,322,337,338,348,349,350,396],light_color:31,lightweight:[169,414,415],like:[134,144,169,215,220,222,228,258,266,269,307,316,322,338,349,400,412,414,415],limit:[1,6,31,121,136,137,143,144,169,220,228,246,255,263,271,279,280,285,286,292,296,308,331,356,373,388,389,412,414,415],line1:169,line:[19,31,32,38,84,89,90,98,108,115,118,131,135,144,145,170,175,186,187,203,204,205,206,210,211,212,213,216,220,222,228,229,246,258,263,266,269,277,279,281,284,295,306,307,315,326,330,331,339,342,356,357,364,365,373,375,387,388,390,396,401,403,406,409,412,414,416,417,418],line_color:169,line_cr:169,line_demo:169,line_num:169,line_part_main:169,line_point:169,line_ref:415,line_set_auto_s:169,line_set_point:169,line_set_y_invert:169,linear:101,linedefin:415,linemet:169,linemeter_:169,linemeter_cr:169,linemeter_part_main:169,linemeter_set_rang:169,linemeter_set_scal:169,linemeter_set_valu:169,linetyp:169,link:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,65,66,67,92,97,99,100,101,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,218,222,229,237,255,265,267,279,283,284,294,295,310,314,315,317,318,322,332,342,352,353,356,357,359,363,376,384,388,390,415,424,429,431,434,437,440,443],link_pin:31,linkag:68,linker:415,linkup:31,linkv2:263,linkv3:263,linux:[145,174,220,228,330,356,357,365,391,396,400,401,412,415],lion:172,lis2dh12:61,lis2dh12_data:69,list1:169,list:[8,20,26,31,32,61,125,131,145,170,175,186,220,222,228,256,261,263,266,271,322,323,338,340,342,348,349,350,351,362,385,387,396,414,417],list_add_btn:169,list_btn:169,list_clean:169,list_creat:169,list_demo:169,list_down:169,list_focu:169,list_get_btn_img:169,list_get_btn_index:169,list_get_btn_label:169,list_get_btn_text:169,list_of_valu:169,list_part_bg:169,list_part_edge_flash:169,list_part_scrl:169,list_part_scrlbar:169,list_part_scrollbar:169,list_remov:169,list_set_anim_tim:169,list_set_btn_select:169,list_set_edge_flash:169,list_set_layout:169,list_set_scroll_propag:169,list_set_scrollbar_mod:169,list_up:169,listen:[27,31,61,403],lit:[193,194,195,400],liter:415,literalstr:415,lithium:246,littl:[31,110,124,126,129,136,137,169,193,194,195,341,388,390,415],little_flash:[31,129],little_flash_devic:97,littlef:[18,220,255,391],littlevgl:169,live:[124,415],ll:[172,173,220,225,228,322],ll_apb1_grp1_enableclock:222,ll_apb1_grp1_periph_pwr:222,ll_apb1_grp2_enableclock:222,ll_apb1_grp2_periph_syscfg:222,ll_gpio_mode_output:222,ll_gpio_pin_0:222,ll_gpio_setpinmod:222,ll_gpio_togglepin:222,ll_init1mstick:222,ll_iop_grp1_enableclock:222,ll_iop_grp1_periph_gpiob:222,ll_mdelai:222,ll_rcc_apb1_div_1:222,ll_rcc_getsysclksourc:222,ll_rcc_hsi_en:222,ll_rcc_hsi_isreadi:222,ll_rcc_setahbprescal:222,ll_rcc_setapb1prescal:222,ll_rcc_setsysclksourc:222,ll_rcc_sys_clksource_hsisi:222,ll_rcc_sys_clksource_status_hsisi:222,ll_rcc_sysclk_div_1:222,ll_setsystemcoreclock:222,lla:41,llcc68:[99,100],llogd:341,llvm:[360,361],lm75:61,lm75_data:[61,85],lm75a:61,lm75b:61,lm:124,lmathlib:362,lmeter:[145,170],lmeter_demo:169,lng:[41,64,65],lnk:356,lo:414,load:[16,31,101,118,169,175,218,229,232,237,245,246,261,279,310,315,319,322,328,340,352,353,366,370,400,414],loadedlib:342,loader:415,loader_:415,loadfil:[175,370],loadlib:175,loc:31,local:[0,2,3,6,8,12,13,14,15,17,19,20,21,25,26,28,29,30,32,33,34,38,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,103,104,106,107,108,109,110,112,113,114,116,117,118,119,120,121,122,124,126,127,128,130,135,136,138,140,141,142,143,144,169,172,173,175,178,179,181,182,183,190,197,198,199,200,201,203,204,205,206,208,210,211,212,213,220,228,266,279,280,284,287,292,316,339,340,341,343,349,360,361,364,366,367,369,370,372,373,374,375,381,382,383,387,391,392,416,417,418],local_nam:31,local_port:31,localip:[31,106],localtim:415,locat:[11,16,32,41,61,65,75,98,102,103,105,121,126,135,144,169,199,200,201,215,281,319,320,322,326,339,341,352,353,357,369,370,415,416],lock:[31,106],lockcel:31,locstr:31,loctyp:64,lod:350,log:[0,2,3,5,7,8,9,11,12,13,14,15,16,17,18,19,21,22,24,26,27,28,29,31,32,34,38,40,41,42,43,44,45,47,48,49,50,51,52,53,54,55,57,58,59,60,63,64,65,66,67,69,70,71,73,74,75,76,78,80,82,83,86,87,88,90,91,93,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,116,117,118,120,121,122,123,124,126,128,129,130,131,134,135,136,138,140,141,142,173,175,177,178,179,180,181,182,183,185,186,188,189,190,192,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,216,221,229,232,242,253,263,266,278,279,280,284,287,295,304,306,312,322,323,339,341,342,343,344,349,357,358,360,361,365,373,374,375,416,417,418,419,421],log_br:386,log_debug:98,log_error:98,log_info:98,log_level:31,log_sil:98,log_warn:98,logarithm:[409,415],logger:409,logic:[17,31,75,118,129,136,175,219,279,280,292,340,342,343,364,369],login:[31,107,266,279],logo:[8,38,215,350],logstor:[31,129],longer:[12,64,107,115,124,140,169,219,220,255,275,279,387,415],longest:415,longitud:[41,64],longjmp:415,longlong:3,look:[17,27,103,124,169,172,173,193,195,204,205,206,211,212,213,215,220,228,266,277,293,306,341,352,353,359,362,378,392,394,395,400,414,415,416,417],lookup:415,loop:[31,33,129,130,177,185,210,216,220,221,228,263,279,364,369,372,398,415,416,417,418],loopback:[220,228],loopid:418,loosen:[169,412],lora2:[31,129,279],lora:[31,100,129,279],lora_devic:31,lora_init:99,lora_rx_don:[99,100],loraconfig:31,lorem:169,lose:[31,41,129,131,220,228,277,308],loss:[228,412],lost:[41,112,131,234,240,269,277,279,317,318],lot:[186,220,228,266,290,341,374,386,417],love:172,low:[2,5,22,26,28,75,103,111,112,124,127,169,172,187,219,220,221,222,229,246,251,258,262,263,270,271,277,279,289,304,306,312,320,331,337,363,370,376,379,381,382,384,395,396,398,400,415,417,421],low_irq:22,lower:[14,19,38,101,135,173,175,181,182,183,188,189,218,219,222,226,229,258,263,271,279,359,398,400,409,414],lowercas:[169,387,414,415],lowest:[105,112,169,271,317,318],lpmem:[322,371],lpt:258,lpuart:279,lqfp100:304,lqlq666lqlq946:21,lsat:289,lsb:[29,84,126,136,199,200,201,381,382],lsdir:[31,279,367],lse:222,lse_startup_timeout:222,lse_valu:222,lsec:124,lsi_valu:222,lsmount:31,lspd_mode:357,lst:415,lt:415,ltd:169,lte:[76,106,285,296],ltepin:61,ltrim:31,lua53doc:108,lua:[7,13,15,16,19,32,33,41,64,76,82,98,101,103,104,108,110,115,118,126,130,132,144,169,175,179,186,187,198,199,200,201,209,215,217,220,228,229,234,240,255,265,266,275,277,279,280,285,286,296,317,318,326,330,339,341,342,343,347,350,352,353,356,357,359,360,361,363,365,369,374,376,377,384,386,388,389,390,391,395,409,416,417,418],lua_32bit:415,lua_:415,lua_absindex:175,lua_alloc:175,lua_api:387,lua_arith:175,lua_atpan:175,lua_cal:[175,375,387],lua_callk:175,lua_cfunct:175,lua_checkint:364,lua_checkstack:175,lua_clos:175,lua_compar:175,lua_concat:175,lua_copi:175,lua_cpath:415,lua_cpath_5_3:415,lua_createt:175,lua_debug:175,lua_dump:175,lua_errerr:415,lua_errfil:415,lua_errgcmm:415,lua_errmem:415,lua_error:175,lua_errrun:415,lua_errsyntax:415,lua_extraspac:415,lua_fil:370,lua_filehandl:415,lua_gc:175,lua_gccollect:415,lua_gccount:415,lua_gccountb:415,lua_gcisrun:415,lua_gcrestart:415,lua_gcsetpaus:415,lua_gcsetstepmul:415,lua_gcstep:415,lua_gcstop:415,lua_getallocf:175,lua_getctx:415,lua_getextraspac:175,lua_getfield:175,lua_getglob:[175,375,387],lua_gethook:175,lua_gethookcount:175,lua_gethookmask:175,lua_geti:175,lua_getinfo:175,lua_getloc:175,lua_getmetat:175,lua_getstack:175,lua_gett:[175,375],lua_gettop:175,lua_getupvalu:175,lua_getuservalu:175,lua_hook:175,lua_hookcal:415,lua_hookcount:415,lua_hooklin:415,lua_hookret:415,lua_hooktailcal:415,lua_ids:415,lua_init:415,lua_init_5_3:415,lua_insert:175,lua_int:415,lua_integ:175,lua_isboolean:175,lua_iscfunct:175,lua_isfunct:175,lua_isinteg:175,lua_islightuserdata:175,lua_isnil:175,lua_isnon:175,lua_isnoneornil:175,lua_isnumb:175,lua_isstr:175,lua_ist:175,lua_isthread:175,lua_isuserdata:175,lua_isyield:175,lua_kcontext:175,lua_kfunct:175,lua_len:175,lua_load:175,lua_maskcal:415,lua_maskcount:415,lua_masklin:415,lua_maskret:415,lua_maxinteg:415,lua_mininteg:415,lua_minstack:415,lua_multret:415,lua_newst:[175,370],lua_newt:175,lua_newthread:175,lua_newuserdata:175,lua_next:175,lua_noref:415,lua_numb:175,lua_numbertointeg:175,lua_ok:415,lua_opadd:415,lua_opband:415,lua_opbnot:415,lua_opbor:415,lua_opbxor:415,lua_opdiv:415,lua_opeq:415,lua_opidiv:415,lua_opl:415,lua_oplt:415,lua_opmod:415,lua_opmul:415,lua_oppow:415,lua_opshl:415,lua_opshr:415,lua_opsub:415,lua_opunm:415,lua_path:415,lua_path_5_3:415,lua_pcal:175,lua_pcallk:175,lua_pop:175,lua_pushboolean:[175,341],lua_pushcclosur:175,lua_pushcfunct:[175,341],lua_pushfstr:[175,341],lua_pushglobalt:175,lua_pushinteg:[175,343,369,375],lua_pushlightuserdata:[169,175],lua_pushliter:175,lua_pushlstr:175,lua_pushnil:[175,343],lua_pushnumb:175,lua_pushstr:[175,342,343,375,387],lua_pushthread:175,lua_pushunsign:415,lua_pushvalu:175,lua_pushvfstr:175,lua_rawequ:175,lua_rawget:175,lua_rawgeti:175,lua_rawgetp:175,lua_rawlen:175,lua_rawset:175,lua_rawseti:175,lua_rawsetp:175,lua_read:175,lua_real:415,lua_refnil:415,lua_regist:175,lua_registryindex:415,lua_remov:175,lua_replac:175,lua_resum:175,lua_ridx_glob:415,lua_ridx_mainthread:415,lua_rot:175,lua_setallocf:175,lua_setfield:175,lua_setglob:[175,341],lua_sethook:175,lua_seti:175,lua_setloc:175,lua_setmetat:175,lua_sett:175,lua_settop:175,lua_setupvalu:175,lua_setuservalu:175,lua_stat:[169,175,341,342,343,362,374,375,387],lua_statu:175,lua_stringtonumb:175,lua_sys_xxx:362,lua_tboolean:415,lua_tfunct:415,lua_tlightuserdata:415,lua_tnil:415,lua_tnon:415,lua_tnumb:415,lua_toboolean:175,lua_tocfunct:175,lua_tointeg:175,lua_tointegerx:175,lua_tolstr:175,lua_tonumb:175,lua_tonumberx:175,lua_topoint:175,lua_tostr:175,lua_tothread:175,lua_tounsign:415,lua_tounsignedx:415,lua_touserdata:175,lua_tstr:415,lua_ttabl:415,lua_tthread:415,lua_tuserdata:415,lua_typ:175,lua_typenam:175,lua_unsign:175,lua_upvalueid:175,lua_upvalueindex:175,lua_upvaluejoin:175,lua_use_apicheck:415,lua_valu:370,lua_vers:175,lua_writ:175,lua_writestr:370,lua_xmov:175,lua_yield:175,lua_yieldk:175,luac:[18,118,386,415],luac_strip:326,luaconf:415,luadb:[8,16,27,29,32,38,62,94,107,108,113,116,279,322,328,331,386,388,389,391],luadb_t:385,luahelp:218,luai_throw:415,lual:415,lual_:415,lual_add:415,lual_addchar:175,lual_addlstr:175,lual_adds:175,lual_addstr:175,lual_addvalu:175,lual_argcheck:175,lual_argerror:175,lual_buff:175,lual_buffers:415,lual_buffinit:175,lual_buffinits:175,lual_callmeta:175,lual_check:415,lual_checkani:175,lual_checkint:415,lual_checkinteg:[175,341],lual_checklong:415,lual_checklstr:[175,341],lual_checknumb:175,lual_checkopt:175,lual_checkstack:175,lual_checkstr:[169,175],lual_checktyp:175,lual_checkudata:175,lual_checkunsign:415,lual_checkvers:175,lual_checkxxx:362,lual_dofil:175,lual_dostr:175,lual_error:175,lual_execresult:175,lual_fileresult:175,lual_getmetafield:175,lual_getmetat:175,lual_getsubt:175,lual_gsub:175,lual_len:175,lual_loadbuff:175,lual_loadbufferx:175,lual_loadfil:175,lual_loadfilex:175,lual_loadstr:175,lual_newlib:175,lual_newlibt:175,lual_newmetat:175,lual_newst:175,lual_openlib:175,lual_optint:415,lual_optinteg:175,lual_optlong:415,lual_optlstr:175,lual_optnumb:175,lual_optstr:175,lual_optunsign:415,lual_prepbuff:175,lual_prepbuffs:175,lual_pushresult:175,lual_pushresults:175,lual_pushxxxx:362,lual_ref:175,lual_reg:[175,342],lual_requiref:175,lual_setfunc:175,lual_setmetat:175,lual_stream:175,lual_testudata:175,lual_tolstr:175,lual_traceback:175,lual_typenam:175,lual_unref:175,lual_wher:175,lualib:415,luamod_api:342,luao:270,luaopen_:415,luaopen_a_:415,luaopen_a_b_c:415,luaopen_bas:415,luaopen_coroutin:415,luaopen_debug:415,luaopen_fastlz:342,luaopen_io:415,luaopen_math:415,luaopen_mymath:342,luaopen_packag:415,luaopen_str:415,luaopen_t:415,luaopen_utf8:415,luaopen_xxx:341,luaoto:359,luastat:[364,369],luat:[38,133,175,179,209,341,342,354,356,357,359,363,367,368,371,373,376,379,384,420],luat_:387,luat_bas:[169,341,342],luat_base_:342,luat_base_air101:342,luat_base_ec618:342,luat_base_xxx:341,luat_cbcwait:343,luat_cbcwait_noarg:343,luat_conf_bsp:[169,331,341,342,352,353,359],luat_custom_init:341,luat_custom_sayhi:341,luat_demo_xxx:362,luat_fil:367,luat_font:366,luat_font_data:378,luat_font_data_t:378,luat_font_get:366,luat_font_t:366,luat_fota:266,luat_fs_fclos:367,luat_fs_fopen:[279,367,370],luat_fs_fseek:367,luat_fs_ftel:367,luat_fs_getc:367,luat_gpio_callback:369,luat_gpio_clos:379,luat_gpio_fal:379,luat_gpio_get:379,luat_gpio_high:379,luat_gpio_input:379,luat_gpio_input_pulldown:379,luat_gpio_input_pullup:379,luat_gpio_low:379,luat_gpio_output:379,luat_gpio_output_od:379,luat_gpio_ris:379,luat_gpio_rising_fal:379,luat_gpio_rtt:369,luat_gpio_set:379,luat_gpio_setup:[362,370,379],luat_gpio_t:[362,369,379],luat_has_custom_lib_init:341,luat_heap_alloc:[368,370,387],luat_heap_calloc:368,luat_heap_fre:[342,343,368],luat_heap_getfre:368,luat_heap_init:368,luat_heap_mallac:362,luat_heap_malloc:[342,343,368,370],luat_heap_realloc:368,luat_lib:342,luat_lib_:38,luat_lib_fonts_h:169,luat_lib_gpio:369,luat_lib_mymath:342,luat_lib_sys_run:362,luat_lib_xxx:[341,362],luat_log:341,luat_log_tag:341,luat_lv_font_get:169,luat_lvgl_font:169,luat_malloc:[341,342],luat_malloc_heap_s:368,luat_mcu_xtal_ref_output:291,luat_msg_hanld:369,luat_msgbu:356,luat_msgbus_data:[364,369],luat_msgbus_frees:369,luat_msgbus_get:[364,369],luat_msgbus_init:369,luat_msgbus_itemcount:369,luat_msgbus_put:[343,369],luat_mymath:342,luat_newlib2:342,luat_os_get_tim:370,luat_pm_mod:371,luat_pushcwait:343,luat_pushcwait_error:343,luat_rto:342,luat_sfud:279,luat_spi_clos:381,luat_spi_recv:381,luat_spi_send:381,luat_spi_setup:381,luat_spi_t:381,luat_spi_transf:381,luat_struct_map:374,luat_timer_maxid:372,luat_timer_start:372,luat_timer_stop:372,luat_timer_t:[343,372],luat_uart_clos:382,luat_uart_read:382,luat_uart_setup:[279,382],luat_uart_t:382,luat_uart_writ:382,luat_use_adc:387,luat_use_fastlz:342,luat_websocket_p:279,luat_wlan_ap_get_info:383,luat_wlan_ap_get_stainfo:383,luat_wlan_ap_is_act:383,luat_wlan_ap_stop:383,luat_wlan_connect:383,luat_wlan_evt_ap_associ:383,luat_wlan_evt_ap_disassoci:383,luat_wlan_evt_ap_start:383,luat_wlan_evt_ap_stop:383,luat_wlan_evt_readi:383,luat_wlan_evt_scan_don:383,luat_wlan_evt_scan_report:383,luat_wlan_evt_sta_connect:383,luat_wlan_evt_sta_connected_fail:383,luat_wlan_evt_sta_disconnect:383,luat_wlan_get_apnet:383,luat_wlan_get_info:383,luat_wlan_get_powersav:383,luat_wlan_get_rssi:383,luat_wlan_get_stanet:383,luat_wlan_info_t:383,luat_wlan_is_readi:383,luat_wlan_net_t:383,luat_wlan_register_event_handl:383,luat_wlan_scan_with_info:383,luat_wlan_security_open:383,luat_wlan_security_wep_psk:383,luat_wlan_security_wep_shar:383,luat_wlan_security_wpa2_aes_psk:383,luat_wlan_security_wpa2_mixed_psk:383,luat_wlan_security_wpa2_tkip_psk:383,luat_wlan_security_wpa_aes_psk:383,luat_wlan_security_wpa_tkip_psk:383,luat_wlan_security_wps_open:383,luat_wlan_security_wps_secur:383,luat_wlan_set_apnet:383,luat_wlan_set_powersav:383,luat_wlan_set_stanet:383,luat_wlan_start_ap:383,luat_wlan_unregister_event_handl:383,luat_xxx:362,luat_xxx_freerto:362,luat_xxx_rtt:362,luatask:[175,217,220,409,417],luatcommun:[224,236,244,246,257,260,267,278,334,335,337,358],luatgpiopin:370,luatgpiopul:370,luatid:[306,312,386,391],luato:[7,11,12,32,38,75,82,84,89,101,107,108,121,124,131,145,170,171,173,174,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,218,219,221,222,226,228,229,231,233,234,236,239,240,242,246,247,253,254,256,265,267,268,270,274,276,277,278,280,281,283,286,287,290,291,292,294,306,307,311,315,316,317,318,319,322,323,326,329,330,331,332,333,339,341,342,343,349,351,352,353,354,355,356,357,358,359,360,361,363,376,384,385,387,388,389,390,392,393,394,395,400,413,418,420,422,429,430,431,432,435,438,443],luatool:[66,115,215,220,229,243,265,266,269,280,281,284,286,289,295,306,312,322,331,342,356,357,359,365,386,391,394,421],luatos1234:141,luatos_0022eecc2399:141,luatos_:[118,141],luatos_esp32:394,luatos_root:359,luatos_vers:118,luavm:[2,12,104,118,339,360,361],luiz:415,lure:400,lux:[87,91],lux_dat:87,luxuri:312,lv:169,lv_anim_path_t:101,lv_at:169,lv_conf:169,lv_draw_mask_fade_param_t:101,lv_draw_mask_line_param_t:101,lv_draw_mask_radius_param_t:101,lv_font:169,lv_font_:169,lv_font_conv:169,lv_font_declar:169,lv_font_dejavu_16_persian_hebrew:169,lv_font_montserrat_10:169,lv_font_montserrat_12:169,lv_font_montserrat_12_subpx:169,lv_font_montserrat_14:169,lv_font_montserrat_16:169,lv_font_montserrat_18:169,lv_font_montserrat_20:169,lv_font_montserrat_22:169,lv_font_montserrat_24:169,lv_font_montserrat_26:169,lv_font_montserrat_28:169,lv_font_montserrat_28_compress:169,lv_font_montserrat_30:169,lv_font_montserrat_32:169,lv_font_montserrat_34:169,lv_font_montserrat_36:169,lv_font_montserrat_38:169,lv_font_montserrat_40:169,lv_font_montserrat_42:169,lv_font_montserrat_44:169,lv_font_montserrat_46:169,lv_font_montserrat_48:169,lv_font_montserrat_8:169,lv_font_opposans_m_10:169,lv_font_opposans_m_12:169,lv_font_opposans_m_14:169,lv_font_opposans_m_16:169,lv_font_opposans_m_18:169,lv_font_opposans_m_20:169,lv_font_opposans_m_22:169,lv_font_opposans_m_8:169,lv_font_simsun_16_cjk:169,lv_font_simsun_48:169,lv_font_t:169,lv_font_unscii_16:169,lv_font_unscii_8:169,lv_obj_t:101,lv_scr_load_anim:101,lv_scr_load_anim_t:101,lvgl:[16,31,129,145,219,232,279,280,285,292,296,322,333,352,378,441],lvglfonttool:169,lvl:415,lwip:[124,279,370],lwip_ap:124,lwip_eth:124,lwip_gp:[124,131],lwip_sta:124,lx7:312,ly:400,ly_key_ent:169,m0:[219,226,336,337],m1:81,m33:[219,251,258,304],m3:[263,304,305],m4f:[304,305],m52:289,m85:258,m:[31,41,52,108,169,172,175,179,229,289,317,414],m_cannot:415,ma:[246,412],mac:[31,82,265,266,268,308,322,383,396,400,401,412,415],machin:[31,48,62,118,129,181,182,183,215,220,225,232,237,243,245,254,266,269,271,279,283,284,294,295,310,315,322,331,341,342,348,352,353,356,357,359,362,364,367,368,369,374,386,388,390,391,400,412,414,415],maco:365,macosx:357,macro:[225,322,341,342,387,415],made:[106,116,169,173,220,228,279,321,341,387,393,400,415,417],mag:47,magic:[222,256,258,271,338,378,385,415],magna:169,magnet:41,magnetic_track_degre:41,magnif:[105,415],magnitud:414,mai:[2,6,8,28,33,38,103,106,110,112,120,130,135,141,144,169,218,221,226,228,229,246,258,263,266,279,291,292,318,349,362,367,369,372,387,398,400,403,409,412,414,415],mailbox:[263,279],main:[7,15,18,19,28,41,64,75,82,98,103,130,132,169,185,187,191,197,215,216,217,219,220,221,225,232,237,245,246,256,261,262,266,277,278,279,280,285,286,296,306,308,310,321,322,326,330,331,338,339,340,342,343,350,352,353,359,360,361,371,381,391,395,415,416,417,418,430],main_ct:284,main_dcd:284,main_dtr:295,main_ri:[276,284,295],main_rx:[284,295],main_rxd:284,main_tx:[284,295],main_uart:295,mainli:[2,12,116,124,204,205,206,222,256,271,280,315,338,362,365,412,415,427],mainstream:[261,262,270],maintain:[22,112,169,219,246,263,284,292,295,415],mainten:258,major:[107,118,169,357,396],major_tick_len:169,make:[5,37,101,106,112,126,144,169,186,193,194,195,216,219,220,228,243,258,266,271,339,342,349,360,366,386,388,390,403,414,415,417],makefil:354,malici:415,mall:[226,233,239,262,337,396,412,420],malloc:[342,370,415],man:420,manag:[31,129,169,175,215,220,221,243,261,286,306,315,322,328,342,344,345,349,350,363,376,377,379,381,382,384,400,403,417,421],mandarin:289,mandatori:[104,107],mani:[6,24,32,33,34,41,120,124,128,136,169,220,228,229,246,258,263,266,277,279,284,289,306,316,322,342,343,344,358,362,366,378,383,388,390,391,395,414,415,416],manipul:[31,129,169,415],manner:[3,398,415],manpow:269,manual:[2,12,22,25,62,103,108,112,126,145,170,175,177,181,182,183,185,194,207,211,212,213,215,216,220,225,226,231,232,236,241,244,261,262,263,266,267,271,277,278,279,284,304,306,312,322,336,337,352,353,359,375,382,387,394,395,396,400,409,414,417,418],manual_v1:267,manufactur:[185,199,200,201,207,216,220,228,229,246,370,386,403],maopi:120,map0:378,map1:378,map:[10,27,31,41,44,103,125,129,131,169,205,220,232,237,254,268,274,277,278,279,284,295,322,340,378,400,415],map_typ:378,march:[141,169],margin:169,mark:[110,144,169,263,278,289,340,386,414,415,418],markdown:169,marker:[110,415],market:[261,262,263,391],mask:[31,37,39,61,72,124,138,141,145,170,175,279,292,365,383],mask_p:169,mask_param:169,maskabl:263,mass:[64,66,229,283,322,414],massiv:409,master:[29,38,75,126,135,181,182,183,203,220,222,228,229,246,251,261,271,280,306,322,337,350,352,353,356,357,359,381,386,387,391,406,413,422,432,435,438],match:[78,123,175,177,210,211,212,213,220,228,265,266,277,284,295,321,322,356,357,398,403,419],materi:[277,332],material_dark:101,material_light:101,material_no_focu:101,material_no_transit:101,math:[175,414],mathemat:[175,414],matic:169,matrix:[31,105,129,131,145,170,179,366],matter:[218,266,283,322,414,415],max30102:[31,129],max31856:61,max31856_spi_devic:71,max:[15,29,31,169,175,222,226,258,414],max_char_num:169,max_conn:141,max_h:169,max_temp:31,max_tick:31,maxbuff:382,maxim:[8,75],maximum:[12,13,17,22,32,33,66,85,101,105,106,112,116,118,133,136,137,138,141,145,170,188,189,190,193,204,205,206,219,220,246,265,266,270,279,289,292,322,336,337,381,396,401,407,409,414,415,417,418],maxinteg:175,maxout:31,maxsiz:31,mbedtl:124,mbedtls_ssl_conf_handshake_timeout:279,mbox1:169,mbox:169,mbox_set_anim_tim:169,mbox_stop_auto_clos:169,mbp:[251,331],mc68hcxx:[204,205,206],mcc:106,mco:[261,262,322],mco_plldiv:259,mcp25125:280,mcp2515:61,mcp2515_c:72,mcp2515_int:72,mcp2515_spi:72,mcpwm:312,mcu:[12,31,33,72,82,93,106,108,124,129,136,138,172,185,188,189,190,192,209,216,220,221,225,229,232,233,239,246,258,263,279,284,291,292,295,331,337,367,371,386,387,395],mcu_font:169,mcuisp:263,md5:[31,34,178,217,304,385],md5_stream:8,md:[31,350,356,357],md_file:31,md_sha1:116,md_sha256:116,mdeb:258,mdelai:[31,209],mdh201808109:[231,236],mdk5:[222,256,338],mdk:[225,226,257,258,322],me:[215,220,269,442],meal:289,mean:[2,14,17,19,33,38,64,76,103,106,120,123,124,126,127,132,136,144,169,178,181,182,183,222,263,266,276,277,278,284,295,316,317,322,330,351,365,388,389,394,403,412,414,415,417],meaning:[64,111,124,141,372,415],meaningless:[64,106,284,295],meanwhil:365,measur:[0,31,38,57,93,102,106,129,177,184,185,216,220,228,229,271,277,294,322,366,372,396,398,401,403,406,407,415],measuring_long:57,measuring_short:57,measuring_time_1:57,measuring_time_3:57,mechan:[19,107,118,132,133,140,175,209,220,228,263,269,280,364,367,368,369,371,372,373,379,412,415,416],media:[292,297],medium:[57,193,194,195],meet:[107,220,228,229,258,266,270,277,280,284,331,344,378,396,406,412,414,415,417],megabyt:322,melon:169,mem:[118,368],member:415,memcmp:144,memcpi:144,meminfo:[31,179,339,360,361],memori:[6,10,13,16,31,32,38,89,90,101,104,118,124,126,129,135,169,199,200,201,219,220,228,255,258,263,265,275,279,285,292,296,337,339,341,342,360,361,362,363,369,371,373,376,378,384,386,391,395,409,414,415],memset:144,mention:[220,228,263,369,409,414,415,417],menu:[115,218,222,256,266,269,280,281,338,357,358,359],menuconfig:307,merg:[10,123,144,145,170,279],messag:[2,28,36,48,59,62,66,67,72,106,107,111,118,123,124,126,130,132,133,140,141,145,170,175,185,187,209,216,219,220,228,258,261,279,292,322,363,364,370,372,375,376,384,387,388,390,409,416,417,418],messagequeu:417,met:[78,365,414,415],meta:[107,123,175,350,375,414],metabl:415,metadata:[31,107,123,129],metat:175,meter:[41,47,145,170,320,396,400,401,412,414],method:[2,4,5,14,20,21,22,27,29,31,59,76,101,107,115,120,126,130,133,136,140,169,172,175,178,180,209,211,212,213,220,222,228,246,256,257,258,261,262,271,277,279,291,292,306,317,318,319,322,328,338,341,342,343,351,356,357,358,363,366,368,369,370,375,376,382,384,387,388,389,394,398,400,414,416,417,418],method_:415,metr:41,mg:74,mhz:[31,169,219,246],mic:[2,291,293],micro:[318,334,335,337],microchip:336,microcomput:416,microcontrol:[75,169,246,263,417],microphon:293,microprocessor:[193,194,195],micropython:169,microsecond:103,microsoft:[218,256,262,306,312,338,365,400,409],micvol:31,middl:[11,38,135,169,218,257,289,341,409,415],middlewar:[376,377,384],midlin:169,mifi:315,might:[169,415],migrat:[259,263,415],mile:41,million:103,millisecond:[22,64,65,66,76,82,103,106,112,118,124,130,139,169,181,182,183,265,279,289,372,418],millivolt:[11,112],min:[41,78,108,117,169,175,197,220,406,414],min_temp:31,mingw32:339,mingw64:339,mini:263,miniatur:270,minim:[169,409],minimum:[13,33,105,106,135,169,220,222,232,246,279,322,359,395,406,409,415],mininteg:175,miniz:[13,31,129,279,292,297],minor_tick_len:169,minu:[31,32,64,169,415],minut:[12,26,41,64,78,82,112,141,192,197,217,219,220,280,292,310,316,317,318,322,372,417],minute_offset:41,mipp:396,mirror:[145,170,421],misalign:263,miscellan:414,miso:[31,75,220,228,284],misrecogn:[398,403,412],miss:[218,219,256,342,356,415],mission:68,misspel:342,mistak:136,mistakenli:412,mix:[106,121,141,169,251,415],mkd:20,mkdir:31,mkf:31,mlx90614:[28,61,279],mlx90614_ambient:73,mlx90640:[31,129],mm:93,mmm:41,mnc:106,mo:[169,412],mobil:[31,34,62,64,65,76,112,123,124,129,169,219,265,276,277,279,280,285,296,315,316,320,395,396,398,403],mock:349,mod:415,mod_typ:177,modbu:[8,110,363,376,384],modbus_slav:374,modbus_t:374,mode2:31,mode:[2,11,24,25,26,31,33,34,35,36,38,46,61,71,73,75,76,84,98,101,104,107,118,119,120,124,128,136,145,170,172,175,179,192,199,200,201,204,205,206,215,217,219,220,222,228,229,234,240,246,251,257,261,262,268,270,278,279,280,283,284,285,287,292,295,296,306,308,312,317,322,328,337,358,365,371,378,379,381,383,394,396,400,406,417],mode_i2:29,mode_key_input:90,mode_led_output:90,mode_lsb:29,mode_msb:29,mode_norm:169,mode_rx:85,mode_tx:85,model:[23,28,31,75,99,100,101,112,118,120,126,145,170,204,205,206,215,220,222,228,261,262,263,277,280,294,306,312,320,321,322,359,395,406,412,430,441],model_1in02d:11,model_1in54:[11,430],model_1in54_v2:11,model_1in54_v3:11,model_1in54b:11,model_1in54b_v2:11,model_1in54c:11,model_1in54r:11,model_2in13:11,model_2in13_v2:11,model_2in13bc:11,model_2in13d:11,model_2in54b_v3:11,model_2in66:11,model_2in66b:11,model_2in7:11,model_2in7b:11,model_2in9:11,model_2in9_v2:11,model_2in9b_v3:11,model_2in9bc:11,model_2in9d:11,model_3in52:11,model_3in7:11,model_3in7_u:11,model_4:11,model_4in2:11,model_4in2b_v2:11,model_4in2bc:11,model_4in2v2:11,model_5in65f:11,model_5in83:11,model_5in83_v2:11,model_5in83b_v2:11,model_5in83bc:11,model_7in5:11,model_7in5_hd:11,model_7in5_v2:11,model_7in5b_hd:11,model_7in5b_v2:11,model_7in5bc:11,moder:414,modf:175,modif:[169,263,279,370,415],modifi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,185,186,215,216,225,261,266,279,284,295,322,340,341,342,347,351,356,357,359,367,387,388,390,394,412,414,415],modnam:175,modul:[0,1,14,22,24,25,31,32,39,41,61,75,76,84,103,106,107,108,112,115,117,123,124,129,132,141,169,175,178,192,193,194,195,210,211,212,213,215,216,220,226,228,229,231,232,236,237,245,251,253,254,259,261,268,271,274,278,279,281,282,283,284,286,293,294,295,298,305,307,315,316,317,318,319,320,322,323,336,342,356,357,365,367,369,370,384,387,391,395,396,417,418,421,434,440],moduledemo:[222,259],modulo_264_:415,modulu:415,mold:[11,135,279],mollit:169,moment:[105,415],mon:[78,108,117,197,220,279],monei:266,monetari:415,monitor:[107,219,221,421],monkei:414,mono:[101,279],mono_l:29,mono_r:29,monochrom:[11,169],monospac:[169,218],month:[41,64,78,145,170,197,220,414,415],month_names_arrai:169,montserrat:169,montserrat_14:169,more:[0,2,6,7,12,25,29,33,40,41,82,103,104,106,124,141,169,181,182,183,188,189,190,215,219,220,226,228,229,258,262,263,265,268,277,279,280,282,290,292,293,316,321,322,340,342,343,356,357,358,365,370,383,387,391,393,394,395,396,398,403,406,407,409,412,414,415,417,419],more_a_:415,more_data:2,morn:414,mosi:[31,220,228],most:[7,26,27,112,124,136,139,169,197,209,210,211,212,213,220,228,263,266,280,320,339,342,349,363,370,376,384,391,403,412,413,414,415,417],mostli:[124,169],mother:[221,222],motion:219,motiv:[363,376,384],moto6800:312,motor:322,motorola:[204,205,206],moun:[199,200,201],mount:[31,32,60,118,119,137,173,185,198,202,216,220,228,279,306,367,391,396],mount_flash:[199,200,201],mount_point:31,mous:[169,322,409],mouth:[258,398,403],move:[32,103,112,126,136,137,144,145,170,175,211,212,213,263,373,409,412,414],movement:[169,219],mp3:[2,6,279,280,285,289,292,296,297],mp4:173,mpram:219,mpu6050:61,mpu6500:61,mpu6xxx:61,mpu9250:[61,279],mpu:251,mqtt:[31,34,48,62,82,129,279,280,285,287,292,296,297,333],mqtt_client:107,mqtt_isssl:48,mqtt_port:48,mqtt_sent:107,mqtt_state_connect:107,mqtt_state_disconnect:107,mqtt_state_error:107,mqtt_state_readi:107,mqttc:31,mqttconnect:[279,292],mr122:6,mr475:6,ms:[14,26,31,62,99,100,106,107,124,133,140,222,289,417],ms_h:103,ms_l:103,msb:[4,11,29,38,71,72,75,81,84,85,97,100,122,126,136,173,186,199,200,201,203,204,205,206,220,228,381,382,387],msc:258,msdbox:[145,170],msdbox_demo:169,msg:[2,31,75,132,140,341,343,363,369,376,384,415,417],msg_gpio:369,msg_timer:417,msgbox:169,msgbox_:169,msgbox_add_btn:169,msgbox_creat:169,msgbox_get_active_btn_text:169,msgbox_part_btn:169,msgbox_part_btn_bg:169,msgbox_part_main:169,msgbox_set_text:169,msgbu:[343,363,376,384],msgbuf_send:369,msgbus_clear:369,msgbus_current_s:369,msgbus_list:369,msgdata:[364,369],msgh:175,msgid:[31,118,369],msgtype:[364,369],msp:263,mspinit:263,msy:339,mu1:61,mu:22,much:[13,24,124,169,220,228,279,280,292,316,357,370,398,403,412,414,415,417],muid:31,muldownload:286,multi:[11,31,75,101,115,129,131,169,217,219,226,246,270,279,322,330,375,387,396,401,406,415,417],multimedia:[5,29,31,129],multimedia_id:[2,31],multimet:[229,396],multipart:59,multipl:[0,2,3,5,29,38,105,106,107,109,112,119,124,135,144,169,220,221,234,240,246,262,263,270,279,283,284,289,295,322,331,337,340,371,378,386,387,391,392,409,415,416,417],multiplex:[22,103,220,246,259,262,263,271,277,278,279,283,294,304,306,312,322],multipli:[251,415],multitask:[331,343,419],multithread:417,multithreading_:415,music:101,must:[3,4,5,6,14,17,21,22,28,29,32,33,64,66,67,75,78,81,82,84,92,98,103,105,106,107,109,113,118,119,124,130,138,141,169,177,210,211,212,213,215,218,220,228,229,231,236,246,262,263,266,267,271,276,280,284,286,289,295,306,312,340,341,342,349,352,353,356,357,359,362,369,370,375,387,394,398,400,403,415,416,417],must_mark_it:415,mutat:[229,412],mute:[283,322],mutex:[279,292],mutual:[363,376,384],mux:43,mv:[0,43,177],mwsy:173,my:[141,169,220,228,268,322,357,396],my_img:169,my_ir_cb:75,my_map:169,myabc:340,myap:141,myapi:[280,341],myblib:343,myctx:343,myctx_t:343,mydevic:34,myfil:391,myflib:340,myfont:350,myfontd:169,myfunc:[340,350],myid:340,mykei:340,mykv:19,mylib:343,mymath:342,myplu:342,myself:[229,258],myserv:280,mytabl:19,mytim:31,n123:415,n1:[175,289,414],n2:[175,414],n60:169,n:[22,28,31,41,78,81,101,103,107,110,120,124,128,130,136,137,140,169,175,211,212,213,221,234,240,270,277,289,291,317,318,347,357,373,414,416,417],n_refer:415,na:246,nabc:128,name:[2,4,5,8,11,12,19,20,24,26,31,34,48,61,64,65,68,97,106,107,112,113,122,123,124,129,132,136,141,145,170,175,180,204,205,206,210,211,212,213,218,220,222,228,231,236,246,253,256,258,267,268,273,279,280,284,291,295,306,307,312,316,322,326,338,341,342,343,348,350,352,353,356,357,358,359,367,375,384,385,386,391,394,412,414,418,421],name_font:358,name_wil:415,namelist:415,namespac:350,namewhat:415,namework:415,nan:415,narg:415,narr:415,nation:[31,129,262,279],nativ:[32,108,141,220,228,339,361,367,395,415],natur:[169,266,414,415],navig:[145,170,294,322,341],nb:[6,255],nbiot:[304,395],nc:[246,306,331],ndelai:124,nearbi:[228,320],nearest:[169,415],nec:[35,61,380],necessari:[2,38,103,111,118,140,144,225,229,258,263,277,316,322,340,341,344,362,386,398,403,412,414,415],necessarili:[112,131,364,414,415],necir:61,need:[0,2,3,4,6,7,8,11,13,14,16,22,23,25,26,28,29,31,32,34,36,37,38,40,41,42,44,45,47,48,49,50,51,52,53,54,56,57,60,62,63,64,65,66,67,69,71,72,74,75,76,77,79,80,81,82,83,85,86,87,88,91,93,94,95,96,101,103,106,107,111,112,113,121,123,124,125,126,131,132,134,135,136,138,141,143,169,173,179,181,182,183,188,189,199,200,201,204,205,206,215,218,220,222,226,228,229,246,256,258,259,262,263,265,266,270,277,278,279,280,281,284,291,292,293,295,306,307,312,315,316,317,318,320,321,330,331,338,341,342,343,349,351,352,353,356,357,358,362,363,365,366,374,375,376,377,378,380,384,387,391,394,395,398,400,403,406,409,412,414,415,416,418,420,421],need_ipv6_dn:31,needl:[145,170,312],needle_color:169,needle_id:169,needle_num:169,neg:[38,41,89,90,103,169,267,293,387,398,403,412,414,415,417],neither:415,nest:[337,374,415],net:[106,169,271,383,409],net_l:253,net_readi:130,net_status_ind:[417,418],netc:[31,40,61],netcom:[285,296],netl:[61,284,295],netlab:124,netmask:[31,383],network:[26,31,34,59,61,64,65,68,82,92,107,112,129,131,138,141,143,178,219,265,269,271,276,277,279,280,283,284,285,292,295,296,297,315,316,320,322,356,357,363,369,372,376,383,384,415,419],network_check_period:31,network_ctrl:124,network_force_close_socket:279,never:[169,193,194,195,364,415],nevertheless:415,new_apn_nam:31,new_data:137,new_nam:31,new_netc:124,new_param:169,new_path:31,new_scr:101,new_valu:169,newcnt:263,newer:169,newindex:415,newli:[277,415],newlin:[169,414,415],newnam:175,next:[14,15,31,33,124,143,169,175,218,220,228,256,263,279,280,315,342,365,398,400,413,414,416,417,442],next_id:31,nexti:392,nfc:219,nic:124,nice:169,nightli:221,nil:[0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,19,20,21,22,24,25,26,27,28,29,30,32,34,36,38,40,41,42,43,46,48,49,50,51,59,64,65,66,67,72,75,76,77,78,81,82,85,92,97,98,100,101,102,104,105,106,107,108,109,112,113,114,115,116,117,118,119,120,121,122,123,124,126,127,130,131,132,133,134,135,136,137,138,140,142,144,169,180,217,220,228,295,343,383,387,415,416,417,418],nimbl:[265,333],nine:61,nisi:169,nline2:169,nline4:169,nmea:[31,129,279,292,317],nmi_handl:222,nmo:75,no_autoat:[225,322],no_error:143,no_n:415,no_readi:137,noclear:31,node:263,nodebug:82,nodej:169,nois:[41,106],nojtag:263,nomin:[316,401,412],non:[8,19,21,28,38,40,41,61,75,82,103,106,107,115,124,126,130,132,135,136,169,199,200,201,219,261,278,279,280,284,295,315,317,322,342,343,344,350,374,382,387,396,403,414,415],nondeterministic_parsing_flag:104,none:[0,1,2,3,5,6,7,8,11,13,14,15,17,19,20,21,22,24,27,29,30,32,33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,60,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,105,106,107,108,109,112,113,115,117,118,119,120,122,123,124,125,128,130,131,132,135,136,137,138,139,140,141,142,143,144,169,179,211,212,213,262,284,356,357,366,380,382,387,394,415,417,418],nonsens:217,noop:20,nop:[31,120],nor:[112,287,415],nordi:131,norm:229,normal:[4,10,22,59,72,99,100,106,107,112,135,140,141,169,199,200,201,210,211,212,213,215,218,220,221,226,228,229,234,240,243,246,256,258,263,277,278,279,284,290,295,306,307,312,315,316,317,318,337,338,342,343,352,353,356,403,409,412,414,415,417,429,430],north:41,norun:326,nostrud:169,notat:415,note:[0,2,11,12,13,14,19,22,28,29,31,32,38,41,42,44,45,47,50,51,52,53,54,56,57,60,62,63,64,66,69,71,72,74,76,77,78,79,80,81,82,83,85,86,87,88,91,93,94,95,96,103,106,108,112,113,115,116,117,123,124,126,130,132,135,137,141,143,144,169,177,181,182,183,210,222,228,233,235,236,237,239,242,243,246,263,266,268,280,283,285,286,289,294,296,298,306,310,312,318,322,326,330,333,338,341,342,343,349,352,353,356,357,358,359,364,365,373,374,387,388,390,392,394,396,398,409,414,415,417,430,441],noth:[118,343,368,396,415],notic:169,notif:[124,271,337],notifi:[107,169,258,266],novel:419,novemb:[169,220],now:[139,169,331,342,344,373,413,414,415,417],nparam:415,npm:169,npn:[199,200,201],nr:41,nrec:415,nresult:415,nrst:263,nsec:169,nsecond:169,nsize:[368,370,387,415],nstinput:31,nstonoff:31,nstr:263,nth:110,nthird:169,ntp1:124,ntp2:124,ntp:[124,277,279,285,292,296,297,316],ntp_error:124,ntp_updat:[124,277],ntptm:[31,279],ntrip:[320,393],nulla:169,num:[31,61,123,169,383,414],num_channel:[6,31],num_table_ax:[89,90],num_tick_mark:169,numa:392,numb:392,number:[0,1,2,3,4,6,8,9,11,12,14,15,18,19,20,22,24,25,27,28,29,30,31,32,33,34,35,36,38,39,41,42,43,44,45,47,48,49,51,53,54,55,56,57,59,60,62,63,64,65,66,67,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,105,107,110,111,112,114,116,118,120,122,123,124,126,127,128,131,132,135,136,137,138,140,141,144,145,170,179,180,185,186,187,191,215,216,220,228,231,236,238,246,253,263,266,267,271,273,277,279,280,283,284,286,295,304,306,312,317,318,322,341,342,356,357,362,365,372,373,378,380,381,383,385,386,387,392,394,396,412,415,416,417,418,429],number_:415,numbl:64,numer:[22,34,98,108,112,135,169,286,289,364,369,372,392,414,415],nup:415,nv3037:293,nvic:337,nvm:[322,386],nvm_addr:386,nxp:78,nyou:169,o1:289,o2:7,o3:[7,305],o:[4,33,169,225,246,289,322,360,398,403,414,415],obj:[31,145,170,175],obj_add_styl:169,obj_align:[101,169,220,228],obj_align_origo:169,obj_clean:169,obj_creat:[101,169,220,228],obj_del:169,obj_get_height:169,obj_get_st:169,obj_get_width:169,obj_l:169,obj_part_main:169,obj_set_adv_hittest:169,obj_set_auto_realign:169,obj_set_click:169,obj_set_drag:169,obj_set_event_cb:[31,169],obj_set_height:169,obj_set_po:169,obj_set_s:169,obj_set_signal_cb:31,obj_set_style_local_bg_color:169,obj_set_style_local_text_font:169,obj_set_style_local_value_str:169,obj_set_width:169,obj_xxx:169,object:[25,28,36,38,62,73,78,97,100,101,105,122,126,130,136,137,144,145,170,175,199,200,201,211,212,213,220,228,317,369,388,390,414,417],object_:415,objects_:415,objmask:[145,170],objmask_add_mask:169,objmask_cr:169,objmask_demo:169,objmask_mask_t:169,objmask_part_bg:169,objmask_remove_mask:169,objmask_update_mask:169,observ:[136,177,220,221,228,229,342],obsolet:[31,129,415],obtain:[1,8,15,17,18,19,22,29,34,41,47,48,54,58,60,64,74,82,96,101,102,103,105,106,108,110,111,120,122,124,136,138,141,144,169,185,191,202,215,216,219,220,228,263,265,266,279,283,286,306,316,320,322,343,349,366,367,383,394,400,414,415,417,418],obviou:306,obvious:[172,414,417],occaecat:169,occas:[322,412],occasion:415,occup:358,occupi:[16,124,126,229,277,306,312,391,415],occur:[2,124,229,263,279,400,412,415,417],occurr:415,octal:414,octob:[21,141,169],octuari:415,odd:[136,382,414],oe:84,of_ex_:415,of_intermitt:415,of_set_:415,of_step:415,of_templates_separ:415,off:[0,1,2,5,7,9,12,22,25,28,30,31,33,41,61,78,81,82,89,90,106,107,112,114,118,124,130,131,134,135,136,137,139,141,169,177,185,192,207,215,216,220,228,245,258,261,277,279,284,295,315,317,318,321,322,337,338,363,365,376,379,380,384,396,398,403,409,415,418],offend:169,offici:[7,34,84,89,103,169,215,216,218,220,228,255,258,285,292,296,306,320,332,339,356,357,400,415,420],officia:169,offlin:[124,169,261,289,322,356,359],offset:[21,31,38,41,120,124,135,145,170,175,229,246,279,331,367,373,386],often:[178,414,415],ohm:246,ok:[8,27,28,41,98,101,102,105,112,124,126,169,199,200,201,256,258,341,342,343,356,357,358,362,373,375,382,394,398,403,414,415],okai:169,ol:179,old:[12,21,34,99,103,112,124,144,169,220,228,266,277,279,281,319,322,415],old_mqtt:34,old_path:31,oldnam:175,om:169,omit:[343,374,378,414],on_lin:[124,279],on_off:31,onboard:[219,220,228,270,306,312,429],onc:[12,22,35,43,57,82,109,112,113,131,139,169,220,221,263,306,316,317,318,357,372,414,415,416,417],onchip:121,onchip_fdb:[15,180],one:[0,3,5,17,22,29,48,57,62,75,82,84,101,107,123,124,131,136,137,144,169,172,177,199,200,201,204,205,206,208,210,211,212,213,215,220,225,228,229,255,258,261,266,270,271,277,278,279,284,289,292,295,304,306,307,312,322,326,340,341,342,349,351,364,385,387,398,400,412,414,415,417,418],one_and_zero:8,onenet:[31,61,98,156,279,393],onenetcor:[320,393],ones:306,oneself:258,oneshot:71,onff:31,onheap:31,onlevel:31,onli:[0,2,3,4,5,6,11,12,13,14,15,17,19,20,22,23,28,29,32,33,35,36,38,39,41,62,64,65,68,74,75,76,78,82,93,101,103,104,106,107,108,109,110,111,112,113,115,116,117,118,119,121,123,124,126,128,130,135,136,137,138,140,141,144,145,170,177,181,182,183,190,199,200,201,203,204,205,206,215,220,222,228,229,231,236,241,246,258,261,266,267,269,271,276,277,278,279,280,284,285,286,289,295,296,306,312,315,317,320,321,322,323,331,333,340,341,342,343,344,356,357,362,365,368,369,370,371,374,378,380,385,387,391,394,400,403,406,409,414,415,416,417,418,423,429],onlin:[124,169,220,280,352,353,359,428],only_i:31,only_references_to:415,onoff:[2,31],onto:[362,415],onus:62,op:[412,415],opa_30:169,opa_cov:169,opa_transp:169,opac:169,opaqu:415,opcod:140,open:[1,12,14,20,22,26,29,31,32,34,41,46,59,61,75,78,81,99,100,103,106,107,112,115,119,124,140,145,170,173,175,177,193,194,195,199,200,201,215,218,219,220,221,222,228,229,243,246,259,261,279,280,285,286,291,292,296,306,312,315,316,317,322,332,337,341,342,352,353,356,357,359,379,381,382,383,387,391,396,400,403,406,409,412,413,414,421],openf:415,openluat:[12,38,41,64,65,66,67,82,115,215,222,224,233,236,239,244,246,255,256,257,260,266,267,277,278,280,281,285,289,296,316,317,318,329,334,335,337,341,342,350,351,352,353,355,356,357,358,359,391,420,422,432,435,438],openocd:[261,322],openssl:116,oper:[2,7,12,14,20,31,32,41,81,89,90,101,112,119,124,129,135,144,169,175,188,189,190,192,199,200,201,204,205,206,209,215,218,220,226,228,229,234,240,251,258,263,266,279,289,292,306,312,318,319,322,328,331,337,339,341,342,356,357,363,365,367,369,373,376,384,387,391,392,395,396,398,400,412,413,416,430],operand:415,operson:113,oppo12:16,oppo:169,oppo_8:16,oppo_bold_12:358,oppo_bold_8:16,opposan:169,opposans_m_10:[101,169],opposans_m_12:[101,169],opposans_m_14:169,opposans_m_16:169,opposans_m_18:169,opposans_m_20:169,opposans_m_22:169,opposans_m_8:169,opposansm8_chines:16,opposit:[22,124,136,414,415],opt:[31,61,175],optim:[104,106,265,279,292,323,362,395],option:[2,3,8,11,13,14,15,18,19,21,22,26,28,29,34,35,38,40,41,59,62,64,66,79,84,89,92,101,103,106,107,112,116,124,126,128,130,134,135,136,137,140,141,144,145,170,218,220,225,261,262,271,279,292,321,322,337,339,340,342,348,357,360,361,362,374,381,386,387,394,398,403,414,415,421],optional_a_:415,or_closed_:415,or_closure_:415,or_ful:415,or_numer:415,or_out:415,orang:169,orbit:316,order:[4,38,75,126,169,187,197,220,228,229,258,263,279,306,341,343,344,359,364,365,370,378,381,383,385,387,409,412,413,414,415,416,417,419],ordin:[144,403,409],ordinari:[112,169,229,266,284,295,318,342,343,412,415,429],org:[7,11,38,108,169,172,220,221,228,285,296,331,400,415],organ:[169,391,417],orient:[169,279,352,353,359,415],origin:[0,2,4,6,13,15,19,40,41,104,106,144,169,177,178,262,279,283,306,307,312,322,356,358,365,367,370,386,409,414,415],originstr:31,os:[7,31,32,41,78,117,124,129,131,140,175,179,197,220,339,360,361,370,372,414],osc:246,oscil:[25,103,197,220,222,231,232,236,246,263,322,337],oscilloscop:[136,229],osiz:[368,370,387,415],ota:[62,66,82,118,268,279,283,292,297,322],ota_port:61,ota_url:[61,82,280],ota_vers:82,otf:169,otg:[251,312,400],other:[1,2,4,5,12,14,17,22,23,41,59,61,68,75,82,103,104,106,107,112,114,115,118,124,132,136,137,169,197,199,200,201,204,205,206,219,220,221,222,226,228,229,231,236,246,254,256,257,258,261,265,266,267,269,271,273,277,279,281,284,292,295,306,312,315,317,319,322,331,337,338,340,342,343,344,356,357,359,362,367,370,374,380,383,385,386,387,392,394,396,398,403,412,414,415,416,417,421],otherwis:[2,4,6,8,9,11,12,13,14,15,16,18,19,21,22,23,24,27,28,32,34,36,38,39,46,59,62,65,78,82,97,100,101,102,103,104,105,106,107,108,109,112,116,117,119,120,121,122,123,124,126,127,130,132,135,137,139,140,141,143,169,177,210,211,212,213,218,220,226,228,242,263,266,271,277,278,279,317,330,341,343,352,398,400,412,414,415,416,418],otp:[8,31,129,292,304,333],otpdata:109,our:[169,172,220,243,256,338,352,353,357,359,362,414,415],ourselv:414,out0_process:263,out:[12,19,61,75,78,106,116,123,124,126,131,137,144,169,173,177,181,182,183,204,205,206,220,222,228,263,279,290,292,310,312,322,333,343,349,352,353,356,357,362,373,398,403,409,414,415,417,429],out_buff:31,out_mode_queri:57,out_path:31,outbuf:6,outdoor:[219,316],outer:[169,215,415],outermost:364,outlin:169,output:[2,3,4,6,7,9,11,21,22,28,31,37,39,41,57,66,75,77,84,90,93,98,103,106,111,112,114,120,124,125,129,141,144,169,172,175,177,178,185,191,196,199,200,201,216,222,225,229,232,246,261,262,276,277,278,279,284,285,291,295,296,306,312,317,321,322,337,338,349,356,357,362,363,370,374,376,379,380,384,392,396,398,401,403,407,416,417,419,421],output_od:379,outrevers:31,outsid:[169,215,259,262,279,415],over:[107,112,118,128,169,263,387,414,415],overal:[169,220,228,229,256,257,280,338,342,365,414],overflow:[103,337,352,415],overflow_:415,overlap:415,overli:169,overload:415,overrid:[145,170,415],oversea:221,overshoot:101,overview:[145,170,245,261,322,396,424,431],overwrit:[28,347,415],overwritten:19,own:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,32,33,34,35,36,37,38,40,41,48,49,59,60,65,66,67,92,97,99,100,101,106,107,108,112,113,114,116,117,118,120,122,123,124,126,127,128,135,136,137,138,139,140,141,144,169,215,219,220,268,321,322,338,340,350,380,391,396,412,414,415],owner:400,ownership:[268,322],oxygen:102,p0_1:76,p0_4:76,p100:263,p2000:289,p7zip:360,p:[86,229,246,289,306,414,415],p_index:169,pa00:[56,228],pa01:111,pa04:177,pa06:238,pa07:[22,56,75,238],pa08:238,pa09:238,pa0:[220,228,229,231,246,263,267],pa10:[238,246],pa11:[238,263],pa12:[111,238,263],pa13:[222,226,238],pa14:[222,226,238],pa15:[238,263],pa1:[135,181,182,220,228,229,231,236,246,263,267],pa2:[226,236,246,256,257,263,338],pa3:[226,236,246,256,257,263,338],pa4:[135,181,182,220,228,229,231,236,267],pa5:246,pa6:246,pa7:[22,134,231,246,267],pa8:246,pa9:246,pa:[2,279],pa_00:[236,273],pa_01:[236,273],pa_02:236,pa_03:236,pa_04:[236,273],pa_05:[236,273],pa_06:236,pa_07:[236,241],pa_08:236,pa_09:[236,241],pa_10:[236,241],pa_11:236,pa_12:[236,241],pa_13:236,pa_14:[236,241],pa_15:236,pac:386,pack:[8,31,129,175,217,221,222,256,258,261,279,292,297,322,333,338,373,374,392],packag:[17,24,26,31,66,82,129,173,175,192,218,220,225,232,233,239,245,255,261,263,267,268,270,274,279,283,285,304,318,322,333,336,337,344,345,350,352,353,356,357,358,359,369,370,373,378,385,386,392,394,400,409,412,417,421],package_air_cn_index:221,package_air_index:221,packet:[40,113,124,220,228,271,279,283,286,322,421],packsiz:175,pacman:[352,353],pad12:277,pad28:277,pad:[31,103,112,169,229,267,279,284,295,312,315,415],pad_bottom:169,pad_index:31,pad_inn:169,pad_left:169,pad_right:169,pad_top:169,padaddr:277,padd_inn:169,padd_left:169,padd_right:169,padd_top:169,padding_bottom:169,padding_inn:169,padding_top:169,paddr:[22,103,284,295],padelai:31,page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,204,205,206,215,218,222,235,236,237,239,255,258,261,279,285,296,306,307,322,349,358,387,396,398,400,407,409,413,415,442],page_clean:169,page_cr:169,page_demo:169,page_focu:169,page_get_scrl:169,page_get_width_fit:169,page_glue_obj:169,page_part_bg:169,page_part_scrl:169,page_scroll_hor:169,page_scroll_v:169,page_set_anim_tim:169,page_set_edge_flash:169,page_set_scrl_fit:169,page_set_scrl_fit_height:169,page_set_scrl_fit_width:169,page_set_scrl_height:169,page_set_scrl_layout:169,page_set_scrl_width:169,page_set_scrlbar_mod:169,page_set_scroll_propag:169,pai:[34,66,67,78,124,131,218,220,228,246,258,263,284,286,306,362,391,398,412,429],paid:[220,228,246,256,306,312],paint:[38,144],pair:[15,19,72,82,115,124,141,175,180,279,287,417],palett:[145,170],pan:[265,355],panel:[337,396],panic:415,panicf:415,paper:[11,415,429,431],papin:31,par:169,para:[31,417],paragraph:[135,341],parallel:[312,400],param1:[31,61],param2:31,param:[48,417,418],paramet:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,169,173,199,200,201,204,205,206,210,211,212,213,220,228,246,263,268,271,279,280,283,292,305,316,319,322,326,331,341,343,344,349,357,362,365,369,370,374,379,381,382,387,388,390,396,403,407,412,415,416,417,418],parametr:169,paraphras:[417,418],parasit:412,parent:[31,169],parenthes:[304,414,415],parenthesi:415,parenthet:415,pariatur:169,pariti:[136,210,211,212,213,220,228],parlist:415,pars:[6,31,37,104,125,129,131,217,279,292,364,365,380,414,415],parse_zlib_head:104,parser:415,part:[12,38,64,135,144,145,170,179,184,185,191,196,202,207,214,216,217,220,228,242,266,277,279,280,284,289,290,295,343,350,352,362,364,370,374,396,400,403,409,412,414,415,417],parti:[124,169,261,320,322,391,403],partial:[0,11,177,263,279,284,304,333,373],particip:277,particular:[246,414,415],particularli:415,partii:31,partit:[18,31,228,279,298,307,322,386,394],partition_addr:386,partli:414,pascal:415,pass:[2,6,14,17,22,29,38,41,42,44,45,47,48,51,52,53,54,63,64,66,67,69,70,74,75,78,79,80,83,86,87,91,98,99,117,118,123,124,126,130,136,141,169,199,200,201,211,212,213,229,246,284,295,342,343,354,362,364,369,370,372,374,387,392,396,414,415,417],passag:414,passiv:277,passthrough:17,passwd:31,password:[8,26,31,34,66,81,116,124,145,170,243,266,315,383],past:[8,321,341,398],pasv:[279,292],patch:[279,306],path:[4,6,26,31,38,66,94,118,143,169,175,219,222,256,258,265,266,279,331,338,339,342,352,353,356,357,359,360,361,391,394,417],patha:31,pathb:31,pathc:31,pathd:31,patient:[221,266],pattern:[41,116,135,169,175,219],pattern_:415,patters_ref:415,paus:[31,101,112,234,240,365,403],pavlov:[356,357],payload:[31,61,140,279,369],payloadlen:[99,100],pb00:[85,99,228,238],pb01:[33,72,81,85,99,135,228,238],pb02:238,pb03:[75,135,228,238],pb04:[72,81,85,99,135,228,238],pb05:238,pb06:[22,89,90,99,238,271],pb07:[89,90,238,271],pb08:[84,90,228,238],pb09:[84,238,271],pb0:[220,222,228,231,246,256,257,267,338],pb10:[84,228,231,238,263,267,271],pb11:[71,231,238,263,267,271],pb12:[111,238,246,271],pb13:[138,238,246,256,257,271,338],pb14:[238,246,256,257,271,338],pb15:[238,246,271],pb16:[238,271],pb17:238,pb18:238,pb19:[231,267],pb1:[220,228,231,246,267],pb20:[231,267],pb21:238,pb22:238,pb24:238,pb25:238,pb26:238,pb27:238,pb2:[220,228,231,246,267],pb3:[14,173,220,228,231,246,263,267],pb4:[220,228,231,246,267],pb5:[220,228,231,246,267],pb6:[220,228,231,267],pb7:[220,228,231,267],pb8:[228,231,259,267],pb9:[231,259,267],pb:113,pb_00:[236,241],pb_01:[236,241],pb_02:[236,241],pb_03:[236,241],pb_04:[236,241],pb_05:[236,241],pb_06:[220,228,236,241,273],pb_07:[220,228,236,241,273],pb_08:[220,228,236,241,273],pb_09:[220,228,236,241,273],pb_0:221,pb_10:[220,228,236,273],pb_11:[220,228,236,273,306],pb_12:[236,273],pb_13:[236,273],pb_14:[236,273],pb_15:[236,273],pb_16:[236,273],pb_17:[236,273],pb_18:[236,273],pb_19:236,pb_20:236,pb_21:236,pb_22:236,pb_24:236,pb_25:236,pb_26:236,pb_27:236,pbdata:31,pbtxt:113,pc05:102,pc08:138,pc09:138,pc0:[2,177,246],pc12:[173,246],pc13:246,pc14:[173,246],pc15:246,pc1:246,pc3:[242,246],pc4:246,pc5:246,pc6:246,pc7:246,pc8:246,pc9:246,pc:[169,211,212,213,322,326,329,330,395,396,398,400,401,403,406,407,410,412,419],pca9685:61,pcall:175,pcas01:[291,318],pcas04:318,pcb:[204,205,206,224,231,236,241,258,259,262,267,270,278,306,412,428],pcf8563:78,pcf8563t:[61,279],pcf8574:61,pci:31,pclose:370,pcm:[2,6,261,322],pctolcd2002:[11,38,135],pd10:[125,246],pd11:246,pd12:[125,246],pd13:[125,246],pd14:[125,242,246],pd15:[125,242,246],pd1:246,pd2:246,pd3:246,pd6:246,pd7:246,pd8:246,pd9:246,pd:[396,398,401,406,407],pdf:[22,78,169,177,193,194,195,204,205,206,211,212,213,223,224,226,230,231,236,241,242,244,257,260,267,278,295,332,334,335,337,415,426],pdop:41,pe00:125,pe01:125,pe02:125,pe08:173,pe09:173,pe0:246,pe10:246,pe11:246,pe1:246,pe2:246,pe3:246,pe6:[183,246],pe7:[183,246],pe8:246,pe9:246,peach:414,peak:[279,403,409,412],pear:414,peer:124,pelulamu:169,pem:[107,116],pend:[263,378,415,417],pendsv_handl:222,penetr:[82,421],penultim:414,peopl:[258,392,393,414],per:[41,55,82,103,169,185,191,216,279,416,418],percent:[107,394],percentag:[2,118,169,415],percept:415,perfect:[82,169,279,414],perfectli:[218,413],perform:[32,33,76,101,106,112,118,124,215,219,220,229,245,258,261,279,280,284,306,316,322,342,349,352,357,365,372,375,396,403,414,415,416],perhap:[391,414],perimet:414,period:[22,28,31,59,103,106,107,124,132,133,169,209,220,228,229,263,279,284,316,317,318,322,358,409,417],peripher:[103,112,126,145,181,182,183,185,203,207,216,220,225,226,228,245,251,256,261,262,263,270,279,280,285,292,296,297,304,312,322,331,338,339,349,363,376,384,395,419],perisan:169,perman:[26,106,118,229,418],permiss:[266,415],perpendicular:169,perpetu:127,persian:169,persist:358,person:[113,417],perspect:[278,284,295,344],phase:[394,400],phenomena:400,phenomenon:[228,261,322,400,409,412],philip:[181,182,183,220,228],phone:[5,31,106,131,219,265,315,316,396,398,403],photo:4,photograph:[4,424],php:41,phycellid:106,physic:[0,106,115,284,295,306],pi:[175,332],piao:258,pick:[277,409,414],picker:169,pico:332,pictur:[4,38,145,170,218,220,228,266,279,292,350],pid:31,pide:31,pie:[332,396,401,412],piec:[2,122,144,220,228,391,415],pilot:35,pin0:[179,338],pin1:[31,179],pin2:31,pin2pin:443,pin33:22,pin:[2,11,14,17,25,28,31,37,38,46,55,56,61,71,72,75,76,78,81,83,84,85,89,90,99,102,106,121,125,126,129,131,135,136,138,145,170,172,173,179,185,186,207,216,220,221,222,226,228,229,230,232,234,235,237,240,242,245,254,255,256,257,258,261,264,268,270,271,274,276,277,278,279,284,291,292,293,295,310,314,317,322,333,337,338,369,370,379,400,403,430],pin_busi:[31,100],pin_c:[31,100,186],pin_chang:106,pin_clk:31,pin_dat:31,pin_data:31,pin_dc:[31,38,173,186,220,228],pin_dio1:100,pin_dis:106,pin_en:106,pin_pwr:[11,38,173,186,220,228],pin_reset:[31,100],pin_rst:[11,38,173,186,220,228],pin_unblock:106,pin_verifi:106,pin_wr:31,pin_xxxx:106,ping:[99,100,131,289],pinmod:221,pinout:[225,228,232,237,245,261,268,283,322,336],pio:76,pip:306,pipelin:312,piraci:306,pirat:306,pit:[268,322],pivot:169,pivot_i:169,pivot_x:169,pix_fmt:173,pixel:[11,31,38,105,135,169,172,322,373,424],pkcs5:21,pkcs5pad:21,pkcs7:[8,21,178,279],pkg:[317,345,349,350,354,355],pkg_cachedir:357,pkg_installdir:357,pkg_searchdir:357,pkgid:279,pkx:31,pky:31,place:[28,116,135,169,173,187,220,225,228,229,246,258,277,322,342,343,352,353,359,391,398,414,415,429],placehold:[145,170],placement:229,plai:[31,145,174,279,289],plain:[175,289,414],plan:[169,258,263],plat:[354,356,357],plate:[398,412],platform:[2,12,17,20,21,22,31,61,66,67,103,106,107,112,124,129,136,140,145,148,159,165,174,258,263,268,270,279,280,285,286,296,315,322,330,351,357,358,362,363,369,376,377,384,391,393,406,415,416,421],playback:[2,145,279,280,285,296],playstop:31,pld_0204:258,pleas:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,152,169,215,218,220,221,225,228,233,235,236,237,239,241,242,243,246,256,258,262,263,266,269,271,277,279,280,282,283,284,285,293,295,306,307,312,317,318,320,321,322,332,337,338,342,343,349,351,356,357,358,359,388,390,396,398,400,403,407,409,412,414,415,419,420,423,429],pll:[103,246,251,261,262,322],pllclk:259,plot:169,plu:[28,31,169,204,205,206,263,406,414,415,417],plug:[198,215,218,219,220,228,257,261,279,315,322,396],plural:169,pm10:96,pm1:96,pm2:96,pm:[31,117,118,129,185,215,216,220,234,240,277,279,284,292,295,371],pm_mode:31,png:[169,246,279,322,358],pnum:31,po:[169,175,414],point:[3,11,14,22,31,32,36,38,41,81,82,101,105,106,108,129,135,144,145,170,175,199,200,201,215,229,266,271,279,316,317,342,363,376,377,384,409,414,415,442],point_arrai:169,point_cnt:169,point_num:169,point_t:169,pointer:[11,14,15,16,19,23,29,32,38,101,120,126,127,136,137,144,169,199,200,201,211,212,213,342,366,369,370,373,374,378,415],pole:[293,398,403],poli:31,polici:[169,283,322],poll:[279,382],polygon:135,polynomi:[8,262],pong:[107,414],pool:[363,370,376,384],poor:316,pop:[169,258,279,341,349,400,403,409,415],popen:[175,370],popul:[144,368,373,415],popular:400,popup:356,porridg:[258,352,353,359],port:[4,11,14,26,31,38,41,48,57,61,66,72,81,88,94,106,115,120,129,131,143,173,185,186,188,189,210,214,215,216,217,220,222,225,228,229,242,256,257,258,262,269,277,278,279,284,295,306,312,317,318,322,338,342,346,349,352,353,365,381,382,383,387,394,396,398,401,403,406,412,416,421,434,440],portabl:[257,314,322],portal:[215,257,306,312,334],portcon:337,portion:[169,415],posit:[17,25,29,32,38,41,61,64,66,105,110,120,126,127,131,135,136,137,144,145,170,219,222,256,261,267,279,280,283,285,289,292,293,317,318,319,322,338,373,385,387,392,393,398,401,403,409,412,414,415,417,421],posix:[124,360,370,391,415],possibl:[100,107,112,169,198,229,246,258,263,277,279,280,292,316,322,340,341,359,375,398,400,403,412,414,415],post:[26,27,40,59,115,208,220,228,388,390],potenti:415,pour:279,pow:415,power:[0,2,14,17,25,31,57,60,75,99,100,103,106,129,131,135,141,169,172,177,188,189,197,215,220,228,232,237,245,258,263,265,270,271,276,278,279,283,284,291,292,295,304,310,314,317,318,320,321,322,337,349,363,376,377,383,384,395,403,406,409,414,415,421,429],power_kei:246,power_on_delai:31,power_pin:31,powerkei:[112,279],poweroff:[2,279],powersav:31,powershel:[173,356,359],pp:[317,396,401,403,409],ppb:95,ppm:95,ppp:266,pr:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144],practic:[169,220,232,279,322,388,414,415],pram:144,pre:[48,62,216,261,292,322,388,390,415],preamblelen:[99,100],precaut:[115,145,170,261,292,310,322,400],preced:[21,106,112,387,415],precis:[31,36,41,103,169,185,191,197,216,220,229,251,279,308,319,320,322,337,380,396,401,412,415],precompil:[339,415],predefin:[169,415],prefac:415,prefer:[89,124,136,221],preferenti:[306,312],prefilt:169,prefix:[31,169,375,387,415],prefixexp:415,preliminari:416,preload:[169,175],prematur:26,premis:[107,141,400,412],prepar:[13,104,145,156,174,184,185,191,196,202,207,214,215,216,225,232,261,266,283,322,336,343,391,400,414,415],preparatori:[388,390],prepend:415,present:[117,120,169,197,203,220,332,343,362,366,394,415],preset:412,press:[37,52,90,101,112,120,125,131,169,179,186,215,218,220,226,228,246,256,276,277,278,284,306,307,312,315,338,341,400,403,409,415],press_sta:56,pressur:[0,61,120,279,412,415],presuppos:415,prevail:[41,304],prevent:[7,20,61,75,136,177,228,229,246,279,292,362,409,412,415],preview:[31,169,243,396,409],previou:[14,20,28,36,115,141,169,173,175,180,220,225,228,258,266,279,322,342,349,385,412,414],previous:[38,169,180,263,266,279,322,415],price:[169,220,414],primari:[106,169,284,295],primit:[101,415],principl:[169,173,175,210,211,212,213,220,228,320,370,415],print:[3,4,7,18,19,20,21,22,31,34,56,61,66,72,73,79,81,85,98,103,111,113,115,116,118,124,128,130,140,169,173,175,177,178,180,187,190,192,197,203,209,210,211,212,213,215,220,221,228,242,253,269,279,292,306,312,322,323,341,342,343,345,381,382,386,388,390,392,414,416,417],printabl:415,printer:101,printf:[169,221,261,322,414,415],printout:414,prioriti:[59,106,112,118,124,175,222,261,279,322,337,357],privat:[20,26,31,62,66,107,116,124,169,362,370,398,403,412,415],privkei:116,prj:[345,346,348,349],prlh:263,prll:263,pro:[406,409],proactiv:115,probabilist:400,probabl:[112,120,222,261,279,312,315,322,359,398,400],probe:[124,346,415],problem:[26,59,107,108,111,169,215,222,229,256,258,262,263,265,268,269,279,312,322,323,331,338,342,343,344,352,353,358,359,363,370,376,378,384,400,409,414,415,417],proce:[342,415],procedur:[263,279,415,417],proceed:173,process:[2,8,13,14,17,28,31,75,103,104,106,107,112,114,115,118,123,126,128,129,143,169,175,198,199,200,201,209,210,211,212,213,215,219,220,221,228,229,258,263,268,279,281,283,292,322,337,339,342,343,349,363,370,374,375,376,384,387,392,416,417,418,419],processor:[169,204,205,206,226,270,312,364,415],produc:[197,220,336,369,372,412,415],product:[34,48,62,64,66,103,106,145,169,174,229,245,258,266,267,277,281,283,284,295,310,314,321,322,396,406,407,409,414],product_id:[31,62],product_kei:[31,64,266,280],product_secret:62,productkei:[48,61],productsecret:48,produt_id:[31,62],profession:323,profil:[268,322,415],prog:175,program:[108,112,113,169,172,175,185,216,229,242,243,251,255,263,266,268,275,312,315,322,337,341,349,363,376,384,392,394,413,417],program_:415,programm:[169,261,268,322,415],progress:[124,145,170,220,279,304,333,387,394],prohibit:[35,106,229,246,387,398,403,412],proident:169,project:[34,42,50,64,71,77,82,106,148,156,159,165,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,217,218,220,222,243,256,258,259,263,268,280,286,310,315,322,323,331,332,338,342,344,345,354,356,357,386,391,412,416,429,431],project_id:62,project_kei:266,prompt:[11,21,38,111,114,135,169,256,263,266,279,292,306,341,342,347,348,356,359,394,409,415],pronunci:[283,322],proof:258,propag:[145,170,415],proper:414,properli:[169,263,279,281,290,415],properti:[24,38,144,169,258,279,415],proport:169,proportion:169,prosecut:169,protect:[144,172,220,231,236,258,261,267,279,292,315,322,398,415],protobuf:[31,129,279,292],protobuff:[31,129],protoc:113,protocol:[31,41,61,107,120,124,140,181,182,183,204,205,206,210,211,212,213,219,220,228,246,257,266,270,271,279,283,317,318,320,322,337,363,376,380,384,393,394,398,400,403,412,415,421],protocolbuff:113,prototyp:[341,368,370,415],prove:[169,215,400,403],provid:[8,15,19,84,115,135,140,169,178,180,181,182,183,185,197,204,205,206,216,219,229,246,251,254,258,274,277,279,281,283,294,321,322,337,342,343,344,350,352,353,356,359,362,366,367,368,369,370,371,373,379,381,382,383,386,387,391,395,398,400,403,409,412,414,415,417,419],proxi:[10,365],proxy_pac:357,ps:[61,141,270,284,357],ps_max_modem:141,ps_min_modem:141,ps_none:141,pseudo:[106,279,415],psk:[124,287],psm:[106,112,279,421],psram:[118,144,220,251,304,312,331],psram_c:236,psram_clk:236,psram_d0:236,psram_d1:236,psram_d2:236,psram_d3:236,ptr:[343,364,368,369,370,387,415],ptrdiff_t:415,pub:[132,416],puback:107,pubcomp:107,publictimercbfnc:130,publish:[1,28,31,61,126,140,208,220,228,265,279,323,375,384,388,390,416,417],pubout:116,pubrec:107,puc:415,puk:106,pull:[2,14,24,28,31,33,126,131,204,205,206,220,226,228,229,234,240,246,261,262,263,271,279,284,306,312,322,337,379,400,415],pull_mod:31,pulldown:[22,33],pullup:[22,31,33,76,78,82,127,220,228,284,295,370],puls:[31,55,84,193,194,195,220,228,263,284,312],punctiv:263,punctuat:[414,415],purchas:[217,221,222,225,232,237,258,261,274,306,322,336,395,396,412,424,429,431,434,437,440,443],pure:[34,107,135,216,320,362,387,388,390,393,403,406,407,414],purpos:[24,64,75,106,143,169,246,261,312,322,337,387,415],push:[31,107,246,337,341,342,343,362,379,387,415],put:[27,40,106,169,215,220,221,228,279,289,321,341,343,358,359,369,388,390,398,414,415],puya:306,puzzl:358,pw:383,pwb:[306,312],pwd:[20,31],pwk_mode:[112,215,284],pwm00:194,pwm0:[114,193,228,231,246,267],pwm11:[284,295],pwm1:[231,246,267,284,295],pwm22:295,pwm2:[231,246,267],pwm3:[231,246,267,284,295],pwm4:[231,246,267],pwm5:[114,195,246,284,295],pwm6:246,pwm7:246,pwm:[31,33,35,61,103,120,129,172,185,216,232,251,270,278,279,283,285,292,294,296,297,304,306,308,312,322,333,337,380,419],pwm_00:236,pwm_01:236,pwm_02:236,pwm_03:236,pwm_04:236,pwm_10:236,pwm_11:236,pwm_12:236,pwm_13:236,pwm_14:236,pwm_20:236,pwm_21:236,pwm_22:236,pwm_23:236,pwm_24:236,pwm_30:236,pwm_31:236,pwm_32:236,pwm_33:236,pwm_34:236,pwm_captur:114,pwmh:114,pwml:114,pwr:[215,222,276,277,278],pwrkei:[112,276,277,278,284,295,315],pxxx:111,py:[306,307,342,354,359],pyocd:[257,258],python:[306,354],q2:412,q4:357,q:[307,339,415],qa:84,qcloud:31,qfn32:[232,233,304,333],qfn56:[220,239,304,333],qfn88:[246,304],qh:84,qio:306,qmc5883l:61,qmc5883l_data:80,qo:[31,61,279],qos0:107,qos1:107,qos2:[107,279],qq:[113,220,226,233,239,255,358,388,390],qqlb:[320,393],qr:101,qrcode:[31,38,135],qrcode_cr:31,qrcode_delet:31,qrcode_upd:31,qspi:219,quadrant:415,quailti:2,qualcomm:[31,101,129,279,426,431],qualifi:[356,357],qualiti:[2,31,48,106,169,292,306],quantiti:[106,263,304,415],quantity_:415,quantiz:263,quasi:280,queri:[31,32,59,64,75,82,106,185,191,204,205,206,216,277,279,287,292,349,365,368,415,418,421],question:[115,169,258,412,415,420],queu:370,queue:[33,107,118,132,343,364,369,370,417,418],qui:169,quick:[145,170,216,263,279,292,341,350,395],quickli:[104,112,169,179,219,279,395,396,414,415,419],quiescent:337,quit:[228,374],quo:[268,322],quot:[169,343,394,414,415,417],quotat:[414,415],quotient:415,qwer:20,qzss:[277,291,317],r1:169,r:[8,31,41,87,120,128,136,140,169,173,199,200,201,203,220,228,277,291,317,318,375,391,414,415,417],rad:[31,175],radial:169,radian:415,radic:169,radiu:[31,38,135,144,169],radius_circl:169,rais:279,ram:[6,14,103,112,144,169,219,226,234,240,246,258,261,262,279,304,386,391,395],ramrun:394,random:[8,175],randomli:107,randomse:175,rang:[31,61,77,103,106,107,112,134,135,144,145,170,177,193,220,228,229,242,246,263,279,287,289,320,337,400,401,403,406,409,412,414,415],rank:[187,415],rapid:[169,383,388,390],rapidli:400,rar:337,rare:229,raspberri:[169,332],rate:[14,24,29,31,39,72,94,105,115,126,129,136,172,188,189,210,211,212,213,215,219,220,222,228,229,233,239,242,251,259,262,265,269,270,271,277,279,291,306,312,317,318,331,337,382,386,394,396,401,406,407,409,412,415],rate_:415,rate_and_garbag:415,rather:[266,415],ratio:[13,41,106,135,219],raw:[2,21,41,43,104,120,141,322,387],raw_data:31,raw_point:31,rawdata:31,rawequ:175,rawget:[175,375],rawlen:175,rawset:175,rawvideo:173,rb:[32,173,220,228],rc522:61,rc522_authent1b:81,rc522_bit_fram:81,rc522_com_irq:81,rc522_config_isotyp:61,rc522_fifo_level:81,rc5:380,rc:[25,229],rcc:259,rcc_apb1periph_usb:259,rcc_apb1periphclockcmd:259,rcc_apb2periph_afio:263,rcc_apb2periphclockcmd:263,rcc_clockconfig:259,rcc_mco_hs:259,rcc_mco_hsi:259,rcc_mco_noclock:259,rcc_mco_pllclk_div10:259,rcc_mco_pllclk_div11:259,rcc_mco_pllclk_div12:259,rcc_mco_pllclk_div13:259,rcc_mco_pllclk_div14:259,rcc_mco_pllclk_div15:259,rcc_mco_pllclk_div16:259,rcc_mco_pllclk_div2:259,rcc_mco_pllclk_div3:259,rcc_mco_pllclk_div4:259,rcc_mco_pllclk_div5:259,rcc_mco_pllclk_div6:259,rcc_mco_pllclk_div7:259,rcc_mco_pllclk_div8:259,rcc_mco_pllclk_div9:259,rcc_mco_sysclk:259,rcc_pllcmd:259,rcc_pllmul_27:259,rcc_pllsource_hse_div1:259,rcc_usbclkconfig:259,rcc_usbclksource_pllclk_4div5:259,rclk:61,rcr:31,rd:375,rda8910:365,rddi:[261,322],rdy:[131,136],re:[11,28,31,33,99,100,116,169,199,200,201,204,205,206,208,220,228,258,259,262,263,364,392,400,403,409,414,415],reach:[85,108,118,169,261,401,409,412,414,417],reachabl:415,react:169,read:[2,12,15,17,19,26,28,29,31,32,33,41,42,43,50,51,53,59,61,64,71,75,79,82,99,103,106,108,113,116,117,118,119,120,126,129,137,138,141,143,169,173,175,177,180,184,185,197,198,202,203,207,210,211,212,213,216,217,220,228,261,262,265,266,268,277,279,283,292,308,322,323,356,357,362,364,365,367,370,373,374,379,382,385,387,388,389,392,400,414,417],read_cj_temp:61,read_datablock:61,read_fault:61,read_light:61,read_rawrc:61,read_tc_temp:61,read_tim:61,readabl:[271,391,415],readback:[401,412],readdht12:31,reader:415,readfil:[31,62,107,113,116,199,200,201],readi8:144,readi:[2,17,31,61,64,106,124,131,135,137,220,228,317,341,349,383,415],readint8:373,readm:[350,356,357],readr:[204,205,206],readreg:31,readsht30:31,readu32:144,reaet:229,real:[31,48,61,82,106,123,129,169,178,197,204,205,206,220,251,266,279,322,398,412,414,415],realign:169,realist:412,realiz:[107,198,210,211,212,213,219,220,228,229,246,259,262,284,295,306,312,322,343,372],realli:[112,144,229,266,359,415],realloc:[144,415],really_hold_their:415,reamd:350,reason:[14,108,112,169,173,268,279,312,322,343,365,375,387,394,409,415],reboot:[31,66,67,82,280],receipt:140,receiv:[4,17,26,28,29,31,41,61,62,64,66,67,72,81,85,92,99,100,106,107,123,124,126,131,132,136,137,140,141,169,185,208,210,214,216,219,220,228,258,261,271,278,279,285,292,296,312,317,318,320,322,343,364,365,369,372,380,381,382,387,414,415,416,417,418],receive_buff:61,receivebuff:[211,212,213],receiveddata:[181,182,183],recent:[306,321],recept:[55,75,136,143,220,228,279,387],recharg:246,reciproc:271,reciv:[99,131],reclaim:[414,415],reclam:279,recogn:[24,220,228,261,279,322,365,387,396],recognit:[106,219],recolor:[145,170],recommend:[0,2,7,13,15,38,41,82,94,101,103,104,106,107,108,111,116,117,118,126,133,136,143,169,172,215,216,220,221,222,226,228,229,231,236,246,256,257,258,263,268,278,284,285,286,295,304,306,312,316,322,331,341,352,353,356,357,359,360,388,390,396,398,403,412,417],recompil:[342,415],reconfigur:[42,71,261,322],reconnect:[31,62,141,258,279],reconnect_tim:31,record:[29,31,106,219,228,258,277,279,292,306,340,409,415],record_callback_tim:2,record_data:2,record_don:2,record_of:415,record_tim:31,record_typ:31,recordstop:31,recov:[106,279],recoveri:[2,106,415],rect:31,rectangl:[11,144,169,373,414],rectangular:169,recurs:415,recursion_:415,recv:[31,41,75,107,140,181,182,183,203,220,228,364,369,381,387,392],recv_buf:381,recv_cb:61,recv_len:31,recvlen:[204,205,206],recvreadi:[220,228],recycl:415,red:[11,38,144,169,278,398],redi:180,reduc:[2,103,144,169,177,193,194,195,220,222,246,265,279,280,289,316,409,412,414,415],reduct:144,redund:2,reentrant:415,ref:415,refer:[0,1,7,10,16,21,22,25,29,38,92,103,106,108,124,134,135,140,141,152,169,175,177,178,179,181,182,183,186,187,188,189,190,192,193,194,195,197,199,200,201,204,206,209,217,220,221,225,228,229,241,243,244,245,259,263,271,277,279,280,281,284,285,289,295,306,309,312,316,317,318,322,331,332,337,339,341,342,343,344,351,356,357,358,362,387,388,390,391,398,400,401,403,409,412,414,416,418,430],referenc:[101,169,415],reflect:[246,343,396],refp:246,refr_now:169,refresh:[11,32,38,39,101,169,358,366,394,403,409],refresh_r:31,reg32:31,reg:31,reg_mymath:342,regaddr:374,regard:[107,330,414,415],regardless:[94,117,144,169,269,281,358],region:[109,169,268,322,409,415],regist:[2,4,5,20,28,29,48,62,76,81,84,100,101,103,106,107,120,124,132,136,138,140,169,185,199,200,201,210,214,216,220,226,228,231,236,262,263,268,269,271,277,306,322,337,343,358,369,383,387,388,390,415,417,418],registered_roam:106,registr:[1,48,62,76,106,124,175,266,277,359,362,383,415],registri:[175,342],regul:[342,412],regular:[12,106,117,141,169,284,306,341,415,416,419],regularli:[76,139,279],regulatori:277,reimag:263,reiniti:[135,279],reissu:258,reject:106,rel:[32,49,169,266,315,331,378,415],relat:[0,11,22,29,38,41,75,104,109,119,135,144,145,170,174,221,225,229,246,256,263,266,267,269,277,279,283,294,310,314,315,322,333,338,350,357,362,365,368,370,393,394,400,415,418],relationship:[220,284,295,417],releas:[4,8,31,37,62,75,101,106,107,113,118,125,131,140,144,169,215,220,221,226,228,233,239,255,256,261,266,268,275,280,283,284,285,289,294,295,296,298,308,312,322,343,355,368,400,403,414,415,416,418],relev:[106,119,169,229,284,322,342,357,363,376,377,384,387,391,409,415],reli:[222,339,370,391,415],reliabl:[220,396,407,412],relinquish:415,reload:[261,322],reluct:172,rem:356,remain:[29,78,112,124,136,144,169,229,261,279,322,356,357,368,369,414],remaind:[337,414,415],remark:[246,284,295,395],rememb:[115,116,169,266,315,343,375,398,415],remind:[3,14,16,22,23,41,64,103,106,141,215,218,266,278,279,280,317,318,321,398,409,412,419],remot:[20,31,61,72,129,292,380,421],remote_ip:124,remote_nam:31,remote_port:[31,279],remoteip:31,remov:[7,31,32,101,128,137,145,170,175,229,243,279,307,326,356,375,387,398,412,414,417],renam:[31,175],render:[169,219,220,228,415],renderlinehighlight:218,rep:[175,220,228],repackag:279,repair:[279,292,312,400,409,412],repeat:[31,33,169,173,220,228,279,344,372,375,415],repeat_cnt:31,repeatedli:[16,221,420],repetit:[33,118,127,372,380,414],repl:[31,129,175,279],replac:[19,66,67,106,119,137,169,218,220,228,258,259,261,270,293,310,322,348,370,373,412,414,415],replai:101,repli:[107,124,169,220,228,374],report:[20,22,23,26,31,82,107,124,129,263,266,279,320,323,352,356,358,387,406,407,415],repositori:[215,285,296,342,351,352,353,356,430],reprehenderit:169,repres:[2,11,18,22,28,38,110,111,112,135,169,204,205,206,271,279,307,317,356,357,358,378,387,392,414,415,416],represent:415,reproduc:263,req_cod:61,reqaddr:61,reqal:81,reqcellinfo:[31,64,65,279],reqidl:81,reqiur:340,reqop_norm:72,reqtim:61,request:[31,40,61,75,82,106,192,234,240,263,266,279,280,368,371,375,414,415],requir:[0,2,4,8,11,13,15,17,19,21,23,26,28,33,38,40,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,59,60,62,63,64,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,103,104,106,107,108,112,115,117,118,120,123,124,131,132,136,137,140,141,145,170,172,175,177,179,180,181,182,183,188,189,190,193,194,195,199,200,201,204,205,206,208,211,212,213,220,221,225,228,229,237,246,258,263,266,277,279,280,281,284,291,292,295,304,306,315,317,318,319,320,322,326,333,339,340,341,342,344,349,350,356,357,359,360,361,362,364,368,369,370,375,378,384,386,388,390,395,396,400,407,412,414,416,417,418,420,430],reqwifi:61,rerult:144,research:[319,322],reselect:[106,215],resembl:169,resent:57,reserv:[9,28,37,101,106,112,124,125,169,322,370,378,401,415],reset:[11,14,31,38,56,61,99,112,120,135,138,139,169,199,200,201,215,220,222,226,232,234,240,246,251,256,257,258,261,276,277,278,279,292,295,306,308,312,322,337,338,394,409],reshap:120,residu:[263,279,292],resist:[229,231,236,246,258,262,267,306,312,317,400],resistor:[0,229,246,261,262,263,322,400,401,412],resiz:[31,145,170],resolut:[6,38,61,124,169,173,219,251,279,304,396,401,412,431],resolv:[263,415],reson:112,resourc:[1,4,33,107,140,204,205,206,215,219,220,232,255,258,279,280,289,292,297,310,314,322,323,326,350,369,370,391,395,413,414,415],resp:[59,365,375],respect:[75,169,177,210,211,212,213,220,222,228,242,278,378,400,401,412,414,415,417],respond:[27,59,64,66,67,209],respons:[26,59,107,215,219,220,229,266,279,292,362,363,364,376,384,415],rest:[169,220,228,414,415],restart:[7,28,82,103,106,112,118,215,218,220,229,268,269,279,280,317,322,338,352,353,356,357,396,403,415,417],restaur:417,restor:[103,141,143,169,268,306,317,322,365,414,415],restrict:[295,415],result:[0,2,3,6,7,8,12,14,17,19,28,30,33,36,58,59,61,64,66,67,72,81,82,94,95,96,103,106,112,114,116,119,120,124,126,130,141,144,169,173,178,181,182,183,198,210,215,220,228,261,262,279,292,317,322,337,343,358,375,381,382,383,384,398,400,403,409,412,414,415,416,417,418],resum:[2,101,132,175,417,418],resurrect:415,ret:[32,114,116,141,280,343,374,375],retain:[31,61,119,279,326,415],retransmiss:107,retri:[12,107,138,279,292],retriev:[169,266,415],retstat:415,reus:[22,75,103,141,229,246,261,278,279,284,295,304,322,415],reusabl:306,rev:416,revc:[204,205,206],revers:[8,32,38,75,135,169,175,178,199,200,201,279,338,398,400,403,412],revert:[31,387],review:[266,415],revis:[251,258],reviv:415,revvc:[204,205,206],rewrit:[222,268,279,322,415],rewritten:269,rf:[106,232,237,268,277,322],rgb565:[31,251,312,331],rgb565be:173,rgb888:251,rgb:[4,38,87,101,169,173,312,322],rgb_data:87,rgb_date:87,rgb_file:173,rh:[45,53],right:[3,11,28,29,38,55,66,101,135,169,172,218,256,258,271,279,338,341,398,403,409,412,414,415,421],right_fit_typ:169,rio:415,rippl:229,risc:304,riscv:270,rise:[22,33,284,321],risk:[258,398,403,412,415],riski:412,rle:[104,169],rle_match:104,rmc:41,rmd:20,rmdir:31,rmt:312,rndi:315,road:[61,306,337],roam:106,roberto:415,robot:279,robust:415,role:[378,415],roll:[145,170,263,387],rollback:279,roller1:169,roller:[145,170],roller_:169,roller_cr:169,roller_demo:169,roller_get_selected_str:169,roller_mode_infinit:169,roller_part_bg:169,roller_part_select:169,roller_set_opt:169,roller_set_visible_row_count:169,rom:[169,317,366,378,386],romf:391,room:[169,228],root:[18,108,280,350,356,357,415],roreg_func:342,roreg_int:342,rotable2:342,rotable_reg:341,rotable_reg_t:342,rotari:61,rotat:[31,55,106,145,170,337,403,415],rotation_angl:169,rough:[136,306,319,322],roughli:[222,356,357,417],round:[135,169,415],rout:[246,258],router:[269,279,292],routin:[145,171,174,220,228,263,322,332],row:[32,145,170,221,222,230,235,242,261,264,276,277,278,279,322,365,378,414,415],row_cnt:169,rp2040:322,rp2040_pcb:[322,332],rrc:[106,279,292],rs232:210,rs485:[210,279],rs485_delai:31,rs485_gpio:31,rs485_level:31,rs8554:412,rs:394,rsa:[31,129,287],rshift:120,rsrp:31,rsrq:31,rssi:[31,131,141,383],rst:[40,61,138,220,226,256,257,258,306,312,338],rst_pin:31,rt:[220,226,258,355,362,383,394,395],rtc:[31,41,112,129,185,216,234,240,246,251,261,279,292,297,304,322,333],rtc_setprescal:263,rtcauto:31,rtcm:317,rtime:31,rtk:[316,319,322,393],rtkv:[61,421],rto:[24,31,66,67,82,129,177,179,280,322,339,360,361,364,369,370,372,391,417],rtos_msg:[364,369],rtos_msg_t:343,rtr:[31,72],rtrim:31,rtt:[355,369],rtt_root:355,rtthread:355,rule:[78,175,220,228,263,266,271,279,283,322,350,414],rule_:415,run:[4,23,31,38,50,76,77,112,129,169,175,177,180,181,182,183,185,188,189,190,193,194,195,199,200,201,204,205,206,208,211,212,213,215,216,218,219,220,221,222,225,228,229,234,240,243,256,258,279,280,290,312,317,322,328,338,339,342,343,349,352,353,360,361,364,365,369,370,371,387,394,395,409,414,417],running_script_:415,runtim:[108,112,169,415],rx0:229,rx:[31,210,211,212,213,220,226,228,231,236,256,257,267,273,279,308,312,317,338],rx_bit:31,rx_done:100,rx_error:100,rx_hwtimer_id:31,rx_len:31,rx_pin:31,rx_timeout:100,rxbuf:85,rxbuff:31,rxclear:31,rxcontinu:[99,100],rxd:[226,317,318],rxdata:28,rxe:[261,322],rxlen:31,rxpacket:61,rxsize:[31,107],ry:31,s1:414,s2:414,s3:[312,313,322,414],s3_pcb:[314,322],s5:289,s:[2,4,5,11,12,19,20,22,32,34,38,41,62,66,89,90,99,101,103,106,107,108,118,124,131,144,169,172,173,175,179,180,198,209,215,218,220,221,228,243,246,256,258,263,268,278,279,284,287,289,306,307,322,331,333,338,340,341,342,343,349,350,355,356,362,363,364,365,367,368,376,380,382,383,384,387,388,389,394,407,414,416,417,419],s_intermitt:415,s_loader_:415,s_n_:415,sacrif:409,safe:[169,383,415],safer:415,safeti:246,sai:[220,228,258,268,277,322,356,357,414,415,416],said:[107,315,413,414],sale:[281,420,423],same:[2,5,8,14,16,22,24,33,59,68,75,78,89,90,103,106,107,108,111,112,113,124,130,169,215,220,228,239,263,265,269,277,279,280,281,284,289,295,306,312,318,322,343,352,353,356,357,358,367,378,387,392,400,409,414,415,417,418,419],sampl:[2,4,6,22,31,41,71,169,185,216,220,222,228,251,261,268,270,306,322,337,357,388,390,396,400,401,406,407,409,412,414],sample16:71,sample1:71,sample2:71,sample4:71,sample8:71,sample_count:61,sample_r:[6,31],san:169,sar:[251,312,337],sarasa:279,sat:41,satellit:[41,283,285,291,317,318,320,322],satellites_track:41,satisfi:[78,414],satur:169,saturdai:78,save:[2,4,15,19,41,57,82,103,106,107,112,135,141,143,169,172,185,204,205,206,216,218,219,256,258,265,271,277,307,316,317,321,322,343,352,357,369,409,414,415,421],save_path:31,sayhi:341,sb_mode:169,sba:277,sc12a:31,sc7a20:61,sc7a20_data:83,sc:[138,141],sc_result:141,scalabl:169,scale:[38,145,170,173,366,368],scale_end_color:169,scale_grad_color:169,scale_width:169,scan:[4,31,61,104,134,258,263,279,285,296,320,333,337,350,356,357,383,387,407,415,424],scan_mod:31,scan_period:31,scanresult:31,scatter:[172,225,258,322],scdma:287,scell:[31,131],scenario:[82,132,234,240,247,279,280,284,285,296,304,311,318,349,363,376,384],scene:[306,312,349,370],scenic:101,schedul:[54,66,67,169,208,306,363,376,384,417,418],schema:415,schemat:[181,182,183,193,194,195,199,200,201,204,205,206,211,212,213,220,225,229,232,242,244,246,257,258,260,267,278,309,313,322,332,334,335,429,431,443],scheme:[41,48,215,258,268,271,295,322,356,357,376],scienc:400,scientif:279,sck:[76,258],scl:[31,61,93,135,179,181,182,183,220,228,284],scl_pin:61,sclk:61,scm:322,scon:355,scope:[145,170,289,415],score:[7,305],scr2:101,scr:[31,220,228],scr_act:[31,169,220,228],scr_load:[31,169,220,228],scr_load_anim:31,scr_load_anim_over_left:101,scrambl:28,scratch:415,screen:[4,31,38,101,111,129,135,169,179,185,216,219,220,228,237,279,293,295,306,322,336,349,396,398,403,407,431,434],screen_label:169,screenshot:[246,266,322,358,403],screw:[398,412],scrip:330,script:[84,89,118,169,186,216,219,228,232,237,245,265,266,279,280,281,285,286,289,292,296,297,310,322,323,328,341,347,349,350,351,352,353,359,361,364,365,367,386,391,394,395,413,414,415,416],script_addr:386,scrlbar_mode_:169,scrlbar_mode_auto:169,scrlbar_mode_drag:169,scrlbar_mode_hid:169,scrlbar_mode_off:169,scrlbar_mode_on:169,scrlbar_mode_unhid:169,scroll:[145,170,172,409],scrollabl:[145,170],scrollbar:169,scrollbar_mode_off:169,sd:[2,14,16,32,118,119,169,173,220,228,322,367,391],sd_mount:[220,228],sd_read:31,sd_user_main:118,sd_write:31,sda:[31,61,93,135,179,181,182,183,220,228],sda_pin:61,sdat:31,sdcard:118,sdhc:137,sdio:[14,31,129,232,251,259,262,270,271,304,312,322,331,333],sdio_clk:[220,228,236,312],sdio_cmd:[220,228,236,312],sdio_d0:[220,228,236,312],sdio_d1:[220,228,236,312],sdio_d2:[220,228,236,312],sdio_d3:[220,228,236,312],sdk:[1,222,256,258,262,322,337,354,361,370,393],sdk_appid:31,sdl2:[360,361],sdl:360,sdram:251,sea:41,seal:312,seamless:270,search:[31,61,81,106,107,118,218,221,277,279,315,320,341,349,352,353,357,415],search_cell_tim:31,searcher:175,searchpath:175,seat:[398,403],sec:[41,78,108,117,197,220,415],sec_h:103,sec_l:103,second:[2,8,12,15,38,41,59,64,76,78,82,103,106,107,108,110,112,118,120,124,130,135,140,169,177,181,182,183,185,191,197,215,216,219,220,221,229,258,263,276,277,278,279,284,306,315,316,317,318,323,338,341,343,365,387,392,403,414,415,416,417,418],second_exp:415,secondari:[15,19,169,279,284,285,406],secondli:400,secondtick:190,secret:[31,48,62,116,129,262],section:[152,169,181,182,183,220,225,228,263,271,278,322,356,387,414,415],sector:[14,81,185,207,216],secur:[178,220,270,279,383,415],securit:383,sed:169,see:[4,22,29,67,82,103,106,107,110,117,124,135,141,144,169,173,186,195,199,200,201,204,205,206,211,212,213,215,218,220,221,222,226,228,229,238,243,256,258,262,263,284,295,306,315,316,326,331,338,341,342,392,398,403,409,414,415,421],seeall:417,seed:415,seek:[31,32,175,211,212,213,373],seek_cur:[32,144],seek_end:[32,144],seek_set:[32,144,373],seem:[322,415],seen:[177,193,204,205,206,215,220,262,331,342,370,414],seg10:238,seg11:238,seg12:238,seg13:238,seg14:238,seg15:238,seg16:238,seg17:238,seg18:238,seg19:238,seg1:238,seg20:238,seg21:238,seg22:238,seg23:238,seg24:238,seg25:238,seg26:238,seg27:238,seg28:238,seg29:238,seg2:238,seg30:238,seg31:238,seg3:238,seg4:238,seg5:238,seg6:238,seg7:238,seg8:238,seg9:238,seg:31,seg_data:61,seg_mark:31,seg_set:31,segment:[31,84,89,90,129,140,169,237,266,279,317,318,322,336,415],select:[11,14,20,22,25,26,38,41,43,55,57,59,61,75,78,84,89,90,95,96,99,101,103,106,107,121,122,124,126,135,136,138,140,145,170,175,184,191,196,199,200,201,202,204,205,206,207,214,215,218,220,221,225,228,229,235,236,237,239,246,251,256,257,258,261,262,266,269,271,279,283,284,292,295,306,307,312,317,321,322,330,331,337,338,341,356,357,358,386,391,395,396,400,403,407,417],selector:[145,170],self:[66,67,82,145,170,258,265,280,306,330,331,337,352,353,359,398,400,403,409,415],sell:169,seller:306,sem:370,semant:415,semaphor:370,semicircl:169,semicolon:[342,415],send:[12,25,31,35,40,61,62,72,73,75,84,85,89,90,101,106,107,115,124,131,132,135,136,143,169,184,185,203,204,205,206,210,214,216,220,228,229,261,271,277,279,285,292,296,317,318,322,343,363,365,372,374,376,381,382,384,387,392,394,416,417],send_buf:381,send_buff:61,send_data:31,send_finish:416,send_len:31,send_ok:137,sendbuff:[31,211,212,213],senddisplaydata:61,sender:143,sendlen:[204,205,206],sendmsg:[31,68],sendnec:[31,75,380],sendqueu:[220,228],sens:[6,120],sensit:[82,415],sensor:[28,31,61,82,102,105,129,131,134,172,181,182,183,217,220,228,237,246,279,280,297,322,331],sent:[28,29,35,68,72,84,106,107,115,120,123,124,126,131,136,137,140,169,210,261,279,291,292,318,322,343,372,373,380,381,387],sentenc:[220,228,263,280,415],sep:[175,414],separ:[31,41,106,169,181,182,183,258,265,295,365,378,387,394,396,414,415,417,418],separator_posit:169,septemb:[106,131,169],seq_typ:31,sequenc:[4,31,75,124,129,169,203,210,211,212,213,220,228,381,382,403,415,429],ser1:169,ser2:169,ser:169,seri:[0,17,22,29,41,103,106,111,112,115,117,141,144,145,170,215,217,220,222,228,229,235,236,237,239,246,256,258,261,262,263,280,281,299,304,315,316,320,322,323,338,342,351,358,373,395,396,398,400,406,407,414,415,417,429,431],serial:[4,14,20,31,36,41,57,81,84,89,103,106,107,115,124,129,140,143,173,181,182,183,185,199,200,201,203,204,205,206,210,214,216,217,220,225,228,233,239,242,246,251,256,257,258,269,278,279,284,295,306,307,309,312,317,322,337,338,349,365,381,382,383,387,394,396,398,401,403,412,415,416,421,434,440],series_t:169,seriou:106,serv:[106,169,279],server:[12,20,26,31,40,59,61,62,64,65,66,67,82,107,116,124,129,140,268,277,279,280,289,292,308,320,322,415],server_cert:[20,31,61,62,107],servic:[27,38,65,82,92,106,131,258,263,279,287,358,415],session:107,set:[0,2,4,7,8,11,14,15,31,33,37,38,39,41,44,46,54,57,59,61,64,71,72,77,78,81,83,88,89,90,98,99,100,101,103,106,107,110,111,112,115,118,120,123,124,126,127,131,135,136,137,138,140,141,143,145,170,180,185,190,191,193,194,195,197,198,215,216,218,220,222,226,228,229,233,234,239,240,242,256,258,261,262,269,270,279,280,283,284,292,295,306,308,322,331,337,338,355,356,357,359,364,365,370,371,373,379,381,382,383,387,391,394,396,398,401,409,413,414,415,417],set_accepted_char:169,set_act:169,set_align:169,set_angle_offset:169,set_anim_tim:169,set_arc_length:169,set_avgsel:61,set_bit_mask:61,set_btn_ctrl:169,set_btn_ctrl_al:169,set_btn_width:169,set_btns_po:169,set_cap:31,set_cell_merge_right_t:169,set_cell_typ:169,set_channel:31,set_check:169,set_cmod:61,set_color:169,set_color_mod:169,set_color_mode_fix:169,set_ctrl_map:169,set_cursor_blink_tim:169,set_cursor_click_po:169,set_cursor_hidden:169,set_cursor_manag:169,set_cursor_po:169,set_day_nam:169,set_debounc:22,set_dir:169,set_edge_flash:169,set_highlighted_d:169,set_hsv:169,set_hu:169,set_id:31,set_irqf:61,set_map:169,set_max_height:169,set_max_length:169,set_mirror:169,set_mod:[61,169],set_month_nam:169,set_one_check:169,set_one_lin:169,set_opt:169,set_placeholder_text:169,set_pwd_mod:169,set_pwd_show_tim:169,set_recolor:169,set_rxconfig:31,set_scal:169,set_scrollbar_mod:169,set_select:169,set_set_i:415,set_show_select:169,set_spin_tim:169,set_src:169,set_src_til:169,set_stat:169,set_static_opt:169,set_static_text:169,set_symbol:169,set_tab_act:169,set_tc_typ:61,set_text:169,set_text_align:169,set_text_label:169,set_text_sel:169,set_thresh:61,set_tile_act:169,set_tim:[46,61],set_today_d:169,set_txconfig:31,set_typ:169,set_usbclock:259,set_valid_posit:169,set_valu:169,set_visible_row_count:169,set_width:169,set_xxx:169,setapnet:383,setauto:31,setband:31,setbaseyear:31,setbitmapmod:31,setblinktim:61,setbright:61,setbu:31,setcap:33,setclk:[31,188,189],setcolor:31,setcontrast:31,setctx:31,setdefaultpul:31,setdelai:31,setdn:31,setdrawcolor:31,setfont:[16,31,179,220,228,358],setfontmod:31,setframebuff:[31,120],setfreq:61,setgpio:31,sethook:175,setjmp:415,setlevel:[31,187],setlight:61,setloc:175,setlocal:175,setmac:[31,269],setmetat:[175,375],setmod:31,setnewsmscb:[31,131],setpath:31,setpaus:415,setpin:279,setpix:373,setpowersav:[31,279],setpwm:61,setrang:31,setstanet:383,setstat:61,setstepmul:415,setstrt:263,sett:[31,279],settable_ev:415,settimeout:31,setup0_process:263,setup:[14,31,41,42,44,45,47,49,50,51,52,53,54,56,60,61,63,69,70,72,73,74,75,77,79,80,81,83,85,86,87,91,105,111,112,115,127,141,143,169,173,181,182,183,186,188,189,203,204,205,206,210,211,212,213,220,221,228,279,284,295,370,379,381,382,387,403],setupbreatel:61,setupbuff:31,setupdevic:387,setupr:[181,182,183,204,205,206],setupvalu:175,setuservalu:175,setvbuf:175,setwin:31,setxtal:31,seven:169,sever:[82,103,107,144,145,170,210,211,212,213,215,220,228,229,266,322,343,362,396,412,414,415],sfd:[31,129,185,216],sfdp:[199,200,201],sfud:[31,129,185,216,232,279,289,292,322,333],sfud_devic:[122,220,228],sfuddevic:[199,200,201],sgm2019:236,sh1106:135,sh1107:135,sh1108:135,sh:339,sha1:[31,34,116,178,304],sha1_stream:8,sha256:[31,34,178,287,349],sha256_stream:8,sha384:287,sha512:[31,178],sha:[287,304],shadow:[135,169],shake:[22,37,112,215,279,284],shall:[41,169,229,258,304,344,350],shape:[3,144,169,415],share:[33,75,219,220,228,383,384,393,407,412,415],shdn:93,sheet:[78,204,205,206,226,257,260,262,334,335,337],sheet_1:[177,195],shell:[396,430],shen:306,shget:360,shield:[61,269,362],shift595:61,shift:[31,84,112,117,136,255,285,296,396,398,401,403,406,415,421],ship:277,shipment:256,shop:[226,233,239,262,337],short_src:415,shortcut:[218,359,415],shorten:169,shortest:415,shot:208,should:[0,3,7,17,41,64,89,90,106,124,126,135,141,169,209,218,220,222,226,228,229,246,263,271,277,279,280,306,312,316,317,342,344,362,365,366,368,375,414,415,417,430],show:[25,31,66,67,88,145,170,186,220,246,358,365,396,398,403,412,414,415],show_520:172,show_520_h:172,show_520_w:172,show_data:172,show_otaurl:66,showimag:31,shown:[75,210,220,221,222,256,257,258,263,304,306,338,398,400,409,414],shown_dat:169,showonlin:218,shrink:[169,415],sht30:[28,220,228],shunt:400,shunt_voltag:60,shut:[185,207,216,246,284,412,415],shutdown:[2,20,31,62,103,107,140,169,246,263,279,284,292],si24r1:61,si24r1test:85,si:72,sibl:415,side:[12,38,84,107,110,116,124,126,135,169,258,271,315,398,400,414,415,419],sieg:172,sig:31,sigma:337,sign:[21,31,103,144,169,387,414,415],signal:[11,28,41,73,75,84,101,106,141,177,204,205,206,220,228,229,246,263,277,279,306,316,379,383,415],signatur:[21,116,178,279],signifi:414,signific:65,significantli:229,silenc:187,silent:[2,98,187],silk:[111,306],sim0:[106,279],sim1:106,sim2:[284,295],sim:[106,123,131,279],sim_id:31,sim_ind:[106,417,418],sim_pin:131,sim_wc:[106,131],simerr:76,simid:31,similar:[12,19,22,28,34,40,107,124,135,136,144,169,180,199,200,201,220,222,228,256,304,338,362,370,391,412,414,415],similarli:[169,340,348,414,415,416],simpin:31,simpl:[8,26,82,106,115,140,145,170,172,173,181,182,183,198,220,228,263,269,271,279,306,345,349,379,387,388,389,413,415,417],simpler:279,simplest:[20,48,107,388,390,414,418],simpli:[118,169,193,194,195,220,228,338,414,415,417],simplifi:[130,169,215,365,414,415,421],simsun_48:169,simul:[28,101,135,137,169,284,295,322,330,339,349,395,409,412,419],simultan:4,sin:[175,337],sinc:[17,21,36,75,144,169,218,220,256,258,262,263,279,306,312,338,396,398,403,409,415,416,430],sine:[229,412,415],singl:[2,9,33,38,41,57,65,71,75,93,101,105,107,114,115,120,124,140,145,170,185,216,220,228,258,263,279,283,285,286,296,316,317,318,320,321,322,330,337,342,365,369,370,372,391,393,414,415,416,417],singleshow:61,sinh:415,sink:258,sint:169,sit:169,site0:26,site:[266,306],situat:[136,138,215,229,263,271,280,343,412,415],six:[8,61,169,403],sixth:[64,414],siyuan:366,size:[4,8,13,14,18,26,29,31,32,59,84,97,99,100,104,107,110,118,124,131,136,144,145,170,175,180,199,200,201,204,205,206,220,225,228,232,233,235,242,245,251,255,258,261,262,264,275,276,277,278,279,280,281,292,297,304,306,310,312,321,322,333,342,356,357,358,363,366,369,376,378,382,384,386,394],size_t:[110,341,366,368,369,370,372,387,415],sizeof:[144,343,374],skei:31,skill:[266,387],skip:[32,126,169,211,212,213,356,414,417],sky:316,slave:[29,75,126,181,182,183,203,220,228,251,263,265,271,284,337,381],sleep1:[277,371],sleep2:[277,284,371],sleep:[2,31,81,99,100,103,112,118,131,136,192,219,229,234,240,261,270,278,279,284,292,295,322,337,371],sleepcmd:38,sleepcount:337,slice:[306,415],slide:169,slider:[145,170],slider_:169,slider_cr:169,slider_demo:169,slider_get_valu:169,slider_part_bg:169,slider_part_ind:169,slider_part_knob:169,slider_set:169,slider_set_rang:169,slider_type_:169,slider_type_norm:169,slider_type_rang:169,slider_type_symmetr:169,slightli:[169,193,194,195,221,412,414],slip:398,slogan:124,slot:[106,312,415],sloval:[268,322],slow:[2,28,50,52,73,77,116,169,215,218,220,228,258,263,279,284,292,306,312,315,366],slower:[28,104,106,169,221,284,289,331],slowli:[177,415],sm1:[21,262],sm2:[31,129,279],sm2decrypt:31,sm2encrypt:31,sm2sign:31,sm2verifi:31,sm3:[31,129,262,279],sm3hmac:31,sm3updat:21,sm4:[31,129,262,279],sm4decrypt:31,sm4encrypt:31,sm7:262,sm9:21,sm:[31,106,124,129,279,285,287,292,296,331],small:[4,6,121,124,126,136,144,169,193,194,195,216,219,228,258,271,276,278,279,280,284,285,292,312,321,396,398,400,403,407,412,415,417,419],smaller:[13,106,124,169,258,317,318,414,415],smallest:[398,413,415],smart:[219,261,322],smartconfig:31,smartphon:169,smartpro:263,smartwatch:169,smd:270,smooth:169,smoothli:[220,228],sms_only_regist:106,sms_only_registered_roam:106,sn:31,snail:383,snap:[169,429],snippet:[279,415],snowman:135,snq:106,snr:[31,41,131],sntp:[31,41,131,277,279],sntp_connect:279,sntp_port:31,sntp_server:31,so:[6,17,72,84,88,106,111,112,121,128,131,132,136,143,144,169,172,177,178,179,185,215,218,220,228,229,246,256,258,263,268,269,271,276,277,279,284,290,306,307,315,321,322,331,338,342,343,357,369,370,386,391,395,403,409,412,414,415,417],soc:[2,4,84,89,103,124,136,145,169,170,171,173,174,180,187,208,209,215,218,220,222,234,239,240,247,256,266,280,281,283,307,311,316,322,323,329,342,350,352,353,356,357,358,359,388,389,390,394],soc_air101_v0008:350,soc_air601:266,soc_download:394,soc_script:265,soc_v0001_esp32c3_rc2:311,soc_v0005_air105:247,soc_v0007_air101:234,soc_v0007_air103:240,soc_v0017_air101:[84,89],soc_v1001_ec618:356,soc_v1001_ec718p:357,soc_v1001_ec718pv:292,soc_v1002_ec718pv:292,soc_v1105_ec618:280,soc_v1105_ec618_ful:280,soc_v1105_ec618_tt:280,soc_v1108_ec618:280,soc_v1108_ec618_cloud:280,soc_v1108_ec618_ful:280,soc_v1108_ec618_tt:280,soc_v1108_ec618_tts_onchip:280,socket:[12,20,31,41,61,106,107,129,132,138,140,265,277,279,280,292,297,308,333,344,365,387,392,398,403,416],socket_ctrl:124,soft:[105,261,276,285,296,317,322,409],soft_kb_inc:125,softap:270,softi2c:28,softkb:[31,129],softspidevic:126,softwar:[2,11,21,28,31,38,50,61,73,77,78,112,126,129,131,135,136,184,185,191,196,202,207,214,216,218,229,232,246,257,258,259,261,262,268,269,270,279,283,284,295,306,319,322,337,363,372,376,384,394,400,403,406,407,415],solari:415,sold:[398,400,403,423],solder:[307,312],solid:[135,258],solut:[41,107,220,228,261,263,268,279,283,322,356,357,363,376,384,412,413],solv:[15,19,28,107,111,222,229,256,263,265,269,279,338,343,358,359,378,414],some:[0,2,6,22,28,31,32,38,65,76,82,106,111,112,117,118,124,127,129,135,139,141,145,152,169,171,188,189,190,192,197,204,205,206,215,218,220,221,222,246,258,261,262,268,277,279,284,289,292,307,320,322,343,345,349,352,371,387,391,398,400,403,409,412,414,415,416,419],someon:415,someth:[17,66,67,130,169,176,218,220,228,364,414,415],sometim:[13,169,279,409,414,415],somewhat:415,song:179,soni:380,soon:[12,279,292,375],sop:412,sort:[169,175,278,287,362,378,414],sota:266,sound:[2,5,6,278,279],sourc:[12,30,33,41,44,103,108,143,145,170,172,197,199,200,201,217,219,220,225,229,237,246,261,262,266,271,279,280,285,296,306,312,315,322,330,332,337,341,342,360,370,378,380,391,396,398,403,413,414,415,416,417,421],source_32k:31,source_main:31,source_sans_16:366,south:41,sp:251,space:[5,6,14,15,16,17,19,28,38,66,126,128,135,136,137,144,169,172,204,205,206,255,263,266,279,280,285,290,292,296,307,321,323,331,341,352,356,357,359,387,414,415],spacer:414,spacer_posit:169,spare:372,spawn:415,spe:[261,322],speak:[34,116,169,188,189,222,266,414],speaker:[2,278,289],spec_v1:204,special:[12,23,31,106,107,109,112,129,141,169,188,189,190,192,218,258,279,283,289,295,310,314,322,331,356,359,362,387,388,389,412,414,415],specif:[0,1,11,17,21,24,25,28,29,38,39,64,65,66,92,99,100,103,106,107,109,119,130,169,177,185,202,216,220,222,228,241,246,251,256,261,262,267,268,279,281,285,296,306,312,316,322,338,342,350,351,356,357,358,364,365,369,370,373,384,386,391,396,400,403,407,409,414,415],specifi:[2,4,8,9,11,17,20,22,32,38,41,82,84,89,90,101,107,109,110,112,114,115,122,124,126,128,130,132,133,135,141,144,169,185,207,209,216,266,277,279,322,326,363,365,366,373,376,377,383,384,387,396,398,409,414,415],specification_v1:[193,267],specified_script_:415,specimen:169,speech:[283,322],speed:[2,4,14,19,31,41,103,126,145,170,181,182,183,203,204,205,206,215,218,219,220,222,228,229,251,256,257,258,271,279,283,284,304,306,312,315,316,322,338,394,401,406,412,414,415],speed_knot:41,speed_kph:41,speed_typ:31,spend:417,spent:417,spi0:[11,38,126,220,278,284,295],spi0_c:[236,284,295],spi0_clk:[236,246],spi0_csn:246,spi0_miso:[236,246,284,295],spi0_mosi:[236,246,284,295],spi0_scl:[284,295],spi1:[126,263,284,295],spi1_c:[236,284,295],spi1_clk:236,spi1_csn:246,spi1_miso:[236,246,284,295],spi1_mosi:[236,246,284,295],spi1_sck:246,spi1_scl:[284,295],spi2:126,spi2_c:[306,312],spi2_ck:[306,312],spi2_csn:246,spi2_miso:[246,306,312],spi2_mosi:[246,306,312],spi2_sck:246,spi3:126,spi3_miso:312,spi3_mosi:312,spi3_sclk:312,spi4:126,spi5:[242,295],spi5_c:295,spi5_clk:[246,295],spi5_csn:246,spi5_miso:246,spi5_mosi:246,spi5_r:295,spi5_rst:295,spi5_scl:295,spi:[4,11,14,16,23,24,31,38,71,72,75,81,85,97,99,100,103,120,129,135,138,172,173,185,186,198,202,216,217,226,232,246,251,261,265,268,270,278,279,280,283,285,289,292,294,296,297,304,308,310,312,322,333,337,349,376,377,384,387,391,392,394,434,440],spi_0:[75,126,138],spi_12s_flag_bsi:263,spi_12s_flag_tx:263,spi_12s_getflagstatu:263,spi_1:126,spi_2:126,spi_3:126,spi_4:126,spi_bandr:31,spi_c:[31,72,135,199,204,205,231,253,267,271],spi_clk:[199,204,205,253,271],spi_cmd:263,spi_dc:135,spi_dev:31,spi_devic:[17,31,61,66,220,228],spi_eink:11,spi_flash:[199,200,201,204,205,206,220,228],spi_hw_4pin:135,spi_i25_dmareq_rx:263,spi_i2s_dmacmd:263,spi_i2s_dmareq_tx:263,spi_i2s_flag_bsi:263,spi_i2s_flag_rxn:263,spi_i2s_flag_tx:263,spi_i2s_getflagstatu:263,spi_i2s_receivedata:263,spi_i2s_senddata:263,spi_id:[11,31,61,100,126,135,381],spi_lcd:[38,173,220,228],spi_lora:100,spi_mcp2515:72,spi_miso:[72,75,199,204,205,231,253,267,271],spi_mosi:[72,199,204,205,231,253,267,271],spi_r:135,spi_rc522:81,spi_sck:[72,231,267],spi_si24r1:85,spi_slav:265,spi_spe:31,spiclk:306,spiconfig:31,spics0:306,spid:306,spidevic:387,spidon:126,spiflash:[17,66,118,199,200,201,204,205,206],spihd:306,spiid:[14,31,173,199,200,201,204,205,206,381],spiid_or_spidevic:31,spinbox:[145,170],spinbox_cr:169,spinbox_decr:169,spinbox_decrement_event_cb:169,spinbox_demo:169,spinbox_incr:169,spinbox_increment_event_cb:169,spinbox_part_bg:169,spinbox_part_cursor:169,spinbox_set_digit_format:169,spinbox_set_padding_left:169,spinbox_set_rang:169,spinbox_set_step:169,spinbox_set_valu:169,spinbox_step_prev:169,spinner:[145,170],spinner_:169,spinner_cr:169,spinner_demo:169,spinner_part_bg:169,spinner_part_ind:169,spinner_type_:169,spinner_type_constant_arc:169,spinner_type_fillspin_arc:169,spinner_type_spinning_arc:169,spiq:306,spiwp:306,spix:263,spk:[278,291],spl06:61,spl06_01:61,spl06_data:86,splice:[220,228],split:[31,145,170,415,417],spot:[101,315,383],spr_i2s_cetflagstatu:263,sprinkl:246,sprintf:415,sqrt:175,squar:[22,101,169,220,228,337,415],sram:[144,251,263,270,312,337,352],src:[169,342,348,350,352,353,359],ss:416,ssd1306:[135,179,220,348,349],ssd1306_128x32:135,ssd1309:[135,279],ssd1322:135,ssd1683:11,ssec:124,ssi:337,ssid:[31,265,383],ssl:[20,31,48,124,279,287],ssllog:31,st7565:279,st7567:135,st7735:[38,173,186,220,322,348,349,437],st7735v:38,st7789:[38,434],st7796:38,st:263,sta:[20,107,124,141,265,269,308,383],stabil:[103,229,246,266,279],stabl:[124,258,396,407,412,415],stabli:[258,263],stack:[106,107,124,175,217,279,292,341,342,343,362,364,365],stack_to:415,staff:[420,423],stage:[169,312,394,395,415],stagger:106,stai:[263,412,415,417],staip:31,stamp:[34,306,312],stand:[169,415],standalon:[365,415],standard:[21,29,41,72,75,124,144,175,246,261,279,289,322,342,365,370,373,375,391,396,403,414],standbi:[2,99,100,106,118,219,277,285,291,295,296,317,318,321,412],standi:31,star:[28,277,341,430],start2:31,start:[0,7,11,12,17,22,28,31,32,38,40,41,61,66,93,97,106,107,112,118,119,120,121,122,124,126,135,140,141,145,170,173,177,179,185,199,200,201,204,205,206,209,210,211,212,213,215,216,220,222,229,231,232,236,246,263,266,267,269,271,277,279,284,289,322,337,339,343,346,349,352,353,359,363,365,366,370,375,376,383,384,387,394,395,396,398,409,415,416,417],start_angl:169,start_auto_clos:169,startraw:31,startswith:31,startup:[2,12,103,106,124,185,191,215,216,225,256,284,295,304,317,322,338,342,343,372,383,415],stat:[106,140,415],state:[2,5,22,29,31,37,41,61,81,106,112,125,129,130,131,143,144,145,170,215,219,229,246,261,277,279,284,295,322,331,338,363,376,379,384,387,400,409,412,414,415,416,417],state_check:169,state_default:169,state_disconnect:107,state_focus:169,state_mqtt:107,state_press:169,state_readi:107,state_sconnect:107,statem:[31,129,331,333],statement:[19,41,111,115,175,279,280,287,292,317,330,342,343,356,365],statement_:415,statements_and:415,station:[41,61,106,131,141,221,270,277,279,292,319,322,352,353,359,383,393,395,421],statist:[106,131,279,403,415],statu:[1,5,9,15,26,29,31,33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,103,107,111,115,119,124,125,131,133,134,137,138,145,170,175,181,182,183,198,199,200,201,228,231,236,263,267,268,279,284,292,295,304,322,333,363,376,383,384,387,417,418],status:417,status_cod:375,stderr:415,stdin:[370,415],stdint:222,stdout:[370,415],steer:[61,292],step:[101,112,169,180,185,211,212,213,216,218,263,266,312,314,322,342,356,359,365,396,400,406,414,415],stepin:365,stepout:365,stereo:29,stick:[398,414],sticker:398,still:[2,24,82,112,124,136,140,169,180,220,228,261,269,279,280,284,289,295,307,315,316,317,322,331,339,356,358,365,374,396,398,414,415],stm32cubeprogramm:263,stm32f103c6t6:262,stm32f103c8t6:262,stmflashload:263,stock:429,stop:[31,44,73,103,112,136,141,169,185,210,211,212,213,216,220,228,256,261,262,279,306,312,317,318,322,338,343,363,371,372,376,382,383,384,406,414,415,418],stop_bit:31,stopap:31,storag:[5,17,66,169,180,246,366,386,415],store:[2,4,6,13,16,17,29,33,61,66,75,82,104,124,126,136,137,169,180,219,266,277,289,326,342,350,367,376,378,386,388,389,390,391,398,403,409,414,415,417,418],storge_loc:[31,61],stori:349,str1:414,str2:414,str3:414,str4:414,str:[4,31,124,144,179,220,228,373,382,414,415],straightforward:[289,415],strang:266,strategi:[169,415],strawberri:[332,396,401,412],strcmp:169,stream:[4,31,104,144,173,279,367,415],strength:[106,141,383,417],stress:[101,103],stretch:169,strftime:[108,415],strict:263,strictli:[387,398,403,415],string:[1,2,3,4,5,6,8,9,11,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,30,31,32,34,36,38,40,41,44,48,53,57,58,59,62,64,65,66,68,72,75,76,81,82,83,85,90,92,94,96,97,98,99,100,101,103,104,106,107,108,109,113,115,116,118,119,120,121,122,123,124,126,129,130,131,132,135,136,137,138,140,141,142,143,144,169,175,180,181,182,183,185,191,199,200,201,203,204,205,206,214,216,220,228,279,289,341,342,359,365,373,387,388,389,394,416,417],string_:415,string_can:415,stringdata:180,strip:175,strong:[31,129,169,246,316,415],strongli:[133,266,278,352,353,370,396],strt:263,strtoll:[31,279],struct:[343,366,369,374,378,385,415],structur:[6,8,97,103,121,122,169,175,217,295,340,343,352,353,356,357,359,362,363,376,384,393,414,417],stuck:[120,312],studi:[220,228,258,316,414,419],studio:[34,218,361],sty_en:31,sty_zh:31,style:[31,145,170,179,185,216,279,283,322,363,376,384,403,415],style_cr:[31,169],style_delet:31,style_init:[101,169],style_lin:169,style_list:101,style_list_cr:31,style_list_delet:31,style_list_t:31,style_screen_label4_main:169,style_screen_label_main:169,style_set_image_recolor:169,style_set_image_recolor_opa:169,style_set_line_color:169,style_set_line_round:169,style_set_line_width:169,style_set_text_color:169,style_set_text_font:169,style_t:[31,169],su:[169,287],sub:[28,41,132,169,175,220,228],subcallback:[416,417],subcontract:[279,292],subject:[48,101,107,415],sublibrari:415,submask:31,submiss:384,submit:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,266,369,393],submodul:[354,415],subnet:[138,383],subroutin:414,subscrib:[31,37,41,55,56,61,72,99,100,106,124,125,131,134,141,185,216,220,228,343,416,417],subscript:[48,62,106,131,144,343,392,417,418],subsequ:[4,38,112,124,126,135,136,144,169,199,200,201,256,263,279,295,318,342,400,414,415],subset:[317,318,415],substandard:414,substitut:415,substr:[414,415],subsystem:251,subtl:41,subtract:[3,169,280,414,415],subtyp:415,succ:[17,28,29,106,124,126],succe:[28,123,243,269,292,372,415],succeed:[30,112,415],success:[1,2,4,5,6,8,9,11,13,14,15,17,18,19,20,21,22,23,27,28,29,30,32,36,38,39,41,42,43,44,45,47,48,51,53,54,56,57,60,63,64,65,66,67,68,70,71,73,74,77,78,79,80,82,83,85,86,87,88,91,93,94,95,96,97,100,101,102,103,104,105,106,107,108,109,112,113,114,116,117,119,120,121,122,123,124,126,127,131,132,134,135,136,137,139,140,141,143,144,177,180,181,182,183,199,200,201,222,251,256,263,277,279,292,316,317,356,357,358,359,372,381,382,383,387,400,415,417],successfulli:[2,4,5,17,32,64,75,85,107,112,116,121,124,126,141,144,199,200,201,220,263,279,307,312,316,317,349,358,381,382,387,394,414,415,418],sudo:[173,360],suffici:[104,124,136,263,415],suffix:[31,220,228,266,280,286,342,352,353,374,386,415],sugar:415,suggest:[169,340,341,412,415],suit:[8,48,283,322,395],suitabl:[11,41,103,126,169,172,258,284,304,356,357,359,374,413,414,415,421],sum:[169,414,415],summari:[322,331,387,388,389],sundai:[78,415],sunni:316,sunt:169,superimpos:412,superpro:263,supplement:[61,118,132,251,279,415],supplementari:[333,365,414],suppli:[0,2,25,75,112,169,177,197,220,228,229,245,258,277,291,310,314,315,317,318,321,322,337,349,396,403,406,407,412,415,429],support:[0,1,2,4,5,6,7,8,11,14,15,16,19,20,21,22,23,24,26,27,28,29,31,36,38,39,41,55,59,61,64,65,73,75,76,82,90,99,101,103,104,106,107,112,114,115,116,117,121,123,124,126,127,128,129,131,134,135,136,137,139,141,144,145,170,172,175,190,199,200,201,204,205,206,215,219,220,225,228,231,236,237,241,246,251,257,258,261,262,265,267,270,271,276,277,278,279,280,283,284,285,287,289,292,294,295,296,297,304,306,308,312,319,322,323,336,337,339,341,350,357,358,362,363,366,370,372,373,376,378,380,384,387,391,395,396,398,403,406,407,414,416,417,419,421,431],support_empti:415,suppos:[169,269,340,414,415,417],sure:[28,32,38,101,126,131,144,169,220,228,229,243,280,284,286,341,342,349,356,357,358,398,414,415],surg:[246,398,412,414],surpris:414,surround:[204,205,206,320,415],suspend:[220,228,263,306,312,363,376,384,415,416,417,418],svc_handler:222,svd:331,svn:344,sw1:169,sw2:169,sw:[222,256,258,261,322,338],swap:[31,415],swclk:[222,226,263],swd:[222,225,256,258,263,279,322,337],swd_clk:[256,257,338],swd_dio:[256,257,338],swdclk:[256,257,338],swdio:[222,226,256,257,263,338],swing:[145,170],swipe:[169,266,279,349,357,359,391,400],switch_:169,switch_creat:169,switch_demo:169,switch_get_st:169,switch_off:169,switch_on:169,switch_part_bg:169,switch_part_ind:169,switch_part_knob:169,switch_toggl:169,swm181:[322,334,335,336,337],swm181_lib:337,swm181_pcb:[322,336],swm181cbt6:[322,334,335],swm181xb:338,swm81:337,sx1268:[99,100],sxx32:263,sxx32f103:[261,262,322],sxx32f1xx:[261,322],sxx32f1xx_dfp:263,sxx32f1xx_hal_msp:263,sy:[11,17,22,24,26,28,29,31,37,38,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,60,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,99,100,101,103,105,106,107,112,114,118,120,124,125,126,129,134,139,140,141,169,172,173,177,179,180,181,182,183,185,188,189,190,193,194,195,197,198,199,200,201,203,204,205,206,210,211,212,213,216,220,228,277,280,339,340,342,343,360,361,363,372,376,382,384,386,387,391,416,417],symbol:[2,6,11,38,110,135,144,145,170,258,331,356,374,387,392,409,414,415],symbol_:169,symbol_backspac:169,symbol_battery_ful:169,symbol_bel:169,symbol_clos:169,symbol_directori:169,symbol_dummi:169,symbol_edit:169,symbol_fil:169,symbol_left:169,symbol_minu:169,symbol_ok:169,symbol_plu:169,symbol_right:169,symbol_sav:169,symbol_set:169,symbtimeout:[99,100],symmetr:[8,169,178],symmetri:[145,170,337],sync:[106,251],synchron:[41,61,106,124,131,181,182,183,203,204,205,206,220,228,229,263,279,292,370,394,396,401],synctim:31,synergi:175,syntact:415,syntax:[175,341,346,387,413,414],synthes:[266,289,349],synthesi:[41,286,289,363,376,384],synthet:[41,268,322],synwit:338,sys_pub:[375,384],sys_send:[68,132],sys_wait:[124,132],syscfg:222,sysplu:[11,26,31,68,129,280],syst:20,system:[2,4,8,12,13,14,17,20,25,31,32,33,41,64,65,66,97,101,104,106,108,118,119,122,124,129,145,170,175,185,202,208,215,216,219,220,222,228,232,246,251,255,256,258,261,262,266,275,279,283,284,295,297,306,312,322,326,337,338,339,343,361,362,363,364,366,368,376,384,385,386,388,389,394,421],system_air001xx:[225,322],systemclock_config:222,systemcoreclock:338,systeminit:338,systick_config:338,systick_handl:[222,338],sz:[135,415],t0h:31,t0l:31,t1:[0,175],t1h:31,t1l:31,t2:[0,175],t3324:106,t5:289,t9000:263,t:[11,14,19,23,27,28,31,41,45,49,53,65,66,82,86,103,106,108,117,119,120,121,124,169,172,173,175,197,211,212,213,218,220,228,229,256,261,266,279,280,289,315,317,322,338,339,342,343,352,353,357,358,359,372,375,379,387,388,390,396,398,403,414,417],ta1:169,ta:169,ta_cursor_last:169,ta_event_cb:169,ta_loc:169,ta_set_edge_flash:169,ta_set_insert_replac:169,ta_set_scroll_propag:169,ta_temp:31,tab1:169,tab2:169,tab3:169,tab:[31,145,170,220,256,258,338,412],tab_pag:169,tab_pos_top:169,tabal:26,tabl:[2,4,8,10,11,14,15,16,19,20,22,25,26,27,28,30,32,36,38,40,41,44,45,47,48,52,53,54,59,60,62,63,65,67,69,70,72,73,74,75,78,80,81,82,83,86,87,89,90,91,92,99,100,103,104,105,106,107,108,112,113,117,122,124,125,128,132,135,136,140,141,144,145,170,175,180,185,202,216,220,228,232,237,244,246,254,268,271,274,279,284,287,292,295,306,307,312,322,340,343,364,374,375,378,386,387,392,394,400,401,409,412,417],table_:415,table_cell_style_cnt:169,table_cr:169,table_demo:169,table_i:415,table_part_bg:169,table_part_cell1:169,table_part_cell2:169,table_part_cell3:169,table_part_cell4:169,table_ref:415,table_set_cell_align:169,table_set_cell_crop:169,table_set_cell_typ:169,table_set_cell_valu:169,table_set_col_cnt:169,table_set_col_width:169,table_set_row_cnt:169,table_typ:169,tableconstructor:415,tablet:400,tabul:415,tabview:[145,170],tabview_:169,tabview_add_tab:169,tabview_cr:169,tabview_demo:169,tabview_part_bg:169,tabview_part_bg_scrl:169,tabview_part_ind:169,tabview_part_tab_bg:169,tabview_part_tab_btn:169,tabview_set_tab_nam:169,tabview_tab_pos_non:169,tac:31,tag:[31,120,130,145,170,199,200,201,279,387,391,415,417],tagtyp:81,tail:[6,128,373,415],tailor:414,take:[0,4,12,33,82,98,102,103,105,106,112,113,124,144,169,172,173,175,204,205,206,243,263,266,271,279,280,284,289,290,292,295,321,330,341,343,352,353,356,357,359,362,369,373,375,392,394,395,398,400,414,417],taken:[11,82,101,124,135],talk:[5,169,173,415],tamb:246,tan:175,tangent:415,tanh:415,taobao:[226,233,239,258,262,275,306,337,396,412,420,423,434,437,440,443],tar:415,target:[30,31,40,41,59,108,199,200,201,222,256,279,280,284,286,338,359,403,412,414,415],task1:[132,418],task1_don:418,task2:418,task3:418,task:[19,26,68,76,82,130,132,185,216,217,279,342,363,376,384,387,388,390,414,415,416,417],task_:417,task_a_cnt:417,task_b_cnt:417,task_read:61,task_recv:61,task_timer_id_max:417,taskdel:31,taskdisable_interrupt:263,taskexec:343,taskget:343,taskid:417,taskinit:[17,24,26,31,42,43,44,45,46,47,49,50,51,52,53,54,56,57,60,63,64,65,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,106,120,124,141,173,177,179,180,181,182,183,188,189,190,193,194,195,198,199,200,201,203,204,205,206,208,220,228,339,342,343,360,361,375,382,387,416,417],taskinitex:[31,68],taskl:61,tasklt:61,tasknam:[31,61,124],tasktimerid:417,tasktimerpool:417,tb:113,tc:[71,261,322],tc_temp:71,tcount:130,tcp:[34,106,107,124,140,279,285,292,296,297,421],tcp_ssl:[292,297],tcptcp:107,tcs3472:61,tctype_:71,tctype_b:71,tctype_j:71,tctype_k:71,tctype_n:71,tctype_r:71,tctype_t:71,td:287,tdd:[106,276,285],te:263,teach:[258,307],tear:[315,398],technic:[1,222,237,256,266,280,283,306,322,331,338,396,400,415],techniqu:414,technolog:[193,194,195,320],telecom:[123,131,277,279,285,287,296],tell:[22,169,277,414],temp1:120,temp:[0,52,69,74,82,414],temp_data:173,tempbit:[181,182,183],temperatur:[0,28,31,54,61,74,82,120,129,181,182,183,217,220,228,229,231,236,246,251,253,267,279,331,372],templat:[222,348,362,415],tempor:169,temporari:[103,350,356,357,414,415],temporarili:[75,106,124,169,284,292,295,331,414,415],ten:[400,409,415],tencent:[34,58,62,156,265,279,320,393],tengxun:[61,279],term:[169,246,266,363,376,384,415,420],term_sequence_to:415,termin:[169,173,263,357,396,398,412,415,417],test1:208,test2:208,test:[11,21,23,32,34,38,41,48,62,65,75,84,89,94,103,106,118,141,148,156,159,165,169,177,180,188,189,190,199,200,201,204,205,206,208,210,215,220,221,222,228,229,232,237,243,245,261,279,280,287,292,310,316,322,330,336,348,349,350,366,381,382,387,388,390,396,398,400,406,409,412,415,416,417,419,421],test_123123:375,test_data:208,test_json:350,testabl:344,testcrypto:142,testdemo:416,tester:400,testlbsloc:64,testmsgpub:416,testmsgsub:416,testsm:21,text:[13,104,111,123,135,142,145,170,216,258,289,356,360,374,395,415],text_line_spac:169,textarae_:169,textarea:[145,170],textarea_:169,textarea_add_char:169,textarea_add_text:169,textarea_cr:169,textarea_cursor_down:169,textarea_cursor_left:169,textarea_cursor_right:169,textarea_cursor_up:169,textarea_del_char:169,textarea_get_text:169,textarea_part_cursor:169,textarea_set_scroll_propag:169,textarea_set_text:169,textur:169,texture_atla:169,tf:[14,16,61,119,137,173,220,228,279,292,391],tf_c:[14,173],tft:[251,331,431,434,440],tft_:431,tg_pr:169,tgz:354,th:414,than:[0,7,12,13,25,28,32,33,35,40,59,65,82,92,103,104,106,118,124,130,135,144,169,181,182,183,188,189,190,215,219,220,228,229,251,258,259,261,262,265,277,279,284,289,316,317,318,322,331,341,356,357,370,372,385,398,400,403,409,414,415,417],thank:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,341,409],that_long:415,the_:415,the_act:415,the_al:415,the_bord:415,the_catch_i:415,the_continu:415,the_d_th:415,the_error:415,the_integration_load:415,the_iter:415,the_load:415,the_mag:415,the_meta:415,the_metatable_:415,the_n:415,the_n_catch:415,the_n_equ:415,the_n_her:415,the_n_lay:415,the_n_level:415,the_name_:415,the_not:415,the_pan:415,the_protect:415,the_step:415,the_upp:415,the_y_at:415,thei:[34,169,178,263,278,316,342,359,414,415,417],them:[38,106,135,169,177,256,258,263,279,284,295,330,340,342,365,369,398,400,407,412,414,415,417,420],them_primitive_:415,theme:[62,101,107,145,170],theme_appli:169,theme_get_font_smal:169,theme_set_act:31,theme_spinbox_btn:169,themselv:[359,415],theoret:[21,107,220,228,316],theori:[356,414],therebi:[169,317,318],therefor:[103,106,169,263,312,356,370,398,409,415,417],thermal:[312,412],thermocoupl:61,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,152,156,159,165,169,170,171,172,174,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,220,221,222,228,229,231,235,236,237,239,241,243,256,258,259,263,265,266,267,277,278,279,280,284,285,286,295,296,299,306,307,312,315,316,317,322,330,338,340,341,342,343,345,350,352,353,356,357,358,359,362,364,365,367,368,369,370,373,375,381,383,385,386,387,391,392,395,398,400,403,409,412,414,415,416,417,418,419,430],thick:[31,169],thin:[169,414],thinbug:339,thing:[34,107,169,186,220,228,229,263,266,277,383,414,415,417],thingscloud:393,think:[169,176,220,228,322,392,414],third:[28,64,130,169,181,182,183,261,318,320,322,387,391,403,414,415,417,418],third_exp_:415,this_meta:415,those:[106,277,415,418],though:415,thought:[220,228],thousand:[103,415],thread:[7,132,175,279,322,342,343,355,362,369,383,395,417,418],three:[11,21,28,34,38,61,75,107,111,169,172,215,219,220,222,228,246,266,277,316,331,343,370,373,412,414,415,417],threshold:[31,44,83,106,169,220,228],through:[0,4,12,22,28,41,58,59,82,101,104,106,112,122,143,169,198,208,209,211,212,213,215,219,220,221,222,228,229,234,240,246,261,269,279,280,284,289,292,295,306,312,320,321,322,330,337,340,342,349,352,353,363,364,365,366,369,370,372,376,384,391,394,396,398,409,414,415,416,417],throughout:[199,200,201,415],thrown:415,thu:[169,219,279,415],ti:258,tick1:31,tick2:31,tick64:[31,124,190],tick:[22,31,33,41,108,131,145,170,185,191,209,216,222],tick_int_prior:222,tick_per:103,tick_str:103,tickperu:190,ticks1:[188,189,190],ticks2:[31,188,189,190],ticks32:103,tid:[130,208],tie:61,tielview:169,tight:101,tighten:398,tightli:398,tile1:169,tile2:169,tile3:169,tile:[145,170],tileview:[145,170],tileview_:169,tileview_add_el:169,tileview_cr:169,tileview_demo:169,tileview_set_edge_flash:169,tileview_set_tile_act:169,tileview_set_valid_posit:169,tim1_ch4:263,tim1_etr:263,tim2:[261,322],tim2_ch1_etr:263,tim2_ch2:263,tim2_ch3:263,tim2_ch4:263,tim2_remap:263,tim3_irqhandl:263,tim5:[261,322],tim:[261,322],tim_clearitpendingbit:263,tim_cmd:263,tim_getitstatu:263,tim_it_upd:263,tim_itconfig:263,tim_opmode_singl:263,tim_selectonepulsemod:263,tim_setcount:263,time:[2,4,6,12,13,14,17,22,26,27,29,31,33,34,35,40,41,44,46,57,59,61,62,64,65,66,67,75,82,101,103,104,112,120,123,124,129,130,131,136,137,145,170,172,175,181,182,183,197,204,205,206,220,222,228,229,234,240,243,246,251,256,261,265,266,269,271,277,279,289,292,295,306,308,312,317,318,319,322,338,342,343,350,357,358,360,369,370,372,387,396,398,400,403,412,414,416,417,418,419],time_inact:61,time_m:169,time_t:370,time_tick:31,time_u:31,timea:31,timeb:31,timeout:[26,31,59,61,66,82,101,107,124,131,187,209,220,228,279,292,308,343,369,372,417,418],timeout_tim:279,timer0:33,timer1:279,timer4:279,timer:[19,31,33,46,57,78,101,112,118,129,130,131,136,139,175,185,192,210,214,216,220,226,228,232,237,245,251,261,262,279,292,304,310,322,331,337,343,363,364,369,370,371,376,384,417],timer_handl:343,timer_id:[112,131,372],timer_start:[31,417],timer_stop:[31,372,417],timerid:417,timerloopstart:[22,31,66,67,139,208,210,211,212,213,280,416],timerout:372,timerpool:417,timerstart:[31,118,208,220,228,416],timerstop:[31,118,208],timerstopal:31,timestamp:[8,34,108,117,124,261,265,279,322],timezon:[31,279],timx:263,tin:312,tinder:409,tinyml:219,tip:[218,339,414],titl:[41,145,170,362],tkip:383,tl:[34,62,124,265,270,279,283,322,421],tld:[385,391],tlink:61,tm1637:61,tm1638:350,tm1640:61,tm1650:61,tm1650_kcb:90,tm8211:29,tm:124,tm_hour:54,tm_mdai:54,tm_min:54,tm_mon:54,tm_sec:54,tm_wdai:54,tm_year:54,tmp:[53,128,350],tmpfile:175,tmpname:175,tname:415,to32:31,to64:31,to_:415,to_garbag:415,to_set_:415,tobase32:31,tobase64:[8,31],toc:169,tocod:31,todai:[11,38,135,169,173,414],today_d:169,todo:[37,125,146,147,149,150,151,153,157,158,160,161,162,163,164,166,167,168,176,179,227,248,249,301,303,324,327,349,364,365,370,425,433,436,439],togeth:[112,169,277,365,398,400,414,415,423],toggl:[31,169,315,403],tohex:[3,13,21,31,64,75,81,103,104,106,109,110,113,116,121,138,141,178,188,189,190,198,203,204,205,206,210,220,228,392],toidx:415,tointeg:175,token:[31,82,415],tolumb:414,tone:169,tonumb:[128,175,414],too:[101,111,124,169,177,215,218,229,279,292,306,312,316,317,342,343,356,358,359,369,398,400,412,414,415,429],tool:[15,19,103,112,115,169,216,221,226,229,256,261,266,269,274,281,284,292,295,297,306,322,330,339,361,362,386,396,406,407,409,412,414,415,419],toolbar:222,toolchain:[356,360],top:[11,38,135,144,169,221,258,289,343,387,403,409,415],top_fit_typ:169,topic:[31,61,126,319,322,343,375,384,414],topolog:396,toss:307,tostr:[31,175,414],total:[14,15,18,19,26,29,33,41,81,97,106,118,122,124,169,177,181,182,183,194,229,251,263,266,271,280,304,331,362,363,376,378,384,385,386,394,415,417],total_count:368,total_kb:14,total_len:386,total_sat:41,total_sector:14,totp:[31,279],touch:[31,101,106,120,129,131,169,237,322,412,414],touch_sensor:241,touchkei:[31,129,241],touchkey_inc:134,tovalu:31,tp:[31,415],tpara:61,tpname:31,trace:[229,246,415,421],traceback:175,traceswo:[261,322],track:[219,277],tract:29,tradit:126,traffic:[106,124],trail:415,train:106,transceiv:[136,210,211,212,213,220,228],transfer:[31,41,84,136,143,181,182,183,204,205,206,211,212,213,220,228,261,279,322,343,364,381,401,412,415,421],transfer_done_top:31,transform:[3,22,169,263,414,415],transit:[71,101,143,169,280],translat:[323,415],transmiss:[28,35,75,94,106,112,124,126,140,178,181,182,183,210,211,212,213,220,228,251,263,271,279,280],transmit:[14,59,106,121,124,126,141,210,211,212,213,219,220,228,263,271,312,374],transmitt:[210,211,212,213,220,228],transpar:[135,145,170,421],transplant:[258,261,322],transport:124,travers:[415,417],treasur:[396,398],treat:[169,414,415],treatment:[393,415],tree:[38,222,415,422,432,435,438],tri:[106,289,400,415],trial:29,triangl:[135,320],trick:[400,401],trigger:[22,78,107,112,118,124,136,184,185,216,220,228,261,278,284,322,337,338,343,365,370,379,396,403,409,415],trim:31,trimmer:[145,170],trimtrailingwhitespac:218,triod:[259,262],tripl:[34,107],triplet:34,trng:31,troubl:[268,322,341],troubleshoot:[232,263,322],troublesom:[82,198,220,228,343,374,375],true_track_degre:41,truli:106,truncat:[32,144,279,391],try_ipv6:59,tsec:124,tsl2561:61,tsl2561_data:91,tssop20:225,tstg:246,tt:[29,31,279,280,283,285,292,296,297,322],ttf:169,ttl:[210,211,212,213,306],tts_onchip:[279,280],tube:[61,84,124,229,412],tune:[33,136],tupl:34,turn:[0,2,5,7,9,12,20,22,28,30,38,41,55,76,82,89,90,106,107,112,114,118,124,130,134,135,136,137,139,140,141,169,177,185,192,196,207,215,216,220,222,228,246,258,261,276,277,278,279,284,291,292,295,306,312,315,322,333,349,363,376,378,384,396,398,403,415,418],turnkei:[280,395],turnov:322,tutori:[22,110,126,130,136,144,145,171,184,191,196,202,207,214,218,220,221,225,228,232,237,243,245,254,261,283,294,310,312,322,331,336,341,351,352,353,359,387,395,398,409,418],tuya:[31,62],tv:229,twai:312,twice:[169,261,279,289,322,414,415,417],twinkl:220,two:[11,14,22,26,38,41,65,101,103,107,135,169,172,177,181,182,183,185,191,199,200,201,204,205,206,210,214,216,218,220,222,228,230,235,236,237,239,242,246,261,264,266,269,270,276,277,278,279,284,306,312,315,318,322,330,337,342,343,356,357,359,365,378,396,400,409,414,415,417,418,427],tx0:229,tx:[29,31,59,61,210,211,212,213,220,226,228,256,257,312,338],tx_:124,tx_done:100,tx_hwtimer_id:31,tx_ok:124,tx_pin:31,tx_timeout:100,txbuff:31,txconfig:31,txd:226,txfp:[261,322],txpacket:61,txstat:31,txt:[20,32,41,108,119,123,169,199,200,201,220,228,280,357,359,391],type:[0,1,2,4,5,7,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,170,175,180,185,199,200,201,214,216,246,263,266,278,279,284,289,306,312,315,322,337,350,356,357,358,363,364,369,373,376,378,384,386,387,388,389,394,398,401,403,412,416,417,418],type_font:358,type_funct:415,type_rect:169,type_si:12,type_thread_:415,type_usr:12,typec:[215,258,306,396],typedef:[366,374,378,385,415],typic:[2,7,28,39,41,101,103,141,169,220,222,228,229,266,281,283,294,322,401,409,412,415],tz:31,u0_rx:306,u0_tx:306,u16:144,u1_rx:[210,211,212,213],u1_tx:[210,211,212,213],u32:144,u4:322,u64:144,u8:144,u8g2:[10,16,31,129,179,279,280,285,292,296,333,352,358,378],u8g2_font_unifont_t_symbol:135,u8g2_get:31,u8g2_load:31,u:[124,137,169,175,257,258,421],uart0:[115,136,211,212,213,220,228,229,278,279,284,295,304,306],uart0_ct:246,uart0_rx:[231,236,246,253,267,284,295,306],uart0_tx:[229,231,236,246,253,267,273,284,295,306],uart1:[136,185,210,214,216,220,228,278,279,284,295,306],uart1_ct:246,uart1_rt:246,uart1_rx:[220,228,231,236,246,253,267,273,284,295,306,312],uart1_rxd:284,uart1_tx:[220,228,231,236,246,253,267,273,284,295,306,312],uart2:[41,57,103,277,278,279,284,291,295],uart2_ct:246,uart2_rt:246,uart2_rx:[231,236,246,253,267,277,284,295,312],uart2_tx:[231,236,246,253,267,284,295,312],uart3:295,uart3_ct:246,uart3_rt:246,uart3_rx:[231,236,246,267,295],uart3_tx:[231,236,246,267,295],uart485:[279,292],uart4_rx:[231,236,267],uart4_tx:[231,236,267],uart5_rx:236,uart5_tx:236,uart:[4,31,41,59,94,103,106,115,129,143,185,188,189,209,216,217,232,246,251,270,277,279,283,291,292,294,297,304,306,312,319,321,322,323,337,365,369,374,376,377,384,392],uart_br:61,uart_data:106,uart_id:[31,61,136,220,228],uart_recv_id:[220,228],uart_tx:136,uartid:[95,96,210,382],uartimeout:[220,228],uarttask:[220,228],uatt0_rx:273,ubuntu:[356,357],uc1701:135,uc6228:317,uc6228ci:317,uc:330,uco:417,ucs2:30,ucs2b:30,ucs2betoutf8:30,ud:[368,370,387,415],udata:[13,104,175],udelai:31,udisk_attach_sdhc:31,udisk_detach_sdhc:31,udp:[61,124,279,285,292,296,297,421],udpsrv:61,uev:263,ui:[179,218,280,285,289,296,360,361,406],ui_upd:179,uid:[61,220,228],uint16_t:[263,271,366,374,378,385],uint32:373,uint32_t:[101,169,222,263,364,366,367,369,371,372,374,378,381,382,385,387],uint64:103,uint64_t:343,uint8:[373,374],uint8_t:[222,263,271,366,367,370,371,374,378,381,382,385],uion:374,ulink2:263,ullamco:169,ult:175,ultim:276,ultra:[217,258,277,279,320,421],ulwip:265,unabl:[65,225,229,265,279,292,308,322,323,331],unambigu:344,unari:415,unauthor:178,unavail:292,uncertain:415,unchang:[144,417],uncheck:[145,170],uncom:[352,353,359],uncompress:31,unconfigur:2,uncontrol:278,uncov:[283,322],uncreat:415,undeclar:414,undefin:415,under:[2,16,24,27,76,108,169,199,200,201,220,222,229,246,256,266,269,279,283,294,315,318,322,323,330,338,341,342,356,357,360,361,365,398,400,415],underli:[1,9,14,24,29,31,32,41,75,101,103,105,106,107,111,112,124,129,133,135,139,169,175,192,209,216,265,266,278,279,280,281,292,323,341,342,358,361,370,372,374,395,415,421],underlin:[387,415],underscor:[387,415],understand:[82,138,169,217,266,284,295,339,341,342,398,403,415,416,417],understood:[38,414,417],undervoltag:[251,337],unequ:[144,415],unexpect:[169,220,228],unfamiliar:417,unfil:78,unfinish:415,unhid:169,unic:306,unicod:[30,135,169,378,415],unicode_max:378,unicode_min:378,unicode_w:378,unicom:[123,131,277,296],unifi:[169,258,289,386],unifont_t_symbol:16,uniform:[279,342,366,415],uniformli:[358,415],uninstal:[258,279,292],union:415,uniqu:[82,103,106,107,138,185,191,216,266,269,343,415,417,418],unique_id:[12,31,62,82,106,188,189,190,331],unit:[0,2,9,12,14,15,19,22,26,28,29,39,41,62,74,93,99,100,103,106,107,112,117,120,133,134,136,138,140,177,246,263,279,289,350,372,400,412,414,415,417,418],univers:[199,200,201,210,211,212,213,215,220,228,242,258,269,366,403,415],unix:415,unknow:106,unknown:[5,9,37,39,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,93,94,95,96,103,106,111,112,119,124,125,133,134,137],unless:[75,112,113,130,133,169,229,277,342,364,415],unlik:[263,289,340,414,415],unlimit:[59,279],unload:101,unlock:[106,109,310,322,430],unmount:31,unnecessari:412,unop:415,unpack:[8,31,129,175,220,228,279,373,375,392,417],unpars:[279,292],unplug:215,unposit:41,unpredict:415,unprotect:[415,417],unreach:415,unread:415,unreason:279,unregist:[106,383],unreli:412,unrepres:415,unrespons:28,unrol:415,unscii:169,unsign:[3,103,110,144,289,374,392,415],unsignen:144,unsold:263,unstabl:400,unsubscrib:[31,61,417],unsuccess:322,unsupport:[137,263],until:[7,28,106,112,118,124,173,312,365,415,417],unus:417,up:[5,14,15,19,21,22,24,28,33,38,72,99,101,106,112,115,117,121,123,124,126,132,133,141,145,170,175,192,193,194,195,204,205,206,211,212,213,220,222,226,228,231,232,234,236,240,246,251,256,258,261,262,263,266,267,270,271,279,284,285,290,292,295,296,306,312,316,320,321,322,337,349,350,365,369,371,378,379,388,390,391,396,398,403,409,414,417,418,429],updat:[8,17,26,38,48,76,82,101,103,131,135,145,170,179,216,221,255,261,263,269,275,277,279,292,316,317,318,322,323,337,349,351,355,356,357,365,387,409,415],upgrad:[19,31,61,111,118,129,256,257,258,262,265,268,270,279,283,289,292,306,312,322,338,396,398,406,416,421],uplink:[5,106,107],uplinkb:106,uplinkgb:106,upload:[12,20,59,82,137,220,221,228,266,279],upload_zbuff1:31,upload_zbuff2:31,upon:415,upper:[11,38,101,105,135,169,175,218,256,263,398,412,414],uppercas:[8,169,387,414,415],upstream:[106,271],upvalu:415,upvalueid:175,upvaluejoin:175,urg:344,uri:[27,31],url:[31,59,66,67,128,268,279,322,387,414],urlencod:[26,31,59],us:[0,2,4,6,7,8,9,10,11,12,14,15,16,17,18,19,22,23,24,26,28,31,32,33,35,36,37,38,41,42,44,45,46,47,48,50,51,52,53,54,56,57,59,60,61,63,64,65,66,67,68,69,71,72,74,75,76,77,79,80,81,82,83,84,85,86,87,88,91,93,94,95,96,101,103,104,106,107,108,109,111,112,115,116,117,118,119,120,124,126,128,129,130,131,133,135,136,138,140,141,143,145,169,171,173,175,177,178,179,180,181,182,183,185,186,187,188,189,190,192,193,194,195,197,198,202,203,204,205,206,209,210,214,215,216,218,219,220,221,225,228,229,239,243,246,256,259,261,262,265,267,268,269,270,273,277,278,279,280,281,284,285,286,287,289,291,292,295,296,307,310,312,315,317,319,320,322,326,328,332,336,337,338,339,340,341,342,344,347,349,350,351,352,353,356,357,359,360,361,362,363,365,366,367,368,370,375,376,377,378,383,384,385,386,387,388,390,392,393,394,395,396,398,401,403,407,409,413,414,416,417,419,424,427,429,431,434,437,440,443],us_h:103,us_l:103,usag:[1,12,21,29,42,44,45,46,47,49,50,51,52,53,54,55,56,57,60,63,64,66,67,69,70,71,72,73,74,75,76,77,79,80,81,83,84,85,86,87,88,89,91,92,93,94,95,96,103,106,107,110,116,118,140,141,144,145,170,185,216,232,261,262,265,279,292,322,342,345,349,374,387,396,398,403,409,415,417],usart1_ct:263,usart1_rt:263,usart:[226,261,322],usb:[4,8,14,31,106,112,124,129,210,211,212,213,215,220,228,245,251,257,258,261,262,279,283,285,294,296,304,306,312,315,322,333,365,396,398,401,403,406,407,421],usb_d:306,usb_istr:263,usb_uart:279,usba:258,usbapp:[31,129],usbboot:[294,322],usbclk:259,usbdm:263,usbdp:263,use_full_assert:222,use_ipv6:31,use_lvgl_simsun_48:169,use_spiid_init:[199,200,201],use_zbuff:[211,212,213],useless:[0,263,394],user:[1,2,4,8,12,15,19,20,26,31,35,62,64,66,67,75,76,90,98,106,107,112,118,124,137,169,177,178,180,181,182,183,185,187,188,189,190,199,200,201,204,205,206,209,216,219,220,225,226,244,256,258,263,266,279,280,284,295,304,322,323,337,338,344,347,348,349,362,368,369,370,371,374,375,379,381,382,383,386,387,388,390,396,398,401,403,407,409,412,415,417,418],user_data:124,user_flag:31,user_msg:208,user_nam:[31,34],user_script:326,user_stop:2,userdata:[6,8,11,15,16,17,19,23,25,26,30,32,38,40,66,68,71,97,100,101,107,121,122,124,126,135,140,143,169,415],userid:62,userkei:62,usernam:[31,106],usim_det:[284,295],using_non_wrapping_output_buf:104,usleep:127,usr:415,usual:[0,2,14,26,36,39,41,82,101,108,109,112,113,115,116,117,118,119,121,124,130,133,137,139,143,144,169,177,186,215,220,228,229,246,266,280,316,317,320,340,342,349,352,353,356,358,362,365,369,371,378,385,391,409,412,415],usual_wrap_rul:415,ut:169,utc:[41,108,117,124,277,319,322],utf16:366,utf8:[30,38,48,131,135,175],utf:[169,175],util:[19,126,400],utran:106,uuid:322,uwb:[319,322],v0001:[118,294,322],v0004:386,v0007:[279,386],v0:[180,263],v1000:292,v1001:[294,295,322],v1002:[279,284,294,322],v1003:[294,322],v1004:[298,322],v1006:[310,322],v1016:284,v1020:[268,322],v1021:[268,322],v1022:[268,322],v1023:[268,322],v1103:[277,280,283,284,286,322],v1104:[283,289,322],v1105:[280,283,322],v1106:[276,283,322],v1107:[280,283,284,322],v1108:[280,283,322],v1109:[283,322],v1110:[283,322],v1111:[283,322],v1112:[277,283,322],v1120:276,v1:[141,175,177,180,194,199,200,201,205,206,211,212,213,231,236,241,242,244,258,267,278,293,322,365,396,406,407,409],v2023:265,v2:[11,61,141,175,256,257,258,293,320,334,335,337,342,345,386,396],v32xeaksgtieqxtqgwcldp5aplcnps3k:64,v4:355,v5:[289,359],v:[19,31,41,72,115,141,169,175,180,246,287,289,304],va_list:415,vaild:124,val1:[31,175],val2:31,val3:31,val:[31,61,82,93,110,120,144,220,228,415],valid:[11,14,15,17,19,21,22,28,33,38,41,107,116,124,126,135,136,137,144,169,175,197,220,277,279,306,316,317,318,388,390,414],valid_po:169,valid_pos_arrai:169,vallei:403,valn:31,valu:[0,1,3,4,5,6,7,8,9,10,11,12,13,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,170,175,177,180,181,182,183,197,203,204,205,206,210,215,220,222,228,229,246,261,266,269,273,279,284,286,289,295,305,316,317,318,322,337,340,341,342,356,358,359,362,364,369,370,372,373,374,379,381,382,387,388,389,390,392,394,396,398,401,403,409,417,418,421],value_:415,value_arrai:169,value_n:415,values_:415,vari:[21,169],variabl:[64,110,115,132,169,175,217,234,240,269,340,342,356,357,365,368,370,416,417,418],variables_:415,variad:415,variant:291,variat:41,varieti:[131,169,186,220,228,251,279,280,406],variou:[4,28,31,129,140,169,199,200,201,220,221,266,280,321,386,389,414,415],varlist:415,varnam:175,vast:118,vbat33:246,vbat:[0,82,220,228,253],vbu:[246,284,295,306,312],vcc33:246,vcc:[199,200,201,204,205,206,246,258],vcodec:173,vdd12:246,vdd25:246,vdd33:246,vdd33_out:246,vdd3p3_cpu:[306,312],vdd3p3_rtc:[306,312],vdd:[105,246,263,306],vdd_ref:317,vdd_spi:306,vdd_spi_as_gpio:306,vdiv:169,vdop:41,ve:169,vector:[101,337,366,426,427],velit:169,vendor:[369,370],veniam:169,ver_fit_typ:169,ver_r:169,veri:[82,116,133,145,170,172,173,186,193,194,195,198,218,220,228,258,278,279,284,295,306,316,322,343,370,375,393,409,414,415,417],verif:[62,104,106,107,116,124,136,279,317,318,387],verifi:[31,34,81,106,107,120,124,243,266,279,306,320,356,357,362,394,396,409],versa:415,version:[1,7,11,21,24,31,36,38,50,61,62,66,67,77,82,99,107,111,115,124,132,135,138,145,170,173,175,177,179,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,215,220,221,222,232,237,245,255,256,257,261,263,265,266,275,277,278,279,281,283,284,285,286,292,295,296,306,309,310,317,318,321,322,325,344,347,349,357,359,365,366,378,385,386,387,388,390,395,396,400,401,407,409,412,416],version_:118,version_get:31,vertex:11,vertic:[38,41,135,145,170,409,415],veteran:[395,413],vf:[173,391],vfs_fatf:279,vhid_cancel_upload:31,vhid_upload:31,via:[58,135,169,215,218,226,263,277,284,291,295,365,396,409,415],vibrat:229,vice:415,vid:31,vid_0d28:258,video:[22,31,89,90,110,126,130,136,144,145,215,216,218,220,228,351,352,353,359,387,395,398,400,418],video_h:173,video_plai:173,video_w:173,view:[0,1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,48,49,59,61,64,65,66,67,82,92,97,99,100,101,103,106,107,108,110,112,113,114,116,117,120,122,123,124,126,127,128,130,135,136,137,138,139,140,141,144,145,170,172,178,184,191,196,202,207,214,216,225,232,258,266,271,306,322,323,349,357,359,365,374,394,396,398,401,407,409,412,414,415,417,442],viewer:428,vih:246,vil:246,vin:[93,181,182,183],violat:415,virtual:[4,14,41,106,112,115,118,136,169,220,228,229,256,257,279,283,294,306,312,322,338,341,342,362,364,367,368,369,386,391,414,415],virtual_com_port:259,visibl:[41,136,137,145,170,175,266,388,390,414],visit:[169,266,420,421],visual:[169,218,361],visualstudio:218,vl6180:61,vlcd:31,vm:[16,38,209,342],vocal:29,voh:246,voic:[285,287,289,296,322],vol:[31,246,279],volatil:[199,200,201],volt:[31,129,219,285,287,290,296],voltag:[0,2,11,39,60,71,112,172,177,220,228,229,231,236,242,246,251,253,261,267,279,292,322,337,396,398,401,406,407,409],voltage_1800:2,voltage_3300:2,volum:[2,106,279,283,322,412,414],volupt:169,vs1838:75,vscode:[216,341,352,353,356,365],vsiminit:31,vsimonoff:31,vss:246,vta:41,vtg:41,vuart_0:[4,41,106,136],vulner:279,w1_connect:31,w1_read:31,w1_reset:31,w1_write:31,w25q128:[199,200,201,204,205,206,220,228,307],w25q128jv:[204,205,206],w25q128jv_dtr:[204,205,206],w25q32:75,w25q64:75,w25qxx:75,w5100:265,w5500:[31,124,126,129,279,292,333],w600:[126,273,275],w800:[231,236,271,304,322,333],w801:[304,333],w805:[304,333],w806:[239,322,333],w:[14,31,32,98,169,173,186,187,199,200,201,220,228,375,391,403,415],w_:415,wa:[3,6,8,15,17,19,21,22,28,41,48,103,106,107,124,133,135,140,141,169,204,205,206,220,228,258,269,341,356,359,409,414,415],wai:[15,17,19,22,26,41,73,107,112,115,126,131,169,178,199,200,201,204,205,206,210,211,212,213,218,220,228,258,266,268,278,284,306,312,319,322,330,337,340,341,342,343,364,365,366,367,369,398,403,414,415,416,417,418,443],wait485:[31,279],wait:[11,20,22,24,26,28,29,31,38,42,43,44,45,47,49,50,51,52,53,54,56,57,60,61,62,63,64,65,66,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,101,103,105,106,107,112,118,120,132,136,139,140,141,169,172,173,177,179,181,182,183,185,188,189,190,193,194,195,197,198,203,204,205,206,215,216,220,221,228,229,243,263,269,277,279,310,322,339,342,349,358,360,361,363,364,369,372,376,382,384,387,388,390,392,394,415,416,417],waitabl:[388,390],waitc:[363,376,384],waitlink:61,waitmsg:31,waitt:[363,376,384],waituntil:[28,31,64,65,82,106,107,114,126,140,141,208,375,387,416,417],waitxxx:130,wake:[38,99,112,117,132,192,220,232,234,240,279,284,292,295,322,371,417,418],wakecmd:38,wakeup0:[284,295],wakeup1:[284,295],wakeup2:[284,295],wakeup3:295,wakeup4:295,wakeup5:295,wakeup:[31,112,229,234,240,284,295,337],wakeup_in:253,wakeupin:112,wakeuppin:31,wakup0:[284,295],waldemar:415,walk:[118,365],wand:[222,256,258,338],want:[11,82,103,106,138,169,172,220,226,228,258,266,307,322,340,341,343,352,353,357,359,396,414,415,416],ware:338,warehous:[173,215,217,220,258,285,296,306,312,352,353,357,359,409],warm:228,warn:[16,31,111,118,187,220,228,279,356,357,375,398,403,412,417],warning_level:31,wast:[75,378],watch:398,watchdog:[31,61,112,129,187,209,220,251,337],watchdogpin:61,water:118,watt:403,wav:[2,6,29,292,297],wave:[22,35,220,228,229,412],waveform:[9,220,228,396,401,409,412],wb:[6,32,220,228],wba_abc:343,wbc_abc_cb:343,wbc_abc_handl:343,wcdma:287,wdai:[78,415],wdata:81,wdt:[31,129,187,209,220,279,292,297,308,333],we:[101,169,172,173,177,178,186,193,194,195,198,199,200,201,204,205,206,211,212,213,218,220,222,226,228,243,256,258,338,340,342,343,352,353,357,358,359,370,394,395,412,414,415,417,419],weak:[106,175,278,279,284,295],wealth:[270,395],weather:[11,38],weather_icon:31,web:[258,306,366,415,421],web_audio:280,websit:[8,21,34,64,82,218,266,277,279,317,318,332,339,356,357,400,415,420],websocket:[31,107,129,279,285,292,296,297,333],websocket_cli:140,websocket_conack:140,webusb:258,wechat:[141,396,407],week:[78,415],wei:84,weight:[101,169,414],welcom:[221,287,384,393,395,396],weld:[229,312,398,403],well:[169,172,173,220,228,266,271,316,398,403,414,415],wendal:[15,19,113,341,364,365,367,368,369,371,372,373,374,379],wenquanyi:179,went:17,wep:383,wep_psk:383,wep_shar:383,wepval:263,were:[32,128,131,269,415],west:[41,117],western:169,wget:360,wgs84:[41,64,65,277,421],wh:[403,409],what:[0,24,133,138,141,144,169,172,175,176,199,200,201,218,225,232,254,261,268,274,283,294,322,336,341,343,349,352,353,359,362,363,370,375,376,384,388,389,414,416,417],whatev:415,wheel:[409,412],when:[2,5,11,12,14,15,17,19,22,26,28,32,33,34,36,38,41,48,59,64,65,75,78,82,84,103,106,107,112,117,118,120,121,123,124,126,132,135,136,137,138,141,144,169,172,173,177,181,182,183,188,189,193,194,195,197,204,205,206,211,212,213,218,219,220,222,226,228,229,231,236,246,258,259,261,262,265,266,267,269,271,276,277,278,279,281,284,289,292,295,306,308,312,321,322,323,339,342,343,345,359,360,361,365,369,378,387,391,392,394,396,398,401,403,409,414,415,416,417,418],whenc:175,whenev:[78,415],where:[28,37,75,101,102,105,110,121,126,144,169,187,215,220,228,268,271,286,306,322,326,339,348,366,370,388,390,409,414,415,416],where_ddd_i:415,where_n_i:415,where_set_i:415,where_x_and_y_remain_balanc:415,where_xx_must:415,where_xxx_i:415,wherein:330,whether:[2,3,6,8,11,12,14,17,20,24,26,28,29,32,33,35,38,39,41,48,59,64,66,68,72,75,76,94,99,103,104,106,107,112,118,120,123,124,126,128,135,136,140,141,144,169,215,220,222,228,229,256,258,261,262,277,279,284,295,306,322,326,338,342,347,356,357,370,383,387,391,400,412,414,415,417,418],which:[0,2,5,8,12,13,16,18,21,22,24,26,29,30,32,34,36,38,40,41,49,59,64,66,75,78,82,90,98,99,100,101,103,104,105,106,107,108,110,111,112,113,115,118,119,121,124,130,132,136,141,143,144,169,172,177,181,182,183,187,199,200,201,209,210,215,218,219,220,221,222,228,229,246,251,258,259,263,266,269,271,277,278,279,280,281,284,289,291,292,295,304,306,312,316,317,318,322,330,332,337,340,341,342,343,356,358,359,360,362,365,369,370,374,375,378,379,385,387,395,398,400,401,403,409,412,414,415,417,418],white:[11,101,216,229,306,322,413,415],whiteboard:[221,222],who:[106,256,258,307,338,413,414,416],whole:[258,284,295,406,414,415,417],whose:[169,415],why:[145,170,322,362,363,376,377,384,396,414,415],wi:[270,421],wide:[11,38,169,172,373,385],wideband:320,widget:[101,145,170],width:[4,14,31,38,75,101,126,135,145,170,173,193,194,195,220,228,229,306,366,378,381,414,415],wifi:[31,41,64,82,124,129,135,231,236,265,266,267,275,279,285,296,304,312,314,316,319,322,333,376,377,384,387,393,395,396,421],wifiloc:[320,393],wifiscan:141,wignor:[356,357],wiki:[7,11,38,108,169,172,173,220,221,228,229,281,285,296,331,349,392,400],wiki_page_id:281,wikipedia:169,win10:[215,323,409],win11:323,win32:[136,339,357,360],win7:[215,256,258,262,306,312,338,356,400,406,409],win8:[256,262,306,312,338],win:[145,170,173,396,401,412],win_add_btn:169,win_add_btn_left:169,win_add_btn_right:169,win_close_event_cb:169,win_creat:169,win_demo:169,win_focu:169,win_part_bg:169,win_part_content_scrl:169,win_part_head:169,win_scroll_hor:169,win_scroll_v:169,win_set_anim_tim:169,win_set_layout:169,win_set_scrlbar_mod:169,win_set_titl:169,winbond:[199,200,201,204,205,206],window:[11,31,145,170,174,215,218,220,222,258,306,316,330,349,354,356,357,359,361,365,396,409,415],winter:220,winusb:[256,258,262,306,312,338],wip:[304,333],wire:[38,49,55,75,177,181,182,183,193,194,195,199,200,201,204,205,206,211,212,213,220,221,226,228,258,263,271,283,284,295,306,321,322,349,396,400,403],wire_3_bit_9_interface_i:38,wire_3_bit_9_interface_ii:38,wire_4_bit_8_interface_i:38,wire_4_bit_8_interface_ii:38,wireless:[322,383,395],wistr:263,with_x_and:415,with_y_:415,within:[22,169,219,220,228,229,263,287,289,316,320,340,343,364,384,414,415],without:[2,8,16,17,20,21,23,48,101,106,107,115,124,141,169,177,215,220,225,229,263,266,271,277,284,295,306,317,318,320,321,331,342,343,349,358,359,365,370,387,414,415,417,418,421],withstand:[261,322,412],wizpro200st8:[261,322],wlan:[31,129,269,297,333,376,377,384,387],wlan_scan_don:[141,387],wlanscan:[292,297],wmm:270,woff2:169,woff:169,woken:417,won:[414,415,417],wonder:414,word:[169,215,268,289,306,322,358,359,366,387,393,400,415],work:[2,4,20,29,38,57,75,76,81,90,124,169,197,210,211,212,213,219,220,228,229,246,251,262,263,279,290,292,337,339,361,394,403,415],work_mod:112,workaround:[263,279],workflow:339,workstat:323,world:[142,217,218,414,415],worri:[82,258,263,357,375,415],worst:[4,280],worth:[108,220,228,279,414],would:[266,415],wow:418,wp:[270,383],wpa2:[270,383],wpa2_aes_psk:383,wpa2_mixed_psk:383,wpa2_tkip_psk:383,wpa:[270,383],wpa_aes_psk:383,wpa_tkip_psk:383,wps_open:383,wps_secur:383,wr:25,wrap:[115,169,175,374],writ:[199,200,201],writabl:[169,271,391],write:[4,11,12,15,17,19,22,26,28,29,31,32,33,39,55,61,89,90,103,104,106,111,119,120,124,126,129,135,138,145,170,173,175,176,179,185,198,202,207,210,211,212,213,216,217,218,220,228,261,265,268,277,279,280,286,317,318,322,338,339,341,342,360,361,362,364,365,373,374,381,382,387,388,389,390,392,394,414,417,418],write_datablock:61,write_rawrc:81,write_zlib_head:104,writefil:[31,199,200,201],writei8:144,writeint8:373,writer:415,writereg:31,writeu32:144,written:[4,8,12,17,19,32,55,81,99,100,103,104,106,108,119,120,121,122,124,131,136,144,169,172,204,205,206,220,228,263,269,271,279,317,318,340,342,369,375,409,414,415,416],wrong:[17,66,67,103,120,258,263,268,279,293,322,341,352,353,359,364,372,400,415],wrote:[199,200,201,204,205,206,220,228],wrprterr:263,ws2812:[145,171,279],ws2812_h:172,ws2812_roll_show:172,ws2812_w:172,ws2812b:31,ws2812b_pwm:[31,172],ws2812b_spi:[31,172],ws:[140,394],wsc:31,wsc_conack:140,wsg84:64,wss:140,www:[26,41,59,78,204,205,206,217,339,415],x00ff0200:394,x01:28,x02:28,x03:28,x0:31,x1:[31,169],x1ffff7e8:263,x200ma:412,x200ua:412,x25:8,x2:[31,169],x2a:412,x2ma:412,x32:[31,188,189,190],x64:[356,357,359],x7f:415,x7fffffff:[33,103],x80:415,x8218dbc0:417,x:[4,21,26,31,44,47,56,59,63,69,74,80,83,110,129,169,175,220,221,232,233,239,246,263,279,286,365,378,398,403,414,416,417],x_id:169,x_of:169,x_offset:135,x_op_:415,x_xx_:415,xbf:415,xc2:415,xeltek:263,xf4:415,xfer:31,xhh:414,xi12m:246,xi32:246,xiao:[258,289],xiaomi:[398,403,412],xingli:[277,317,318],xip:219,xlsx:[231,236,244],xmake:[341,342,356,357,360,361],xmodem:[8,61,143,317],xo12m:246,xo32:246,xoffset:[11,38,173,220,228,331],xor:[8,135,169,262,415],xpcall:175,xt804:[22,268,271,304,305,322,333],xtal32k:246,xtal:246,xtalrefoutput:[31,291],xu:289,xuyuan:172,xx:[179,186,347,349,414,415],xxtea:[31,129,279,308],xxtea_encrypt:142,xxteatest:142,xxx:[6,14,17,20,27,32,59,62,66,67,82,107,108,115,119,124,289,316,341,343,345,346,347,349,356,357,383,387,394,414],xxxx:[32,124,331,349,352,387,417],xxxxx:[343,414,417],xxxxxblock:343,xxxxxx:[2,66,67,107,141,218],xxxxxxx:387,xxxxxxxxx:[343,375],xxxxxxxxxx:387,xy:417,y0:[31,289],y1:[31,169,289],y2:[31,169],y877bgo8x5owd3lcb5wwdjrynpob:34,y:[4,21,31,44,47,56,63,69,74,80,83,108,129,145,170,175,179,234,240,286,289,345,347,357,360,414,417],y_id:169,y_max:169,y_min:169,y_of:169,yahei:218,yc:317,ye:[4,106,112,124,169,218,266,331,342,357,400,414,417],yeah:22,year:[41,64,78,108,117,169,197,220,256,414,415],yeild:417,yellow:315,yet:[322,415],yhm27xx:120,yhm27xxx:31,yield:[175,417],yin:[89,90],yml:339,ymodem:[31,129,279],yoffset:[11,38,173,220,228,331],you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,132,133,134,135,136,137,138,139,140,141,142,143,144,169,172,173,178,179,180,184,186,191,192,196,197,198,199,200,201,202,203,207,208,210,211,212,213,214,215,217,218,220,221,222,226,228,229,243,246,256,258,259,262,263,266,269,277,279,280,281,284,287,292,306,307,312,315,317,321,322,338,339,341,342,343,349,351,352,353,356,357,359,360,361,362,363,376,377,384,387,391,393,394,395,396,398,403,409,413,414,415,416,417,418],you_:415,young:279,your:[124,138,169,179,186,215,221,222,256,307,321,338,343,352,358,359,398,400,403,412,413,414,415],yourself:[2,7,66,67,120,141,169,218,256,258,262,338,341,351,352,353,400,414,415,419],yuan:[400,415],yum:[352,353],yun:415,yuv411:312,yuv420:312,yuv422:312,yyi:[66,67,115,349,394],z:[44,47,63,69,74,80,83,110,286,415],zadig:[256,262,338],zbuff:[2,4,5,6,11,17,26,28,29,31,32,33,38,59,106,120,121,124,126,129,135,136,137,143,172,173,185,214,216,217,220,279,292,297,333,373,374,392],zda:41,ze08g:61,ze08g_ch2o:61,zeo:[285,296],zero:[8,21,106,169,234,240,279,289,403,415],zeropad:21,zeros_and_len:8,zeu:[258,270],zh07:61,zh07_pm10:96,zh07_pm1:96,zh07_pm25:96,zh:78,zhongk:318,zhou:[225,277,280,289,420,429],zhuff:28,zip:[267,278,279,280,352,353,356,357,359,386],zlib:[31,129],zone:[31,41,65,117,246,337,368],zoom:[2,169],zstruct:[374,393],zzz:[66,67,349],zzzzz:266,zzzzzzzzz:375},titles:["adc - Analog-to-digital conversion","antbot - Ant Chain","audio - Multimedia-Audio","bit64 - 32 Basic arithmetic and logical operations on 64-bit data on bit systems","camera - Camera","cc - VoLTE Call function","codec - Multimedia-Codec","coremark - Running points","crypto - Encryption and decryption and hash functions","dac - Digital-to-analog conversion","disp - disp Library (Obsolete)","eink - ink screen operation library","errDump - Error reporting","fastlz - FastLZ Compression","fatfs - read/write fatfs format","fdb - kv Database, power failure does not lose data","fonts - Font Library","fota - Underlying Firmware Upgrade","fs - Additional File System Operations","fskv - kv Database, power failure does not lose data","ftp - ftp Client","gmssl - national secret algorithm(SM2/SM3/SM4)","gpio - GPIO Operation","gtfont - Qualcomm Font Chip","hmeta - Hardware metadata","ht1621 - LCD Driver(HT1621/HT1621B)","http - http Client","httpsrv - http Server","i2c - I2C Operation","i2s - Digital Audio","iconv - iconv Operation","\ud83c\udf74 LuatOS-SOC Interface Documentation","io - io action (extended)","ioqueue - io Sequence operation","iotauth - IoT Authentication library, used to generate parameters for various cloud platforms","ir - infrared remote control","json - json Generating and parsing libraries","keyboard - Keyboard Matrix","lcd - lcd Drive module","lcdseg - Segment lcd","libcoap - coap Data processing","libgnss - NMEA Data processing","ads1115 - ads1115 analog-to-digital converter","ads1115plus - ADS1115 Drive","adxl34x - adxl34x 3 Axis accelerometer currently supports adxl345 adxl346","aht10 - aht10 Temperature and humidity sensor","air153C_wtd - Add software watchdog function to prevent crashes","ak8963 - ak8963 geomagnetic sensor","aliyun - AliYun Alibaba Cloud IoT Platform","am2320 - am2320 Temperature and humidity sensor","ap3216c - ap3216c Light sensor","bh1750 - bh1750 Digital light intensity sensor","bmx - bmx The air pressure sensor currently supports bmp180 bmp280 bme280 bme680 will automatically judge the device","cht8305c - cht8305c Temperature and humidity sensor","ds3231 - ds3231 Real Time Clock Sensor","ec11 - ec11 Rotary encoder","gt911 - gt911 Drive","gy53l1 - gy53l1 laser ranging sensor","httpdns - Domain name resolution using Http","httpplus - http Supplement to the library","ina226 - ina226 Drive","\ud83e\udd62 Extended Library Interface Documentation","iotcloud - iotcloud Cloud platform library (supported: tengxun cloud ariyun onenet huawei cloud graffiti cloud baidu cloud tlink cloud others will also support, and the useful issue will accelerate support )","l3g4200d - l3g4200d Three-Axis Digital Gyroscope Sensor","lbsLoc - lbsLoc Sending Base Station Location Request","lbsLoc2 - base station positioning v2","libfota - libfota fota Upgrade","libfota2 - fota Upgrade v2","libnet - libnet synchronous blocking api based on the socket library, the socket library itself is asynchronous non-blocking api","lis2dh12 - lis2dh12 Three-axis sensor","lm75 - lm75 Temperature Sensor Support lm75a lm75b","max31856 - max31856 Thermocouple temperature detection","mcp2515 - mcp2515 CAN Protocol Controller Driver","mlx90614 - mlx90614 infrared temperature","mpu6xxx - mpu6xxx Six-axis/nine-axis sensor support mpu6500,mpu6050,mpu9250,icm2068g,icm20608d","necir - necir NEC protocol infrared receiving","netLed - netLed Network status indicator","pca9685 - pca9685 16 Road PWM drive steering gear","pcf8563t - pcf8563t Clock Module","pcf8574 - pcf8574 IO Extension","qmc5883l - qmc5883l geomagnetic sensor","rc522 - rc522 Non-contact read/write card driver","rtkv - Remote KV Database","sc7a20 - sc7a20","shift595 - shift595 74HC595 Chip","si24r1 - si24r1 Drive","spl06 - spl06_01 Air pressure sensor","tcs3472 - tcs3472 Color Sensor","tm1637 - tm1637 Digital tube","tm1640 - tm1640 Digital tube and LED driver chip","tm1650 - tm1650 Digital tube and key scanning chip","tsl2561 - tsl2561 light intensity sensor","udpsrv - UDP Server","vl6180 - VL6180 laser ranging sensor","xmodem - xmodem Drive","ze08g_ch2o - ZE08G-CH2O electrochemical formaldehyde module","zh07 - ZH07 Laser Dust Sensor","little_flash - LITTLE FLASH Software package","log - Logstore","lora - lora Drive module","lora2 - lora2 Driver module (supports multi-hanging)","lvgl - LVGL Image Library","max30102 - Heart Rate Module(MAX30102)","mcu - encapsulation mcu some special operations","miniz - Easy zlib compression","mlx90640 - infrared temperature measurement(MLX90640)","mobile - Cellular Network","mqtt - mqtt Client","os - os Operation","otp - OTP Operation Library","pack - Packing and unpacking format string","pin - Pin Naming Map","pm - Power Management","protobuf - ProtoBuffs Codec","pwm - PWM Module","repl - \u201cRead-evaluate-output \u201cloop","rsa - RSA encryption and decryption","rtc - Real Time Clock","rtos - RTOS underlying operation library","sdio - sdio","sensor - Sensor Operation Library","sfd - SPI FLASH Operation Library","sfud - SPI FLASH sfud Software package","sms - SMS","socket - Network Interface","softkb - Software Keyboard Matrix","spi - spi Operation Library","statem - SM State Machine","string - String Manipulation Functions","Adaptation status","sys - sys Library","\ud83d\udcee sys System Messages","sysplus - sys A strong complement to the library","timer - Operating the bottom timer","touchkey - Touch keys","u8g2 - u8g2 graphics processing library","uart - serial port operation library","usbapp - USB Functional operation","w5500 - w5500 Ethernet driver","wdt - watchdog Operation Library","websocket - websocket Client","wlan - wifi Operation","xxtea - xxtea encryption and decryption","ymodem - ymodem Agreement","zbuff - c Memory Data Manipulation Library","\u2328\ufe0f Application Development","Code","Equipment","\u2328\ufe0f Alibaba Cloud application development","Introduction","Project","Test","\u2328\ufe0f Cloud Platform Basic Preparation","Introduction","<no title>","<no title>","\u2328\ufe0f Cloud Platform Application Development (Incomplete)","Code","Equipment","\u2328\ufe0f OneNet Application Development","Introduction","Project","Test","Code","Equipment","\u2328\ufe0f Tencent Cloud Application Development","Introduction","Project","Test","LVGL for LuatOS Manual","lvgl","Peripherals","LuatOS-Soc Driver WS2812 Tutorial","Air105 Video playback","Video playback","\ud83d\uddc3\ufe0f Data Archiving","Technical Miscellaneous Talks","adc","CRYPTO","DISP","fdb","air101","air103","air105","i2c","API Tutorial","LCD Drive screen","log","air101","air103","air105","mcu","PM","air101","air103","air105","pwm","RTC","sfd","air101","air103","air105","sfud","SPI","air101","air103","air105","spi","sys","timer","UART","air101","air103","air105","uart","Burn Tutorial","\ud83d\udcda Development Tutorial","recommend learning line","Construction of development environment","Air Watch","\ud83d\ude97 W806","Air001 Arduino-based user manual","Air001 Keil MDK-based user manual","Development Board","Hardware Data","\ud83d\udef4 Air001","Air001 Chip","Air001 power consumption curve","Air101 Getting Started Manual","Air101 Hardware Design Tutorial","Development Board","Hardware Data","\ud83d\ude97 Air101","Air101 Chip","Air101 power consumption curve","Development Board","Hardware Data","\ud83d\ude97 Air103","Function Description of Segment Screen/Segment Screen","Air103 Chip","Air103 power consumption curve","Touch sensor/touch button","Air105 Development Board","Air105 Script Encryption","Hardware Data","\ud83d\ude97 Air105","Air105 Chip","Air105 power consumption curve","Air106 Development Board","Hardware Data","\ud83d\ude97 Air106","Air106 Chip","Development Board","Hardware Data","\ud83d\udcf6 Air302","Air302 Module","Air32F103 Manual","Development Board","DAPLink Manual","Enhanced function instructions","Hardware Data","\ud83d\udeb2 Air32F103","AIR32F103 Chip","Transplant from SXX32F103","Air601-12F Development Board","Firmware Release Notes","Upgrade with the co-IoT platform","Air601 Hardware Data","\ud83d\udce1 Air601","About the mac address","Air601","SPI SLOVAL FUNCTION","Development Board","Hardware Data","\ud83d\udce1 Air640w","Air640w","Air700E Additional instructions","Air780EG Additional instructions","Development Board","EC618 Series Firmware Release Notes","Firmware Description","FOTA Upgrade and generation of upgrade package","Hardware Data","\ud83d\udcf6 Air780E(EC618 Series General)","LuatOS IO multiplexing configuration under firmware","Air780E Module (EC618 Series General)","Description of mass production brush machine","Network Characteristics","Setting and difference of anti-shake of power-on key","TTS Description of the function","Air780EPV Additional instructions","Air780EPVH Additional instructions","Ec718p Series Firmware Release Notes","Hardware Data","\ud83d\udcf6 Air780EP(EC718P Series General)","LuatOS IO multiplexing configuration under firmware","Air780EP Module (EC718P Series General)","Air780EPS Module Firmware Release Notes","\ud83d\udcf6 Air780EP(EC718P Series General)","Air780ES Module","Development Board","Hardware Data","\ud83d\udea2 Air901","Air901 Chip","\ud83d\udcca Chip comparison and selection table","Performance testing (based on coremark)","ESP32C3-CORE Development Board","Replace flash tutorial","Issue Notes","Hardware Data","\ud83d\udce1 ESP32-C3","ESP32C3 power consumption curve","ESP32S3-CORE Development Board","Hardware Data","\ud83d\udce1 ESP32-S3","Portable wifi data collection","auxiliary positioning AGPS","Air510U","Air530Z","\ud83d\udea2 satellite navigation GNSS","Introduction to Other Positioning Methods","Used with communication modules (such as 4G modules)","\ud83e\uddee Chips and Development Boards","LuaTools Version History","Function introduction","Core Software LuaTools","Generate and manage luadb files","Detailed Command Line Manual","\ud83d\udce1 PC Simulator","Code base for simulator","Method of use","FAQ List","\ud83d\udce1 RP2040","Equipment Support/Supported Devices","Development Board","Hardware Data","\ud83d\udeb2 SWM181CBT6","SWM181CBT6 Chip","SWM181 Manual","\ud83d\udda5\ufe0f PC End version","Lua Library File Writing Guide (Pure Lua Writing)","Add Custom Functions (Rapid Edition)","Add custom libraries and functions (full version)","C Interface implements Task waiting function","LuatOS CLI - Command Line Tools","LuatOS CLI Basic Commands","LuatOS Burn command","LuatOS Package Management Commands","LuatOS Project Management Commands","CLI Interactive Conceptual Design","LuatOS User Project","\ud83d\udc68\u200d\ud83d\udcbb Compile source code","\ud83d\ude97 Air101 / Air103","\ud83d\ude97 Air105","\ud83d\udcf6 Air302","\ud83d\udce1 Air640w","\ud83d\udcf6 Air780E Compilation Guide","\ud83d\udcf6 Air780EP Compilation Guide","\u2601\ufe0f Cloud Compilation","\ud83d\udce1 ESP32 Series Compilation Document","\ud83d\udda5\ufe0f Linux","\ud83d\udda5\ufe0f Win32","Add New Library","Core Layer","Luat Core","Luat Debugger","Font module","File System","Memory Pool","Message Bus","Luat Platform layer","Power and Low Power Management","Luat Timer","C style buffer","C The Structure of Style","C Interface implements Task waiting function","Design Document","Peripherals API","LuatOS dot matrix font format","GPIO","IR","SPI","UART","WLAN","\u2764\ufe0f Contribution Code","LuaDB File Format","LuatOS-SoC Common Firmware Format soc","Coding Specification","\ud83d\udcc1 Development documentation","Development Information","Development practice","LuatOS-SoC The file system","Explain lua\u2019s string and hex data (hexadecimal)","Community Extension Library","Command Line Brush Guide","<no title>","\u26a1 IoT Power - CC","\u26a1 IoT Power - CC","Connection and assembly","Connection and assembly","FAQ","Technical indicators","Technical index","Operating Instructions","Operating Instructions","<no title>","\ud83d\udd0d Version Comparison","\u23f3 IoT Power Power consumption test artifact","\u23f3 IoT Power Power Consumption Tester","\ud83d\udda5 PC Client","<no title>","IoT Power User Guide","\ud83d\udd0b IoT Power - V1","\ud83c\udf19 Lua Tutorial","Basic Grammar","Lua 5.3 Reference Manual","Luat Framework","Luat framework (advanced-underlying mechanism)","LuaTask Framework","\ud83d\udd79\ufe0f Online Experience LuatOS","\ud83d\udcac Technical Support","\ud83d\udee0 LuatOS Tools Daquan","Use Example","Hardware Data","Air105 Supporting GC032A camera","Use Example","Hardware Data","Qualcomm Font Chip","Hardware Data","EINK1.54 Ink screen","Use Example","\ud83e\uddf7 Peripheral expansion data","Use Example","Hardware Data","1.54 Inch TFT_ LCD resolution 240x240","Use Example","Hardware Data","1.8 TFT LCD resolution 128x160","Use Example","Hardware Data","2.4 Inch TFT_ LCD color screen resolution 240x320","Use Example","Hardware Data","Air10x Series Screen Expansion Board"],titleterms:{"0":[263,289,400,412],"01":131,"0x":131,"0x00":222,"0x001f":331,"0x01":222,"0x02":222,"0x03":222,"0x04":222,"0x05":222,"0x06":222,"0x07":222,"0x08":222,"0x09":222,"0x20000000":222,"0xffff":263,"1":[222,246,256,259,263,289,306,312,331,338,341,394,414,415,434,437],"10":415,"101":331,"103":394,"105":331,"10x":331,"11":415,"123":128,"128x160":437,"12f":[264,270],"12m":331,"15":105,"150":331,"16":[77,259],"160m":311,"192m":247,"2":[222,246,256,259,263,306,312,323,331,338,341,394,412,414,415,440],"20":331,"200m":305,"2023":105,"20v":400,"240x240":434,"240x320":440,"25":323,"256m":305,"26":323,"2m":[234,240],"3":[44,222,246,256,259,263,306,312,331,338,394,414,415],"32":3,"32bit":263,"4":[246,259,306,312,331,414,415,440],"480k":280,"4g":321,"5":[105,246,259,415],"54":[429,434],"5k":259,"5v":[400,412],"6":[246,415],"64":3,"7":[246,331,415],"74hc595":84,"8":[331,412,415,437],"80m":[234,240],"8910":266,"9":415,"\u03bca":400,"\u51c6\u5907\u6750\u6599":355,"\u5f00\u59cb\u4e0b\u8f7d\u6e90\u7801":355,"\u5f00\u59cb\u7f16\u8bd1":355,"\u63d0\u524d\u544a\u77e5":354,"\u7f16\u8bd1\u73af\u5883":354,"\u7f16\u8bd1\u8bf4\u660e":354,"\u8bf4\u660e":355,"abstract":[204,205,206],"boolean":414,"break":222,"byte":[131,263,331,414,415],"case":[380,381,382,414],"char":[414,415],"class":[365,415,421],"default":[169,218,289,331],"do":[331,341,367,372,400],"export":409,"final":[8,359],"function":[5,8,46,128,137,169,208,220,222,238,255,258,259,263,271,275,285,289,291,296,306,312,324,331,341,342,343,349,375,398,400,403,409,414,415,416],"import":409,"int":[72,83,93,102],"long":169,"new":[40,62,169,211,212,213,218,222,256,277,338,341,342,343,362],"return":[343,387,414],"static":341,"switch":[169,277,403,409,412],"try":349,"while":[289,400,414],A:[132,217,340,391],AT:[222,269],And:[229,331],As:263,At:398,For:415,If:[343,352,412],Is:[331,412],It:331,No:[234,240,247,263,311,331,400,412],One:169,Or:331,The:[52,258,263,266,269,321,331,364,370,374,375,386,391,394,412,414,415],There:[258,331],To:[105,341,414],Will:331,_at_0x20000000:222,_g:415,_repeat:118,_version:415,a1:415,a2:415,ab:415,abc:128,about:[229,266,269,276,277,316,364,386],abov:[263,320,331],acceler:62,acceleromet:44,accept:[5,124,415],access:[263,266],accord:393,account:266,achiev:[366,375],aco:415,acquisit:330,action:32,activ:[44,83],actual:[291,412],ad:[222,375,414],adapt:[20,92,107,124,129,140,317,318,343],adapter_index:124,adc:[0,177,220,228,229,253,263,331],add:[46,122,169,221,222,341,342,362],addit:[18,234,240,247,276,277,284,290,291,295,311],addr:[25,28,35,81,122],address:[81,103,199,200,201,204,205,206,221,222,269],adjust:[169,409],adjust_period:136,adon:263,ads1115:[42,43],ads1115plu:43,advanc:[169,317,414,417],advantag:321,adxl345:44,adxl346:44,adxl34x:44,af:78,after:[105,188,189,190,263,331,400,412],again:400,agp:316,agr2:130,agreement:[143,385],aht10:[45,181,182,183],aie:78,air001:[221,222,225,226,227],air101:[181,188,193,199,204,211,228,229,232,233,234,266,331,352,394],air103:[182,189,194,200,205,212,237,239,240,266,305,331,352],air105:[173,183,190,195,201,206,213,242,243,245,246,247,305,331,353,394,424],air106:[248,250,251],air10x:443,air153c_wtd:46,air302:[254,255,354],air32:263,air32f103:[256,261,262,263],air32f103cbt6:305,air510u:317,air530z:318,air601:[264,266,267,268,270],air640w:[274,275,355],air700:276,air722ug:266,air724ug:[266,421],air780:[266,283,285,299,305,356,421],air780eg:277,air780ep:[266,294,296,297,298,357],air780epv:290,air780epvh:291,air820ug:266,air901:[302,303],air:[52,86,219,421],ak8963:47,al:50,alarm:78,algorithm:[21,263,331],ali:58,alibaba:[48,148],align:[169,263],aliyun:[34,48],all:[263,359],alloc:370,alon:331,alpha:169,alreadi:400,also:[62,412],alt:22,alt_fun:103,altfun:103,alwai:[400,412],am2320:49,ambient:73,amplifi:412,amr_quailti:2,an:[169,222,266,331,342,409],analog:[0,9,42],analysi:[316,374],analyz:409,angl:169,ani:331,anim:[101,169],anim_cr:101,anim_fre:101,anim_path_set_cb:101,anim_path_t:101,anim_path_t_fre:101,anim_set_exec_cb:101,anim_set_path_str:101,anim_set_ready_cb:101,annot:387,ant:1,antbot:1,antenna:331,antenna_on:81,anti:288,anticol:81,ap3216c:50,apb:263,api:[68,169,185,238,362,367,368,369,370,371,372,373,377,379,380,381,382,383,387,415],apn:106,app_sta_get:1,appear:403,applic:[145,148,156,159,165],ar:[220,255,263,266,275,285,296,331,341,400],arc:169,archiv:175,arduino:221,area:[169,263,409],arg1:[130,415],arg2:[130,132],arg3:132,arg4:132,arg:[11,38,415],argn:130,arithmet:[3,414],ariyun:62,arm:222,around:400,arrai:[169,211,212,213,414],artifact:407,asin:415,ask:[169,341],assembl:[398,399],assert:415,asset_data_publish:1,asset_datav:1,asset_id:1,asset_regist:1,asset_status_get:1,asset_typ:1,assign:[169,414,415],async:11,asynchron:68,atan:415,attent:[306,312,394],audio:[2,29],audio_format:2,audio_id:2,auth:107,authent:34,authstat:81,auto:169,auto_format:14,auto_phone_fix:123,auto_reconnect:141,auto_reset_stack:106,autocollectmem:118,autoflush:38,autolong:123,automat:[52,169,222,263],autoreconn:[107,140],auxiliari:[277,316,415],averag:409,average_temp:105,axi:[44,63,69,74],b:[3,38],back:[38,331],background:[222,256,338,392],baidu:[34,62],band:106,bandrat:126,bar:169,base64_decod:8,base64_encod:8,base:[3,64,65,68,144,169,221,222,305,316,320,329,415],base_year:117,basi:414,basic:[3,152,217,333,340,344,345,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,414,415],bat:11,batteri:400,baud:72,baud_rat:136,been:400,befor:359,begin:135,beidou:277,between:[190,263,321,400,412,418,420],bh1750:51,bia:39,bif:263,bind:[41,138],bit64:3,bit:[3,144,263,331,415],bit_ord:136,bitdict:126,bits_per_sampl:2,bitw:29,black:412,blink:169,block:[68,209,263,415],bluetooth:[320,331],bme280:52,bme680:52,bmp180:52,bmp280:52,bmx:52,board:[221,223,224,230,235,242,248,252,257,258,264,272,276,277,278,293,300,306,312,322,331,334,420,443],bodi:26,book:430,bootstrap:263,boss:331,bottom:133,boundari:[367,368,369,371,372,373,374,379,380,381,382,383],box:169,bpp:101,brake:263,branch:414,breath:[193,194,195],bri:[89,90],brief:418,bright:169,brush:[226,229,233,239,242,255,275,285,286,296,306,315,331,349,394,400],bsp:[118,239,333],bssid:141,btn:169,btnmatrix:169,bu:[263,331,369],buff2:[11,144],buff:[4,11,17,32,85,124,126,135,136,137,144],buff_mod:101,buff_siz:[101,136,137],buffer:[29,373],build:[222,266,358,359],builddat:118,buoi:169,burn:[215,220,222,226,228,233,239,242,255,256,263,275,285,296,306,331,338,346,412],burner:[258,263],burp:412,bus_typ:2,busi:263,button:[169,241],c3:[310,394],c:[135,144,217,222,341,343,362,364,366,367,368,369,371,372,373,374,375,379,380,381,382,383,387,415,441],ca_fil:26,cach:409,cache_s:101,cal:60,calcul:190,calculate_crc:81,calendar:[169,430],call:[5,238,263,414,415,416],callback:[211,212,213,418],camera:[4,331,424],can:[72,169,263,331,341,400],cannot:[217,263],canva:169,capend:33,caplevel:22,captur:[4,33,114,415],capture_buff:33,card:[81,263,331],casic_aid:41,categori:415,caught:307,cb:[100,107,124,140,169],cbfnc:[48,64,66,67],cbfun:132,cbpara:48,cc:[5,396,397,400],cc_ind:131,cd:30,ce:[85,93],ceil:415,cell:169,cell_info_upd:131,cell_typ:169,cellular:106,ch2o:95,ch:9,chain:[1,356],chang:[169,218,280,331,358,365,400,412,415],changelog:279,channel3:263,channel:[29,103,114,141,204,205,206],channel_switch:1,charact:[169,414,415],characterist:[276,277,287,412],charg:[246,400],charpattern:415,chart:[169,223,230,409],chat:420,check:[112,169,358],check_crc:120,check_sim_period:106,check_valu:103,checkbox:169,checksum:8,chines:289,chip:[23,84,89,90,222,226,233,236,239,244,246,251,262,263,270,303,304,322,331,337,412,427],chip_check:85,chip_id:120,chiperas:122,choos:[221,222],chooser:169,cht8305c:53,chunk:415,chunknam:415,cid:106,cipher:287,cipher_decrypt:8,cipher_encrypt:8,cipher_list:8,cipher_suit:8,circl:[11,400],circuit:[229,246],classif:280,clean:169,cleanmsg:132,cleansess:107,clear:[11,19,33,38,41,88,89,90,113,144,263,331],clear_bit_mask:81,clearbuff:135,cleardownlink:106,clearli:400,clearlong:123,clearuplink:106,cli:[344,345,349],click:358,client:[20,26,107,140,409],client_ca:26,client_cert:[66,124],client_id:107,client_kei:[26,66,124],client_password:[26,66,124],clk:[89,126],clock:[54,78,108,117,246,259,263,331,415],close:[0,4,9,20,22,28,29,30,38,62,68,75,89,90,94,107,114,124,126,134,135,136,139,140,169,263,415],close_watch_dog:46,closur:415,cloud:[34,48,62,148,152,156,165,358],cloudc:62,cmd:[1,20,25,35,38],cmd_cnt:33,cmd_com_mod:25,cmd_rc:25,cmd_sysen:25,cmsi:222,cnt:[101,263],co:[266,415],coap:40,coapdata:40,code:[11,40,146,157,163,199,200,201,204,205,206,211,212,213,221,239,256,329,331,338,341,343,351,356,357,359,384,387,414,415],codebas:342,codec:[6,113],codepoint:415,coder:6,collect:[315,415],collectgarbag:415,color:[11,38,87,144,169,331,440],column:169,com:[39,88],com_mark:39,com_numb:39,comma:88,command:[20,81,181,182,183,327,344,345,346,347,348,349,394,415],comment:414,commiss:365,common:[169,342,356,357,386,391,400,412,421],commun:[321,331,365,370,393,420],comp:415,comparison:[263,304,406,414,415],compil:[220,221,339,351,352,353,356,357,358,359,360,361],complement:132,complet:[340,398],compon:[169,358,362],compress:[13,104],comput:[258,400],concat:[414,415],concaten:415,concept:[169,415],conceptu:349,condit:[378,414],conf:[10,37,38,60,82,135,222],config:[1,2,12,72,106,124,138,415],config_get:1,config_set:1,configur:[215,218,220,258,259,263,284,295,307],connect:[62,68,107,124,140,141,172,173,258,331,398,399,400,412],connect_config:62,consecut:263,consider:263,consol:394,constant:[0,2,4,6,11,22,28,29,38,39,62,98,99,100,103,104,105,106,107,112,124,126,135,136,137,141,144,371,372,379,380,381,382,383,412],constel:[291,317,318],constraint:378,construct:[218,222,226,228,256,262,337,338,341,415],consum:412,consumpt:[227,234,240,247,277,311,407,408],cont:169,contact:[81,281],contain:169,content:[169,280,386,414],continu:[33,263],contrast:[135,304],contribut:384,control:[35,72,78,169,204,205,206,219,259,263,306,312,409,415],conveni:[352,353],convent:415,convers:[0,9,169,263,392,414,415],convert:[42,188,189,190],copi:144,copybuff:135,core:[222,242,248,306,312,325,363,364],coremark:[7,305],corner:358,coroutin:415,correl:277,correspond:[204,205,206,241,375],count:[22,127,263,415],cpath:415,cpha:126,cpicker:169,cpol:126,crash:46,crc16:8,crc16_modbu:8,crc32:8,crc7:8,crc8:8,creat:[6,92,107,124,127,140,143,144,208,211,212,213,266,341,349,415],createap:141,createsoft:[28,126,136],critic:169,crop:169,cross:[169,370,414],crypto:[8,178],crystal:[229,331],cs1237:120,cs:[72,81,85,126,204,205,206],cs_pin:138,cspi_spe:4,csq:106,ctrl:124,cur_timestamp:34,current:[44,52,169,269,316,375,400,403,409,412],cursor:169,curv:[227,234,240,247,311],custom:[169,341,342,352,353,358,359],custom_id:12,cycl:[208,211,212,213,263,414],cyclic:[234,240,247,311],dac:9,dacdelai:2,daclevel:2,dacpin:2,dactimedelai:2,dap:258,daplink:258,daquan:421,dark_color:101,dat:[84,89],data1:120,data2:120,data32bit:3,data64bit:3,data:[1,2,3,6,8,9,11,13,15,19,21,25,28,29,32,38,40,41,62,81,82,99,100,104,106,107,109,113,115,116,119,120,121,122,124,126,135,136,137,140,142,143,144,169,172,175,180,211,212,213,224,231,234,236,240,244,247,249,253,260,263,267,273,282,290,291,293,301,305,309,311,313,315,317,318,331,335,369,372,374,378,392,403,409,414,418,422,423,426,428,431,433,436,439,442],data_bit:136,data_first:106,data_mod:41,databas:[15,19,82,180],datatraff:106,dataw:126,date:[88,108,169,415],dead:400,debounc:[22,37],debug:[2,14,20,41,98,107,124,140,226,229,258,263,331,369,415],debug_en:136,debugg:365,decim:[188,189,190],declar:415,decod:[6,36,113],decoi:400,decrypt:[8,116,142],deep:[234,240,247],defin:368,definit:[222,236,246,306,312,349,385,386,415],deg:415,deinit:125,del:[19,144],delai:[22,28,33,103,208,263,331],delet:[169,180,347,372,414],delimit:128,demand:343,demo:[238,346,349,430,442],demo_benchmark:101,demo_keypad_encod:101,demo_mus:101,demo_print:101,demo_stress:101,demo_widget:101,demonstr:291,descript:[169,238,263,276,280,284,286,289,295,297,306,312,360,361,387,391,418],design:[229,241,246,344,349,362,365,367,368,369,371,372,373,374,376,379,380,381,382,383],detail:[327,403,406,414],detect:71,develop:[145,148,156,159,165,216,217,218,221,223,224,228,230,235,242,248,252,257,264,272,276,277,278,293,300,306,312,322,331,334,362,388,389,390,420],devic:[52,169,188,189,190,199,200,201,204,205,206,222,258,331,333,400,409,412],device_id:34,device_kei:34,device_nam:34,device_secret:34,device_status_get:1,devicesetup:126,dfp:263,dhcp_enabl:141,dht1x:120,diagram:[223,230,291,398,428,442],dial:[5,412],did:[331,358],differ:[190,263,288,400],differenti:280,difftim:[108,415],dig:90,digit:[0,9,29,42,51,63,88,89,90,169,289],dir_path:143,direct:[169,416],directli:[199,200,201,204,205,206,349,400],disabl:[169,204,205,206],disablepwm:35,disadvantag:321,disc:169,discon:124,disconnect:[62,107,141],disp:[10,179],displai:[169,173,258,331,345,393,400,409,412],distinct:420,distinguish:263,divid:[259,263],divis:259,dma:263,dns_index:124,document:[31,61,224,231,244,286,359,362,376,388,418],doe:[15,19,258,263,331,400,412],doesn:258,dofil:415,domain:58,domain_nam:58,don:[331,400],done:33,dot:378,down:[169,204,205,206],download:[221,222,226,229,255,256,258,263,266,280,285,296,331,338,356,357,409,442],download_zbuff1:5,download_zbuff2:5,dr:263,draw2lcd:105,draw:[11,38],draw_mask_fade_param_t:101,draw_mask_fade_param_t_fre:101,draw_mask_line_param_t:101,draw_mask_line_param_t_fre:101,draw_mask_radius_param_t:101,draw_mask_radius_param_t_fre:101,drawbox:135,drawbuttonutf8:135,drawcircl:[38,135,144],drawdisc:135,drawdrcod:135,drawellips:135,drawfilledellips:135,drawfram:135,drawglyph:135,drawgtfontgb2312:[38,135],drawgtfontgb2312grai:38,drawgtfontutf8:[38,135],drawgtfontutf8grai:38,drawlin:[38,135,144,331],drawpixel:135,drawpoint:38,drawqrcod:38,drawrbox:135,drawrect:144,drawrectangl:38,drawrfram:135,drawstr:38,drawtriangl:135,drawutf8:135,drawxbm:[11,38,135],drive:[38,43,56,60,77,85,94,99,186,331],driver:[25,72,81,89,100,138,172,258,331],drop:169,dropdown:169,drv:121,dry:400,ds18b20:120,ds3231:54,dt:41,dtick64:103,dtimer_wakeup:131,dtimercheck:112,dtimerstart:112,dtimerstop:112,dtimerwkid:112,dtp:101,dual:[263,331],dump:[12,415],duplex:263,dust:96,duti:39,duty_cycl:77,e:415,each:[331,418],earfcn:106,easi:104,ec11:55,ec618:[266,279,283,285,305],ec718:266,ec718p:[292,294,296,298],eci:106,edg:[169,331],edit:[218,341,415],effect:[169,173,193,194,195,331,341],eink1:429,eink:11,either:[222,331],electr:[246,412],electrochem:95,electron:430,element:169,empti:[180,331],emul:263,en:39,enabl:[12,38,39,41,101,106,115,204,205,206,263,289,341,409],enbid:106,encapsul:103,encod:[6,36,55,113,135],encodestr:21,encrypt:[8,116,142,243],end:[339,343],endian:84,endswith:128,engin:428,english:289,enhanc:[259,262],ent:101,enter:[266,371,379,403],entir:180,entiti:365,entri:415,env:415,environ:[218,222,226,228,256,262,337,338,352,353,359,361,415],ephemeri:[277,316,317,318],equip:[147,158,164,169,266,331,333,412],eras:[109,121,122,204,205,206,263],erasewrit:122,errdump:12,error:[12,98,222,258,331,352,415],error_drop:136,errstop:2,escap:414,esp32:[310,314,331,359,394],esp32c3:[306,311],esp32s3:312,especi:277,essenc:414,etc:400,ethernet:138,evalu:115,even:400,event:[4,5,136,169,211,212,213,263,365],event_send:101,evt:48,exampl:[169,422,425,430,432,435,438,441],exce:263,exceed:280,except:263,execut:[339,415],exist:[28,32,136,218,364],exit:415,exp:415,expans:[218,278,331,341,431,443],expect:341,experi:419,explain:[392,414],explan:280,express:[364,415],extend:[32,61,340,374],extens:[79,393],extern:[169,220,228,263,306,331],exti:33,f1:415,f2:415,f:415,facil:364,fade:101,fail:[263,358],failur:[15,19],faq:[222,258,315,331,358,400,412],fast:[263,400],fastlz:13,fatf:14,fault:[263,412],fdb:[15,180,331],featur:[331,375],feed:[105,139],feed_dog:46,feet:295,few:266,fft:331,fg_color:38,field:394,fifo:263,file:[17,18,38,169,173,199,200,201,222,234,240,247,266,311,326,340,341,342,359,367,385,387,391,414,415],file_path:[6,94,143],file_tld:385,filenam:415,files:32,fill:[11,32,38,144,263],filter:[72,169,263],fin:140,find:[331,393,414,415],finish:17,firmwar:[17,118,215,220,255,258,265,266,269,275,279,280,284,285,289,292,295,296,297,315,317,331,340,352,353,359,386,400,409,412,421],first:[131,263,400,414],fit:169,fix:[385,400],flag1:3,flag2:3,flag:[3,76,104,124,135,263],flash:[97,121,122,169,199,200,201,204,205,206,220,228,263,306,307],flash_eraseoptionbyt:263,flicker:169,floor:415,flow:317,flush:[38,415],flymod:106,fmod:415,fmt:[108,415],fn:41,fnc:[130,418],focu:169,focus:169,fold:105,folder:[326,359,367],follow:[222,342,394],font:[11,16,23,38,101,135,169,358,366,378,427],font_fre:101,font_get:101,font_load:101,forc:[11,112,409,415],force_level:118,fore:38,foreword:[172,173,263],form:[169,340],formaldehyd:95,format:[14,29,110,144,169,289,340,378,385,386,414,415],formatstr:415,forward:393,fota:[17,66,67,266,281],foundat:169,four:398,framebit:29,framework:[416,417,418],free:144,freerto:331,freq:[9,77,99,100],frequenc:[188,189,190,234,240,247,259,305,311,331],fresh_rat:39,from:[169,222,263,326,400,412],frombase32:128,frombase64:128,fromcod:30,fromhex:128,fs:18,fsize:18,fskv:19,fsr:43,fsstat:18,ftp:20,full:[11,199,200,201,204,205,206,211,212,213,263,342,343,415],fun:[132,418],func:[2,4,5,22,27,29,101,123,130,136],funcnam:415,g:38,gadget:419,garbag:415,garbl:331,gatewai:[138,141],gaug:169,gc032a:424,gear:[77,400,412],gener:[34,36,263,281,283,285,294,296,298,326,421],geomagnet:[47,80],get:[0,19,22,33,57,82,93,102,111,117,169,188,189,190,228,266,331,359,417,418],get_accel:74,get_cell_period:106,get_data:[44,45,52,53,60,63,69,70,80,83,86,91],get_gyro:74,get_int_sourc:44,get_lux:87,get_mag:47,get_rgb:87,get_temp:74,get_temperatur:54,get_val:42,get_vdd:105,getband:106,getcellinfo:106,getclk:103,getdevic:122,getdevicenum:122,getdevicet:122,getdisplayheight:135,getdisplaywidth:135,getenv:415,geterror:2,getfre:14,getgga:41,getgll:41,getgsa:41,getgsv:41,gethook:415,getinfo:[122,141,415],getintloc:41,getip:141,getlevel:98,getloc:415,getmac:[138,141],getmetat:415,getpara:29,getpm_10:96,getpm_1:96,getpm_2_5:96,getppb:95,getppm:95,getraw:4,getregistri:415,getrmc:41,getsiz:38,gettxt:41,getupvalu:415,getuservalu:415,getvtg:41,getwin:11,getzda:41,gif:101,gif_creat:101,gif_restart:101,git:387,gite:[341,393],github:393,give:415,global:[414,415],glossari:365,glue:169,gmatch:415,gmssl:21,gnss:[277,291,319],gnss_state:131,goal:[366,375],good:331,gp:291,gpio11:306,gpio:[22,204,205,220,228,229,259,263,284,295,331,379,387],gpio_a:55,gpio_b:55,graffiti:62,grai:38,grammar:414,graphic:135,grid:89,ground:400,group:[341,420],gsub:[414,415],gt911:56,gt911_i2c:56,gt911_int:56,gt911_re:56,gtfont:23,guid:[340,356,357,394,411],gy53l1:57,gyroscop:63,h:[4,11,38,101,135],ha:[258,343],hal:222,halt:81,hand:398,handl:[169,415],handler:[143,364],hang:100,hangup:5,happili:341,hard:209,hardfault:103,hardwar:[24,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,224,228,229,231,236,241,244,249,253,258,260,263,267,271,273,282,293,301,306,307,309,312,313,317,318,335,365,423,426,428,433,436,439,442],hash:[8,116],hash_finish:8,hash_init:8,hash_upd:8,have:[331,400],hcode:40,head:400,header:[26,40,140,222],header_tld:385,heart:102,height:[11,144,169],helloworld:169,help:[169,341,345],here:331,hex:[128,392],hexadecim:[188,189,190,392],hexstr:141,hid_mod:137,hid_rx:137,hid_tx:137,hide:169,high:[190,259,412],higher:412,highest:331,highlight:169,himself:105,histor:[409,421],histori:[280,323],hmac:8,hmac_md5:8,hmac_sha1:8,hmac_sha256:8,hmac_sha512:8,hmeta:24,hook:415,host:[12,64,65,107],hostnam:141,hous:398,how:[269,331,358,369,400],ht1621:25,ht1621b:25,http:[26,27,58,59],httpdn:58,httpplu:59,httpsrv:27,huawei:62,huge:415,humid:[45,49,53],hwtimer_id:33,hwver:24,hx711:120,hz:[77,103],i2:29,i2c:[28,105,181,182,183,184,220,228,246,284,295,331],i2c_id:[42,43,44,45,47,49,51,53,54,63,70,73,74,79,80,83,87,91,102,105],i2cid:[44,50,77,83,86],i2s:263,i:[266,331,341,358,400,412,415],ic:[99,100],iccid:106,icm20608d:74,icm2068g:74,iconv:30,id:[0,2,4,21,28,29,41,57,72,78,81,93,106,112,117,118,119,121,126,130,134,136,137,138,188,189,190,199,200,201,204,205,206,221,331,418],idea:[367,368,369,371,372,373,374,379,380,381,382,383],ii:263,ili9341:331,illustr:[304,333],imag:[101,169],imei:106,img1:331,img:[169,331],img_set_src:331,imgbtn:169,imgbtn_green:331,implement:[343,362,375],imsi:106,in_buff:6,ina226:60,ina226_i2c:60,inaccur:400,inact:44,inbuf:30,inch:[331,434,440],includ:[364,372],incom:387,incompat:415,incomplet:156,inconsist:400,increas:412,indent:[38,135],independ:[259,415],indev_drv_regist:101,indev_kb_upd:101,indev_point_emulator_upd:101,index:[11,105,106,122,124,169,402,415],indic:[76,331,401,412],indoor:316,industri:331,ineffici:331,info:[6,98,386],inform:[169,199,200,201,224,231,255,278,285,296,306,312,317,318,331,345,364,365,366,367,368,369,371,372,373,374,375,379,380,381,382,383,389,394,442],infrar:[35,73,75,105],init:[1,4,5,10,11,17,19,23,33,37,38,42,44,45,46,47,50,51,53,54,55,56,57,60,63,70,71,72,73,74,75,77,79,80,81,83,84,85,86,87,88,89,90,91,93,95,96,97,99,100,101,102,105,110,119,121,122,125,138,139,141,415],init_in_servic:38,init_level:33,initi:[8,105,181,182,183,199,200,201,204,205,206,208,211,212,213,331,348,414],initreg_or_cspi_id:4,inject:263,ink:[11,331,429,430],inlai:169,input:[33,169,220,228,365,400,415],input_buff:33,inreversem:8,insert:415,insid:[331,370],instal:[218,221,222,256,331,338,347,349],instanc:342,instruct:[257,259,262,263,271,276,277,284,290,291,295,306,339,403,404,412],instrument:169,integr:321,intens:[51,91],interact:[330,339,349,387],interfac:[31,61,105,124,169,263,331,343,366,372,375,387,409,415,418],intern:[169,259,277,398],interrupt:[222,263,414],interv:263,inton:289,introduc:331,introduct:[149,153,160,166,169,172,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,228,289,291,306,312,320,324,394,409,415],invert:169,invoff:38,involv:342,invon:38,io:[32,33,79,284,295,370,415],iomux:103,ioqueu:33,iosel:295,iot:[34,48,266,396,397,400,407,408,411,412],iot_config:62,iot_core_id:34,iotauth:34,iotcloud:62,iotda:34,iovol:112,ip:[124,138,141],ip_addr:20,ip_los:131,ip_readi:131,ip_typ:106,ipair:415,ipv6:106,ir:[35,50,380],irq:[22,85],irq_mod:33,irq_pin:[75,90,138],irqf_act_ctl:44,irqf_cfg:83,irqf_dur:83,irqf_en:44,irqf_map:44,irqf_th:83,is_ddr:4,is_default:106,is_en:135,is_input:[33,103],is_msb:4,is_ok:17,is_sign:2,is_tl:124,is_udp:124,isbigend:144,isclos:75,isdecod:6,isdelet:12,isdon:17,isend:2,isequ:144,isfix:41,isfloat:144,isipv6:107,isp:263,issign:144,issu:[62,266,308,317,318,356,357,366,420],isyield:415,item:[106,218,266],iter:[15,19,367],itself:68,iv:8,j:415,json:[36,386],jtag:263,jtrst:263,judg:[52,263,414],judgment:414,just:[331,349],kb_inc:131,keep_cnt:124,keep_idl:124,keep_interv:124,keepal:[107,140],keepemtri:128,kei:[8,15,19,21,34,81,82,90,101,116,134,142,169,180,220,228,266,288,306,312,403],keil:[222,258,263,331],key_cb:90,key_in:125,key_out:125,keyboard:[37,125,131,169,331],knob:169,knowledg:[217,340,341,342,364,366,367,368,369,370,371,372,373,375,379,383,414],known:[316,317,318,366],kv:[15,19,82],kv_clr:15,kv_del:15,kv_get:15,kv_iter:15,kv_next:15,kv_set:15,kv_stat:15,kvdb_init:15,l3g4200d:63,l6985e:222,label:169,languag:[289,415,441],larg:331,laser:[57,93,96],lastnum:5,lastreson:112,latch:84,latest:258,layer:[363,370,371,372,379,380,381,382,383],layer_si:101,layer_top:101,layout:[169,391,398],lbsloc2:65,lbsloc:64,lcd:[25,38,39,101,186,220,228,331,434,437,440],lcdseg:39,ldo:246,learn:217,led:[89,169,306,312],ledpin:76,ledpinsetfunc:76,legal:414,legend:[304,333],len:[8,17,22,28,29,32,66,109,119,120,121,124,126,136,137,144,414,415],length:[144,169,415],less:263,level:[13,22,33,98,112,187,364,371,379,415],lexic:415,lf:[97,199,200,201],libcoap:40,libfota2:67,libfota:[66,67],libfota_timeout:66,libgnss:[41,131],libnam:415,libnet:68,librari:[10,11,16,34,36,59,61,62,68,101,109,118,120,121,126,130,132,135,136,139,144,222,320,331,333,340,341,342,349,352,353,359,362,393,414,415,418],light:[50,51,88,91,193,194,195,220,228,234,240,331,400],light_color:101,like:331,limit:[124,385],line:[11,101,169,217,327,344,394,400,415,420],link:[236,285,290,291,296,306,312,341,365,422,423,442],link_pin:138,linkup:124,linux:[173,352,353,360],lis2dh12:69,list:[16,136,169,258,331,398,415],listen:[68,124],littl:[97,340],little_flash:97,ll:222,lm75:70,lm75_data:70,lm75a:70,lm75b:70,lmeter:169,load:[113,234,240,247,263,311,317,326,412,415],loadfil:415,loadlib:415,loc:41,local:[414,415],local_nam:20,local_port:124,localip:124,locat:[64,316],lock:109,lockcel:106,locstr:41,log:[98,187,215,220,228,305,415],log_level:124,logic:[3,414,415],login:[20,358],logstor:98,look:393,loop:[115,208,414],lora2:100,lora:[99,131],lora_devic:100,lora_rx_don:131,lora_rx_error:131,lora_rx_timeout:131,lora_tx_don:131,lora_tx_timeout:131,loraconfig:[99,100],lose:[15,19],low:371,lower:415,lpmem:331,lsdir:32,lsmount:32,ltepin:76,ltrim:128,lua:[340,362,364,366,367,368,370,371,372,373,375,379,380,381,382,383,387,392,413,414,415,419],lua_absindex:415,lua_alloc:415,lua_arith:415,lua_atpan:415,lua_cal:415,lua_callk:415,lua_cfunct:415,lua_checkstack:415,lua_clos:415,lua_compar:415,lua_concat:415,lua_copi:415,lua_createt:415,lua_debug:415,lua_dump:415,lua_error:415,lua_gc:415,lua_getallocf:415,lua_getextraspac:415,lua_getfield:415,lua_getglob:415,lua_gethook:415,lua_gethookcount:415,lua_gethookmask:415,lua_geti:415,lua_getinfo:415,lua_getloc:415,lua_getmetat:415,lua_getstack:415,lua_gett:415,lua_gettop:415,lua_getupvalu:415,lua_getuservalu:415,lua_hook:415,lua_insert:415,lua_integ:415,lua_isboolean:415,lua_iscfunct:415,lua_isfunct:415,lua_isinteg:415,lua_islightuserdata:415,lua_isnil:415,lua_isnon:415,lua_isnoneornil:415,lua_isnumb:415,lua_isstr:415,lua_ist:415,lua_isthread:415,lua_isuserdata:415,lua_isyield:415,lua_kcontext:415,lua_kfunct:415,lua_len:415,lua_load:415,lua_newst:415,lua_newt:415,lua_newthread:415,lua_newuserdata:415,lua_next:415,lua_numb:415,lua_numbertointeg:415,lua_pcal:415,lua_pcallk:415,lua_pop:415,lua_pushboolean:415,lua_pushcclosur:415,lua_pushcfunct:415,lua_pushfstr:415,lua_pushglobalt:415,lua_pushinteg:415,lua_pushlightuserdata:415,lua_pushliter:415,lua_pushlstr:415,lua_pushnil:415,lua_pushnumb:415,lua_pushstr:415,lua_pushthread:415,lua_pushvalu:415,lua_pushvfstr:415,lua_rawequ:415,lua_rawget:415,lua_rawgeti:415,lua_rawgetp:415,lua_rawlen:415,lua_rawset:415,lua_rawseti:415,lua_rawsetp:415,lua_read:415,lua_regist:415,lua_remov:415,lua_replac:415,lua_resum:415,lua_rot:415,lua_setallocf:415,lua_setfield:415,lua_setglob:415,lua_sethook:415,lua_seti:415,lua_setloc:415,lua_setmetat:415,lua_sett:415,lua_settop:415,lua_setupvalu:415,lua_setuservalu:415,lua_stat:415,lua_statu:415,lua_stringtonumb:415,lua_toboolean:415,lua_tocfunct:415,lua_tointeg:415,lua_tointegerx:415,lua_tolstr:415,lua_tonumb:415,lua_tonumberx:415,lua_topoint:415,lua_tostr:415,lua_tothread:415,lua_touserdata:415,lua_typ:415,lua_typenam:415,lua_unsign:415,lua_upvalueid:415,lua_upvalueindex:415,lua_upvaluejoin:415,lua_vers:415,lua_writ:415,lua_xmov:415,lua_yield:415,lua_yieldk:415,luadb:[326,385],lual_addchar:415,lual_addlstr:415,lual_adds:415,lual_addstr:415,lual_addvalu:415,lual_argcheck:415,lual_argerror:415,lual_buff:415,lual_buffinit:415,lual_buffinits:415,lual_callmeta:415,lual_checkani:415,lual_checkinteg:415,lual_checklstr:415,lual_checknumb:415,lual_checkopt:415,lual_checkstack:415,lual_checkstr:415,lual_checktyp:415,lual_checkudata:415,lual_checkvers:415,lual_dofil:415,lual_dostr:415,lual_error:415,lual_execresult:415,lual_fileresult:415,lual_getmetafield:415,lual_getmetat:415,lual_getsubt:415,lual_gsub:415,lual_len:415,lual_loadbuff:415,lual_loadbufferx:415,lual_loadfil:415,lual_loadfilex:415,lual_loadstr:415,lual_newlib:415,lual_newlibt:415,lual_newmetat:415,lual_newst:415,lual_openlib:415,lual_optinteg:415,lual_optlstr:415,lual_optnumb:415,lual_optstr:415,lual_prepbuff:415,lual_prepbuffs:415,lual_pushresult:415,lual_pushresults:415,lual_ref:415,lual_reg:415,lual_requiref:415,lual_setfunc:415,lual_setmetat:415,lual_stream:415,lual_testudata:415,lual_tolstr:415,lual_traceback:415,lual_typenam:415,lual_unref:415,lual_wher:415,luat:[364,365,369,370,372,416,417],luatask:[416,418],luato:[31,169,172,208,217,220,255,269,275,279,284,285,289,295,296,320,340,344,345,346,347,348,350,365,378,386,391,419,421,441],luatool:[323,325],lvgl:[101,169,170,220,228,331],m:[11,415],mac:[138,141,269],machin:[127,226,229,233,239,242,255,285,286,296,306,349,394],macro:222,main:[188,189,190,222,234,240,247,258,263,305,311],mainten:412,make:341,manag:[112,258,326,347,348,371,383,415],mani:[331,341],manipul:[128,144],manual:[169,204,205,206,221,222,228,256,258,327,331,338,403,412,415],manufactur:[204,205,206],map:[37,111,231,236,238,253,267,273],mask:[81,103,169,415],mass:[286,349],master:[219,263],match:[331,414,415],math:415,mathemat:415,matrix:[37,125,169,378],matter:281,max30102:102,max31856:71,max:[136,415],max_temp:105,max_tick:33,maximum:[169,331,412],maxinteg:415,maxout:13,maxsiz:[97,122],mco:259,mcp2515:72,mcu:[103,191],md5:8,md:[8,116],md_file:8,mdelai:133,mdk:222,mean:[304,333,385],measur:[105,181,182,183,291,400,412],mechan:417,megabyt:331,meminfo:118,memori:[144,368,370],merg:169,messag:[131,169,208,263,343,369,415],meta:415,metadata:24,metat:415,meter:169,method:[8,26,34,263,320,330,331,352,353,365,392,409,415],mhz:103,micvol:2,middlewar:383,min:415,min_temp:105,minimum:229,mininteg:415,miniz:104,minu:3,minut:307,mipp:400,mirror:169,miscellan:176,miso:126,mkdir:32,mkf:32,mlx90614:73,mlx90640:105,mobil:[106,131,400],modbu:374,mode2:21,mode:[4,6,8,9,14,21,22,29,32,41,57,72,81,85,90,99,100,103,106,112,123,126,135,137,141,169,263,266,271,277,330,331,339,398,403,409,412,415],model:[11,24,169,293,331],modf:415,modifi:[169,187,222,263,331],modnam:415,modul:[38,78,95,99,100,102,114,233,239,246,255,262,263,266,267,270,275,285,296,297,299,321,331,337,362,366,415,420],month:169,more:[266,352,353],mosi:126,most:364,motiv:374,motor:331,mount:[14,97,122,199,200,201,398],mount_point:[14,97,122],mous:331,move:[169,415],mpu6050:74,mpu6500:74,mpu6xxx:74,mpu9250:74,mqtt:107,mqttc:107,ms:[22,126,418],msdbox:169,msg:[123,364],msgbu:369,msgh:415,msgid:40,mu1:43,muid:106,multi:[3,100,331,414],multimedia:[2,6],multimedia_id:5,multimet:400,multipl:[280,414,418],multiplex:[284,295],multitask:418,mute:289,mutual:365,my:[266,400],mytim:108,n1:415,n2:415,n:[144,415],name:[15,16,58,101,111,169,266,387,415],nation:21,navig:[169,291,317,318,319],nec:75,necessari:[222,331],necir:75,need:[105,359,367,368,369,370,371,372,379,381,382,383],need_ipv6_dn:124,needl:169,netc:[68,124],netl:76,netmask:141,network:[76,106,124,287,331,333,370,421],network_check_period:106,new_apn_nam:106,new_nam:141,new_path:108,newnam:415,next:[19,415],next_id:41,nil:414,nine:74,nmea:41,no_autoat:222,noclear:11,non:[68,81,263,400],nop:118,note:[105,220,265,277,279,284,292,295,297,308,340,403],noth:400,nstinput:106,nstonoff:106,ntp_error:131,ntp_updat:131,ntptm:124,num:[77,106,144],num_channel:2,number:[5,106,169,188,189,190,289,345,400,414],nvm:331,o:222,obj:[36,101,169,415],obj_set_event_cb:101,obj_set_signal_cb:101,object:[169,343,415],objmask:169,obsolet:10,obtain:[190,199,200,201,289],occas:331,off:[38,76,204,205,246,263,372,400,412],offlin:263,offset:[17,32,97,109,119,121,122,144,169,415],old:316,old_path:108,oldnam:415,on_off:[2,5],one:[222,263,331],onenet:[34,62,159],onff:106,onheap:38,onlevel:2,onli:[169,263],onlin:419,only_i:4,onoff:[4,20,25,33,106,107,112,124,140],open:[0,9,30,89,90,114,169,258,331,415],openocd:258,oper:[3,11,18,22,28,30,33,103,106,108,109,118,120,121,126,133,136,137,139,141,317,330,370,403,404,414,415,417],opt:[26,59,67,135,140,141,415],option:[169,222,259,263],ordinari:346,origin:[289,331],originstr:21,os:[108,415],oscil:[229,331],ota:[266,280],ota_port:66,ota_url:66,other:[62,255,262,263,320,409,418],otp:109,out:[84,307],out_buff:6,out_path:4,output:[33,115,187,188,189,190,193,194,195,220,221,228,259,263,365,400,409,412,414,415],outrevers:8,overrid:169,overview:[169,219,246,258,350,403,406,412,423],own:[266,400],ownership:266,pack:[110,144,263,415],packag:[97,122,222,246,256,266,275,276,277,280,281,338,347,349,415],packet:280,packsiz:415,pad:[8,21],pad_index:103,padelai:2,page:[169,263,403],pair:415,palett:169,panel:398,paper:430,papin:2,para:144,param1:[17,66],param2:17,paramet:[34,266,289,317,318,394,414],parent:101,pars:[36,40,41],part:[169,177,180,181,182,183,187,188,189,190,193,194,195,199,200,201,204,205,206,208,209,211,212,213,398],parti:263,partial:393,partii:136,partit:[15,297],pass:[400,418],passwd:141,password:[20,21,106,107,141,169],path:[2,8,16,17,18,32,101,108,415,420],patha:118,pathb:118,pathc:118,pathd:118,pattern:415,paus:2,payload:[40,48,107],pbdata:113,pc:[328,339,409],pca9685:77,pcall:415,pcf8563t:78,pcf8574:79,pci:106,pcm:263,pd:[400,403],per:[188,189,190],perform:[246,263,305],period:[12,114,118,331],peripher:[171,204,205,206,222,246,333,370,377,431],phenomenon:263,phone:[123,400],pi:415,pictur:169,pid:137,pide:3,pin1:106,pin2:106,pin:[22,33,35,79,111,112,120,169,204,205,206,231,236,238,246,253,263,267,273,306,312,331],pin_busi:11,pin_c:[11,25],pin_clk:120,pin_dat:120,pin_data:25,pin_dc:11,pin_reset:11,pin_wr:25,pinout:[223,226,230,233,235,239,242,244,257,262,264,276,277,278,334,337],pit:266,pixel:[144,331],pkg:347,pkx:21,pky:21,place:222,placehold:169,plai:[2,173],plain:415,plan:412,platform:[34,48,62,152,156,173,266,352,353,370,371,372,379,380,381,382,383],playback:[173,174],playstop:2,pleas:[222,281,340],pll:259,plu:3,plug:[258,331,400],plugin:[352,353],pm:[2,112,131,192],pm_mode:2,png:331,pnum:114,po:415,point:[7,169,364,366,367,368,369,370,371,372,373,375,379,383,417],poli:8,polici:289,pool:368,pop:412,popen:415,port:[12,20,27,37,64,65,92,107,124,125,136,211,212,213,221,226,331,400],portabl:315,posit:[65,169,263,277,316,320,331],possibl:331,post:341,power:[15,19,39,112,219,227,229,234,240,246,247,277,288,306,311,312,371,379,396,397,398,400,407,408,411,412],power_on_delai:14,power_pin:14,powersav:141,pp:400,practic:[228,390],pre:[217,263,342],precaut:[169,262,263,306,412],precis:[114,190,316],prefix:128,preload:415,prepar:[152,173,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,220,221,222,228,229,256,286,338,352,353,356,357,359],preparatori:341,press:412,pressur:[52,86],prevent:46,preview:[4,403],previou:[222,415],previous:331,principl:[344,417],print:[11,90,331,394,415],printf:263,prioriti:[263,415],privat:21,probabl:263,problem:[266,375],process:[40,41,135,266,289,364,365,415],product:[173,246,286,306,312,349,403,420],product_id:34,product_kei:34,productkei:64,produt_id:34,profil:267,prog:415,program:[217,271,331,345,365,414,415,416],programm:[263,266],progress:169,project:[150,161,167,266,271,307,348,349,350,352,353,359,430],prompt:349,pronunci:289,propag:169,protect:263,protobuf:113,protobuff:113,protocol:[72,75,106,287,365],provid:[220,255,275,285,296,331],ps:50,publish:[48,62,107,130,343,387,418],pull:[20,22,259],pull_mod:33,pullup:28,puls:[22,114],purchas:[226,233,239,262,275,337,420,423],pure:[217,340],purpos:263,push:[20,115],put:342,pwd:116,pwm:[77,114,193,194,195,196,220,228,284,295,331],qcloud:34,qmc5883l:80,qo:[48,62,107],qq:[341,420],qrcode:[11,101],qrcode_cr:101,qrcode_delet:101,qrcode_upd:101,qualcomm:[23,427],qualiti:[4,5,6],quantiti:412,queri:[144,180,188,189,190,347],question:414,quick:[169,217,414],quickli:400,quiz:414,quo:269,r:[38,135,144],rad:[135,415],radiu:[11,101],random:415,randomse:415,rang:[0,57,93,169],rapid:341,rate:102,raw:305,raw_data:105,raw_point:105,rawdata:40,rawequ:415,rawget:415,rawlen:415,rawset:415,rc522:81,rc522_config_isotyp:81,rclk:84,rcr:138,rddi:258,re:115,read:[0,14,49,78,81,109,115,121,122,124,136,144,181,182,183,199,200,201,204,205,206,263,271,289,331,391,415],read_cj_temp:71,read_datablock:81,read_fault:71,read_light:51,read_rawrc:81,read_tc_temp:71,read_tim:54,readdht12:28,readfil:32,readi:[48,107,140,141,358],readreg:28,readsht30:28,real:[54,117,331,409],realiz:331,reason:266,reboot:[112,118],receiv:[75,118,143,211,212,213,263],receive_buff:72,recogn:[258,400],recolor:169,recommend:[217,218,271,342,420],reconfigur:263,reconnect:[107,140],reconnect_tim:[107,140],record:[2,5,12],record_tim:2,record_typ:2,recordstop:2,rect:11,recv:[28,29,99,100,126],recv_cb:75,recv_len:126,refer:[222,246,415],refresh_r:105,reg32:103,reg:[28,120],region:266,regist:[211,212,213,266,331,342],registr:416,registri:415,regular:414,relat:[169,173,222,278,280,285,296,306,312,414],releas:[6,33,124,143,263,265,279,292,297],relev:[331,364,366,367,368,369,370,371,372,373,375,379,383],reload:263,remain:263,remind:358,remot:[35,82],remote_nam:20,remote_port:124,remoteip:124,remov:[108,169,347,415],renam:[108,415],rep:[414,415],repeat:[35,127],repeat_cnt:33,repl:[115,415,419],replac:[262,263,307],report:12,req_cod:81,reqaddr:64,reqcellinfo:106,reqtim:[64,65],request:[26,59,64,65,66,67,81,112],requir:[169,222,241,316,387,394,415],reqwifi:64,research:316,reserv:331,reset:[72,81,106,143,229,263],resistor:259,resiz:[144,169],resolut:[58,352,434,437,440],resourc:[229,306,312],respons:365,restart:[266,400],restor:269,result:[48,263,387],resum:415,retain:[62,107],reus:263,revers:415,revert:8,rewrit:269,rf:[231,236,267,333],rgb565:38,rgb:331,right:358,rmdir:32,road:77,roll:169,roller:169,rotari:55,rotat:[11,169],rough:316,routin:331,row:[169,263],rp2040:332,rs485_delai:136,rs485_gpio:136,rs485_level:136,rsa:116,rsrp:106,rsrq:106,rssi:106,rst:81,rst_pin:138,rtc:[117,197,220,263,331],rtcauto:41,rtime:106,rtk:320,rtkv:82,rto:[118,331],rtr:138,rtrim:128,rule:[289,415],run:[7,17,130,330,331,415,416,418],rx:[124,135,136],rx_bit:4,rx_hwtimer_id:136,rx_len:126,rx_pin:136,rxbuff:[28,126],rxclear:136,rxe:263,rxlen:28,rxpacket:85,rxsize:136,ry:135,s3:314,s:[266,373,392,415],sai:266,same:331,sampl:[29,263,271,331,341,343],sample_count:71,sample_r:2,satellit:[277,316,319],save:[180,331,358],save_path:4,sc12a:120,sc7a20:83,scale:[169,409],scan:[28,90,141],scan_mod:4,scan_period:134,scanresult:141,scatter:222,scell:106,scell_info:131,scenario:374,schedul:370,schemat:[223,230,428,442],scheme:266,scl:[28,88,120],scl_pin:90,sclk:84,scm:331,scope:169,scr:101,scr_act:101,scr_load:101,scr_load_anim:101,screen:[11,186,238,331,400,412,429,430,440,443],screenshot:305,script:[215,220,234,240,243,247,311,326,330,331,409],scroll:[169,412],scrollabl:169,sd:331,sd_read:119,sd_write:119,sda:[28,88,120],sda_pin:90,sdat:25,sdio:[119,220,228],sdk:331,sdk_appid:34,search_cell_tim:106,searcher:415,searchpath:415,second:[188,189,190],secret:[8,21],section:222,sector:[204,205,206],seek:[144,415],seem:331,seg:[25,39],seg_data:[89,90],seg_mark:39,seg_set:39,segment:[39,238],select:[81,169,222,263,289,304,409,415],selector:169,self:[169,339,414],send:[28,29,64,94,99,100,123,126,140,181,182,183,208,211,212,213,263,369],send_buff:72,send_data:126,send_len:126,sendbuff:135,senddisplaydata:89,sendmsg:132,sendnec:35,sensor:[45,47,49,50,51,52,53,54,57,63,69,70,74,80,86,87,91,93,96,120,241],sent:[263,331],sep:415,separ:[128,400],seq_typ:4,sequenc:33,seri:[169,279,283,285,292,294,296,298,331,359,421,443],serial:[136,211,212,213,215,221,226,331],seriesiot:400,server:[27,92,266],server_cert:[66,124],servic:421,set:[19,22,82,85,117,144,169,188,189,263,288,289,400,403,412],set_avgsel:71,set_bit_mask:81,set_cap:33,set_channel:[99,100],set_cmod:71,set_id:137,set_irqf:[44,83],set_mod:85,set_rxconfig:[99,100],set_tc_typ:71,set_thresh:[44,83],set_tim:54,set_txconfig:[99,100],setauto:106,setband:106,setbaseyear:117,setbitmapmod:135,setblinktim:76,setbright:[89,90],setbu:2,setclk:103,setcolor:38,setcontrast:135,setctx:11,setdefaultpul:22,setdelai:33,setdn:124,setdrawcolor:135,setfont:[11,38,135],setfontmod:135,setframebuff:144,setfreq:77,setgpio:33,sethook:415,setlevel:98,setlight:88,setloc:415,setlocal:415,setmac:141,setmetat:415,setmod:141,setnewsmscb:123,setpath:118,setpowersav:135,setpwm:77,setrang:0,setstat:76,sett:19,settimeout:139,setup:[11,22,25,28,29,39,43,48,76,78,82,126,134,136],setupbreatel:76,setupbuff:38,setupvalu:415,setuservalu:415,setvbuf:415,setwin:11,setxtal:103,sever:[169,331,400],sfd:[121,198],sfud:[122,199,200,201,202,220,228],sha1:8,sha256:8,sha512:8,shake:288,shell:398,shield:72,shift595:84,shift:3,show:[3,11,169],showimag:38,shut:[204,205,206],shutdown:[102,112],si24r1:85,sig:[21,116],sign:116,sim_id:5,sim_ind:131,simid:106,simpin:106,simpl:[169,339,360,361,391,414],simplest:340,simul:[328,329,331],sin:415,sinc:400,singl:[169,208,277,331],singleshow:88,site:358,six:74,size:[11,38,101,122,126,135,169,223,230,246,263,307,368,414,415],skei:[15,19],sleep:[11,38,101,263],slider:169,sloval:271,sm2:21,sm2decrypt:21,sm2encrypt:21,sm2sign:21,sm2verifi:21,sm3:21,sm3hmac:21,sm4:21,sm4decrypt:21,sm4encrypt:21,sm:[21,123,127,131],small:[217,414],smaller:412,smart:263,smartconfig:141,smell:412,smoothli:412,sms_inc:131,sn:[103,106],snr:106,sntp:124,sntp_port:124,sntp_server:124,so:266,soc:[31,172,279,331,340,386,391,421],socket:[68,124,131],soft:263,soft_kb_inc:131,softkb:125,softkeyboard:131,softwar:[46,97,122,125,177,178,179,180,181,182,183,186,187,188,189,190,192,193,194,195,197,198,199,200,201,203,204,205,206,208,209,210,211,212,213,219,220,228,263,271,276,277,317,318,325,331,347,365,409],solut:[258,269,280,366,375],some:[103,263,266],sort:415,sound:412,sourc:[169,222,239,258,351,356,357,359],source_32k:103,source_main:103,spe:263,special:[103,220,277,306,312,385],specif:[199,200,201,263,266,387,420],specifi:[204,205,206,331,371,379],speech:289,speed:[28,138,169,289,331],speed_typ:41,spi:[121,122,126,199,200,201,203,204,205,206,207,220,228,263,271,284,295,306,331,381],spi_bandr:122,spi_c:[14,121,122],spi_dev:38,spi_devic:[11,23,71,97,101,122,126],spi_id:[72,75,81,85,121,122],spi_spe:14,spiconfig:[99,100],spiid:[11,138],spiid_or_spidevic:14,spinbox:169,spinner:169,spl06:86,spl06_01:86,splice:414,split:[128,169],sqrt:415,ssid:141,ssl:107,ssllog:124,st7735:331,stack:415,staip:141,standard:[263,331,400,415],standi:118,start2:144,start:[2,4,8,27,33,75,131,136,137,144,169,208,217,228,356,357,372,400,414,418],startraw:4,startswith:128,startup:[188,189,190,222],state:[76,101,107,124,127,169,263,365],statem:127,statement:[414,415],station:[64,65,316,320],statu:[19,76,106,121,129,169,269,365,415],steer:77,step:[315,331,398],still:[258,400],stop:[2,4,27,28,33,137,208,263,365],stop_bit:136,stopap:141,store:[48,341,359],storge_loc:[17,66],str:[8,11,36,38,40,41,128,135],stream:8,string:[12,110,128,188,189,190,211,212,213,392,414,415],strip:415,strong:132,strongli:420,strtoll:3,structur:[350,369,372,374,378,412,415],sty_en:101,sty_zh:101,style:[98,101,169,187,289,373,374],style_cr:101,style_delet:101,style_list_cr:101,style_list_delet:101,style_list_t:101,style_t:101,sub:[414,415],submask:138,submiss:[387,420],subscrib:[48,62,107,130,208,418],subscript:414,suffix:128,suit:287,summari:[305,392],supplement:59,suppli:[246,306,312,398,400],support:[44,52,62,70,74,100,169,222,239,256,259,263,281,291,317,318,320,331,333,338,374,400,415,420,424],suspend:365,sw:263,swap:[38,414],swd:226,swing:169,swm181:338,swm181cbt6:[336,337],sxx32f103:263,sxx32f1xx:263,sy:[130,131,132,208,375,418],symbol:169,symmetri:169,synchron:68,synctim:106,synergi:[415,416],syntax:415,synthesi:374,synthet:266,sys_pub:387,sysplu:132,system:[3,18,131,169,199,200,201,229,263,277,287,367,370,391,415],system_air001xx:222,t0h:120,t0l:120,t1:415,t1h:120,t1l:120,t2:415,t:[36,40,258,331,341,400,415],ta_temp:105,tab:[117,169],tabl:[169,199,200,201,231,236,241,253,267,273,304,333,414,415],tabview:169,tac:106,tag:[98,169,393],take:415,talk:176,tan:415,target:132,task:[208,343,370,375,418],task_read:43,task_recv:43,taskdel:132,taskinit:[130,418],taskinitex:132,taskl:76,tasklt:76,tasknam:[68,132],tc:263,tcs3472:87,technic:[176,239,281,401,402,412,420],temperatur:[45,49,53,70,71,73,105],tencent:165,tengxun:62,term:[349,365],termin:400,terminolog:344,test:[151,162,168,234,240,247,256,305,311,338,341,407,414],tester:408,text:[169,217,414],textarea:169,tf:78,tft:437,tft_:[434,440],than:[263,412],theme:169,theme_set_act:101,thermocoupl:71,thi:[105,331],thick:101,think:331,third:263,thread:[331,415],three:[63,69],threshold:134,through:[263,331,367,400],tick1:103,tick2:103,tick64:103,tick:[103,169,188,189,190],ticks2:103,tie:78,tile:169,tileview:169,tim2:263,tim5:263,tim:263,time:[8,54,78,106,107,108,117,169,258,263,316,331,409,415],time_inact:[44,83],time_tick:33,time_u:33,timea:108,timeb:108,timeout:[28,64,65,68,99,100,106,112,118,130,132,133,139],timer:[133,208,209,211,212,213,234,240,247,263,311,372,416,418],timer_start:118,timer_stop:118,timerisact:418,timerloopstart:[130,418],timerstart:[117,130,418],timerstop:[117,130,418],timerstopal:[130,418],timestamp:263,timezon:117,titl:169,tl:287,tlink:62,tm1637:88,tm1640:89,tm1650:90,tmpfile:415,tmpname:415,to32:3,to64:3,tobase32:128,tobase64:128,tocod:30,toggl:22,tohex:128,tointeg:415,token:40,tonumb:415,tool:[215,220,263,275,344,356,357,421],toolkit:349,top:358,topic:[48,62,92,107,130,317,387],topolog:398,tostr:[144,415],total:368,totp:8,touch:[134,241,331],touchkei:[131,134],touchkey_inc:131,tovalu:128,tp:[8,11,16,38,41,101,141],tpara:48,tpname:113,traceback:415,traceswo:263,tradit:418,transfer:[28,126,263],transfer_done_top:[28,126],transpar:169,transplant:263,treasur:400,triangl:414,trigger:[181,182,183,263,400],trim:128,trimmer:169,trng:8,troubl:266,troubleshoot:229,tsl2561:91,tt:[2,289,331],tube:[88,89,90],turn:[193,194,195,204,205,263,372,400,412,414],turnov:331,tutori:[172,185,215,216,217,226,229,233,239,242,255,258,262,285,296,306,307,337,413,414],tuya:34,twice:263,two:[190,211,212,213,263,398],tx:[58,68,124,136],tx_hwtimer_id:136,tx_pin:136,txbuff:[28,126],txconfig:[99,100],txfp:263,txpacket:85,txstat:29,type:[3,6,8,12,40,71,94,103,118,121,144,169,211,212,213,331,349,374,385,391,414,415],typec:400,typic:[285,296],tz:117,u4:331,u8g2:135,u8g2_get:16,u8g2_load:16,u:415,ua:412,uart1:[211,212,213],uart:[136,210,211,212,213,214,220,228,284,295,317,318,331,382],uart_br:94,uart_id:[94,95,96,106],udata:415,udelai:133,udisk_attach_sdhc:137,udisk_detach_sdhc:137,udp:92,udpsrv:92,uid:81,ult:415,unabl:222,uncheck:169,uncompress:[13,104],uncov:281,under:[284,295,331],underli:[17,118,217,417],understand:414,uniqu:[188,189,190],unique_id:103,unlock:306,unmount:14,unpack:[110,144,415],unstabl:412,unsubscrib:[62,107,130,418],unsuccess:331,up:[169,229,259,342,400,412,415],updat:[169,217,258,345,347,414],upgrad:[17,66,67,266,280,281,345,400,403,409,412],upload_zbuff1:5,upload_zbuff2:5,upper:[358,415],upvalueid:415,upvaluejoin:415,uri:40,url:[26,140,266],urlencod:128,us:[34,58,62,105,144,172,199,200,201,208,211,212,213,217,222,226,257,258,263,266,306,316,321,330,331,343,358,369,373,374,380,381,382,400,412,415,418,422,425,430,432,435,438,441],usag:[169,178,179,186,192,197,198,203,210,220,228,263,339,360,361],usart:263,usb:[137,246,259,263,284,295,331,400,412],usbapp:137,usbboot:295,use_ipv6:140,user:[105,208,221,222,343,350,352,353,411],user_flag:12,user_nam:106,usernam:[20,107],utc:316,utf8:415,utf:415,uuid:331,uwb:320,v0001:292,v1001:292,v1002:292,v1003:292,v1004:297,v1006:308,v1020:265,v1021:265,v1022:265,v1023:265,v1103:279,v1104:279,v1105:279,v1106:279,v1107:279,v1108:279,v1109:279,v1110:279,v1111:279,v1112:279,v1:[331,400,412,415],v2:[65,67,400,415],v:[135,415],val1:[110,144,415],val2:[98,110,144],val3:[98,110],val:[22,79,98,112,418],valid:[342,415],valn:110,valu:[2,14,15,19,22,81,82,103,106,169,263,343,385,400,412,414,415],variabl:[414,415],variou:[34,349],varnam:415,veri:[169,331],verifi:116,version:[34,81,118,169,234,240,247,258,280,311,323,331,339,342,345,406,414,415,421],version_get:1,vertic:169,vhid_cancel_upload:137,vhid_upload:137,vid:137,video:[4,173,174,217,414],view:[169,215,220,221,228],virtual:[284,295],visibl:[169,340,415],visit:358,vl6180:93,vlcd:39,voic:[331,412],vol:2,volt:5,voltag:[263,400,403,412],volum:289,vscode:218,vsiminit:106,vsimonoff:106,w1_connect:120,w1_read:120,w1_reset:120,w1_write:120,w5500:[131,138],w5500_ind:131,w800:331,w806:220,w:[4,11,38,101,135],wai:[269,321],wait485:136,wait:[17,68,124,130,208,307,343,365,375,414,418],waitabl:343,waitc:365,waitlink:68,waitmsg:132,waitt:365,waituntil:[130,418],waituntilext:418,wake:229,wakeup:38,wakeuppin:112,want:[331,358,400,412],warn:98,warning_level:118,watch:219,watchdog:[46,139],watchdogpin:46,waveform:403,wdt:139,weak:415,weather_icon:11,websocket:140,what:[220,226,233,255,262,266,275,285,296,331,337,364,373,392,412,415],when:[263,400,412],whenc:415,where:[266,331,342],whether:263,which:331,white:[217,331],why:[169,331,358,367,368,369,370,371,372,379,381,382,383,400],widget:169,width:[11,144,169],wifi:[141,315,320,383],win32:361,win:169,window:[134,169,173,352,353,400],wire:[277,398],wireless:[219,331],within:387,withstand:263,wizpro200st8:263,wlan:[141,383],word:266,wrap:415,write:[2,9,14,78,81,109,121,122,136,144,169,199,200,201,204,205,206,263,266,271,340,391,415],write_datablock:81,writefil:32,writereg:28,wrong:266,ws2812:172,ws2812b:120,ws2812b_pwm:120,ws2812b_spi:120,wsc:140,x0:[38,135],x1:[38,135,144],x2:[11,38,135,144],x32:103,x:[11,38,101,105,135,144,415],xfer:[28,126],xmake:[352,353],xmodem:94,xpcall:415,xt804:266,xtalrefoutput:103,xxtea:142,y0:[38,135],y1:[38,135,144],y2:[11,38,135,144],y:[11,38,101,105,135,144,169,415],yet:331,yhm27xxx:120,yield:415,ymodem:143,you:[331,358,367,368,369,370,371,372,383,400,412],your:393,zbuff:[12,144,211,212,213],ze08g:95,ze08g_ch2o:95,zero:412,zh07:96,zlib:104,zone:109,zoom:409}}) \ No newline at end of file diff --git a/translated-docs/_static/luatos-emulator/vs/snippet.json b/translated-docs/_static/luatos-emulator/vs/snippet.json index 9a8f6e3c..f932965b 100644 --- a/translated-docs/_static/luatos-emulator/vs/snippet.json +++ b/translated-docs/_static/luatos-emulator/vs/snippet.json @@ -1 +1 @@ -{"_G": {"body": "_G(${0:...})", "description": "_G", "prefix": "_G"}, "_VERSION": {"body": "_VERSION(${0:...})", "description": "_VERSION", "prefix": "_VERSION"}, "assert": {"body": "assert(${1:v}${2:[, message]})", "description": "assert()", "prefix": "assert"}, "collectgarbage": {"body": "collectgarbage(${1:[opt]}${2:[, arg]})", "description": "collectgarbage()", "prefix": "collectgarbage"}, "coroutine.create": {"body": "coroutine.create( ${1:function} )", "description": "coroutine.create", "prefix": "coroutine.create"}, "coroutine.isyieldable": {"body": "coroutine.isyieldable( )", "description": "coroutine.isyieldable", "prefix": "coroutine.isyieldable"}, "coroutine.resume": {"body": "coroutine.resume( ${1:co}${2:[, val1, \u00b7\u00b7\u00b7]} )", "description": "coroutine.resume", "prefix": "coroutine.resume"}, "coroutine.running": {"body": "coroutine.running( )", "description": "coroutine.running", "prefix": "coroutine.running"}, "coroutine.status": {"body": "coroutine.status( ${1:co} )", "description": "coroutine.status", "prefix": "coroutine.status"}, "coroutine.wrap": {"body": "coroutine.wrap( ${1:function} )", "description": "coroutine.wrap", "prefix": "coroutine.wrap"}, "coroutine.yield": {"body": "coroutine.yield( ${1:...} )", "description": "coroutine.yield", "prefix": "coroutine.yield"}, "debug.debug": {"body": "debug.debug()", "description": "debug.debug ()", "prefix": "debug.debug"}, "debug.getfenv": {"body": "debug.getfenv(${0:...})", "description": "debug.getfenv (o)", "prefix": "debug.getfenv"}, "debug.gethook": {"body": "debug.gethook( ${1:[thread]} )", "description": "debug.gethook ([thread])", "prefix": "debug.gethook"}, "debug.getinfo": {"body": "debug.getinfo( ${1:[thread],}${2:f}${3:[, what]} )", "description": "debug.getinfo ([thread,] f [, what])", "prefix": "debug.getinfo"}, "debug.getlocal": {"body": "debug.getlocal( ${1:[thread],}${2:f}${3:[, local]} )", "description": "debug.getlocal ([thread,] f, local)", "prefix": "debug.getlocal"}, "debug.getmetatable": {"body": "debug.getmetatable( ${1:value} )", "description": "debug.getmetatable (value)", "prefix": "debug.getmetatable"}, "debug.getregistry": {"body": "debug.getregistry()", "description": "debug.getregistry ()", "prefix": "debug.getregistry"}, "debug.getupvalue": {"body": "debug.getupvalue( ${1:f}, ${2:up} )", "description": "debug.getupvalue (f, up)", "prefix": "debug.getupvalue"}, "debug.getuservalue": {"body": "debug.getuservalue(${0:...})", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue"}, "debug.getuservalue ": {"body": "debug.getuservalue ( ${1:u} )", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue "}, "debug.setfenv": {"body": "debug.setfenv(${0:...})", "description": "debug.setfenv (object, table)", "prefix": "debug.setfenv"}, "debug.sethook": {"body": "debug.sethook( ${1:[thead,]}${2:hook}, ${3:mask}${4:[, count]} )", "description": "debug.sethook ([thread,] hook, mask [, count])", "prefix": "debug.sethook"}, "debug.setlocal": {"body": "debug.setlocal( ${1:[thead,]}${2:level}, ${3:local}, ${4:value} )", "description": "debug.setlocal ([thread,] level, local, value)", "prefix": "debug.setlocal"}, "debug.setmetatable": {"body": "debug.setmetatable( ${1:value}, ${2:table} )", "description": "debug.setmetatable (value, table)", "prefix": "debug.setmetatable"}, "debug.setupvalue": {"body": "debug.setupvalue( ${1:f}, ${2:up}, ${3:value} )", "description": "debug.setupvalue (f, up, value)", "prefix": "debug.setupvalue"}, "debug.setuservalue": {"body": "debug.setuservalue( ${1:udata}, ${2:value} )", "description": "debug.setuservalue (udata, value)", "prefix": "debug.setuservalue"}, "debug.traceback": {"body": "debug.traceback( ${1:[thread,]}${2:[message]}${3:[, level]} )", "description": "debug.traceback ([thread,] [message [, level]])", "prefix": "debug.traceback"}, "debug.upvalueid": {"body": "debug.upvalueid( ${1:f}, ${2:n})", "description": "debug.upvalueid (f, n)", "prefix": "debug.upvalueid"}, "debug.upvaluejoin": {"body": "debug.upvaluejoin( ${1:f1}, ${2:n1}, ${3:f2}, ${4:n2} )", "description": "debug.upvaluejoin (f1, n1, f2, n2)", "prefix": "debug.upvaluejoin"}, "dofile": {"body": "dofile(${1:[filename]})", "description": "dofile ([filename])", "prefix": "dofile"}, "elif": {"body": "else if ${1:condition} then\n\t${0:-- body}\n", "description": "elif", "prefix": "elif"}, "error": {"body": "error(${0:...})", "description": "error (message [, level])", "prefix": "error"}, "file:close": {"body": "file:close(${0:...})", "description": "file:close ()", "prefix": "file:close"}, "file:flush": {"body": "file:flush(${0:...})", "description": "file:flush ()", "prefix": "file:flush"}, "file:lines": {"body": "file:lines(${0:...})", "description": "file:lines ()", "prefix": "file:lines"}, "file:read": {"body": "file:read(${0:...})", "description": "file:read (...)", "prefix": "file:read"}, "file:seek": {"body": "file:seek(${0:...})", "description": "file:seek ([whence] [, offset])", "prefix": "file:seek"}, "file:setvbuf": {"body": "file:setvbuf(${0:...})", "description": "file:setvbuf (mode [, size])", "prefix": "file:setvbuf"}, "file:write": {"body": "file:write(${0:...})", "description": "file:write (...)", "prefix": "file:write"}, "for": {"body": "for ${1:i}=${2:1},${3:10} do\n\t${0:print(i)}\nend", "description": "for i=1,10", "prefix": "for"}, "fori": {"body": "for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t${0:print(i,v)}\nend", "description": "for i,v in ipairs()", "prefix": "fori"}, "forp": {"body": "for ${1:k},${2:v} in pairs(${3:table_name}) do\n\t${0:print(k,v)}\nend", "description": "for k,v in pairs()", "prefix": "forp"}, "fun": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "fun"}, "function": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "function"}, "getfenv": {"body": "getfenv(${0:...})", "description": "getfenv ([f])", "prefix": "getfenv"}, "getmetatable": {"body": "getmetatable(${1:object})", "description": "getmetatable (object)", "prefix": "getmetatable"}, "if": {"body": "if ${1:condition} then\n\t${0:-- body}\nend", "description": "if", "prefix": "if"}, "ifel": {"body": "if ${1:condition} then\n\t${2:-- body}\nelse\n\t${0:-- body}\nend", "description": "ifel", "prefix": "ifel"}, "io.close": {"body": "io.close(${0:...})", "description": "io.close ([file])", "prefix": "io.close"}, "io.flush": {"body": "io.flush(${0:...})", "description": "io.flush ()", "prefix": "io.flush"}, "io.input": {"body": "io.input(${0:...})", "description": "io.input ([file])", "prefix": "io.input"}, "io.lines": {"body": "io.lines(${0:...})", "description": "io.lines ([filename])", "prefix": "io.lines"}, "io.open": {"body": "io.open(${0:...})", "description": "io.open (filename [, mode])", "prefix": "io.open"}, "io.output": {"body": "io.output(${0:...})", "description": "io.output ([file])", "prefix": "io.output"}, "io.popen": {"body": "io.popen(${0:...})", "description": "io.popen (prog [, mode])", "prefix": "io.popen"}, "io.read": {"body": "io.read(${0:...})", "description": "io.read (...)", "prefix": "io.read"}, "io.tmpfile": {"body": "io.tmpfile(${0:...})", "description": "io.tmpfile ()", "prefix": "io.tmpfile"}, "io.type": {"body": "io.type(${0:...})", "description": "io.type (obj)", "prefix": "io.type"}, "io.write": {"body": "io.write(${0:...})", "description": "io.write (...)", "prefix": "io.write"}, "ipairs": {"body": "ipairs(${0:...})", "description": "ipairs (t)", "prefix": "ipairs"}, "load": {"body": "load(${0:...})", "description": "load (func [, chunkname])", "prefix": "load"}, "loadfile": {"body": "loadfile(${0:...})", "description": "loadfile ([filename])", "prefix": "loadfile"}, "loadstring": {"body": "loadstring(${0:...})", "description": "loadstring (string [, chunkname])", "prefix": "loadstring"}, "local": {"body": "local ${1:x} = ${0:1}", "description": "local x = 1", "prefix": "local"}, "math.abs": {"body": "math.abs( ${1:x} )", "description": "math.abs", "prefix": "math.abs"}, "math.acos": {"body": "math.acos( ${1:x} )", "description": "math.acos", "prefix": "math.acos"}, "math.asin": {"body": "math.asin( ${1:x} )", "description": "math.asin", "prefix": "math.asin"}, "math.atan": {"body": "math.atan( ${1:y}${2:[, x]} )", "description": "math.atan", "prefix": "math.atan"}, "math.atan2": {"body": "math.atan2(${0:...})", "description": "math.atan2 (y, x)", "prefix": "math.atan2"}, "math.ceil": {"body": "math.ceil( ${1:x} )", "description": "math.ceil", "prefix": "math.ceil"}, "math.cos": {"body": "math.cos( ${1:x} )", "description": "math.cos", "prefix": "math.cos"}, "math.cosh": {"body": "math.cosh(${0:...})", "description": "math.cosh (x)", "prefix": "math.cosh"}, "math.deg": {"body": "math.deg( ${1:x} )", "description": "math.deg", "prefix": "math.deg"}, "math.exp": {"body": "math.exp( ${1:x} )", "description": "math.exp", "prefix": "math.exp"}, "math.floor": {"body": "math.floor( ${1:x} )", "description": "math.floor", "prefix": "math.floor"}, "math.fmod": {"body": "math.fmod( ${1:x},${2:y} )", "description": "math.fmod", "prefix": "math.fmod"}, "math.frexp": {"body": "math.frexp(${0:...})", "description": "math.frexp (x)", "prefix": "math.frexp"}, "math.huge": {"body": "math.huge(${0:...})", "description": "math.huge", "prefix": "math.huge"}, "math.ldexp": {"body": "math.ldexp(${0:...})", "description": "math.ldexp (m, e)", "prefix": "math.ldexp"}, "math.log": {"body": "math.log( ${1:x}${2:[, base]} )", "description": "math.log", "prefix": "math.log"}, "math.log10": {"body": "math.log10(${0:...})", "description": "math.log10 (x)", "prefix": "math.log10"}, "math.math.randomseed": {"body": "math.math.randomseed( ${1:x} )", "description": "math.math.randomseed", "prefix": "math.math.randomseed"}, "math.max": {"body": "math.max( ${1:x},${2:...} )", "description": "math.max", "prefix": "math.max"}, "math.maxinteger": {"body": "math.maxinteger(${0:...})", "description": "math.maxinteger", "prefix": "math.maxinteger"}, "math.min": {"body": "math.min( ${1:x},${2:...} )", "description": "math.min", "prefix": "math.min"}, "math.mininteger": {"body": "math.mininteger(${0:...})", "description": "math.mininteger", "prefix": "math.mininteger"}, "math.modf": {"body": "math.modf( ${1:x} )", "description": "math.modf", "prefix": "math.modf"}, "math.pi": {"body": "math.pi(${0:...})", "description": "math.pi", "prefix": "math.pi"}, "math.pow": {"body": "math.pow(${0:...})", "description": "math.pow (x, y)", "prefix": "math.pow"}, "math.rad": {"body": "math.rad(${0:...})", "description": "math.rad (x)", "prefix": "math.rad"}, "math.random": {"body": "math.random( ${1:[m]}${2:[, n]} )", "description": "math.random", "prefix": "math.random"}, "math.randomseed": {"body": "math.randomseed(${0:...})", "description": "math.randomseed (x)", "prefix": "math.randomseed"}, "math.sin": {"body": "math.sin( ${1:x} )", "description": "math.sin", "prefix": "math.sin"}, "math.sinh": {"body": "math.sinh(${0:...})", "description": "math.sinh (x)", "prefix": "math.sinh"}, "math.sqrt": {"body": "math.sqrt( ${1:x} )", "description": "math.sqrt", "prefix": "math.sqrt"}, "math.tan": {"body": "math.tan( ${1:x} )", "description": "math.tan", "prefix": "math.tan"}, "math.tanh": {"body": "math.tanh(${0:...})", "description": "math.tanh (x)", "prefix": "math.tanh"}, "math.tointeger": {"body": "math.tointeger( ${1:x} )", "description": "math.tointeger", "prefix": "math.tointeger"}, "math.type": {"body": "math.type( ${1:x} )", "description": "math.type", "prefix": "math.type"}, "math.ult": {"body": "math.ult(${0:...})", "description": "math.ult (m, n)", "prefix": "math.ult"}, "module": {"body": "module(${0:...})", "description": "module (name [, ...])", "prefix": "module"}, "next": {"body": "next(${1:table}${2:[, index]})", "description": "next (table [, index])", "prefix": "next"}, "os.clock": {"body": "os.clock()", "description": "os.clock() - \u8fd4\u56de\u7a0b\u5e8f\u4f7f\u7528\u7684\u6309\u79d2\u8ba1 CPU \u65f6\u95f4\u7684\u8fd1\u4f3c\u503c\n\u4f20\u5165\u503c\uff1a\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\n-- \u5982\u9700\u8981\u83b7\u53d6 \u65f6\u95f4\u6233, \u8bf7\u4f7f\u7528 os.time()\n-- \u5982\u9700\u83b7\u53d6\u7cfb\u7edf\u8fd0\u884c\u65f6\u957f, \u8bf7\u4f7f\u7528 mcu.ticks()\n", "prefix": "os.clock"}, "os.date": {"body": "os.date(${1:fmt},${2:time})", "description": "os.date(fmt, time) - \u65e5\u671f\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring \u683c\u5f0f\u5316\u5b57\u7b26\u4e32,\u53ef\u4ee5\u662fnil\ntable \u65e5\u671f\u65f6\u95f4\u7684table\n\u8fd4\u56de\u503c\uff1a\ntable/string \u6839\u636efmt\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n\n-- \u503c\u5f97\u6ce8\u610f\u7684\u51e0\u70b9:\n-- 1. \u82e5\u9700\u8981UTC\u65f6\u95f4, fmt\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u5199\"!\"\n-- 2. fmt\u7684\u683c\u5f0f\u5316\u9075\u5faa C \u51fd\u6570 strftime, \u53ef\u4ee5\u67e5\u9605 https://developer.aliyun.com/article/320480\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date())\n-- \u83b7\u53d6UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%c\"))\n-- \u683c\u5f0f\u5316\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u7684\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0})))\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u7684table\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"*t\")))\n-- \u83b7\u53d6UTC\u65f6\u95f4\u7684table\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"!*t\")))\n", "prefix": "os.date"}, "os.difftime": {"body": "os.difftime(${1:timeA},${2:timeB})", "description": "os.difftime(timeA, timeB) - \u65f6\u95f4\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u95f4A,\u6570\u503c\u7c7b\u578b\nint \u65f6\u95f4B,\u6570\u503c\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nint \u65f6\u95f4\u5dee\u503c\n", "prefix": "os.difftime"}, "os.execute": {"body": "os.execute(${0:...})", "description": "os.execute ([command])", "prefix": "os.execute"}, "os.exit": {"body": "os.exit(${0:...})", "description": "os.exit ([code])", "prefix": "os.exit"}, "os.getenv": {"body": "os.getenv(${0:...})", "description": "os.getenv (varname)", "prefix": "os.getenv"}, "os.remove": {"body": "os.remove(${1:path})", "description": "os.remove(path) - \u79fb\u9664\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u79fb\u9664\u7684\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u5220\u9664\u6839\u76ee\u5f55\u4e0b\u7684\u67d0\u4e2a\u6587\u4ef6\nos.remove(\"/1.txt\")\n-- \u6ce8\u610f, \u7ebf\u5237\u65f6\u7684\u6587\u4ef6, \u4e00\u822c\u5728 /luadb \u76ee\u5f55, \u8fd9\u4e2a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u662f\u53ea\u8bfb\u7684\n-- \u4e5f\u5c31\u662f\u65e0\u6cd5\u6267\u884c os.remove(\"/luadb/xxx.bin\")\n", "prefix": "os.remove"}, "os.rename": {"body": "os.rename(${1:old_path},${2:new_path})", "description": "os.rename(old_path, new_path) - \u6587\u4ef6\u91cd\u547d\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u6e90\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\nstring \u76ee\u6807\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u53ea\u6709\u5728\u76f8\u540c\u6587\u4ef6\u7cfb\u7edf\u4e0b\u7684\u6587\u4ef6\u53ef\u4ee5\u91cd\u547d\u540d\n-- \u4f8b\u5982:\nos.rename(\"/1.txt\", \"/2.txt\")\n-- \u4e0d\u540c\u6587\u4ef6\u7cfb\u7edf, \u6216\u8005\u6e90\u6587\u4ef6\u7cfb\u7edf\u662f\u53ea\u8bfb\u7684, \u5219\u65e0\u6cd5\u6267\u884c\n--os.rename(\"/luadb/1.txt\", \"/luadb/2.txt\")\n--os.rename(\"/luadb/1.txt\", \"/2.txt\")\n", "prefix": "os.rename"}, "os.setlocale": {"body": "os.setlocale(${0:...})", "description": "os.setlocale (locale [, category])", "prefix": "os.setlocale"}, "os.time": {"body": "os.time(${1:mytime})", "description": "os.time(mytime) - \u65f6\u95f4\u6233\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\ntable \u65e5\u671f\u65f6\u95f4\u7684table\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\u6ce8\u610f, \u8fd9\u4e2a\u51fd\u6570\u8fd4\u56de\u7684\u662fUTC\u65f6\u95f4\u6233\n-- \u65f6\u95f4\u6233, \u4f46lua\u4e0b\u7684\u7cbe\u5ea6\u53ea\u80fd\u5230\u79d2\nlog.info(\"UTC\u65f6\u95f4\u6233\", os.time())\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u6233\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0}))\n", "prefix": "os.time"}, "os.tmpname": {"body": "os.tmpname(${0:...})", "description": "os.tmpname ()", "prefix": "os.tmpname"}, "package.config": {"body": "package.config(${0:...})", "description": "package.config", "prefix": "package.config"}, "package.cpath": {"body": "package.cpath(${0:...})", "description": "package.cpath", "prefix": "package.cpath"}, "package.loaded": {"body": "package.loaded(${0:...})", "description": "package.loaded", "prefix": "package.loaded"}, "package.loaders": {"body": "package.loaders(${0:...})", "description": "package.loaders", "prefix": "package.loaders"}, "package.loadlib": {"body": "package.loadlib(${0:...})", "description": "package.loadlib (libname, funcname)", "prefix": "package.loadlib"}, "package.path": {"body": "package.path(${0:...})", "description": "package.path", "prefix": "package.path"}, "package.preload": {"body": "package.preload(${0:...})", "description": "package.preload", "prefix": "package.preload"}, "package.searchers": {"body": "package.searchers(${0:...})", "description": "package.searchers", "prefix": "package.searchers"}, "package.searchpath": {"body": "package.searchpath(${0:...})", "description": "package.searchpath (name, path [, sep [, rep]])", "prefix": "package.searchpath"}, "package.seeall": {"body": "package.seeall(${0:...})", "description": "package.seeall (module)", "prefix": "package.seeall"}, "pairs": {"body": "pairs(${0:...})", "description": "pairs (t)", "prefix": "pairs"}, "pcall": {"body": "pcall(${0:...})", "description": "pcall (f, arg1, ...)", "prefix": "pcall"}, "print": {"body": "print(${1:...})", "description": "print(...)", "prefix": "print"}, "require": {"body": "require\"${1:module}\"", "description": "require()", "prefix": "require"}, "ret": {"body": "return ${1:...}", "description": "return ...", "prefix": "ret"}, "select": {"body": "select(${1:index}, ${2:...})", "description": "select (index, \u00b7\u00b7\u00b7)", "prefix": "select"}, "setfenv": {"body": "setfenv(${0:...})", "description": "setfenv (f, table)", "prefix": "setfenv"}, "setmetatable": {"body": "setmetatable(${1:table}, ${2:metatable})", "description": "setmetatable (table, metatable)", "prefix": "setmetatable"}, "tonumber": {"body": "tonumber(${1:e}${2:[, base]})", "description": "tonumber (e [, base])", "prefix": "tonumber"}, "tostring": {"body": "tostring(${1:v})", "description": "tostring (v)", "prefix": "tostring"}, "type": {"body": "type(${1:v})", "description": "type (v)", "prefix": "type"}, "unpack": {"body": "unpack(${0:...})", "description": "unpack (list [, i [, j]])", "prefix": "unpack"}, "xpcall": {"body": "xpcall(${0:...})", "description": "xpcall (f, err)", "prefix": "xpcall"}, "sys.publish(...)": {"body": "sys.publish(${1:...})", "description": "\u53d1\u5e03\u5185\u90e8\u6d88\u606f\uff0c\u5b58\u50a8\u5728\u5185\u90e8\u6d88\u606f\u961f\u5217\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\npublish(\"NET_STATUS_IND\")\r\n", "prefix": "sys.publish(...)"}, "sys.restart(r)": {"body": "sys.restart(${1:r})", "description": "\u8f6f\u4ef6\u91cd\u542f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.restart('\u7a0b\u5e8f\u8d85\u65f6\u8f6f\u4ef6\u91cd\u542f')\r\n", "prefix": "sys.restart(r)"}, "sys.run()": {"body": "sys.run()", "description": "run()\u4ece\u5e95\u5c42\u83b7\u53d6core\u6d88\u606f\u5e76\u53ca\u65f6\u5904\u7406\u76f8\u5173\u6d88\u606f\uff0c\u67e5\u8be2\u5b9a\u65f6\u5668\u5e76\u8c03\u5ea6\u5404\u6ce8\u518c\u6210\u529f\u7684\u4efb\u52a1\u7ebf\u7a0b\u8fd0\u884c\u548c\u6302\u8d77\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.run()\r\n", "prefix": "sys.run()"}, "sys.setRollBack(flag, secs)": {"body": "sys.setRollBack(${1:flag},${2: secs})", "description": "\u8bbe\u7f6e\u201clua\u811a\u672c\u8fd0\u884c\u51fa\u9519\u65f6\uff0c\u662f\u5426\u56de\u9000\u539f\u59cb\u70e7\u5199\u7248\u672c\u201d\u7684\u529f\u80fd\u5f00\u5173\u3002\u5982\u679c\u6ca1\u6709\u8c03\u7528\u6b64\u63a5\u53e3\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u56de\u6eda\r\n\u8fd4\u56de\u503c\uff1a\r\nnil\r\n\u4f8b\u5b50\uff1a\r\nsys.setRollBack(true)\r\nsys.setRollBack(false)\r\n", "prefix": "sys.setRollBack(flag, secs)"}, "sys.subscribe(id, callback)": {"body": "sys.subscribe(${1:id},${2: callback})", "description": "\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.subscribe(id, callback)"}, "sys.taskInit(fun, ...)": {"body": "sys.taskInit(${1:fun},${2: ...})", "description": "\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570\uff0cmain.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\r\n\u8fd4\u56de\u503c\uff1a\r\nco \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\r\n\u4f8b\u5b50\uff1a\r\nsys.taskInit(task1,'a','b')\r\n", "prefix": "sys.taskInit(fun, ...)"}, "sys.timerIsActive(val, ...)": {"body": "sys.timerIsActive(${1:val},${2: ...})", "description": "\u5224\u65ad\u67d0\u4e2a\u5b9a\u65f6\u5668\u662f\u5426\u5904\u4e8e\u5f00\u542f\u72b6\u6001\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5f00\u542f\u72b6\u6001\u8fd4\u56detrue\uff0c\u5426\u5219nil", "prefix": "sys.timerIsActive(val, ...)"}, "sys.timerLoopStart(fnc, ms, ...)": {"body": "sys.timerLoopStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerLoopStart(fnc, ms, ...)"}, "sys.timerStart(fnc, ms, ...)": {"body": "sys.timerStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerStart(fnc, ms, ...)"}, "sys.timerStop(val, ...)": {"body": "sys.timerStop(${1:val},${2: ...})", "description": "\u5173\u95ed\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStop(1)\r\n", "prefix": "sys.timerStop(val, ...)"}, "sys.timerStopAll(fnc)": {"body": "sys.timerStopAll(${1:fnc})", "description": "\u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStopAll(cbFnc)\r\n", "prefix": "sys.timerStopAll(fnc)"}, "sys.unsubscribe(id, callback)": {"body": "sys.unsubscribe(${1:id},${2: callback})", "description": "\u53d6\u6d88\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nunsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.unsubscribe(id, callback)"}, "sys.wait(ms)": {"body": "sys.wait(${1:ms})", "description": "Task\u4efb\u52a1\u5ef6\u65f6\u51fd\u6570\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5b9a\u65f6\u7ed3\u675f\u8fd4\u56denil,\u88ab\u5176\u4ed6\u7ebf\u7a0b\u5524\u8d77\u8fd4\u56de\u8c03\u7528\u7ebf\u7a0b\u4f20\u5165\u7684\u53c2\u6570\r\n\u4f8b\u5b50\uff1a\r\nsys.wait(30)\r\n", "prefix": "sys.wait(ms)"}, "sys.waitUntil(id, ms)": {"body": "sys.waitUntil(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nresult \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56detrue\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntil(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntil(id, ms)"}, "sys.waitUntilExt(id, ms)": {"body": "sys.waitUntilExt(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\u6269\u5c55\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nmessage \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56demessage\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntilExt(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntilExt(id, ms)"}, "table.concat(t,s)": {"body": "table.concat(${1:t},${2: s})", "description": "\u8868\u8fde\u63a5\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n-- \u8fd4\u56de table \u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 bananaorangeapple\r\n\r\n-- \u6307\u5b9a\u8fde\u63a5\u5b57\u7b26\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \"))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 banana, orange, apple\r\n\r\n-- \u6307\u5b9a\u7d22\u5f15\u6765\u8fde\u63a5 table\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \", 2,3))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 orange, apple\r\n", "prefix": "table.concat()"}, "table.gsort(t, f)": {"body": "table.gsort(${1:t},${2: f})", "description": "\u8fd4\u56de\u4e00\u4e2a\u8fed\u4ee3\u5668\u51fd\u6570,\u6bcf\u6b21\u8c03\u7528\u51fd\u6570\u90fd\u4f1a\u8fd4\u56dehash\u8868\u7684\u6392\u5e8f\u540e\u7684\u952e\u503c\u5bf9\r\n\u8fd4\u56de\u503c\uff1a\r\nfunction.\r\n\u4f8b\u5b50\uff1a\r\ntest = {a=1,f=9,d=2,c=8,b=5}\r\nfor name,line in pairsByKeys(test) do print(name,line) end\r\n", "prefix": "table.gsort(t, f)"}, "table.insert(t,d)": {"body": "table.insert(${1:t},${2: d})", "description": "\u6dfb\u52a0table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n\r\n-- \u5728\u672b\u5c3e\u63d2\u5165\r\ntable.insert(fruits,\"mango\")\r\nprint(\"\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a \",fruits[4])\r\n--\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a mango\r\n\r\n-- \u5728\u7d22\u5f15\u4e3a 2 \u7684\u952e\u5904\u63d2\u5165\r\ntable.insert(fruits,2,\"grapes\")\r\nprint(\"\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a \",fruits[2])\r\n--\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a grapes\r\n\r\nprint(\"\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a \",fruits[5])\r\n--\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a mango\r\n", "prefix": "table.insert()"}, "table.remove(t,i)": {"body": "table.remove(${1:t},${2: i})", "description": "\u79fb\u9664table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table", "prefix": "table.remove()"}, "string.byte()": {"body": "string.byte()", "description": "\u63a5\u6536\u63a7\u5236\u5b57\u7b26\uff0c\u8fd4\u56deASCII\u7801\r\n\u8fd4\u56de\u503c\uff1a\r\n ASCII\u7801\r\n\u4f8b\u5b50\uff1a\r\nstring.byte(\"ABCD\") --65\r\nstring.byte(\"ABCD\",4) --68\r\n", "prefix": "string.byte()"}, "string.char()": {"body": "string.char()", "description": "\u63a5\u6536ASCII\u7801\uff0c\u8fd4\u56de\u5bf9\u5e94\u7684\u63a7\u5236\u5b57\u7b26\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\r\n\u4f8b\u5b50\uff1a\r\nstring.char(97,98,99,100) --abcd\r\n", "prefix": "string.char()"}, "string.find()": {"body": "string.find()", "description": "\u67e5\u627e\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0s\u00a0\u4e2d\u5339\u914d\u5230\u7684\u00a0pattern\r\n\u8fd4\u56de\u503c\uff1a\r\n \u8fd4\u56de\u5339\u914d\u5b57\u7b26\u5177\u4f53\u4f4d\u7f6e\u3002\u4e0d\u5b58\u5728\u5219\u8fd4\u56de nil\r\n\u4f8b\u5b50\uff1a\r\nstring.find(\"Hello Lua user\", \"Lua\", 1) --7 9\r\n", "prefix": "string.find()"}, "string.format()": {"body": "string.format()", "description": "\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.format(\"the value is:%d\",4) --the value is:4\r\n", "prefix": "string.format()"}, "string.gsub()": {"body": "string.gsub()", "description": "\u5b57\u7b26\u4e32\u66ff\u6362", "prefix": "string.gsub()"}, "string.len()": {"body": "string.len()", "description": "\u8ba1\u7b97\u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u4f8b\u5b50\uff1a\r\nstring.len(\"abc\") --3\r\n", "prefix": "string.len()"}, "string.lower()": {"body": "string.lower()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5c0f\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5c0f\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.lower()"}, "string.rep()": {"body": "string.rep()", "description": "\u5b57\u7b26\u4e32\u62f7\u8d1d\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.rep(\"abcd\",2) --abcdabcd\r\n", "prefix": "string.rep()"}, "string.reverse()": {"body": "string.reverse()", "description": "\u5b57\u7b26\u4e32\u53cd\u8f6c\r\n\u8fd4\u56de\u503c\uff1a\r\n \u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.reverse(\"Luat\") --tauL\r\n", "prefix": "string.reverse()"}, "string.split(str, delimiter)": {"body": "string.split(${1:str},${2: delimiter})", "description": "\u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u5217\u8868\r\n\u4f8b\u5b50\uff1a\r\n\"123,456,789\":split(',') -> {'123','456','789'}\r\n", "prefix": "string.split(str, delimiter)"}, "string.upper()": {"body": "string.upper()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5927\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5927\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.upper()"}, "adc.open": {"body": "adc.open(${1:id})", "description": "adc.open(id) - \u6253\u5f00adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90534,\u5e76\u8bfb\u53d6\nif adc.open(4) then\n log.info(\"adc\", adc.read(4)) -- \u8fd4\u56de\u503c\u67092\u4e2a, \u539f\u59cb\u503c\u548c\u8ba1\u7b97\u503c,\u901a\u5e38\u53ea\u9700\u8981\u540e\u8005\n log.info(\"adc\", adc.get(4)) -- \u8fd4\u56de\u503c\u67091\u4e2a, \u4ec5\u8ba1\u7b97\u503c\nend\nadc.close(4) -- \u82e5\u9700\u8981\u6301\u7eed\u8bfb\u53d6, \u5219\u4e0d\u9700\u8981close, \u529f\u8017\u4f1a\u9ad8\u4e00\u70b9.\n", "prefix": "adc.open"}, "adc.setRange": {"body": "adc.setRange(${1:range})", "description": "adc.setRange(range) - \u8bbe\u7f6eADC\u7684\u6d4b\u91cf\u8303\u56f4\uff0c\u6ce8\u610f\u8fd9\u4e2a\u548c\u5177\u4f53\u82af\u7247\u6709\u5173\uff0c\u76ee\u524d\u53ea\u652f\u6301air105/Air780E\u7cfb\u5217\n\u4f20\u5165\u503c\uff1a\nint range\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u6bd4\u5982air105\u586badc.ADC_RANGE_1_8\u548cadc.ADC_RANGE_3_6\nreturn nil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u8981\u5728\u8c03\u7528adc.open\u4e4b\u524d\u5c31\u8c03\u7528, \u4e4b\u540e\u8c03\u7528\u65e0\u6548!!!\n\n-- \u5173\u95edair105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_1_8)\n-- \u6253\u5f00air105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_6)\n\n\n-- EC618\u7cfb\u5217(Air780E\u7b49)/EC718E\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\u652f\u6301\u4ee5\u4e0b2\u79cd\nadc.setRange(adc.ADC_RANGE_1_2) -- \u5173\u95ed\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_8) -- \u542f\u7528\u5206\u538b\n", "prefix": "adc.setRange"}, "adc.read": {"body": "adc.read(${1:id})", "description": "adc.read(id) - \u8bfb\u53d6adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u539f\u59cb\u503c,\u4e00\u822c\u6ca1\u7528,\u53ef\u4ee5\u76f4\u63a5\u629b\u5f03\nint \u4ece\u539f\u59cb\u503c\u6362\u7b97\u5f97\u51fa\u7684\u5b9e\u9645\u503c\uff0c\u901a\u5e38\u5355\u4f4d\u662fmV\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n -- \u8fd9\u91cc\u4f7f\u7528\u7684\u662fadc.read\u4f1a\u8fd4\u56de2\u4e2a\u503c, \u63a8\u8350\u8d70adc.get\u51fd\u6570,\u76f4\u63a5\u53d6\u5b9e\u9645\u503c\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.read"}, "adc.get": {"body": "adc.get(${1:id})", "description": "adc.get(id) - \u83b7\u53d6adc\u8ba1\u7b97\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u5355\u4f4d\u901a\u5e38\u662fmV, \u90e8\u5206\u901a\u9053\u4f1a\u8fd4\u56de\u6e29\u5ea6\u503c,\u5355\u4f4d\u5343\u5206\u4e4b\u4e00\u6444\u6c0f\u5ea6. \u82e5\u8bfb\u53d6\u5931\u8d25,\u4f1a\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\n-- \u672cAPI \u5728 2022.10.01\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.get(2))\nend\nadc.close(2) -- \u6309\u9700\u5173\u95ed\n", "prefix": "adc.get"}, "adc.close": {"body": "adc.close(${1:id})", "description": "adc.close(id) - \u5173\u95edadc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.close"}, "antbot.init": {"body": "antbot.init()", "description": "antbot.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n\u4f8b\u5b50\uff1a\n\n-- \u521d\u59cb\u5316\u8682\u8681\u94fe\u7684\u5e95\u5c42\u9002\u914d\nantbot.init()\n", "prefix": "antbot.init"}, "antbot.app_sta_get": {"body": "antbot.app_sta_get()", "description": "antbot.app_sta_get() - \u83b7\u53d6\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u7801\n", "prefix": "antbot.app_sta_get"}, "antbot.version_get": {"body": "antbot.version_get()", "description": "antbot.version_get() - \u83b7\u53d6SDK\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u7248\u672c\u53f7,\u5982\u679c\u83b7\u53d6\u5931\u8d25\u8fd4\u56denil\n", "prefix": "antbot.version_get"}, "antbot.asset_register": {"body": "antbot.asset_register(${1:asset_id},${2:asset_type},${3:asset_dataver})", "description": "antbot.asset_register(asset_id, asset_type, asset_dataver) - asset\u8d44\u6e90\u6ce8\u518c\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\nstring asset_type \u8d44\u6e90\u7c7b\u578b\nstring asset_dataver \u8d44\u6e90\u6570\u636e\u7248\u672c\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_register"}, "antbot.asset_data_publish": {"body": "antbot.asset_data_publish(${1:data})", "description": "antbot.asset_data_publish(data) - asset\u8d44\u6e90\u53d1\u5e03\n\u4f20\u5165\u503c\uff1a\nstring data \u8d44\u6e90\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_data_publish"}, "antbot.device_status_get": {"body": "antbot.device_status_get()", "description": "antbot.device_status_get() - \u83b7\u53d6\u8bbe\u5907\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u5907\u72b6\u6001\n", "prefix": "antbot.device_status_get"}, "antbot.asset_status_get": {"body": "antbot.asset_status_get(${1:asset_id})", "description": "antbot.asset_status_get(asset_id) - \u83b7\u53d6assset\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\n\u8fd4\u56de\u503c\uff1a\nint \u8d44\u6e90\u72b6\u6001\n", "prefix": "antbot.asset_status_get"}, "antbot.channel_switch": {"body": "antbot.channel_switch(${1:cmd})", "description": "antbot.channel_switch(cmd) - \u5207\u6362channel\n\u4f20\u5165\u503c\uff1a\nint 0 - \u5173\u95ed, 1 - \u5f00\u542f\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.channel_switch"}, "antbot.config_set": {"body": "antbot.config_set(${1:config})", "description": "antbot.config_set(config) - \u914d\u7f6e\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nstring config \u914d\u7f6e\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.config_set"}, "antbot.config_get": {"body": "antbot.config_get()", "description": "antbot.config_get() - \u83b7\u53d6\u8bbe\u5907\u914d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u914d\u7f6e\u5185\u5bb9\n", "prefix": "antbot.config_get"}, "audio.start": {"body": "audio.start(${1:id},${2:audio_format},${3:num_channels},${4:sample_rate},${5:bits_per_sample},${6:is_signed})", "description": "audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed) - \u542f\u52a8\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u51c6\u5907\u64ad\u653e\u97f3\u9891\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\uff0c\u9ed8\u8ba4true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\naudio.start(0, audio.PCM, 1, 16000, 16)\n", "prefix": "audio.start"}, "audio.record": {"body": "audio.record(${1:id},${2:record_type},${3:record_time},${4:amr_quailty},${5:path})", "description": "audio.record(id, record_type, record_time, amr_quailty, path) - \u5f55\u97f3\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint record_type \u5f55\u97f3\u97f3\u9891\u683c\u5f0f,\u652f\u6301 audio.AMR audio.PCM (\u90e8\u5206\u5e73\u53f0\u652f\u6301audio.AMR_WB)\nint record_time \u5f55\u5236\u65f6\u957f \u5355\u4f4d\u79d2,\u53ef\u9009\uff0c\u9ed8\u8ba40\u5373\u8868\u793a\u4e00\u76f4\u5f55\u5236\nint amr_quailty \u8d28\u91cf,audio.AMR\u4e0b\u6709\u6548\nstring path \u5f55\u97f3\u6587\u4ef6\u8def\u5f84,\u53ef\u9009,\u4e0d\u6307\u5b9a\u5219\u4e0d\u4fdd\u5b58,\u53ef\u5728audio.on\u56de\u8c03\u51fd\u6570\u4e2d\u5904\u7406\u539f\u59cbPCM\u6570\u636e\nint record_callback_time \u4e0d\u6307\u5b9a\u5f55\u97f3\u6587\u4ef6\u8def\u5f84\u65f6\uff0c\u5355\u6b21\u5f55\u97f3\u56de\u8c03\u65f6\u957f\uff0c\u5355\u4f4d\u662f100ms\u3002\u9ed8\u8ba41\uff0c\u65e2100ms\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nerr,info = audio.record(id, type, record_time, quailty, path)\n", "prefix": "audio.record"}, "audio.recordStop": {"body": "audio.recordStop(${1:id})", "description": "audio.recordStop(id) - \u5f55\u97f3\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.recordStop(0)\n", "prefix": "audio.recordStop"}, "audio.write": {"body": "audio.write(${1:id},${2:data})", "description": "audio.write(id, data) - \u5f80\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u5199\u5165\u97f3\u9891\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u97f3\u9891\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.write(0, \"xxxxxx\")\n", "prefix": "audio.write"}, "audio.stop": {"body": "audio.stop(${1:id})", "description": "audio.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.stop(0)\n", "prefix": "audio.stop"}, "audio.pause": {"body": "audio.pause(${1:id},${2:pause})", "description": "audio.pause(id, pause) - \u6682\u505c/\u6062\u590d\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\nboolean onoff true \u6682\u505c\uff0cfalse \u6062\u590d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.pause(0, true) --\u6682\u505c\u901a\u90530\naudio.pause(0, false) --\u6062\u590d\u901a\u90530\n", "prefix": "audio.pause"}, "audio.on": {"body": "audio.on(${1:audio_id},${2:func})", "description": "audio.on(audio_id, func) - \u6ce8\u518caudio\u64ad\u653e\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint audio id, audio 0\u51990, audio 1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\uff0c\u56de\u8c03\u65f6\u4f20\u5165\u53c2\u6570\u4e3a1\u3001int \u901a\u9053ID 2\u3001int \u6d88\u606f\u503c\uff0c\u53ea\u6709audio.MORE_DATA\u548caudio.DONE\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.on(0, function(audio_id, msg)\n log.info(\"msg\", audio_id, msg)\nend)\n", "prefix": "audio.on"}, "audio.play": {"body": "audio.play(${1:id},${2:path},${3:errStop})", "description": "audio.play(id, path, errStop) - \u64ad\u653e\u6216\u8005\u505c\u6b62\u64ad\u653e\u4e00\u4e2a\u6587\u4ef6\uff0c\u64ad\u653e\u5b8c\u6210\u540e\uff0c\u4f1a\u56de\u8c03\u4e00\u4e2aaudio.DONE\u6d88\u606f\uff0c\u53ef\u4ee5\u7528pause\u6765\u6682\u505c\u6216\u8005\u6062\u590d\uff0c\u5176\u4ed6API\u4e0d\u53ef\u7528\u3002\u8003\u8651\u5230\u8bfbSD\u5361\u901f\u5ea6\u6bd4\u8f83\u6162\u800c\u62d6\u7d2fluavm\u8fdb\u7a0b\u7684\u901f\u5ea6\uff0c\u6240\u4ee5\u5c3d\u91cf\u4f7f\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/table \u6587\u4ef6\u540d\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u8868\u793a\u505c\u6b62\u64ad\u653e\uff0c\u5982\u679c\u662ftable\uff0c\u5219\u8868\u793a\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\uff0c\u4e3b\u8981\u5e94\u7528\u4e8e\u4e91\u5587\u53ed\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\uff0c\u5e76\u4e14\u4f1a\u7528\u5230errStop\u53c2\u6570\nboolean \u662f\u5426\u5728\u6587\u4ef6\u89e3\u7801\u5931\u8d25\u540e\u505c\u6b62\u89e3\u7801\uff0c\u53ea\u6709\u5728\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\u65f6\u624d\u6709\u7528\uff0c\u9ed8\u8ba4true\uff0c\u9047\u5230\u89e3\u7801\u9519\u8bef\u81ea\u52a8\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.play(0, \"xxxxxx\") --\u5f00\u59cb\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\naudio.play(0) --\u505c\u6b62\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\n", "prefix": "audio.play"}, "audio.tts": {"body": "audio.tts(${1:id},${2:data})", "description": "audio.tts(id, data) - TTS\u64ad\u653e\u6216\u8005\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/zbuff \u9700\u8981\u64ad\u653e\u7684\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "audio.tts"}, "audio.playStop": {"body": "audio.playStop(${1:id})", "description": "audio.playStop(id) - \u505c\u6b62\u64ad\u653e\u6587\u4ef6\uff0c\u548caudio.play(id)\u662f\u4e00\u6837\u7684\u4f5c\u7528\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.playStop(0)\n", "prefix": "audio.playStop"}, "audio.isEnd": {"body": "audio.isEnd(${1:id})", "description": "audio.isEnd(id) - \u68c0\u67e5\u5f53\u524d\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u64ad\u653e\u7ed3\u675f\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.isEnd(0)\n\n", "prefix": "audio.isEnd"}, "audio.getError": {"body": "audio.getError(${1:id})", "description": "audio.getError(id) - \u83b7\u53d6\u6700\u8fd1\u4e00\u6b21\u64ad\u653e\u7ed3\u679c\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\u7684\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5168\u90e8\u64ad\u653e\u6210\u529f\uff0ctrue\u6210\u529f\uff0cfalse\u6709\u6587\u4ef6\u64ad\u653e\u5931\u8d25\nboolean \u5982\u679c\u64ad\u653e\u5931\u8d25\uff0c\u662f\u5426\u662f\u7528\u6237\u505c\u6b62\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\nint \u7b2c\u51e0\u4e2a\u6587\u4ef6\u5931\u8d25\u4e86\uff0c\u4ece1\u5f00\u59cb\n\u4f8b\u5b50\uff1a\nlocal result, user_stop, file_no = audio.getError(0)\n", "prefix": "audio.getError"}, "audio.config": {"body": "audio.config(${1:id},${2:paPin},${3:onLevel},${4:dacDelay},${5:paDelay},${6:dacPin},${7:dacLevel},${8:dacTimeDelay})", "description": "audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u7279\u6027\uff0c\u6bd4\u5982\u5b9e\u73b0\u81ea\u52a8\u63a7\u5236PA\u5f00\u5173\u3002\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u662f\u5fc5\u987b\u7684\uff0c\u4e00\u822c\u5728\u8c03\u7528play\u7684\u65f6\u5019\u624d\u9700\u8981\u81ea\u52a8\u63a7\u5236\uff0c\u5176\u4ed6\u60c5\u51b5\u6bd4\u5982\u4f60\u624b\u52a8\u63a7\u5236\u64ad\u653e\u65f6\uff0c\u5c31\u53ef\u4ee5\u81ea\u5df1\u63a7\u5236PA\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint PA\u63a7\u5236IO\nint PA\u6253\u5f00\u65f6\u7684\u7535\u5e73\nint \u5728DAC\u542f\u52a8\u524d\u63d2\u5165\u7684\u5197\u4f59\u65f6\u95f4\uff0c\u5355\u4f4d100ms\uff0c\u4e00\u822c\u7528\u4e8e\u5916\u90e8DAC\nint \u5728DAC\u542f\u52a8\u540e\uff0c\u5ef6\u8fdf\u591a\u957f\u65f6\u95f4\u6253\u5f00PA\uff0c\u5355\u4f4d1ms\nint \u5916\u90e8dac\u7535\u6e90\u63a7\u5236IO\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u5219\u8868\u793a\u4f7f\u7528\u5e73\u53f0\u9ed8\u8ba4IO\uff0c\u6bd4\u5982Air780E\u4f7f\u7528DACEN\u811a\uff0cair105\u5219\u4e0d\u542f\u7528\nint \u5916\u90e8dac\u6253\u5f00\u65f6\uff0c\u7535\u6e90\u63a7\u5236IO\u7684\u7535\u5e73\uff0c\u9ed8\u8ba4\u62c9\u9ad8\nint \u97f3\u9891\u64ad\u653e\u5b8c\u6bd5\u65f6\uff0cPA\u4e0eDAC\u5173\u95ed\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d1ms\uff0c\u9ed8\u8ba40ms\n\u4f8b\u5b50\uff1a\naudio.config(0, pin.PC0, 1) --PA\u63a7\u5236\u811a\u662fPC0\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cair105\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\naudio.config(0, 25, 1, 6, 200) --PA\u63a7\u5236\u811a\u662fGPIO25\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cAir780E\u4e91\u5587\u53ed\u677f\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\n", "prefix": "audio.config"}, "audio.vol": {"body": "audio.vol(${1:id},${2:value})", "description": "audio.vol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u97f3\u91cf\u8c03\u8282\uff0c\u76f4\u63a5\u5c06\u539f\u59cb\u6570\u636e\u653e\u5927\u6216\u8005\u7f29\u5c0f\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u5efa\u8bae\u5c3d\u91cf\u7528\u786c\u4ef6\u65b9\u6cd5\u53bb\u7f29\u653e\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~1000%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.vol"}, "audio.micVol": {"body": "audio.micVol(${1:id},${2:value})", "description": "audio.micVol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684mic\u97f3\u91cf\u8c03\u8282\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint mic\u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~100%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dmic\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.micVol"}, "audio.setBus": {"body": "audio.setBus(${1:id},${2:bus_type})", "description": "audio.setBus(id, bus_type) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u786c\u4ef6\u8f93\u51fa\u603b\u7ebf\uff0c\u53ea\u6709\u5bf9\u5e94soc\u8f6f\u786c\u4ef6\u5e73\u53f0\u652f\u6301\u624d\u8bbe\u7f6e\u5bf9\u5e94\u7c7b\u578b\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053,\u4f8b\u59820\nint \u603b\u7ebf\u7c7b\u578b, \u4f8b\u5982 audio.BUS_SOFT_DAC\nint \u786c\u4ef6id, \u4f8b\u5982 \u603b\u7ebf\u7c7b\u578b\u4e3aaudio.BUS_I2S\u65f6,\u786c\u4ef6id\u5373\u4e3ai2s codec\u7684i2c id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.setBus(0, audio.BUS_SOFT_DAC) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3a\u8f6f\u4ef6DAC\naudio.setBus(0, audio.BUS_I2S) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3aI2S\n", "prefix": "audio.setBus"}, "audio.debug": {"body": "audio.debug(${1:on_off})", "description": "audio.debug(on_off) - \u914d\u7f6e\u8c03\u8bd5\u4fe1\u606f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00 false\u5173\n", "prefix": "audio.debug"}, "audio.pm": {"body": "audio.pm(${1:id},${2:pm_mode})", "description": "audio.pm(id,pm_mode) - audio \u4f11\u7720\u63a7\u5236(\u4e00\u822c\u4f1a\u81ea\u52a8\u8c03\u7528\u4e0d\u9700\u8981\u624b\u52a8\u6267\u884c)\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u4f11\u7720\u6a21\u5f0f \n\u8fd4\u56de\u503c\uff1a\nboolean true\u6210\u529f\n\u4f8b\u5b50\uff1a\naudio.pm(multimedia_id,audio.RESUME)\n", "prefix": "audio.pm"}, "bit64.to32": {"body": "bit64.to32(${1:data64bit})", "description": "bit64.to32(data64bit) - 64bit\u6570\u636e\u8f6c\u621032bit\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nany \u6839\u636e64bit\u6570\u636e\u8f93\u51faint\u6216\u8005number\n", "prefix": "bit64.to32"}, "bit64.to64": {"body": "bit64.to64(${1:data32bit})", "description": "bit64.to64(data32bit) - 32bit\u6570\u636e\u8f6c\u621064bit\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint/number 32bit\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.to64"}, "bit64.show": {"body": "bit64.show(${1:a},${2:type},${3:flag})", "description": "bit64.show(a,type,flag) - 64bit\u6570\u636e\u683c\u5f0f\u5316\u6253\u5370\u6210\u5b57\u7b26\u4e32\uff0c\u7528\u4e8e\u663e\u793a\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u6253\u5370\u768464bit\u6570\u636e\nint \u8fdb\u5236\uff0c10=10\u8fdb\u5236\uff0c16=16\u8fdb\u5236\uff0c\u9ed8\u8ba410\uff0c\u53ea\u652f\u630110\u6216\u800516\nboolean \u6574\u5f62\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\u6253\u5370\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring \u53ef\u4ee5\u6253\u5370\u7684\u503c\n", "prefix": "bit64.show"}, "bit64.plus": {"body": "bit64.plus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.plus(a,b,flag1,flag2) - 64bit\u6570\u636e\u52a0,a+b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.plus"}, "bit64.minus": {"body": "bit64.minus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.minus(a,b,flag1,flag2) - 64bit\u6570\u636e\u51cf,a-b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.minus"}, "bit64.multi": {"body": "bit64.multi(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.multi(a,b,flag1,flag2) - 64bit\u6570\u636e\u4e58,a*b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.multi"}, "bit64.pide": {"body": "bit64.pide(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.pide(a,b,flag1,flag2) - 64bit\u6570\u636e\u9664,a/b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.pide"}, "bit64.shift": {"body": "bit64.shift(${1:a},${2:b},${3:flag})", "description": "bit64.shift(a,b,flag) - 64bit\u6570\u636e\u4f4d\u79fb a>>b \u6216\u8005 a<>\uff0c\u9ed8\u8ba4false\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.shift"}, "bit64.strtoll": {"body": "bit64.strtoll(${1:data},${2:base})", "description": "bit64.strtoll(data, base) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u4e3aLongLong\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8f6c\u6362\u7684\u6570\u636e,\u5fc5\u987b\u5b58\u5728\nint \u8f6c\u6362\u8fdb\u5236, \u9ed8\u8ba410, \u53ef\u900916\u62168\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.27 \u6dfb\u52a0\n-- \u63d0\u9192, \u5982\u679c\u8f6c\u6362\u5931\u8d25, \u662f\u8fd4\u56de9\u4e2a\u5b57\u8282\u76840x00\nlocal data = bit64.strtoll(\"864040064024194\", 10)\nlog.info(\"data\", data:toHex())\nlog.info(\"data\", bit64.show(data))\n", "prefix": "bit64.strtoll"}, "camera.init": {"body": "camera.init(${1:InitReg_or_cspi_id},${2:cspi_speed},${3:mode},${4:is_msb},${5:rx_bit},${6:seq_type},${7:is_ddr},${8:only_y},${9:scan_mode},${10:w},${11:h})", "description": "camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h) - \u521d\u59cb\u5316\u6444\u50cf\u5934\n\u4f20\u5165\u503c\uff1a\ntable/integer \u5982\u679c\u662ftable,\u5219\u662fDVP\u6444\u50cf\u5934\u7684\u914d\u7f6e\u89c1demo/camera/AIR105,\u540c\u65f6\u5ffd\u7565\u540e\u7eed\u53c2\u6570;\u5982\u679c\u662f\u6570\u5b57,\u5219\u662fcamera spi\u603b\u7ebf\u5e8f\u53f7\nint camera spi\u603b\u7ebf\u901f\u5ea6\nint camera spi\u6a21\u5f0f,0~3\nint \u5b57\u8282\u7684bit\u987a\u5e8f\u662f\u5426\u662fmsb,0\u54261\u662f\nint \u540c\u65f6\u63a5\u6536bit\u6570,1,2,4\nint byte\u5e8f\u5217,0~1\nint \u53cc\u8fb9\u6cbf\u91c7\u6837\u914d\u7f6e,0\u4e0d\u542f\u7528,\u5176\u4ed6\u503c\u6839\u636e\u5b9e\u9645SOC\u51b3\u5b9a\nint \u53ea\u63a5\u6536Y\u5206\u91cf\uff0c0\u4e0d\u542f\u7528\uff0c1\u542f\u7528\uff0c\u626b\u7801\u5fc5\u987b\u542f\u7528\uff0c\u5426\u5219\u4f1a\u5931\u8d25\nint \u5de5\u4f5c\u6a21\u5f0f\uff0ccamera.AUTO\u81ea\u52a8,camera.SCAN\u626b\u7801\nint \u6444\u50cf\u5934\u5bbd\u5ea6\nint \u6444\u50cf\u5934\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint/false \u6210\u529f\u8fd4\u56decamera_id\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera_id = camera.init(GC032A_InitReg)--\u5c4f\u5e55\u8f93\u51fargb\u56fe\u50cf\n--\u521d\u59cb\u5316\u540e\u9700\u8981start\u624d\u5f00\u59cb\u8f93\u51fa/\u626b\u7801\ncamera.start(camera_id)--\u5f00\u59cb\u6307\u5b9a\u7684camera\n", "prefix": "camera.init"}, "camera.on": {"body": "camera.on(${1:id},${2:event},${3:func})", "description": "camera.on(id, event, func) - \u6ce8\u518c\u6444\u50cf\u5934\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint camera id, camera 0\u51990, camera 1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncamera.on(0, \"scanned\", function(id, str)\n--id int camera id\n--str \u591a\u79cd\u7c7b\u578b false \u6444\u50cf\u5934\u6ca1\u6709\u6b63\u5e38\u5de5\u4f5c\uff0ctrue \u62cd\u7167\u6a21\u5f0f\u4e0b\u62cd\u7167\u6210\u529f\u5e76\u4fdd\u5b58\u5b8c\u6210\uff0c int \u539f\u59cb\u6570\u636e\u6a21\u5f0f\u4e0b\u672c\u6b21\u8fd4\u56de\u7684\u6570\u636e\u5927\u5c0f\uff0c string \u626b\u7801\u6a21\u5f0f\u4e0b\u626b\u7801\u6210\u529f\u540e\u7684\u89e3\u7801\u503c\n print(id, str)\nend)\n", "prefix": "camera.on"}, "camera.start": {"body": "camera.start(${1:id})", "description": "camera.start(id) - \u5f00\u59cb\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.start(0)\n", "prefix": "camera.start"}, "camera.stop": {"body": "camera.stop(${1:id})", "description": "camera.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.stop(0)\n", "prefix": "camera.stop"}, "camera.close": {"body": "camera.close(${1:id})", "description": "camera.close(id) - \u5173\u95ed\u6307\u5b9a\u7684camera\uff0c\u91ca\u653e\u76f8\u5e94\u7684IO\u8d44\u6e90\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.close(0)\n", "prefix": "camera.close"}, "camera.capture": {"body": "camera.capture(${1:id},${2:save_path},${3:quality})", "description": "camera.capture(id, save_path, quality) - camera\u62cd\u7167\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nstring/zbuff/nil save_path,\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\uff0c\u7a7a\u5219\u5199\u5728\u4e0a\u6b21\u8def\u5f84\u91cc\uff0c\u9ed8\u8ba4\u662f/capture.jpg\uff0c\u5982\u679c\u662fzbuff\uff0c\u5219\u5c06\u56fe\u7247\u4fdd\u5b58\u5728buff\u5185\u4e0d\u5199\u5165\u6587\u4ef6\u7cfb\u7edf\nint quality, jpeg\u538b\u7f29\u8d28\u91cf\uff0c1\u6700\u5dee\uff0c\u5360\u7528\u7a7a\u95f4\u5c0f\uff0c3\u6700\u9ad8\uff0c\u5360\u7528\u7a7a\u95f4\u6700\u5927\u800c\u4e14\u8d39\u65f6\u95f4\uff0c\u9ed8\u8ba41\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse,\u771f\u6b63\u5b8c\u6210\u540e\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\ncamera.capture(0)\n", "prefix": "camera.capture"}, "camera.video": {"body": "camera.video(${1:id},${2:w},${3:h},${4:out_path})", "description": "camera.video(id, w, h, out_path) - camera\u8f93\u51fa\u89c6\u9891\u6d41\u5230USB\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nint \u8f93\u51fa\u8def\u5f84\uff0c\u76ee\u524d\u53ea\u80fd\u7528\u865a\u62df\u4e32\u53e30\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.video(0, 320, 240, uart.VUART_0)\n", "prefix": "camera.video"}, "camera.startRaw": {"body": "camera.startRaw(${1:id},${2:w},${3:h},${4:buff})", "description": "camera.startRaw(id, w, h, buff) - \u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u8c03\u7528camera.getRaw\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nzbuff \u7528\u4e8e\u5b58\u653e\u6570\u636e\u7684\u7f13\u5b58\u533a\uff0c\u5927\u5c0f\u5fc5\u987b\u4e0d\u5c0f\u4e8ew X h X 2 byte\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.startRaw(0, 320, 240, buff)\n", "prefix": "camera.startRaw"}, "camera.getRaw": {"body": "camera.getRaw(${1:id})", "description": "camera.getRaw(id) - \u518d\u6b21\u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u7ee7\u7eed\u8c03\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.getRaw(0)\n", "prefix": "camera.getRaw"}, "camera.preview": {"body": "camera.preview(${1:id},${2:onoff})", "description": "camera.preview(id, onoff) - \u542f\u505ccamera\u9884\u89c8\u529f\u80fd\uff0c\u76f4\u63a5\u8f93\u51fa\u5230LCD\u4e0a\uff0c\u53ea\u6709\u786c\u4ef6\u652f\u6301\u7684SOC\u53ef\u4ee5\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nboolean true\u5f00\u542f\uff0cfalse\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.preview(1, true)\n", "prefix": "camera.preview"}, "cc.lastNum": {"body": "cc.lastNum()", "description": "cc.lastNum() - \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n", "prefix": "cc.lastNum"}, "cc.dial": {"body": "cc.dial(${1:sim_id},${2:number})", "description": "cc.dial(sim_id, number) - \u62e8\u6253\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\nstring \u7535\u8bdd\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nbool \u62e8\u6253\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.dial"}, "cc.hangUp": {"body": "cc.hangUp(${1:sim_id})", "description": "cc.hangUp(sim_id) - \u6302\u65ad\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n", "prefix": "cc.hangUp"}, "cc.accept": {"body": "cc.accept(${1:sim_id})", "description": "cc.accept(sim_id) - \u63a5\u542c\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n\u8fd4\u56de\u503c\uff1a\nbool \u63a5\u542c\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.accept"}, "cc.init": {"body": "cc.init(${1:multimedia_id})", "description": "cc.init(multimedia_id) - \u521d\u59cb\u5316\u7535\u8bdd\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nnumber multimedia_id \u591a\u5a92\u4f53id\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "cc.init"}, "cc.record": {"body": "cc.record(${1:on_off},${2:upload_zbuff1},${3:upload_zbuff2},${4:download_zbuff1},${5:download_zbuff2})", "description": "cc.record(on_off,upload_zbuff1, upload_zbuff2, download_zbuff1, download_zbuff2) - \u5f55\u97f3\u901a\u8bdd\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u542f\u5173\u95ed\u901a\u8bdd\u5f55\u97f3\u529f\u80fd\uff0cfalse\u6216\u8005nil\u5173\u95ed\uff0c\u5176\u4ed6\u5f00\u542f\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1,zbuff\u521b\u5efa\u65f6\u7684\u7a7a\u95f4\u5bb9\u91cf\u5fc5\u987b\u662f640\u7684\u500d\u6570,\u4e0b\u540c\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\uff0c\u5982\u679c\u5904\u4e8e\u901a\u8bdd\u72b6\u6001\uff0c\u4f1a\u5931\u8d25\n\u4f8b\u5b50\uff1a\nbuff1 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff2 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff3 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff4 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\ncc.record(true, buff1, buff2, buff3, buff4)\n", "prefix": "cc.record"}, "cc.quality": {"body": "cc.quality()", "description": "cc.quality() - \u83b7\u53d6\u5f53\u524d\u901a\u8bdd\u8d28\u91cf\n\u8fd4\u56de\u503c\uff1a\nint 1\u4e3a\u4f4e\u97f3\u8d28(8K)\uff0c2\u4e3a\u9ad8\u97f3\u8d28(16k)\uff0c0\u6ca1\u6709\u5728\u901a\u8bdd\n", "prefix": "cc.quality"}, "cc.on": {"body": "cc.on(${1:event},${2:func})", "description": "cc.on(event, func) - \u6ce8\u518c\u901a\u8bdd\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u540d\u79f0 \u97f3\u9891\u5f55\u97f3\u6570\u636e\u4e3a\"record\"\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\n", "prefix": "cc.on"}, "codec.create": {"body": "codec.create(${1:type},${2:isDecoder},${3:quality})", "description": "codec.create(type, isDecoder, quality) - \u521b\u5efa\u7f16\u89e3\u7801\u7528\u7684codec\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u7c7b\u578b\uff0c\u76ee\u524d\u652f\u6301codec.MP3 codec.AMR\nboolean \u662f\u5426\u662f\u89e3\u7801\u5668\uff0ctrue\u89e3\u7801\u5668\uff0cfalse\u7f16\u7801\u5668\uff0c\u9ed8\u8ba4true\uff0c\u662f\u89e3\u7801\u5668\nint \u7f16\u7801\u7b49\u7ea7\uff0c\u90e8\u5206bsp\u6709\u5185\u90e8\u7f16\u7801\u5668\uff0c\u53ef\u80fd\u9700\u8981\u63d0\u524d\u8f93\u5165\u7f16\u7801\u7b49\u7ea7\uff0c\u6bd4\u5982air780ep\u7684\u5185\u90e8amr\u7f16\u7801\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u89e3\u7801\u5668\nlocal decoder = codec.create(codec.MP3)--\u521b\u5efa\u4e00\u4e2amp3\u7684decoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR, false)--\u521b\u5efa\u4e00\u4e2aamr\u7684encoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR_WB, false, 8)--\u521b\u5efa\u4e00\u4e2aamr-wb\u7684encoder\uff0c\u7f16\u7801\u7b49\u7ea7\u9ed8\u8ba48\n", "prefix": "codec.create"}, "codec.info": {"body": "codec.info(${1:decoder},${2:file_path})", "description": "codec.info(decoder, file_path) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u97f3\u9891\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, audio_format, num_channels, sample_rate, bits_per_sample, is_signed= codec.info(coder, \"xxx\")\n", "prefix": "codec.info"}, "codec.data": {"body": "codec.data(${1:decoder},${2:out_buff})", "description": "codec.data(decoder, out_buff) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u539f\u59cb\u97f3\u9891\u6570\u636e\uff0c\u6bd4\u5982\u4eceMP3\u6587\u4ef6\u91cc\u89e3\u6790\u51faPCM\u6570\u636e\uff0c\u8fd9\u91cc\u7684\u6587\u4ef6\u8def\u5f84\u5df2\u7ecf\u5728codec.info\u4f20\u5165\uff0c\u4e0d\u9700\u8981\u518d\u6b21\u4f20\u5165\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nzbuff \u5b58\u653e\u8f93\u51fa\u6570\u636e\u7684zbuff\uff0c\u7a7a\u95f4\u5fc5\u987b\u4e0d\u5c11\u4e8e16KB\nint \u6700\u5c11\u89e3\u7801\u51fa\u591a\u5c11\u5b57\u8282\u7684\u97f3\u9891\u6570\u636e,\u9ed8\u8ba416384\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\n\u4f8b\u5b50\uff1a\n-- \u5927\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(16*1024)\nlocal result = codec.data(coder, buff)\n-- \u5c0f\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(8*1024)\nlocal result = codec.data(coder, buff, 4096)\n", "prefix": "codec.data"}, "codec.encode": {"body": "codec.encode(${1:coder},${2:in_buffer},${3:out_buffer},${4:mode})", "description": "codec.encode(coder, in_buffer, out_buffer, mode) - \u7f16\u7801\u97f3\u9891\u6570\u636e\uff0c\u7531\u4e8eflash\u548cram\u7a7a\u95f4\u4e00\u822c\u6bd4\u8f83\u6709\u9650\uff0c\u9664\u4e86\u90e8\u5206bsp\u6709\u5185\u90e8amr\u7f16\u7801\u529f\u80fd\uff0c\u76ee\u524d\u53ea\u652f\u6301amr-nb\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nuserdata codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\nzbuff \u8f93\u5165\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u4ece0\u5230used\nzbuff \u8f93\u51fa\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u81ea\u52a8\u6dfb\u52a0\u5230buff\u7684\u5c3e\u90e8,\u5982\u679c\u7a7a\u95f4\u5927\u5c0f\u4e0d\u8db3,\u4f1a\u81ea\u52a8\u6269\u5c55,\u4f46\u662f\u4f1a\u989d\u5916\u6d88\u8017\u65f6\u95f4,\u751a\u81f3\u4f1a\u5931\u8d25,\u6240\u4ee5\u5c3d\u91cf\u4e00\u5f00\u59cb\u5c31\u7ed9\u8db3\u7a7a\u95f4\nint amr_nb\u7684\u7f16\u7801\u7b49\u7ea7 0~7(\u5373 MR475~MR122)\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40 amr_wb\u7684\u7f16\u7801\u7b49\u7ea7 0~8,\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncodec.encode(amr_coder, inbuf, outbuf, codec.AMR_)\n", "prefix": "codec.encode"}, "codec.release": {"body": "codec.release(${1:coder})", "description": "codec.release(coder) - \u91ca\u653e\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f20\u5165\u503c\uff1a\ncoder codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f8b\u5b50\uff1a\ncodec.release(coder)\n", "prefix": "codec.release"}, "coremark.run": {"body": "coremark.run()", "description": "coremark.run() - \u5f00\u59cb\u8dd1\u5206\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u7ed3\u679c\u76f4\u63a5\u6253\u5370\u5728\u65e5\u5fd7\u4e2d\n\u4f8b\u5b50\uff1a\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b, \u8fd9\u4e2a\u5e93\u90fd\u4e0d\u4f1a\u5305\u542b\u5728\u6b63\u5f0f\u7248\u56fa\u4ef6\u91cc\n-- \u82e5\u9700\u4f7f\u7528,\u53ef\u4ee5\u53c2\u8003wiki\u6587\u6863\u81ea\u884c\u7f16\u8bd1\u6216\u4f7f\u7528\u4e91\u7f16\u8bd1\n-- https://wiki.luatos.com/develop/compile.html\n\n-- \u8dd1\u5206\u7684main.lua \u5e94\u79fb\u9664\u786c\u72d7\u4ee3\u7801, \u9632\u6b62\u91cd\u542f\n-- \u82e5\u8bbe\u5907\u652f\u6301\u81ea\u52a8\u4f11\u7720, \u5e94\u5173\u95ed\u4f11\u7720\u529f\u80fd\n-- \u82e5\u8bbe\u5907\u652f\u6301\u66f4\u591a\u7684\u9891\u7387\u8fd0\u884c, \u5efa\u8bae\u8bbe\u7f6e\u5230\u6700\u9ad8\u9891\u7387\n-- \u4f7f\u7528 -O3 \u6bd4 -O2 -Os \u7684\u5206\u6570\u66f4\u9ad8, \u901a\u5e38\u60c5\u51b5\u4e0b\n\n-- \u4f1a\u4e00\u76f4\u72ec\u5360\u7ebf\u7a0b\u5230\u6267\u884c\u5b8c\u6bd5, \u7136\u540e\u5728\u63a7\u5236\u53f0\u8f93\u51fa\u7ed3\u679c\ncoremark.run()\n\n-- \u8dd1\u5206\u56fe\u4e00\u4e50^_^\n\n", "prefix": "coremark.run"}, "crypto.md5": {"body": "crypto.md5(${1:str})", "description": "crypto.md5(str) - \u8ba1\u7b97md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684md5\nlog.info(\"md5\", crypto.md5(\"abc\"))\n", "prefix": "crypto.md5"}, "crypto.hmac_md5": {"body": "crypto.hmac_md5(${1:str},${2:key})", "description": "crypto.hmac_md5(str, key) - \u8ba1\u7b97hmac_md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_md5\nlog.info(\"hmac_md5\", crypto.hmac_md5(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_md5"}, "crypto.sha1": {"body": "crypto.sha1(${1:str})", "description": "crypto.sha1(str) - \u8ba1\u7b97sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha1\nlog.info(\"sha1\", crypto.sha1(\"abc\"))\n", "prefix": "crypto.sha1"}, "crypto.hmac_sha1": {"body": "crypto.hmac_sha1(${1:str},${2:key})", "description": "crypto.hmac_sha1(str, key) - \u8ba1\u7b97hmac_sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha1\nlog.info(\"hmac_sha1\", crypto.hmac_sha1(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha1"}, "crypto.sha256": {"body": "crypto.sha256(${1:str})", "description": "crypto.sha256(str) - \u8ba1\u7b97sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha256\nlog.info(\"sha256\", crypto.sha256(\"abc\"))\n", "prefix": "crypto.sha256"}, "crypto.hmac_sha256": {"body": "crypto.hmac_sha256(${1:str},${2:key})", "description": "crypto.hmac_sha256(str, key) - \u8ba1\u7b97hmac_sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha256\nlog.info(\"hmac_sha256\", crypto.hmac_sha256(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha256"}, "crypto.sha512": {"body": "crypto.sha512(${1:str})", "description": "crypto.sha512(str) - \u8ba1\u7b97sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha512\nlog.info(\"sha512\", crypto.sha512(\"abc\"))\n", "prefix": "crypto.sha512"}, "crypto.hmac_sha512": {"body": "crypto.hmac_sha512(${1:str},${2:key})", "description": "crypto.hmac_sha512(str, key) - \u8ba1\u7b97hmac_sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha512\nlog.info(\"hmac_sha512\", crypto.hmac_sha512(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha512"}, "crypto.cipher_encrypt": {"body": "crypto.cipher_encrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_encrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97AES\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_encrypt(\"AES-128-CBC\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\", \"1234567890666666\")\n", "prefix": "crypto.cipher_encrypt"}, "crypto.cipher_decrypt": {"body": "crypto.cipher_decrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_decrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u89e3\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u7528AES\u52a0\u5bc6,\u7136\u540e\u7528AES\u89e3\u5bc6\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_decrypt(\"AES-128-ECB\", \"PKCS7\", data, \"1234567890123456\")\n-- data\u7684hex\u4e3a 757CCD0CDC5C90EADBEEECF638DD0000\n-- data2\u7684\u503c\u4e3a 1234567890123456\n", "prefix": "crypto.cipher_decrypt"}, "crypto.crc16": {"body": "crypto.crc16(${1:method},${2:data},${3:poly},${4:initial},${5:finally},${6:inReversemoutReverse})", "description": "crypto.crc16(method, data, poly, initial, finally, inReversem outReverse) - \u8ba1\u7b97CRC16\n\u4f20\u5165\u503c\uff1a\nstring CRC16\u6a21\u5f0f\uff08\"IBM\",\"MAXIM\",\"USB\",\"MODBUS\",\"CCITT\",\"CCITT-FALSE\",\"X25\",\"XMODEM\",\"DNP\",\"USER-DEFINED\"\uff09\nstring \u5b57\u7b26\u4e32\nint poly\u503c\nint initial\u503c\nint finally\u503c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16\nlocal crc = crypto.crc16(\"\")\n", "prefix": "crypto.crc16"}, "crypto.crc16_modbus": {"body": "crypto.crc16_modbus(${1:data},${2:start})", "description": "crypto.crc16_modbus(data, start) - \u76f4\u63a5\u8ba1\u7b97modbus\u7684crc16\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint \u521d\u59cb\u5316\u503c,\u9ed8\u8ba40xFFFF\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16 modbus\nlocal crc = crypto.crc16_modbus(data)\n-- 2023.11.06 \u65b0\u589e\u521d\u59cb\u503c\u8bbe\u7f6e\ncrc = crypto.crc16_modbus(data, 0xFFFF)\n", "prefix": "crypto.crc16_modbus"}, "crypto.crc32": {"body": "crypto.crc32(${1:data})", "description": "crypto.crc32(data) - \u8ba1\u7b97crc32\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC32\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC32\nlocal crc = crypto.crc32(data)\n", "prefix": "crypto.crc32"}, "crypto.crc8": {"body": "crypto.crc8(${1:data},${2:poly},${3:start},${4:revert})", "description": "crypto.crc8(data, poly, start, revert) - \u8ba1\u7b97crc8\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5c06\u5ffd\u7565\u9664\u4e86\u6570\u636e\u5916\u6240\u6709\u53c2\u6570\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40\nboolean \u662f\u5426\u9700\u8981\u9006\u5e8f\u5904\u7406\uff0c\u9ed8\u8ba4\u5426\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC8\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC8\nlocal crc = crypto.crc8(data)\nlocal crc = crypto.crc8(data, 0x31, 0xff, false)\n", "prefix": "crypto.crc8"}, "crypto.crc7": {"body": "crypto.crc7(${1:data},${2:poly},${3:start})", "description": "crypto.crc7(data, poly, start) - \u8ba1\u7b97crc7\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40xE5\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40x00\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC7\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC7, \u672cAPI\u4e8e2023.10.07\u65b0\u589e\nlocal crc = crypto.crc7(data)\nlocal crc = crypto.crc7(data, 0x31, 0xff)\n", "prefix": "crypto.crc7"}, "crypto.trng": {"body": "crypto.trng(${1:len})", "description": "crypto.trng(len) - \u751f\u6210\u771f\u968f\u673a\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6307\u5b9a\u968f\u673a\u6570\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u751f\u621032\u4f4d\u968f\u673a\u6570ir\nlocal r = crypto.trng(4)\nlocal _, ir = pack.unpack(r, \"I\")\n", "prefix": "crypto.trng"}, "crypto.totp": {"body": "crypto.totp(${1:secret},${2:time})", "description": "crypto.totp(secret,time) - \u8ba1\u7b97TOTP\u52a8\u6001\u5bc6\u7801\u7684\u7ed3\u679c\n\u4f20\u5165\u503c\uff1a\nstring \u7f51\u7ad9\u63d0\u4f9b\u7684\u5bc6\u94a5\uff08\u5c31\u662fBASE32\u7f16\u7801\u540e\u7684\u7ed3\u679c\uff09\nint \u53ef\u9009\uff0c\u65f6\u95f4\u6233\uff0c\u9ed8\u8ba4\u5f53\u524d\u65f6\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u8ba1\u7b97\u5f97\u51fa\u7684\u516d\u4f4d\u6570\u7ed3\u679c \u8ba1\u7b97\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--\u4f7f\u7528\u5f53\u524d\u7cfb\u7edf\u65f6\u95f4\u8ba1\u7b97\nlocal otp = crypto.totp(\"asdfassdfasdfass\")\n", "prefix": "crypto.totp"}, "crypto.base64_encode": {"body": "crypto.base64_encode(${1:data})", "description": "crypto.base64_encode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u7f16\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.toBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_encode"}, "crypto.base64_decode": {"body": "crypto.base64_decode(${1:data})", "description": "crypto.base64_decode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.fromBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_decode"}, "crypto.cipher_list": {"body": "crypto.cipher_list()", "description": "crypto.cipher_list() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.27\u6dfb\u52a0\nlocal ciphers = crypto.cipher_list()\nif ciphers then\n log.info(\"crypto\", \"ciphers list\", json.encode(ciphers))\nend\n", "prefix": "crypto.cipher_list"}, "crypto.cipher_suites": {"body": "crypto.cipher_suites()", "description": "crypto.cipher_suites() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.11.16\u6dfb\u52a0\nlocal suites = crypto.cipher_suites()\nif suites then\n log.info(\"crypto\", \"ciphers suites\", json.encode(suites))\nend\n", "prefix": "crypto.cipher_suites"}, "crypto.md_file": {"body": "crypto.md_file(${1:tp},${2:path},${3:hmac})", "description": "crypto.md_file(tp, path, hmac) - \u8ba1\u7b97\u6587\u4ef6\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u6587\u4ef6\u8def\u5f84, \u4f8b\u5982 /luadb/logo.jpg\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\"))\nlog.info(\"sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\"))\nlog.info(\"sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\", \"123456\"))\n", "prefix": "crypto.md_file"}, "crypto.md": {"body": "crypto.md(${1:tp},${2:data},${3:hmac})", "description": "crypto.md(tp, data, hmac) - \u8ba1\u7b97\u6570\u636e\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u5f85\u5904\u7406\u7684\u6570\u636e\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md(\"MD5\", \"1234567890\"))\nlog.info(\"sha1\", crypto.md(\"SHA1\", \"1234567890\"))\nlog.info(\"sha256\", crypto.md(\"SHA256\", \"1234567890\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md(\"MD5\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md(\"SHA1\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md(\"SHA256\", \"1234567890\", \"123456\"))\n", "prefix": "crypto.md"}, "crypto.hash_init": {"body": "crypto.hash_init(${1:tp})", "description": "crypto.hash_init(tp) - \u521b\u5efa\u6d41\u5f0fhash\u7528\u7684stream\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5199\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring hmac\u503c\uff0c\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u65e0hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\")\n\n-- \u5e26hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\", \"123456\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\", \"123456\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\", \"123456\")\n", "prefix": "crypto.hash_init"}, "crypto.hash_update": {"body": "crypto.hash_update(${1:stream},${2:data})", "description": "crypto.hash_update(stream, data) - \u6d41\u5f0fhash\u66f4\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream, \u5fc5\u9009\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nreturn \u65e0\n\u4f8b\u5b50\uff1a\ncrypto.hash_update(stream, \"OK\")\n", "prefix": "crypto.hash_update"}, "crypto.hash_finish": {"body": "crypto.hash_finish(${1:stream})", "description": "crypto.hash_finish(stream) - \u83b7\u53d6\u6d41\u5f0fhash\u6821\u9a8c\u503c\u5e76\u91ca\u653e\u521b\u5efa\u7684stream\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u8ba1\u7b97\u5f97\u51fa\u7684\u6d41\u5f0fhash\u503c\u7684hex\u5b57\u7b26\u4e32\uff0c\u5931\u8d25\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nlocal hashResult = crypto.hash_finish(stream)\n", "prefix": "crypto.hash_finish"}, "crypto.checksum": {"body": "crypto.checksum(${1:data},${2:mode})", "description": "crypto.checksum(data, mode) - \u8ba1\u7b97checksum\u6821\u9a8c\u548c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nint \u6a21\u5f0f,\u7d2f\u52a0\u6a21\u5f0f, 0 - \u5f02\u6216, 1 - \u7d2f\u52a0, \u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nint checksum\u503c,\u6821\u9a8c\u548c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728 2022.12.28 \u6dfb\u52a0\n-- \u5355\u7eaf\u8ba1\u7b97checksum\u503c\nlocal ck = crypto.checksum(\"OK\")\nlog.info(\"checksum\", \"ok\", string.format(\"%02X\", ck))\n-- \u7b2c\u4e8c\u4e2a\u53c2\u6570mode\u57282023.5.23\u65e5\u6dfb\u52a0\n", "prefix": "crypto.checksum"}, "dac.open": {"body": "dac.open(${1:ch},${2:freq},${3:mode})", "description": "dac.open(ch, freq, mode) - \u6253\u5f00DAC\u901a\u9053,\u5e76\u914d\u7f6e\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nint \u8f93\u51fa\u9891\u7387,\u5355\u4f4dhz\nint \u6a21\u5f0f,\u9ed8\u8ba4\u4e3a0,\u9884\u7559\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\nend\n\n", "prefix": "dac.open"}, "dac.write": {"body": "dac.write(${1:ch},${2:data})", "description": "dac.write(ch, data) - \u4ece\u6307\u5b9aDAC\u901a\u9053\u8f93\u51fa\u4e00\u6bb5\u6ce2\u5f62,\u6216\u8005\u5355\u4e2a\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nstring \u82e5\u8f93\u51fa\u56fa\u5b9a\u503c,\u53ef\u4ee5\u586b\u6570\u503c, \u82e5\u8f93\u51fa\u6ce2\u5f62,\u586bstring\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.write"}, "dac.close": {"body": "dac.close(${1:ch})", "description": "dac.close(ch) - \u5173\u95edDAC\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.close"}, "disp.init": {"body": "disp.init(${1:conf})", "description": "disp.init(conf) - \u663e\u793a\u5c4f\u521d\u59cb\u5316,\u8bf7\u4f7f\u7528u8g2\u5e93\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- disp\u5e93\u7684\u6240\u6709API\u5747\u5df2\u5408\u5e76\u5230u8g2\u5e93\n-- disp\u5e93\u5df2\u7ecf\u6620\u5c04\u4e3au8g2\u5e93,\u6240\u6709API\u5747\u4ee3\u7406\u5230u8g2,\u8bf7\u67e5\u9605u8g2\u5e93\u7684API\n", "prefix": "disp.init"}, "eink.init": {"body": "eink.init(${1:tp},${2:args},${3:spi_device})", "description": "eink.init(tp, args,spi_device) - eink\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nnumber eink\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1ahttps://wiki.luatos.com/api/eink.html#id1\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_busy\uff08busy\uff09
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1aeink\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1aeink\u590d\u4f4d\u5f15\u811a\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684eink.MODEL_4in2bc) \u6ce8\u610f:eink\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_eink = spi.deviceSetup(0,20,0,0,8,20000000,spi.MSB,1,1)\nlog.info(\"eink.init\",\neink.init(eink.MODEL_4in2bc,{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_eink))\n", "prefix": "eink.init"}, "eink.setup": {"body": "eink.setup(${1:full},${2:spiid},${3:pin_busy},${4:pin_reset},${5:pin_dc},${6:pin_cs})", "description": "eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs) - \u521d\u59cb\u5316eink\n\u4f20\u5165\u503c\uff1a\nint \u5168\u5c4f\u5237\u65b00,\u5c40\u90e8\u5237\u65b01,\u9ed8\u8ba4\u662f\u5168\u5c4f\u5237\u65b0\nint \u6240\u5728\u7684spi,\u9ed8\u8ba4\u662f0\nint Busy \u5fd9\u4fe1\u53f7\u7ba1\u811a\nint Reset \u590d\u4f4d\u7ba1\u811a\nint DC \u6570\u636e\u547d\u4ee4\u9009\u62e9\u7ba1\u811a\nint CS \u4f7f\u80fd\u7ba1\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "eink.setup"}, "eink.sleep": {"body": "eink.sleep()", "description": "eink.sleep() - \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\uff0c\u518d\u6b21\u4f7f\u7528\u65f6\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\n", "prefix": "eink.sleep"}, "eink.clear": {"body": "eink.clear(${1:color},${2:force})", "description": "eink.clear(color, force) - \u6e05\u9664\u7ed8\u56fe\u7f13\u51b2\u533a\uff0c\u9ed8\u8ba4\u4e0d\u4f1a\u9a6c\u4e0a\u5237\u65b0\u5230\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nnumber color \u53ef\u9009\uff0c\u9ed8\u8ba41\u3002\u5237\u5c4f\u989c\u8272\nbool force \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u9a6c\u4e0a\u6e05\u5c4f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.clear"}, "eink.setWin": {"body": "eink.setWin(${1:width},${2:height},${3:rotate})", "description": "eink.setWin(width, height, rotate) - \u8bbe\u7f6e\u7a97\u53e3\n\u4f20\u5165\u503c\uff1a\nint width \u5bbd\u5ea6\nint height \u9ad8\u5ea6\nint rotate \u663e\u793a\u65b9\u5411,0/1/2/3, \u76f8\u5f53\u4e8e\u65cb\u8f6c0\u5ea6/90\u5ea6/180\u5ea6/270\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.setWin"}, "eink.getWin": {"body": "eink.getWin()", "description": "eink.getWin() - \u83b7\u53d6\u7a97\u53e3\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint width \u5bbd\nint height \u9ad8\nint rotate \u65cb\u8f6c\u65b9\u5411\n", "prefix": "eink.getWin"}, "eink.setFont": {"body": "eink.setFont(${1:font})", "description": "eink.setFont(font) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata \u5b57\u4f53\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684print\u6709\u6548\neink.setFont(eink.font_opposansm12_chinese)\n", "prefix": "eink.setFont"}, "eink.print": {"body": "eink.print(${1:x},${2:y},${3:str},${4:colored})", "description": "eink.print(x, y, str, colored) - \u7ed8\u5236\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u5b57\u7b26\u4e32\nint \u989c\u8272, \u53ef\u4ee5\u662f0\u6216\u80051, \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5148\u8bbe\u7f6e\u5b57\u4f53, \u7136\u540e\u5199\u5b57\n-- \u53ef\u7528\u5b57\u4f53\u53d6\u51b3\u4e8e\u5177\u4f53\u7684\u56fa\u4ef6, \u5982\u679c\u6ca1\u6709\u4f60\u60f3\u8981\u7684\u5927\u5c0f,\u53ef\u4ee5\u4e91\u7f16\u8bd1\u4e00\u4efd\u81ea\u5b9a\u4e49\u56fa\u4ef6\n-- font_opposansm8_chinese\n-- font_opposansm10_chinese\n-- font_opposansm12_chinese\n-- font_opposansm14_chinese\n-- font_opposansm16_chinese\neink.setFont(eink.font_opposansm12_chinese)\neink.print(10, 20, \"LuatOS\")\n", "prefix": "eink.print"}, "eink.show": {"body": "eink.show(${1:x},${2:y},${3:noClear})", "description": "eink.show(x, y, noClear) - \u5c06\u7f13\u51b2\u533a\u56fe\u50cf\u8f93\u51fa\u5230\u5c4f\u5e55\n\u4f20\u5165\u503c\uff1a\nint x \u8f93\u51fa\u7684x\u5750\u6807,\u9ed8\u8ba40\nint y \u8f93\u51fa\u7684y\u5750\u6807,\u9ed8\u8ba40\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.show"}, "eink.draw": {"body": "eink.draw(${1:buff},${2:buff2},${3:noclear})", "description": "eink.draw(buff, buff2, noclear) - \u76f4\u63a5\u8f93\u51fa\u6570\u636e\u5230\u5c4f\u5e55,\u652f\u6301\u53cc\u8272\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u6307\u9488\nuserdata zbuff\u6307\u9488\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.draw"}, "eink.line": {"body": "eink.line(${1:x},${2:y},${3:x2},${4:y2},${5:colored})", "description": "eink.line(x, y, x2, y2, colored) - \u7f13\u51b2\u533a\u7ed8\u5236\u7ebf\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u70b9x\u5750\u6807\nint \u8d77\u70b9y\u5750\u6807\nint \u7ec8\u70b9x\u5750\u6807\nint \u7ec8\u70b9y\u5750\u6807\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.line(0, 0, 10, 20, 0)\n", "prefix": "eink.line"}, "eink.rect": {"body": "eink.rect(${1:x},${2:y},${3:x2},${4:y2},${5:colored},${6:fill})", "description": "eink.rect(x, y, x2, y2, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u77e9\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u9876\u70b9x\u5750\u6807\nint \u5de6\u4e0a\u9876\u70b9y\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9x\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9y\u5750\u6807\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.rect(0, 0, 10, 20)\neink.rect(0, 0, 10, 20,0, 1) -- Filled\n", "prefix": "eink.rect"}, "eink.circle": {"body": "eink.circle(${1:x},${2:y},${3:radius},${4:colored},${5:fill})", "description": "eink.circle(x, y, radius, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u5706\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3x\u5750\u6807\nint \u5706\u5fc3y\u5750\u6807\nint \u534a\u5f84\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.circle(0, 0, 10)\neink.circle(0, 0, 10, 1, 1) -- Filled\n", "prefix": "eink.circle"}, "eink.qrcode": {"body": "eink.qrcode(${1:x},${2:y},${3:str},${4:size})", "description": "eink.qrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.qrcode"}, "eink.bat": {"body": "eink.bat(${1:x},${2:y},${3:bat})", "description": "eink.bat(x, y, bat) - \u7f13\u51b2\u533a\u7ed8\u5236\u7535\u6c60\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u7535\u6c60\u7535\u538b,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.bat"}, "eink.weather_icon": {"body": "eink.weather_icon(${1:x},${2:y},${3:code})", "description": "eink.weather_icon(x, y, code) - \u7f13\u51b2\u533a\u7ed8\u5236\u5929\u6c14\u56fe\u6807\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u5929\u6c14\u4ee3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.weather_icon"}, "eink.model": {"body": "eink.model(${1:m})", "description": "eink.model(m) - \u8bbe\u7f6e\u58a8\u6c34\u5c4f\u9a71\u52a8\u578b\u53f7\n\u4f20\u5165\u503c\uff1a\nint \u578b\u53f7\u540d\u79f0, \u4f8b\u5982 eink.model(eink.MODEL_1in54_V2)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.model"}, "eink.drawXbm": {"body": "eink.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "eink.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\neink.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "eink.drawXbm"}, "eink.setCtx": {"body": "eink.setCtx(${1:index})", "description": "eink.setCtx(index) - \u5207\u6362\u989c\u8272\u753b\u677f, \u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u989c\u8272\u7d22\u5f15, \u9ed1\u8272\u4e3a0, \u7ea2\u8272\u4e3a1\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f, \u5bf9\u5355\u8272\u58a8\u6c34\u5c4f(\u53ea\u6709\u9ed1\u767d)\u7684\u65e0\u6548\neink.setCtx(1)\n-- \u5207\u6362\u540e, \u6240\u6709drawXXX\u90fd\u4f1a\u64cd\u4f5c\u5728\u6307\u5b9a\u989c\u8272\u7684\u753b\u677f\n", "prefix": "eink.setCtx"}, "eink.async": {"body": "eink.async(${1:index})", "description": "eink.async(index) - \u5f02\u6b65\u65b9\u5f0f\uff0c\u4f7f\u7528\u6b64\u65b9\u5f0f\u9700\u8981\u5148 require(\"sysplus\") \u4e4b\u540e eink.clear().wait() eink.show().wait()\u8fdb\u884c\u5237\u5c4f\n\u4f20\u5165\u503c\uff1a\nint 1 \u4f7f\u7528\u5f02\u6b65\n\u4f8b\u5b50\uff1a\n eink.async(1)\n spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,1)\n eink.init(eink.MODEL_1in54,\n {port = \"device\",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},\n spi_eink)\n eink.setWin(200, 200, 0)\n sys.wait(100)\n log.info(\"e-paper 1.54\", \"Testing Go\")\n eink.print(30, 20, \"LuatOS-AIR780E\",0x00)\n eink.show().wait()\n log.info(\"e-paper 1.54\", \"Testing End\")\n", "prefix": "eink.async"}, "errDump.dump": {"body": "errDump.dump(${1:zbuff},${2:type},${3:isDelete})", "description": "errDump.dump(zbuff, type, isDelete) - \u624b\u52a8\u8bfb\u53d6\u5f02\u5e38\u65e5\u5fd7\uff0c\u4e3b\u8981\u7528\u4e8e\u7528\u6237\u5c06\u65e5\u5fd7\u53d1\u9001\u7ed9\u81ea\u5df1\u7684\u670d\u52a1\u5668\u800c\u4e0d\u662fIOT\u5e73\u53f0\uff0c\u5982\u679c\u5728errDump.config\u914d\u7f6e\u4e86\u5468\u671f\u4e0a\u4f20\uff0c\u5219\u4e0d\u80fd\u4f7f\u7528\u672c\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nzbuff \u65e5\u5fd7\u4fe1\u606f\u7f13\u5b58\uff0c\u5982\u679c\u4e3anil\u5c31\u4e0d\u4f1a\u8bfb\u51fa\uff0c\u4e00\u822c\u5f53\nint \u65e5\u5fd7\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709errDump.TYPE_SYS\u548cerrDump.TYPE_USR\nboolean \u662f\u5426\u5220\u9664\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nboolean true\u8868\u793a\u672c\u6b21\u8bfb\u53d6\u524d\u5e76\u6ca1\u6709\u5199\u5165\u6570\u636e\uff0cfalse\u53cd\u4e4b\uff0c\u5728\u5220\u9664\u65e5\u5fd7\u524d\uff0c\u6700\u597d\u518d\u8bfb\u4e00\u4e0b\u786e\u4fdd\u6ca1\u6709\u65b0\u7684\u6570\u636e\u5199\u5165\u4e86\n\u4f8b\u5b50\uff1a\nlocal result = errDump.dump(buff, errDump.TYPE_SYS, false) --\u8bfb\u51fa\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\nlocal result = errDump.dump(nil, errDump.TYPE_SYS, true) --\u6e05\u9664\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\n", "prefix": "errDump.dump"}, "errDump.record": {"body": "errDump.record(${1:string})", "description": "errDump.record(string) - \u5199\u5165\u7528\u6237\u7684\u5f02\u5e38\u65e5\u5fd7\uff0c\u6ce8\u610f\u6700\u5927\u53ea\u67094KB\uff0c\u8d85\u8fc7\u90e8\u5206\u65b0\u7684\u8986\u76d6\u65e7\u7684\uff0c\u5f00\u542f\u81ea\u52a8\u4e0a\u4f20\u540e\u4f1a\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\n\u4f20\u5165\u503c\uff1a\nstring \u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.record(\"socket long time no connect\") --\u8bb0\u5f55\u4e0b\"socket long time no connect\"\n", "prefix": "errDump.record"}, "errDump.config": {"body": "errDump.config(${1:enable},${2:period},${3:user_flag},${4:custom_id},${5:host},${6:port})", "description": "errDump.config(enable, period, user_flag, custom_id, host, port) - \u914d\u7f6e\u5173\u952e\u65e5\u5fd7\u4e0a\u4f20IOT\u5e73\u53f0\uff0c\u8fd9\u91cc\u7684\u65e5\u5fd7\u5305\u62ec\u5f15\u8d77luavm\u5f02\u5e38\u9000\u51fa\u7684\u65e5\u5fd7\u548c\u7528\u6237\u901a\u8fc7record\u5199\u5165\u7684\u65e5\u5fd7\uff0c\u7c7b\u4f3c\u4e8eair\u7684errDump\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u542f\u7528\u8bb0\u5f55\u529f\u80fd\uff0cfalse\u7684\u8bdd\u5c06\u4e0d\u4f1a\u8bb0\u5f55\u4efb\u4f55\u65e5\u5fd7\nint \u5b9a\u65f6\u4e0a\u4f20\u5468\u671f\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4600\u79d2\uff0c\u8fd9\u4e2a\u662f\u81ea\u52a8\u4e0a\u4f20\u65f6\u5019\u540e\u7684\u91cd\u8bd5\u65f6\u95f4\u65f6\u95f4\uff0c\u5728\u5f00\u673a\u540e\u6216\u8005\u6709record\u64cd\u4f5c\u540e\u4f1a\u5f88\u5feb\u5c1d\u8bd5\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\u4e00\u6b21\uff0c\u5982\u679c\u4e3a0\uff0c\u5219\u4e0d\u4f1a\u4e0a\u4f20\uff0c\u7531\u7528\u6237dump\u540e\u81ea\u5df1\u4e0a\u4f20\u81ea\u5df1\u7684\u5e73\u53f0\nstring \u7528\u6237\u7684\u7279\u6b8a\u6807\u8bc6\uff0c\u53ef\u4ee5\u4e3a\u7a7a\nstring \u8bbe\u5907\u8bc6\u522b\u53f7, 4G\u8bbe\u5907\u9ed8\u8ba4\u662fimei,\u5176\u4ed6\u8bbe\u5907\u9ed8\u8ba4\u662fmcu.unique_id\nstring \u670d\u52a1\u5668\u57df\u540d,\u9ed8\u8ba4dev_msg1.openluat.com\nint \u670d\u52a1\u5668\u7aef\u53e3,\u9ed8\u8ba4\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.config(true, 3600, \"12345678\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f1a\u5728imei\u540e\u9644\u52a0\u4e0a12345678\nerrDump.config(false) --\u5173\u95ed\u8bb0\u5f55\u529f\u80fd\uff0c\u4e0d\u518d\u4e0a\u4f20\nerrDump.config(true, 0) --\u8bb0\u5f55\uff0c\u4f46\u662f\u4e0d\u4f1a\u4e3b\u52a8\u4e0a\u4f20\uff0c\u7531\u7528\u6237\u5b9e\u73b0\u4e0a\u4f20\u529f\u80fd\n\n-- 2023.09.22\u65b0\u589ecustom_id\u53c2\u6570\nerrDump.config(true, 3600, nil, \"ABC\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u8bbe\u5907\u8bc6\u522b\u53f7ABC\n\n-- 2023.12.8 \u65b0\u589ehost\u548cport\u53c2\u6570\nerrDump.config(true, 3600, nil, nil, \"dev_msg1.openluat.com\", 12425)\n", "prefix": "errDump.config"}, "fastlz.compress": {"body": "fastlz.compress(${1:data},${2:level})", "description": "fastlz.compress(data, level) - \u5feb\u901f\u538b\u7f29\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nint \u538b\u7f29\u7ea7\u522b,\u9ed8\u8ba41, \u53ef\u90091\u6216\u80052, 2\u7684\u538b\u7f29\u6bd4\u66f4\u9ad8(\u6709\u65f6\u5019)\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u538b\u7f29\u8fc7\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u5982\u4e0b\n-- \u7cfb\u7edf\u5185\u5b58, \u56fa\u5b9a32k\n-- lua\u5185\u5b58, \u539f\u59cb\u6570\u636e\u7684\u5927\u5c0f\u76841.05\u500d,\u6700\u5c0f\u5360\u75281024\u5b57\u8282.\n", "prefix": "fastlz.compress"}, "fastlz.uncompress": {"body": "fastlz.uncompress(${1:data},${2:maxout})", "description": "fastlz.uncompress(data, maxout) - \u5feb\u901f\u89e3\u538b\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e\nint \u89e3\u538b\u540e\u7684\u6700\u5927\u5927\u5c0f, \u9ed8\u8ba4\u662f4k, \u53ef\u6309\u9700\u8c03\u6574\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n", "prefix": "fastlz.uncompress"}, "fatfs.mount": {"body": "fatfs.mount(${1:mode},${2:mount_point},${3:spiid_or_spidevice},${4:spi_cs},${5:spi_speed},${6:power_pin},${7:power_on_delay},${8:auto_format})", "description": "fatfs.mount(mode,mount_point, spiid_or_spidevice, spi_cs, spi_speed, power_pin, power_on_delay, auto_format) - \u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nint fatfs\u6a21\u5f0f,\u53ef\u9009fatfs.SPI,fatfs.SDIO,fatfs.RAM,fatfs.USB\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f /fatfs\nint \u4f20\u5165spi device\u6307\u9488,\u6216\u8005spi\u7684id,\u6216\u8005sdio\u7684id\nint \u7247\u9009\u811a\u7684GPIO \u53f7, spi\u6a21\u5f0f\u6709\u6548,\u82e5\u524d\u4e00\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint SPI\u6700\u9ad8\u901f\u5ea6,\u9ed8\u8ba410M, \u82e5\u524d2\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u63a7\u5236\u811a,TF\u5361\u521d\u59cb\u524d\u5148\u62c9\u4f4e\u590d\u4f4d\u518d\u62c9\u9ad8,\u5982\u679c\u6ca1\u6709,\u6216\u8005\u662f\u5185\u7f6e\u7535\u6e90\u63a7\u5236\u65b9\u5f0f,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u590d\u4f4d\u8fc7\u7a0b\u65f6\u95f4,\u5355\u4f4dms,\u9ed8\u8ba4\u503c\u662f1\nbool \u6302\u8f7d\u5931\u8d25\u662f\u5426\u5c1d\u8bd5\u683c\u5f0f\u5316,\u9ed8\u8ba4\u662ftrue,\u5373\u81ea\u52a8\u683c\u5f0f\u5316. \u672c\u53c2\u6570\u57282023.8.16\u6dfb\u52a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nstring \u5931\u8d25\u7684\u539f\u56e0\n\u4f8b\u5b50\uff1a\n-- \u65b9\u6cd51, \u4f7f\u7528SPI\u6a21\u5f0f\n local spiId = 2\n local result = spi.setup(\n spiId,--\u4e32\u53e3id\n 255, -- \u4e0d\u4f7f\u7528\u9ed8\u8ba4CS\u811a\n 0,--CPHA\n 0,--CPOL\n 8,--\u6570\u636e\u5bbd\u5ea6\n 400*1000 -- \u521d\u59cb\u5316\u65f6\u4f7f\u7528\u8f83\u4f4e\u7684\u9891\u7387\n )\n local TF_CS = pin.PB3\n gpio.setup(TF_CS, 1)\n --fatfs.debug(1) -- \u82e5\u6302\u8f7d\u5931\u8d25,\u53ef\u4ee5\u5c1d\u8bd5\u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u67e5\u627e\u539f\u56e0\n -- \u63d0\u9192, \u82e5TF/SD\u6a21\u5757\u5e26\u7535\u5e73\u8f6c\u6362, \u901a\u5e38\u4e0d\u652f\u630110M\u4ee5\u4e0a\u7684\u6ce2\u7279\u7387!!\n fatfs.mount(fatfs.SPI,\"SD\", spiId, TF_CS, 24000000)\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n -- \u5f80\u4e0b\u7684\u64cd\u4f5c, \u4f7f\u7528 io.open(\"/sd/xxx\", \"w+\") \u7b49io\u5e93\u7684API\u5c31\u53ef\u4ee5\u4e86\n", "prefix": "fatfs.mount"}, "fatfs.unmount": {"body": "fatfs.unmount(${1:mount_point})", "description": "fatfs.unmount(mount_point) - \u53d6\u6d88\u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f fatfs,\u5fc5\u987b\u4e0efatfs.mount\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0, \u5426\u5219\u8fd4\u56de\u5931\u8d25\u7801\n\u4f8b\u5b50\uff1a\nfatfs.mount(\"SD\")\n", "prefix": "fatfs.unmount"}, "fatfs.getfree": {"body": "fatfs.getfree(${1:mount_point})", "description": "fatfs.getfree(mount_point) - \u83b7\u53d6\u53ef\u7528\u7a7a\u95f4\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9, \u9700\u8981\u8ddffatfs.mount\u4f20\u5165\u7684\u503c\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\ntable \u82e5\u6210\u529f\u4f1a\u8fd4\u56detable,\u5426\u5219\u8fd4\u56denil\nint \u5bfc\u81f4\u5931\u8d25\u7684\u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- table\u5305\u542b\u7684\u5185\u5bb9\u6709\n-- total_sectors \u603b\u6247\u533a\u6570\u91cf\n-- free_sectors \u7a7a\u95f2\u6247\u533a\u6570\u91cf\n-- total_kb \u603b\u5b57\u8282\u6570,\u5355\u4f4dkb\n-- free_kb \u7a7a\u95f2\u5b57\u8282\u6570, \u5355\u4f4dkb\n-- \u6ce8\u610f,\u5f53\u524d\u6247\u533a\u5927\u5c0f\u56fa\u5b9a\u5728512\u5b57\u8282\n\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n", "prefix": "fatfs.getfree"}, "fatfs.debug": {"body": "fatfs.debug(${1:value})", "description": "fatfs.debug(value) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,true\u4ee3\u8868\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,\u589e\u52a0\u8c03\u8bd5\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "fatfs.debug"}, "fdb.kvdb_init": {"body": "fdb.kvdb_init(${1:name},${2:partition})", "description": "fdb.kvdb_init(name, partition) - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u5e93\u540d,\u5f53\u524d\u4ec5\u652f\u6301env\nstring FAL\u5206\u533a\u540d,\u5f53\u524d\u4ec5\u652f\u6301onchip_fdb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- fdb\u5e93\u57fa\u4e8e flashdb , \u518d\u6b21\u8868\u793a\u611f\u8c22.\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fdb.kvdb_init \u540e \u6267\u884c fdb.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fdb.kvdb_init"}, "fdb.kv_set": {"body": "fdb.kv_set(${1:key},${2:value})", "description": "fdb.kv_set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u5927255\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nnumber \u7b2c\u4e8c\u4e2a\u4e3a\u8fd4\u56de\u4e3aflashdb\u7684fdb_kv_set_blob\u8fd4\u56de\u8be6\u7ec6\u72b6\u6001,0\uff1a\u65e0\u9519\u8bef 1:\u64e6\u9664\u9519\u8bef 2:\u8bfb\u9519\u8bef 3:\u5199\u9519\u8bef 4:\u672a\u627e\u5230 5:kv\u540d\u5b57\u9519\u8bef 6:kv\u540d\u5b57\u5b58\u5728 7:\u5df2\u4fdd\u5b58 8:\u521d\u59cb\u5316\u9519\u8bef\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_set(\"wendal\", \"goodgoodstudy\"))\nend\n", "prefix": "fdb.kv_set"}, "fdb.kv_get": {"body": "fdb.kv_get(${1:key},${2:skey})", "description": "fdb.kv_get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fdb.kv_get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_get(\"wendal\"))\nend\n", "prefix": "fdb.kv_get"}, "fdb.kv_del": {"body": "fdb.kv_del(${1:key})", "description": "fdb.kv_del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_del(\"wendal\"))\nend\n", "prefix": "fdb.kv_del"}, "fdb.kv_clr": {"body": "fdb.kv_clr()", "description": "fdb.kv_clr() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfdb.kv_clr()\n", "prefix": "fdb.kv_clr"}, "fdb.kv_iter": {"body": "fdb.kv_iter()", "description": "fdb.kv_iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_iter"}, "fdb.kv_next": {"body": "fdb.kv_next(${1:iter})", "description": "fdb.kv_next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fdb.kv_iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_next"}, "fdb.kv_stat": {"body": "fdb.kv_stat()", "description": "fdb.kv_stat() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.23 \u6dfb\u52a0\nlocal used,maxs,kv_count = fdb.kv_stat()\nlog.info(\"fdb\", \"kv\", used,maxs,kv_count)\n", "prefix": "fdb.kv_stat"}, "fonts.list": {"body": "fonts.list(${1:tp})", "description": "fonts.list(tp) - \u8fd4\u56de\u56fa\u4ef6\u652f\u6301\u7684\u5b57\u4f53\u5217\u8868\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\ntable \u5b57\u4f53\u5217\u8868\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-12\nif fonts.list then\n log.info(\"fonts\", \"u8g2\", json.encode(fonts.list(\"u8g2\")))\nend\n", "prefix": "fonts.list"}, "fonts.u8g2_get": {"body": "fonts.u8g2_get(${1:name},${2:tp})", "description": "fonts.u8g2_get(name, tp) - \u83b7\u53d6\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0, \u4f8b\u5982opposansm8_chinese unifont_t_symbols\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\noppo_8 = fonts.get(\"opposansm8_chinese\", \"u8g2\")\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n-- \u82e5\u4f7f\u7528\u4e91\u7f16\u8bd1\u7684\u81ea\u5b9a\u4e49\u5b57\u5e93, \u4f7f\u7528\u65b9\u5f0f\u5982\u4e0b\noppo_8 = fonts.get(\"oppo_bold_8\", \"u8g2\") -- oppo_bold_8 \u662f\u4e91\u7f16\u8bd1\u754c\u9762\u7684\u5b57\u5e93\u547d\u540d\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n", "prefix": "fonts.u8g2_get"}, "fonts.u8g2_load": {"body": "fonts.u8g2_load(${1:path},${2:path})", "description": "fonts.u8g2_load(path, path) - \u4ece\u6587\u4ef6\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84, \u4f8b\u5982 /luadb/abc.bin\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2. \u4e5f\u652f\u6301lvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-11\n-- \u63d0\u9192: \u82e5\u6587\u4ef6\u4f4d\u4e8e/luadb\u4e0b, \u4e0d\u9700\u8981\u5360\u7528\u5185\u5b58\n-- \u82e5\u6587\u4ef6\u5904\u4e8e\u5176\u4ed6\u8def\u5f84, \u4f8b\u5982tf/sd\u5361, spi flash, \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5230\u5185\u5b58, \u6d88\u8017lua vm\u7684\u5185\u5b58\u7a7a\u95f4\n-- \u52a0\u8f7d\u540e\u8bf7\u9002\u5f53\u5f15\u7528, \u4e0d\u5fc5\u53cd\u590d\u52a0\u8f7d\u540c\u4e00\u4e2a\u5b57\u4f53\u6587\u4ef6\noppo12 = fonts.load(\"/luadb/oppo12.bin\")\nif oppo12 then\n u8g2.SetFont(oppo12)\nelse\n log.warn(\"fonts\", \"no such font file oppo12.bin\")\nend\n", "prefix": "fonts.u8g2_load"}, "fota.init": {"body": "fota.init(${1:storge_location},${2:len},${3:param1},${4:param2})", "description": "fota.init(storge_location, len, param1, param2) - \u521d\u59cb\u5316fota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nint/string fota\u6570\u636e\u5b58\u50a8\u7684\u8d77\u59cb\u4f4d\u7f6e
\u5982\u679c\u662fint\uff0c\u5219\u662f\u7531\u82af\u7247\u5e73\u53f0\u5177\u4f53\u5224\u65ad
\u5982\u679c\u662fstring\uff0c\u5219\u5b58\u50a8\u5728\u6587\u4ef6\u7cfb\u7edf\u4e2d
\u5982\u679c\u4e3anil\uff0c\u5219\u7531\u5e95\u5c42\u51b3\u5b9a\u5b58\u50a8\u4f4d\u7f6e\nint \u6570\u636e\u5b58\u50a8\u7684\u6700\u5927\u7a7a\u95f4\nuserdata param1\uff0c\u5982\u679c\u6570\u636e\u5b58\u50a8\u5728spiflash\u65f6,\u4e3aspi_device\nint param2\uff0c\u76ee\u524d\u53ea\u7528\u4e8e\u5916\u90e8flash\u66f4\u65b0\u65f6, spiflash\u7535\u6e90\u63a7\u5236\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316fota\u6d41\u7a0b\nlocal result = fota.init(0, 0x00300000, spi_device) --\u7531\u4e8e105\u7684flash\u4ece0x01000000\u5f00\u59cb\uff0c\u6240\u4ee50\u5c31\u662f\u5916\u90e8spiflash\nlocal result = fota.init() --ec618\u7cfb\u5217/EC7XX\u7cfb\u5217\u4f7f\u7528\u56fa\u5b9a\u5185\u90e8\u5730\u5740\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u53c2\u6570\u4e86\nlocal result = fota.init(0xe0000000, 0, spi_device, 27) --EC7XX\u7cfb\u5217\u5141\u8bb8\u4f7f\u7528\u5916\u90e8flash\u66f4\u65b0\uff0c\u4f46\u662f\u5730\u5740\u5fc5\u987b\u52a0\u4e0a0xe0000000\u7684\u504f\u79fb\n", "prefix": "fota.init"}, "fota.wait": {"body": "fota.wait()", "description": "fota.wait() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u51c6\u5907\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u51c6\u5907\u597d\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal isDone = fota.wait()\n", "prefix": "fota.wait"}, "fota.run": {"body": "fota.run(${1:buff},${2:offset},${3:len})", "description": "fota.run(buff, offset, len) - \u5199\u5165fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nzbuff/string fota\u6570\u636e\uff0c\u5c3d\u91cf\u7528zbuff\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u957f\u5ea6,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662fzbuff:used()\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.run(buf) -- \u5199\u5165fota\u6d41\u7a0b\n\n-- \u63d0\u793a: \uff0c\u5982\u679c\u4f20\u5165\u7684\u662fzbuff\uff0c\u5199\u5165\u6210\u529f\u540e\uff0c\u8bf7\u81ea\u884c\u6e05\u7a7azbuff\u5185\u7684\u6570\u636e\n\n-- 2024.4.3\u65b0\u589eoffset, len\u53c2\u6570, \u4ec5\u5bf9zbuff\u6709\u6548\nfota.run(buff, 0, 1024)\n", "prefix": "fota.run"}, "fota.file": {"body": "fota.file(${1:path})", "description": "fota.file(path) - \u4ece\u6307\u5b9a\u6587\u4ef6\u8bfb\u53d6fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.file(\"/xxx.bin\") -- \u5199\u5165fota\u6d41\u7a0b\n-- \u672cAPI\u4e8e2023.03.23 \u6dfb\u52a0\n", "prefix": "fota.file"}, "fota.isDone": {"body": "fota.isDone()", "description": "fota.isDone() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u5b8c\u6210\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u5199\u5165\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal result, isDone = fota.isDone()\n", "prefix": "fota.isDone"}, "fota.finish": {"body": "fota.finish(${1:is_ok})", "description": "fota.finish(is_ok) - \u7ed3\u675ffota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7ed3\u675ffota\u6d41\u7a0b\nlocal result = fota.finish(true)\n", "prefix": "fota.finish"}, "fs.fsstat": {"body": "fs.fsstat(${1:path})", "description": "fs.fsstat(path) - \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84,\u9ed8\u8ba4\"/\",\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nboolean \u83b7\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u603b\u7684block\u6570\u91cf\nint \u5df2\u4f7f\u7528\u7684block\u6570\u91cf\nint block\u7684\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nstring \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b,\u4f8b\u5982lfs\u4ee3\u8868littlefs\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u6839\u5206\u533a\u7684\u4fe1\u606f\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\n", "prefix": "fs.fsstat"}, "fs.fsize": {"body": "fs.fsize(${1:path})", "description": "fs.fsize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u5927\u5c0f,\u82e5\u83b7\u53d6\u5931\u8d25\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370main.luac\u7684\u5927\u5c0f\nlog.info(\"fsize\", fs.fsize(\"/main.luac\"))\n", "prefix": "fs.fsize"}, "fskv.init": {"body": "fskv.init()", "description": "fskv.init() - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fskv.kvdb_init \u540e \u6267\u884c fskv.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fskv.init"}, "fskv.set": {"body": "fskv.set(${1:key},${2:value})", "description": "fskv.set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662fnil, function, userdata, task\nlog.info(\"fdb\", fskv.set(\"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.set(\"upgrade\", true))\nlog.info(\"fdb\", fskv.set(\"timer\", 1))\nlog.info(\"fdb\", fskv.set(\"bigd\", {name=\"wendal\",age=123}))\n", "prefix": "fskv.set"}, "fskv.sett": {"body": "fskv.sett(${1:key},${2:skey},${3:value})", "description": "fskv.sett(key, skey, value) - \u8bbe\u7f6etable\u5185\u7684\u952e\u503c\u5bf9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring table\u7684key\u540d\u79f0, \u5fc5\u586b, \u4e0d\u80fd\u662f\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse/nil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u57282023.7.26\u65b0\u589e,\u6ce8\u610f\u4e0eset\u51fd\u6570\u533a\u522b\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662ffunction, userdata, task\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"upgrade\", true))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"timer\", 1))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"bigd\", {name=\"wendal\",age=123}))\n\n-- \u4e0b\u5217\u8bed\u53e5\u5c06\u6253\u5370\u51fa4\u4e2a\u5143\u7d20\u7684table\nlog.info(\"fdb\", fskv.get(\"mytable\"), json.encode(fskv.get(\"mytable\")))\n-- \u6ce8\u610f: \u5982\u679ckey\u4e0d\u5b58\u5728, \u6216\u8005\u539f\u672c\u7684\u503c\u4e0d\u662ftable\u7c7b\u578b,\u5c06\u4f1a\u5b8c\u5168\u8986\u76d6\n-- \u4f8b\u5982\u4e0b\u5217\u5199\u6cd5,\u6700\u7ec8\u83b7\u53d6\u5230\u7684\u662ftable,\u800c\u975e\u7b2c\u4e00\u884c\u7684\u5b57\u7b26\u4e32\nlog.info(\"fdb\", fskv.set(\"mykv\", \"123\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"age\", \"123\")) -- \u4fdd\u5b58\u7684\u5c06\u662f {age:\"123\"}\n\n\n-- \u5982\u679c\u8bbe\u7f6e\u7684\u6570\u636e\u586bnil, \u4ee3\u8868\u5220\u9664\u5bf9\u5e94\u7684key\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\", \"wendal\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\")) -- \u76f8\u5f53\u4e8e\u5220\u9664\n-- \n", "prefix": "fskv.sett"}, "fskv.get": {"body": "fskv.get(${1:key},${2:skey})", "description": "fskv.get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fskv.get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", fskv.get(\"wendal\"))\nend\n\n-- \u82e5\u9700\u8981\"\u9ed8\u8ba4\u503c\", \u5bf9\u5e94\u975ebool\u5e03\u5c14\u503c, \u53ef\u4ee5\u8fd9\u6837\u5199\nlocal v = fskv.get(\"wendal\") or \"123\"\n", "prefix": "fskv.get"}, "fskv.del": {"body": "fskv.del(${1:key})", "description": "fskv.del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"fdb\", fskv.del(\"wendal\"))\n", "prefix": "fskv.del"}, "fskv.clear": {"body": "fskv.clear()", "description": "fskv.clear() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfskv.clear()\n", "prefix": "fskv.clear"}, "fskv.iter": {"body": "fskv.iter()", "description": "fskv.iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fskv.kv_get(k))\n end\nend\n", "prefix": "fskv.iter"}, "fskv.next": {"body": "fskv.next(${1:iter})", "description": "fskv.next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fskv.iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fskv\", k, \"value\", fskv.get(k))\n end\nend\n", "prefix": "fskv.next"}, "fskv.status": {"body": "fskv.status()", "description": "fskv.status() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\nlocal used, total,kv_count = fskv.status()\nlog.info(\"fdb\", \"kv\", used,total,kv_count)\n", "prefix": "fskv.status"}, "ftp.login": {"body": "ftp.login(${1:adapter},${2:ip_addr},${3:port},${4:username},${5:password})", "description": "ftp.login(adapter,ip_addr,port,username,password) - FTP\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring ip_addr \u5730\u5740\nstring port \u7aef\u53e3,\u9ed8\u8ba421\nstring username \u7528\u6237\u540d\nstring password \u5bc6\u7801\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp_login = ftp.login(nil,\"xxx\")\n", "prefix": "ftp.login"}, "ftp.command": {"body": "ftp.command(${1:cmd})", "description": "ftp.command(cmd) - FTP\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nstring cmd \u547d\u4ee4 \u76ee\u524d\u652f\u6301:NOOP SYST TYPE PWD MKD CWD CDUP RMD DELE LIST\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\n // \u7a7a\u64cd\u4f5c\uff0c\u9632\u6b62\u8fde\u63a5\u65ad\u6389\n print(ftp.command(\"NOOP\").wait())\n // \u62a5\u544a\u8fdc\u7a0b\u7cfb\u7edf\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\n print(ftp.command(\"SYST\").wait())\n // \u6307\u5b9a\u6587\u4ef6\u7c7b\u578b\n print(ftp.command(\"TYPE I\").wait())\n // \u663e\u793a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u540d\n print(ftp.command(\"PWD\").wait())\n // \u521b\u5efa\u76ee\u5f55\n print(ftp.command(\"MKD QWER\").wait())\n // \u6539\u53d8\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\n print(ftp.command(\"CWD /QWER\").wait())\n // \u8fd4\u56de\u4e0a\u4e00\u5c42\u76ee\u5f55\n print(ftp.command(\"CDUP\").wait())\n // \u5220\u9664\u76ee\u5f55\n print(ftp.command(\"RMD QWER\").wait())\n // \u83b7\u53d6\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\u5217\u8868\n print(ftp.command(\"LIST\").wait())\n // \u5220\u9664\u6587\u4ef6\n print(ftp.command(\"DELE /1/12222.txt\").wait())\n", "prefix": "ftp.command"}, "ftp.pull": {"body": "ftp.pull(${1:local_name},${2:remote_name})", "description": "ftp.pull(local_name,remote_name) - FTP\u6587\u4ef6\u4e0b\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.pull(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.pull"}, "ftp.push": {"body": "ftp.push(${1:local_name},${2:remote_name})", "description": "ftp.push(local_name,remote_name) - FTP\u6587\u4ef6\u4e0a\u4f20\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.push(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.push"}, "ftp.close": {"body": "ftp.close()", "description": "ftp.close() - FTP\u5ba2\u6237\u7aef\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.close().wait()\n", "prefix": "ftp.close"}, "ftp.debug": {"body": "ftp.debug(${1:onoff})", "description": "ftp.debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "ftp.debug"}, "sm.sm2encrypt": {"body": "sm.sm2encrypt(${1:pkx},${2:pky},${3:data},${4:mode},${5:mode2})", "description": "sm.sm2encrypt(pkx,pky,data, mode, mode2) - sm2\u7b97\u6cd5\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5x,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5y,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u6700\u957f32\u5b57\u8282, \u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32, \u539f\u6837\u8f93\u51fa,\u672a\u7ecfHEX\u8f6c\u6362. \u82e5\u52a0\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2encrypt"}, "sm.sm2decrypt": {"body": "sm.sm2decrypt(${1:private},${2:data},${3:mode},${4:mode2})", "description": "sm.sm2decrypt(private,data,mode,mode2) - sm2\u7b97\u6cd5\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u89e3\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2decrypt"}, "sm.sm3": {"body": "sm.sm3(${1:data})", "description": "sm.sm3(data) - sm3\u7b97\u6cd5,\u7b97HASH\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3(\"lqlq666lqlq946\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3"}, "sm.sm3hmac": {"body": "sm.sm3hmac(${1:data},${2:key})", "description": "sm.sm3hmac(data, key) - sm3\u7b97\u6cd5,\u7b97HASH\u503c,\u4f46\u5e26HMAC\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3hmac(\"lqlq666lqlq946\", \"123\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3hmac"}, "gmssl.sm4encrypt": {"body": "gmssl.sm4encrypt(${1:mode},${2:padding},${3:originStr},${4:password})", "description": "gmssl.sm4encrypt(mode,padding,originStr,password) - SM4\u52a0\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal originStr = \"SM4 ECB ZeroPadding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aZeroPadding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nlocal encodeStr = gmssl.sm4encrypt(\"ECB\",\"ZERO\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"ZERO\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 ECB Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nencodeStr = gmssl.sm4encrypt(\"ECB\",\"PKCS5\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"PKCS5\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 CBC Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aCBC\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a256 bit\uff1b\u504f\u79fb\u91cf\uff1a1234567890666666\nencodeStr = gmssl.sm4encrypt(\"CBC\",\"PKCS5\",originStr,\"1234567890123456\",\"1234567890666666\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"CBC\",\"PKCS5\",encodeStr,\"1234567890123456\",\"1234567890666666\"))\n", "prefix": "gmssl.sm4encrypt"}, "gmssl.sm4decrypt": {"body": "gmssl.sm4decrypt(${1:mode},${2:padding},${3:encodeStr},${4:password})", "description": "gmssl.sm4decrypt(mode,padding,encodeStr,password) - SM4\u89e3\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u5df2\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003gmssl.sm4encrypt\n", "prefix": "gmssl.sm4decrypt"}, "sm.sm2sign": {"body": "sm.sm2sign(${1:private},${2:data},${3:id})", "description": "sm.sm2sign(private,data,id) - sm2\u7b97\u6cd5\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\n\u8fd4\u56de\u503c\uff1a\nstring \u524d\u9762\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u7b7e\u540d\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2sign"}, "sm.sm2verify": {"body": "sm.sm2verify(${1:pkx},${2:pky},${3:data},${4:id},${5:sig})", "description": "sm.sm2verify(pkx, pky, data, id, sig) - sm2\u7b97\u6cd5\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5X,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5Y,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\nstring \u7b7e\u540d\u6570\u636e,\u5fc5\u987b64\u5b57\u8282,\u975eHEX\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nboolean \u9a8c\u8bc1\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2verify"}, "gpio.setup": {"body": "gpio.setup(${1:pin},${2:mode},${3:pull},${4:irq},${5:alt})", "description": "gpio.setup(pin, mode, pull, irq, alt) - \u8bbe\u7f6e\u7ba1\u811a\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nint pin gpio\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nany mode \u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff1a
\u6570\u5b570/1\u4ee3\u8868\u8f93\u51fa\u6a21\u5f0f
nil\u4ee3\u8868\u8f93\u5165\u6a21\u5f0f
function\u4ee3\u8868\u4e2d\u65ad\u6a21\u5f0f\uff0c\u5982\u679c\u586bgpio.count\uff0c\u5219\u4e3a\u4e2d\u65ad\u8ba1\u6570\u529f\u80fd\uff0c\u4e2d\u65ad\u65f6\u4e0d\u56de\u8c03\nint pull \u4e0a\u62c9\u4e0b\u62c9\u6a21\u5f0f, \u53ef\u4ee5\u662f\u4e0a\u62c9\u6a21\u5f0f gpio.PULLUP \u6216\u4e0b\u62c9\u6a21\u5f0f gpio.PULLDOWN, \u6216\u8005\u5f00\u6f0f\u6a21\u5f0f 0. \u9700\u8981\u6839\u636e\u5b9e\u9645\u786c\u4ef6\u9009\u7528\nint irq \u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f,\u9ed8\u8ba4gpio.BOTH\u3002\u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f
\u4e0a\u5347\u6cbfgpio.RISING
\u4e0b\u964d\u6cbfgpio.FALLING
\u4e0a\u5347\u548c\u4e0b\u964d\u90fd\u89e6\u53d1gpio.BOTH \nint alt \u590d\u7528\u9009\u9879\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9700\u8981\u8fd9\u4e2a\u53c2\u6570\uff0c\u6709\u4e9bGPIO\u53ef\u4ee5\u590d\u7528\u5230\u4e0d\u540c\u5f15\u811a\u4e0a\uff0c\u53ef\u4ee5\u9009\u62e9\u590d\u7528\u9009\u9879\uff080\u6216\u80054\uff09\u4ece\u800c\u590d\u7528\u5230\u5bf9\u5e94\u7684\u5f15\u811a\u4e0a\n\u8fd4\u56de\u503c\uff1a\nany \u8f93\u51fa\u6a21\u5f0f\u8fd4\u56de\u8bbe\u7f6e\u7535\u5e73\u7684\u95ed\u5305, \u8f93\u5165\u6a21\u5f0f\u548c\u4e2d\u65ad\u6a21\u5f0f\u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u5165\ngpio.setup(17, nil)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\ngpio.setup(17, 0)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u9ad8,\u4e14\u542f\u7528\u5185\u90e8\u4e0a\u62c9\ngpio.setup(17, 1, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u9ed8\u8ba4\u53cc\u5411\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u4ec5\u4e0a\u5347\u6cbf\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP, gpio.RISING)\n\n-- \u4e2d\u65ad\u8ba1\u6570 \u4e8e2024.5.8\u65b0\u589e\n-- \u8bbe\u7f6egpio7\u4e3a\u4e2d\u65ad\u8ba1\u6570\uff0c\u8be6\u7ec6demo\u89c1gpio/gpio_irq_count\ngpio.setup(7, gpio.count)\n\n-- alt_func \u4e8e2023.7.2\u65b0\u589e\n-- \u672c\u529f\u80fd\u4ec5\u5bf9\u90e8\u5206\u5e73\u53f0\u6709\u6548, \u4e14\u4ec5\u7528\u4e8e\u8c03\u6574GPIO\u590d\u7528,\u5176\u4ed6\u590d\u7528\u65b9\u5f0f\u8bf7\u4f7f\u7528muc.iomux\u51fd\u6570\n-- \u4ee5\u4e0b\u793a\u4f8b\u4ee3\u7801, \u5c06I2S_DOUT\u590d\u7528\u6210gpio18\n-- AIR780E\u7684PIN33(\u6a21\u5757\u7ba1\u811a\u5e8f\u53f7), \u5bf9\u5e94paddr 38, \u9ed8\u8ba4\u529f\u80fd\u662fI2S_DOUT, \u590d\u7528\u6210gpio18\n-- \u65b9\u5411\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\n-- Air780E(EC618\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780e.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\n-- Air780EP(EC718P\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780ep.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\ngpio.setup(18, 0, nil, nil, 4)\n\n-- \u63d0\u9192: \n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u5165\u6a21\u5f0f\u6216\u4e2d\u65ad,\u624d\u80fd\u901a\u8fc7gpio.get()\u83b7\u53d6\u5230\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u624d\u80fd\u901a\u8fc7gpio.set()\u8bbe\u7f6e\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u901a\u8fc7gpio.get()\u603b\u4f1a\u5f97\u52300\n-- \u4e2d\u65ad\u56de\u8c03\u7684val\u53c2\u6570\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\n-- \u5bf9Cat.1\u6a21\u5757,EC618\u7cfb\u5217\u53ea\u6709AONGPIO\u624d\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5176\u4ed6\u7cfb\u5217\u6240\u6709GPIO\u90fd\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5177\u4f53\u770b\u786c\u4ef6\u624b\u518c\n-- \u9ed8\u8ba4\u8bbe\u7f6e\u4e0b,\u4e2d\u65ad\u662f\u6ca1\u6709\u9632\u6296\u65f6\u95f4\u7684,\u53ef\u4ee5\u901a\u8fc7gpio.set_debounce(pin, 50)\u6765\u8bbe\u7f6e\u9632\u6296\u65f6\u95f4\n\n-- pull\u53c2\u6570\u7684\u989d\u5916\u8bf4\u660e, \u4e0a\u62c9/\u4e0b\u62c9\u914d\u7f6e\n-- \u5bf9\u4e8e\u90e8\u5206\u7684BSP\u6765\u8bf4, \u53ea\u652f\u6301 gpio.PULLUP \u6216 gpio.PULLDOWN, \u4f46\u6709\u90e8\u5206BSP\u652f\u6301\u5f00\u6f0f\u6a21\u5f0f\n-- \u5bf9\u4e8e\u652f\u6301\u5f00\u6f0f\u7684bsp, pull\u53c2\u6570\u8981\u4f20 0 \u624d\u80fd\u5f00\u542f\u5f00\u6f0f\u6a21\u5f0f, \u4e0d\u662f\u4f20nil\n-- \u4f8b\u5982:\n-- EC618\u7cfb\u5217(Air780E/Air780EG/Air780EX/Air700E\u7b49)\n-- EC718\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\n-- XT804\u7cfb\u5217(Air101/Air103/Air601)\n", "prefix": "gpio.setup"}, "gpio.caplevel": {"body": "gpio.caplevel(${1:pin},${2:level},${3:func})", "description": "gpio.caplevel(pin, level,func) - \u6355\u83b7\u7ba1\u811a\u7535\u5e73\u6301\u7eed\u65f6\u957f\uff0c\u5355\u4f4dus\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint level \u9700\u8981\u6355\u83b7\u7684\u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\uff0c\u5373\u7ba1\u811a\u4e0a\u6b63\u5e38\u65f6\u95f4\u5904\u4e8elevel\u7684\u53cd\uff0c\u6355\u83b7\u8bbe\u5b9a\u7684level\u6301\u7eed\u65f6\u95f4\nfunction func \u5b8c\u6210\u6355\u83b7\u540e\u7684\u56de\u8c03\u51fd\u6570\uff0c\u4ec5\u4e00\u4e2a\u53c2\u6570\uff0c\u53c2\u6570\u4e3a\u6355\u83b7\u5230\u7684\u65f6\u95f4\u957f\u5ea6number\u578b\u6570\u503c\uff0c\u5355\u4f4dus\n\u8fd4\u56de\u503c\uff1a\nany \u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n-- \u6355\u83b7pin.PA07\u4e3a\u9ad8\u7535\u5e73\u7684\u6301\u7eed\u65f6\u95f4\ngpio.caplevel(pin.PA07,1,function(val) print(val) end)\n", "prefix": "gpio.caplevel"}, "gpio.set": {"body": "gpio.set(${1:pin},${2:value})", "description": "gpio.set(pin, value) - \u8bbe\u7f6e\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint value \u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio17\u4e3a\u4f4e\u7535\u5e73\ngpio.set(17, 0)\n", "prefix": "gpio.set"}, "gpio.get": {"body": "gpio.get(${1:pin})", "description": "gpio.get(pin) - \u83b7\u53d6\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nvalue \u7535\u5e73, \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u5bf9\u5e94\u6570\u503c1\u548c0\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6gpio17\u7684\u5f53\u524d\u7535\u5e73\ngpio.get(17)\n", "prefix": "gpio.get"}, "gpio.close": {"body": "gpio.close(${1:pin})", "description": "gpio.close(pin) - \u5173\u95ed\u7ba1\u811a\u529f\u80fd(\u9ad8\u963b\u8f93\u5165\u6001),\u5173\u6389\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u603b\u662f\u6267\u884c\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edgpio17\ngpio.close(17)\n", "prefix": "gpio.close"}, "gpio.setDefaultPull": {"body": "gpio.setDefaultPull(${1:val})", "description": "gpio.setDefaultPull(val) - \u8bbe\u7f6eGPIO\u811a\u7684\u9ed8\u8ba4\u4e0a\u62c9/\u4e0b\u62c9\u8bbe\u7f6e, \u9ed8\u8ba4\u662f\u5e73\u53f0\u81ea\u5b9a\u4e49(\u4e00\u822c\u4e3a\u5f00\u6f0f).\n\u4f20\u5165\u503c\uff1a\nint val 0\u5e73\u53f0\u81ea\u5b9a\u4e49,1\u4e0a\u62c9, 2\u4e0b\u62c9\n\u8fd4\u56de\u503c\uff1a\nboolean \u4f20\u503c\u6b63\u786e\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio.setup\u7684pull\u9ed8\u8ba4\u503c\u4e3a\u4e0a\u62c9\ngpio.setDefaultPull(1)\n", "prefix": "gpio.setDefaultPull"}, "gpio.toggle": {"body": "gpio.toggle(${1:pin})", "description": "gpio.toggle(pin) - \u53d8\u6362GPIO\u811a\u8f93\u51fa\u7535\u5e73,\u4ec5\u8f93\u51fa\u6a21\u5f0f\u53ef\u7528\n\u4f20\u5165\u503c\uff1a\nint \u7ba1\u811a\u7684GPIO\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2022.05.17 \u6dfb\u52a0\n-- \u5047\u8bbeGPIO16\u4e0a\u6709LED, \u6bcf500ms\u5207\u6362\u4e00\u6b21\u5f00\u5173\ngpio.setup(16, 0)\nsys.timerLoopStart(function()\n gpio.toggle(16)\nend, 500)\n", "prefix": "gpio.toggle"}, "gpio.pulse": {"body": "gpio.pulse(${1:pin},${2:level},${3:len},${4:delay})", "description": "gpio.pulse(pin,level,len,delay) - \u5728\u540c\u4e00\u4e2aGPIO\u8f93\u51fa\u4e00\u7ec4\u8109\u51b2, \u6ce8\u610f, len\u7684\u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7\nint/string \u6570\u503c\u6216\u8005\u5b57\u7b26\u4e32.\nint len \u957f\u5ea6 \u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\nint delay \u5ef6\u8fdf,\u5f53\u524d\u65e0\u56fa\u5b9a\u65f6\u95f4\u5355\u4f4d\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u901a\u8fc7PB06\u811a\u8f93\u51fa\u8f93\u51fa8\u4e2a\u7535\u5e73\u53d8\u5316.\ngpio.pulse(pin.PB06,0xA9, 8, 0)\n", "prefix": "gpio.pulse"}, "gpio.debounce": {"body": "gpio.debounce(${1:pin},${2:ms},${3:mode})", "description": "gpio.debounce(pin, ms, mode) - \u9632\u6296\u8bbe\u7f6e, \u6839\u636e\u786c\u4ef6ticks\u8fdb\u884c\u9632\u6296\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\nint \u9632\u6296\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2, \u6700\u5927 65555 ms, \u8bbe\u7f6e\u4e3a0\u5219\u5173\u95ed\nint \u6a21\u5f0f, 0\u51b7\u5374\u6a21\u5f0f, 1\u5ef6\u65f6\u6a21\u5f0f. \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6d88\u6296\u6a21\u5f0f, \u5f53\u524d\u652f\u63012\u79cd, 2022.12.16\u5f00\u59cb\u652f\u6301mode=1\n-- 0 \u89e6\u53d1\u4e2d\u65ad\u540e,\u9a6c\u4e0a\u4e0a\u62a5\u4e00\u6b21, \u7136\u540e\u51b7\u5374N\u4e2a\u6beb\u79d2\u540e,\u91cd\u65b0\u63a5\u53d7\u4e2d\u65ad\n-- 1 \u89e6\u53d1\u4e2d\u65ad\u540e,\u5ef6\u8fdfN\u4e2a\u6beb\u79d2,\u671f\u95f4\u6ca1\u6709\u65b0\u4e2d\u65ad\u4e14\u7535\u5e73\u6ca1\u6709\u53d8\u5316,\u4e0a\u62a5\u4e00\u6b21\n\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f0-\u51b7\u5374, \u4e2d\u65ad\u540e\u9a6c\u4e0a\u4e0a\u62a5, \u4f46100ms\u5185\u53ea\u4e0a\u62a5\u4e00\u6b21\ngpio.debounce(7, 100) -- \u82e5\u82af\u7247\u652f\u6301pin\u5e93, \u53ef\u7528pin.PA7\u4ee3\u66ff\u6570\u5b577\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f1-\u5ef6\u65f6, \u4e2d\u65ad\u540e\u7b49\u5f85100ms,\u671f\u95f4\u82e5\u4fdd\u6301\u8be5\u7535\u5e73\u4e86,\u65f6\u95f4\u5230\u4e4b\u540e\u4e0a\u62a5\u4e00\u6b21\n-- \u5bf9\u5e94\u7684,\u5982\u679c\u8f93\u5165\u7684\u662f\u4e00\u4e2a 50hz\u7684\u65b9\u6ce2,\u90a3\u4e48\u4e0d\u4f1a\u89e6\u53d1\u4efb\u4f55\u4e0a\u62a5\ngpio.debounce(7, 100, 1)\n\n-- \u5173\u95ed\u9632\u6296,\u65f6\u95f4\u8bbe\u7f6e\u4e3a0\u5c31\u5173\u95ed\ngpio.debounce(7, 0)\n", "prefix": "gpio.debounce"}, "gpio.count": {"body": "gpio.count(${1:pin})", "description": "gpio.count(pin) - \u83b7\u53d6gpio\u4e2d\u65ad\u6570\u91cf\uff0c\u5e76\u6e05\u7a7a\u7d2f\u8ba1\u503c\uff0c\u7c7b\u4f3cair724\u7684\u8109\u51b2\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u4ece\u4e0a\u6b21\u83b7\u53d6\u4e2d\u65ad\u6570\u91cf\u540e\u5230\u5f53\u524d\u7684\u4e2d\u65ad\u8ba1\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"irq cnt\", gpio.count(10))\n", "prefix": "gpio.count"}, "gtfont.init": {"body": "gtfont.init(${1:spi_device})", "description": "gtfont.init(spi_device) - \u521d\u59cb\u5316\u9ad8\u901a\u5b57\u4f53\u82af\u7247\n\u4f20\u5165\u503c\uff1a\nuserdata \u4ec5\u652f\u6301spi device \u751f\u6210\u7684\u6307\u9488\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7279\u522b\u63d0\u9192: \u4f7f\u7528\u672c\u5e93\u7684\u4efb\u4f55\u4ee3\u7801, \u90fd\u9700\u8981 \u989d\u5916 \u7684 \u9ad8\u901a\u5b57\u4f53\u82af\u7247 !!\n-- \u6ca1\u6709\u989d\u5916\u82af\u7247\u662f\u8dd1\u4e0d\u4e86\u7684!!\ngtfont.init(spi_device)\n", "prefix": "gtfont.init"}, "hmeta.model": {"body": "hmeta.model()", "description": "hmeta.model() - \u83b7\u53d6\u6a21\u7ec4\u540d\u79f0\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.model"}, "hmeta.hwver": {"body": "hmeta.hwver()", "description": "hmeta.hwver() - \u83b7\u53d6\u6a21\u7ec4\u7684\u786c\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model(), hmeta.hwver())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.hwver"}, "ht1621.setup": {"body": "ht1621.setup(${1:pin_cs},${2:pin_data},${3:pin_wr},${4:cmd_com_mode},${5:cmd_rc},${6:cmd_sysen})", "description": "ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen) - \u521d\u59cb\u5316ht1621\n\u4f20\u5165\u503c\uff1a\nint \u7247\u9009\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u6570\u636e\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint WR\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u547d\u4ee4\u6a21\u5f0f, \u9ed8\u8ba4\u662f0x52\nint \u5185\u90e8RC\u632f\u8361\u5668,\u9ed8\u8ba40x30\nint \u7cfb\u7edf\u632f\u8361\u5668\u5f00,\u9ed8\u8ba40x02\n\u8fd4\u56de\u503c\uff1a\nuserdata \u8fd4\u56deht1621\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.data(seg, 0, 0xeb)\n", "prefix": "ht1621.setup"}, "ht1621.lcd": {"body": "ht1621.lcd(${1:seg},${2:onoff})", "description": "ht1621.lcd(seg, onoff) - LCD\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nboolean true\u5f00,false\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\n", "prefix": "ht1621.lcd"}, "ht1621.data": {"body": "ht1621.data(${1:seg},${2:addr},${3:sdat})", "description": "ht1621.data(seg, addr, sdat) - \u5c55\u793a\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u5730\u5740, 0-6, \u8d85\u8fc76\u65e0\u6548\nint \u6570\u636e, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\nht1621.data(seg, 0, 0xF1)\n-- \u9644\u6570\u5b570-9\u7684\u503c\u8868\n-- 0,1,2,3,4,5,6,7,8,9\n-- 0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf\n", "prefix": "ht1621.data"}, "ht1621.cmd": {"body": "ht1621.cmd(${1:seg},${2:cmd})", "description": "ht1621.cmd(seg, cmd) - \u53d1\u9001\u6307\u4ee4\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u6307\u4ee4, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5177\u4f53\u6307\u4ee4\u8bf7\u67e5\u9605\u786c\u4ef6\u624b\u518c\n", "prefix": "ht1621.cmd"}, "http.request": {"body": "http.request(${1:method},${2:url},${3:headers},${4:body},${5:opts},${6:ca_file},${7:client_ca},${8:client_key},${9:client_password})", "description": "http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, client_password) - http\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nstring \u8bf7\u6c42\u65b9\u6cd5, \u652f\u6301 GET/POST \u7b49\u5408\u6cd5\u7684HTTP\u65b9\u6cd5\nstring url\u5730\u5740, \u652f\u6301 http\u548chttps, \u652f\u6301\u57df\u540d, \u652f\u6301\u81ea\u5b9a\u4e49\u7aef\u53e3\ntabal \u8bf7\u6c42\u5934 \u53ef\u9009 \u4f8b\u5982 {[\"Content-Type\"] = \"application/x-www-form-urlencoded\"}\nstring/zbuff body \u53ef\u9009\ntable \u989d\u5916\u914d\u7f6e \u53ef\u9009 \u5305\u542b timeout:\u8d85\u65f6\u65f6\u95f4\u5355\u4f4dms \u53ef\u9009,\u9ed8\u8ba410\u5206\u949f,\u51990\u5373\u6c38\u4e45\u7b49\u5f85 dst:\u4e0b\u8f7d\u8def\u5f84,\u53ef\u9009 adapter:\u9009\u62e9\u4f7f\u7528\u7f51\u5361,\u53ef\u9009 debug:\u662f\u5426\u6253\u5f00debug\u4fe1\u606f,\u53ef\u9009,ipv6:\u662f\u5426\u4e3aipv6 \u9ed8\u8ba4\u4e0d\u662f,\u53ef\u9009 callback:\u4e0b\u8f7d\u56de\u8c03\u51fd\u6570,\u53c2\u6570 content_len:\u603b\u957f\u5ea6 body_len:\u4ee5\u4e0b\u8f7d\u957f\u5ea6 userdata \u7528\u6237\u4f20\u53c2,\u53ef\u9009 userdata:\u56de\u8c03\u81ea\u5b9a\u4e49\u4f20\u53c2 \nstring \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981\nstring \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nint code , \u670d\u52a1\u5668\u53cd\u9988\u7684\u503c>=100, \u6700\u5e38\u89c1\u7684\u662f200.\u5982\u679c\u662f\u5e95\u5c42\u9519\u8bef,\u4f8b\u5982\u8fde\u63a5\u5931\u8d25, \u8fd4\u56de\u503c\u5c0f\u4e8e0\ntabal headers \u5f53code>100\u65f6, \u4ee3\u8868\u670d\u52a1\u5668\u8fd4\u56de\u7684\u5934\u90e8\u6570\u636e \nstring/int body \u670d\u52a1\u5668\u54cd\u5e94\u7684\u5185\u5bb9\u5b57\u7b26\u4e32,\u5982\u679c\u662f\u4e0b\u8f7d\u6a21\u5f0f, \u5219\u8fd4\u56de\u6587\u4ef6\u5927\u5c0f\n\u4f8b\u5b50\uff1a\n\n--[[\ncode\u62a5\u9519\u4fe1\u606f\u5217\u8868:\n-1 HTTP_ERROR_STATE \u9519\u8bef\u7684\u72b6\u6001, \u4e00\u822c\u662f\u5e95\u5c42\u5f02\u5e38,\u8bf7\u62a5issue\n-2 HTTP_ERROR_HEADER \u9519\u8bef\u7684\u54cd\u5e94\u5934\u90e8, \u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-3 HTTP_ERROR_BODY \u9519\u8bef\u7684\u54cd\u5e94\u4f53,\u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-4 HTTP_ERROR_CONNECT \u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25, \u672a\u8054\u7f51,\u5730\u5740\u9519\u8bef,\u57df\u540d\u9519\u8bef\n-5 HTTP_ERROR_CLOSE \u63d0\u524d\u65ad\u5f00\u4e86\u8fde\u63a5, \u7f51\u7edc\u6216\u670d\u52a1\u5668\u95ee\u9898\n-6 HTTP_ERROR_RX \u63a5\u6536\u6570\u636e\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\n-7 HTTP_ERROR_DOWNLOAD \u4e0b\u8f7d\u6587\u4ef6\u8fc7\u7a0b\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\u6216\u4e0b\u8f7d\u8def\u5f84\u95ee\u9898\n-8 HTTP_ERROR_TIMEOUT \u8d85\u65f6, \u5305\u62ec\u8fde\u63a5\u8d85\u65f6,\u8bfb\u53d6\u6570\u636e\u8d85\u65f6\n-9 HTTP_ERROR_FOTA fota\u529f\u80fd\u62a5\u9519,\u901a\u5e38\u662f\u66f4\u65b0\u5305\u4e0d\u5408\u6cd5\n]]\n\n-- GET\u8bf7\u6c42\nlocal code, headers, body = http.request(\"GET\",\"http://site0.cn/api/httptest/simple/time\").wait()\nlog.info(\"http.get\", code, headers, body)\n-- POST\u8bf7\u6c42\nlocal code, headers, body = http.request(\"POST\",\"http://httpbin.com/post\", {}, \"abc=123\").wait()\nlog.info(\"http.post\", code, headers, body)\n\n-- GET\u8bf7\u6c42,\u4f46\u4e0b\u8f7d\u5230\u6587\u4ef6\nlocal code, headers, body = http.request(\"GET\",\"http://httpbin.com/\", {}, \"\", {dst=\"/data.bin\"}).wait()\nlog.info(\"http.get\", code, headers, body)\n\n-- \u81ea\u5b9a\u4e49\u8d85\u65f6\u65f6\u95f4, 5000ms\nhttp.request(\"GET\",\"http://httpbin.com/\", nil, nil, {timeout=5000}).wait()\n", "prefix": "http.request"}, "httpsrv.start": {"body": "httpsrv.start(${1:port},${2:func})", "description": "httpsrv.start(port, func) - \u542f\u52a8\u5e76\u76d1\u542c\u4e00\u4e2ahttp\u7aef\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\nfunction \u56de\u8c03\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u76d1\u542c80\u7aef\u53e3\nhttpsrv.start(80, function(client, method, uri, headers, body)\n -- method \u662f\u5b57\u7b26\u4e32, \u4f8b\u5982 GET POST PUT DELETE\n -- uri \u4e5f\u662f\u5b57\u7b26\u4e32 \u4f8b\u5982 / /api/abc\n -- headers table\u7c7b\u578b\n -- body \u5b57\u7b26\u4e32\n log.info(\"httpsrv\", method, uri, json.encode(headers), body)\n if uri == \"/led/1\" then\n LEDA(1)\n return 200, {}, \"ok\"\n elseif uri == \"/led/0\" then\n LEDA(0)\n return 200, {}, \"ok\"\n end\n -- \u8fd4\u56de\u503c\u7684\u7ea6\u5b9a code, headers, body\n -- \u82e5\u6ca1\u6709\u8fd4\u56de\u503c, \u5219\u9ed8\u8ba4 404, {} ,\"\"\n return 404, {}, \"Not Found\" .. uri\nend)\n-- \u5173\u4e8e\u9759\u6001\u6587\u4ef6\n-- \u60c5\u51b51: / , \u6620\u5c04\u4e3a /index.html\n-- \u60c5\u51b52: /abc.html , \u5148\u67e5\u627e /abc.html, \u4e0d\u5b58\u5728\u7684\u8bdd\u67e5\u627e /abc.html.gz\n-- \u82e5gz\u5b58\u5728, \u4f1a\u81ea\u52a8\u4ee5\u538b\u7f29\u6587\u4ef6\u8fdb\u884c\u54cd\u5e94, \u7edd\u5927\u90e8\u5206\u6d4f\u89c8\u5668\u652f\u6301.\n-- \u5f53\u524d\u9ed8\u8ba4\u67e5\u627e /luadb/xxx \u4e0b\u7684\u6587\u4ef6,\u6682\u4e0d\u53ef\u914d\u7f6e\n", "prefix": "httpsrv.start"}, "httpsrv.stop": {"body": "httpsrv.stop(${1:port})", "description": "httpsrv.stop(port) - \u505c\u6b62http\u670d\u52a1\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n", "prefix": "httpsrv.stop"}, "i2c.exist": {"body": "i2c.exist(${1:id})", "description": "i2c.exist(id) - i2c\u7f16\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u5c31\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5i2c1\u662f\u5426\u5b58\u5728\nif i2c.exist(1) then\n log.info(\"\u5b58\u5728 i2c1\")\nend\n", "prefix": "i2c.exist"}, "i2c.setup": {"body": "i2c.setup(${1:id},${2:speed},${3:pullup})", "description": "i2c.setup(id, speed, pullup) - i2c\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u901f\u5ea6, \u4f8b\u5982i2c.FAST\nbool \u662f\u5426\u8f6f\u4ef6\u4e0a\u62c9, \u9ed8\u8ba4\u4e0d\u5f00\u542f\uff0c\u9700\u8981\u786c\u4ef6\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5c31\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316i2c1\ni2c.setup(1, i2c.FAST) -- id\u6b63\u786e\u5c31\u4e00\u5b9a\u6210\u529f\n-- \u5982\u9700\u5224\u65adi2c id\u662f\u5426\u5408\u6cd5, \u8bf7\u4f7f\u7528 i2c.exist \u51fd\u6570\n", "prefix": "i2c.setup"}, "i2c.createSoft": {"body": "i2c.createSoft(${1:scl},${2:sda},${3:delay})", "description": "i2c.createSoft(scl,sda,delay) - \u65b0\u5efa\u4e00\u4e2a\u8f6f\u4ef6i2c\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nint i2c SCL\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint i2c SDA\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint \u6bcf\u4e2a\u64cd\u4f5c\u7684\u5ef6\u65f6, \u5355\u4f4dus, \u9ed8\u8ba45\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6I2C\u5bf9\u8c61 \u53ef\u5f53\u4f5ci2c\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\uff01\u8fd9\u4e2a\u63a5\u53e3\u662f\u8f6f\u4ef6\u6a21\u62dfi2c\uff0c\u901f\u5ea6\u53ef\u80fd\u4f1a\u6bd4\u786c\u4ef6\u7684\u6162\n-- \u4e0d\u9700\u8981\u8c03\u7528i2c.close\u63a5\u53e3\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\nlocal softI2C = i2c.createSoft(1, 2, 5)\ni2c.send(softI2C, 0x5C, string.char(0x0F, 0x2F))\n-- \u6ce8\u610f, \u7b2c3\u4e2a\u53c2\u6570\u662f 2023.06.19 \u6dfb\u52a0\u7684delay\n-- \u901a\u8fc7\u8c03\u6574delay\u53c2\u6570\u7684\u503c, \u53ef\u589e\u52a0\u6216\u964d\u4f4eI2C\u7684\u901f\u5ea6\n", "prefix": "i2c.createSoft"}, "i2c.send": {"body": "i2c.send(${1:id},${2:addr},${3:data},${4:stop})", "description": "i2c.send(id, addr, data,stop) - i2c\u53d1\u9001\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/table \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5f80i2c0\u53d1\u90011\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(0, 0x68, 0x75)\n-- \u5f80i2c1\u53d1\u90012\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(1, 0x5C, string.char(0x0F, 0x2F))\ni2c.send(1, 0x5C, {0x0F, 0x2F})\n", "prefix": "i2c.send"}, "i2c.recv": {"body": "i2c.recv(${1:id},${2:addr},${3:len})", "description": "i2c.recv(id, addr, len) - i2c\u63a5\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u63a5\u6536\u6570\u636e\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u8bfb\u53d62\u4e2a\u5b57\u8282\u7684\u6570\u636e\nlocal data = i2c.recv(1, 0x5C, 2)\n", "prefix": "i2c.recv"}, "i2c.writeReg": {"body": "i2c.writeReg(${1:id},${2:addr},${3:reg},${4:data},${5:stop})", "description": "i2c.writeReg(id, addr, reg, data,stop) - i2c\u5199\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u5199\u51652\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.writeReg(1, 0x5C, 0x01, string.char(0x00, 0xF2))\n", "prefix": "i2c.writeReg"}, "i2c.readReg": {"body": "i2c.readReg(${1:id},${2:addr},${3:reg},${4:len})", "description": "i2c.readReg(id, addr, reg, len) - i2c\u8bfb\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u5f85\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u8bfb\u51fa2\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.readReg(1, 0x5C, 0x01, 2)\n", "prefix": "i2c.readReg"}, "i2c.close": {"body": "i2c.close(${1:id})", "description": "i2c.close(id) - \u5173\u95edi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edi2c1\ni2c.close(1)\n", "prefix": "i2c.close"}, "i2c.readDHT12": {"body": "i2c.readDHT12(${1:id})", "description": "i2c.readDHT12(id) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint DHT12\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x5C\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6DHT12\ni2c.setup(0)\nlocal re, H, T = i2c.readDHT12(0)\nif re then\n log.info(\"dht12\", H, T)\nend\n", "prefix": "i2c.readDHT12"}, "i2c.readSHT30": {"body": "i2c.readSHT30(${1:id},${2:addr})", "description": "i2c.readSHT30(id,addr) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT30\u7684\u6e29\u6e7f\u5ea6\u6570\u636e(\u7531\"\u597d\u5947\u661f\"\u8d21\u732e)\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u8bbe\u5907addr,SHT30\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x44 bit7\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6SHT30\ni2c.setup(0)\nlocal re, H, T = i2c.readSHT30(0)\nif re then\n log.info(\"sht30\", H, T)\nend\n", "prefix": "i2c.readSHT30"}, "i2c.transfer": {"body": "i2c.transfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen})", "description": "i2c.transfer(id, addr, txBuff, rxBuff, rxLen) - i2c\u901a\u7528\u4f20\u8f93\uff0c\u5305\u62ec\u53d1\u9001N\u5b57\u8282\uff0c\u53d1\u9001N\u5b57\u8282+\u63a5\u6536N\u5b57\u8282\uff0c\u63a5\u6536N\u5b57\u8282\u4e09\u79cd\u529f\u80fd\uff0c\u5728\u53d1\u9001\u8f6c\u63a5\u6536\u8fc7\u7a0b\u4e2d\u53d1\u9001reStart\u4fe1\u53f7,\u89e3\u51b3\u7c7b\u4f3cmlx90614\u5fc5\u987b\u5e26restart\u4fe1\u53f7\uff0c\u4f46\u662f\u53c8\u4e0d\u80fd\u7528i2c.send\u6765\u63a7\u5236\u7684\uff0c\u6bd4\u5982air105\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u53d1\u9001\u6570\u636e\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff \u5982\u679c\u4e0d\u7528zbuff\uff0c\u5219\u63a5\u6536\u6570\u636e\u5c06\u5728return\u8fd4\u56de\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u53d1\u9001\u662f\u5426\u6210\u529f\nstring or nil \u5982\u679c\u53c2\u65705\u662finterger\uff0c\u5219\u8fd4\u56de\u63a5\u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, rxbuff, 1)\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, nil, 0) --\u53ea\u53d1\u9001txbuff\u91cc\u7684\u6570\u636e\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662f\u5199\u5bc4\u5b58\u5668\u4e86\uff0c\u8fd9\u91cc\u5bc4\u5b58\u5668\u5730\u5740\u548c\u503c\u90fd\u653e\u5728\u4e86txbuff\u91cc\nlocal result, _ = i2c.transfer(0, 0x11, \"\\x01\\x02\\x03\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c0x03\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u662feeprom\uff0c\u5c31\u662f\u5f800x01\u7684\u5730\u5740\u519902\u548c03\uff0c\u6216\u8005\u5f800x0102\u7684\u5730\u5740\u519903\uff0c\u770b\u5177\u4f53\u82af\u7247\u4e86\nlocal result, rxdata = i2c.transfer(0, 0x11, \"\\x01\\x02\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662feeprom\nlocal result, rxdata = i2c.transfer(0, 0x11, 0x00, nil, 1) --\u53d1\u90010x00\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5404\u79cd\u4f20\u611f\u5668\n", "prefix": "i2c.transfer"}, "i2c.xfer": {"body": "i2c.xfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen},${6:transfer_done_topic},${7:timeout})", "description": "i2c.xfer(id, addr, txBuff, rxBuff, rxLen, transfer_done_topic, timeout) - i2c\u975e\u963b\u585e\u901a\u7528\u4f20\u8f93\uff0c\u7c7b\u4f3ctransfer\uff0c\u4f46\u662f\u4e0d\u4f1a\u7b49\u5230I2C\u4f20\u8f93\u5b8c\u6210\u624d\u8fd4\u56de\uff0c\u8c03\u7528\u672c\u51fd\u6570\u4f1a\u7acb\u523b\u8fd4\u56de\uff0cI2C\u4f20\u8f93\u5b8c\u6210\u540e\uff0c\u901a\u8fc7\u6d88\u606f\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\uff0c\u957f\u5ea6\u4e3azbuff.used\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u5ffd\u7565\u540e\u9762\u53c2\u6570\uff0c \u4e0d\u63a5\u6536\u6570\u636e\u3002\u63a5\u6536\u7684\u6570\u636e\u4f1a\u653e\u5728zbuff.addr\u5f00\u59cb\u7684\u4f4d\u7f6e\uff0c\u4f1a\u8986\u76d6\u6389\u4e4b\u524d\u7684\u6570\u636e\uff0c\u6ce8\u610fzhuff\u7684\u9884\u7559\u7a7a\u95f4\u8981\u8db3\u591f\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684\u6d88\u606f\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u586bnil\uff0c\u5219\u4e3a100ms\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = i2c.xfer(0, 0x11, txbuff, rxbuff, 1, \"I2CDONE\") if result then result, i2c_id, succ, error_code = sys.waitUntil(\"I2CDONE\") end if not result or not succ then log.info(\"i2c fail, error code\", error_code) else log.info(\"i2c ok\") end\n\n", "prefix": "i2c.xfer"}, "i2c.scan": {"body": "i2c.scan(${1:id},${2:speed})", "description": "i2c.scan(id,speed) - \u626b\u63cfi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u901f\u5ea6, \u53ef\u9009i2c.SLOW i2c.FAST i2c.PLUS i2c.HSMODE \u9ed8\u8ba4\u4e3ai2c.SLOW,\u5982\u63a2\u6d4b\u4e0d\u5230\u5219\u4fee\u6539\u6b64\u9879\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.07.04\u6dfb\u52a0\n-- \u8fd9\u4e2a\u51fd\u6570\u7684\u4e3b\u8981\u76ee\u6807\u662f\u4e3a\u4e86\u5728\u5f00\u53d1\u671f\u626b\u63cfi2c\u8bbe\u5907\n-- \u6709\u4e9bBSP\u5728\u6307\u5b9aaddr\u65e0\u54cd\u5e94\u65f6\u4f1a\u8f93\u51fa\u65e5\u5fd7,\u5bfc\u81f4\u8f93\u51fa\u4f1a\u88ab\u6253\u4e71\ni2c.scan()\n", "prefix": "i2c.scan"}, "i2s.setup": {"body": "i2s.setup(${1:id},${2:mode},${3:sample},${4:bitw},${5:channel},${6:format},${7:framebit})", "description": "i2s.setup(id, mode, sample, bitw, channel, format, framebit) - \u521d\u59cb\u5316i2s\n\u4f20\u5165\u503c\uff1a\nint i2s\u901a\u9053\u53f7,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387,\u9ed8\u8ba444100. \u53ef\u9009\nint \u6570\u636e\u4f4d\u6570,\u9ed8\u8ba416, \u53ef\u4ee5\u662f8\u7684\u500d\u6570\nint \u58f0\u9053, 0 \u5de6\u58f0\u9053, 1 \u53f3\u58f0\u9053, 2 \u7acb\u4f53\u58f0. \u53ef\u9009\nint \u683c\u5f0f, \u53ef\u9009MODE_I2S, MODE_LSB, MODE_MSB\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf, \u53ef\u900916\u548c32\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4ee5\u9ed8\u8ba4\u53c2\u6570\u521d\u59cb\u5316i2s\ni2s.setup(0)\n-- \u4ee5\u8be6\u7ec6\u53c2\u6570\u521d\u59cb\u5316i2s, \u793a\u4f8b\u4e3a\u9ed8\u8ba4\u503c\ni2s.setup(0, 0, 44100, 16, 0, 0, 16)\n", "prefix": "i2s.setup"}, "i2s.send": {"body": "i2s.send(${1:id},${2:data},${3:len})", "description": "i2s.send(id, data, len) - \u53d1\u9001i2s\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nstring \u6570\u636e, \u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216zbuff\nint \u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282, \u5b57\u7b26\u4e32\u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5168\u957f, zbuff\u9ed8\u8ba4\u4e3a\u6307\u9488\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u4f9b\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nlocal f = io.open(\"/luadb/abc.wav\")\nwhile 1 do\n local data = f:read(4096)\n if not data or #data == 0 then\n break\n end\n i2s.send(0, data)\n sys.wait(100)\nend\n", "prefix": "i2s.send"}, "i2s.recv": {"body": "i2s.recv(${1:id},${2:buffer},${3:len})", "description": "i2s.recv(id, buffer, len) - \u63a5\u6536i2s\u6570\u636e\uff0c\u6ce8\u610f\u5728\u6570\u636e\u5728\u56de\u8c03\u65f6\u5df2\u7ecf\u5b58\u653e\u5728zbuff\u91cc\uff0c\u76ee\u524d\u53ea\u6709air780e\u7cfb\u5217\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nzbuff \u6570\u636e\u7f13\u5b58\u533a\nint \u5355\u6b21\u8fd4\u56de\u7684\u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282,\u5fc5\u987b\u4e0e\u4f20\u5165\u7684zbuff\u7684\u5927\u5c0f\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlocal buffer = zbuff.create(3200)\nlocal succ = i2s.recv(0, buffer, 3200);\n", "prefix": "i2s.recv"}, "i2s.close": {"body": "i2s.close(${1:id})", "description": "i2s.close(id) - \u5173\u95edi2s\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.close(0)\n", "prefix": "i2s.close"}, "i2s.on": {"body": "i2s.on(${1:id},${2:func})", "description": "i2s.on(id, func) - \u6ce8\u518cI2S\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.on(0, function(id, buff)\n if buff then\n log.info(\"i2s get data in zbuff\")\n else\n log.info(\"i2s tx one block done\")\n end\nend)\n", "prefix": "i2s.on"}, "i2s.txStat": {"body": "i2s.txStat(${1:id})", "description": "i2s.txStat(id) - \u83b7\u53d6i2s\u7684\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u603b\u5927\u5c0f\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u5269\u4f59\u5f85\u53d1\u9001\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u53d1\u9001\u7f13\u51b2\u533a\u7684\u72b6\u6001, \u4ece\u800c\u5224\u65ad\u662f\u5426\u9700\u8981\u7ee7\u7eed\u4f20\u5165\u97f3\u9891\u6570\u636e\nlocal max, remain = i2s.txStat(0)\nlog.info(\"i2s\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\", max, remain)\n", "prefix": "i2s.txStat"}, "i2s.getPara": {"body": "i2s.getPara(${1:id})", "description": "i2s.getPara(id) - \u83b7\u53d6I2S\u53c2\u6570\uff0c\u53c2\u6570\u5177\u4f53\u53c2\u8003setup\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5728\u5de5\u4f5c\u72b6\u6001 true\u662f\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387\nint \u6570\u636e\u4f4d\u6570\nint \u58f0\u9053\nint \u683c\u5f0f\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf\n", "prefix": "i2s.getPara"}, "iconv.open": {"body": "iconv.open(${1:tocode},${2:fromcode})", "description": "iconv.open(tocode, fromcode) - \u6253\u5f00\u76f8\u5e94\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring tocode$\u76ee\u6807\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nstring fromcode$\u6e90\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nreturn table$cd$\u7f16\u7801\u8f6c\u6362\u51fd\u6570\u7684\u8f6c\u6362\u53e5\u67c4$ \n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\n", "prefix": "iconv.open"}, "iconv:iconv": {"body": "iconv:iconv(${1:inbuf})", "description": "iconv:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u91ca\u4e49\uff1a\u5f85\u8f6c\u6362\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nnumber \u91ca\u4e49\uff1a\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c
\u53d6\u503c\uff1a0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local iconv = iconv.open(\"utf8\", \"ucs2be\")\n return iconv:iconv(ucs2s)\nend\n", "prefix": "iconv:iconv"}, "cd:iconv": {"body": "cd:iconv(${1:inbuf})", "description": "cd:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring inbuf$\u8f93\u5165\u5b57\u7b26\u4e32$\u4f8b\u5982:ucs2s \nreturn number$result$\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c$0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local cd = iconv.open(\"utf8\", \"ucs2be\")\n return cd:iconv(ucs2s)\nend\n", "prefix": "cd:iconv"}, "iconv.close": {"body": "iconv.close(${1:cd})", "description": "iconv.close(cd) - \u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring cd$iconv.open\u8fd4\u56de\u7684\u53e5\u67c4$ \nreturn \n\u4f8b\u5b50\uff1a\n--\u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\niconv.close(cd)\n", "prefix": "iconv.close"}, "io.exists": {"body": "io.exists(${1:path})", "description": "io.exists(path) - \u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"io\", \"file exists\", io.exists(\"/boottime\"))\n", "prefix": "io.exists"}, "io.fileSize": {"body": "io.fileSize(${1:path})", "description": "io.fileSize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal fsize = io.fileSize(\"/bootime\")\nif fsize and fsize > 1024 then\n log.info(\"io\", \"file size\", fsize)\nend\n", "prefix": "io.fileSize"}, "io.readFile": {"body": "io.readFile(${1:path},${2:mode},${3:offset},${4:len})", "description": "io.readFile(path, mode, offset, len) - \u8bfb\u53d6\u6574\u4e2a\u6587\u4ef6,\u8bf7\u6ce8\u610f\u5185\u5b58\u6d88\u8017\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u8bfb\u53d6\u6a21\u5f0f, \u9ed8\u8ba4 \"rb\"\nint \u8d77\u59cb\u4f4d\u7f6e,\u9ed8\u8ba40\nint \u8bfb\u53d6\u957f\u5ea6,\u9ed8\u8ba4\u6574\u4e2a\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nstring \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal data = io.readFile(\"/bootime\")\n-- \u6ce8\u610f: offset\u548clen\u53c2\u6570\u662f 2023.6.6\u6dfb\u52a0\u7684\n-- \u8bfb\u53d6abc.txt, \u5148\u8df3\u8fc7128\u5b57\u8282, \u7136\u540e\u8bfb\u53d6512\u5b57\u8282\u6570\u636e\nlocal data = io.readFile(\"/abc.txt\", \"rb\", 128, 512)\n", "prefix": "io.readFile"}, "io.writeFile": {"body": "io.writeFile(${1:path},${2:data})", "description": "io.writeFile(path, data) - \u5c06\u6570\u636e\u5199\u5165\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nio.writeFile(\"/bootime\", \"1\")\n", "prefix": "io.writeFile"}, "io.fill": {"body": "io.fill(${1:buff},${2:offset},${3:len})", "description": "io.fill(buff, offset, len) - \u8bfb\u53d6\u6587\u4ef6\u5e76\u586b\u5145\u5230zbuff\u5185,\u4f46\u4e0d\u79fb\u52a8\u6307\u9488\u4f4d\u7f6e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f53\nint \u5199\u5165\u7684\u4f4d\u7f6e,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662fzbuff\u7684len\u51cf\u53bboffset\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u8fd4\u56de\u5b9e\u9645\u8bfb\u53d6\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u5c0f\u4e8e0\u4e5f\u8bf4\u660e\u662f\u8bfb\u53d6\u5931\u8d25\u4e86\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(1024)\nlocal f = io.open(\"/sd/test.txt\")\nif f then\n f:fill(buff)\nend\n", "prefix": "io.fill"}, "io.mkfs": {"body": "io.mkfs(${1:path})", "description": "io.mkfs(path) - \u683c\u5f0f\u5316\u6587\u4ef6\u7cfb\u7edf,\u9700\u6307\u5b9a\u6302\u8f7d\u70b9\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkfs(\"/sd\")\nlog.info(\"fs\", \"mkfs\", ret, errio)\n", "prefix": "io.mkfs"}, "io.mkdir": {"body": "io.mkdir(${1:path})", "description": "io.mkdir(path) - \u521b\u5efa\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5efa\u7acb\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkdir(\"/data/\")\nlog.info(\"fs\", \"mkdir\", ret, errio)\n", "prefix": "io.mkdir"}, "io.rmdir": {"body": "io.rmdir(${1:path})", "description": "io.rmdir(path) - \u5220\u9664\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u79fb\u9664\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.rmdir(\"/data/\")\nlog.info(\"fs\", \"rmdir\", ret, errio)\n", "prefix": "io.rmdir"}, "io.lsdir": {"body": "io.lsdir(${1:path},${2:len},${3:offset})", "description": "io.lsdir(path, len, offset) - \u5217\u51fa\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u679a\u4e3e\u7684\u76ee\u5f55\u8def\u5f84\nint \u6700\u5927\u957f\u5ea6, \u9ed8\u8ba410, \u6700\u9ad850\nint \u504f\u79fb\u91cf, \u9ed8\u8ba40, \u5f53\u76ee\u5f55\u6587\u4ef6\u5f88\u591a\u65f6\u5206\u9875\u67e5\u8be2\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, data = io.lsdir(\"/data/\", 10, 0)\nif ret then\n log.info(\"fs\", \"lsdir\", json.encode(data))\nelse\n log.info(\"fs\", \"lsdir\", \"fail\", ret, data)\nend\n", "prefix": "io.lsdir"}, "io.lsmount": {"body": "io.lsmount()", "description": "io.lsmount() - \u5217\u51fa\u6240\u6709\u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\ntable \u6302\u8f7d\u70b9\u5217\u8868\n\u4f8b\u5b50\uff1a\nlocal data = io.lsmount()\nlog.info(\"fs\", \"lsmount\", json.encode(data))\n", "prefix": "io.lsmount"}, "ioqueue.init": {"body": "ioqueue.init(${1:hwtimer_id},${2:cmd_cnt},${3:repeat_cnt})", "description": "ioqueue.init(hwtimer_id,cmd_cnt,repeat_cnt) - \u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\uff0c\u9ed8\u8ba4\u75280\uff0c\u6839\u636e\u5b9e\u9645MCU\u786e\u5b9a\uff0cair105\u4e3a0~5\uff0c\u4e0epwm\u5171\u7528\uff0c\u540c\u4e00\u4e2a\u901a\u9053\u53f7\u4e0d\u80fd\u540c\u65f6\u4e3apwm\u548cioqueue\nint \u4e00\u4e2a\u5b8c\u6574\u5468\u671f\u9700\u8981\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u6bd4\u5b9e\u9645\u7684\u591a\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f1\uff0c\u5982\u679c\u51990\u5219\u8868\u793a\u65e0\u9650\u6b21\u6570\u5faa\u73af\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.init(0,10,5) --\u4ee5timer0\u4e3a\u65f6\u949f\u6e90\u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\uff0c\u670910\u4e2a\u6709\u6548\u547d\u4ee4\uff0c\u5faa\u73af5\u6b21\n", "prefix": "ioqueue.init"}, "ioqueue.setdelay": {"body": "ioqueue.setdelay(${1:hwtimer_id},${2:time_us},${3:time_tick},${4:continue})", "description": "ioqueue.setdelay(hwtimer_id,time_us,time_tick,continue) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u5ef6\u65f6\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint \u5ef6\u65f6\u65f6\u95f4,0~65535us\nint \u5ef6\u65f6\u5fae\u8c03\u65f6\u95f4,0~255tick,\u603b\u7684\u5ef6\u65f6\u65f6\u95f4\u662ftime_us * 1us_tick + time_tick\nboolean \u662f\u5426\u8fde\u7eed\u662f\u8fde\u7eed\u5ef6\u65f6\uff0c\u9ed8\u8ba4\u5426\uff0c\u5982\u679c\u662f\uff0c\u5b9a\u65f6\u5668\u5728\u65f6\u95f4\u5230\u540e\u4e0d\u4f1a\u505c\u6b62\u800c\u662f\u91cd\u65b0\u8ba1\u65f6\uff0c\n", "prefix": "ioqueue.setdelay"}, "ioqueue.delay": {"body": "ioqueue.delay(${1:hwtimer_id})", "description": "ioqueue.delay(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u4e00\u6b21\u91cd\u590d\u5ef6\u65f6\uff0c\u5728\u524d\u9762\u5fc5\u987b\u6709setdelay\u4e14\u662f\u8fde\u7eed\u5ef6\u65f6\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setdelay(0,9,15,true) --\u5ef6\u65f69us+15\u4e2atick,\u5728\u4e4b\u540e\u9047\u5230delay\u547d\u4ee4\u65f6\uff0c\u4f1a\u5ef6\u65f69us+15\u4e2atick\nioqueue.delay(0)\n", "prefix": "ioqueue.delay"}, "ioqueue.setgpio": {"body": "ioqueue.setgpio(${1:hwtimer_id},${2:pin},${3:is_input},${4:pull_mode},${5:init_level})", "description": "ioqueue.setgpio(hwtimer_id,pin,is_input,pull_mode,init_level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6egpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nboolean \u662f\u5426\u662f\u8f93\u5165\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u521d\u59cb\u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setgpio(0,pin.PB01,true,gpio.PULLUP,0) --PB01\u8bbe\u7f6e\u6210\u4e0a\u62c9\u8f93\u5165\nioqueue.setgpio(0,pin.PB01,false,0,1)--PB01\u8bbe\u7f6e\u6210\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u8f93\u51fa\u9ad8\u7535\u5e73\n", "prefix": "ioqueue.setgpio"}, "ioqueue.input": {"body": "ioqueue.input(${1:hwtimer_id},${2:pin})", "description": "ioqueue.input(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bfb\u53d6gpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.input(0,pin.PB01)\n\n", "prefix": "ioqueue.input"}, "ioqueue.output": {"body": "ioqueue.output(${1:hwtimer_id},${2:pin},${3:level})", "description": "ioqueue.output(hwtimer_id,pin,level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8f93\u51faGPIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.output(0,pin.PB01,0)\n", "prefix": "ioqueue.output"}, "ioqueue.set_cap": {"body": "ioqueue.set_cap(${1:hwtimer_id},${2:pin},${3:pull_mode},${4:irq_mode},${5:max_tick})", "description": "ioqueue.set_cap(hwtimer_id,pin,pull_mode,irq_mode,max_tick) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6e\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nint \u5b9a\u65f6\u5668\u6700\u5927\u8ba1\u65f6\u65f6\u95f4 \u8003\u8651\u5230lua\u662fint\u7c7b\u578b\uff0c\u6700\u5c0f0x10000, \u6700\u5927\u503c\u4e3a0x7fffffff\uff0c\u9ed8\u8ba4\u4e3a\u6700\u5927\u503c\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setcap(0,pin.PB01,gpio.PULLUP,gpio.FALLING,48000000)\n", "prefix": "ioqueue.set_cap"}, "ioqueue.capture": {"body": "ioqueue.capture(${1:hwtimer_id})", "description": "ioqueue.capture(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u6355\u83b7\u4e00\u6b21IO\u72b6\u6001\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capture(0)\n", "prefix": "ioqueue.capture"}, "ioqueue.capend": {"body": "ioqueue.capend(${1:hwtimer_id},${2:pin})", "description": "ioqueue.capend(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u7ed3\u675f\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capend(0,pin.PB01)\n", "prefix": "ioqueue.capend"}, "ioqueue.get": {"body": "ioqueue.get(${1:hwtimer_id},${2:input_buff},${3:capture_buff})", "description": "ioqueue.get(hwtimer_id, input_buff, capture_buff) - * \u83b7\u53d6io\u64cd\u4f5c\u961f\u5217\u4e2d\u8f93\u5165\u548c\u6355\u83b7\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nzbuff \u5b58\u653eIO\u8f93\u5165\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level \u5f62\u5f0f\u5b58\u653e\u6570\u636e\nzbuff \u5b58\u653eIO\u6355\u83b7\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level + 4byte tick\u5f62\u5f0f\u5b58\u653e\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u8f93\u5165\u6570\u636e\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u6355\u83b7\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal input_cnt, capture_cnt = ioqueue.get(0, input_buff, capture_buff)\n", "prefix": "ioqueue.get"}, "ioqueue.start": {"body": "ioqueue.start(${1:hwtimer_id})", "description": "ioqueue.start(hwtimer_id) - \u542f\u52a8io\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.start(0)\n", "prefix": "ioqueue.start"}, "ioqueue.stop": {"body": "ioqueue.stop(${1:hwtimer_id})", "description": "ioqueue.stop(hwtimer_id) - \u505c\u6b62io\u64cd\u4f5c\u961f\u5217\uff0c\u53ef\u4ee5\u901a\u8fc7start\u4ece\u5934\u5f00\u59cb\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5df2\u7ecf\u5faa\u73af\u7684\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u8868\u793a\u4e00\u6b21\u5faa\u73af\u90fd\u6ca1\u6709\u5b8c\u6210\nint \u8fd4\u56de\u5355\u6b21\u5faa\u73af\u4e2d\u5df2\u7ecf\u6267\u884c\u7684cmd\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u53ef\u80fd\u662f\u4e00\u6b21\u5faa\u73af\u521a\u521a\u7ed3\u675f\n\u4f8b\u5b50\uff1a\nioqueue.stop(0)\n", "prefix": "ioqueue.stop"}, "ioqueue.release": {"body": "ioqueue.release(${1:hwtimer_id})", "description": "ioqueue.release(hwtimer_id) - \u91ca\u653eio\u64cd\u4f5c\u961f\u5217\u7684\u8d44\u6e90\uff0c\u4e0b\u6b21\u4f7f\u7528\u5fc5\u987b\u91cd\u65b0init\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.release"}, "ioqueue.clear": {"body": "ioqueue.clear(${1:hwtimer_id})", "description": "ioqueue.clear(hwtimer_id) - \u6e05\u7a7aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.clear"}, "ioqueue.done": {"body": "ioqueue.done(${1:hwtimer_id})", "description": "ioqueue.done(hwtimer_id) - \u68c0\u6d4bio\u64cd\u4f5c\u961f\u5217\u662f\u5426\u5df2\u7ecf\u6267\u884c\u5b8c\u6210\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u961f\u5217\u662f\u5426\u6267\u884c\u5b8c\u6210\uff0c\n\u4f8b\u5b50\uff1a\nlocal result = ioqueue.done(0)\n", "prefix": "ioqueue.done"}, "ioqueue.exti": {"body": "ioqueue.exti(${1:pin},${2:pull_mode},${3:irq_mode},${4:onoff})", "description": "ioqueue.exti(pin,pull_mode,irq_mode,onoff) - \u542f\u52a8/\u505c\u6b62\u4e00\u4e2a\u5e26\u7cfb\u7edftick\u8fd4\u56de\u7684\u5916\u90e8\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nboolean \u5f00\u5173\uff0c\u9ed8\u8ba4\u662ffalse\u5173\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.exti(pin.PB01, gpio.PULLUP, gpio.BOTH, true)\nioqueue.exti(pin.PB01)\n", "prefix": "ioqueue.exti"}, "iotauth.aliyun": {"body": "iotauth.aliyun(${1:product_key},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp) - \u963f\u91cc\u4e91\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring product_key\nstring device_name\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"hmacmd5\" \"hmacsha1\" \"hmacsha256\" \u53ef\u9009,\u9ed8\u8ba4\"hmacmd5\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nbool istls \u662f\u5426TLS\u76f4\u8fde true:TLS\u76f4\u8fde false:TCP\u76f4\u8fde\u6a21\u5f0f \u9ed8\u8ba4TCP\u76f4\u8fde\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.aliyun(\"123456789\",\"abcdefg\",\"Y877Bgo8X5owd3lcB5wWDjryNPoB\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.aliyun"}, "iotauth.onenet": {"body": "iotauth.onenet(${1:produt_id},${2:device_name},${3:key},${4:method},${5:cur_timestamp},${6:version})", "description": "iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version) - \u4e2d\u56fd\u79fb\u52a8\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring produt_id \u4ea7\u54c1id\nstring device_name \u8bbe\u5907\u540d\u79f0\nstring key \u8bbe\u5907\u5bc6\u94a5\u6216\u8005\u9879\u76ee\u7684acess_key\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"md5\" \"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"md5\"\nnumber \u65f6\u95f4\u6233, \u4e0d\u7528\u586b\nstring version \u53ef\u9009 \u9ed8\u8ba4\"2018-10-31\"\nstring \u5f53key\u662faccess_key\u65f6, \u586b \"products/\" .. product_id . \u672c\u53c2\u6570\u4e8e2024.1.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\n-- OneNet\u5e73\u53f0\u5b98\u7f51: https://open.iot.10086.cn/\n-- OneNet\u6709\u591a\u79cd\u7248\u672c, \u6ce8\u610f\u533a\u5206, \u4e00\u822c\u6765\u8bf4produt_id\u7eaf\u6570\u5b57\u5c31\u662f\u8001\u7248\u672c, \u5426\u5219\u5c31\u662f\u65b0\u7248\u672c\n\n-- \u65b0\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u82f1\u6587\u5b57\u6bcd\u5b57\u7b26\u4e32\n-- \u5bf9\u5e94demo/onenet/studio\nlocal produt_id = \"Ck2AF9QD2K\"\nlocal device_name = \"test\"\nlocal device_key = \"KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, device_key)\nlog.info(\"onenet.new\", client_id,user_name,password)\n\n-- \u65e7\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u6570\u5b57\u5b57\u7b26\u4e32. 2024.1.29\u65b0\u589e\n-- \u5bf9\u5e94demo/onenet/old_mqtt\nlocal produt_id = \"12342334\"\nlocal device_name = \"test\"\nlocal access_key = \"adfasdfadsfadsf=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, access_key, nil, nil, nil, \"products/\" .. produt_id)\nlog.info(\"onenet.old\", client_id,user_name,password)\n\n", "prefix": "iotauth.onenet"}, "iotauth.iotda": {"body": "iotauth.iotda(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.iotda(device_id,device_secret,cur_timestamp) - \u534e\u4e3a\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.iotda(\"6203cc94c7fb24029b110408_88888888\",\"123456789\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.iotda"}, "iotauth.qcloud": {"body": "iotauth.qcloud(${1:product_id},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp},${6:sdk_appid})", "description": "iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid) - \u817e\u8baf\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring \u4ea7\u54c1id,\u521b\u5efa\u9879\u76ee\u540e\u53ef\u4ee5\u67e5\u770b\u5230,\u7c7b\u4f3c\u4e8eLD8S5J1L07\nstring \u8bbe\u5907\u540d\u79f0,\u4f8b\u5982\u8bbe\u5907\u7684imei\u53f7\nstring \u8bbe\u5907\u5bc6\u94a5,\u521b\u5efa\u8bbe\u5907\u540e,\u67e5\u770b\u8bbe\u5907\u8be6\u60c5\u53ef\u5f97\u5230\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"sha256\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nstring sdk_appid \u53ef\u9009 \u9ed8\u8ba4\u4e3a\"12010126\"\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.qcloud(\"LD8S5J1L07\",\"test\",\"acyv3QDJrRa0fW5UE58KnQ==\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.qcloud"}, "iotauth.tuya": {"body": "iotauth.tuya(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.tuya(device_id,device_secret,cur_timestamp) - \u6d82\u9e26\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba47258089600(2200-01-01 0:0:0)\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.tuya(\"6c95875d0f5ba69607nzfl\",\"fb803786602df760\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.tuya"}, "iotauth.baidu": {"body": "iotauth.baidu(${1:iot_core_id},${2:device_key},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp) - \u767e\u5ea6\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring iot_core_id\nstring device_key\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"MD5\" \"SHA256\" \u53ef\u9009,\u9ed8\u8ba4\"MD5\"\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.baidu(\"abcd123\",\"mydevice\",\"ImSeCrEt0I1M2jkl\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.baidu"}, "ir.sendNEC": {"body": "ir.sendNEC(${1:pin},${2:addr},${3:cmd},${4:repeat},${5:disablePWM})", "description": "ir.sendNEC(pin, addr, cmd, repeat, disablePWM) - \u53d1\u9001NEC\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u4f7f\u7528\u7684GPIO\u5f15\u811a\u7f16\u53f7\nint \u7528\u6237\u7801\uff08\u5927\u4e8e0xff\u5219\u91c7\u7528Extended NEC\u6a21\u5f0f\uff09\nint \u6570\u636e\u7801\nint \u53ef\u9009\uff0c\u5f15\u5bfc\u7801\u53d1\u9001\u6b21\u6570\uff08110ms\u4e00\u6b21\uff09\uff0c\u9ed8\u8ba40\u6b21\nbool \u53ef\u9009\uff0c\u662f\u5426\u7981\u6b62\u76f4\u63a5\u53d1\u9001pwm\u6ce2\uff0c\u9ed8\u8ba4false\n\u4f8b\u5b50\uff1a\n--\u76f4\u63a5\u53d1\nir.sendNEC(0, 0x11, 0x22)\n--\u5916\u63a5\u4e8638K\u7684PWM\u8f7d\u6ce2\uff0c\u53ea\u63a7\u5236\u7535\u5e73\nir.sendNEC(0, 0x11, 0x22,0,true)\n", "prefix": "ir.sendNEC"}, "json.encode": {"body": "json.encode(${1:obj},${2:t})", "description": "json.encode(obj,t) - \u5c06\u5bf9\u8c61\u5e8f\u5217\u5316\u4e3ajson\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nobj \u9700\u8981\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\nstring \u6d6e\u70b9\u6570\u7cbe\u5ea6\u548c\u6a21\u5f0f,\u8fd9\u9879\u4e0d\u5b58\u5728\u7684\u65f6\u5019,\u4e3a\u9ed8\u8ba4\u503c\"7f\",\u6570\u5b57\u53ea\u652f\u6301\"0~14\",\u6a21\u5f0f\u53ea\u652f\u6301\"f/g\"\n\u8fd4\u56de\u503c\uff1a\nstring \u5e8f\u5217\u5316\u540e\u7684json\u5b57\u7b26\u4e32, \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nstring \u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.encode(obj)-->\u6d6e\u70b9\u6570\u7528%.7g\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\njson.encode(obj,\"12f\")-->\u6d6e\u70b9\u6570\u7528%.12f\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\n\n-- 2024.1.9 \u8d77, \u9ed8\u8ba4\u4f7f\u75287f\u683c\u5f0f\u5316\u6d6e\u70b9\u6570\n-- \u4e4b\u524d\u7684\u7248\u672c\u4f7f\u7528 7g\u683c\u5f0f\u5316\u6d6e\u52a8\u6570\n", "prefix": "json.encode"}, "json.decode": {"body": "json.decode(${1:str})", "description": "json.decode(str) - \u5c06\u5b57\u7b26\u4e32\u53cd\u5e8f\u5217\u5316\u4e3a\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u53cd\u5e8f\u5217\u5316\u7684json\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nobj \u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61(\u901a\u5e38\u662ftable), \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nresult \u6210\u529f\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\nerr \u53cd\u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.decode(\"[1,2,3,4,5,6]\")\n", "prefix": "json.decode"}, "keyboard.init": {"body": "keyboard.init(${1:port},${2:conf},${3:map},${4:debounce})", "description": "keyboard.init(port, conf, map, debounce) - \u521d\u59cb\u5316\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\nint \u542f\u7528\u7684keyboard\u7ba1\u811a\u63a9\u7801, \u4f8b\u5982\u4f7f\u7528keyboard0~9, \u5219\u63a9\u7801\u4e3a 0x1FF, \u82e5\u4f7f\u7528 0~3 \u5219 0xF\nint keyboard\u7ba1\u811a\u65b9\u5411\u6620\u5c04, \u5176\u4e2d\u8f93\u5165\u4e3a0,\u8f93\u51fa\u4e3a1, \u6309\u4f4d\u8bbe\u7f6e. \u4f8b\u5982 keyboard0~3\u4f5c\u4e3a\u8f93\u5165, keyboard4~7\u4e3a\u8f93\u5165, \u5219 0xF0\nint \u6d88\u6296\u914d\u7f6e,\u9884\u7559,\u53ef\u4ee5\u4e0d\u586b\n\u4f8b\u5b50\uff1a\n-- \u505a\u4e00\u4e2a 4*4 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~7, \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~7, \u5bf9\u5e94conf\u4e3a 0xFF\n-- \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa, \u5bf9\u5e94map \u4e3a 0xF0\nkeyboard.init(0, 0xFF, 0xF0)\n\n-- \u505a\u4e00\u4e2a 2*3 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~4, \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~4, \u4e8c\u8fdb\u5236\u4e3a 11111, \u5bf9\u5e94conf\u7684\u5341\u516d\u8fdb\u5236\u8868\u8fbe\u4e3a 0x1F\n-- \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa, \u4e8c\u8fdb\u5236\u4e3a 11100 \u5bf9\u5e94map \u4e3a 0x14\n-- keyboard.init(0, 0xFF, 0x14)\n\nsys.subscribe(\"KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "keyboard.init"}, "lcd.init": {"body": "lcd.init(${1:tp},${2:args},${3:spi_dev},${4:init_in_service})", "description": "lcd.init(tp, args, spi_dev, init_in_service) - lcd\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lcd\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1a
st7796
st7789
st7735
st7735v
st7735s
gc9a01
gc9106l
gc9306x
ili9486
custom\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_pwr\uff08\u80cc\u5149\uff09\u4e3a\u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1alcd\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1alcd\u590d\u4f4d\u5f15\u811a
pin_pwr\uff1alcd\u80cc\u5149\u5f15\u811a \u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
direction\uff1alcd\u5c4f\u5e55\u65b9\u5411 0:0\u00b0 1:180\u00b0 2:270\u00b0 3:90\u00b0
w\uff1alcd \u6c34\u5e73\u5206\u8fa8\u7387
h\uff1alcd \u7ad6\u76f4\u5206\u8fa8\u7387
xoffset\uff1ax\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
yoffset\uff1ay\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
direction0\uff1a0\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction90\uff1a90\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction180\uff1a180\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction270\uff1a270\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
sleepcmd\uff1a\u7761\u7720\u547d\u4ee4\uff0c\u9ed8\u8ba40X10
wakecmd\uff1a\u5524\u9192\u547d\u4ee4\uff0c\u9ed8\u8ba40X11
interface_mode lcd\u6a21\u5f0f\uff0c\u9ed8\u8ba4lcd.WIRE_4_BIT_8_INTERFACE_I\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\nboolean \u5141\u8bb8\u521d\u59cb\u5316\u5728lcd service\u91cc\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684st7735s \u6ce8\u610f:lcd\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)\nlog.info(\"lcd.init\",\nlcd.init(\"st7735s\",{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))\n", "prefix": "lcd.init"}, "lcd.close": {"body": "lcd.close()", "description": "lcd.close() - \u5173\u95edlcd\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\nlcd.close()\n", "prefix": "lcd.close"}, "lcd.on": {"body": "lcd.on()", "description": "lcd.on() - \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.on()\n", "prefix": "lcd.on"}, "lcd.off": {"body": "lcd.off()", "description": "lcd.off() - \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.off()\n", "prefix": "lcd.off"}, "lcd.sleep": {"body": "lcd.sleep()", "description": "lcd.sleep() - lcd\u7761\u7720\n\u4f8b\u5b50\uff1a\n-- lcd\u7761\u7720\nlcd.sleep()\n", "prefix": "lcd.sleep"}, "lcd.wakeup": {"body": "lcd.wakeup()", "description": "lcd.wakeup() - lcd\u5524\u9192\n\u4f8b\u5b50\uff1a\n-- lcd\u5524\u9192\nlcd.wakeup()\n", "prefix": "lcd.wakeup"}, "lcd.invon": {"body": "lcd.invon()", "description": "lcd.invon() - lcd\u53cd\u663e\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\nlcd.invon()\n", "prefix": "lcd.invon"}, "lcd.invoff": {"body": "lcd.invoff()", "description": "lcd.invoff() - lcd\u53cd\u663e\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\u5173\u95ed\nlcd.invoff()\n", "prefix": "lcd.invoff"}, "lcd.cmd": {"body": "lcd.cmd(${1:cmd})", "description": "lcd.cmd(cmd) - lcd\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint cmd\n\u4f8b\u5b50\uff1a\n-- lcd\u547d\u4ee4\nlcd.cmd(0x21)\n", "prefix": "lcd.cmd"}, "lcd.data": {"body": "lcd.data(${1:data})", "description": "lcd.data(data) - lcd\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint data\n\u4f8b\u5b50\uff1a\n-- lcd\u6570\u636e\nlcd.data(0x21)\n", "prefix": "lcd.data"}, "lcd.setColor": {"body": "lcd.setColor(${1:back},${2:fore})", "description": "lcd.setColor(back,fore) - lcd\u989c\u8272\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u80cc\u666f\u8272\nint \u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u8bbe\u7f6e\nlcd.setColor(0xFFFF,0x0000)\n", "prefix": "lcd.setColor"}, "lcd.draw": {"body": "lcd.draw(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.draw(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nstring \u5b57\u7b26\u4e32\u6216zbuff\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlocal buff = zbuff.create({201,1,16},0x001F)\nlcd.draw(20,30,220,30,buff)\n", "prefix": "lcd.draw"}, "lcd.clear": {"body": "lcd.clear(${1:color})", "description": "lcd.clear(color) - lcd\u6e05\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u6e05\u5c4f\nlcd.clear()\n", "prefix": "lcd.clear"}, "lcd.fill": {"body": "lcd.fill(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.fill(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e,\u4e0d\u542b\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e,\u4e0d\u542b\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlcd.fill(20,30,220,30,0x0000)\n", "prefix": "lcd.fill"}, "lcd.drawPoint": {"body": "lcd.drawPoint(${1:x0},${2:y0},${3:color})", "description": "lcd.drawPoint(x0,y0,color) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint \u70b9\u7684X\u4f4d\u7f6e.\nint \u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawPoint(20,30,0x001F)\n", "prefix": "lcd.drawPoint"}, "lcd.drawLine": {"body": "lcd.drawLine(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawLine(x0,y0,x1,y1,color) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawLine(20,30,220,30,0x001F)\n", "prefix": "lcd.drawLine"}, "lcd.drawRectangle": {"body": "lcd.drawRectangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawRectangle(x0,y0,x1,y1,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawRectangle(20,40,220,80,0x001F)\n", "prefix": "lcd.drawRectangle"}, "lcd.drawCircle": {"body": "lcd.drawCircle(${1:x0},${2:y0},${3:r},${4:color})", "description": "lcd.drawCircle(x0,y0,r,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5706\u5fc3\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u5706\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u7684X\u4f4d\u7f6e.\nint \u5706\u5fc3\u7684Y\u4f4d\u7f6e.\nint \u534a\u5f84.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawCircle(120,120,20,0x001F)\n", "prefix": "lcd.drawCircle"}, "lcd.drawQrcode": {"body": "lcd.drawQrcode(${1:x},${2:y},${3:str},${4:size})", "description": "lcd.drawQrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lcd.drawQrcode"}, "lcd.setFont": {"body": "lcd.setFont(${1:font},${2:indentation})", "description": "lcd.setFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nint font lcd.font_XXX \u8bf7\u67e5\u9605\u5e38\u91cf\u8868\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548,\u8c03\u7528lcd.drawStr\u524d\u4e00\u5b9a\u8981\u5148\u8bbe\u7f6e\n\n-- \u82e5\u63d0\u793a \"only font pointer is allow\" , \u5219\u4ee3\u8868\u5f53\u524d\u56fa\u4ef6\u4e0d\u542b\u5bf9\u5e94\u5b57\u4f53, \u53ef\u4f7f\u7528\u4e91\u7f16\u8bd1\u670d\u52a1\u514d\u8d39\u5b9a\u5236\n-- \u4e91\u7f16\u8bd1\u6587\u6863: https://wiki.luatos.com/develop/compile/Cloud_compilation.html\n\n-- lcd\u5e93\u7684\u9ed8\u8ba4\u5b57\u4f53\u5747\u4ee5 lcd.font_ \u5f00\u5934\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm12_chinese) -- \u5177\u4f53\u53d6\u503c\u53ef\u53c2\u8003api\u6587\u6863\u7684\u5e38\u91cf\u8868\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.setFont"}, "lcd.drawStr": {"body": "lcd.drawStr(${1:x},${2:y},${3:str},${4:fg_color})", "description": "lcd.drawStr(x,y,str,fg_color) - \u663e\u793a\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807 \u6ce8\u610f:\u6b64(x,y)\u4e3a\u5de6\u4e0b\u8d77\u59cb\u5750\u6807\nstring str \u6587\u4ef6\u5185\u5bb9\nint fg_color str\u989c\u8272 \u6ce8\u610f:\u6b64\u53c2\u6570\u53ef\u9009\uff0c\u5982\u4e0d\u586b\u5199\u5219\u4f7f\u7528\u4e4b\u524d\u8bbe\u7f6e\u7684\u989c\u8272\uff0c\u7ed8\u5236\u53ea\u4f1a\u7ed8\u5236\u5b57\u4f53\u90e8\u5206\uff0c\u80cc\u666f\u9700\u8981\u81ea\u5df1\u6e05\u9664\n\u4f8b\u5b50\uff1a\n-- \u663e\u793a\u4e4b\u524d\u5148\u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm16_chinese)\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.drawStr"}, "lcd.drawGtfontGb2312": {"body": "lcd.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontGb2312"}, "lcd.drawGtfontGb2312Gray": {"body": "lcd.drawGtfontGb2312Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontGb2312Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontGb2312Gray"}, "lcd.drawGtfontUtf8": {"body": "lcd.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontUtf8"}, "lcd.drawGtfontUtf8Gray": {"body": "lcd.drawGtfontUtf8Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontUtf8Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontUtf8Gray"}, "lcd.getSize": {"body": "lcd.getSize()", "description": "lcd.getSize() - \u83b7\u53d6\u5c4f\u5e55\u5c3a\u5bf8\n\u8fd4\u56de\u503c\uff1a\nint \u5bbd, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\nint \u9ad8, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"lcd\", \"size\", lcd.getSize())\n", "prefix": "lcd.getSize"}, "lcd.drawXbm": {"body": "lcd.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "lcd.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef \u9634\u7801 \u9010\u884c \u9006\u5411\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nlcd.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "lcd.drawXbm"}, "lcd.showImage": {"body": "lcd.showImage(${1:x},${2:y},${3:file})", "description": "lcd.showImage(x, y, file) - \u663e\u793a\u56fe\u7247,\u5f53\u524d\u53ea\u652f\u6301jpg,jpeg\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nstring \u6587\u4ef6\u8def\u5f84\n\u4f8b\u5b50\uff1a\nlcd.showImage(0,0,\"/luadb/logo.jpg\")\n", "prefix": "lcd.showImage"}, "lcd.flush": {"body": "lcd.flush()", "description": "lcd.flush() - \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u754c\u9762, \u4ec5\u8bbe\u7f6ebuff\u4e14\u7981\u7528\u81ea\u52a8\u5c5e\u6027\u540e\u4f7f\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil/false\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e0e lcd.setupBuff lcd.autoFlush \u914d\u5408\u4f7f\u7528\nlcd.flush()\n", "prefix": "lcd.flush"}, "lcd.setupBuff": {"body": "lcd.setupBuff(${1:conf},${2:onheap})", "description": "lcd.setupBuff(conf, onheap) - \u8bbe\u7f6e\u663e\u793a\u7f13\u51b2\u533a, \u6240\u9700\u5185\u5b58\u5927\u5c0f\u4e3a 2\u00d7\u5bbd\u00d7\u9ad8 \u5b57\u8282. \u8bf7\u8861\u91cf\u5185\u5b58\u9700\u6c42\u4e0e\u4e1a\u52a1\u6240\u9700\u7684\u5237\u65b0\u9891\u6b21.\n\u4f20\u5165\u503c\uff1a\nuserdata conf\u6307\u9488, \u4e0d\u9700\u8981\u4f20\nbool true\u4f7f\u7528heap\u5185\u5b58, false\u4f7f\u7528vm\u5185\u5b58, \u9ed8\u8ba4\u4f7f\u7528vm\u5185\u5b58, \u4e0d\u9700\u8981\u4e3b\u52a8\u4f20\n\u8fd4\u56de\u503c\uff1a\nbool \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcd\u7684buff\u7f13\u51b2\u533a, \u53ef\u7406\u89e3\u4e3aFrameBuffer\u533a\u57df.\nlcd.setupBuff()\n", "prefix": "lcd.setupBuff"}, "lcd.autoFlush": {"body": "lcd.autoFlush(${1:enable})", "description": "lcd.autoFlush(enable) - \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0, \u9700\u914d\u5408lcd.setupBuff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5237\u65b0,\u9ed8\u8ba4\u4e3atrue\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6ebuff \u5e76\u7981\u7528\u81ea\u52a8\u66f4\u65b0\nlcd.setupBuff()\nlcd.autoFlush(false)\n-- \u7981\u6b62\u81ea\u52a8\u66f4\u65b0\u540e, \u9700\u8981\u4f7f\u7528 lcd.flush() \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u5c4f\u5e55\n", "prefix": "lcd.autoFlush"}, "lcd.rgb565": {"body": "lcd.rgb565(${1:r},${2:g},${3:b},${4:swap})", "description": "lcd.rgb565(r, g, b, swap) - RGB565\u989c\u8272\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nint \u7ea2\u8272, 0x00 ~ 0xFF\nint \u7eff\u8272, 0x00 ~ 0xFF\nint \u84dd\u8272, 0x00 ~ 0xFF\nbool \u662f\u5426\u7ffb\u8f6c, true \u7ffb\u8f6c, false \u4e0d\u7ffb\u8f6c. \u9ed8\u8ba4\u7ffb\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u989c\u8272\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u652f\u6301\u591a\u79cd\u6a21\u5f0f, \u53c2\u6570\u6570\u91cf\u5206\u522b\u662f 1, 2, 3, 4\n-- 1. \u5355\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, swap = true, \u63a8\u8350\nlocal red = lcd.rgb565(0xFF0000)\nlocal green = lcd.rgb565(0x00FF00)\nlocal blue = lcd.rgb565(0x0000FF)\n\n-- 2. \u4e24\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF0000, true)\nlocal green = lcd.rgb565(0x00FF00, true)\nlocal blue = lcd.rgb565(0x0000FF, true)\n\n-- 3. \u4e09\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF)\n\n-- 4. \u56db\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00, true)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00, true)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF, true)\n", "prefix": "lcd.rgb565"}, "lcdseg.setup": {"body": "lcdseg.setup(${1:bias},${2:duty},${3:vlcd},${4:com_number},${5:fresh_rate},${6:com_mark},${7:seg_mark})", "description": "lcdseg.setup(bias, duty, vlcd, com_number, fresh_rate, com_mark, seg_mark) - \u521d\u59cb\u5316lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint bias\u503c,\u901a\u5e38\u4e3a 1/3 bias, \u5bf9\u5e94 lcdseg.BIAS_ONETHIRD\nint duty\u503c,\u901a\u5e38\u4e3a 1/4 duty, \u5bf9\u5e94 lcdseg.DUTY_ONEFOURTH\nint \u7535\u538b, \u5355\u4f4d100mV, \u4f8b\u59822.7v\u519927. air103\u652f\u6301\u7684\u503c\u6709 27/29/31/33\nint COM\u811a\u7684\u6570\u91cf, \u53d6\u51b3\u4e8e\u5177\u4f53\u6a21\u5757, air103\u652f\u63011-4\nint \u5237\u65b0\u7387,\u901a\u5e38\u4e3a60, \u5bf9\u5e9460HZ\nint COM\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFF,\u5168\u90e8\u542f\u7528.\u82e5\u53ea\u542f\u7528COM0/COM1, \u52190x03\nint seg\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFFFFFFFF,\u5373\u5168\u90e8\u542f\u7528. \u82e5\u53ea\u542f\u7528\u524d16\u4e2a, 0xFFFF\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcdseg\nif lcdseg.setup(lcdseg.BIAS_ONETHIRD, lcdseg.DUTY_ONEFOURTH, 33, 4, 60) then\n lcdseg.enable(1)\n\n lcdseg.seg_set(0, 1, 1)\n lcdseg.seg_set(2, 0, 1)\n lcdseg.seg_set(3, 31, 1)\nend\n", "prefix": "lcdseg.setup"}, "lcdseg.enable": {"body": "lcdseg.enable(${1:en})", "description": "lcdseg.enable(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.enable"}, "lcdseg.power": {"body": "lcdseg.power(${1:en})", "description": "lcdseg.power(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u7684\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.power"}, "lcdseg.seg_set": {"body": "lcdseg.seg_set(${1:com},${2:seg},${3:en})", "description": "lcdseg.seg_set(com, seg, en) - \u8bbe\u7f6e\u5177\u4f53\u4e00\u4e2a\u6bb5\u7801\u7684\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint COM\u53f7\nint seg\u53f7 \u8981\u66f4\u6539\u7684\u5b57\u6bb5\u7684\u4f4d\u7d22\u5f15\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.seg_set"}, "libcoap.new": {"body": "libcoap.new(${1:code},${2:uri},${3:headers},${4:payload})", "description": "libcoap.new(code, uri, headers, payload) - \u521b\u5efa\u4e00\u4e2acoap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nint coap\u7684code, \u4f8b\u5982libcoap.GET/libcoap.POST/libcoap.PUT/libcoap.DELETE\nstring \u76ee\u6807URI,\u5fc5\u987b\u586b\u5199, \u4e0d\u9700\u8981\u52a0\u4e0a/\u5f00\u5934\ntable \u8bf7\u6c42\u5934,\u7c7b\u4f3c\u4e8ehttp\u7684headers,\u53ef\u9009\nstring \u8bf7\u6c42\u4f53,\u7c7b\u4f3c\u4e8ehttp\u7684body,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u4e00\u4e2a\u8bf7\u6c42\u670d\u52a1\u5668time\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nlocal data = coapdata:rawdata()\n", "prefix": "libcoap.new"}, "libcoap.parse": {"body": "libcoap.parse(${1:str})", "description": "libcoap.parse(str) - \u89e3\u6790coap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring coap\u6570\u636e\u5305\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305,\u5982\u679c\u89e3\u6790\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode(), coapdata:data())\n", "prefix": "libcoap.parse"}, "coapdata:msgid": {"body": "coapdata:msgid()", "description": "coapdata:msgid() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684msgid\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684msgid\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:msgid())\n", "prefix": "coapdata:msgid"}, "coapdata:token": {"body": "coapdata:token()", "description": "coapdata:token() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684token\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684token\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:token())\n", "prefix": "coapdata:token"}, "coapdata:rawdata": {"body": "coapdata:rawdata()", "description": "coapdata:rawdata() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e,\u7528\u4e8e\u53d1\u9001\u5230\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nnetc:send(coapdata:rawdata())\n", "prefix": "coapdata:rawdata"}, "coapdata:code": {"body": "coapdata:code()", "description": "coapdata:code() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684code\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684code\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:code())\n", "prefix": "coapdata:code"}, "coapdata:hcode": {"body": "coapdata:hcode()", "description": "coapdata:hcode() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684http code, \u6bd4coap\u539f\u59cb\u7684code\u8981\u53cb\u597d\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684http code,\u4f8b\u5982200,205,404\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode())\n", "prefix": "coapdata:hcode"}, "coapdata:type": {"body": "coapdata:type(${1:t})", "description": "coapdata:type(t) - \u83b7\u53d6coap\u6570\u636e\u5305\u7684type, \u4f8b\u5982libcoap.CON/NON/ACK/RST\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7684type\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684type\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:type())\n", "prefix": "coapdata:type"}, "coapdata:data": {"body": "coapdata:data()", "description": "coapdata:data() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684data\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684data\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:data())\n", "prefix": "coapdata:data"}, "libgnss.parse": {"body": "libgnss.parse(${1:str})", "description": "libgnss.parse(str) - \u5904\u7406nmea\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u539f\u59cbnmea\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\u6570\u636e\nlibgnss.parse(indata)\nlog.info(\"nmea\", json.encode(libgnss.getRmc(), \"11g\"))\n", "prefix": "libgnss.parse"}, "libgnss.isFix": {"body": "libgnss.isFix()", "description": "libgnss.isFix() - \u5f53\u524d\u662f\u5426\u5df2\u7ecf\u5b9a\u4f4d\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5b9a\u4f4d\u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"isFix\", libgnss.isFix())\n", "prefix": "libgnss.isFix"}, "libgnss.getIntLocation": {"body": "libgnss.getIntLocation(${1:speed_type})", "description": "libgnss.getIntLocation(speed_type) - \u83b7\u53d6\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u901f\u5ea6\u5355\u4f4d,\u9ed8\u8ba4\u662fm/h\n\u8fd4\u56de\u503c\uff1a\nint lat\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint lng\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint speed\u6570\u636e, \u5355\u4f4d\u7c73. \u4e8e2023.9.26\u4fee\u6b63\n\u4f8b\u5b50\uff1a\n-- \u5efa\u8bae\u7528libgnss.getRmc(1)\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n\n-- 2023.12.11 \u65b0\u589espeed_type\u53c2\u6570\n--[[\n\u901f\u5ea6\u5355\u4f4d\u53ef\u9009\u503c\n0 - m/h \u7c73/\u5c0f\u65f6, \u9ed8\u8ba4\u503c, \u6574\u578b\n1 - m/s \u7c73/\u79d2, \u6d6e\u70b9\u6570\n2 - km/h \u5343\u7c73/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n3 - kn/h \u82f1\u91cc/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n]]\n-- \u9ed8\u8ba4 \u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n-- \u7c73/\u79d2\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(1))\n-- \u5343\u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(2))\n-- \u82f1\u91cc/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(3))\n", "prefix": "libgnss.getIntLocation"}, "libgnss.getRmc": {"body": "libgnss.getRmc(${1:data_mode})", "description": "libgnss.getRmc(data_mode) - \u83b7\u53d6\u539f\u59cbRMC\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cbRMC\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbrmc\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"rmc\", json.encode(libgnss.getRmc(2)))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"course\":0,\n \"valid\":true, // true\u5b9a\u4f4d\u6210\u529f,false\u5b9a\u4f4d\u4e22\u5931\n \"lat\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"lng\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"variation\":0, // \u5730\u9762\u822a\u5411\uff0c\u5355\u4f4d\u4e3a\u5ea6\uff0c\u4ece\u5317\u5411\u8d77\u987a\u65f6\u9488\u8ba1\u7b97\n \"speed\":0 // \u5730\u9762\u901f\u5ea6, \u5355\u4f4d\u4e3a\"\u8282\"\n \"year\":2023, // \u5e74\u4efd\n \"month\":1, // \u6708\u4efd, 1-12\n \"day\":5, // \u6708\u4efd\u5929, 1-31\n \"hour\":7, // \u5c0f\u65f6,0-23\n \"min\":23, // \u5206\u949f,0-59\n \"sec\":20, // \u79d2,0-59\n}\n]]\n", "prefix": "libgnss.getRmc"}, "libgnss.getGsv": {"body": "libgnss.getGsv()", "description": "libgnss.getGsv() - \u83b7\u53d6\u539f\u59cbGSV\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSV\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"gsv\", json.encode(libgnss.getGsv()))\n--[[\u5b9e\u4f8b\u8f93\u51fa\n{\n \"total_sats\":24, // \u603b\u53ef\u89c1\u536b\u661f\u6570\u91cf\n \"sats\":[\n {\n \"snr\":27, // \u4fe1\u566a\u6bd4\n \"azimuth\":278, // \u65b9\u5411\u89d2\n \"elevation\":59, // \u4ef0\u89d2\n \"tp\":0, // 0 - GPS, 1 - BD\n \"nr\":4 // \u536b\u661f\u7f16\u53f7\n },\n // \u8fd9\u91cc\u5ffd\u7565\u4e8622\u4e2a\u536b\u661f\u7684\u4fe1\u606f\n {\n \"snr\":0,\n \"azimuth\":107,\n \"elevation\":19,\n \"tp\":1,\n \"nr\":31\n }\n ]\n}\n]]\n", "prefix": "libgnss.getGsv"}, "libgnss.getGsa": {"body": "libgnss.getGsa(${1:data_mode})", "description": "libgnss.getGsa(data_mode) - \u83b7\u53d6\u539f\u59cbGSA\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\nlog.info(\"nmea\", \"gsa\", json.encode(libgnss.getGsa(), \"11g\"))\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f0, \u4e5f\u5c31\u662f\u9ed8\u8ba4\u6a21\u5f0f)\n--[[\n{\n \"sats\":[ // \u6b63\u5728\u4f7f\u7528\u7684\u536b\u661f\u7f16\u53f7\n 9,\n 6,\n 16,\n 16,\n 26,\n 21,\n 27,\n 27,\n 4,\n 36,\n 3,\n 7,\n 8,\n 194\n ],\n \"vdop\":0.03083333, // \u5782\u76f4\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"pdop\":0.0455, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"fix_type\":3, // \u5b9a\u4f4d\u6a21\u5f0f, 1-\u672a\u5b9a\u4f4d, 2-2D\u5b9a\u4f4d, 3-3D\u5b9a\u4f4d\n \"hdop\":0.0335 // \u4f4d\u7f6e\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n}\n]]\n\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f1), 2024.5.26\u65b0\u589e\n[\n {\"pdop\":7.8299999,\"sats\":[13,15,18,23],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3},\n {\"pdop\":7.8299999,\"sats\":[20,35,8,13],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3}\n]\n", "prefix": "libgnss.getGsa"}, "libgnss.getVtg": {"body": "libgnss.getVtg(${1:data_mode})", "description": "libgnss.getVtg(data_mode) - \u83b7\u53d6VTA\u901f\u5ea6\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009, 3-\u539f\u59cb\u5b57\u7b26\u4e32, \u4e0d\u4f20\u6216\u8005\u4f20\u5176\u4ed6\u503c, \u5219\u8fd4\u56de\u6d6e\u70b9\u503c\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbVTA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"vtg\", json.encode(libgnss.getVtg()))\n-- \u793a\u4f8b\n--[[\n{\n \"speed_knots\":0, // \u901f\u5ea6, \u82f1\u91cc/\u5c0f\u65f6\n \"true_track_degrees\":0, // \u771f\u5317\u65b9\u5411\u89d2\n \"magnetic_track_degrees\":0, // \u78c1\u5317\u65b9\u5411\u89d2\n \"speed_kph\":0 // \u901f\u5ea6, \u5343\u7c73/\u5c0f\u65f6\n}\n-- \u63d0\u9192: Air780EG\u548cAir510U,\u5728\u901f\u5ea6<5km/h\u65f6, \u4e0d\u4f1a\u8fd4\u56de\u65b9\u5411\u89d2\n]]\n", "prefix": "libgnss.getVtg"}, "libgnss.getZda": {"body": "libgnss.getZda()", "description": "libgnss.getZda() - \u83b7\u53d6\u539f\u59cbZDA\u65f6\u95f4\u548c\u65e5\u671f\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbzda\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"zda\", json.encode(libgnss.getZda()))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"minute_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5206\u949f, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"hour_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5c0f\u65f6, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"year\":2023 // UTC \u5e74\uff0c\u56db\u4f4d\u6570\u5b57\n \"month\":1, // UTC \u6708\uff0c\u4e24\u4f4d\uff0c01 ~ 12\n \"day\":5, // UTC \u65e5\uff0c\u4e24\u4f4d\u6570\u5b57\uff0c01 ~ 31\n \"hour\":7, // \u5c0f\u65f6\n \"min\":50, // \u5206\n \"sec\":14, // \u79d2\n}\n]]\n", "prefix": "libgnss.getZda"}, "libgnss.debug": {"body": "libgnss.debug(${1:mode})", "description": "libgnss.debug(mode) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool true\u5f00\u542f\u8c03\u8bd5,false\u5173\u95ed\u8c03\u8bd5,\u9ed8\u8ba4\u4e3afalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u8c03\u8bd5, \u4f1a\u8f93\u51faGNSS\u539f\u59cb\u6570\u636e\u5230\u65e5\u5fd7\u4e2d\nlibgnss.debug(true)\n-- \u5173\u95ed\u8c03\u8bd5\nlibgnss.debug(false)\n", "prefix": "libgnss.debug"}, "libgnss.getGga": {"body": "libgnss.getGga(${1:data_mode})", "description": "libgnss.getGga(data_mode) - \u83b7\u53d6GGA\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cb\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable GGA\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gga = libgnss.getGga(2)\nif gga then\n log.info(\"GGA\", json.encode(gga, \"11g\"))\nend\n--\u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"dgps_age\":0, // \u5dee\u5206\u6821\u6b63\u65f6\u5ef6\uff0c\u5355\u4f4d\u4e3a\u79d2\n \"fix_quality\":1, // \u5b9a\u4f4d\u72b6\u6001\u6807\u8bc6 0 - \u65e0\u6548,1 - \u5355\u70b9\u5b9a\u4f4d,2 - \u5dee\u5206\u5b9a\u4f4d\n \"satellites_tracked\":14, // \u53c2\u4e0e\u5b9a\u4f4d\u7684\u536b\u661f\u6570\u91cf\n \"altitude\":0.255, // \u6d77\u5e73\u9762\u5206\u79bb\u5ea6, \u6216\u8005\u6210\u4e3a\u6d77\u62d4, \u5355\u4f4d\u662f\u7c73,\n \"hdop\":0.0335, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"height\":0 // \u692d\u7403\u9ad8\uff0c\u56fa\u5b9a\u8f93\u51fa 1 \u4f4d\u5c0f\u6570\n}\n]]\n", "prefix": "libgnss.getGga"}, "libgnss.getGll": {"body": "libgnss.getGll(${1:data_mode})", "description": "libgnss.getGll(data_mode) - \u83b7\u53d6GLL\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable GLL\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gll = libgnss.getGll(2)\nif gll then\n log.info(\"GLL\", json.encode(gll, \"11g\"))\nend\n-- \u5b9e\u4f8b\u6570\u636e\n--[[\n{\n \"status\":\"A\", // \u5b9a\u4f4d\u72b6\u6001, A\u6709\u6548, B\u65e0\u6548\n \"mode\":\"A\", // \u5b9a\u4f4d\u6a21\u5f0f, V\u65e0\u6548, A\u5355\u70b9\u89e3, D\u5dee\u5206\u89e3\n \"sec\":20, // \u79d2, UTC\u65f6\u95f4\u4e3a\u51c6\n \"min\":23, // \u5206\u949f, UTC\u65f6\u95f4\u4e3a\u51c6\n \"hour\":7, // \u5c0f\u65f6, UTC\u65f6\u95f4\u4e3a\u51c6\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"us\":0 // \u5fae\u5999\u6570, \u901a\u5e38\u4e3a0\n}\n]]\n", "prefix": "libgnss.getGll"}, "libgnss.clear": {"body": "libgnss.clear()", "description": "libgnss.clear() - \u6e05\u9664\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8be5\u64cd\u4f5c\u4f1a\u6e05\u9664\u6240\u6709\u5b9a\u4f4d\u6570\u636e\n", "prefix": "libgnss.clear"}, "libgnss.bind": {"body": "libgnss.bind(${1:id},${2:next_id})", "description": "libgnss.bind(id, next_id) - \u7ed1\u5b9auart\u7aef\u53e3\u8fdb\u884cGNSS\u6570\u636e\u8bfb\u53d6\n\u4f20\u5165\u503c\uff1a\nint uart\u7aef\u53e3\u53f7\nint \u8f6c\u53d1\u5230uart\u7684id, \u4f8b\u5982\u865a\u62dfuart.VUART_0\n\u4f8b\u5b50\uff1a\n-- \u914d\u7f6e\u4e32\u53e3\u4fe1\u606f, \u901a\u5e38\u4e3a 115200 8N1\nuart.setup(2, 115200)\n-- \u7ed1\u5b9auart, \u9a6c\u4e0a\u5f00\u59cb\u89e3\u6790GNSS\u6570\u636e\nlibgnss.bind(2)\n-- \u65e0\u9700\u518d\u8c03\u7528uart.on\u7136\u540e\u8c03\u7528libgnss.parse\n-- \u5f00\u53d1\u671f\u53ef\u6253\u5f00\u8c03\u8bd5\u65e5\u5fd7\nlibgnss.debug(true)\n\n-- 2023-01-02\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u6709\u6548\n-- \u4eceuart2\u8bfb\u53d6\u5e76\u89e3\u6790, \u540c\u65f6\u8f6c\u53d1\u5230\u865a\u62df\u4e32\u53e30\nlibgnss.bind(2, uart.VUART_0)\n", "prefix": "libgnss.bind"}, "libgnss.locStr": {"body": "libgnss.locStr(${1:mode})", "description": "libgnss.locStr(mode) - \u83b7\u53d6\u4f4d\u7f6e\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6a21\u5f0f. 0- Air780EG\u6240\u9700\u7684\u683c\u5f0f\nreturn \u6307\u5b9a\u6a21\u5f0f\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u63a8\u8350\u5728\u5b9a\u4f4d\u6210\u529f\u540e\u8c03\u7528\n", "prefix": "libgnss.locStr"}, "libgnss.rtcAuto": {"body": "libgnss.rtcAuto(${1:enable})", "description": "libgnss.rtcAuto(enable) - \u5b9a\u4f4d\u6210\u529f\u540e\u81ea\u52a8\u8bbe\u7f6eRTC\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f\u4e0e\u5426, \u9ed8\u8ba4\u662ffalse\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u81ea\u52a8\u8bbe\u7f6eRTC\nlibgnss.rtcAuto(true)\n", "prefix": "libgnss.rtcAuto"}, "libgnss.on": {"body": "libgnss.on(${1:tp},${2:fn})", "description": "libgnss.on(tp, fn) - \u5e95\u5c42\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u7c7b\u578b,\u5f53\u524d\u652f\u6301\"raw\"\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5, \u7528\u4e8e\u83b7\u53d6\u5e95\u5c42\u5b9e\u9645\u6536\u5230\u7684\u6570\u636e\nlibgnss.on(\"raw\", function(data)\n log.info(\"GNSS\", data)\nend)\n", "prefix": "libgnss.on"}, "libgnss.getTxt": {"body": "libgnss.getTxt()", "description": "libgnss.getTxt() - \u83b7\u53d6\u975e\u6807\u7684GPTXT\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nreturn GPTXT\u6240\u643a\u5e26\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.6.6 \u6dfb\u52a0\nlog.info(\"gnss\", \"txt\", libgnss.getTxt())\n\n-- \u6d4b\u8bd5\u8bed\u53e5\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA SHORT*63\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OPEN*25\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OK*35\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\n", "prefix": "libgnss.getTxt"}, "libgnss.casic_aid": {"body": "libgnss.casic_aid(${1:dt},${2:loc})", "description": "libgnss.casic_aid(dt, loc) - \u5408\u6210Air530Z\u6240\u9700\u8981\u7684\u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f20\u5165\u503c\uff1a\ntable \u65f6\u95f4\u4fe1\u606f\ntable \u7ecf\u7eac\u5ea6\u53ca\u6d77\u62d4\n\u8fd4\u56de\u503c\uff1a\nstring \u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u9002\u5408CASIC\u7cfb\u5217GNSS\u6a21\u5757\u7684\u8f85\u52a9\u5b9a\u4f4d\u4fe1\u606f\u7684\u5408\u6210\n-- \u672c\u51fd\u6570 2023.11.14 \u65b0\u589e\n\n-- \u9996\u5148\u662f\u65f6\u95f4\u4fe1\u606f,\u6ce8\u610f\u662fUTC\u65f6\u95f4\n-- \u65f6\u95f4\u6765\u6e90\u5f88\u591a, \u4e00\u822c\u5efa\u8baesocket.sntp()\u65f6\u95f4\u540c\u6b65\u540e\u7684\u7cfb\u7edf\u65f6\u95f4\nlocal dt = os.date(\"!*t\")\n\n-- \u7136\u540e\u662f\u8f85\u52a9\u5b9a\u4f4d\u5750\u6807\n-- \u6765\u6e90\u6709\u5f88\u591a\u65b9\u5f0f:\n-- 1. \u4ece\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\u5f97\u5230, \u4f8b\u5982\u4e4b\u524d\u5b9a\u4f4d\u6210\u529f\u540e\u4fdd\u5b58\u5230\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e86\n-- 2. \u901a\u8fc7\u57fa\u7ad9\u5b9a\u4f4d\u6216\u8005wifi\u5b9a\u4f4d\u83b7\u53d6\u5230\n-- 3. \u901a\u8fc7IP\u5b9a\u4f4d\u83b7\u53d6\u5230\u5927\u6982\u5750\u6807\n-- \u5750\u6807\u7cfb\u662fWGS84, \u4f46\u9274\u4e8e\u662f\u8f85\u52a9\u5b9a\u4f4d,\u7cbe\u5ea6\u4e0d\u662f\u5173\u952e\u56e0\u7d20\nlocal lla = {\n lat = 23.12,\n lng = 114.12\n}\n\nlocal aid = libgnss.casic_aid(dt, lla)\n", "prefix": "libgnss.casic_aid"}, "lf.init": {"body": "lf.init(${1:spi_device})", "description": "lf.init(spi_device) - \u521d\u59cb\u5316 little_flash\n\u4f20\u5165\u503c\uff1a\nint userdata spi_device\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--spi_device\nspi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"lf.init\",lf.init(spi_device))\n", "prefix": "lf.init"}, "lf.mount": {"body": "lf.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "lf.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7d little_flash lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 lf.init()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"lf.mount\",lf.mount(little_flash_device,\"/little_flash\"))\n", "prefix": "lf.mount"}, "log.setLevel": {"body": "log.setLevel(${1:level})", "description": "log.setLevel(level) - \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\n\u4f20\u5165\u503c\uff1a\nstring level \u65e5\u5fd7\u7ea7\u522b,\u53ef\u7528\u5b57\u7b26\u4e32\u6216\u6570\u503c, \u5b57\u7b26\u4e32\u4e3a(SILENT,DEBUG,INFO,WARN,ERROR,FATAL), \u6570\u503c\u4e3a(0,1,2,3,4,5)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\u4e3aINFO\nlog.setLevel(\"INFO\")\n", "prefix": "log.setLevel"}, "log.style": {"body": "log.style(${1:val})", "description": "log.style(val) - \u8bbe\u7f6e\u65e5\u5fd7\u98ce\u683c\n\u4f20\u5165\u503c\uff1a\nint \u65e5\u5fd7\u98ce\u683c,\u9ed8\u8ba4\u4e3a0, \u4e0d\u4f20\u5c31\u662f\u83b7\u53d6\u5f53\u524d\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7684\u65e5\u5fd7\u98ce\u683c\n\u4f8b\u5b50\uff1a\n-- \u4ee5 log.info(\"ABC\", \"DEF\", 123) \u4e3a\u4f8b, \u5047\u8bbe\u8be5\u4ee3\u7801\u4f4d\u4e8emain.lua\u768412\u884c\n-- \u9ed8\u8ba4\u65e5\u5fd70\n-- I/user.ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c1, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f\n-- I/main.lua:12 ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c2, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f, \u4f4d\u7f6e\u6709\u6240\u533a\u522b\n-- I/user.ABC main.lua:12 DEF 123\n\nlog.style(0) -- \u9ed8\u8ba4\u98ce\u683c0\nlog.style(1) -- \u8c03\u8bd5\u98ce\u683c1\nlog.style(2) -- \u8c03\u8bd5\u98ce\u683c2\n", "prefix": "log.style"}, "log.getLevel": {"body": "log.getLevel()", "description": "log.getLevel() - \u83b7\u53d6\u65e5\u5fd7\u7ea7\u522b\n\u8fd4\u56de\u503c\uff1a\nint \u65e5\u5fd7\u7ea7\u522b\u5bf9\u5e940,1,2,3,4,5\n\u4f8b\u5b50\uff1a\n-- \u5f97\u5230\u65e5\u5fd7\u7ea7\u522b\nlog.getLevel()\n", "prefix": "log.getLevel"}, "log.debug": {"body": "log.debug(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.debug(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bdebug\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa D/onenet connect ok\nlog.debug(\"onenet\", \"connect ok\")\n", "prefix": "log.debug"}, "log.info": {"body": "log.info(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.info(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522binfo\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa I/onenet connect ok\nlog.info(\"onenet\", \"connect ok\")\n", "prefix": "log.info"}, "log.warn": {"body": "log.warn(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.warn(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bwarn\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa W/onenet connect ok\nlog.warn(\"onenet\", \"connect ok\")\n", "prefix": "log.warn"}, "log.error": {"body": "log.error(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.error(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522berror\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa E/onenet connect ok\nlog.error(\"onenet\", \"connect ok\")\n", "prefix": "log.error"}, "lora.init": {"body": "lora.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.init(\"llcc68\",\n {\n id = 0, -- SPI id\n cs = pin.PB04, -- SPI \u7247\u9009\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n res = pin.PB00, -- \u590d\u4f4d\u811a\u8fde\u63a5\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n busy = pin.PB01, -- \u5fd9\u68c0\u6d4b\u811a\u7684GPIO\u53f7\n dio1 = pin.PB06, -- \u6570\u636e\u8f93\u5165\u4e2d\u65ad\u811a\n lora_init = true -- \u662f\u5426\u53d1\u9001\u521d\u59cb\u5316\u547d\u4ee4. \u5982\u679c\u662f\u5524\u9192\u540e\u76f4\u63a5\u8bfb\u53d6, \u5c31\u4f20false\n }\n)\n", "prefix": "lora.init"}, "lora.set_channel": {"body": "lora.set_channel(${1:freq})", "description": "lora.set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora.set_channel(433000000)\n", "prefix": "lora.set_channel"}, "lora.set_txconfig": {"body": "lora.set_txconfig(${1:ic},${2:txconfig})", "description": "lora.set_txconfig(ic, txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_txconfig(\"llcc68\",\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora.set_txconfig"}, "lora.set_rxconfig": {"body": "lora.set_rxconfig(${1:ic},${2:set_rxconfig})", "description": "lora.set_rxconfig(ic, set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_rxconfig(\"llcc68\",\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora.set_rxconfig"}, "lora.send": {"body": "lora.send(${1:data})", "description": "lora.send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora.send(\"PING\")\n", "prefix": "lora.send"}, "lora.recv": {"body": "lora.recv(${1:timeout})", "description": "lora.recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora.send(\"PING\")\nend)\n-- \u8001\u7248\u672c\u6ca1\u6709recv, \u53ef\u4ee5\u6539\u6210 lora.recive\nlora.recv(1000)\n", "prefix": "lora.recv"}, "lora.mode": {"body": "lora.mode(${1:mode})", "description": "lora.mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora.mode(lora.STANDBY)\n", "prefix": "lora.mode"}, "lora2.init": {"body": "lora2.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora2.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56delora\u5bf9\u8c61,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nspi_lora = spi.deviceSetup(spi_id,pin_cs,0,0,8,10*1000*1000,spi.MSB,1,0)\nlora_device = lora2.init(\"llcc68\",{res = pin_reset,busy = pin_busy,dio1 = pin_dio1},spi_lora)\n", "prefix": "lora2.init"}, "lora_device:set_channel": {"body": "lora_device:set_channel(${1:freq})", "description": "lora_device:set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora_device:set_channel(433000000)\n", "prefix": "lora_device:set_channel"}, "lora_device:set_txconfig": {"body": "lora_device:set_txconfig(${1:txconfig})", "description": "lora_device:set_txconfig(txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_txconfig(\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora_device:set_txconfig"}, "lora_device:set_rxconfig": {"body": "lora_device:set_rxconfig(${1:set_rxconfig})", "description": "lora_device:set_rxconfig(set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_rxconfig(\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora_device:set_rxconfig"}, "lora_device:send": {"body": "lora_device:send(${1:data})", "description": "lora_device:send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora_device:send(\"PING\")\n", "prefix": "lora_device:send"}, "lora_device:recv": {"body": "lora_device:recv(${1:timeout})", "description": "lora_device:recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora_device:send(\"PING\")\nend)\nlora_device:recv(1000)\n", "prefix": "lora_device:recv"}, "lora_device:mode": {"body": "lora_device:mode(${1:mode})", "description": "lora_device:mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora_device:mode(lora.STANDBY)\n", "prefix": "lora_device:mode"}, "lora_device:on": {"body": "lora_device:on(${1:cb})", "description": "lora_device:on(cb) - \u6ce8\u518clora\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb lora\u56de\u8c03,\u53c2\u6570\u5305\u62eclora_device, event, data, size\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlora_device:on(function(lora_device, event, data, size)\n log.info(\"lora\", \"event\", event, lora_device, data, size)\n if event == \"tx_done\" then\n lora_device:recv(1000)\n elseif event == \"rx_done\" then\n lora_device:send(\"PING\")\n elseif event == \"tx_timeout\" then\n\n elseif event == \"rx_timeout\" then\n lora_device:recv(1000)\n elseif event == \"rx_error\" then\n\n end\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n tx_done -- \u53d1\u9001\u5b8c\u6210\n rx_done -- \u63a5\u6536\u5b8c\u6210\n tx_timeout -- \u53d1\u9001\u8d85\u65f6\n rx_timeout -- \u63a5\u6536\u8d85\u65f6\n rx_error -- \u63a5\u6536\u9519\u8bef\n]]\n", "prefix": "lora_device:on"}, "lvgl.draw_mask_radius_param_t": {"body": "lvgl.draw_mask_radius_param_t()", "description": "lvgl.draw_mask_radius_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_radius_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_radius_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal radius = lvgl.draw_mask_radius_param_t()\n", "prefix": "lvgl.draw_mask_radius_param_t"}, "lvgl.draw_mask_radius_param_t_free": {"body": "lvgl.draw_mask_radius_param_t_free(${1:radius})", "description": "lvgl.draw_mask_radius_param_t_free(radius) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_radius_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_radius_param_t_free(radius)\n", "prefix": "lvgl.draw_mask_radius_param_t_free"}, "lvgl.draw_mask_line_param_t": {"body": "lvgl.draw_mask_line_param_t()", "description": "lvgl.draw_mask_line_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_line_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_line_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal line = lvgl.draw_mask_line_param_t()\n", "prefix": "lvgl.draw_mask_line_param_t"}, "lvgl.draw_mask_line_param_t_free": {"body": "lvgl.draw_mask_line_param_t_free(${1:line})", "description": "lvgl.draw_mask_line_param_t_free(line) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_line_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_line_param_t_free(line)\n", "prefix": "lvgl.draw_mask_line_param_t_free"}, "lvgl.draw_mask_fade_param_t": {"body": "lvgl.draw_mask_fade_param_t()", "description": "lvgl.draw_mask_fade_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_fade_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_fade_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal fade = lvgl.draw_mask_fade_param_t()\n", "prefix": "lvgl.draw_mask_fade_param_t"}, "lvgl.draw_mask_fade_param_t_free": {"body": "lvgl.draw_mask_fade_param_t_free(${1:fade})", "description": "lvgl.draw_mask_fade_param_t_free(fade) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_fade_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_fade_param_t_free(fade)\n", "prefix": "lvgl.draw_mask_fade_param_t_free"}, "lvgl.font_get": {"body": "lvgl.font_get(${1:name})", "description": "lvgl.font_get(name) - \u83b7\u53d6\u5185\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0+\u5b57\u53f7, \u4f8b\u5982 opposans_m_10\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\n\nlocal font = lvgl.font_get(\"opposans_m_12\")\n", "prefix": "lvgl.font_get"}, "lvgl.font_load": {"body": "lvgl.font_load(${1:path/spi_device},${2:size},${3:bpp},${4:thickness},${5:cache_size},${6:sty_zh},${7:sty_en})", "description": "lvgl.font_load(path/spi_device,size,bpp,thickness,cache_size,sty_zh,sty_en) - \u4ece\u6587\u4ef6\u7cfb\u7edf\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring/userdata \u5b57\u4f53\u8def\u5f84/spi_device (spi_device\u4e3a\u4f7f\u7528\u5916\u7f6e\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93\u82af\u7247)\nnumber size \u53ef\u9009,\u5b57\u53f7 16-192 \u9ed8\u8ba416(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber bpp \u53ef\u9009 \u6df1\u5ea6 \u9ed8\u8ba44(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber thickness \u53ef\u9009 \u7c97\u7ec6\u503c \u9ed8\u8ba4size * bpp(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber cache_size \u53ef\u9009 \u9ed8\u8ba40(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_zh \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba41(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_en \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba43(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n--local font = lvgl.font_load(spi_device,16)(\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n", "prefix": "lvgl.font_load"}, "lvgl.font_free": {"body": "lvgl.font_free(${1:font})", "description": "lvgl.font_free(font) - \u91ca\u653e\u5b57\u4f53,\u614e\u7528!!!\u4ec5\u901a\u8fc7font_load\u52a0\u8f7d\u7684\u5b57\u4f53\u5141\u8bb8\u5378\u8f7d,\u901a\u8fc7font_get\u83b7\u53d6\u7684\u5b57\u4f53\u4e0d\u5141\u8bb8\u5378\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n-- N N N N \u64cd\u4f5c\n-- \u786e\u5b9a\u5b57\u4f53\u4e0d\u88ab\u4f7f\u7528,\u4e0d\u88ab\u5f15\u7528,\u4e14\u5185\u5b58\u7d27\u5f20\u9700\u8981\u91ca\u653e\nlvgl.font_free(font)\n", "prefix": "lvgl.font_free"}, "lvgl.obj_set_event_cb": {"body": "lvgl.obj_set_event_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_event_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, event), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, event\u662f\u4e8b\u4ef6\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_event_cb"}, "lvgl.obj_set_signal_cb": {"body": "lvgl.obj_set_signal_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_signal_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4fe1\u53f7\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, signal), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_signal_cb"}, "lvgl.anim_set_exec_cb": {"body": "lvgl.anim_set_exec_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_exec_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, value), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_exec_cb"}, "lvgl.anim_set_ready_cb": {"body": "lvgl.anim_set_ready_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_ready_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (anim), \u5176\u4e2danim\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_ready_cb"}, "lvgl.anim_path_set_cb": {"body": "lvgl.anim_path_set_cb(${1:path},${2:func})", "description": "lvgl.anim_path_set_cb(path, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (path), \u5176\u4e2dpath\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_path_set_cb"}, "lvgl.event_send": {"body": "lvgl.event_send(${1:obj},${2:ent})", "description": "lvgl.event_send(obj, ent) - \u53d1\u9001\u4e8b\u4ef6\u7ed9\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488\nint \u4e8b\u4ef6id, \u4f8b\u5982 lvgl.EVENT_PRESSED\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5bf9\u8c61\u5df2\u88ab\u5220\u9664\u7684\u8bdd\u8fd4\u56defalse\u6216\u8005nil\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u5982\u679cobj\u4e3anil\u5c31\u8fd4\u56denil\n", "prefix": "lvgl.event_send"}, "lvgl.scr_act": {"body": "lvgl.scr_act()", "description": "lvgl.scr_act() - \u83b7\u53d6\u5f53\u524d\u6d3b\u8dc3\u7684screen\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 screen\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal scr = lvgl.scr_act()\n\n", "prefix": "lvgl.scr_act"}, "lvgl.layer_top": {"body": "lvgl.layer_top()", "description": "lvgl.layer_top() - \u83b7\u53d6layer_top\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_top"}, "lvgl.layer_sys": {"body": "lvgl.layer_sys()", "description": "lvgl.layer_sys() - \u83b7\u53d6layer_sys\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_sys"}, "lvgl.scr_load": {"body": "lvgl.scr_load(${1:scr})", "description": "lvgl.scr_load(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n lvgl.scr_load(scr)\n", "prefix": "lvgl.scr_load"}, "lvgl.scr_load_anim": {"body": "lvgl.scr_load_anim(${1:scr})", "description": "lvgl.scr_load_anim(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\u5e76\u4f7f\u7528\u6307\u5b9a\u7684\u8f6c\u573a\u52a8\u753b\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n\n local scr2 = lvgl.obj_create(nil,nil)\n local btn2 = lvgl.btn_create(scr2)\n lvgl.obj_align(btn, scr2, lvgl.ALIGN_CENTER, 0, 20)\n local label2 = lvgl.label_create(btn2)\n lvgl.label_set_text(label2, \"Btn2\")\n lvgl.scr_load(scr)\n --sys.wait(1000);\n lvgl.scr_load_anim(scr2,lvgl.SCR_LOAD_ANIM_OVER_LEFT,100,100,false)\n\u539f\u51fd\u6570\uff1alv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool auto_del)\n", "prefix": "lvgl.scr_load_anim"}, "lvgl.theme_set_act": {"body": "lvgl.theme_set_act(${1:name})", "description": "lvgl.theme_set_act(name) - \u8bbe\u7f6e\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898\u540d\u79f0,\u53ef\u9009\u503c\u6709 default/mono/empty/material_light/material_dark/material_no_transition/material_no_focus\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u9ed1\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"mono\")\n-- \u7a7a\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"empty\")\n", "prefix": "lvgl.theme_set_act"}, "lvgl.sleep": {"body": "lvgl.sleep(${1:enable})", "description": "lvgl.sleep(enable) - LVGL\u4f11\u7720\u63a7\u5236\uff0c\u6682\u505c/\u6062\u590d\u5237\u65b0\u5b9a\u65f6\u5668\uff0c\u76ee\u524d\u53ea\u6709105\u548cEC618\u53ef\u4ee5\u7528\n\u4f20\u5165\u503c\uff1a\nboolean true\u6682\u505c false\u6062\u590d\n\u4f8b\u5b50\uff1a\nlvgl.sleep(true) --\u6682\u505c\u5237\u65b0\uff0c\u7cfb\u7edf\u53ef\u4ee5\u4f11\u7720\nlvgl.sleep(false) --\u6062\u590d\u5237\u65b0\uff0c\u7cfb\u7edf\u4e0d\u4f11\u7720\n", "prefix": "lvgl.sleep"}, "lvgl.init": {"body": "lvgl.init(${1:w},${2:h},${3:lcd},${4:buff_size},${5:buff_mode})", "description": "lvgl.init(w, h, lcd, buff_size, buff_mode) - \u521d\u59cb\u5316LVGL\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u5bbd,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nint \u5c4f\u5e55\u9ad8,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nuserdata lcd\u6307\u9488,\u53ef\u9009,lcd\u521d\u59cb\u5316\u540e\u6709\u9ed8\u8ba4\u503c,\u9884\u7559\u7684\u591a\u5c4f\u5165\u53e3\nint \u7f13\u51b2\u533a\u5927\u5c0f,\u9ed8\u8ba4\u5bbd*10, \u4e0d\u542b\u8272\u6df1.\nint \u7f13\u51b2\u6a21\u5f0f,\u9ed8\u8ba40, \u5355buff\u6a21\u5f0f, \u53ef\u90091,\u53ccbuff\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "lvgl.init"}, "lvgl.anim_create": {"body": "lvgl.anim_create()", "description": "lvgl.anim_create() - \u521b\u5efa\u5e76\u521d\u59cb\u5316\u4e00\u4e2aanim\n\u8fd4\u56de\u503c\uff1a\nuserdata anim\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim = lvgl.anim_create()\n", "prefix": "lvgl.anim_create"}, "lvgl.anim_free": {"body": "lvgl.anim_free(${1:anim})", "description": "lvgl.anim_free(anim) - \u91ca\u653e\u4e00\u4e2aanim\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_free(anim)\n", "prefix": "lvgl.anim_free"}, "lvgl.anim_path_t": {"body": "lvgl.anim_path_t()", "description": "lvgl.anim_path_t() - \u521b\u5efa\u4e00\u4e2alv_anim_path_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_anim_path_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim_path_t = lvgl.anim_path_t()\n", "prefix": "lvgl.anim_path_t"}, "lvgl.anim_path_t_free": {"body": "lvgl.anim_path_t_free(${1:anim_path_t})", "description": "lvgl.anim_path_t_free(anim_path_t) - \u91ca\u653e\u4e00\u4e2alv_anim_path_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_path_t_free(anim_path_t)\n", "prefix": "lvgl.anim_path_t_free"}, "lvgl.anim_set_path_str": {"body": "lvgl.anim_set_path_str(${1:anim},${2:tp})", "description": "lvgl.anim_set_path_str(anim, tp) - \u8bbe\u7f6e\u52a8\u753b\u8def\u5f84\u65b9\u5f0f\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nstring \u7c7b\u578b, \u652f\u6301 linear/ease_in/ease_out/ease_in_out/overshoot/bounce/step\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_path_str"}, "lvgl.qrcode_create": {"body": "lvgl.qrcode_create(${1:parent},${2:size},${3:dark_color},${4:light_color})", "description": "lvgl.qrcode_create(parent, size, dark_color, light_color) - \u521b\u5efaqrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6\nint \u957f\u5ea6,\u56e0\u4e3aqrcode\u662f\u6b63\u65b9\u5f62\nint \u4e8c\u7ef4\u7801\u4e2d\u6570\u636e\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0x3333ff\nint \u4e8c\u7ef4\u7801\u4e2d\u80cc\u666f\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0xeeeeff\n\u8fd4\u56de\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u5e76\u663e\u793aqrcode\nlocal qrcode = lvgl.qrcode_create(scr, 100)\nlvgl.qrcode_update(qrcode, \"https://luatos.com\")\nlvgl.obj_align(qrcode, lvgl.scr_act(), lvgl.ALIGN_CENTER, -100, -100)\n", "prefix": "lvgl.qrcode_create"}, "lvgl.qrcode_update": {"body": "lvgl.qrcode_update(${1:qrcode},${2:cnt})", "description": "lvgl.qrcode_update(qrcode, cnt) - \u8bbe\u7f6eqrcode\u7ec4\u4ef6\u7684\u4e8c\u7ef4\u7801\u5185\u5bb9,\u914d\u5408qrcode_create\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u66f4\u65b0\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse. \u901a\u5e38\u53ea\u6709\u6570\u636e\u592a\u957f\u65e0\u6cd5\u5bb9\u7eb3\u624d\u4f1a\u8fd4\u56defalse\n", "prefix": "lvgl.qrcode_update"}, "lvgl.qrcode_delete": {"body": "lvgl.qrcode_delete(${1:qrcode})", "description": "lvgl.qrcode_delete(qrcode) - \u5220\u9664qrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.qrcode_delete"}, "lvgl.style_t": {"body": "lvgl.style_t()", "description": "lvgl.style_t() - \u521b\u5efa\u4e00\u4e2astyle\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_t()\nlvgl.style_init(style)\n", "prefix": "lvgl.style_t"}, "lvgl.style_create": {"body": "lvgl.style_create()", "description": "lvgl.style_create() - \u521b\u5efa\u4e00\u4e2astyle\u5e76\u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n", "prefix": "lvgl.style_create"}, "lvgl.style_list_create": {"body": "lvgl.style_list_create()", "description": "lvgl.style_list_create() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n", "prefix": "lvgl.style_list_create"}, "lvgl.style_list_t": {"body": "lvgl.style_list_t()", "description": "lvgl.style_list_t() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_list_t()\n", "prefix": "lvgl.style_list_t"}, "lvgl.style_delete": {"body": "lvgl.style_delete(${1:style})", "description": "lvgl.style_delete(style) - \u5220\u9664style,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n-- ...\n-- ...\n-- lvgl.style_delete(style)\n", "prefix": "lvgl.style_delete"}, "lvgl.style_list_delete": {"body": "lvgl.style_list_delete(${1:style})", "description": "lvgl.style_list_delete(style) - \u5220\u9664style_list,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n-- ...\n-- ...\n-- lvgl.style_list_delete(style_list)\n", "prefix": "lvgl.style_list_delete"}, "lvgl.demo_benchmark": {"body": "lvgl.demo_benchmark()", "description": "lvgl.demo_benchmark() - lvgl benchmark demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_benchmark()\n", "prefix": "lvgl.demo_benchmark"}, "lvgl.demo_keypad_encoder": {"body": "lvgl.demo_keypad_encoder()", "description": "lvgl.demo_keypad_encoder() - lvgl keypad_encoder demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_keypad_encoder()\n", "prefix": "lvgl.demo_keypad_encoder"}, "lvgl.demo_music": {"body": "lvgl.demo_music()", "description": "lvgl.demo_music() - lvgl music demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_music()\n", "prefix": "lvgl.demo_music"}, "lvgl.demo_printer": {"body": "lvgl.demo_printer()", "description": "lvgl.demo_printer() - lvgl printer demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_printer()\n", "prefix": "lvgl.demo_printer"}, "lvgl.demo_stress": {"body": "lvgl.demo_stress()", "description": "lvgl.demo_stress() - lvgl stress demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_stress()\n", "prefix": "lvgl.demo_stress"}, "lvgl.demo_widgets": {"body": "lvgl.demo_widgets()", "description": "lvgl.demo_widgets() - lvgl widgets demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_widgets()\n", "prefix": "lvgl.demo_widgets"}, "lvgl.indev_drv_register": {"body": "lvgl.indev_drv_register(${1:tp},${2:dtp})", "description": "lvgl.indev_drv_register(tp, dtp) - \u6ce8\u518c\u8f93\u5165\u8bbe\u5907\u9a71\u52a8\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\"pointer\",\u6307\u9488\u7c7b/\u89e6\u6478\u7c7b\u5747\u53ef\uff0c\"keyboard\",\u952e\u76d8\u7c7b\u578b\nstring \u8bbe\u5907\u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\"emulator\",\u6a21\u62df\u5668\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlvgl.indev_drv_register(\"pointer\", \"emulator\")\n", "prefix": "lvgl.indev_drv_register"}, "lvgl.indev_point_emulator_update": {"body": "lvgl.indev_point_emulator_update(${1:x},${2:y},${3:state})", "description": "lvgl.indev_point_emulator_update(x, y, state) - \u66f4\u65b0\u6a21\u62df\u8f93\u5165\u8bbe\u5907\u7684\u5750\u6807\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint y\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint \u72b6\u6001, 0 \u4e3a \u91ca\u653e, 1 \u4e3a\u6309\u4e0b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6a21\u62df\u5728\u5c4f\u5e55\u4e0a\u7684\u70b9\u51fb,\u901a\u8fc7timeout\u6a21\u62df\u957f\u6309\u548c\u77ed\u6309\nsys.taskInit(function(x, y, timeout)\n lvgl.indev_point_emulator_update(x, y, 1)\n sys.wait(timeout)\n lvgl.indev_point_emulator_update(x, y, 0)\nend, 240, 120, 50)\n", "prefix": "lvgl.indev_point_emulator_update"}, "lvgl.indev_kb_update": {"body": "lvgl.indev_kb_update(${1:key})", "description": "lvgl.indev_kb_update(key) - \u66f4\u65b0\u952e\u76d8\u8f93\u5165\u8bbe\u5907\u7684\u6309\u952e\u503c\n\u4f20\u5165\u503c\uff1a\nint \u6309\u952e\u503c\uff0c\u9ed8\u8ba4\u4e3a0\uff0c\u6309\u952e\u62ac\u8d77\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.indev_kb_update"}, "lvgl.gif_create": {"body": "lvgl.gif_create(${1:parent},${2:path})", "description": "lvgl.gif_create(parent, path) - \u521b\u5efagif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6,\u53ef\u4ee5\u662fnil,\u4f46\u901a\u5e38\u4e0d\u4f1a\u662fnil\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil,\u5efa\u8bae\u68c0\u67e5\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_create"}, "lvgl.gif_restart": {"body": "lvgl.gif_restart(${1:gif})", "description": "lvgl.gif_restart(gif) - \u91cd\u65b0\u64ad\u653egif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata gif\u7ec4\u4ef6\u652f\u6301, \u7531gif_create\u65b9\u6cd5\u8fd4\u56de\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_restart"}, "max30102.init": {"body": "max30102.init(${1:i2c_id},${2:int})", "description": "max30102.init(i2c_id,int) - \u521d\u59cb\u5316MAX30102\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid,\u9ed8\u8ba4\u4e3a0\nint int\u5f15\u811a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\nif max30102.init(0,pin.PC05) then\n log.info(\"max30102\", \"init ok\")\nelse\n log.info(\"max30102\", \"init fail\")\nend\n", "prefix": "max30102.init"}, "max30102.get": {"body": "max30102.get()", "description": "max30102.get() - \u83b7\u53d6\u5fc3\u7387\u8840\u6c27(\u5927\u6982\u9700\u898110s\u65f6\u95f4\u6d4b\u91cf)\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nnumber \u5fc3\u7387\nnumber \u8840\u6c27\n", "prefix": "max30102.get"}, "max30102.shutdown": {"body": "max30102.shutdown()", "description": "max30102.shutdown() - \u5173\u95edmax30102\n", "prefix": "max30102.shutdown"}, "mcu.setClk": {"body": "mcu.setClk(${1:mhz})", "description": "mcu.setClk(mhz) - \u8bbe\u7f6e\u4e3b\u9891,\u5355\u4f4dMHZ\n\u4f20\u5165\u503c\uff1a\nint \u4e3b\u9891,\u6839\u636e\u8bbe\u5907\u7684\u4e0d\u540c\u6709\u4e0d\u540c\u7684\u6709\u6548\u503c,\u8bf7\u67e5\u9605\u624b\u518c\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u6ce8\u610f: \u5e76\u975e\u6240\u6709\u6a21\u5757\u90fd\u652f\u6301\u4e3b\u9891\u8c03\u6574,\u8bf7\u67e5\u9605\u624b\u518c\n-- Air101/Air103/Air601 \u652f\u6301\u8bbe\u7f6e\u6210 2/40/80/160/240. \u7279\u522b\u63d0\u9192, \u8bbe\u7f6e\u52302M\u540e, \u5982\u679c\u8981\u4f11\u7720, \u5fc5\u987b\u5148\u8bbe\u7f6e\u523080M\n-- ESP32\u7cfb\u5217\u652f\u6301\u8bbe\u7f6e\u6210 40/80/160/240 , \u9700\u89812024.1.1\u4e4b\u540e\u7684\u56fa\u4ef6\n-- Air780\u7cfb\u5217, Air105, \u4e0d\u652f\u6301\u8bbe\u7f6e\u4e3b\u9891\n-- Air780\u7cfb\u5217, \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\u65f6\u81ea\u52a8\u964d\u9891\u523024M\n\n-- \u8bbe\u7f6e\u523080MHZ\nmcu.setClk(80)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u5230240MHZ\nmcu.setClk(240)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u52302MHZ\nmcu.setClk(2)\nsys.wait(1000)\n", "prefix": "mcu.setClk"}, "mcu.getClk": {"body": "mcu.getClk()", "description": "mcu.getClk() - \u83b7\u53d6\u4e3b\u9891,\u5355\u4f4dMHZ\n\u8fd4\u56de\u503c\uff1a\nint \u82e5\u5931\u8d25\u8fd4\u56de-1,\u5426\u5219\u8fd4\u56de\u4e3b\u9891\u6570\u503c,\u82e5\u7b49\u4e8e0,\u53ef\u80fd\u5904\u4e8e32k\u6676\u632f\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlocal mhz = mcu.getClk()\nprint(\"Boom\", mhz)\n", "prefix": "mcu.getClk"}, "mcu.unique_id": {"body": "mcu.unique_id()", "description": "mcu.unique_id() - \u83b7\u53d6\u8bbe\u5907\u552f\u4e00id. \u6ce8\u610f,\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26,\u5982\u9700\u67e5\u770b\u5efa\u8baetoHex()\u540e\u6253\u5370\n\u8fd4\u56de\u503c\uff1a\nstring \u8bbe\u5907\u552f\u4e00id.\u82e5\u4e0d\u652f\u6301, \u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32.\n\u4f8b\u5b50\uff1a\nlocal unique_id = mcu.unique_id()\nprint(\"unique_id\", unique_id)\n", "prefix": "mcu.unique_id"}, "mcu.ticks": {"body": "mcu.ticks()", "description": "mcu.ticks() - \u83b7\u53d6\u542f\u52a8\u540e\u7684tick\u6570,\u672c\u8eab\u662f\u65e0\u7b26\u53f7\u503c,\u8303\u56f40~0xffffffff,lua\u662f\u6709\u7b26\u53f7\u8ba1\u7b97,\u8ba1\u7b97\u65f6\u8d85\u8fc70x7fffffff\u4f1a\u53d8\u8d1f\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dtick\u503c\n\u4f8b\u5b50\uff1a\nlocal tick = mcu.ticks()\nprint(\"ticks\", tick)\n-- \u5982\u9700\u4e0d\u4f1a\u6ea2\u51fa\u7684\u503c, \u53ef\u7528mcu.ticks32(), \u4e8e2024.5.7\u65b0\u589e\n", "prefix": "mcu.ticks"}, "mcu.hz": {"body": "mcu.hz()", "description": "mcu.hz() - \u83b7\u53d6\u6bcf\u79d2\u7684tick\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nint \u6bcf\u79d2\u7684tick\u6570\u91cf,\u901a\u5e38\u4e3a1000\n\u4f8b\u5b50\uff1a\nlocal hz = mcu.hz()\nprint(\"mcu.hz\", hz)\n", "prefix": "mcu.hz"}, "mcu.reg32": {"body": "mcu.reg32(${1:address},${2:value},${3:mask})", "description": "mcu.reg32(address, value, mask) - \u8bfb\u5199mcu\u768432bit\u5bc4\u5b58\u5668\u6216\u8005ram,\u8c28\u614e\u4f7f\u7528\u5199\u529f\u80fd,\u8bf7\u719f\u6089mcu\u7684\u5bc4\u5b58\u5668\u4f7f\u7528\u65b9\u6cd5\u540e\u518d\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5bc4\u5b58\u5668\u6216\u8005ram\u5730\u5740\nint \u5199\u5165\u7684\u503c,\u5982\u679c\u6ca1\u6709,\u5219\u76f4\u63a5\u8fd4\u56de\u5f53\u524d\u503c\nint \u4f4d\u63a9\u7801,\u53ef\u4ee5\u5bf9\u7279\u5b9a\u51e0\u4e2a\u4f4d\u7f6e\u7684bit\u505a\u4fee\u6539, \u9ed8\u8ba40xffffffff,\u4fee\u6539\u5168\u90e832bit\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u5bc4\u5b58\u7684\u503c\n\u4f8b\u5b50\uff1a\nlocal value = mcu.reg32(0x2009FFFC, 0x01, 0x01) --\u5bf90x2009FFFC\u5730\u5740\u4e0a\u7684\u503c,\u4fee\u6539bit0\u4e3a1\n", "prefix": "mcu.reg32"}, "mcu.x32": {"body": "mcu.x32(${1:value})", "description": "mcu.x32(value) - \u8f6c\u636210\u8fdb\u5236\u6570\u4e3a16\u8fdb\u5236\u5b57\u7b26\u4e32\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u8f6c\u6362\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring 16\u8fdb\u5236\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal value = mcu.x32(0x2009FFFC) --\u8f93\u51fa\"0x2009fffc\"\n", "prefix": "mcu.x32"}, "mcu.tick64": {"body": "mcu.tick64()", "description": "mcu.tick64() - \u83b7\u53d6\u542f\u52a8\u540e\u7684\u9ad8\u7cbe\u5ea6tick\uff0c\u5982\u679c\u652f\u6301bit64\u5e93\uff0c\u53ef\u4ee5\u76f4\u63a5\u8f93\u51fa\u8f6c\u6362\u597d\u7684bit64\u7ed3\u6784\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u8f93\u51fabit64\u7ed3\u6784,true\u662f,\u5176\u4ed6\u90fd\u662ffalse,\u7559\u7a7a\u4e5f\u662ffalse,\u7528\u4e8e\u517c\u5bb9\u65e7\u7684demo\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524dtick\u503c,8\u4e2a\u5b57\u8282\u7684uint64,\u5982\u679c\u652f\u630164bit\u5e93,\u540c\u65f6\u8981\u6c42\u8f93\u51fa64bit\u7ed3\u6784\u7684\u8bdd,\u4f1a\u8f93\u51fa9\u5b57\u8282\u7684string\nint 1us\u6709\u51e0\u4e2atick,0\u8868\u793a\u672a\u77e5\n\u4f8b\u5b50\uff1a\nlocal tick_str, tick_per = mcu.tick64()\nprint(\"ticks\", tick_str, tick_per)\n", "prefix": "mcu.tick64"}, "mcu.dtick64": {"body": "mcu.dtick64(${1:tick1},${2:tick2},${3:check_value})", "description": "mcu.dtick64(tick1, tick2, check_value) - \u8ba1\u7b972\u4e2a64bit tick\u7684\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nstring 64bit\u7684string\nstring 64bit\u7684string\nint \u53c2\u8003\u503c,\u53ef\u9009\u9879,\u5982\u679c\u4e3a0,\u5219\u8fd4\u56de\u7ed3\u679c\u4e2d\u7b2c\u4e00\u4e2a\u9879\u76ee\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nboolean \u4e0e\u53c2\u8003\u503c\u6bd4\u8f83,\u5982\u679c\u5927\u4e8e\u7b49\u4e8e\u4e3atrue,\u53cd\u4e4b\u4e3afalse\nint \u5dee\u503ctick1 - tick2,\u5982\u679c\u8d85\u8fc7\u4e860x7fffffff,\u7ed3\u679c\u53ef\u80fd\u662f\u9519\u7684\n\u4f8b\u5b50\uff1a\nlocal result, diff_tick = mcu.dtick64(tick1, tick2)\nprint(\"ticks\", result, diff_tick)\n", "prefix": "mcu.dtick64"}, "mcu.setXTAL": {"body": "mcu.setXTAL(${1:source_main},${2:source_32k},${3:delay})", "description": "mcu.setXTAL(source_main, source_32k, delay) - \u9009\u62e9\u65f6\u949f\u6e90,\u5f53\u524d\u4ec5air105\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u65f6\u949f\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nboolean \u4f4e\u901f32K\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nint PLL\u7a33\u5b9a\u65f6\u95f4,\u5728\u5207\u6362\u9ad8\u901f\u65f6\u949f\u7684\u65f6\u5019,\u6839\u636e\u786c\u4ef6\u73af\u5883,\u9700\u8981delay\u4e00\u6bb5\u65f6\u95f4\u7b49\u5f85PLL\u7a33\u5b9a,\u9ed8\u8ba4\u662f1200,\u5efa\u8bae\u4e0d\u5c0f\u4e8e1024\n\u4f8b\u5b50\uff1a\nmcu.setXTAL(true, true, 1248) --\u9ad8\u901f\u65f6\u949f\u4f7f\u7528\u5916\u90e8\u65f6\u949f,\u4f4e\u901f32K\u4f7f\u7528\u5916\u90e8\u6676\u632f, delay1248\n", "prefix": "mcu.setXTAL"}, "mcu.hardfault": {"body": "mcu.hardfault(${1:mode})", "description": "mcu.hardfault(mode) - mcu\u6b7b\u673a\u65f6\u5904\u7406\u6a21\u5f0f\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5904\u7406\u6a21\u5f0f\uff0c0\u6b7b\u673a\u505c\u673a\uff0c1\u6b7b\u673a\u540e\u91cd\u542f\uff0c2\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f 3.\u6b7b\u673a\u65f6\u5199\u5165\u5173\u952e\u4fe1\u606f\u5230flash\u540e\u7acb\u523b\u91cd\u542f\n\u4f8b\u5b50\uff1a\nmcu.hardfault(0) --\u6b7b\u673a\u540e\u505c\u673a\uff0c\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5\u72b6\u6001\nmcu.hardfault(1) --\u6b7b\u673a\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u6b63\u5f0f\u4ea7\u54c1\nmcu.hardfault(2) --\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u538b\u529b\u6d4b\u8bd5\u6216\u8005\u6b63\u5f0f\u4ea7\u54c1\n", "prefix": "mcu.hardfault"}, "mcu.iomux": {"body": "mcu.iomux(${1:type},${2:channel},${3:value})", "description": "mcu.iomux(type, channel, value) - \u5728\u5916\u8bbe\u6253\u5f00\u524d\uff0c\u5c06\u5916\u8bbeIO\u590d\u7528\u5230\u975e\u9ed8\u8ba4\u914d\u7f6e\u4e0a\uff0c\u76ee\u524d\u53ea\u652f\u6301Air780E\u7684\u90e8\u5206\u5916\u8bbe\u590d\u7528\u5230\u5176\u4ed6\u914d\u7f6e\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e34\u65f6\u63a5\u53e3\uff0c\u5982\u679c\u540e\u7eed\u6709\u66f4\u5408\u9002\u7684api\uff0c\u672c\u63a5\u53e3\u5c06\u4e0d\u518d\u66f4\u65b0\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709mcu.UART,mcu.I2C\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\nint \u65b0\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u9700\u8981\u6839\u636e\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\n\u4f8b\u5b50\uff1a\nmcu.iomux(mcu.UART, 2, 1) -- Air780E\u7684UART2\u590d\u7528\u5230gpio12\u548cgpio13(Air780EG\u9ed8\u8ba4\u662f\u8fd9\u4e2a\u590d\u7528\uff0c\u4e0d\u8981\u52a8)\nmcu.iomux(mcu.UART, 2, 2) -- Air780E\u7684UART2\u590d\u7528\u5230gpio6\u548cgpio7\nmcu.iomux(mcu.I2C, 0, 1) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio12\u548cgpio13\nmcu.iomux(mcu.I2C, 0, 2) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio16\u548cgpio17\nmcu.iomux(mcu.I2C, 1, 1) -- Air780E\u7684I2C1\u590d\u7528\u5230gpio4\u548cgpio5\n", "prefix": "mcu.iomux"}, "mcu.altfun": {"body": "mcu.altfun(${1:type},${2:sn},${3:pad_index},${4:alt_fun},${5:is_input})", "description": "mcu.altfun(type, sn, pad_index, alt_fun, is_input) - IO\u5916\u8bbe\u529f\u80fd\u590d\u7528\u9009\u62e9\uff0c\u6ce8\u610f\u666e\u901aMCU\u662f\u4ee5GPIO\u53f7\u4e3a\u5e8f\u53f7\uff0c\u4f46\u662f\u4e13\u7528SOC\uff0c\u6bd4\u5982CAT1\u7684\uff0c\u662f\u4ee5PAD\u53f7\u4e3a\u5e8f\u53f7\u3002\u672c\u51fd\u6570\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u6709mcu.UART,mcu.I2C,mcu.SPI,mcu.PWM,mcu.GPIO,mcu.I2S,mcu.LCD,mcu.CAM\uff0c\u5177\u4f53\u9700\u8981\u770b\u5e73\u53f0\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\u5982\u679c\u662fmcu.GPIO\uff0c\u5219\u662fGPIO\u53f7\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint pad\u53f7\uff0c\u5982\u679c\u7559\u7a7a\u4e0d\u5199\uff0c\u5219\u8868\u793a\u6e05\u9664\u914d\u7f6e\uff0c\u4f7f\u7528\u5e73\u53f0\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint \u590d\u7528\u529f\u80fd\u5e8f\u53f7\uff0c0~N\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nboolean \u662f\u5426\u662f\u8f93\u5165\u529f\u80fd\uff0ctrue\u662f\uff0c\u7559\u7a7a\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u4ee5 Air780EP \u4e3a\u4f8b\n-- \u5c06GPIO46\u6620\u5c04\u5230paddr 32 alt 1\nmcu.altfun(mcu.GPIO, 46, 32, 1, 0)\n-- mcu.altfun(mcu.GPIO, 46) -- \u8fd8\u539f\u6210\u9ed8\u8ba4\u914d\u7f6e\n\n-- UART2\u590d\u7528\u5230paddr 25/26 alt 3\nmcu.altfun(mcu.UART,2, 25, 3, 1)\nmcu.altfun(mcu.UART,2, 26, 3, 0)\n", "prefix": "mcu.altfun"}, "mcu.ticks2": {"body": "mcu.ticks2(${1:mode})", "description": "mcu.ticks2(mode) - \u83b7\u53d6\u9ad8\u7cbe\u5ea6\u7684\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f, \u770b\u540e\u9762\u7684\u7528\u6cd5\u8bf4\u660e\n\u8fd4\u56de\u503c\uff1a\nint \u6839\u636emode\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u7684\u542b\u4e49\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.7\u65b0\u589e\n-- \u4e0emcu.ticks()\u7684\u533a\u522b\u662f,\u5e95\u5c42\u8ba1\u6570\u5668\u662f64bit\u7684, \u5728\u53ef\u9884\u8ba1\u7684\u5c06\u6765\u4e0d\u4f1a\u6ea2\u51fa\n-- \u6240\u4ee5\u672c\u51fd\u6570\u8fd4\u56de\u7684\u503c\u603b\u662f\u9012\u589e\u7684, \u800c\u4e1432bit\u56fa\u4ef6\u4e5f\u80fd\u5904\u7406\n\n-- \u6a21\u5f0f\u53ef\u9009\u503c \u53ca \u5bf9\u5e94\u7684\u8fd4\u56de\u503c\n-- 0: \u8fd4\u56de\u5fae\u79d2\u6570, \u4ee5\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890us \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 1: \u8fd4\u56de\u6beb\u79d2\u6570, \u4ee5\u5343\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890ms \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 2: \u8fd4\u56de\u79d2\u6570, \u4ee5\u767e\u4e07\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890s \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n\nlocal us_h, us_l = mcu.ticks2(0)\nlocal ms_h, ms_l = mcu.ticks2(1)\nlocal sec_h, sec_l = mcu.ticks2(2)\nlog.info(\"us_h\", us_h, \"us_l\", us_l)\nlog.info(\"ms_h\", ms_h, \"ms_l\", ms_l)\nlog.info(\"sec_h\", sec_h, \"sec_l\", sec_l)\n", "prefix": "mcu.ticks2"}, "mcu.XTALRefOutput": {"body": "mcu.XTALRefOutput(${1:source_main},${2:source_32k})", "description": "mcu.XTALRefOutput(source_main, source_32k) - \u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\nboolean \u4f4e\u901f32K\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5f53\u524d\u4ec5Air780EP\u7cfb\u5217\u652f\u6301\nmcu.XTALRefOutput(true, false) --\u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa,\u4f4e\u901f32K\u4e0d\u8f93\u51fa\n", "prefix": "mcu.XTALRefOutput"}, "miniz.compress": {"body": "miniz.compress(${1:data},${2:flags})", "description": "miniz.compress(data, flags) - \u5feb\u901f\u538b\u7f29,\u9700\u8981165kb\u7684\u7cfb\u7edf\u5185\u5b58\u548c32kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k.\nflags \u538b\u7f29\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.WRITE_ZLIB_HEADER , \u5373\u5199\u5165zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\nend\n\n", "prefix": "miniz.compress"}, "miniz.uncompress": {"body": "miniz.uncompress(${1:data},${2:flags})", "description": "miniz.uncompress(data, flags) - \u5feb\u901f\u89e3\u538b,\u9700\u898132kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e, \u89e3\u538b\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nflags \u89e3\u538b\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.PARSE_ZLIB_HEADER , \u5373\u89e3\u6790zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\n\n local udata = miniz.uncompress(cdata)\n log.info(\"miniz\", \"udata\", udata)\nend\n", "prefix": "miniz.uncompress"}, "mlx90640.init": {"body": "mlx90640.init(${1:i2c_id},${2:refresh_rate)(\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3},${3:\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3})", "description": "mlx90640.init(i2c_id,refresh_rate) (\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3,\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3) - \u521d\u59cb\u5316MLX90640\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid\u6216\u8005\u8f6fi2c\u5bf9\u8c61,\u9ed8\u8ba4\u4e3a0\nint \u4f20\u611f\u5668\u7684\u6d4b\u91cf\u901f\u7387,\u9ed8\u8ba4\u4e3a4Hz\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\ni2c.setup(i2cid,i2c_speed)\nif mlx90640.init(0,mlx90640.FPS4HZ) then\n log.info(\"mlx90640\", \"init ok\")\n sys.wait(500) -- \u7a0d\u7b49\u7247\u523b\n while 1 do\n mlx90640.feed() -- \u53d6\u4e00\u5e27\u6570\u636e\n mlx90640.draw2lcd(0, 0 ,1)-- \u9700\u63d0\u524d\u628alcd\u521d\u59cb\u5316\u597d\n sys.wait(250) -- \u9ed8\u8ba4\u662f4HZ\n end\nelse\n log.info(\"mlx90640\", \"init fail\")\nend\n\n", "prefix": "mlx90640.init"}, "mlx90640.feed": {"body": "mlx90640.feed()", "description": "mlx90640.feed() - \u53d6\u4e00\u5e27\u6570\u636e\n", "prefix": "mlx90640.feed"}, "mlx90640.raw_data": {"body": "mlx90640.raw_data()", "description": "mlx90640.raw_data() - \u83b7\u53d6\u5e95\u5c42\u88f8\u6570\u636e,\u6d6e\u70b9\u6570\u77e9\u9635\n\u8fd4\u56de\u503c\uff1a\ntable \u6d6e\u70b9\u6570\u6570\u636e,768\u4e2a\u50cf\u7d20\u5bf9\u5e94\u7684\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_data"}, "mlx90640.raw_point": {"body": "mlx90640.raw_point(${1:index})", "description": "mlx90640.raw_point(index) - \u83b7\u53d6\u5355\u4e00\u70b9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u7d22\u5f15\u503c(0-767)\n\u8fd4\u56de\u503c\uff1a\nnumber \u5355\u70b9\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_point"}, "mlx90640.ta_temp": {"body": "mlx90640.ta_temp()", "description": "mlx90640.ta_temp() - \u83b7\u53d6\u5916\u58f3\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5916\u58f3\u6e29\u5ea6\n", "prefix": "mlx90640.ta_temp"}, "mlx90640.max_temp": {"body": "mlx90640.max_temp()", "description": "mlx90640.max_temp() - \u83b7\u53d6\u6700\u9ad8\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u9ad8\u6e29\u5ea6\nnumber \u6700\u9ad8\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.max_temp"}, "mlx90640.min_temp": {"body": "mlx90640.min_temp()", "description": "mlx90640.min_temp() - \u83b7\u53d6\u6700\u4f4e\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u4f4e\u6e29\u5ea6\nnumber \u6700\u4f4e\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.min_temp"}, "mlx90640.average_temp": {"body": "mlx90640.average_temp()", "description": "mlx90640.average_temp() - \u83b7\u53d6\u5e73\u5747\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5e73\u5747\u6e29\u5ea6\n", "prefix": "mlx90640.average_temp"}, "mlx90640.get_vdd": {"body": "mlx90640.get_vdd()", "description": "mlx90640.get_vdd() - \u83b7\u53d6vdd\n\u8fd4\u56de\u503c\uff1a\nnumber vdd\n", "prefix": "mlx90640.get_vdd"}, "mlx90640.draw2lcd": {"body": "mlx90640.draw2lcd(${1:x},${2:y},${3:fold})", "description": "mlx90640.draw2lcd(x, y, fold) - \u7ed8\u5236\u5230lcd\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u89d2x\u5750\u6807\nint \u5de6\u4e0a\u89d2y\u5750\u6807\nint \u653e\u5927\u500d\u6570,\u5fc5\u987b\u4e3a2\u7684\u6307\u6570\u500d(1,2,4,8,16...)\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "mlx90640.draw2lcd"}, "mobile.imei": {"body": "mobile.imei(${1:index})", "description": "mobile.imei(index) - \u83b7\u53d6IMEI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMEI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imei"}, "mobile.imsi": {"body": "mobile.imsi(${1:index})", "description": "mobile.imsi(index) - \u83b7\u53d6IMSI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMSI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imsi"}, "mobile.sn": {"body": "mobile.sn()", "description": "mobile.sn() - \u83b7\u53d6SN\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684SN\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil. \u6ce8\u610f, SN\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u51fa\u5382\u672a\u5fc5\u6709\u5199SN\n-- \u4e00\u822c\u7528\u9014\u7684\u552f\u4e00id, \u53ef\u4ee5\u7528mobile.imei()\u4ee3\u66ff\n-- \u5982\u9700\u8981\u771f\u6b63\u7684\u552f\u4e00ID, \u4f7f\u7528 mcu.unique_id()\n", "prefix": "mobile.sn"}, "mobile.muid": {"body": "mobile.muid()", "description": "mobile.muid() - \u83b7\u53d6MUID\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MUID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.muid"}, "mobile.iccid": {"body": "mobile.iccid(${1:id})", "description": "mobile.iccid(id) - \u83b7\u53d6\u6216\u8bbe\u7f6eICCID\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring ICCID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.iccid"}, "mobile.number": {"body": "mobile.number(${1:id})", "description": "mobile.number(id) - \u83b7\u53d6\u624b\u673a\u5361\u53f7\uff0c\u6ce8\u610f\uff0c\u53ea\u6709\u5199\u5165\u4e86\u624b\u673a\u53f7\u624d\u80fd\u8bfb\u51fa\uff0c\u56e0\u6b64\u6709\u53ef\u80fd\u8bfb\u51fa\u6765\u662f\u7a7a\u7684\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring number\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.number"}, "mobile.simid": {"body": "mobile.simid(${1:id})", "description": "mobile.simid(id) - \u83b7\u53d6\u5f53\u524dSIM\u5361\u69fd,\u6216\u8005\u5207\u6362\u5361\u69fd\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u5982\u679c\u652f\u6301\u53cc\u5361\uff0c\u6bd4\u5982EC618\uff0c\u53ef\u4ee5\u586b2\u6765\u81ea\u9002\u5e94\uff0c\u4f46\u662f\u4f1a\u5360\u7528\u63894\u4e2aIO(gpio4/5/6/23)\u3002\u5982\u679c\u4e0d\u586b\u5c31\u76f4\u63a5\u8bfb\u53d6\u5f53\u524d\u5361\u69fd\nboolean \u662f\u5426\u4f18\u5148\u7528SIM0\uff0c\u53ea\u6709SIM\u5361\u7f16\u53f7\u51992\u81ea\u9002\u5e94\u624d\u6709\u7528\uff01\uff01\uff01\u3002true\u4f18\u5148\u7528SIM0\uff0cfalse\u5219\u7531\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\uff0c\u652f\u6301\u53cc\u5361\u53cc\u5f85SIM0\u4f18\u5148\uff0c\u4e0d\u652f\u6301\u7684\u662f\u4e0a\u4e00\u6b21\u68c0\u6d4b\u5230\u7684\u4f18\u5148\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5fc5\u987b\u5728\u5f00\u673a\u5c31\u914d\u7f6e\uff0c\u5426\u5219\u5c31\u65e0\u6548\u4e86\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsim\u5361\u69fd\u7f16\u53f7,\u82e5\u5931\u8d25\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\nmobile.simid(0) -- \u56fa\u5b9a\u4f7f\u7528SIM0\nmobile.simid(1) -- \u56fa\u4ef6\u4f7f\u7528SIM1\nmobile.simid(2) -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4f18\u5148\u7ea7\u770b\u5177\u4f53\u5e73\u53f0\nmobile.simid(2, true) -- -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4e14SIM0\u4f18\u5148\n-- \u63d0\u9192, \u81ea\u52a8\u8bc6\u522b\u662f\u4f1a\u589e\u52a0\u65f6\u95f4\u7684\n", "prefix": "mobile.simid"}, "mobile.simPin": {"body": "mobile.simPin(${1:id},${2:operation},${3:pin1},${4:pin2})", "description": "mobile.simPin(id,operation,pin1,pin2) - \u68c0\u6d4b\u5f53\u524dSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u5bf9SIM\u5361\u7684PIN\u7801\u505a\u76f8\u5173\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u652f\u6301\u53cc\u5361\u53cc\u5f85\u7684\u624d\u9700\u8981\u9009\u62e9\nint PIN\u7801\u64cd\u4f5c\u7c7b\u578b\uff0c\u53ea\u80fd\u662fmobile.PIN_XXXX\uff0c\u4e0d\u64cd\u4f5c\u5c31\u7559\u7a7a\nstring \u66f4\u6362pin\u65f6\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u9a8c\u8bc1\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u89e3\u9501pin\u7801\u65f6\u7684PUK\uff0c4~8\u5b57\u8282\nstring \u66f4\u6362pin\u7801\u64cd\u4f5c\u65f6\u7684\u65b0\u7684pin\u7801\uff0c\u89e3\u9501pin\u7801\u65f6\u7684\u65b0PIN\uff0c4~8\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u5f53\u65e0PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56deSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u6709PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56de\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\nlocal cpin_is_ready = mobile.simPin() -- \u5f53\u524dsim\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u4e00\u822c\u8fd4\u56defalse\u5c31\u662f\u6ca1\u5361\nlocal succ = mobile.simPin(0, mobile.PIN_VERIFY, \"1234\") -- \u8f93\u5165pin\u7801\u9a8c\u8bc1\n", "prefix": "mobile.simPin"}, "mobile.rtime": {"body": "mobile.rtime(${1:time},${2:auto_reset_stack},${3:data_first})", "description": "mobile.rtime(time, auto_reset_stack, data_first) - \u8bbe\u7f6eRRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\u95f4\u9694\uff0c\u5f53\u5f00\u542f\u65f6\u540e\uff0c\u9047\u5230\u6781\u5f31\u4fe1\u53f7+\u9891\u7e41\u6570\u636e\u64cd\u4f5c\u53ef\u80fd\u4f1a\u5f15\u8d77\u7f51\u7edc\u4e25\u91cd\u6545\u969c\uff0c\u56e0\u6b64\u9700\u8981\u989d\u5916\u8bbe\u7f6e\u81ea\u52a8\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nint RRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\uff0c\u7b49\u540c\u4e8eAir724\u7684AT+RTIME\uff0c\u5355\u4f4d\u79d2\uff0c\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u505c\u7528\uff0c\u4e0d\u8981\u8d85\u8fc720\u79d2\uff0c\u6ca1\u6709\u610f\u4e49\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u65f6\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\u65f6\u95f4\u5219\u81ea\u52a8\u5f00\u542f\u3002\u672c\u53c2\u6570\u4e8e2023\u5e749\u670814\u65e5\u5df2\u5e9f\u5f03\nboolean \u662f\u5426\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0ctrue\u542f\u7528\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u4e3afalse\uff0c\u5f00\u542f\u540e\u5fc5\u987b\u7b49\u5230TCP\u6570\u636eACK\u6216\u8005\u8d85\u65f6\u5931\u8d25\uff0c\u6216\u8005socket CONNECT\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u6216\u8005\u5931\u8d25\uff09\u624d\u5141\u8bb8RRC\u63d0\u524d\u91ca\u653e\uff0c\u53ef\u80fd\u4f1a\u589e\u52a0\u529f\u8017\u3002\u672c\u53c2\u6570\u4e8e2024\u5e748\u670812\u65e5\u542f\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.rtime(3) --\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\u63d0\u524d\u91ca\u653eRRC\nmobile.rtime(3,nil,true) --\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0c\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\uff0c\u63d0\u524d\u91ca\u653eRRC\n", "prefix": "mobile.rtime"}, "mobile.setAuto": {"body": "mobile.setAuto(${1:check_sim_period},${2:get_cell_period},${3:search_cell_time},${4:auto_reset_stack},${5:network_check_period})", "description": "mobile.setAuto(check_sim_period, get_cell_period, search_cell_time, auto_reset_stack, network_check_period) - \u8bbe\u7f6e\u4e00\u4e9b\u8f85\u52a9\u5468\u671f\u6027\u6216\u8005\u81ea\u52a8\u529f\u80fd\uff0c\u76ee\u524d\u652f\u6301SIM\u5361\u6682\u65f6\u8131\u79bb\u540e\u6062\u590d\uff0c\u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\uff0c\u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u81ea\u52a8\u6062\u590d\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5efa\u8bae5000~10000\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0c\u4e0d\u80fd\u518d\u540c\u4e00\u65f6\u95f4\u4f7f\u7528\uff0c\u5fc5\u987b\u9519\u5f00\u6267\u884c\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u4f1a\u589e\u52a0\u90e8\u5206\u529f\u8017\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u6bcf\u6b21\u641c\u7d22\u5c0f\u533a\u65f6\u6700\u5927\u641c\u7d22\u65f6\u95f4\uff0c\u5355\u4f4d\u79d2\u3002\u4e0d\u8981\u8d85\u8fc78\u79d2\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u5f00\u59cb\u72b6\u6001\u662ffalse\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u6539\u53d8\nint \u8bbe\u7f6e\u5b9a\u65f6\u68c0\u6d4b\u7f51\u7edc\u662f\u5426\u6b63\u5e38\u5e76\u4e14\u5728\u68c0\u6d4b\u5230\u957f\u65f6\u95f4\u65e0\u7f51\u65f6\u901a\u8fc7\u91cd\u542f\u534f\u8bae\u6808\u6765\u6062\u590d\uff0c\u65e0\u7f51\u6062\u590d\u65f6\u957f\uff0c\u5355\u4f4dms\uff0c\u5efa\u8bae60000\u4ee5\u4e0a\uff0c\u4e3a\u7f51\u7edc\u641c\u7d22\u7f51\u7edc\u4fdd\u7559\u8db3\u591f\u7684\u65f6\u95f4\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u66f4\u6539\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mobile.setAuto"}, "mobile.apn": {"body": "mobile.apn(${1:index},${2:cid},${3:new_apn_name},${4:user_name},${5:password},${6:ip_type},${7:protocol})", "description": "mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol) - \u83b7\u53d6\u6216\u8bbe\u7f6eAPN\uff0c\u8bbe\u7f6eAPN\u5fc5\u987b\u5728\u5165\u7f51\u524d\u5c31\u8bbe\u7f6e\u597d\uff0c\u6bd4\u5982\u5728SIM\u5361\u8bc6\u522b\u5b8c\u6210\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nint cid, \u9ed8\u8ba40\uff0c\u5982\u679c\u8981\u7528\u975e\u9ed8\u8ba4APN\u6765\u6fc0\u6d3b\uff0c\u5fc5\u987b>0\nstring \u65b0\u7684APN,\u4e0d\u586b\u5c31\u662f\u83b7\u53d6APN, \u586b\u4e86\u5c31\u662f\u8bbe\u7f6eAPN, \u662f\u5426\u652f\u6301\u8bbe\u7f6e\u53d6\u51b3\u4e8e\u5e95\u5c42\u5b9e\u73b0\nstring \u65b0\u7684APN\u7684username,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nstring \u65b0\u7684APN\u7684password,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nint \u6fc0\u6d3bAPN\u65f6\u7684IP TYPE,1=IPV4 2=IPV6 3=IPV4V6,\u9ed8\u8ba4\u662f1\nint \u6fc0\u6d3bAPN\u65f6,\u5982\u679c\u9700\u8981username\u548cpassword,\u5c31\u8981\u5199\u9274\u6743\u534f\u8bae\u7c7b\u578b,1~3,\u9ed8\u8ba43,\u4ee3\u88681\u548c2\u90fd\u5c1d\u8bd5\u4e00\u4e0b\u3002\u4e0d\u9700\u8981\u9274\u6743\u7684\u51990\nboolean \u662f\u5426\u5220\u9664APN,true\u662f,\u5176\u4ed6\u90fd\u5426,\u53ea\u6709\u53c2\u65703\u65b0\u7684APN\u4e0d\u662fstring\u7684\u65f6\u5019\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u5230\u7684\u9ed8\u8ba4APN\u503c,\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmobile.apn(0,1,\"cmiot\",\"\",\"\",nil,0) -- \u79fb\u52a8\u516c\u7f51\u5361\u8bbe\u7f6eAPN\u4e3acmiot,\u4e00\u822c\u4e0d\u7528\u8bbe\u7f6e\nmobile.apn(0,1,\"name\",\"user\",\"password\",nil,3) -- \u4e13\u7f51\u5361\u8bbe\u7f6e\u7684demo\uff0cname\uff0cuser\uff0cpassword\u8054\u7cfb\u5361\u5546\u83b7\u53d6\n", "prefix": "mobile.apn"}, "mobile.ipv6": {"body": "mobile.ipv6(${1:onff})", "description": "mobile.ipv6(onff) - \u662f\u5426\u9ed8\u8ba4\u5f00\u542fIPV6\u529f\u80fd\uff0c\u5fc5\u987b\u5728LTE\u7f51\u7edc\u8fde\u63a5\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u5173 true\u5f00\u542f false \u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nboolean true \u5f53\u524d\u662f\u5f00\u542f\u7684\uff0cfalse \u5f53\u524d\u662f\u5173\u95ed\u7684\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u5f00\u542fipv6\u540e, \u5f00\u673a\u8054\u7f51\u4f1a\u61622~3\u79d2\n", "prefix": "mobile.ipv6"}, "mobile.csq": {"body": "mobile.csq()", "description": "mobile.csq() - \u83b7\u53d6csq\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dCSQ\u503c, \u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 - 31, \u8d8a\u5927\u8d8a\u597d\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, 4G\u6a21\u5757\u7684CSQ\u503c\u4ec5\u4f9b\u53c2\u8003, rsrp/rsrq\u624d\u662f\u771f\u6b63\u7684\u4fe1\u53f7\u5f3a\u5ea6\u6307\u6807\n", "prefix": "mobile.csq"}, "mobile.rssi": {"body": "mobile.rssi()", "description": "mobile.rssi() - \u83b7\u53d6rssi\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drssi\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 \u5230 -114, \u8d8a\u5c0f\u8d8a\u597d\n", "prefix": "mobile.rssi"}, "mobile.rsrp": {"body": "mobile.rsrp()", "description": "mobile.rsrp() - \u83b7\u53d6rsrp,\u53c2\u8003\u4fe1\u53f7\u63a5\u6536\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrp\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -44 ~ -140 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrp"}, "mobile.rsrq": {"body": "mobile.rsrq()", "description": "mobile.rsrq() - \u83b7\u53d6rsrq,\u53c2\u8003\u4fe1\u53f7\u53d1\u9001\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -3 ~ -19.5 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrq"}, "mobile.snr": {"body": "mobile.snr()", "description": "mobile.snr() - \u83b7\u53d6snr,\u4fe1\u566a\u6bd4\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsnq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0.\u8303\u56f4 0 - 30, \u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.snr"}, "mobile.eci": {"body": "mobile.eci()", "description": "mobile.eci() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684ECI(E-UTRAN Cell Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.eci"}, "mobile.tac": {"body": "mobile.tac()", "description": "mobile.tac() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684TAC\u6216\u8005LAC\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1. \u5982\u679c\u5c1a\u672a\u6ce8\u518c\u5230\u7f51\u7edc,\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.7.9 \u65b0\u589e\n", "prefix": "mobile.tac"}, "mobile.enbid": {"body": "mobile.enbid()", "description": "mobile.enbid() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684eNBID(eNodeB Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524denbid\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.enbid"}, "mobile.scell": {"body": "mobile.scell()", "description": "mobile.scell() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u670d\u52a1\u5c0f\u533a\u7684\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2024.9.12 \u65b0\u589e\nlog.info(\"cell\", json.encode(mobile.scell()))\n-- \u8fd4\u56de\u503c\u793a\u4f8b\n{\n \"mnc\": 11,\n \"mcc\": 460,\n \"rssi\": -78,\n \"pci\": 115,\n \"rsrp\": -107,\n \"tac\": 30005,\n \"eci\": 124045360,\n \"cid\": 124045360,\n \"rsrq\": -9,\n \"snr\": 15,\n \"earfcn\": 1850\n}\n", "prefix": "mobile.scell"}, "mobile.flymode": {"body": "mobile.flymode(${1:index},${2:enable})", "description": "mobile.flymode(index, enable) - \u8fdb\u51fa\u98de\u884c\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nbool \u662f\u5426\u8bbe\u7f6e\u4e3a\u98de\u884c\u6a21\u5f0f,true\u4e3a\u8bbe\u7f6e, false\u4e3a\u9000\u51fa,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u539f\u98de\u884c\u6a21\u5f0f\u7684\u72b6\u6001\n", "prefix": "mobile.flymode"}, "mobile.syncTime": {"body": "mobile.syncTime(${1:enable})", "description": "mobile.syncTime(enable) - \u914d\u7f6e\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\u5f00\u5173\uff0c\u9ed8\u8ba4\u5f00\u542f\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed, nil\u4e0d\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nbool \u5f53\u524d\u5f00\u5173\u72b6\u6001\n\u4f8b\u5b50\uff1a\nmobile.syncTime() --\u83b7\u53d6\u5f53\u524d\u5f00\u5173\u72b6\u6001\nmobile.syncTime(false) --\u5173\u95ed\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\n", "prefix": "mobile.syncTime"}, "mobile.status": {"body": "mobile.status()", "description": "mobile.status() - \u83b7\u53d6\u7f51\u7edc\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7f51\u7edc\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u72b6\u6001\u63cf\u8ff0\n-- 0:\u7f51\u7edc\u672a\u6ce8\u518c\n-- 1:\u7f51\u7edc\u5df2\u6ce8\u518c\n-- 2:\u6b63\u5728\u641c\u7f51\u4e2d\n-- 3:\u7f51\u7edc\u6ce8\u518c\u88ab\u62d2\u7edd\n-- 4:\u7f51\u7edc\u72b6\u6001\u672a\u77e5\n-- 5:\u6f2b\u6e38,\u4e14\u5df2\u6ce8\u518c\n-- 6:\u4ec5SMS\u53ef\u7528\n-- 7:\u4ec5SMS\u53ef\u7528,\u4e14\u6f2b\u6e38\u72b6\u6001\n-- 8:\u4ec5\u7d27\u6025\u547c\u53eb. \u6ce8\u610f, \u56fd\u5185\u4e0d\u652f\u6301\u6b64\u72b6\u6001,\u6a21\u5757\u4e5f\u4e0d\u652f\u6301\u7d27\u6025\u547c\u53eb\n\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\u5224\u65ad\u8054\u7f51\u72b6\u6001, \u5efa\u8bae\u4f7f\u7528socket.localIP()\u6765\u5224\u65ad\n", "prefix": "mobile.status"}, "mobile.getCellInfo": {"body": "mobile.getCellInfo()", "description": "mobile.getCellInfo() - \u83b7\u53d6\u57fa\u7ad9\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u57fa\u7ad9\u6570\u636e\u7684\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \u4ece2023.06.20\u5f00\u59cb, \u9700\u8981\u4e3b\u52a8\u8bf7\u6c42\u4e00\u6b21reqCellInfo\u624d\u4f1a\u6709\u57fa\u7ad9\u6570\u636e.\n\n--\u793a\u4f8b\u8f93\u51fa(\u539f\u59cb\u6570\u636e\u662ftable, \u4e0b\u9762\u662fjson\u683c\u5f0f\u5316\u540e\u7684\u5185\u5bb9)\n--[[\n[\n {\"rsrq\":-10,\"rssi\":-55,\"cid\":124045360,\"mnc\":17,\"pci\":115,\"earfcn\":1850,\"snr\":15,\"rsrp\":-85,\"mcc\":1120,\"tdd\":0},\n {\"pci\":388,\"rsrq\":-11,\"mnc\":17,\"earfcn\":2452,\"snr\":5,\"rsrp\":-67,\"mcc\":1120,\"cid\":124045331},\n {\"pci\":100,\"rsrq\":-9,\"mnc\":17,\"earfcn\":75,\"snr\":17,\"rsrp\":-109,\"mcc\":1120,\"cid\":227096712}\n]\n]]\n\nmobile.reqCellInfo(60)\n-- \u8ba2\u9605\nsys.subscribe(\"CELL_INFO_UPDATE\", function()\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\nend)\n\n-- \u5b9a\u671f\u8f6e\u8bad\u5f0f\nsys.taskInit(function()\n sys.wait(3000)\n while 1 do\n mobile.reqCellInfo(15)\n sys.waitUntil(\"CELL_INFO_UPDATE\", 15000)\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\n end\nend)\n", "prefix": "mobile.getCellInfo"}, "mobile.reqCellInfo": {"body": "mobile.reqCellInfo(${1:timeout})", "description": "mobile.reqCellInfo(timeout) - \u53d1\u8d77\u57fa\u7ad9\u4fe1\u606f\u67e5\u8be2,\u542b\u4e34\u8fd1\u5c0f\u533a\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u79d2,\u9ed8\u8ba415. \u6700\u5c115, \u6700\u9ad860\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003 mobile.getCellInfo \u51fd\u6570\n", "prefix": "mobile.reqCellInfo"}, "mobile.lockCell": {"body": "mobile.lockCell(${1:mode},${2:earfcn},${3:pci})", "description": "mobile.lockCell(mode, earfcn, pci) - \u9501\u5b9a/\u89e3\u9501\u5c0f\u533a\uff0c\u4ec5\u7528\u4e8e\u5916\u573a\u6d4b\u8bd5\uff0c\u6ca1\u63a5\u89e6\u8fc7\u7684\uff0c\u6216\u8005\u751f\u4ea7\u73af\u5883\u4e2d\u8bf7\u52ff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u64cd\u4f5c\u7801 0\u5220\u9664\u4f18\u5148\u7684\u9891\u70b9\uff0c1\u8bbe\u7f6e\u4f18\u5148\u9891\u70b9\uff0c2\u9501\u5b9a\u5c0f\u533a\uff0c3\u89e3\u9501\u5c0f\u533a\nint \u4e0b\u884c\u9891\u70b9\nint phycellid\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529ftrue \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nmobile.lockCell(2,1860,32) --\u9501\u5b9a\u5c0f\u533a\nmobile.lockCell(3) --\u89e3\u9501\u5c0f\u533a\n", "prefix": "mobile.lockCell"}, "mobile.reset": {"body": "mobile.reset()", "description": "mobile.reset() - \u91cd\u542f\u534f\u8bae\u6808\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u91cd\u542fLTE\u534f\u8bae\u6808\nmobile.reset()\n", "prefix": "mobile.reset"}, "mobile.dataTraffic": {"body": "mobile.dataTraffic(${1:clearUplink},${2:clearDownlink})", "description": "mobile.dataTraffic(clearUplink, clearDownlink) - \u6570\u636e\u91cf\u6d41\u91cf\u5904\u7406\n\u4f20\u5165\u503c\uff1a\nboolean \u6e05\u7a7a\u4e0a\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\nboolean \u6e05\u7a7a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nint \u4e0a\u884c\u6d41\u91cfGB\nint \u4e0a\u884c\u6d41\u91cfB\nint \u4e0b\u884c\u6d41\u91cfGB\nint \u4e0b\u884c\u6d41\u91cfB\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\n-- \u4e0a\u884c\u6d41\u91cf\u503cByte = uplinkGB * 1024 * 1024 * 1024 + uplinkB\n-- \u4e0b\u884c\u6d41\u91cf\u503cByte = downlinkGB * 1024 * 1024 * 1024 + downlinkB\nlocal uplinkGB, uplinkB, downlinkGB, downlinkB = mobile.dataTraffic()\n\n-- \u6e05\u7a7a\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\nmobile.dataTraffic(true, true)\n\n-- \u4ec5\u8bb0\u5f55\u5f00\u673a\u540e\u7684\u6d41\u91cf,\u590d\u4f4d/\u91cd\u542f\u4f1a\u5f52\u96f6\n", "prefix": "mobile.dataTraffic"}, "mobile.config": {"body": "mobile.config(${1:item},${2:value})", "description": "mobile.config(item, value) - \u7f51\u7edc\u7279\u6b8a\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f6e\u9879\u76ee\uff0c\u770bmobile.CONF_XXX\nint \u914d\u7f6e\u503c,\u6839\u636e\u5177\u4f53\u914d\u7f6e\u7684item\u51b3\u5b9a\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n--\u9488\u5bf9\u4e0d\u540c\u5e73\u53f0\u6709\u4e0d\u540c\u7684\u914d\u7f6e\uff0c\u8c28\u614e\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u6709EC618/EC718\u7cfb\u5217\n\n-- EC618\u914d\u7f6e\u5c0f\u533a\u91cd\u9009\u4fe1\u53f7\u5dee\u503c\u95e8\u9650\uff0c\u4e0d\u80fd\u5927\u4e8e15dbm\uff0c\u5fc5\u987b\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u624d\u80fd\u7528\nmobile.flymode(0,true)\nmobile.config(mobile.CONF_RESELTOWEAKNCELL, 15)\nmobile.config(mobile.CONF_STATICCONFIG, 1) --\u5f00\u542f\u7f51\u7edc\u9759\u6001\u4f18\u5316\nmobile.flymode(0,false)\n\n-- EC618\u8bbe\u7f6eSIM\u5199\u5165\u6b21\u6570\u7684\u7edf\u8ba1\n-- \u5173\u95ed\u7edf\u8ba1\nmobile.config(mobile.CONF_SIM_WC_MODE, 0)\n-- \u5f00\u542f\u7edf\u8ba1, \u9ed8\u8ba4\u4e5f\u662f\u5f00\u542f\u7684.\nmobile.config(mobile.CONF_SIM_WC_MODE, 1)\n-- \u8bfb\u53d6\u7edf\u8ba1\u503c,\u5f02\u6b65, \u9700\u8981\u901a\u8fc7\u7cfb\u7edf\u6d88\u606fSIM_IND\u83b7\u53d6\nsys.subscribe(\"SIM_IND\", function(stats, value)\n log.info(\"SIM_IND\", stats)\n if stats == \"SIM_WC\" then\n log.info(\"sim\", \"write counter\", value)\n end\nend)\nmobile.config(mobile.CONF_SIM_WC_MODE, 2)\n-- \u6e05\u7a7a\u7edf\u8ba1\u503c\nmobile.config(mobile.CONF_SIM_WC_MODE, 3)\n", "prefix": "mobile.config"}, "mobile.getBand": {"body": "mobile.getBand(${1:band},${2:is_default})", "description": "mobile.getBand(band, is_default) - \u83b7\u53d6\u5f53\u524d\u4f7f\u7528/\u652f\u6301\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u51faband\nboolean true\u9ed8\u8ba4\u652f\u6301\uff0cfalse\u5f53\u524d\u652f\u6301\u7684\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5f53\u524d\u662f\u9884\u7559\u529f\u80fd\uff0c\u4e0d\u8981\u5199true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nmobile.getBand(buff) --\u8f93\u51fa\u5f53\u524d\u4f7f\u7528\u7684band\uff0cband\u53f7\u653e\u5728buff\u5185\uff0cbuff[0]\uff0cbuff[1]\uff0cbuff[2] .. buff[buff:used() - 1]\n", "prefix": "mobile.getBand"}, "mobile.setBand": {"body": "mobile.setBand(${1:band},${2:num})", "description": "mobile.setBand(band, num) - \u8bbe\u7f6e\u4f7f\u7528\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u5165\u4f7f\u7528\u7684band\nint band\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nbuff[0] = 3\nbuff[1] = 5\nbuff[2] = 8\nbuff[3] = 40\nmobile.setBand(buff, 4) --\u8bbe\u7f6e\u4f7f\u7528\u7684band\u4e00\u51714\u4e2a\uff0c\u4e3a3,5,8,40\n", "prefix": "mobile.setBand"}, "mobile.nstOnOff": {"body": "mobile.nstOnOff(${1:onoff},${2:uart_id})", "description": "mobile.nstOnOff(onoff, uart_id) - RF\u6d4b\u8bd5\u5f00\u5173\u548c\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00\u542f\u6d4b\u8bd5\u6a21\u5f0f\uff0cfalse\u5173\u95ed\nint \u4e32\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstOnOff(true, uart.VUART_0) --\u6253\u5f00\u6d4b\u8bd5\u6a21\u5f0f\uff0c\u5e76\u4e14\u7528\u865a\u62df\u4e32\u53e3\u53d1\u9001\u7ed3\u679c\nmobile.nstOnOff(false) --\u5173\u95ed\u6d4b\u8bd5\u6a21\u5f0f\n", "prefix": "mobile.nstOnOff"}, "mobile.nstInput": {"body": "mobile.nstInput(${1:data})", "description": "mobile.nstInput(data) - RF\u6d4b\u8bd5\u6570\u636e\u8f93\u5165\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u7528\u6237\u4ece\u4e32\u53e3\u83b7\u53d6\u7684\u6570\u636e\uff0c\u6ce8\u610f\uff0c\u5f53\u83b7\u53d6\u5b8c\u6240\u6709\u6570\u636e\u540e\uff0c\u9700\u8981\u518d\u4f20\u4e00\u4e2anil\u6765\u4f5c\u4e3a\u4f20\u8f93\u7ed3\u675f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstInput(uart_data)\nmobile.nstInput(nil)\n", "prefix": "mobile.nstInput"}, "mobile.vsimInit": {"body": "mobile.vsimInit()", "description": "mobile.vsimInit() - \u521d\u59cb\u5316\u5185\u7f6e\u9ed8\u8ba4\u865a\u62df\u5361\u529f\u80fd(\u4e0d\u53ef\u7528)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimInit()\n", "prefix": "mobile.vsimInit"}, "mobile.vsimOnOff": {"body": "mobile.vsimOnOff(${1:enable})", "description": "mobile.vsimOnOff(enable) - \u5207\u6362\u5185\u7f6e\u865a\u62df\u5361\u548c\u5916\u7f6e\u5b9e\u4f53\u5361\uff0c2024\u5e748\u670813\u65e5\u542f\u7528\uff0c\u865a\u62df\u5361\u9700\u8981\u56fa\u4ef6\u652f\u6301\uff0c\u5426\u5219\u5207\u6362\u540e\u65e0\u7f51\u7edc\uff0c\u9700\u8981\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u5207\u6362\uff0c\u6216\u8005\u5207\u6362\u540e\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimOnOff(true) --\u4f7f\u7528\u5185\u7f6e\u865a\u62df\u5361\nmobile.vsimOnOff(false) --\u4f7f\u7528\u5916\u7f6e\u5b9e\u4f53\u5361\n", "prefix": "mobile.vsimOnOff"}, "mqttc:subscribe": {"body": "mqttc:subscribe(${1:topic},${2:qos})", "description": "mqttc:subscribe(topic, qos) - \u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\nint topic\u4e3astring\u65f6\u751f\u6548 0/1/2 \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid,\u5f53qos\u4e3a1/2\u65f6\u6709\u6548, \u82e5\u5e95\u5c42\u8fd4\u56de\u5931\u8d25,\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=0\nmqttc:subscribe(\"/luatos/123456\", 0)\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=1\nmqttc:subscribe(\"/luatos/12345678\", 1)\n-- \u8ba2\u9605\u591a\u4e2atopic, \u4e14\u4f7f\u7528\u4e0d\u540c\u7684qos\nmqttc:subscribe({[\"/luatos/1234567\"]=1,[\"/luatos/12345678\"]=2})\n", "prefix": "mqttc:subscribe"}, "mqttc:unsubscribe": {"body": "mqttc:unsubscribe(${1:topic})", "description": "mqttc:unsubscribe(topic) - \u53d6\u6d88\u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\n\u4f8b\u5b50\uff1a\nmqttc:unsubscribe(\"/luatos/123456\")\nmqttc:unsubscribe({\"/luatos/1234567\",\"/luatos/12345678\"})\n", "prefix": "mqttc:unsubscribe"}, "mqttc:debug": {"body": "mqttc:debug(${1:onoff})", "description": "mqttc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mqttc:debug"}, "mqtt.create": {"body": "mqtt.create(${1:adapter},${2:host},${3:port},${4:ssl},${5:isipv6})", "description": "mqtt.create(adapter,host,port,ssl,isipv6) - mqtt\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring \u670d\u52a1\u5668\u5730\u5740,\u53ef\u4ee5\u662f\u57df\u540d, \u4e5f\u53ef\u4ee5\u662fip\nint \u7aef\u53e3\u53f7\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aef\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e
verify \u662f\u5426\u5f3a\u5236\u6821\u9a8c 0\u4e0d\u6821\u9a8c/1\u53ef\u9009\u6821\u9a8c/2\u5f3a\u5236\u6821\u9a8c \u9ed8\u8ba42\nbool/table bool \u662f\u5426\u4e3aipv6\uff0c\u9ed8\u8ba4\u4e0d\u662f table mqtt\u6269\u5c55\u53c2\u6570, ipv6 \u662f\u5426\u4e3aipv6, rxSize \u63a5\u6536\u7f13\u51b2\u533a\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56demqtt\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884)\n-- \u666e\u901aTCP\u94fe\u63a5,mqtt\u63a5\u6536\u7f13\u51b2\u533a4096\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884, nil, {rxSize = 4096})\n-- \u52a0\u5bc6TCP\u94fe\u63a5,\u4e0d\u9a8c\u8bc1\u670d\u52a1\u5668\u8bc1\u4e66\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, true)\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\")})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1, \u4f46\u53ef\u9009\u8ba4\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\"), verify=1})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u53cc\u5411\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {\n server_cert=io.readFile(\"/luadb/ca.crt\"),\n client_cert=io.readFile(\"/luadb/client.pem\"),\n client_key=\"123456\",\n client_password=\"123456\",\n })\n", "prefix": "mqtt.create"}, "mqttc:auth": {"body": "mqttc:auth(${1:client_id},${2:username},${3:password},${4:cleanSession})", "description": "mqttc:auth(client_id,username,password,cleanSession) - mqtt\u4e09\u5143\u7ec4\u914d\u7f6e\u53cacleanSession\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u8bc6\u522bid,\u5bf9\u4e8e\u540c\u4e00\u4e2amqtt\u670d\u52a1\u5668\u6765\u8bf4, \u901a\u5e38\u8981\u6c42\u552f\u4e00,\u76f8\u540cclient_id\u4f1a\u4e92\u76f8\u8e22\u4e0b\u7ebf\nstring \u8d26\u53f7 \u53ef\u9009\nstring \u5bc6\u7801 \u53ef\u9009\nbool \u6e05\u9664session,\u9ed8\u8ba4true,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e0\u8d26\u53f7\u5bc6\u7801\u767b\u5f55,\u4ec5clientId\nmqttc:auth(\"123456789\")\n-- \u5e26\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\nmqttc:auth(\"123456789\",\"username\",\"password\")\n-- \u989d\u5916\u914d\u7f6ecleanSession,\u4e0d\u6e05\u9664\nmqttc:auth(\"123456789\",\"username\",\"password\", false)\n-- \u65e0clientId\u6a21\u5f0f, \u670d\u52a1\u5668\u968f\u673a\u751f\u6210id, cleanSession\u4e0d\u53ef\u914d\u7f6e\nmqttc:auth()\n", "prefix": "mqttc:auth"}, "mqttc:keepalive": {"body": "mqttc:keepalive(${1:time})", "description": "mqttc:keepalive(time) - mqtt\u5fc3\u8df3\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009 \u5355\u4f4ds \u9ed8\u8ba4240s. \u6700\u514815,\u6700\u9ad8600\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:keepalive(30)\n", "prefix": "mqttc:keepalive"}, "mqttc:on": {"body": "mqttc:on(${1:cb})", "description": "mqttc:on(cb) - \u6ce8\u518cmqtt\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb mqtt\u56de\u8c03,\u53c2\u6570\u5305\u62ecmqtt_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:on(function(mqtt_client, event, data, payload, metas)\n -- \u7528\u6237\u81ea\u5b9a\u4e49\u4ee3\u7801\n log.info(\"mqtt\", \"event\", event, mqtt_client, data, payload)\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n conack -- \u670d\u52a1\u5668\u9274\u6743\u5b8c\u6210,mqtt\u8fde\u63a5\u5df2\u7ecf\u5efa\u7acb, \u53ef\u4ee5\u8ba2\u9605\u548c\u53d1\u5e03\u6570\u636e\u4e86,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n recv -- \u63a5\u6536\u5230\u6570\u636e,\u7531\u670d\u52a1\u5668\u4e0b\u53d1, data\u4e3atopic\u503c(string), payload\u4e3a\u4e1a\u52a1\u6570\u636e(string).metas\u662f\u5143\u6570\u636e(table), \u4e00\u822c\u4e0d\u5904\u7406. \n -- metas\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\n -- qos \u53d6\u503c\u8303\u56f40,1,2\n -- retain \u53d6\u503c\u8303\u56f4 0,1\n -- dup \u53d6\u503c\u8303\u56f4 0,1\n sent -- \u53d1\u9001\u5b8c\u6210, qos0\u4f1a\u9a6c\u4e0a\u901a\u77e5, qos1/qos2\u4f1a\u5728\u670d\u52a1\u5668\u5e94\u7b54\u4f1a\u56de\u8c03, data\u4e3a\u6d88\u606fid\n disconnect -- \u670d\u52a1\u5668\u65ad\u5f00\u8fde\u63a5,\u7f51\u7edc\u95ee\u9898\u6216\u670d\u52a1\u5668\u8e22\u4e86\u5ba2\u6237\u7aef,\u4f8b\u5982clientId\u91cd\u590d,\u8d85\u65f6\u672a\u4e0a\u62a5\u4e1a\u52a1\u6570\u636e\n pong -- \u6536\u5230\u670d\u52a1\u5668\u5fc3\u8df3\u5e94\u7b54,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n]]\n", "prefix": "mqttc:on"}, "mqttc:connect": {"body": "mqttc:connect()", "description": "mqttc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nmqttc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65admqtt\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "mqttc:connect"}, "mqttc:disconnect": {"body": "mqttc:disconnect()", "description": "mqttc:disconnect() - \u65ad\u5f00\u670d\u52a1\u5668\u8fde\u63a5(\u4e0d\u4f1a\u91ca\u653e\u8d44\u6e90)\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u65ad\u5f00\u8fde\u63a5\nmqttc:disconnect()\n", "prefix": "mqttc:disconnect"}, "mqttc:autoreconn": {"body": "mqttc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "mqttc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nmqttc:autoreconn(true)\n", "prefix": "mqttc:autoreconn"}, "mqttc:publish": {"body": "mqttc:publish(${1:topic},${2:data},${3:qos},${4:retain})", "description": "mqttc:publish(topic, data, qos, retain) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898,\u5fc5\u586b\nstring \u6d88\u606f,\u5fc5\u586b,\u4f46\u957f\u5ea6\u53ef\u4ee5\u662f0\nint \u6d88\u606f\u7ea7\u522b 0/1 \u9ed8\u8ba40\nint \u662f\u5426\u5b58\u6863, 0/1,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid, \u5f53qos\u4e3a1\u62162\u65f6\u4f1a\u6709\u6548\u503c. \u82e5\u5e95\u5c42\u8fd4\u56de\u662f\u5426, \u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmqttc:publish(\"/luatos/123456\", \"123\")\n", "prefix": "mqttc:publish"}, "mqttc:close": {"body": "mqttc:close()", "description": "mqttc:close() - mqtt\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nmqttc:close()\n", "prefix": "mqttc:close"}, "mqttc:ready": {"body": "mqttc:ready()", "description": "mqttc:ready() - mqtt\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal error = mqttc:ready()\n", "prefix": "mqttc:ready"}, "mqttc:state": {"body": "mqttc:state()", "description": "mqttc:state() - mqtt\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nnumber \u5ba2\u6237\u7aef\u72b6\u6001\n\u4f8b\u5b50\uff1a\nlocal state = mqttc:state()\n-- \u5df2\u77e5\u72b6\u6001:\n-- 0: MQTT_STATE_DISCONNECT\n-- 1: MQTT_STATE_CONNECTING\n-- 2: MQTT_STATE_CONNECTED\n-- 3: MQTT_STATE_READY\n-- 4: MQTT_STATE_ERROR\n", "prefix": "mqttc:state"}, "mqttc:will": {"body": "mqttc:will(${1:topic},${2:payload},${3:qos},${4:retain})", "description": "mqttc:will(topic, payload, qos, retain) - \u8bbe\u7f6e\u9057\u5631\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9057\u5631\u6d88\u606f\u7684topic\nstring \u9057\u5631\u6d88\u606f\u7684payload\nstring \u9057\u5631\u6d88\u606f\u7684qos, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\nstring \u9057\u5631\u6d88\u606f\u7684retain, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8981\u5728connect\u4e4b\u524d\u8c03\u7528\nmqttc:will(\"/xxx/xxx\", \"xxxxxx\")\n", "prefix": "mqttc:will"}, "otp.read": {"body": "otp.read(${1:zone},${2:offset},${3:len})", "description": "otp.read(zone, offset, len) - \u8bfb\u53d6\u6307\u5b9aOTP\u533a\u57df\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nint \u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6, \u5355\u4f4d\u5b57\u8282, \u5fc5\u987b\u662f4\u7684\u500d\u6570, \u4e0d\u80fd\u8d85\u8fc74096\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal otpdata = otp.read(0, 0, 64)\nif otpdata then\n log.info(\"otp\", otpdata:toHex())\nend\n", "prefix": "otp.read"}, "otp.write": {"body": "otp.write(${1:zone},${2:data},${3:offset})", "description": "otp.write(zone, data, offset) - \u5f80\u6307\u5b9aOTP\u533a\u57df\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nstring \u6570\u636e, \u957f\u5ea6\u5fc5\u987b\u662f4\u4e2a\u500d\u6570\nint \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nbooL \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.write"}, "otp.erase": {"body": "otp.erase(${1:zone})", "description": "otp.erase(zone) - \u64e6\u9664\u6307\u5b9aOTP\u533a\u57df\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.erase"}, "otp.lock": {"body": "otp.lock(${1:zone})", "description": "otp.lock(zone) - \u9501\u5b9aOTP\u533a\u57df. \u7279\u522b\u6ce8\u610f!!\u4e00\u65e6\u52a0\u9501\u5373\u65e0\u6cd5\u89e3\u9501,OTP\u53d8\u6210\u53ea\u8bfb!!!\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.lock"}, "pack.unpack": {"body": "pack.unpack(${1:string},${2:format},${3:init})", "description": "pack.unpack( string, format, init) - \u89e3\u5305\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u89e3\u5305\u7684\u5b57\u7b26\u4e32\nstring \u683c\u5f0f\u5316\u7b26\u53f7\nint \u9ed8\u8ba4\u503c\u4e3a1\uff0c\u6807\u8bb0\u89e3\u5305\u5f00\u59cb\u7684\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6807\u8bb0\u7684\u4f4d\u7f6e\nany \u7b2c\u4e00\u4e2a\u89e3\u5305\u7684\u503c, \u6839\u636eformat\u503c,\u53ef\u80fd\u6709N\u4e2a\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal _,a = pack.unpack(x,\">h\") --\u89e3\u5305\u6210short (2\u5b57\u8282)\n", "prefix": "pack.unpack"}, "pack.pack": {"body": "pack.pack(${1:format},${2:val1},${3:val2},${4:val3},${5:valn})", "description": "pack.pack( format, val1, val2, val3, valn ) - \u6253\u5305\u5b57\u7b26\u4e32\u7684\u503c\n\u4f20\u5165\u503c\uff1a\nstring format \u683c\u5f0f\u5316\u7b26\u53f7\nany \u7b2c\u4e00\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2cn\u4e2a\u9700\u6253\u5305\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring \u4e00\u4e2a\u5305\u542b\u6240\u6709\u683c\u5f0f\u5316\u53d8\u91cf\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal data = pack.pack('= 2\u662f, \u6700\u5927\u4f11\u7720\u65f6\u957f\u662f740\u5c0f\u65f6\n", "prefix": "pm.dtimerStart"}, "pm.dtimerStop": {"body": "pm.dtimerStop(${1:id})", "description": "pm.dtimerStop(id) - \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\npm.dtimerStop(0) -- \u5173\u95edid=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerStop"}, "pm.dtimerCheck": {"body": "pm.dtimerCheck(${1:id})", "description": "pm.dtimerCheck(id) - \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,true\u8fd8\u5728\u8fd0\u884c\uff0cfalse\u4e0d\u5728\u8fd0\u884c\nnumber \u5982\u679c\u8fd0\u884c,\u8fd0\u884c\u5269\u4f59\u65f6\u95f4,\u5355\u4f4d\u6beb\u79d2(\u9700bsp\u652f\u6301)\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\npm.dtimerCheck(0) -- \u68c0\u67e5id=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerCheck"}, "dtimerWkId": {"body": "dtimerWkId()", "description": "dtimerWkId() - \u68c0\u67e5\u5b9a\u65f6\u5524\u9192\u662f\u54ea\u4e00\u4e2a\u5b9a\u65f6\u5668\uff0c\u5982\u679c\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\uff0c\u8fd4\u56de-1\n\u8fd4\u56de\u503c\uff1a\nint \u5904\u7406\u7ed3\u679c >=0 \u662f\u672c\u6b21\u5b9a\u65f6\u5524\u9192\u7684\u5b9a\u65f6\u5668ID\uff0c\u5176\u4ed6\u9519\u8bef\uff0c\u8bf4\u660e\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\n\u4f8b\u5b50\uff1a\nlocal timer_id = pm.dtimerWkId()\n", "prefix": "dtimerWkId"}, "pm.lastReson": {"body": "pm.lastReson()", "description": "pm.lastReson() - \u5f00\u673a\u539f\u56e0,\u7528\u4e8e\u5224\u65ad\u662f\u4ece\u4f11\u7720\u6a21\u5757\u5f00\u673a,\u8fd8\u662f\u7535\u6e90/\u590d\u4f4d\u5f00\u673a\n\u8fd4\u56de\u503c\uff1a\nint 0-\u4e0a\u7535/\u590d\u4f4d\u5f00\u673a, 1-RTC\u5f00\u673a, 2-WakeupIn/Pad/IO\u5f00\u673a, 3-\u672a\u77e5\u539f\u56e0(Wakeup/RTC\u7686\u6709\u53ef\u80fd)\u5f00\u673a,\u76ee\u524d\u53ea\u6709air101,air103\u4f1a\u6709\u8fd9\u4e2a\u8fd4\u56de\u503c\nint 0-\u666e\u901a\u5f00\u673a(\u4e0a\u7535/\u590d\u4f4d),3-\u6df1\u7761\u7720\u5f00\u673a,4-\u4f11\u7720\u5f00\u673a\nint \u590d\u4f4d\u5f00\u673a\u8be6\u7ec6\u539f\u56e0\uff1a0-powerkey\u6216\u8005\u4e0a\u7535\u5f00\u673a 1-\u5145\u7535\u6216\u8005AT\u6307\u4ee4\u4e0b\u8f7d\u5b8c\u6210\u540e\u5f00\u673a 2-\u95f9\u949f\u5f00\u673a 3-\u8f6f\u4ef6\u91cd\u542f 4-\u672a\u77e5\u539f\u56e0 5-RESET\u952e 6-\u5f02\u5e38\u91cd\u542f 7-\u5de5\u5177\u63a7\u5236\u91cd\u542f 8-\u5185\u90e8\u770b\u95e8\u72d7\u91cd\u542f 9-\u5916\u90e8\u91cd\u542f 10-\u5145\u7535\u5f00\u673a\n\u4f8b\u5b50\uff1a\n-- \u662f\u54ea\u79cd\u65b9\u5f0f\u5f00\u673a\u5462\nlog.info(\"pm\", \"last power reson\", pm.lastReson())\n", "prefix": "pm.lastReson"}, "pm.force": {"body": "pm.force(${1:mode})", "description": "pm.force(mode) - \u5f3a\u5236\u8fdb\u5165\u6307\u5b9a\u7684\u4f11\u7720\u6a21\u5f0f\uff0c\u5ffd\u7565\u67d0\u4e9b\u5916\u8bbe\u7684\u5f71\u54cd\uff0c\u6bd4\u5982USB\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u82e5\u8fd4\u56de\u6210\u529f,\u5927\u6982\u7387\u4f1a\u9a6c\u4e0a\u8fdb\u5165\u8be5\u4f11\u7720\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\npm.force(pm.HIB)\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n-- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n--pm.power(pm.USB, true)\n", "prefix": "pm.force"}, "pm.check": {"body": "pm.check()", "description": "pm.check() - \u68c0\u67e5\u4f11\u7720\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u5982\u679c\u80fd\u987a\u5229\u8fdb\u5165\u4f11\u7720,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,0\u4ee3\u8868\u80fd\u8fdb\u5165\u6700\u5e95\u5c42\u4f11\u7720,\u5176\u4ed6\u503c\u4ee3\u8868\u6700\u4f4e\u53ef\u4f11\u7720\u7ea7\u522b\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f,\u7136\u540e\u68c0\u67e5\u662f\u5426\u80fd\u771f\u7684\u4f11\u7720\npm.request(pm.HIB)\nif pm.check() then\n log.info(\"pm\", \"it is ok to hib\")\nelse\n -- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n pm.force(pm.HIB) -- \u5f3a\u5236\u4f11\u7720\n -- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n --sys.wait(100)\n --pm.power(pm.USB, true)\nend\n", "prefix": "pm.check"}, "pm.shutdown": {"body": "pm.shutdown()", "description": "pm.shutdown() - \u5173\u673a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5f53\u524d\u652f\u6301\u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\n-- \u9700\u89812022-12-22\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\npm.shutdown()\n", "prefix": "pm.shutdown"}, "pm.reboot": {"body": "pm.reboot()", "description": "pm.reboot() - \u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "pm.reboot"}, "pm.power": {"body": "pm.power(${1:id},${2:onoff})", "description": "pm.power(id, onoff) - \u5f00\u542f\u5185\u90e8\u7684\u7535\u6e90\u63a7\u5236\uff0c\u6ce8\u610f\u4e0d\u662f\u6240\u6709\u7684\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u53ef\u80fd\u90e8\u5206\u5e73\u53f0\u652f\u6301\u90e8\u5206\u9009\u9879\uff0c\u770b\u786c\u4ef6\n\u4f20\u5165\u503c\uff1a\nint \u7535\u6e90\u63a7\u5236id,pm.USB pm.GPS\u4e4b\u7c7b\nboolean or int \u5f00\u5173true/1\u5f00\uff0cfalse/0\u5173\uff0c\u9ed8\u8ba4\u5173\uff0c\u90e8\u5206\u9009\u9879\u652f\u6301\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\u7535\u6e90, \u53cd\u4e4b\u5f00\u542f\u5c31\u662f\u4f20true\npm.power(pm.USB, false) \n\n-- Air780EG,\u4e3a\u5185\u7f6e\u7684GPS\u82af\u7247\u4e0a\u7535. \u6ce8\u610f, Air780EG\u7684GPS\u548cGPS_ANT\u662f\u4e00\u8d77\u63a7\u5236\u7684,\u6240\u4ee5\u5408\u5e76\u4e86.\npm.power(pm.GPS, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u5f00\u542fpwrkey\u5f00\u673a\u9632\u6296\n-- \u6ce8\u610f: \u5f00\u542f\u540e, \u590d\u4f4d\u952e\u5c31\u53d8\u6210\u5173\u673a\u4e86!!! pwrkey\u8981\u957f\u63092\u79d2\u624d\u80fd\u5f00\u673a\n-- pm.power(pm.PWK_MODE, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)PSM+\u4f4e\u529f\u8017\u8bbe\u7f6e\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8282\u80fd\u6a21\u5f0f\uff0c0~3\uff0c0\u5b8c\u5168\u5173\u95ed\uff0c1\u6027\u80fd\u4f18\u5148\uff0c2\u5e73\u8861\uff0c3\u6781\u81f4\u529f\u8017\n-- \u8be6\u60c5\u8bbf\u95ee: https://airpsm.cn\n-- pm.power(pm.WORK_MODE, 1)\n", "prefix": "pm.power"}, "pm.ioVol": {"body": "pm.ioVol(${1:id},${2:val})", "description": "pm.ioVol(id, val) - IO\u9ad8\u7535\u5e73\u7535\u538b\u63a7\u5236\n\u4f20\u5165\u503c\uff1a\nint \u7535\u5e73id,\u76ee\u524d\u53ea\u6709pm.IOVOL_ALL_GPIO\nint \u7535\u5e73\u503c,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8bbe\u7f6eIO\u7535\u5e73, \u8303\u56f4 1650 ~ 2000\uff0c2650~3400 , \u5355\u4f4d\u6beb\u4f0f, \u6b65\u8fdb50mv\n-- \u6ce8\u610f, \u8fd9\u91cc\u7684\u8bbe\u7f6e\u4f18\u5148\u7ea7\u4f1a\u9ad8\u4e8e\u786c\u4ef6IOSEL\u811a\u7684\u914d\u7f6e\n-- \u4f46\u5f00\u673a\u65f6\u4f9d\u7136\u5148\u4f7f\u7528\u786c\u4ef6\u914d\u7f6e,\u76f4\u81f3\u8c03\u7528\u672cAPI\u8fdb\u884c\u914d\u7f6e, \u6240\u4ee5io\u7535\u5e73\u4f1a\u53d8\u5316\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa3.3V\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa1.8V\n", "prefix": "pm.ioVol"}, "pm.wakeupPin": {"body": "pm.wakeupPin(${1:pin},${2:level})", "description": "pm.wakeupPin(pin,level) - \u914d\u7f6e\u5524\u9192\u5f15\u811a (\u5f53\u524d\u4ec5\u4ec5esp\u7cfb\u5217\u53ef\u7528)\n\u4f20\u5165\u503c\uff1a\nint/table gpio\u5f15\u811a\nint \u5524\u9192\u7535\u538b \u53ef\u9009,\u9ed8\u8ba4\u4f4e\u7535\u5e73\u5524\u9192\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\npm.wakeupPin(8,0)\n", "prefix": "pm.wakeupPin"}, "protobuf.load": {"body": "protobuf.load(${1:pbdata})", "description": "protobuf.load(pbdata) - \u52a0\u8f7dpb\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u901a\u8fc7protoc.exe\u7a0b\u5e8f\u8f6c\u6362\u5f97\u5230\u7684\u6570\u636e,\u901a\u5e38\u4ece\u6587\u4ef6\u8bfb\u53d6\u5f97\u5230\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u8bfb\u53d6\u4e86\u591a\u957f, \u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u540c\u4e00\u4e2a\u6587\u4ef6\u53ea\u9700\u8981\u52a0\u8f7d\u4e00\u6b21, \u9664\u975e\u8c03\u7528\u8fc7protobuf.clear()\nprotobuf.load(io.readFile(\"/luadb/person.pb\"))\n", "prefix": "protobuf.load"}, "protobuf.clear": {"body": "protobuf.clear()", "description": "protobuf.clear() - \u6e05\u9664\u5df2\u52a0\u8f7d\u7684\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c, \u603b\u662f\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u6e05\u9664\u6240\u6709\u5df2\u52a0\u8f7d\u7684\u5b9a\u4e49\u6570\u636e\nprotobuf.clear()\n", "prefix": "protobuf.clear"}, "protobuf.encode": {"body": "protobuf.encode(${1:tpname},${2:data})", "description": "protobuf.encode(tpname, data) - \u7f16\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\ntable \u5f85\u7f16\u7801\u6570\u636e, \u5fc5\u987b\u662ftable, \u5185\u5bb9\u7b26\u5408pb\u6587\u4ef6\u91cc\u7684\u5b9a\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.encode"}, "protobuf.decode": {"body": "protobuf.decode(${1:tpname},${2:data})", "description": "protobuf.decode(tpname, data) - \u89e3\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\nstring \u5f85\u7f16\u7801\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\ntable \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.decode"}, "pwm.open": {"body": "pwm.open(${1:channel},${2:period},${3:pulse},${4:pnum},${5:precision})", "description": "pwm.open(channel, period, pulse, pnum, precision) - \u5f00\u542f\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u9891\u7387, 1-1000000hz\nint \u5360\u7a7a\u6bd4 0-\u5206\u9891\u7cbe\u5ea6\nint \u8f93\u51fa\u5468\u671f 0\u4e3a\u6301\u7eed\u8f93\u51fa, 1\u4e3a\u5355\u6b21\u8f93\u51fa, \u5176\u4ed6\u4e3a\u6307\u5b9a\u8109\u51b2\u6570\u8f93\u51fa\nint \u5206\u9891\u7cbe\u5ea6, 100/256/1000, \u9ed8\u8ba4\u4e3a100, \u82e5\u8bbe\u5907\u4e0d\u652f\u6301\u4f1a\u6709\u65e5\u5fd7\u63d0\u793a\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00PWM5, \u9891\u73871kHz, \u5360\u7a7a\u6bd450%\npwm.open(5, 1000, 50)\n-- \u6253\u5f00PWM5, \u9891\u738710kHz, \u5206\u9891\u4e3a 31/256\npwm.open(5, 10000, 31, 0, 256)\n", "prefix": "pwm.open"}, "pwm.close": {"body": "pwm.close(${1:channel})", "description": "pwm.close(channel) - \u5173\u95ed\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edPWM5\npwm.close(5)\n", "prefix": "pwm.close"}, "pwm.capture": {"body": "pwm.capture(${1:channel})", "description": "pwm.capture(channel) - PWM\u6355\u83b7\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u6355\u83b7\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- PWM0\u6355\u83b7\nwhile 1 do\n pwm.capture(0,1000)\n local ret,channel,pulse,pwmH,pwmL = sys.waitUntil(\"PWM_CAPTURE\", 2000)\n if ret then\n log.info(\"PWM_CAPTURE\",\"channel\"..channel,\"pulse\"..pulse,\"pwmH\"..pwmH,\"pwmL\"..pwmL)\n end\nend\n", "prefix": "pwm.capture"}, "repl.enable": {"body": "repl.enable(${1:re})", "description": "repl.enable(re) - \u542f\u7528\u6216\u7981\u7528REPL\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u542f\u7528\u4e0e\u5426,\u9ed8\u8ba4\u662f\u542f\u7528\nreturn \u4e4b\u524d\u7684\u8bbe\u7f6e\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u82e5\u56fa\u4ef6\u652f\u6301REPL,\u5373\u7f16\u8bd1\u65f6\u542f\u7528\u4e86REPL,\u662f\u9ed8\u8ba4\u542f\u7528REPL\u529f\u80fd\u7684\n-- \u672c\u51fd\u6570\u662f\u63d0\u4f9b\u5173\u95edREPL\u7684\u9014\u5f84\nrepl.enable(false)\n", "prefix": "repl.enable"}, "repl.push": {"body": "repl.push(${1:data})", "description": "repl.push(data) - \u4e3b\u52a8\u63a8\u9001\u5f85\u5904\u7406\u7684\u6570\u636e\u5230\u5e95\u5c42\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u5904\u7406\u7684\u6570\u636e,\u901a\u5e38\u4ece\u4e32\u53e3\u6765\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u865a\u62df\u4e32\u53e3\u7684\u8bbe\u5907\u624d\u9700\u8981\u8fd9\u4e2a\u51fd\u6570\n", "prefix": "repl.push"}, "rsa.encrypt": {"body": "rsa.encrypt(${1:key},${2:data})", "description": "rsa.encrypt(key, data) - RSA\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u52a0\u5bc6\u6570\u636e, \u4e0d\u80fd\u8d85\u8fc7\u516c\u94a5\u4f4d\u6570\u7684\u4e00\u534a, \u4f8b\u5982 2048bit\u7684\u516c\u94a5, \u53ea\u80fd\u52a0\u5bc6128\u5b57\u8282\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u4e0b\u9762\u4ee3\u7801\u4e2d\u7684 \"abc\" \u662f\u5f85\u52a0\u5bc6\u6570\u636e\nlocal res = rsa.encrypt((io.readFile(\"/luadb/public.pem\")), \"abc\")\n-- \u6253\u5370\u7ed3\u679c\nlog.info(\"rsa\", \"encrypt\", res and #res or 0, res and res:toHex() or \"\")\n", "prefix": "rsa.encrypt"}, "rsa.decrypt": {"body": "rsa.decrypt(${1:key},${2:data},${3:pwd})", "description": "rsa.decrypt(key, data, pwd) - RSA\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u89e3\u5bc6\u6570\u636e\nstring \u79c1\u94a5\u7684\u5bc6\u7801,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u89e3\u5bc6\u901a\u5e38\u5f88\u6162, \u5efa\u8bae\u5728\u670d\u52a1\u5668\u7aef\u8fdb\u884c\n-- res \u662f\u5f85\u89e3\u5bc6\u7684\u6570\u636e\nlocal dst = rsa.decrypt((io.readFile(\"/luadb/privkey.pem\")), res, \"\")\nlog.info(\"rsa\", \"decrypt\", dst and #dst or 0, dst and dst:toHex() or \"\")\n", "prefix": "rsa.decrypt"}, "rsa.verify": {"body": "rsa.verify(${1:key},${2:md},${3:hash},${4:sig})", "description": "rsa.verify(key, md, hash, sig) - RSA\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring sig\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u6709\u6548\u8fd4\u56detrue,\u5426\u5219\u4e3afalse,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal ret = rsa.verify((io.readFile(\"/luadb/public.pem\")), rsa.MD_SHA1, hash, sig)\nlog.info(\"rsa\", \"verify\", ret)\n", "prefix": "rsa.verify"}, "rsa.sign": {"body": "rsa.sign(${1:key},${2:md},${3:hash},${4:pwd})", "description": "rsa.sign(key, md, hash, pwd) - RSA\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring \u79c1\u94a5\u5bc6\u7801, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56desig\u6570\u636e, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sig = rsa.sign((io.readFile(\"/luadb/privkey.pem\")), rsa.MD_SHA1, hash, \"\")\nlog.info(\"rsa\", \"sign\", sig and #sig or 0, sig and sig:toHex() or \"\")\n", "prefix": "rsa.sign"}, "rtc.set": {"body": "rtc.set(${1:tab})", "description": "rtc.set(tab) - \u8bbe\u7f6e\u65f6\u949f\n\u4f20\u5165\u503c\uff1a\ntable or int \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.set({year=2021,mon=8,day=31,hour=17,min=8,sec=43})\n--\u76ee\u524d\u53ea\u6709Air101/Air103/Air105/EC618\u7cfb\u5217\u652f\u6301\u65f6\u95f4\u6233\u65b9\u5f0f\nrtc.set(1652230554)\n", "prefix": "rtc.set"}, "rtc.get": {"body": "rtc.get()", "description": "rtc.get() - \u83b7\u53d6\u65f6\u949f\n\u8fd4\u56de\u503c\uff1a\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u4f8b\u5b50\uff1a\nlocal t = rtc.get()\n-- {year=2021,mon=8,day=31,hour=17,min=8,sec=43}\nlog.info(\"rtc\", json.encode(t))\n", "prefix": "rtc.get"}, "rtc.timerStart": {"body": "rtc.timerStart(${1:id},${2:tab})", "description": "rtc.timerStart(id, tab) - \u8bbe\u7f6eRTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\n-- \u76ee\u524d\u8be5\u63a5\u53e3\u4e0d\u9002\u7528\u4e8e\u79fb\u82af\u6a21\u5757780E/700E/780EP\u7cfb\u5217\uff0c\u9700\u8981\u5b9a\u65f6\u5524\u9192\u53ef\u4f7f\u7528pm.dtimerStart()\n-- \u4f7f\u7528\u524d\u5efa\u8bae\u5148rtc.set\u8bbe\u7f6e\u4e3a\u6b63\u786e\u7684\u65f6\u95f4\nrtc.timerStart(0, {year=2021,mon=9,day=1,hour=17,min=8,sec=43})\n", "prefix": "rtc.timerStart"}, "rtc.timerStop": {"body": "rtc.timerStop(${1:id})", "description": "rtc.timerStop(id) - \u53d6\u6d88RTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.timerStop(0)\n", "prefix": "rtc.timerStop"}, "rtc.setBaseYear": {"body": "rtc.setBaseYear(${1:Base_year})", "description": "rtc.setBaseYear(Base_year) - \u8bbe\u7f6eRTC\u57fa\u51c6\u5e74,\u4e0d\u63a8\u8350\n\u4f20\u5165\u503c\uff1a\nint \u57fa\u51c6\u5e74Base_year,\u901a\u5e381900\n\u4f8b\u5b50\uff1a\nrtc.setBaseYear(1900)\n", "prefix": "rtc.setBaseYear"}, "rtc.timezone": {"body": "rtc.timezone(${1:tz})", "description": "rtc.timezone(tz) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u65f6\u533a\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u533a\u503c,\u6ce8\u610f\u5355\u4f4d\u662f1/4\u65f6\u533a.\u4f8b\u5982\u4e1c\u516b\u533a\u662f 32,\u800c\u975e8. \u53ef\u4ee5\u4e0d\u4f20\nreturn \u5f53\u524d/\u8bbe\u7f6e\u540e\u7684\u65f6\u533a\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e1c8\u533a\nrtc.timezone(32)\n-- \u8bbe\u7f6e\u4e3a\u4e1c3\u533a\nrtc.timezone(12)\n-- \u8bbe\u7f6e\u4e3a\u897f4\u533a\nrtc.timezone(-16)\n-- \u6ce8\u610f: \u65e0\u8bba\u8bbe\u7f6e\u65f6\u533a\u662f\u591a\u5c11, rtc.get/set\u603b\u662fUTC\u65f6\u95f4\n-- \u65f6\u533a\u5f71\u54cd\u7684\u662f os.date/os.time \u51fd\u6570\n-- \u53ea\u6709\u90e8\u5206\u6a21\u5757\u652f\u6301\u8bbe\u7f6e\u65f6\u533a, \u4e14\u9ed8\u8ba4\u503c\u4e00\u822c\u4e3a32, \u5373\u4e1c\u516b\u533a\n", "prefix": "rtc.timezone"}, "rtos.receive": {"body": "rtos.receive(${1:timeout})", "description": "rtos.receive(timeout) - \u63a5\u53d7\u5e76\u5904\u7406\u5e95\u5c42\u6d88\u606f\u961f\u5217.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u901a\u5e38\u662f-1,\u6c38\u4e45\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\nmsgid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n", "prefix": "rtos.receive"}, "rtos.timer_start": {"body": "rtos.timer_start(${1:id},${2:timeout},${3:_repeat})", "description": "rtos.timer_start(id,timeout,_repeat) - \u542f\u52a8\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528 sys.timerStart\n-- \u542f\u52a8\u4e00\u4e2a3\u79d2\u7684\u5faa\u73af\u5b9a\u65f6\u5668\nrtos.timer_start(10000, 3000, -1)\n", "prefix": "rtos.timer_start"}, "rtos.timer_stop": {"body": "rtos.timer_stop(${1:id})", "description": "rtos.timer_stop(id) - \u5173\u95ed\u5e76\u91ca\u653e\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528sys.timerStop\nrtos.timer_stop(id)\n", "prefix": "rtos.timer_stop"}, "rtos.reboot": {"body": "rtos.reboot()", "description": "rtos.reboot() - \u8bbe\u5907\u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "rtos.reboot"}, "rtos.buildDate": {"body": "rtos.buildDate()", "description": "rtos.buildDate() - \u83b7\u53d6\u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u7f16\u8bd1\u65e5\u671f\nlocal d = rtos.buildDate()\n", "prefix": "rtos.buildDate"}, "rtos.bsp": {"body": "rtos.bsp()", "description": "rtos.bsp() - \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u786c\u4ef6bsp\u578b\u53f7\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\nlocal bsp = rtos.bsp()\n", "prefix": "rtos.bsp"}, "rtos.version": {"body": "rtos.version()", "description": "rtos.version() - \u83b7\u53d6\u56fa\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7248\u672c\u53f7,\u4f8b\u5982\"V0001\"\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u7248\u672c\u53f7\nlocal luatos_version = rtos.version()\n", "prefix": "rtos.version"}, "rtos.standy": {"body": "rtos.standy(${1:timeout})", "description": "rtos.standy(timeout) - \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f, \u4ec5\u90e8\u5206\u8bbe\u5907\u53ef\u7528, \u672cAPI\u5df2\u5e9f\u5f03, \u63a8\u8350\u4f7f\u7528pm\u5e93\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f\nrtos.standby(5000)\n", "prefix": "rtos.standy"}, "rtos.meminfo": {"body": "rtos.meminfo(${1:type})", "description": "rtos.meminfo(type) - \u83b7\u53d6\u5185\u5b58\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\ntype \"sys\"\u7cfb\u7edf\u5185\u5b58, \"lua\"\u865a\u62df\u673a\u5185\u5b58,\"psram\"psram\u5185\u5b58, \u9ed8\u8ba4\u4e3alua\u865a\u62df\u673a\u5185\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u603b\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5f53\u524d\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5386\u53f2\u6700\u9ad8\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5185\u5b58\u5360\u7528\nlog.info(\"mem.lua\", rtos.meminfo())\nlog.info(\"mem.sys\", rtos.meminfo(\"sys\"))\n", "prefix": "rtos.meminfo"}, "rtos.firmware": {"body": "rtos.firmware()", "description": "rtos.firmware() - \u8fd4\u56de\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f,\u683c\u5f0f\u4e3a LuatOS_$VERSION_$BSP,\u53ef\u7528\u4e8eOTA\u5347\u7ea7\u5224\u65ad\u5e95\u5c42\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nstring \u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\nlog.info(\"firmware\", rtos.firmware())\n", "prefix": "rtos.firmware"}, "rtos.setPaths": {"body": "rtos.setPaths(${1:pathA},${2:pathB},${3:pathC},${4:pathD})", "description": "rtos.setPaths(pathA, pathB, pathC, pathD) - \u8bbe\u7f6e\u81ea\u5b9a\u4e49lua\u811a\u672c\u641c\u7d22\u8def\u5f84,\u4f18\u5148\u7ea7\u9ad8\u4e8e\u5185\u7f6e\u8def\u5f84\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84A, \u4f8b\u5982 \"/sdcard/%s.luac\",\u82e5\u4e0d\u4f20\u503c,\u5c06\u9ed8\u8ba4\u4e3a\"\",\u53e6\u5916,\u6700\u5927\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc723\u5b57\u8282\nstring \u8def\u5f84B, \u4f8b\u5982 \"/sdcard/%s.lua\"\nstring \u8def\u5f84C, \u4f8b\u5982 \"/lfs2/%s.luac\"\nstring \u8def\u5f84D, \u4f8b\u5982 \"/lfs2/%s.lua\"\n\u4f8b\u5b50\uff1a\n-- \u6302\u8f7dsd\u5361\u6216\u8005spiflash\u540e\nrtos.setPaths(\"/sdcard/user/%s.luac\", \"/sdcard/user/%s.lua\")\nrequire(\"sd_user_main\") -- \u5c06\u641c\u7d22\u5e76\u52a0\u8f7d /sdcard/user/sd_user_main.luac \u548c /sdcard/user/sd_user_main.lua\n", "prefix": "rtos.setPaths"}, "rtos.nop": {"body": "rtos.nop()", "description": "rtos.nop() - \u7a7a\u51fd\u6570,\u4ec0\u4e48\u90fd\u4e0d\u505a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fd9\u4e2a\u51fd\u6570\u5355\u7eaf\u5c31\u662f lua -> c -> lua \u8d70\u4e00\u904d\n-- \u6ca1\u6709\u53c2\u6570,\u6ca1\u6709\u8fd4\u56de\u503c,\u6ca1\u6709\u903b\u8f91\u5904\u7406\n-- \u5728\u7edd\u5927\u591a\u6570\u60c5\u51b5\u4e0b,\u4e0d\u4f1a\u9047\u5230\u8fd9\u4e2a\u51fd\u6570\u7684\u8c03\u7528\n-- \u5b83\u901a\u5e38\u53ea\u4f1a\u51fa\u73b0\u5728\u6027\u80fd\u6d4b\u8bd5\u7684\u4ee3\u7801\u91cc, \u56e0\u4e3a\u5b83\u4ec0\u4e48\u90fd\u4e0d\u5e72.\nrtos.nop()\n", "prefix": "rtos.nop"}, "rtos.autoCollectMem": {"body": "rtos.autoCollectMem(${1:period},${2:warning_level},${3:force_level})", "description": "rtos.autoCollectMem(period, warning_level, force_level) - \u5185\u5b58\u81ea\u52a8\u6536\u96c6\u914d\u7f6e\uff0c\u662flua\u672c\u8eab\u6536\u96c6\u673a\u5236\u7684\u4e00\u79cd\u8865\u5145\uff0c\u4e0d\u662f\u5fc5\u8981\u7684\uff0c\u800c\u4e14\u53ea\u5728luavm\u7a7a\u95f2\u65f6\u89e6\u53d1\n\u4f20\u5165\u503c\uff1a\nint \u81ea\u52a8\u6536\u96c6\u7684\u5468\u671f\uff0c\u7b49\u540c\u4e8ereceive\u8c03\u7528\u6b21\u6570\uff0c0~60000\u3002\u5982\u679c\u662f0\uff0c\u5219\u5173\u95ed\u81ea\u52a8\u6536\u96c6\u529f\u80fd\uff0c\u9ed8\u8ba4\u662f100\nint \u5185\u5b58\u4f7f\u7528\u8b66\u6212\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u8b66\u6212\u7ebf\u65f6\u624d\u4f1a\u5f00\u59cb\u5224\u65ad\u662f\u5426\u8981\u6536\u96c6\u3002\u9ed8\u8ba4\u662f80\nint \u5185\u5b58\u4f7f\u7528\u5f3a\u5236\u6536\u96c6\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u5f3a\u5236\u6536\u96c6\u7ebf\u65f6\u4f1a\u5f3a\u5236\u6536\u96c6\u3002\u9ed8\u8ba4\u662f90\uff0c\u5fc5\u987b\u6bd4\u8b66\u6212\u6c34\u4f4d\u7ebf\u5927\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nrtos.autoCollectMem(100, 80, 90)\n", "prefix": "rtos.autoCollectMem"}, "sdio.init": {"body": "sdio.init(${1:id})", "description": "sdio.init(id) - \u521d\u59cb\u5316sdio\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n", "prefix": "sdio.init"}, "sdio.sd_read": {"body": "sdio.sd_read(${1:id},${2:offset},${3:len})", "description": "sdio.sd_read(id, offset, len) - \u76f4\u63a5\u8bfb\u5199sd\u5361\u4e0a\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u957f\u5ea6,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_read(0, 0, 1024)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_read"}, "sdio.sd_write": {"body": "sdio.sd_write(${1:id},${2:data},${3:offset})", "description": "sdio.sd_write(id, data, offset) - \u76f4\u63a5\u5199sd\u5361\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nstring \u5f85\u5199\u5165\u7684\u6570\u636e,\u957f\u5ea6\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_write(0, data, 0)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_write"}, "sensor.ds18b20": {"body": "sensor.ds18b20(${1:pin},${2:check_crc})", "description": "sensor.ds18b20(pin, check_crc) - \u83b7\u53d6DS18B20\u7684\u6e29\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u7801\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(5000)\n local val,result = sensor.ds18b20(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n -- val 301 == 30.1\u6444\u6c0f\u5ea6\n -- result true \u8bfb\u53d6\u6210\u529f\n log.info(\"ds18b20\", val, result)\nend\n", "prefix": "sensor.ds18b20"}, "sensor.w1_reset": {"body": "sensor.w1_reset(${1:pin})", "description": "sensor.w1_reset(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u590d\u4f4d\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\n", "prefix": "sensor.w1_reset"}, "sensor.w1_connect": {"body": "sensor.w1_connect(${1:pin})", "description": "sensor.w1_connect(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u8fde\u63a5\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n", "prefix": "sensor.w1_connect"}, "sensor.w1_write": {"body": "sensor.w1_write(${1:pin},${2:data1},${3:data2})", "description": "sensor.w1_write(pin, data1,data2) - \u5355\u603b\u7ebf\u534f\u8bae,\u5f80\u603b\u7ebf\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u7b2c\u4e00\u4e2a\u6570\u636e\nint \u7b2c\u4e8c\u4e2a\u6570\u636e, \u53ef\u4ee5\u5199N\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "sensor.w1_write"}, "sensor.w1_read": {"body": "sensor.w1_read(${1:pin},${2:len})", "description": "sensor.w1_read(pin, len) - \u5355\u603b\u7ebf\u534f\u8bae,\u4ece\u603b\u7ebf\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u8bfb\u53d6\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u6309\u8bfb\u53d6\u7684\u957f\u5ea6\u8fd4\u56deN\u4e2a\u6574\u6570\n", "prefix": "sensor.w1_read"}, "sensor.hx711": {"body": "sensor.hx711(${1:pin_date},${2:pin_clk})", "description": "sensor.hx711(pin_date,pin_clk) - \u83b7\u53d6Hx711\u7684\u538b\u529b\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint hx711\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local maopi = sensor.hx711(0,7)\n while true do\n sys.wait(2000)\n a = sensor.hx711(0,7) - maopi\n if a > 0 then\n log.info(\"tag\", a / 4.6)\n end\n end\n end\n)\n", "prefix": "sensor.hx711"}, "sensor.cs1237": {"body": "sensor.cs1237(${1:pin_date},${2:pin_clk})", "description": "sensor.cs1237(pin_date,pin_clk) - \u83b7\u53d6cs1237\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint cs1237\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local cs1237_data = sensor.cs1237(0,7)\n while true do\n sys.wait(2000)\n cs1237_data = sensor.cs1237(0,7) - maopi\n log.info(\"cs1237_data:\", cs1237_data)--\u5f97\u5230\u539f\u59cb\u6570\u636e\n end\n end\n)\n", "prefix": "sensor.cs1237"}, "sensor.ws2812b": {"body": "sensor.ws2812b(${1:pin},${2:data},${3:T0H},${4:T0L},${5:T1H},${6:T1L})", "description": "sensor.ws2812b(pin,data,T0H,T0L,T1H,T1L) - \u8bbe\u7f6ews2812b\u8f93\u51fa(gpio\u9a71\u52a8\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint ws2812b\u7684gpio\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\nint T0H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\uff0c\u6bcf\u4e2a\u578b\u53f7\u4e0d\u4e00\u6837\uff0c\u81ea\u5df1\u8c03\nint T0L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:drawLine(1,2,5,6,0x00ffff)\nsensor.ws2812b(7,buff,300,700,700,700)\n", "prefix": "sensor.ws2812b"}, "sensor.ws2812b_pwm": {"body": "sensor.ws2812b_pwm(${1:pin},${2:data})", "description": "sensor.ws2812b_pwm(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(pwm\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981pwm\u80fd\u8f93\u51fa800k\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint pwm\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_pwm(7,buff)\n", "prefix": "sensor.ws2812b_pwm"}, "sensor.ws2812b_spi": {"body": "sensor.ws2812b_spi(${1:pin},${2:data})", "description": "sensor.ws2812b_spi(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(spi\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981spi\u80fd\u8f93\u51fa5M\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint spi\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_spi(2,buff)\n", "prefix": "sensor.ws2812b_spi"}, "sensor.dht1x": {"body": "sensor.dht1x(${1:pin})", "description": "sensor.dht1x(pin) - \u83b7\u53d6DHT11/DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e7f\u5ea6\u6570\u636e,\u5355\u4f4d0.01%\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.01\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local h,t,r = sensor.dht1x(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n log.info(\"dht11\", h/100,t/100,r)--90.1 23.22\nend\n", "prefix": "sensor.dht1x"}, "sensor.sc12a": {"body": "sensor.sc12a(${1:sda},${2:scl})", "description": "sensor.sc12a(sda,scl) - \u83b7\u53d6sc12a\u88ab\u89e6\u6478\u7684\u901a\u9053\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u6574\u5f62\u6570\u636e\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\n\u4f8b\u5b50\uff1a\nwhile true do\n local temp1=sensor.sc12a(4,7)\n if bit.rshift(bit.band( temp1, 0x8000), 15 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90530\")\n end\n if bit.rshift(bit.band( temp1, 0x4000), 14 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90531\")\n end\n if bit.rshift(bit.band( temp1, 0x2000), 13 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90532\")\n end\n if bit.rshift(bit.band( temp1, 0x1000), 12 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90533\")\n end\n if bit.rshift(bit.band( temp1, 0x800), 11 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90534\")\n end\n if bit.rshift(bit.band( temp1, 0x400), 10 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90535\")\n end\n if bit.rshift(bit.band( temp1, 0x200), 9 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90536\")\n end\n if bit.rshift(bit.band( temp1, 0x100), 8 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90537\")\n end\n if bit.rshift(bit.band( temp1, 0x80), 7 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90538\")\n end\n if bit.rshift(bit.band( temp1, 0x40), 6 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90539\")\n end\n if bit.rshift(bit.band( temp1, 0x20), 5 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905310\")\n end\n if bit.rshift(bit.band( temp1, 0x10), 4 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905311\")\n end\n sys.wait(200)\nend\n", "prefix": "sensor.sc12a"}, "sensor.yhm27xxx": {"body": "sensor.yhm27xxx(${1:pin},${2:chip_id},${3:reg},${4:data})", "description": "sensor.yhm27xxx(pin, chip_id, reg, data) - \u5355\u603b\u7ebf\u547d\u4ee4\u8bfb\u5199YHM27XX\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u82af\u7247ID\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u8981\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u6ca1\u586b\uff0c\u5219\u8868\u793a\u4ece\u5bc4\u5b58\u5668\u8bfb\u53d6\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5bc4\u5b58\u5668\u503c\uff0c\u5199\u5165\u6210\u529f\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local result, data = sensor.yhm27xxx(15, 0x04, 0x05)\n log.info(\"yhm27xxx\", result, data)\nend\n", "prefix": "sensor.yhm27xxx"}, "sfd.init": {"body": "sfd.init(${1:type},${2:spi_id},${3:spi_cs})", "description": "sfd.init(type, spi_id, spi_cs) - \u521d\u59cb\u5316spi flash\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u53ef\u4ee5\u662f\"spi\", \u4e5f\u53ef\u4ee5\u662f\"zbuff\", \u6216\u8005\"onchip\"\nint SPI\u603b\u7ebf\u7684id, \u6216\u8005 zbuff\u5b9e\u4f8b\nint SPI FLASH\u7684\u7247\u9009\u811a\u5bf9\u5e94\u7684GPIO, \u5f53\u7c7b\u578b\u662fspi\u65f6\u624d\u9700\u8981\u4f20\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv):toHex())\nend\n-- 2023.01.15\u4e4b\u540e\u7684\u56fa\u4ef6\u652f\u6301onchip\u7c7b\u578b, \u652f\u6301\u76f4\u63a5\u8bfb\u5199\u7247\u4e0aflash\u7684\u4e00\u5c0f\u5757\u533a\u57df,\u4e00\u822c\u662f64k\n-- \u8fd9\u5757\u533a\u57df\u901a\u5e38\u662ffdb/fskv\u5e93\u6240\u5728\u7684\u533a\u57df, \u6240\u4ee5\u4e0d\u8981\u6df7\u7740\u7528\nlocal onchip = sfd.init(\"onchip\")\nlocal data = sfd.read(onchip, 0x100, 256)\nsfd.erase(onchip, 0x100)\nsfd.write(onchip, 0x100, data or \"Hi\")\n\n", "prefix": "sfd.init"}, "sfd.status": {"body": "sfd.status(${1:drv})", "description": "sfd.status(drv) - \u68c0\u67e5spi flash\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u503c, 0 \u672a\u521d\u59cb\u5316\u6210\u529f,1\u521d\u59cb\u5316\u6210\u529f\u4e14\u7a7a\u95f2,2\u6b63\u5fd9\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"status\", sfd.status(drv))\nend\n", "prefix": "sfd.status"}, "sfd.read": {"body": "sfd.read(${1:drv},${2:offset},${3:len})", "description": "sfd.read(drv, offset, len) - \u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6,\u5f53\u524d\u9650\u5236\u5728256\u4ee5\u5185\n\u8fd4\u56de\u503c\uff1a\nstring \u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"read\", sfd.read(drv, 0x100, 256))\nend\n", "prefix": "sfd.read"}, "sfd.write": {"body": "sfd.write(${1:drv},${2:offset},${3:data})", "description": "sfd.write(drv, offset, data) - \u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nstring \u9700\u8981\u5199\u5165\u7684\u6570\u636e,\u5f53\u524d\u652f\u6301256\u5b57\u8282\u53ca\u4ee5\u4e0b\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.write(drv, 0x100, \"hi,luatos\"))\nend\n", "prefix": "sfd.write"}, "sfd.erase": {"body": "sfd.erase(${1:drv},${2:offset})", "description": "sfd.erase(drv, offset) - \u64e6\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.erase(drv, 0x100))\nend\n", "prefix": "sfd.erase"}, "sfd.id": {"body": "sfd.id(${1:drv})", "description": "sfd.id(drv) - \u82af\u7247\u552f\u4e00id\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nstring 8\u5b57\u8282(64bit)\u7684\u82af\u7247id\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv))\nend\n", "prefix": "sfd.id"}, "sfud.init": {"body": "sfud.init(${1:spi_id},${2:spi_cs},${3:spi_bandrate)/sfud.init(spi_device})", "description": "sfud.init(spi_id, spi_cs, spi_bandrate)/sfud.init(spi_device) - \u521d\u59cb\u5316sfud\n\u4f20\u5165\u503c\uff1a\nint spi_id SPI\u7684ID/userdata spi_device\nint spi_cs SPI\u7684\u7247\u9009\nint spi_bandrate SPI\u7684\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--spi\nlog.info(\"sfud.init\",sfud.init(0,20,20 * 1000 * 1000))\n--spi_device\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"sfud.init\",sfud.init(spi_device))\n", "prefix": "sfud.init"}, "sfud.getDeviceNum": {"body": "sfud.getDeviceNum()", "description": "sfud.getDeviceNum() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\u4e2d\u7684\u8bbe\u5907\u603b\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bbe\u5907\u603b\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getDeviceNum\",sfud.getDeviceNum())\n", "prefix": "sfud.getDeviceNum"}, "sfud.getDevice": {"body": "sfud.getDevice(${1:index})", "description": "sfud.getDevice(index) - \u901a\u8fc7flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\u83b7\u53d6flash\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint index flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDevice(1)\n", "prefix": "sfud.getDevice"}, "sfud.getDeviceTable": {"body": "sfud.getDeviceTable()", "description": "sfud.getDeviceTable() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDeviceTable()\n", "prefix": "sfud.getDeviceTable"}, "sfud.chipErase": {"body": "sfud.chipErase(${1:flash})", "description": "sfud.chipErase(flash) - \u64e6\u9664 Flash \u5168\u90e8\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.chipErase(flash)\n", "prefix": "sfud.chipErase"}, "sfud.erase": {"body": "sfud.erase(${1:flash},${2:add},${3:size})", "description": "sfud.erase(flash,add,size) - \u64e6\u9664 Flash \u6307\u5b9a\u5730\u5740\u6307\u5b9a\u5927\u5c0f\uff0c\u6309\u7167flash block\u5927\u5c0f\u8fdb\u884c\u64e6\u9664\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nnumber add \u64e6\u9664\u5730\u5740\nnumber size \u64e6\u9664\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.erase(flash,add,size)\n", "prefix": "sfud.erase"}, "sfud.read": {"body": "sfud.read(${1:flash},${2:addr},${3:size})", "description": "sfud.read(flash, addr, size) - \u8bfb\u53d6 Flash \u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nint size \u4ece\u8d77\u59cb\u5730\u5740\u5f00\u59cb\u8bfb\u53d6\u6570\u636e\u7684\u603b\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nstring data \u8bfb\u53d6\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.read\",sfud.read(sfud_device,1024,4))\n", "prefix": "sfud.read"}, "sfud.write": {"body": "sfud.write(${1:flash},${2:addr},${3:data})", "description": "sfud.write(flash, addr,data) - \u5411 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.write\",sfud.write(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.write"}, "sfud.eraseWrite": {"body": "sfud.eraseWrite(${1:flash},${2:addr},${3:data})", "description": "sfud.eraseWrite(flash, addr,data) - \u5148\u64e6\u9664\u518d\u5f80 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.eraseWrite\",sfud.eraseWrite(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.eraseWrite"}, "sfud.getInfo": {"body": "sfud.getInfo(${1:flash})", "description": "sfud.getInfo(flash) - \u83b7\u53d6 Flash \u5bb9\u91cf\u548cpage\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint Flash \u5bb9\u91cf\nint page \u9875\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getInfo\",sfud.getInfo(sfud_device))\n", "prefix": "sfud.getInfo"}, "sfud.mount": {"body": "sfud.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "sfud.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7dsfud lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.mount\",sfud.mount(sfud_device,\"/sfud\"))\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\nlog.info(\"fsstat\", fs.fsstat(\"/sfud\"))\n", "prefix": "sfud.mount"}, "sms.send": {"body": "sms.send(${1:phone},${2:msg},${3:auto_phone_fix})", "description": "sms.send(phone, msg, auto_phone_fix) - \u53d1\u9001\u77ed\u4fe1\n\u4f20\u5165\u503c\uff1a\nstring \u7535\u8bdd\u53f7\u7801,\u5fc5\u586b\nstring \u77ed\u4fe1\u5185\u5bb9,\u5fc5\u586b\nbool \u662f\u5426\u81ea\u52a8\u5904\u7406\u7535\u8bdd\u53f7\u53f7\u7801\u7684\u683c\u5f0f,\u9ed8\u8ba4\u662f\u6309\u77ed\u4fe1\u5185\u5bb9\u548c\u53f7\u7801\u683c\u5f0f\u8fdb\u884c\u81ea\u52a8\u5224\u65ad, \u8bbe\u7f6e\u4e3afalse\u53ef\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\u6216nil\n", "prefix": "sms.send"}, "sms.setNewSmsCb": {"body": "sms.setNewSmsCb(${1:func})", "description": "sms.setNewSmsCb(func) - \u8bbe\u7f6e\u65b0SMS\u7684\u56de\u8c03\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nfunction \u56de\u8c03\u51fd\u6570, 3\u4e2a\u53c2\u6570, num, txt, metas\n\u8fd4\u56de\u503c\uff1a\nnil \u4f20\u5165\u662f\u51fd\u6570\u5c31\u80fd\u6210\u529f,\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\nsms.setNewSmsCb(function(num, txt, metas)\n -- num \u624b\u673a\u53f7\u7801\n -- txt \u6587\u672c\u5185\u5bb9\n -- metas \u77ed\u4fe1\u7684\u5143\u6570\u636e,\u4f8b\u5982\u53d1\u9001\u7684\u65f6\u95f4,\u957f\u77ed\u4fe1\u7f16\u53f7\n -- \u6ce8\u610f, \u957f\u77ed\u4fe1\u4f1a\u81ea\u52a8\u5408\u5e76\u6210\u4e00\u6761txt\n log.info(\"sms\", num, txt, metas and json.encode(metas) or \"\")\nend)\n", "prefix": "sms.setNewSmsCb"}, "sms.autoLong": {"body": "sms.autoLong(${1:mode})", "description": "sms.autoLong(mode) - \u8bbe\u7f6e\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5408\u5e76,true\u4e3a\u81ea\u52a8\u5408\u5e76,\u4e3a\u9ed8\u8ba4\u503c\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u540e\u7684\u503c\n\u4f8b\u5b50\uff1a\n-- \u7981\u7528\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76, \u4e00\u822c\u4e0d\u9700\u8981\u7981\u7528\nsms.autoLong(false)\n", "prefix": "sms.autoLong"}, "sms.clearLong": {"body": "sms.clearLong()", "description": "sms.clearLong() - \u6e05\u9664\u957f\u77ed\u4fe1\u7f13\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u6e05\u7406\u6389\u7684\u7247\u6bb5\u6570\u91cf\n\u4f8b\u5b50\uff1a\nsms.clearLong()\n", "prefix": "sms.clearLong"}, "socket.sntp": {"body": "socket.sntp(${1:sntp_server})", "description": "socket.sntp(sntp_server) - sntp\u65f6\u95f4\u540c\u6b65\n\u4f20\u5165\u503c\uff1a\nstring/table sntp\u670d\u52a1\u5668\u5730\u5740 \u9009\u586b\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u4f8b\u5b50\uff1a\nsocket.sntp()\n--socket.sntp(\"ntp.aliyun.com\") --\u81ea\u5b9a\u4e49sntp\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp({\"ntp.aliyun.com\",\"ntp1.aliyun.com\",\"ntp2.aliyun.com\"}) --sntp\u81ea\u5b9a\u4e49\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp(nil, socket.ETH0) --sntp\u81ea\u5b9a\u4e49\u9002\u914d\u5668\u5e8f\u53f7\nsys.subscribe(\"NTP_UPDATE\", function()\n log.info(\"sntp\", \"time\", os.date())\nend)\nsys.subscribe(\"NTP_ERROR\", function()\n log.info(\"socket\", \"sntp error\")\n socket.sntp()\nend)\n", "prefix": "socket.sntp"}, "socket.ntptm": {"body": "socket.ntptm()", "description": "socket.ntptm() - \u7f51\u7edc\u5bf9\u65f6\u540e\u7684\u65f6\u95f4\u6233(ms\u7ea7\u522b)\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u65f6\u95f4\u4fe1\u606f\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.11.15 \u65b0\u589e\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u5728\u6267\u884csocket.sntp()\u4e14\u83b7\u53d6\u5230NTP\u65f6\u95f4\u540e\u624d\u6709\u6548\n-- \u800c\u4e14\u662f2\u6b21sntp\u4e4b\u540e\u624d\u662f\u6bd4\u8f83\u51c6\u786e\u7684\u503c\n-- \u7f51\u7edc\u6ce2\u52a8\u8d8a\u5c0f, \u8be5\u65f6\u95f4\u6233\u8d8a\u7a33\u5b9a\nlocal tm = socket.ntptm()\n\n-- \u5bf9\u5e94\u7684table\u5305\u542b\u591a\u4e2a\u6570\u636e, \u5747\u4e3a\u6574\u6570\u503c\n\n-- \u6807\u51c6\u6570\u636e\n-- tsec \u5f53\u524d\u79d2\u6570,\u4ece1900.1.1 0:0:0 \u5f00\u59cb\u7b97, UTC\u65f6\u95f4\n-- tms \u5f53\u524d\u6beb\u79d2\u6570\n-- vaild \u662f\u5426\u6709\u6548, true \u6216\u8005 nil\n\n-- \u8c03\u8bd5\u6570\u636e, \u8c03\u8bd5\u7528,\u4e00\u822c\u7528\u6237\u4e0d\u7528\u7ba1\n-- ndelay \u7f51\u7edc\u5ef6\u65f6\u5e73\u5747\u503c,\u5355\u4f4d\u6beb\u79d2\n-- ssec \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u79d2\u6570\u504f\u79fb\u91cf\n-- sms \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u6beb\u79d2\u504f\u79fb\u91cf\n-- lsec \u672c\u5730\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n-- lms \u672c\u5730\u6beb\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n\nlog.info(\"tm\u6570\u636e\", json.encode(tm))\nlog.info(\"\u65f6\u95f4\u6233\", string.format(\"%u.%03d\", tm.tsec, tm.tms))\n", "prefix": "socket.ntptm"}, "socket.sntp_port": {"body": "socket.sntp_port(${1:port})", "description": "socket.sntp_port(port) - \u8bbe\u7f6eSNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\n\u4f20\u5165\u503c\uff1a\nint port \u7aef\u53e3\u53f7, \u9ed8\u8ba4123\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u7684\u7aef\u53e3\u53f7\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u4e0d\u9700\u8981\u8bbe\u7f6eNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7,\u9ed8\u8ba4123\u5373\u53ef\n", "prefix": "socket.sntp_port"}, "socket.localIP": {"body": "socket.localIP(${1:adapter})", "description": "socket.localIP(adapter) - \u83b7\u53d6\u672c\u5730ip\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u8fd4\u56de\u503c\uff1a\nstring \u901a\u5e38\u662f\u5185\u7f51ip, \u4e5f\u53ef\u80fd\u662f\u5916\u7f51ip, \u53d6\u51b3\u4e8e\u8fd0\u8425\u5546\u7684\u5206\u914d\nstring \u7f51\u7edc\u63a9\u7801\nstring \u7f51\u5173IP\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n log.info(\"socket\", \"ip\", socket.localIP())\n -- \u8f93\u51fa\u793a\u4f8b\n -- 62.39.244.10 255.255.255.255 0.0.0.0\n end\nend)\n", "prefix": "socket.localIP"}, "socket.create": {"body": "socket.create(${1:adapter},${2:cb})", "description": "socket.create(adapter, cb) - \u5728\u67d0\u4e2a\u9002\u914d\u7684\u7f51\u5361\u4e0a\u7533\u8bf7\u4e00\u4e2asocket_ctrl\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring or function string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u5982\u679c\u56fa\u4ef6\u6ca1\u6709\u5185\u7f6esys_wait\uff0c\u5219\u5fc5\u987b\u662ffunction\n", "prefix": "socket.create"}, "socket.debug": {"body": "socket.debug(${1:ctrl},${2:onoff})", "description": "socket.debug(ctrl, onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nboolean true \u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u9ed8\u8ba4\u662f\u5173\u95ed\u72b6\u6001\nsocket.debug(ctrl, true)\n", "prefix": "socket.debug"}, "socket.config": {"body": "socket.config(${1:ctrl},${2:local_port},${3:is_udp},${4:is_tls},${5:keep_idle},${6:keep_interval},${7:keep_cnt},${8:server_cert},${9:client_cert},${10:client_key},${11:client_password})", "description": "socket.config(ctrl, local_port, is_udp, is_tls, keep_idle, keep_interval, keep_cnt, server_cert, client_cert, client_key, client_password) - \u914d\u7f6enetwork\u4e00\u4e9b\u4fe1\u606f\uff0c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nint \u672c\u5730\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5219\u81ea\u52a8\u5206\u914d\u4e00\u4e2a\uff0c\u5982\u679c\u7528\u6237\u586b\u4e86\u7aef\u53e3\u53f7\u5219\u9700\u8981\u5c0f\u4e8e60000, \u9ed8\u8ba4\u4e0d\u5199\nboolean \u662f\u5426\u662fUDP\uff0c\u9ed8\u8ba4false\nboolean \u662f\u5426\u662f\u52a0\u5bc6\u4f20\u8f93\uff0c\u9ed8\u8ba4false\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684idle\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u4e0d\u542f\u7528\uff0c\u5982\u679c\u662f\u4e0d\u652f\u6301\u6807\u51c6posix\u63a5\u53e3\u7684\u7f51\u5361\uff08\u6bd4\u5982W5500\uff09\uff0c\u5219\u4e3a\u5fc3\u8df3\u95f4\u9694\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u6b21\u6570\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK\uff0c\u4e0d\u9700\u8981\u52a0\u5bc6\u4f20\u8f93\u5199nil\uff0c\u540e\u7eed\u53c2\u6570\u4e5f\u5168\u90e8nil\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK-ID\uff0cTCP\u6a21\u5f0f\u4e0b\u5982\u679c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\u65f6\uff0c\u5ffd\u7565\uff0c\u4e00\u822c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--\u6700\u666e\u901a\u7684TCP\u4f20\u8f93\nsocket.config(ctrl)\n--\u6700\u666e\u901a\u7684\u52a0\u5bc6TCP\u4f20\u8f93\uff0c\u8bc1\u4e66\u90fd\u4e0d\u7528\u9a8c\u8bc1\u7684\u90a3\u79cd\nsocket.config(ctrl, nil, nil ,true)\n", "prefix": "socket.config"}, "socket.linkup": {"body": "socket.linkup(${1:ctrl})", "description": "socket.linkup(ctrl) - \u7b49\u5f85\u7f51\u5361linkup\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecflinkup\uff0cfalse\u6ca1\u6709linkup\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.LINK\u6d88\u606f\n\u4f8b\u5b50\uff1a\n-- \u5224\u65ad\u4e00\u4e0b\u662f\u5426\u5df2\u7ecf\u8054\u7f51\nlocal succ, result = socket.linkup(ctrl)\n", "prefix": "socket.linkup"}, "socket.connect": {"body": "socket.connect(${1:ctrl},${2:ip},${3:remote_port},${4:need_ipv6_dns})", "description": "socket.connect(ctrl, ip, remote_port, need_ipv6_dns) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or int ip\u6216\u8005\u57df\u540d\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u670d\u52a1\u5668\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\nboolean \u57df\u540d\u89e3\u6790\u662f\u5426\u8981IPV6\uff0ctrue\u8981\uff0cfalse\u4e0d\u8981\uff0c\u9ed8\u8ba4false\u4e0d\u8981\uff0c\u53ea\u6709\u652f\u6301IPV6\u7684\u534f\u8bae\u6808\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679c\u6709\u5f02\u5e38\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\n\nlocal succ, result = socket.connect(ctrl, \"netlab.luatos.com\", 40123)\n\n--[[\n\u5e38\u89c1\u7684\u8fde\u63a5\u5931\u8d25\u7684code\u503c, \u4f1a\u5728\u65e5\u5fd7\u4e2d\u663e\u793a\n-1 \u5e95\u5c42\u5185\u5b58\u4e0d\u8db3\n-3 \u8d85\u65f6\n-8 \u7aef\u53e3\u5df2\u7ecf\u88ab\u5360\u7528\n-11 \u94fe\u63a5\u672a\u5efa\u7acb\n-13 \u6a21\u5757\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n-14 \u670d\u52a1\u5668\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n]]\n", "prefix": "socket.connect"}, "socket.discon": {"body": "socket.discon(${1:ctrl})", "description": "socket.discon(ctrl) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u65ad\u5f00\u8fde\u63a5\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecf\u65ad\u5f00\uff0cfalse\u6ca1\u6709\u65ad\u5f00\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.CLOSED\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.discon(ctrl)\n", "prefix": "socket.discon"}, "socket.close": {"body": "socket.close(${1:ctrl})", "description": "socket.close(ctrl) - \u5f3a\u5236\u5173\u95edsocket\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "socket.close"}, "socket.tx": {"body": "socket.tx(${1:ctrl},${2:data},${3:ip},${4:port},${5:flag})", "description": "socket.tx(ctrl, data, ip, port, flag) - \u53d1\u9001\u6570\u636e\u7ed9\u5bf9\u7aef\uff0cUDP\u5355\u6b21\u53d1\u9001\u4e0d\u8981\u8d85\u8fc71460\u5b57\u8282\uff0c\u5426\u5219\u5f88\u5bb9\u6613\u5931\u8d25\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or user_data zbuff \u8981\u53d1\u9001\u7684\u6570\u636e\nstring or int \u5bf9\u7aefIP\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u5bf9\u7aef\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\nint \u53d1\u9001\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u7f13\u51b2\u533a\u6ee1\u4e86\uff0cfalse\u6ca1\u6709\u6ee1\uff0c\u5982\u679ctrue\uff0c\u5219\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u6216\u8005\u7b49\u5230socket.TX_OK\u6d88\u606f\u540e\u518d\u5c1d\u8bd5\u53d1\u9001\uff0c\u540c\u65f6\u5ffd\u7565\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\nboolean true\u5df2\u7ecf\u6536\u5230\u5e94\u7b54\uff0cfalse\u6ca1\u6709\u6536\u5230\u5e94\u7b54\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.TX_OK\u6d88\u606f\uff0c \u4e5f\u53ef\u4ee5\u5ffd\u7565\u7ee7\u7eed\u53d1\u9001\uff0c\u76f4\u5230full==true\n\u4f8b\u5b50\uff1a\n\nlocal succ, full, result = socket.tx(ctrl, \"123456\", \"xxx.xxx.xxx.xxx\", xxxx)\n", "prefix": "socket.tx"}, "socket.rx": {"body": "socket.rx(${1:ctrl},${2:buff},${3:flag},${4:limit})", "description": "socket.rx(ctrl, buff, flag, limit) - \u63a5\u6536\u5bf9\u7aef\u53d1\u51fa\u7684\u6570\u636e\uff0c\u6ce8\u610f\u6570\u636e\u5df2\u7ecf\u7f13\u5b58\u5728\u5e95\u5c42\uff0c\u4f7f\u7528\u672c\u51fd\u6570\u53ea\u662f\u63d0\u53d6\u51fa\u6765\uff0cUDP\u6a21\u5f0f\u4e0b\u4e00\u6b21\u53ea\u4f1a\u53d6\u51fa\u4e00\u4e2a\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nuser_data zbuff \u5b58\u653e\u63a5\u6536\u7684\u6570\u636e\uff0c\u5982\u679c\u7f13\u51b2\u533a\u4e0d\u591f\u5927\u4f1a\u81ea\u52a8\u6269\u5bb9\nint \u63a5\u6536\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\nint \u63a5\u6536\u6570\u636e\u957f\u5ea6\u9650\u5236\uff0c\u5982\u679c\u6307\u5b9a\u4e86\uff0c\u5219\u53ea\u53d6\u524dN\u4e2a\u5b57\u8282. 2024.1.5 \u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nint \u672c\u6b21\u63a5\u6536\u5230\u6570\u636e\u957f\u5ea6\nstring \u5bf9\u7aefIP\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56denil\uff0c\u6ce8\u610f\u8fd4\u56de\u7684\u683c\u5f0f\uff0c\u5982\u679c\u662fIPV4\uff0c1byte 0x00 + 4byte\u5730\u5740 \u5982\u679c\u662fIPV6\uff0c1byte 0x01 + 16byte\u5730\u5740\nint \u5bf9\u7aefport\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u4ecesocket\u4e2d\u8bfb\u53d6\u6570\u636e, ctrl\u662fsocket.create\u8fd4\u56de\u7684, \u8bf7\u67e5\u9605demo/socket\nlocal buff = zbuff.create(2048)\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff)\n\n-- \u9650\u5236\u8bfb\u53d6\u957f\u5ea6, 2024.1.5 \u65b0\u589e\n-- \u6ce8\u610f\n-- \u5982\u679c\u662fUDP\u6570\u636e, \u5982\u679climit\u5c0f\u4e8eUDP\u6570\u636e\u5305\u957f\u5ea6, \u53ea\u4f1a\u53d6\u524dlimit\u4e2a\u5b57\u8282, \u5269\u4f59\u6570\u636e\u4f1a\u4e22\u5f03\n-- \u5982\u679c\u662fTCP\u6570\u636e, \u5982\u679c\u6709\u5269\u4f59\u6570\u636e, \u4e0d\u4f1a\u4e22\u5f03, \u53ef\u7ee7\u7eed\u8bfb\u53d6.\n-- \u6709\u65b0\u7684\u6570\u636e\u5230\u6765\u624d\u4f1a\u6709\u65b0\u7684EVENT\u6570\u636e, \u672a\u8bfb\u53d6\u5b8c\u6210\u7684\u6570\u636e\u4e0d\u4f1a\u89e6\u53d1\u65b0EVENT\u4e8b\u4ef6\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff, 1500)\n\n-- \u8bfb\u53d6\u7f13\u51b2\u533a\u5927\u5c0f, 2024.1.5 \u65b0\u589e, \u6ce8\u610f,\u8001\u7248\u672c\u56fa\u4ef6\u4e0d\u4f20buff\u53c2\u6570\u4f1a\u62a5\u9519\u7684\n-- \u5bf9\u4e8eTCP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5f85\u8bfb\u53d6\u7684\u6570\u636e\u7684\u603b\u957f\u5ea6\n-- \u5bf9\u4e8eUDP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5355\u4e2aUDP\u6570\u636e\u5305\u7684\u957f\u5ea6\nlocal succ, data_len = socket.rx(ctrl)\nif succ then\n log.info(\"\u5f85\u6536\u53d6\u6570\u636e\u957f\u5ea6\", data_len)\nend\n", "prefix": "socket.rx"}, "socket.read": {"body": "socket.read(${1:netc},${2:len})", "description": "socket.read(netc, len) - \u8bfb\u53d6\u6570\u636e(\u975ezbuff\u7248\u672c)\n\u4f20\u5165\u503c\uff1a\nuserdata socket.create\u5f97\u5230\u7684ctrl\nint \u9650\u5236\u8bfb\u53d6\u6570\u636e\u957f\u5ea6,\u53ef\u9009,\u4e0d\u4f20\u5c31\u662f\u8bfb\u51fa\u5168\u90e8\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u4e0e\u5426\nstring \u8bfb\u53d6\u7684\u6570\u636e,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u65f6\u6709\u6548\nstring \u5bf9\u65b9IP\u5730\u5740,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\nint \u5bf9\u65b9\u7aef\u53e3,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.4.8\u6dfb\u52a0, \u7528\u4e8e\u7b80\u6613\u8bfb\u53d6\u4e0d\u5927\u7684\u6570\u636e\n-- \u8bf7\u4f18\u5148\u4f7f\u7528socket.rx\u51fd\u6570, \u672c\u51fd\u6570\u4e3b\u8981\u7528\u4e8e\u56fa\u4ef6\u4e0d\u542bzbuff\u5e93\u65f6\u7684\u53d8\u901a\u8c03\u7528\nlocal ok, data = socket.read(netc, 1500)\nif ok and #data > 0 then\n log.info(\"\u8bfb\u53d6\u5230\u7684\u6570\u636e\", data)\nend\n", "prefix": "socket.read"}, "socket.wait": {"body": "socket.wait(${1:ctrl})", "description": "socket.wait(ctrl) - \u7b49\u5f85\u65b0\u7684socket\u6d88\u606f\uff0c\u5728\u8fde\u63a5\u6210\u529f\u548c\u53d1\u9001\u6570\u636e\u6210\u529f\u540e\uff0c\u4f7f\u7528\u4e00\u6b21\u5c06network\u72b6\u6001\u8f6c\u6362\u5230\u63a5\u6536\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u6709\u65b0\u7684\u6570\u636e\u9700\u8981\u63a5\u6536\uff0cfalse\u6ca1\u6709\u6570\u636e\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.EVENT\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.wait(ctrl)\n", "prefix": "socket.wait"}, "socket.listen": {"body": "socket.listen(${1:ctrl})", "description": "socket.listen(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u5f00\u59cb\u76d1\u542c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.listen(ctrl)\n", "prefix": "socket.listen"}, "socket.accept": {"body": "socket.accept(${1:ctrl})", "description": "socket.accept(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u63a5\u6536\u5230\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662f\u7c7b\u4f3cW5500\u7684\u786c\u4ef6\u534f\u8bae\u6808\u4e0d\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4e0d\u9700\u8981\u7b2c\u4e8c\u4e2a\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\uff0c\u8fd9\u91cc\u662f\u670d\u52a1\u5668\u7aef\nstring or function or nil string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u548csocket.create\u53c2\u6570\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nuser_data or nil \u5982\u679c\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4f1a\u8fd4\u56de\u65b0\u7684ctrl\uff0c\u81ea\u52a8create\uff0c\u5982\u679c\u4e0d\u652f\u6301\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal succ, new_netc = socket.listen(ctrl, cb)\n", "prefix": "socket.accept"}, "socket.state": {"body": "socket.state(${1:ctrl})", "description": "socket.state(ctrl) - \u83b7\u53d6socket\u5f53\u524d\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nint or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u6570\u503c\uff0c\u5426\u5219\u8fd4\u56denil\nstring or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u4e2d\u6587\u63cf\u8ff0\uff0c\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal state, str = socket.state(ctrl)\nlog.info(\"state\", state, str)\nstate 0 \"\u786c\u4ef6\u79bb\u7ebf\",\n 1 \"\u79bb\u7ebf\",\n 2 \"\u7b49\u5f85DNS\",\n 3 \"\u6b63\u5728\u8fde\u63a5\",\n 4 \"\u6b63\u5728TLS\u63e1\u624b\",\n 5 \"\u5728\u7ebf\",\n 6 \"\u5728\u76d1\u542c\",\n 7 \"\u6b63\u5728\u79bb\u7ebf\",\n 8 \"\u672a\u77e5\"\n", "prefix": "socket.state"}, "socket.release": {"body": "socket.release(${1:ctrl})", "description": "socket.release(ctrl) - \u4e3b\u52a8\u91ca\u653e\u6389network_ctrl\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u4f8b\u5b50\uff1a\n-- \u91ca\u653e\u540e\u5c31\u4e0d\u80fd\u518d\u4f7f\u7528\u4e86\nsocket.release(ctrl)\n", "prefix": "socket.release"}, "socket.setDNS": {"body": "socket.setDNS(${1:adapter_index},${2:dns_index},${3:ip})", "description": "socket.setDNS(adapter_index, dns_index, ip) - \u8bbe\u7f6eDNS\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff0csocket.STA\uff0csocket.AP\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f1a\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nint dns\u670d\u52a1\u5668\u5e8f\u53f7\uff0c\u4ece1\u5f00\u59cb\nstring or int dns\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u9ed8\u8ba4\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(nil, 1, \"114.114.114.114\")\n-- \u8bbe\u7f6e\u5236\u5b9a\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(socket.ETH0, 1, \"114.114.114.114\")\n", "prefix": "socket.setDNS"}, "socket.sslLog": {"body": "socket.sslLog(${1:log_level})", "description": "socket.sslLog(log_level) - \u8bbe\u7f6eSSL\u7684log\u767b\u8bb0\n\u4f20\u5165\u503c\uff1a\nint mbedtls log\u7b49\u7ea7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n--[[\nSSL/TLS log\u7ea7\u522b\u8bf4\u660e\n0\u4e0d\u6253\u5370\n1\u53ea\u6253\u5370\u9519\u8bef\u548c\u8b66\n2\u5927\u90e8\u5206info\n3\u53ca3\u4ee5\u4e0a\u8be6\u7ec6\u7684debug\n\n\u8fc7\u591a\u7684\u4fe1\u606f\u53ef\u80fd\u4f1a\u9020\u6210\u5185\u5b58\u788e\u7247\u5316\n]]\n-- \u6253\u5370\u5927\u90e8\u5206info\u65e5\u5fd7\nsocket.sslLog(2)\n", "prefix": "socket.sslLog"}, "socket.adapter": {"body": "socket.adapter(${1:index})", "description": "socket.adapter(index) - \u67e5\u770b\u7f51\u5361\u9002\u914d\u5668\u7684\u8054\u7f51\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\uff0c\u53ef\u4ee5\u7559\u7a7a\u4f1a\u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u9047\u5230IP READY\u7684\uff0c\u5982\u679c\u6307\u5b9a\u7f51\u5361\uff0c\u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\n\u8fd4\u56de\u503c\uff1a\nboolean \u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u662f\u5426IP READY,true\u8868\u793a\u5df2\u7ecf\u51c6\u5907\u597d\u53ef\u4ee5\u8054\u7f51\u4e86,false\u6682\u65f6\u4e0d\u53ef\u4ee5\u8054\u7f51\nint \u6700\u540e\u4e00\u4e2a\u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\n-- \u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u627e\u5230\u4e00\u4e2a\u662fIP READY\u7684\nlocal isReady,index = socket.adapter() --\u5982\u679cisReady\u4e3atrue,\u5219index\u4e3aIP READY\u7684\u7f51\u5361\u9002\u914d\u5668\u5e8f\u53f7\n--\u67e5\u770b\u5916\u7f6e\u4ee5\u592a\u7f51\uff08\u6bd4\u5982W5500\uff09\u662f\u5426IP READY\nlocal isReady,default = socket.adapter(socket.ETH0)\n", "prefix": "socket.adapter"}, "socket.remoteIP": {"body": "socket.remoteIP(${1:ctrl})", "description": "socket.remoteIP(ctrl) - \u83b7\u53d6\u5bf9\u7aefip\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nstring IP1\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709\u83b7\u53d6\u5230IP\u5730\u5740\nstring IP2\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP2\nstring IP3\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP3\nstring IP4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \uff0c\u5fc5\u987b\u5728\u63a5\u6536\u5230socket.ON_LINE\u6d88\u606f\u4e4b\u540e\u624d\u53ef\u80fd\u83b7\u53d6\u5230\uff0c\u6700\u591a\u8fd4\u56de4\u4e2aIP\u3002\n-- socket.connect\u91cc\u5982\u679cremote_port\u8bbe\u7f6e\u62100\uff0c\u5219\u5f53DNS\u5b8c\u6210\u65f6\u5c31\u8fd4\u56desocket.ON_LINE\u6d88\u606f\nlocal ip1,ip2,ip3,ip4 = socket.remoteIP(ctrl)\n", "prefix": "socket.remoteIP"}, "softkb.init": {"body": "softkb.init(${1:port},${2:key_in},${3:key_out})", "description": "softkb.init(port, key_in, key_out) - \u521d\u59cb\u5316\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\ntable \u77e9\u9635\u8f93\u5165\u6309\u952e\u8868\ntable \u77e9\u9635\u8f93\u51fa\u6309\u952e\u8868\n\u4f8b\u5b50\uff1a\n key_in = {pin.PD10,pin.PE00,pin.PE01,pin.PE02}\n key_out = {pin.PD12,pin.PD13,pin.PD14,pin.PD15}\n softkb.init(0,key_in,key_out)\n\nsys.subscribe(\"SOFT_KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "softkb.init"}, "softkb.deinit": {"body": "softkb.deinit(${1:port})", "description": "softkb.deinit(port) - \u5220\u9664\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\n\u4f8b\u5b50\uff1a\n softkb.deinit(0)\n", "prefix": "softkb.deinit"}, "spi.setup": {"body": "spi.setup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.setup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba42M=2000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,20,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.setup"}, "spi.createSoft": {"body": "spi.createSoft(${1:cs},${2:mosi},${3:miso},${4:clk},${5:CPHA},${6:CPOL},${7:dataw},${8:bitdict},${9:ms},${10:mode})", "description": "spi.createSoft(cs, mosi, miso, clk, CPHA, CPOL, dataw, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528\u8f6f\u4ef6SPI\n\u4f20\u5165\u503c\uff1a\nint cs\u5f15\u811a\u7f16\u53f7\uff0c\u4f20\u5165nil\u610f\u4e3aLua\u63a7\u5236cs\u811a\nint mosi\u5f15\u811a\u7f16\u53f7\nint miso\u5f15\u811a\u7f16\u53f7\nint clk\u5f15\u811a\u7f16\u53f7\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6\uff0c\u9ed8\u8ba48bit\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f\uff0c\u5168\u53cc\u5de51\uff0c\u534a\u53cc\u5de50\uff0c\u9ed8\u8ba4\u534a\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6SPI\u5bf9\u8c61 \u53ef\u5f53\u4f5cSPI\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6spi\nlocal softSpiDevice = spi.createSoft(0, 1, 2, 3, 0, 0, 8, spi.MSB, 1, 1)\nlocal result = spi.send(softSpiDevice, string.char(0x9f))\n", "prefix": "spi.createSoft"}, "spi.close": {"body": "spi.close(${1:id})", "description": "spi.close(id) - \u5173\u95ed\u6307\u5b9a\u7684SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.close(0)\n", "prefix": "spi.close"}, "spi.transfer": {"body": "spi.transfer(${1:id},${2:send_data},${3:send_len},${4:recv_len})", "description": "spi.transfer(id, send_data, send_len, recv_len) - \u4f20\u8f93SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7(\u4f8b\u59820)\u6216\u8f6f\u4ef6SPI\u5bf9\u8c61\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi.transfer(0, \"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi.transfer(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi.transfer"}, "spi.recv": {"body": "spi.recv(${1:id},${2:size},${3:buff})", "description": "spi.recv(id, size, buff) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint \u6570\u636e\u957f\u5ea6\nuserdata zbuff\u5bf9\u8c61,\u53ef\u9009,2024.3.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring/int \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u82e5\u4f20\u5165\u7684\u662fzbuff\u5c31\u8fd4\u56de\u8bfb\u53d6\u5927\u5c0f,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\n-- \u63a5\u6536\u6570\u636e\nlocal recv = spi.recv(0, 4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n\n-- \u5f53\u4f20\u5165zbuff\u53c2\u6570\u65f6,\u8fd4\u56de\u503c\u6709\u6240\u4e0d\u540c. 2024.3.29\u65b0\u589e\n-- \u8bfb\u53d6\u6210\u529f\u540e, \u6307\u9488\u4f1a\u5f80\u540e\u79fb\u52a8len\u4e2a\u5b57\u8282\n-- \u5199\u5165\u4f4d\u7f6e\u4ee5\u5f53\u524dused()\u4f4d\u7f6e\u5f00\u59cb, \u8bf7\u52a1\u5fc5\u786e\u4fdd\u6709\u8db3\u591f\u7a7a\u95f4\u5199\u5165len\u957f\u5ea6\u7684\u6570\u636e\nlocal len = spi.recv(0, 4, buff)\n", "prefix": "spi.recv"}, "spi.send": {"body": "spi.send(${1:id},${2:data[},${3:len]})", "description": "spi.send(id, data[, len]) - \u53d1\u9001SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi.send(0, \"123\")--\u53d1\u9001123\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi.send(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi.send"}, "spi.deviceSetup": {"body": "spi.deviceSetup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.deviceSetup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba420M=20000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nuserdata spi_device\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.deviceSetup"}, "spi_device:close": {"body": "spi_device:close()", "description": "spi_device:close() - \u5173\u95ed\u6307\u5b9a\u7684SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi_device.close()\n", "prefix": "spi_device:close"}, "spi_device:transfer": {"body": "spi_device:transfer(${1:send_data[},${2:len]})", "description": "spi_device:transfer(send_data[, len]) - \u4f20\u8f93SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:transfer(\"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\nlocal result = spi_device:transfer({0x00,0x01})--\u53d1\u90010x00,0x01,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi_device:transfer(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi_device:transfer"}, "spi_device:send": {"body": "spi_device:send(${1:data[},${2:len]})", "description": "spi_device:send(data[, len]) - \u53d1\u9001SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi_device:send(\"123\")--\u53d1\u9001123\nlocal result = spi_device:send({0x00,0x01})--\u53d1\u90010x00,0x01\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi_device:send(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi_device:send"}, "spi_device:recv": {"body": "spi_device:recv(${1:size})", "description": "spi_device:recv(size) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:recv(4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n", "prefix": "spi_device:recv"}, "spi.xfer": {"body": "spi.xfer(${1:id},${2:txbuff},${3:rxbuff},${4:rx_len},${5:transfer_done_topic})", "description": "spi.xfer(id, txbuff, rxbuff, rx_len, transfer_done_topic) - \u975e\u963b\u585e\u65b9\u5f0f\u786c\u4ef6SPI\u4f20\u8f93SPI\u6570\u636e\uff0c\u76ee\u7684\u4e3a\u4e86\u63d0\u9ad8\u6838\u5fc3\u5229\u7528\u7387\u3002API\u76f4\u63a5\u8fd4\u56de\u662f\u5426\u542f\u52a8\u4f20\u8f93\uff0c\u4f20\u8f93\u5b8c\u6210\u540e\u901a\u8fc7topic\u56de\u8c03\uff0c\u672cAPI\u9002\u5408\u786c\u4ef6SPI\u4f20\u8f93\u5927\u91cf\u6570\u636e\u4f20\u8f93\uff0c\u5916\u8bbe\u529f\u80fd\uff08LCD SPI\uff0cW5500 SPI\u4e4b\u7c7b\u7684\uff09\u5360\u636e\u7684SPI\u548c\u8f6f\u4ef6SPI\u4e0d\u80fd\u7528\uff0c\u5c11\u91cf\u6570\u636e\u4f20\u8f93\u5efa\u8bae\u4f7f\u7528\u4f20\u7edf\u963b\u585e\u578bAPI\n\u4f20\u5165\u503c\uff1a\nuserdata or int spi_device\u6216\u8005spi_id\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662fspi_device\uff0c\u9700\u8981\u624b\u52a8\u5728\u4f20\u8f93\u5b8c\u6210\u540e\u62c9\u9ad8cs!!!!!!\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u63a5\u6536\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\nzbuff \u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u53d1\u9001\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u63a5\u6536\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\u5b58\u50a8\nint \u4f20\u8f93\u6570\u636e\u957f\u5ea6\uff0c\u7279\u522b\u8bf4\u660e \u5982\u679c\u4e3a\u534a\u53cc\u5de5\uff0c\u5148\u53d1\u540e\u6536\uff0c\u6bd4\u5982spi flash\u64cd\u4f5c\u8fd9\u79cd\uff0c\u5219\u957f\u5ea6=\u53d1\u9001\u5b57\u8282+\u63a5\u6536\u5b57\u8282\uff0c\u6ce8\u610f\u4e0a\u9762\u53d1\u9001\u548c\u63a5\u6536buff\u90fd\u8981\u7559\u8db3\u591f\u7684\u6570\u636e\uff0c\u540e\u7eed\u63a5\u6536\u6570\u636e\u5904\u7406\u9700\u8981\u8df3\u8fc7\u53d1\u9001\u6570\u636e\u957f\u5ea6\u5b57\u8282\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684topic\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = spi.xfer(spi.SPI_0, txbuff, rxbuff, 1024, \"SPIDONE\") if result then result, spi_id, succ, error_code = sys.waitUntil(\"SPIDONE\") end if not result or not succ then log.info(\"spi fail, error code\", error_code) else log.info(\"spi ok\") end\n\n", "prefix": "spi.xfer"}, "statem.create": {"body": "statem.create(${1:count},${2:repeat})", "description": "statem.create(count, repeat) - \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u72b6\u6001\u673a.\n\u4f20\u5165\u503c\uff1a\nint \u6307\u4ee4\u6761\u6570,\u9ed8\u8ba432\u6761\nint \u91cd\u590d\u6267\u884c\u7684\u6b21\u6570, 0 \u4ee3\u8868\u4e0d\u91cd\u590d, \u6b63\u6574\u6570\u4ee3\u8868\u5177\u4f53\u91cd\u590d\u6267\u884c\u7684\u6b21\u6570. \u6682\u4e0d\u652f\u6301\u6c38\u7eed\u6267\u884c\n\u8fd4\u56de\u503c\uff1a\nsome \u82e5\u6210\u529f,\u8fd4\u56de\u72b6\u6001\u673a\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\ngpio.setup(7, 0, gpio.PULLUP)\ngpio.setup(12, 0, gpio.PULLUP)\ngpio.setup(13, 0, gpio.PULLUP)\ngpio.setup(14, 0, gpio.PULLUP)\nlocal sm = statem.create()\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :usleep(10) -- \u4f11\u772010us\n :gpio_set(7, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(12, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(13, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(14, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :finish()\n\n-- \u6267\u884c\u4e4b,\u540e\u7eed\u4f1a\u652f\u6301\u540e\u53f0\u6267\u884c\nsm:exec()\n", "prefix": "statem.create"}, "string.toHex": {"body": "string.toHex(${1:str},${2:separator})", "description": "string.toHex(str, separator) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u6210HEX\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26, \u9ed8\u8ba4\u4e3a\"\"\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u5b57\u7b26\u4e32\nnumber HEX\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nstring.toHex(\"\\1\\2\\3\") --> \"010203\" 6\nstring.toHex(\"123abc\") --> \"313233616263\" 12\nstring.toHex(\"123abc\", \" \") --> \"31 32 33 61 62 63 \" 12\n", "prefix": "string.toHex"}, "string.fromHex": {"body": "string.fromHex(${1:hex})", "description": "string.fromHex(hex) - \u5c06HEX\u8f6c\u6210\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring hex,16\u8fdb\u5236\u7ec4\u6210\u7684\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nstring.fromHex(\"010203\") --> \"\\1\\2\\3\"\nstring.fromHex(\"313233616263\") --> \"123abc\"\n", "prefix": "string.fromHex"}, "string.split": {"body": "string.split(${1:str},${2:delimiter},${3:keepEmtry})", "description": "string.split(str, delimiter, keepEmtry) - \u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26,\u53ef\u9009,\u9ed8\u8ba4 \",\"\nbool \u662f\u5426\u4fdd\u7559\u7a7a\u767d\u7247\u6bb5,\u9ed8\u8ba4\u4e3afalse,\u4e0d\u4fdd\u7559. 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\n\u8fd4\u56de\u503c\uff1a\ntable \u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u8868\n\u4f8b\u5b50\uff1a\nlocal tmp = string.split(\"123,233333,122\")\nlog.info(\"tmp\", json.encode(tmp))\nlocal tmp = (\"123,456,789\"):split(',') --> {'123','456','789'}\nlog.info(\"tmp\", json.encode(tmp))\n\n-- \u4fdd\u7559\u7a7a\u7247\u6bb5, 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\nlocal str = \"/tmp//def/1234/\"\nlocal tmp = str:split(\"/\", true) \nlog.info(\"str.split\", #tmp, json.encode(tmp))\n", "prefix": "string.split"}, "string.toValue": {"body": "string.toValue(${1:str})", "description": "string.toValue(str) - \u8fd4\u56de\u5b57\u7b26\u4e32tonumber\u7684\u8f6c\u4e49\u5b57\u7b26\u4e32(\u7528\u6765\u652f\u6301\u8d85\u8fc731\u4f4d\u6574\u6570\u7684\u8f6c\u6362)\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8f6c\u6362\u540e\u7684\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32\nnumber \u8f6c\u6362\u4e86\u591a\u5c11\u4e2a\u5b57\u7b26\n\u4f8b\u5b50\uff1a\nstring.toValue(\"123456\") --> \"\\1\\2\\3\\4\\5\\6\" 6\nstring.toValue(\"123abc\") --> \"\\1\\2\\3\\a\\b\\c\" 6\n", "prefix": "string.toValue"}, "string.urlEncode": {"body": "string.urlEncode(${1:\"123abc\"})", "description": "string.urlEncode(\"123 abc\") - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884curl\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nint mode:url\u7f16\u7801\u7684\u8f6c\u6362\u6807\u51c6,\n", "prefix": "string.urlEncode"}, "string.toBase64": {"body": "string.toBase64(${1:str})", "description": "string.toBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.toBase64"}, "string.fromBase64": {"body": "string.fromBase64(${1:str})", "description": "string.fromBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase64"}, "string.toBase32": {"body": "string.toBase32(${1:str})", "description": "string.toBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.toBase32"}, "string.fromBase32": {"body": "string.fromBase32(${1:str})", "description": "string.fromBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase32"}, "string.startsWith": {"body": "string.startsWith(${1:str},${2:prefix})", "description": "string.startsWith(str, prefix) - \u5224\u65ad\u5b57\u7b26\u4e32\u524d\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u524d\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:startsWith(\"a\"))\nlog.info(\"str\", str:startsWith(\"b\"))\n", "prefix": "string.startsWith"}, "string.endsWith": {"body": "string.endsWith(${1:str},${2:suffix})", "description": "string.endsWith(str, suffix) - \u5224\u65ad\u5b57\u7b26\u4e32\u540e\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u540e\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:endsWith(\"c\"))\nlog.info(\"str\", str:endsWith(\"b\"))\n", "prefix": "string.endsWith"}, "string.trim": {"body": "string.trim(${1:str},${2:ltrim},${3:rtrim})", "description": "string.trim(str, ltrim, rtrim) - \u88c1\u526a\u5b57\u7b26\u4e32,\u53bb\u9664\u5934\u5c3e\u7684\u7a7a\u683c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5904\u7406\u7684\u5b57\u7b26\u4e32\nbool \u6e05\u7406\u524d\u7f00,\u9ed8\u8ba4\u4e3atrue\nbool \u6e05\u7406\u540e\u7f00,\u9ed8\u8ba4\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nstring \u6e05\u7406\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal str = \"\\r\\nabc\\r\\n\"\nlog.info(\"str\", string.trim(str)) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", str:trim()) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", #string.trim(str, false, true)) -- \u4ec5\u88c1\u526a\u540e\u7f00,\u6240\u4ee5\u957f\u5ea6\u662f5\n", "prefix": "string.trim"}, "sys.wait": {"body": "sys.wait(${1:timeout})", "description": "sys.wait(timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nany \u901a\u5e38\u4e3anil,\u9664\u975e\u4e3b\u52a8\u88ab\u5524\u9192(\u901a\u5e38\u4e0d\u4f1a)\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(500)\n end\nend)\n", "prefix": "sys.wait"}, "sys.waitUntil": {"body": "sys.waitUntil(${1:topic},${2:timeout})", "description": "sys.waitUntil(topic, timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\u6216\u8005\u7279\u5b9a\u7684topic\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6topic\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nboolean \u5982\u679c\u662f\u8d85\u65f6,\u8fd4\u56defalse,\u5426\u5219\u8fd4\u56detrue\nany \u5bf9\u5e94topic\u7684\u5185\u5bb9\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n // do something\n local result, data = sys.waitUntil(\"NET_READY\", 30000)\n // do something else\nend)\n", "prefix": "sys.waitUntil"}, "sys.taskInit": {"body": "sys.taskInit(${1:func},${2:arg1},${3:arg2},${4:argN})", "description": "sys.taskInit(func, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2aTask\u534f\u7a0b\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\ntask \u534f\u7a0b\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nsys.taskInit(function(a, b, c)\n log.info(\"task\", a, b, c) -- \u6253\u5370 task A B C\nend, \"A\", \"B\", \"N\")\n", "prefix": "sys.taskInit"}, "sys.timerStart": {"body": "sys.timerStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStart"}, "sys.timerLoopStart": {"body": "sys.timerLoopStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerLoopStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerLoopStart"}, "sys.timerStop": {"body": "sys.timerStop(${1:id})", "description": "sys.timerStop(id) - \u5173\u95ed\u4e00\u4e2a\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal tcount = 0\nlocal tid \ntid = sys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\n if tcount > 10 then\n sys.timerStop(tid)\n end\n tcount = tcount + 1\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStop"}, "sys.timerStopAll": {"body": "sys.timerStopAll(${1:fnc})", "description": "sys.timerStopAll(fnc) - \u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nfunction fnc\u56de\u8c03\u7684\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u56de\u8c03\u51fd\u6570\u4e3apublicTimerCbFnc\u7684\u6240\u6709\u5b9a\u65f6\u5668\nlocal function publicTimerCbFnc(tag)\nlog.info(\"publicTimerCbFnc\",tag)\nend\nsys.timerStart(publicTimerCbFnc,8000,\"first\")\nsys.timerStart(publicTimerCbFnc,8000,\"second\")\nsys.timerStart(publicTimerCbFnc,8000,\"third\")\nsys.timerStopAll(publicTimerCbFnc)\n", "prefix": "sys.timerStopAll"}, "sys.publish": {"body": "sys.publish(${1:topic},${2:arg1},${3:agr2},${4:argN})", "description": "sys.publish(topic, arg1, agr2, argN) - \u5f80\u7279\u5b9atopic\u901a\u9053\u53d1\u5e03\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nany \u9644\u5e26\u7684\u53c2\u65701\nany \u9644\u5e26\u7684\u53c2\u65702\nany \u9644\u5e26\u7684\u53c2\u6570N\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nsys.publish(\"BT_READY\", false)\n", "prefix": "sys.publish"}, "sys.subscribe": {"body": "sys.subscribe(${1:topic},${2:func})", "description": "sys.subscribe(topic, func) - \u8ba2\u9605\u4e00\u4e2atopic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.subscribe(\"BT_READY\", bt_cb)\nsys.subscribe(\"BT_READY\", function(state)\n log.info(\"sys\", \"Got BT_READY\", state)\nend)\n", "prefix": "sys.subscribe"}, "sys.unsubscribe": {"body": "sys.unsubscribe(${1:topic},${2:func})", "description": "sys.unsubscribe(topic, func) - \u53d6\u6d88\u8ba2\u9605topic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.unsubscribe(\"BT_READY\", bt_cb)\n", "prefix": "sys.unsubscribe"}, "sys.run": {"body": "sys.run()", "description": "sys.run() - sys\u5e93\u4e3b\u5faa\u73af\u65b9\u6cd5,\u4ec5\u5141\u8bb8\u5728main.lua\u7684\u672b\u5c3e\u8c03\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c. \u8fd9\u4e2a\u65b9\u6cd5\u51e0\u4e4e\u4e0d\u53ef\u80fd\u8fd4\u56de.\n\u4f8b\u5b50\uff1a\n-- \u603b\u662fmain.lua\u7684\u7ed3\u5c3e\u4e00\u53e5,\u5c06\u6765\u4e5f\u8bb8\u4f1a\u7b80\u5316\u6389\nsys.run()\n-- \u4e4b\u540e\u7684\u4ee3\u7801\u4e0d\u4f1a\u88ab\u6267\u884c\n", "prefix": "sys.run"}, "sysplus.waitMsg": {"body": "sysplus.waitMsg(${1:taskName},${2:target},${3:timeout})", "description": "sysplus.waitMsg(taskName, target, timeout) - \u7b49\u5f85\u63a5\u6536\u4e00\u4e2a\u76ee\u6807\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nstring \u76ee\u6807\u6d88\u606f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u63a5\u6536\u5230\u4efb\u610f\u6d88\u606f\u90fd\u4f1a\u9000\u51fa\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u65e0\u8d85\u65f6\uff0c\u6c38\u8fdc\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\ntable \u6210\u529f\u8fd4\u56detable\u578b\u7684msg\uff0c\u8d85\u65f6\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7b49\u5f85\u4efb\u52a1\nsysplus.waitMsg('a', 'b', 1000)\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_wait\n", "prefix": "sysplus.waitMsg"}, "sysplus.sendMsg": {"body": "sysplus.sendMsg(${1:taskName},${2:target},${3:arg2},${4:arg3},${5:arg4})", "description": "sysplus.sendMsg(taskName, target, arg2, arg3, arg4) - \u5411\u76ee\u6807\u4efb\u52a1\u53d1\u9001\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65701\uff0c\u540c\u65f6\u4e5f\u662fwaitMsg\u91cc\u7684target\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65702\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65703\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65704\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5411\u4efb\u52a1a,\u76ee\u6807b\u53d1\u9001\u6d88\u606f\nsysplus.sendMsg('a', 'b')\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_send\n", "prefix": "sysplus.sendMsg"}, "sysplus.taskInitEx": {"body": "sysplus.taskInitEx(${1:fun},${2:taskName},${3:cbFun},${4:...})", "description": "sysplus.taskInitEx(fun, taskName, cbFun, ...) - \u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570,main.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\n\u4f20\u5165\u503c\uff1a\nfunction \u4efb\u52a1\u51fd\u6570\u540d,\u7528\u4e8eresume\u5524\u9192\u65f6\u8c03\u7528\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nfunction \u63a5\u6536\u5230\u975e\u76ee\u6807\u6d88\u606f\u65f6\u7684\u56de\u8c03\u51fd\u6570\nany ... \u4efb\u52a1\u51fd\u6570fun\u7684\u53ef\u53d8\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\n\u4f8b\u5b50\uff1a\nsysplus.taskInitEx(task1,'a',callback)\n", "prefix": "sysplus.taskInitEx"}, "sysplus.taskDel": {"body": "sysplus.taskDel(${1:taskName})", "description": "sysplus.taskDel(taskName) - \u5220\u9664\u7531taskInitEx\u521b\u5efa\u7684\u4efb\u52a1\u7ebf\u7a0b\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\n\u4f8b\u5b50\uff1a\nsysplus.taskDel('a')\n", "prefix": "sysplus.taskDel"}, "sysplus.cleanMsg": {"body": "sysplus.cleanMsg(${1:taskName})", "description": "sysplus.cleanMsg(taskName) - \u6e05\u9664\u6307\u5b9atask\u7684\u6d88\u606f\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\n\u4f8b\u5b50\uff1a\nsysplus.cleanMsg('a')\n", "prefix": "sysplus.cleanMsg"}, "timer.mdelay": {"body": "timer.mdelay(${1:timeout})", "description": "timer.mdelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dms, \u6700\u9ad81024ms, \u5b9e\u9645\u4f7f\u7528\u5f3a\u70c8\u5efa\u8bae\u4e0d\u8981\u8d85\u8fc7200ms\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u671f\u95f4\u6ca1\u6709\u4efb\u4f55luat\u4ee3\u7801\u4f1a\u6267\u884c,\u5305\u62ec\u5e95\u5c42\u6d88\u606f\u5904\u7406\u673a\u5236\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\ntimer.mdelay(10)\n", "prefix": "timer.mdelay"}, "timer.udelay": {"body": "timer.udelay(${1:timeout})", "description": "timer.udelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\u4f46us\u7ea7\u522b,\u4e0d\u4f1a\u5f88\u7cbe\u51c6\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dus, \u6700\u59273000us\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\n-- \u672cAPI\u5728 2023.05.18 \u6dfb\u52a0\ntimer.udelay(10)\n-- \u5b9e\u9645\u963b\u585e\u65f6\u957f\u662f\u6709\u6ce2\u52a8\u7684\n", "prefix": "timer.udelay"}, "touchkey.setup": {"body": "touchkey.setup(${1:id},${2:scan_period},${3:window},${4:threshold})", "description": "touchkey.setup(id, scan_period, window, threshold) - \u914d\u7f6e\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863, \u4f8b\u5982air101/air103\u652f\u6301 1~15, \u4f8b\u5982PA7\u5bf9\u5e94touch id=1\nint \u626b\u63cf\u95f4\u9694,\u8303\u56f41 ~ 0x3F, \u5355\u4f4d16ms,\u53ef\u9009\nint \u626b\u63cf\u7a97\u53e3,\u8303\u56f42-7, \u53ef\u9009\nint \u9600\u503c, \u8303\u56f40-127, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ntouchkey.setup(1)\nsys.subscribe(\"TOUCHKEY_INC\", function(id, count)\n -- \u4f20\u611f\u5668id\n -- \u8ba1\u6570\u5668,\u89e6\u6478\u6b21\u6570\u7edf\u8ba1\n log.info(\"touchkey\", id, count)\nend)\n", "prefix": "touchkey.setup"}, "touchkey.close": {"body": "touchkey.close(${1:id})", "description": "touchkey.close(id) - \u5173\u95ed\u521d\u59cb\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u592a\u53ef\u80fd\u9700\u8981\u5173\u6389\u7684\u6837\u5b50\ntouchkey.close(1)\n", "prefix": "touchkey.close"}, "u8g2.begin": {"body": "u8g2.begin(${1:conf})", "description": "u8g2.begin(conf) - u8g2\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f,\u8be6\u7ec6\u914d\u7f6e\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- conf\u914d\u7f6e\u9879\u8bf4\u660e\n-- ic \u5b57\u7b26\u4e32,\u4e3b\u63a7\u82af\u7247\u7c7b\u578b, \u652f\u6301custom(\u81ea\u5b9a\u4e49\u547d\u4ee4) ssd1306(\u9ed8\u8ba4) ssd1309 ssd1322 sh1106 sh1107 sh1108 st7567 uc1701 ssd1306_128x32\n-- direction \u6570\u503c,\u65b9\u5411,\u53ef\u90090 90 180 270 \u9ed8\u8ba40\n-- mode \u5b57\u7b26\u4e32,\u6a21\u5f0f,\u53ef\u9009i2c_sw:\u8f6f\u4ef6i2c i2c_hw:\u786c\u4ef6i2c,spi_hw_4pin: \u786c\u4ef6spi\n-- i2c_id: \u6570\u503c,\u786c\u4ef6i2c\u65f6\u6709\u6548\n-- i2c_scl: \u6570\u503c,\u8f6f\u4ef6i2c\u65f6\u65f6\u949f\u7ebf\u7684GPIO\u7f16\u53f7\n-- i2c_sda: \u6570\u503c\u8f6f\u4ef6i2c\u65f6\u6570\u636e\u7ebf\u7684GPIO\u7f16\u53f7\n-- spi_id\u3001spi_res\u3001spi_dc\u3001spi_cs: \u6570\u503c,\u786c\u4ef6spi\u7684SPI\u7f16\u53f7,\u590d\u4f4dGPIO\u7f16\u53f7,DC\u7ebf\u7684GPIO\u7f16\u53f7, CS\u7ebf\u7684GPIO\u7f16\u53f7\n-- x_offset: \u6570\u503c,X\u8f74\u504f\u79fb\u91cf,\u9ed8\u8ba4\u6309\u9a71\u52a8\u8d70, 2023.11.10\u65b0\u589e\u7684\u914d\u7f6e\u9879\n\n-- \u521d\u59cb\u5316\u786c\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_hw\",i2c_id=0}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u786c\u4ef6spi\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"spi_hw_4pin\",spi_id=0,spi_res=pin.PB03,spi_dc=pin.PB01,spi_cs=pin.PB04}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_sw\", i2c_scl=1, i2c_sda=4}) -- \u901a\u8fc7PA1 SCL / PA4 SDA\u6a21\u62df\n", "prefix": "u8g2.begin"}, "u8g2.close": {"body": "u8g2.close()", "description": "u8g2.close() - \u5173\u95ed\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95eddisp,\u518d\u6b21\u4f7f\u7528disp\u76f8\u5173API\u7684\u8bdd,\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\nu8g2.close()\n", "prefix": "u8g2.close"}, "u8g2.ClearBuffer": {"body": "u8g2.ClearBuffer()", "description": "u8g2.ClearBuffer() - \u6e05\u5c4f\uff0c\u6e05\u9664\u5185\u5b58\u5e27\u7f13\u51b2\u533a\u4e2d\u7684\u6240\u6709\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u6e05\u5c4f\nu8g2.ClearBuffer()\n", "prefix": "u8g2.ClearBuffer"}, "u8g2.SendBuffer": {"body": "u8g2.SendBuffer()", "description": "u8g2.SendBuffer() - \u5c06\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\uff0c\u5c06\u5b58\u50a8\u5668\u5e27\u7f13\u51b2\u533a\u7684\u5185\u5bb9\u53d1\u9001\u5230\u663e\u793a\u5668\n\u4f8b\u5b50\uff1a\n-- \u628a\u663e\u793a\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\nu8g2.SendBuffer()\n", "prefix": "u8g2.SendBuffer"}, "u8g2.DrawUTF8": {"body": "u8g2.DrawUTF8(${1:str},${2:x},${3:y})", "description": "u8g2.DrawUTF8(str, x, y) - \u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57\uff0c\u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57,\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.DrawUTF8(\"wifi is ready\", 10, 20)\n", "prefix": "u8g2.DrawUTF8"}, "u8g2.DrawButtonUTF8": {"body": "u8g2.DrawButtonUTF8(${1:str},${2:x},${3:y},${4:flags},${5:w},${6:h},${7:v},${8:str})", "description": "u8g2.DrawButtonUTF8(str, x, y, flags, w, h, v, str) - \u5728\u63d0\u4f9b\u7684\u6587\u672c\u5468\u56f4\u753b\u4e00\u4e2a\u6846\u3002\u8fd9\u4e0e DrawUTF8 \u7c7b\u4f3c\uff0c\u4f46\u4e3a\u6587\u672c\u6dfb\u52a0\u4e86\u4e00\u4e9b\u88c5\u9970\u3002\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f\u5e55 \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\nint \u6807\u5fd7 \u591a\u4e2a\u6807\u5fd7\u53ef\u4ee5\u4e0e\u201c\u6216\u201d\u8fd0\u7b97\u7b26\u4e00\u8d77\u4f7f\u7528\u3002\nint \u6587\u672c\u7684\u6700\u5c0f\u5bbd\u5ea6\u3002\u5982\u679c\u4e3a0\uff08\u6216\u4f4e\u4e8e\u6587\u672c\u5bbd\u5ea6\uff09\uff0c\u5219\u6587\u672c\u5bbd\u5ea6\u5c06\u7528\u4e8e\u6846\u67b6\u3002\nint \u6587\u672c\u524d\u540e\u7684\u989d\u5916\u7a7a\u95f4\u3002\nint \u6587\u672c\u4e0a\u4e0b\u7684\u989d\u5916\u7a7a\u95f4\u3002\n\u4f8b\u5b50\uff1a\nu8g2.DrawButtonUTF8(\"str\", 10, 20,u8g2.BTN_BW2,0,2,2)\n", "prefix": "u8g2.DrawButtonUTF8"}, "u8g2.SetFontMode": {"body": "u8g2.SetFontMode(${1:mode})", "description": "u8g2.SetFontMode(mode) - \u8bbe\u7f6e\u5b57\u4f53\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetFontMode(1)\n", "prefix": "u8g2.SetFontMode"}, "u8g2.SetFont": {"body": "u8g2.SetFont(${1:font},${2:indentation})", "description": "u8g2.SetFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata font, u8g2.font_opposansm8 \u4e3a\u7eaf\u82f1\u65878\u53f7\u5b57\u4f53,\u8fd8\u6709font_opposansm10 font_opposansm12 font_opposansm16 font_opposansm18 font_opposansm20 font_opposansm22 font_opposansm24 font_opposansm32 \u53ef\u9009 u8g2.font_opposansm12_chinese \u4e3a12x12\u5168\u4e2d\u6587,\u8fd8\u6709 font_opposansm16_chinese font_opposansm24_chinese font_opposansm32_chinese \u53ef\u9009, u8g2.font_unifont_t_symbols \u4e3a\u7b26\u53f7.\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nu8g2.SetFont(u8g2.font_opposansm12)\n", "prefix": "u8g2.SetFont"}, "u8g2.GetDisplayHeight": {"body": "u8g2.GetDisplayHeight()", "description": "u8g2.GetDisplayHeight() - \u83b7\u53d6\u663e\u793a\u5c4f\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayHeight()\n", "prefix": "u8g2.GetDisplayHeight"}, "u8g2.GetDisplayWidth": {"body": "u8g2.GetDisplayWidth()", "description": "u8g2.GetDisplayWidth() - \u83b7\u53d6\u663e\u793a\u5c4f\u5bbd\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u5bbd\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayWidth()\n", "prefix": "u8g2.GetDisplayWidth"}, "u8g2.SetDrawColor": {"body": "u8g2.SetDrawColor(${1:c})", "description": "u8g2.SetDrawColor(c) - \u4e3a\u6240\u6709\u7ed8\u56fe\u529f\u80fd\u5206\u914d\u7ed8\u56fe\u989c\u8272\u3002\n\u4f20\u5165\u503c\uff1a\nint c\u4e3a\u989c\u8272\u503c 0\u6ca1\u6709\u8272 1\u6709\u8272 2\u4e0e\u5e95\u8272xor\n\u4f8b\u5b50\uff1a\nu8g2.SetDrawColor(0)\n", "prefix": "u8g2.SetDrawColor"}, "u8g2.DrawPixel": {"body": "u8g2.DrawPixel(${1:x},${2:y})", "description": "u8g2.DrawPixel(x,y) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint X\u4f4d\u7f6e.\nint Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawPixel(20, 5)\n", "prefix": "u8g2.DrawPixel"}, "u8g2.DrawLine": {"body": "u8g2.DrawLine(${1:x0},${2:y0},${3:x1},${4:y1})", "description": "u8g2.DrawLine(x0,y0,x1,y1) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawLine(20, 5, 5, 32)\n", "prefix": "u8g2.DrawLine"}, "u8g2.DrawCircle": {"body": "u8g2.DrawCircle(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawCircle(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawCircle(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawCircle"}, "u8g2.DrawDisc": {"body": "u8g2.DrawDisc(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawDisc(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawDisc(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawDisc"}, "u8g2.DrawEllipse": {"body": "u8g2.DrawEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawEllipse(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawEllipse"}, "u8g2.DrawFilledEllipse": {"body": "u8g2.DrawFilledEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawFilledEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawFilledEllipse(60,30,8,15)\n", "prefix": "u8g2.DrawFilledEllipse"}, "u8g2.DrawBox": {"body": "u8g2.DrawBox(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawBox(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u586b\u5145\u7684\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawBox(3,7,25,15)\n", "prefix": "u8g2.DrawBox"}, "u8g2.DrawFrame": {"body": "u8g2.DrawFrame(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawFrame(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u7a7a\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawFrame(3,7,25,15)\n", "prefix": "u8g2.DrawFrame"}, "u8g2.DrawRBox": {"body": "u8g2.DrawRBox(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRBox(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u586b\u5145\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRBox(3,7,25,15)\n", "prefix": "u8g2.DrawRBox"}, "u8g2.DrawRFrame": {"body": "u8g2.DrawRFrame(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRFrame(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u7a7a\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRFrame(3,7,25,15)\n", "prefix": "u8g2.DrawRFrame"}, "u8g2.DrawGlyph": {"body": "u8g2.DrawGlyph(${1:x},${2:y},${3:encoding})", "description": "u8g2.DrawGlyph(x,y,encoding) - \u7ed8\u5236\u4e00\u4e2a\u56fe\u5f62\u5b57\u7b26\u3002\u5b57\u7b26\u653e\u7f6e\u5728\u6307\u5b9a\u7684\u50cf\u7d20\u4f4d\u7f6ex\u548cy.\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u7684Unicode\u503c\n\u4f8b\u5b50\uff1a\nu8g2.SetFont(u8g2_font_unifont_t_symbols)\nu8g2.DrawGlyph(5, 20, 0x2603) -- dec 9731/hex 2603 Snowman\n", "prefix": "u8g2.DrawGlyph"}, "u8g2.DrawTriangle": {"body": "u8g2.DrawTriangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:x2},${6:y2})", "description": "u8g2.DrawTriangle(x0,y0,x1,y1,x2,y2) - \u7ed8\u5236\u4e00\u4e2a\u4e09\u89d2\u5f62\uff08\u5b9e\u5fc3\u591a\u8fb9\u5f62\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u70b90X\u4f4d\u7f6e\nint \u70b90Y\u4f4d\u7f6e\nint \u70b91X\u4f4d\u7f6e\nint \u70b91Y\u4f4d\u7f6e\nint \u70b92X\u4f4d\u7f6e\nint \u70b92Y\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nu8g2.DrawTriangle(20,5, 27,50, 5,32)\n", "prefix": "u8g2.DrawTriangle"}, "u8g2.SetBitmapMode": {"body": "u8g2.SetBitmapMode(${1:mode})", "description": "u8g2.SetBitmapMode(mode) - \u5b9a\u4e49\u4f4d\u56fe\u51fd\u6570\u662f\u5426\u5c06\u5199\u5165\u80cc\u666f\u8272\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetBitmapMode(1)\n", "prefix": "u8g2.SetBitmapMode"}, "u8g2.DrawXBM": {"body": "u8g2.DrawXBM(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "u8g2.DrawXBM(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nu8g2.DrawXBM(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "u8g2.DrawXBM"}, "u8g2.DrawDrcode": {"body": "u8g2.DrawDrcode(${1:x},${2:y},${3:str},${4:size})", "description": "u8g2.DrawDrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.DrawDrcode"}, "u8g2.SetContrast": {"body": "u8g2.SetContrast(${1:contrast})", "description": "u8g2.SetContrast(contrast) - \u8c03\u6574\u5c4f\u5e55\u5bf9\u6bd4\u5ea6\n\u4f20\u5165\u503c\uff1a\nint \u5bf9\u6bd4\u5ea6\uff08\u53d6\u503c\u8303\u56f4\u4e0eIC\u6709\u5173\uff0c\u5982st7567\u4e3a0-63\uff09\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.SetContrast"}, "u8g2.drawGtfontGb2312": {"body": "u8g2.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontGb2312"}, "u8g2.drawGtfontUtf8": {"body": "u8g2.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontUtf8"}, "u8g2.CopyBuffer": {"body": "u8g2.CopyBuffer(${1:buff})", "description": "u8g2.CopyBuffer(buff) - \u83b7\u53d6\u5e95\u5c42\u56fe\u50cf\u7f13\u51b2\u533a\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f8b,\u7a7a\u95f4\u8981\u5927\u4e8e\u7b49\u4e8e\u5e95\u5c42buff\u7684\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56debuff\u5927\u5c0f,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728u8g2\u521d\u59cb\u5316\u4e4b\u540e\u624d\u80fd\u8c03\u7528\n\n-- \u83b7\u53d6\u5927\u5c0f\nlocal sz = u8g2.CopyBuffer()\n\n-- \u62f7\u8d1d\u5e95\u5c42buff\nlocal buff = zbuff.create(sz)\nu8g2.CopyBuffer(buff)\n\n", "prefix": "u8g2.CopyBuffer"}, "u8g2.SetPowerSave": {"body": "u8g2.SetPowerSave(${1:is_enable})", "description": "u8g2.SetPowerSave(is_enable) - \u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nboolean \u542f\u7528\u4e0e\u5426. true \u542f\u7528, false\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2023.11.02\u65b0\u589e\n-- \u5f00\u542f\u7701\u7535\nu8g2.SetPowerSave(true)\n-- \u5173\u95ed\u7701\u7535\nu8g2.SetPowerSave(false)\n", "prefix": "u8g2.SetPowerSave"}, "uart.setup": {"body": "uart.setup(${1:id},${2:baud_rate},${3:data_bits},${4:stop_bits},${5:partiy},${6:bit_order},${7:buff_size},${8:rs485_gpio},${9:rs485_level},${10:rs485_delay},${11:debug_enable},${12:error_drop})", "description": "uart.setup(id, baud_rate, data_bits, stop_bits, partiy, bit_order, buff_size, rs485_gpio, rs485_level, rs485_delay, debug_enable, error_drop) - \u914d\u7f6e\u4e32\u53e3\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8, \u6700\u5927\u503c\u53d6\u51b3\u4e8e\u8bbe\u5907\nint \u6ce2\u7279\u7387, \u9ed8\u8ba4115200\uff0c\u53ef\u9009\u62e9\u6ce2\u7279\u7387\u8868:{2000000,921600,460800,230400,115200,57600,38400,19200,9600,4800,2400}\nint \u6570\u636e\u4f4d\uff0c\u9ed8\u8ba4\u4e3a8, \u53ef\u9009 7/8\nint \u505c\u6b62\u4f4d\uff0c\u9ed8\u8ba4\u4e3a1, \u6839\u636e\u5b9e\u9645\u60c5\u51b5\uff0c\u53ef\u4ee5\u67090.5/1/1.5/2\u7b49\nint \u6821\u9a8c\u4f4d\uff0c\u53ef\u9009 uart.None/uart.Even/uart.Odd\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4\u5c0f\u7aef uart.LSB, \u53ef\u9009 uart.MSB\nint \u7f13\u51b2\u533a\u5927\u5c0f\uff0c\u9ed8\u8ba4\u503c1024\nint 485\u6a21\u5f0f\u4e0b\u7684\u8f6c\u6362GPIO, \u9ed8\u8ba4\u503c0xffffffff\nint 485\u6a21\u5f0f\u4e0b\u7684rx\u65b9\u5411GPIO\u7684\u7535\u5e73, \u9ed8\u8ba4\u503c0\nint 485\u6a21\u5f0f\u4e0btx\u5411rx\u8f6c\u6362\u7684\u5ef6\u8fdf\u65f6\u95f4\uff0c\u9ed8\u8ba4\u503c12bit\u7684\u65f6\u95f4\uff0c\u5355\u4f4dus, 9600\u6ce2\u7279\u7387\u586b20000\nint \u5f00\u542f\u8c03\u8bd5\u529f\u80fd\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.DEBUG\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\nint \u9047\u5230\u63a5\u6536\u9519\u8bef\u662f\u5426\u653e\u5f03\u7f13\u5b58\u6570\u636e\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.ERROR_DROP\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5931\u8d25\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u6700\u5e38\u7528115200 8N1\nuart.setup(1, 115200, 8, 1, uart.NONE)\n-- \u53ef\u4ee5\u7b80\u5199\u4e3a uart.setup(1)\n\n-- 485\u81ea\u52a8\u5207\u6362, \u9009\u53d6GPIO10\u4f5c\u4e3a\u6536\u53d1\u8f6c\u6362\u811a\nuart.setup(1, 115200, 8, 1, uart.NONE, uart.LSB, 1024, 10, 0, 2000)\n-- \u9047\u5230\u63a5\u6536\u9519\u8bef\u4e0d\u629b\u5f03\u7f13\u5b58\u6570\u636e\nuart.setup(1, 115200, 8, 1, uart.NONE, nil, 1024, nil, nil, nil, nil, 0)\n", "prefix": "uart.setup"}, "uart.write": {"body": "uart.write(${1:id},${2:data})", "description": "uart.write(id, data) - \u5199\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring/zbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u5168\u53d1\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u5199\u5165\u53ef\u89c1\u5b57\u7b26\u4e32\nuart.write(1, \"rdy\\r\\n\")\n-- \u5199\u5165\u5341\u516d\u8fdb\u5236\u7684\u6570\u636e\u4e32\nuart.write(1, string.char(0x55,0xAA,0x4B,0x03,0x86))\n", "prefix": "uart.write"}, "uart.read": {"body": "uart.read(${1:id},${2:len})", "description": "uart.read(id, len) - \u8bfb\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nint \u8bfb\u53d6\u957f\u5ea6\nfile/zbuff \u53ef\u9009\uff1a\u6587\u4ef6\u53e5\u67c4\u6216zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u5230\u7684\u6570\u636e / \u4f20\u5165zbuff\u65f6\uff0c\u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.read(1, 16)\n", "prefix": "uart.read"}, "uart.close": {"body": "uart.close(${1:id})", "description": "uart.close(id) - \u5173\u95ed\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.close(1)\n", "prefix": "uart.close"}, "uart.on": {"body": "uart.on(${1:id},${2:event},${3:func})", "description": "uart.on(id, event, func) - \u6ce8\u518c\u4e32\u53e3\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.on(1, \"receive\", function(id, len)\n local data = uart.read(id, len)\n log.info(\"uart\", id, len, data)\nend)\n", "prefix": "uart.on"}, "uart.wait485": {"body": "uart.wait485(${1:id})", "description": "uart.wait485(id) - \u7b49\u5f85485\u6a21\u5f0f\u4e0bTX\u5b8c\u6210\uff0cmcu\u4e0d\u652f\u6301\u4e32\u53e3\u53d1\u9001\u79fb\u4f4d\u5bc4\u5b58\u5668\u7a7a\u6216\u8005\u7c7b\u4f3c\u4e2d\u65ad\u65f6\u624d\u9700\u8981\uff0c\u5728sent\u4e8b\u4ef6\u56de\u8c03\u540e\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u7b49\u5f85\u4e86\u591a\u5c11\u6b21\u5faa\u73af\u624d\u7b49\u5230tx\u5b8c\u6210\uff0c\u7528\u4e8e\u7c97\u52a3\u7684\u89c2\u5bdfdelay\u65f6\u95f4\u662f\u5426\u8db3\u591f\uff0c\u8fd4\u56de\u4e0d\u4e3a0\u8bf4\u660e\u8fd8\u9700\u8981\u653e\u5927delay\n", "prefix": "uart.wait485"}, "uart.exist": {"body": "uart.exist(${1:id})", "description": "uart.exist(id) - \u68c0\u67e5\u4e32\u53e3\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue\n", "prefix": "uart.exist"}, "uart.rx": {"body": "uart.rx(${1:id},${2:buff})", "description": "uart.rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u4e32\u53e3\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.rx(1, buff)\n", "prefix": "uart.rx"}, "uart.rxSize": {"body": "uart.rxSize(${1:id})", "description": "uart.rxSize(id) - \u8bfb\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal size = uart.rxSize(1)\n", "prefix": "uart.rxSize"}, "uart.rxClear": {"body": "uart.rxClear(${1:id})", "description": "uart.rxClear(id) - \u6e05\u9664\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u4f8b\u5b50\uff1a\nuart.rxClear(1)\n", "prefix": "uart.rxClear"}, "uart.tx": {"body": "uart.tx(${1:id},${2:buff},${3:start},${4:len})", "description": "uart.tx(id, buff, start, len) - buff\u5f62\u5f0f\u5199\u4e32\u53e3,\u7b49\u540c\u4e8ec\u8bed\u8a00uart_tx(uart_id, &buff[start], len);\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nuart.tx(1, buf)\n", "prefix": "uart.tx"}, "uart.createSoft": {"body": "uart.createSoft(${1:tx_pin},${2:tx_hwtimer_id},${3:rx_pin},${4:rx_hwtimer_id},${5:adjust_period})", "description": "uart.createSoft(tx_pin, tx_hwtimer_id, rx_pin, rx_hwtimer_id, adjust_period) - \u8bbe\u7f6e\u8f6f\u4ef6uart\u7684\u786c\u4ef6\u914d\u7f6e\uff0c\u53ea\u6709\u652f\u6301\u786c\u4ef6\u5b9a\u65f6\u5668\u7684SOC\u624d\u80fd\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e00\u4e2a\uff0c\u6ce2\u7279\u7387\u6839\u636e\u5e73\u53f0\u7684\u8f6f\u786c\u4ef6\u914d\u7f6e\u6709\u4e0d\u540c\u7684\u6781\u9650\uff0c\u5efa\u8bae9600\uff0c\u63a5\u6536\u7f13\u5b58\u4e0d\u8d85\u8fc765535\uff0c\u4e0d\u652f\u6301MSB\uff0c\u652f\u6301485\u81ea\u52a8\u63a7\u5236\u3002\u540e\u7eed\u4ecd\u8981setup\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u53d1\u9001\u5f15\u811a\u7f16\u53f7\nint \u53d1\u9001\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u63a5\u6536\u5f15\u811a\u7f16\u53f7\nint \u63a5\u6536\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u53d1\u9001\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\nint \u63a5\u6536\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\n\u8fd4\u56de\u503c\uff1a\nint \u8f6f\u4ef6uart\u7684id\uff0c\u5982\u679c\u5931\u8d25\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6uart\nlocal uart_id = uart.createSoft(21, 0, 1, 2) --air780e\u5efa\u8bae\u7528\u5b9a\u65f6\u56680\u548c2\uff0ctx_pin\u6700\u597d\u7528AGPIO\uff0c\u9632\u6b62\u4f11\u7720\u65f6\u8bef\u89e6\u53d1\u5bf9\u7aefRX\n", "prefix": "uart.createSoft"}, "uart.list": {"body": "uart.list(${1:max})", "description": "uart.list(max) - \u83b7\u53d6\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\uff0c\u5f53\u524d\u4ec5\u9650win32\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4256\uff0c\u6700\u591a\u83b7\u53d6\u591a\u5c11\u4e2a\u4e32\u53e3\n\u8fd4\u56de\u503c\uff1a\ntable \u83b7\u53d6\u5230\u7684\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\n", "prefix": "uart.list"}, "usbapp.set_id": {"body": "usbapp.set_id(${1:id},${2:vid},${3:pid})", "description": "usbapp.set_id(id, vid, pid) - USB \u8bbe\u7f6eVID\u548cPID\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint vid \u5c0f\u7aef\u683c\u5f0f\nint pid \u5c0f\u7aef\u683c\u5f0f\n\u4f8b\u5b50\uff1a\nusbapp.set_id(0, 0x1234, 0x5678)\n", "prefix": "usbapp.set_id"}, "usbapp.hid_mode": {"body": "usbapp.hid_mode(${1:id},${2:mode},${3:buff_size})", "description": "usbapp.hid_mode(id, mode, buff_size) - USB HID\u8bbe\u5907\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint mode\uff0c\u76ee\u524d0\u662f\u952e\u76d8\uff0c1\u662f\u81ea\u5b9a\u4e49\nint buff_size\uff0c\u53ea\u80fd\u662f8,16,32,64\uff0c\u5982\u679c\u662f\u952e\u76d8\u6a21\u5f0f\u6216\u8005\u586b\u4e86\u5176\u4ed6\u503c\uff0c\u81ea\u52a8\u4e3a8\n\u4f8b\u5b50\uff1a\nusbapp.hid_mode(0, 0) -- usb hid\u952e\u76d8\u6a21\u5f0f\nusbapp.hid_mode(0, 1) -- usb hid\u81ea\u5b9a\u4e49\u6a21\u5f0f\uff0c\u7528\u4e8e\u514d\u9a71USB\u4ea4\u4e92\n", "prefix": "usbapp.hid_mode"}, "usbapp.start": {"body": "usbapp.start(${1:id})", "description": "usbapp.start(id) - \u542f\u52a8USB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u542f\u52a8USB\nusbapp.start(0)\n", "prefix": "usbapp.start"}, "usbapp.stop": {"body": "usbapp.stop(${1:id})", "description": "usbapp.stop(id) - \u5173\u95edUSB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\nusbapp.stop(0)\n", "prefix": "usbapp.stop"}, "usbapp.vhid_upload": {"body": "usbapp.vhid_upload(${1:id},${2:data})", "description": "usbapp.vhid_upload(id, data) - USB HID\u8bbe\u5907\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring \u6570\u636e. \u6ce8\u610f, HID\u7684\u53ef\u7528\u5b57\u7b26\u662f\u6709\u9650\u5236\u7684, \u57fa\u672c\u4e0a\u53ea\u6709\u53ef\u89c1\u5b57\u7b26\u662f\u652f\u6301\u7684, \u4e0d\u652f\u6301\u7684\u5b57\u7b26\u4f1a\u66ff\u6362\u4e3a\u7a7a\u683c.\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.vhid_upload(0, \"1234\") -- usb hid\u4f1a\u6a21\u62df\u6572\u51fa1234\n", "prefix": "usbapp.vhid_upload"}, "usbapp.hid_tx": {"body": "usbapp.hid_tx(${1:id},${2:data},${3:start},${4:len})", "description": "usbapp.hid_tx(id, data, start, len) - USB HID\u8bbe\u5907\u4e0a\u4f20\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring or zbuff \u6ce8\u610f\u6570\u636e\u91cf\u4e0d\u8db3\u65f6\u4f1a\u81ea\u52a8\u586b\u51450\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.hid_tx(0, \"1234\") -- usb hid\u4e0a\u4f200x31 0x32 0x33 0x34 + N\u4e2a0\n", "prefix": "usbapp.hid_tx"}, "usbapp.hid_rx": {"body": "usbapp.hid_rx(${1:id},${2:buff})", "description": "usbapp.hid_rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u63a5\u6536\u5230\u7684\u6570\u636e\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524d\u53ea\u6709air105\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nusbapp.hid_rx(0, buff)\n", "prefix": "usbapp.hid_rx"}, "usbapp.vhid_cancel_upload": {"body": "usbapp.vhid_cancel_upload(${1:id})", "description": "usbapp.vhid_cancel_upload(id) - USB HID\u8bbe\u5907\u53d6\u6d88\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6d88\u4e0a\u4f20\u6570\u636e,\u901a\u5e38\u4e0d\u9700\u8981\nusbapp.vhid_cancel_upload(0)\n", "prefix": "usbapp.vhid_cancel_upload"}, "usbapp.udisk_attach_sdhc": {"body": "usbapp.udisk_attach_sdhc(${1:id})", "description": "usbapp.udisk_attach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_attach_sdhc(0)\n", "prefix": "usbapp.udisk_attach_sdhc"}, "usbapp.udisk_detach_sdhc": {"body": "usbapp.udisk_detach_sdhc(${1:id})", "description": "usbapp.udisk_detach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u53bb\u9664\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_detach_sdhc(0)\n", "prefix": "usbapp.udisk_detach_sdhc"}, "w5500.init": {"body": "w5500.init(${1:spiid},${2:speed},${3:cs_pin},${4:irq_pin},${5:rst_pin},${6:link_pin})", "description": "w5500.init(spiid, speed, cs_pin, irq_pin, rst_pin, link_pin) - \u521d\u59cb\u5316w5500\n\u4f20\u5165\u503c\uff1a\nint spi\u901a\u9053\u53f7, \u4f8b\u5982 0, 1, 5, \u6309\u8bbe\u5907\u5b9e\u9645\u60c5\u51b5\u9009\nint spi\u901f\u5ea6, \u53ef\u4ee5\u8bbe\u7f6e\u5230\u5bf9\u5e94SPI\u7684\u6700\u9ad8\u901f\u5ea6\nint cs pin, \u7247\u9009\u811a, \u5bf9\u5e94W5500\u7684SCS\nint irq pin, \u4e2d\u65ad\u811a, \u5bf9\u5e94W5500\u7684INT\nint reset pin, \u590d\u4f4d\u811a, \u5bf9\u5e94W5500\u7684RST\nint link \u72b6\u6001 pin\uff0c\u53ef\u4ee5\u7559\u7a7a\u4e0d\u4f7f\u7528\uff0c\u9ed8\u8ba4\u4e0d\u4f7f\u7528\n\u4f8b\u5b50\uff1a\nw5500.init(spi.SPI_0, 24000000, pin.PB13, pin.PC08, pin.PC09)\n", "prefix": "w5500.init"}, "w5500.config": {"body": "w5500.config(${1:ip},${2:submask},${3:gateway},${4:mac},${5:RTR},${6:RCR},${7:speed})", "description": "w5500.config(ip, submask, gateway, mac, RTR, RCR, speed) - w5500\u914d\u7f6e\u7f51\u7edc\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9759\u6001ip\u5730\u5740\uff0c\u5982\u679c\u9700\u8981\u7528DHCP\u83b7\u53d6\uff0c\u8bf7\u5199nil\nstring \u5b50\u7f51\u63a9\u7801\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring \u7f51\u5173\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring MAC\uff0c\u5199nil\u5219\u901a\u8fc7MCU\u552f\u4e00\u7801\u81ea\u52a8\u751f\u6210\uff0c\u5982\u679c\u8981\u5199\uff0c\u957f\u5ea6\u5fc5\u987b\u662f6byte\nint \u91cd\u8bd5\u95f4\u9694\u65f6\u95f4\uff0c\u9ed8\u8ba42000\uff0c\u5355\u4f4d100us\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u6700\u5927\u91cd\u8bd5\u6b21\u6570\uff0c\u9ed8\u8ba48\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u901f\u5ea6\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u67090\u786c\u4ef6\u914d\u7f6e\uff0c1\u81ea\u9002\u5e94\uff0c\u9ed8\u8ba4\u4e3a0\n\u4f8b\u5b50\uff1a\nw5500.config(\"192.168.1.2\", \"255.255.255.0\", \"192.168.1.1\", string.fromHex(\"102a3b4c5d6e\"))\n", "prefix": "w5500.config"}, "w5500.bind": {"body": "w5500.bind(${1:id})", "description": "w5500.bind(id) - \u5c06w5500\u6ce8\u518c\u8fdb\u901a\u7528\u7f51\u7edc\u63a5\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u901a\u7528\u7f51\u7edc\u901a\u9053\u53f7\n\u4f8b\u5b50\uff1a\n-- \u82e5\u4f7f\u7528\u7684\u7248\u672c\u4e0d\u5e26socket\u5e93, \u6539\u6210 network.ETH0\nw5500.bind(socket.ETH0)\n", "prefix": "w5500.bind"}, "w5500.getMac": {"body": "w5500.getMac()", "description": "w5500.getMac() - \u83b7\u53d6w5500\u5f53\u524d\u7684MAC\uff0c\u5fc5\u987b\u5728init\u4e4b\u540e\u7528\uff0c\u5982\u679cconfig\u4e2d\u8bbe\u7f6e\u4e86\u81ea\u5df1\u7684MAC\uff0c\u9700\u8981\u5ef6\u8fdf\u4e00\u70b9\u65f6\u95f4\u518d\u8bfb\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MAC\n\u4f8b\u5b50\uff1a\nlocal mac = w5500.getMac()\nlog.info(\"w5500 mac\", mac:toHex())\n", "prefix": "w5500.getMac"}, "wdt.init": {"body": "wdt.init(${1:timeout})", "description": "wdt.init(timeout) - \u521d\u59cb\u5316watchdog\u5e76\u9a6c\u4e0a\u542f\u7528.\u5927\u90e8\u5206\u8bbe\u5907\u7684watchdog\u4e00\u65e6\u542f\u7528\u5c31\u65e0\u6cd5\u5173\u95ed.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(9000)\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.init"}, "wdt.setTimeout": {"body": "wdt.setTimeout(${1:timeout})", "description": "wdt.setTimeout(timeout) - \u90e8\u5206\u8bbe\u5907\u652f\u6301\u91cd\u65b0\u8bbe\u7f6ewatchdog\u8d85\u65f6\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.timerLoopStart(wdt.feed, 3000)\nsys.wait(5000)\nsys.setTimeout(5000)\n", "prefix": "wdt.setTimeout"}, "wdt.feed": {"body": "wdt.feed()", "description": "wdt.feed() - \u5582\u72d7,\u4f7f\u5f97\u8d85\u65f6\u8ba1\u65f6\u590d\u4f4d,\u91cd\u65b0\u8ba1\u65f6\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\n-- \u5b9a\u65f6\u5582\u72d7,\u6216\u8005\u6839\u636e\u4e1a\u52a1\u6309\u9700\u5582\u72d7\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.feed"}, "wdt.close": {"body": "wdt.close()", "description": "wdt.close() - \u5173\u95edwatchdog,\u901a\u5e38\u4e0d\u88ab\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.wait(9000)\nwdt.close()\n", "prefix": "wdt.close"}, "wsc:debug": {"body": "wsc:debug(${1:onoff})", "description": "wsc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "wsc:debug"}, "websocket.create": {"body": "websocket.create(${1:adapter},${2:url},${3:keepalive},${4:use_ipv6})", "description": "websocket.create(adapter, url, keepalive, use_ipv6) - websocket\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53c2\u8003socket\u5e93\u7684\u5e38\u91cf,\u9ed8\u8ba4\u4e3anil,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f\nstring \u8fde\u63a5\u5b57\u7b26\u4e32,\u53c2\u8003usage\nint \u5fc3\u8df3\u95f4\u9694,\u9ed8\u8ba460\u79d2. 2024.4.28\u65b0\u589e\nboolean \u662f\u5426\u4f7f\u7528ipv6,\u9ed8\u8ba4false. 2024.6.17\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56dewebsocket\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nwsc = websocket.create(nil,\"ws://air32.cn/abc\")\n-- \u52a0\u5bc6TCP\u94fe\u63a5\nwsc = websocket.create(nil,\"wss://air32.cn/abc\")\n", "prefix": "websocket.create"}, "wsc:on": {"body": "wsc:on(${1:cb})", "description": "wsc:on(cb) - \u6ce8\u518cwebsocket\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb websocket\u56de\u8c03,\u53c2\u6570\u5305\u62ecwebsocket_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nwsc:on(function(websocket_client, event, data, payload)\n -- \u6253\u5370\u5404\u79cd\u4e8b\u4ef6\n log.info(\"websocket\", \"event\", event, data, payload)\nend)\n--[[\nevent\u7684\u503c\u6709:\n conack \u8fde\u63a5\u670d\u52a1\u5668\u6210\u529f,\u5df2\u7ecf\u6536\u5230websocket\u534f\u8bae\u5934\u90e8\u4fe1\u606f,\u901a\u4fe1\u5df2\u5efa\u7acb\n recv \u6536\u5230\u670d\u52a1\u5668\u4e0b\u53d1\u7684\u4fe1\u606f, data, payload \u4e0d\u4e3anil\n sent send\u51fd\u6570\u53d1\u9001\u7684\u6d88\u606f,\u670d\u52a1\u5668\u5728TCP\u534f\u8bae\u5c42\u5df2\u786e\u8ba4\u6536\u5230\n disconnect \u670d\u52a1\u5668\u8fde\u63a5\u5df2\u65ad\u5f00\n\n\u5176\u4e2d sent/disconnect \u4e8b\u4ef6\u5728 2023.04.01 \u65b0\u589e\n]]\n", "prefix": "wsc:on"}, "wsc:connect": {"body": "wsc:connect()", "description": "wsc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nwsc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65adwebsocket\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "wsc:connect"}, "wsc:autoreconn": {"body": "wsc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "wsc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nwsc:autoreconn(true)\n", "prefix": "wsc:autoreconn"}, "wsc:send": {"body": "wsc:send(${1:data},${2:fin},${3:opt})", "description": "wsc:send(data, fin, opt) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e,\u5fc5\u586b\nint \u662f\u5426\u4e3a\u6700\u540e\u4e00\u5e27,\u9ed8\u8ba41,\u5373\u9a6c\u4e0a\u8bbe\u7f6e\u4e3a\u6700\u540e\u4e00\u5e27, \u4e5f\u5c31\u662f\u5355\u5e27\u53d1\u9001\nint \u64cd\u4f5c\u7801, \u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5e270, \u53ef\u90091\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u4e3afalse\u6216\u8005nil\n\u4f8b\u5b50\uff1a\n-- \u7b80\u5355\u53d1\u9001\u6570\u636e\nwsc:send(\"123\")\n-- \u5206\u6bb5\u53d1\u9001\u6570\u636e, \u6700\u540e\u8981\u75281(\u5373FIN\u5e27\u7ed3\u675f)\nwsc:send(\"123\", 0)\nwsc:send(\"456\", 0)\nwsc:send(\"789\", 1)\n", "prefix": "wsc:send"}, "wsc:close": {"body": "wsc:close()", "description": "wsc:close() - websocket\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nwsc:close()\n", "prefix": "wsc:close"}, "wsc:ready": {"body": "wsc:ready()", "description": "wsc:ready() - websocket\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal stat = wsc:ready()\n", "prefix": "wsc:ready"}, "wsc:headers": {"body": "wsc:headers(${1:headers})", "description": "wsc:headers(headers) - \u8bbe\u7f6e\u989d\u5916\u7684headers\n\u4f20\u5165\u503c\uff1a\ntable/string \u53ef\u4ee5\u662ftable,\u4e5f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\n-- table\u5f62\u5f0f\nwsc:headers({\n Auth=\"Basic ABCDEFGG\"\n})\n-- \u5b57\u7b26\u4e32\u5f62\u5f0f\nwsc:headers(\"Auth: Basic ABCDERG\\r\\n\")\n", "prefix": "wsc:headers"}, "wlan.init": {"body": "wlan.init()", "description": "wlan.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.init"}, "wlan.setMode": {"body": "wlan.setMode(${1:mode})", "description": "wlan.setMode(mode) - \u8bbe\u7f6ewifi\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint wifi\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3aAP\u6a21\u5f0f, \u5e7f\u64adssid, \u63a5\u6536wifi\u5ba2\u6237\u7aef\u7684\u94fe\u63a5\nwlan.setMode(wlan.AP)\n\n-- \u8bbe\u7f6e\u4e3aSTATION\u6a21\u5f0f, \u4e5f\u662f\u521d\u59cb\u5316\u540e\u7684\u9ed8\u8ba4\u6a21\u5f0f\nwlan.setMode(wlan.STATION)\n\n-- \u6df7\u5408\u6a21\u5f0f, \u505aAP\u53c8\u505aSTATION\nwlan.setMode(wlan.APSTA)\n", "prefix": "wlan.setMode"}, "wlan.ready": {"body": "wlan.ready()", "description": "wlan.ready() - \u4f5c\u4e3aSTATION\u65f6,\u662f\u5426\u5df2\u7ecf\u8fde\u63a5\u4e0aAP,\u4e14\u83b7\u53d6IP\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nbool \u5df2\u7ecf\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.ready"}, "wlan.connect": {"body": "wlan.connect(${1:ssid},${2:password},${3:auto_reconnect},${4:bssid})", "description": "wlan.connect(ssid, password, auto_reconnect, bssid) - \u4f5c\u4e3aSTATION\u65f6,\u8fde\u63a5\u5230\u6307\u5b9aAP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684ssid\nstring AP\u7684password,\u53ef\u9009\nint 0\u5173\u95ed\u81ea\u52a8\u91cd\u8fde,1\u5f00\u542f\u81ea\u52a8\u91cd\u8fde.\u5f53\u524d\u5f3a\u5236\u5f00\u542f\u81ea\u52a8\u91cd\u8fde\nstring AP\u7684bssid,\u53ef\u9009,\u5fc5\u987b\u662f6\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u53d1\u8d77\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse.\u6ce8\u610f,\u4e0d\u4ee3\u8868\u8fde\u63a5AP\u6210\u529f!!\n\u4f8b\u5b50\uff1a\n\n-- \u666e\u901a\u6a21\u5f0f,\u5e26\u5bc6\u7801\nwlan.connect(\"myap\", \"12345678\")\n-- \u666e\u901a\u6a21\u5f0f,\u4e0d\u5e26\u5bc6\u7801\nwlan.connect(\"myap\")\n-- \u7279\u6b8a\u6a21\u5f0f, \u91cd\u7528\u4e4b\u524d\u7684ssid\u548c\u5bc6\u7801,\u672c\u6b21\u76f4\u63a5\u8fde\u63a5\n-- \u6ce8\u610f, \u524d\u63d0\u662f\u672c\u6b21\u4e0a\u7535\u540e\u5df2\u7ecf\u4f20\u8fc7ssid\u548c\u6216password,\u5426\u5219\u5fc5\u5931\u8d25\nwlan.connect()\n\n-- \u7279\u6b8a\u6a21\u5f0f, \u4f7f\u7528ssid\u548c\u5bc6\u7801,\u672c\u6b21\u8fde\u63a5\u6307\u5b9abssid, 2024.5.7\u65b0\u589e\nlocal bssid = string.fromHex(\"00182946365f\")\nwlan.connect(\"myap\", \"12345678\", 1, bssid)\n", "prefix": "wlan.connect"}, "wlan.disconnect": {"body": "wlan.disconnect()", "description": "wlan.disconnect() - \u4f5c\u4e3aSTATION\u65f6,\u65ad\u5f00AP\n", "prefix": "wlan.disconnect"}, "wlan.scan": {"body": "wlan.scan()", "description": "wlan.scan() - \u626b\u63cfwifi\u9891\u6bb5\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, wlan.scan()\u662f\u5f02\u6b65API,\u542f\u52a8\u626b\u63cf\u540e\u4f1a\u9a6c\u4e0a\u8fd4\u56de\n\n-- wifi\u626b\u63cf\u6210\u529f\u540e, \u4f1a\u6709WLAN_SCAN_DONE\u6d88\u606f, \u8bfb\u53d6\u5373\u53ef\nsys.subscribe(\"WLAN_SCAN_DONE\", function ()\n local results = wlan.scanResult()\n log.info(\"scan\", \"results\", #results)\n for k,v in pairs(results) do\n log.info(\"scan\", v[\"ssid\"], v[\"rssi\"], (v[\"bssid\"]:toHex()))\n end\nend)\n\n-- \u4e0b\u9762\u6f14\u793a\u7684\u662f\u521d\u59cb\u5316wifi\u540e\u5b9a\u65f6\u626b\u63cf,\u8bf7\u6309\u5b9e\u9645\u4e1a\u52a1\u9700\u6c42\u4fee\u6539\nsys.taskInit(function()\n sys.wait(1000)\n wlan.init()\n while 1 do\n wlan.scan()\n sys.wait(15000)\n end\nend)\n", "prefix": "wlan.scan"}, "wlan.scanResult": {"body": "wlan.scanResult()", "description": "wlan.scanResult() - \u83b7\u53d6wifi\u626b\u63cf\u7ed3\u679c\n\u8fd4\u56de\u503c\uff1a\ntable \u626b\u63cf\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6cd5\u8bf7\u67e5\u9605 wlan.scan() \u51fd\u6570\n", "prefix": "wlan.scanResult"}, "wlan.smartconfig": {"body": "wlan.smartconfig(${1:mode})", "description": "wlan.smartconfig(mode) - \u914d\u7f51\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f51\u6a21\u5f0f, \u9ed8\u8ba4\u4e3aesptouch, \u82e5\u4f200\u5219\u4e3b\u52a8\u505c\u6b62\u914d\u7f51\n\u8fd4\u56de\u503c\uff1a\nbool \u542f\u52a8\u6210\u529f\u6216\u505c\u6b62\u6210\u529f, \u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.smartconfig()\nlocal ret, ssid, passwd = sys.waitUntil(\"SC_RESULT\", 180*1000) -- \u6700\u591a\u7b493\u5206\u949f\nlog.info(\"sc\", ret, ssid, passwd)\n-- \u8be6\u7ec6\u7528\u6cd5\u8bf7\u67e5\u770bdemo\n", "prefix": "wlan.smartconfig"}, "wlan.getMac": {"body": "wlan.getMac(${1:tp},${2:hexstr})", "description": "wlan.getMac(tp, hexstr) - \u83b7\u53d6mac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nbool \u662f\u5426\u8f6cHEX\u5b57\u7b26, \u9ed8\u8ba4\u662ftrue,\u5373\u8f93\u51fahex\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring MAC\u5730\u5740,\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5f62\u5f0f \"AABBCCDDEEFF\" \u6216\u539f\u59cb\u6570\u636e\n", "prefix": "wlan.getMac"}, "wlan.setMac": {"body": "wlan.setMac(${1:tp},${2:mac})", "description": "wlan.setMac(tp, mac) - \u8bbe\u7f6emac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730\nstring \u5f85\u8bbe\u7f6e\u7684MAC\u5730\u5740,\u957f\u5ea66\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6eMAC\u5730\u5740, 2023-03-01\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"F01122334455\")\nwlan.setMac(0, mac)\n\n-- \u90e8\u5206\u6a21\u5757\u652f\u6301\u6062\u590d\u9ed8\u8ba4MAC, \u4f8b\u5982esp32\u7cfb\u5217\n-- \u57282023-11-01 \u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"000000000000\")\nwlan.setMac(0, mac)\n", "prefix": "wlan.setMac"}, "wlan.getIP": {"body": "wlan.getIP()", "description": "wlan.getIP() - \u83b7\u53d6ip,\u4ec5STATION\u6216APSTA\u6a21\u5f0f\u4e0b\u6709\u610f\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring ip\u5730\u5740,\u5f53\u524d\u4ec5\u8fd4\u56deipv4\u5730\u5740,\u4f8b\u5982 \"192.168.1.25\"\n", "prefix": "wlan.getIP"}, "wlan.createAP": {"body": "wlan.createAP(${1:ssid},${2:passwd},${3:gateway},${4:netmask},${5:channel},${6:opts})", "description": "wlan.createAP(ssid, passwd, gateway, netmask, channel, opts) - \u542f\u52a8AP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684SSID,\u5fc5\u586b\nstring AP\u7684\u5bc6\u7801,\u53ef\u9009\nstring AP\u7684\u7f51\u5173\u5730\u5740, \u9ed8\u8ba4192.168.4.1\nstring AP\u7684\u7f51\u5173\u63a9\u7801, \u9ed8\u8ba4255.255.255.0\nint AP\u5efa\u7acb\u7684\u901a\u9053, \u9ed8\u8ba46\ntable AP\u7684\u914d\u7f6e\u9009\u9879, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u8c03\u7528\u672cAP\u65f6,\u82e5wifi\u6a21\u5f0f\u4e3aSTATION,\u4f1a\u81ea\u52a8\u5207\u6362\u6210 APSTA\nwlan.createAP(\"luatos1234\", \"12341234\")\n-- \u8bbe\u7f6e\u7f51\u5173IP,\u63a9\u7801, \u901a\u9053, 2023.7.13 \u65b0\u589e, BSP\u672a\u5fc5\u652f\u6301\n-- wlan.createAP(\"luatos1234\", \"12341234\", \"192.168.4.1\", \"255.255.255.0\", 6)\n\n-- opts\u66f4\u591a\u914d\u7f6e\u9879, 2024.3.5\u65b0\u589e\n--[[\n{\n hidden = false, -- \u662f\u5426\u9690\u85cfSSID, \u9ed8\u8ba4false,\u4e0d\u9690\u85cf\n max_conn = 4 -- \u6700\u5927\u5ba2\u6237\u7aef\u6570\u91cf, \u9ed8\u8ba44\n}\n]]\n", "prefix": "wlan.createAP"}, "wlan.stopAP": {"body": "wlan.stopAP()", "description": "wlan.stopAP() - \u5173\u95edAP\u529f\u80fd\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.stopAP()\n", "prefix": "wlan.stopAP"}, "wlan.getInfo": {"body": "wlan.getInfo()", "description": "wlan.getInfo() - \u83b7\u53d6\u4fe1\u606f,\u5982AP\u7684bssid,\u4fe1\u53f7\u5f3a\u5ea6, STA\u8054\u7f51\u540e\u53ef\u83b7\u53d6\n\u8fd4\u56de\u503c\uff1a\ntable \u8be6\u60c5,\u952e\u503c\u5bf9\u5f62\u5f0f\n\u4f8b\u5b50\uff1a\n\nlog.info(\"wlan\", \"info\", json.encode(wlan.getInfo()))\n--[[\n\u5178\u578b\u8f93\u51fa\n{\n \"bssid\" : \"xxxxxx\",\n \"rssi\" : -89,\n \"gw\" : \"192.168.1.1\"\n}\n]]\n", "prefix": "wlan.getInfo"}, "wlan.powerSave": {"body": "wlan.powerSave(${1:mode})", "description": "wlan.powerSave(mode) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7701\u7535\u6a21\u5f0f,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e, \u4f8b\u5982wlan.PS_NONE\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7701\u7535\u6a21\u5f0f/\u8bbe\u7f6e\u540e\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u67e5\u9605\u5e38\u91cf\u8868 PS_NONE/PS_MIN_MODEM/PS_MAX_MODEM\nlog.info(\"wlan\", \"PS\", wlan.powerSave(wlan.PS_NONE))\n-- \u672cAPI\u4e8e 2023.03.31 \u65b0\u589e\n", "prefix": "wlan.powerSave"}, "wlan.hostname": {"body": "wlan.hostname(${1:new_name})", "description": "wlan.hostname(new_name) - \u8bfb\u53d6\u6216\u8bbe\u7f6eHostname\n\u4f20\u5165\u503c\uff1a\nstring \u65b0\u7684hostname,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684hostname\u6216\u8005\u8bbe\u7f6e\u540e\u7684hostname\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.07.23 \u65b0\u589e\n-- \u672c\u51fd\u6570\u5e94\u8be5\u5728wlan.init\u4e4b\u524d\u8bbe\u7f6e\u597d, \u6700\u665a\u5e94\u65e9\u4e8ewlan.connect\n-- hostname\u7684\u9ed8\u8ba4\u503c\u662f \"LUATOS_\" + \u8bbe\u5907\u7684MAC\u503c\n-- \u4f8b\u5982: LUATOS_0022EECC2399\n\nwlan.hostname(\"\u6211\u7684wifi\u7269\u8054\u7f51\u8bbe\u5907\")\n", "prefix": "wlan.hostname"}, "wlan.staIp": {"body": "wlan.staIp(${1:dhcp_enable},${2:ip},${3:netmask},${4:gateway})", "description": "wlan.staIp(dhcp_enable, ip, netmask, gateway) - \u8bbe\u7f6eStation\u6a21\u5f0f\u4e0b\u7684IP\u83b7\u53d6\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u542f\u7528DHCP,\u9ed8\u8ba4\u662ftrue\nstring \u672c\u673aIP\u5730\u5740,\u4f8b\u5982192.168.2.200, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u63a9\u7801,\u4f8b\u5982255.255.255.0, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u7f51\u5173,\u4f8b\u5982192.168.2.1, \u7981\u7528DHCP\u65f6\u5fc5\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.06 \u65b0\u589e\n-- \u672c\u51fd\u6570\u9700\u8981\u5728wlan.init\u4e4b\u540e\u624d\u5141\u8bb8\u8c03\u7528\n\n-- \u542f\u7528DHCP, \u9ed8\u8ba4\u4e5f\u662f\u542f\u7528DHCP,\u8fd9\u91cc\u662f\u6f14\u793aAPI\u4f7f\u7528\nwlan.staIp(true)\n-- \u7981\u7528DHCP,\u81ea\u884c\u8bbe\u7f6eIP/\u63a9\u7801/\u7f51\u5173\nwlan.staIp(false, \"192.168.2.200\", \"255.255.255.0\", \"192.168.2.1\")\n", "prefix": "wlan.staIp"}, "xxtea.encrypt": {"body": "xxtea.encrypt(${1:data},${2:key})", "description": "xxtea.encrypt(data, key) - \u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u52a0\u5bc6\u7684\u6570\u636e\nstring key \u52a0\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.encrypt"}, "xxtea.decrypt": {"body": "xxtea.decrypt(${1:data},${2:key})", "description": "xxtea.decrypt(data, key) - \u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u89e3\u5bc6\u7684\u6570\u636e\nstring key \u89e3\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.decrypt"}, "ymodem.create": {"body": "ymodem.create(${1:dir_path},${2:file_path})", "description": "ymodem.create(dir_path,file_path) - \u521b\u5efa\u4e00\u4e2aymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nstring \u4fdd\u5b58\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\"/\"\nstring \u5f3a\u5236\u4fdd\u5b58\u7684\u7edd\u5bf9\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\u7a7a\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\uff0c\u5c31\u4f1a\u76f4\u63a5\u4fdd\u5b58\u5728\u8be5\u6587\u4ef6\u4e2d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nlocal handler = ymodem.create(\"/\")\n", "prefix": "ymodem.create"}, "ymodem.receive": {"body": "ymodem.receive(${1:handler},${2:data})", "description": "ymodem.receive(handler, data) - ymodem\u63a5\u6536\u6587\u4ef6\u6570\u636e\u5e76\u4fdd\u5b58\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\nzbuff/string \u8f93\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue\uff0c\u5931\u8d25false\nint ack\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\nint flag\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\uff0c\u5982\u679c\u6709ack\u503c\u5219\u4e0d\u53d1\u9001flag\nboolean, \u4e00\u4e2a\u6587\u4ef6\u63a5\u6536\u5b8c\u6210true\uff0c\u4f20\u8f93\u4e2dfalse\nboolean, \u6574\u4e2a\u4f20\u8f93\u5b8c\u6210true \u5426\u5219false\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u6570\u636e\u6765\u6e90\u4e0d\u9650, \u901a\u5e38\u662fuart.read\u5f97\u5230data\nno_error,ack,flag,file_done,all_done = ymodem.receive(handler, data)\n", "prefix": "ymodem.receive"}, "ymodem.reset": {"body": "ymodem.reset(${1:handler})", "description": "ymodem.reset(handler) - \u91cd\u7f6eymodem\u5904\u7406\u8fc7\u7a0b\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\n\u4f8b\u5b50\uff1a\n-- \u6062\u590d\u5230\u521d\u59cb\u72b6\u6001\uff0c\u4e00\u822c\u7528\u4e8e\u63a5\u6536\u51fa\u9519\u540e\u91cd\u7f6e\uff0c\u4ece\u800c\u8fdb\u884c\u4e0b\u4e00\u6b21\u63a5\u6536\nymodem.reset(handler)\n", "prefix": "ymodem.reset"}, "ymodem.release": {"body": "ymodem.release(${1:handler})", "description": "ymodem.release(handler) - \u91ca\u653eymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nuserdata handler\n\u4f8b\u5b50\uff1a\nymodem.release(handler)\n", "prefix": "ymodem.release"}, "zbuff.create": {"body": "zbuff.create(${1:length},${2:data},${3:type})", "description": "zbuff.create(length,data,type) - \u521b\u5efazbuff\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u8282\u6570\nany \u53ef\u9009\u53c2\u6570\uff0cnumber\u65f6\u4e3a\u586b\u5145\u6570\u636e\uff0cstring\u65f6\u4e3a\u586b\u5145\u5b57\u7b26\u4e32\nnumber \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nobject zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create(1024) -- \u7a7a\u767d\u7684\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal buff = zbuff.create(1024, \"123321456654\") -- \u521b\u5efa\uff0c\u5e76\u586b\u5145\u4e00\u4e2a\u5df2\u6709\u5b57\u7b26\u4e32\u7684\u5185\u5bb9\n\n-- \u521b\u5efaframebuff\u7528\u7684zbuff\n-- zbuff.create({width,height,bit},data,type)\n-- table \u5bbd\u5ea6\u3001\u9ad8\u5ea6\u3001\u8272\u4f4d\u6df1\u5ea6\n@int \u53ef\u9009\u53c2\u6570\uff0c\u586b\u5145\u6570\u636e\n@number \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n@return object zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n@usage\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create({128,160,16})--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\nlocal buff = zbuff.create({128,160,16},0xf800)--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\uff0c\u521d\u59cb\u72b6\u6001\u7ea2\u8272\n", "prefix": "zbuff.create"}, "buff:write": {"body": "buff:write(${1:para},${2:...})", "description": "buff:write(para,...) - zbuff\u5199\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal len = buff:write(\"123\") -- \u5199\u5165\u6570\u636e, \u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\uff0c\u8fd4\u56de\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\nlocal len = buff:write(0x1a,0x30,0x31,0x32,0x00,0x01) -- \u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:write"}, "buff:read": {"body": "buff:read(${1:length})", "description": "buff:read(length) - zbuff\u8bfb\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8bfb\u53d6buff\u4e2d\u7684\u5b57\u8282\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal str = buff:read(3)\n", "prefix": "buff:read"}, "buff:clear": {"body": "buff:clear(${1:num})", "description": "buff:clear(num) - zbuff\u6e05\u7a7a\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\uff0c\u4e0d\u4f1a\u6539\u53d8buff\u6307\u9488\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:clear(0)\n", "prefix": "buff:clear"}, "buff:seek": {"body": "buff:seek(${1:base},${2:offset})", "description": "buff:seek(base,offset) - zbuff\u8bbe\u7f6e\u5149\u6807\u4f4d\u7f6e\uff08\u53ef\u80fd\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u6709\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u88ab\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\uff09\n\u4f20\u5165\u503c\uff1a\nint \u504f\u79fb\u957f\u5ea6\nint where, \u57fa\u70b9\uff0c\u9ed8\u8ba4zbuff.SEEK_SET\u3002zbuff.SEEK_SET: \u57fa\u70b9\u4e3a 0 \uff08\u6587\u4ef6\u5f00\u5934\uff09\uff0czbuff.SEEK_CUR: \u57fa\u70b9\u4e3a\u5f53\u524d\u4f4d\u7f6e\uff0czbuff.SEEK_END: \u57fa\u70b9\u4e3a\u6587\u4ef6\u5c3e\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u7f6e\u5149\u6807\u540e\u4ecebuff\u5f00\u5934\u8ba1\u7b97\u8d77\u7684\u5149\u6807\u7684\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nbuff:seek(0) -- \u628a\u5149\u6807\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\nbuff:seek(5,zbuff.SEEK_CUR)\nbuff:seek(-3,zbuff.SEEK_END)\n", "prefix": "buff:seek"}, "buff:pack": {"body": "buff:pack(${1:format},${2:val1},${3:val2},${4:...})", "description": "buff:pack(format,val1, val2,...) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8f6c\u5316\uff0c\u5e76\u5199\u5165\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u540e\u9762\u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0b\u9762\u7684\u4f8b\u5b50\uff09\nval \u4f20\u5165\u7684\u6570\u636e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nbuff:pack(\">IIHA\", 0x1234, 0x4567, 0x12,\"abcdefg\") -- \u6309\u683c\u5f0f\u5199\u5165\u51e0\u4e2a\u6570\u636e\n-- A string\n-- f float\n-- d double\n-- n Lua number\n-- c char\n-- b byte / unsignen char\n-- h short\n-- H unsigned short\n-- i int\n-- I unsigned int\n-- l long\n-- L unsigned long\n-- < \u5c0f\u7aef\n-- > \u5927\u7aef\n-- = \u9ed8\u8ba4\u5927\u5c0f\u7aef\n", "prefix": "buff:pack"}, "buff:unpack": {"body": "buff:unpack(${1:format})", "description": "buff:unpack(format) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8bfb\u53d6\u51fa\u6765\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0a\u9762pack\u63a5\u53e3\u7684\u4f8b\u5b50\uff09\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8bfb\u53d6\u7684\u6570\u636e\u5b57\u8282\u957f\u5ea6\nany \u6309\u683c\u5f0f\u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal cnt,a,b,c,s = buff:unpack(\">IIHA10\") -- \u6309\u683c\u5f0f\u8bfb\u53d6\u51e0\u4e2a\u6570\u636e\n--\u5982\u679c\u5168\u90e8\u6210\u529f\u8bfb\u53d6\uff0ccnt\u5c31\u662f4+4+2+10=20\n", "prefix": "buff:unpack"}, "buff:read\u7c7b\u578b": {"body": "buff:read\u7c7b\u578b()", "description": "buff:read\u7c7b\u578b() - \u8bfb\u53d6\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\n\u6ce8\u91ca \u8bfb\u53d6\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u8bfb\u53d6\u7684\u6570\u636e\uff0c\u5982\u679c\u8d8a\u754c\u5219\u4e3anil\n\u4f8b\u5b50\uff1a\nlocal data = buff:readI8()\nlocal data = buff:readU32()\n", "prefix": "buff:read\u7c7b\u578b"}, "buff:write\u7c7b\u578b": {"body": "buff:write\u7c7b\u578b()", "description": "buff:write\u7c7b\u578b() - \u5199\u5165\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nnumber \u5f85\u5199\u5165\u7684\u6570\u636e\n\u6ce8\u91ca \u5199\u5165\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:writeI8(10)\nlocal len = buff:writeU32(1024)\n", "prefix": "buff:write\u7c7b\u578b"}, "buff:toStr": {"body": "buff:toStr(${1:offset},${2:length})", "description": "buff:toStr(offset,length) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea6\u53d6\u51fa\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nint \u6570\u636e\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662f\u5168\u90e8\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:toStr(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\nlocal s = buff:toStr() -- \u53d6\u51fa\u6574\u4e2azbuff\u7684\u6570\u636e\nlocal s = buff:toStr(0, buff:used()) -- \u53d6\u51fa\u5df2\u4f7f\u7528\u7684\u90e8\u5206, \u4e0ebuff:query()\u4e00\u6837\n", "prefix": "buff:toStr"}, "buff:len": {"body": "buff:len()", "description": "buff:len() - \u83b7\u53d6zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u8fd4\u56de\u503c\uff1a\nint zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlen = buff:len()\nlen = #buff\n", "prefix": "buff:len"}, "buff:setFrameBuffer": {"body": "buff:setFrameBuffer(${1:width},${2:height},${3:bit},${4:color})", "description": "buff:setFrameBuffer(width,height,bit,color) - \u8bbe\u7f6ebuff\u5bf9\u8c61\u7684FrameBuffer\u5c5e\u6027\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint FrameBuffer\u7684\u5bbd\u5ea6\nint FrameBuffer\u7684\u9ad8\u5ea6\nint FrameBuffer\u7684\u8272\u4f4d\u6df1\u5ea6\nint FrameBuffer\u7684\u521d\u59cb\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nresult = buff:setFrameBuffer(320,240,16,0xffff)\n", "prefix": "buff:setFrameBuffer"}, "buff:pixel": {"body": "buff:pixel(${1:x},${2:y},${3:color})", "description": "buff:pixel(x,y,color) - \u8bbe\u7f6e\u6216\u83b7\u53d6FrameBuffer\u67d0\u4e2a\u50cf\u7d20\u70b9\u7684\u989c\u8272\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u989c\u8272\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u83b7\u53d6\u8be5\u4f4d\u7f6e\u7684\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nany \u8bbe\u7f6e\u989c\u8272\u65f6\uff0c\u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\uff1b\u8bfb\u53d6\u989c\u8272\u65f6\uff0c\u8fd4\u56de\u989c\u8272\u7684\u503c\uff0c\u8bfb\u53d6\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nrerult = buff:pixel(0,3,0)\ncolor = buff:pixel(0,3)\n", "prefix": "buff:pixel"}, "buff:drawLine": {"body": "buff:drawLine(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "buff:drawLine(x1,y1,x2,y2,color) - \u753b\u4e00\u6761\u7ebf\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawLine(0,0,2,3,0xffff)\n", "prefix": "buff:drawLine"}, "buff:drawRect": {"body": "buff:drawRect(${1:x1},${2:y1},${3:x2},${4:y2},${5:color},${6:fill})", "description": "buff:drawRect(x1,y1,x2,y2,color,fill) - \u753b\u4e00\u4e2a\u77e9\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawRect(0,0,2,3,0xffff)\n", "prefix": "buff:drawRect"}, "buff:drawCircle": {"body": "buff:drawCircle(${1:x},${2:y},${3:r},${4:color},${5:fill})", "description": "buff:drawCircle(x,y,r,color,fill) - \u753b\u4e00\u4e2a\u5706\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint **\u5706\u5fc3**\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint **\u5706\u5fc3**\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u5706\u7684\u534a\u5f84\nint \u53ef\u9009\uff0c\u5706\u7684\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawCircle(15,5,3,0xC)\nrerult = buff:drawCircle(15,5,3,0xC,true)\n", "prefix": "buff:drawCircle"}, "buff[n": {"body": "buff[n]", "description": "buff[n] - \u4ee5\u4e0b\u6807\u5f62\u5f0f\u8fdb\u884c\u6570\u636e\u8bfb\u5199\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u51e0\u4e2a\u6570\u636e\uff0c\u4ee50\u5f00\u59cb\u7684\u4e0b\u6807\uff08C\u6807\u51c6\uff09\n\u8fd4\u56de\u503c\uff1a\nnumber \u8be5\u4f4d\u7f6e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nbuff[0] = 0xc8\nlocal data = buff[0]\n", "prefix": "buff[n"}, "buff:free": {"body": "buff:free()", "description": "buff:free() - \u91ca\u653ezbuff\u6240\u7533\u8bf7\u5185\u5b58 \u6ce8\u610f\uff1agc\u65f6\u4f1a\u81ea\u52a8\u91ca\u653ezbuff\u4ee5\u53cazbuff\u6240\u7533\u8bf7\u5185\u5b58\uff0c\u6240\u4ee5\u901a\u5e38\u65e0\u9700\u8c03\u7528\u6b64\u51fd\u6570\uff0c\u8c03\u7528\u524d\u8bf7\u786e\u8ba4\u60a8\u5df2\u6e05\u695a\u6b64\u51fd\u6570\u7528\u5904\uff01\u8c03\u7528\u6b64\u51fd\u6570\u5e76\u4e0d\u4f1a\u91ca\u653e\u6389zbuff\uff0c\u4ec5\u4f1a\u91ca\u653e\u6389zbuff\u6240\u7533\u8bf7\u7684\u5185\u5b58\uff0czbuff\u9700\u7b49gc\u65f6\u81ea\u52a8\u91ca\u653e\uff01\uff01\uff01\n\u4f8b\u5b50\uff1a\nbuff:free()\n", "prefix": "buff:free"}, "buff:resize": {"body": "buff:resize(${1:n})", "description": "buff:resize(n) - \u8c03\u6574zbuff\u5b9e\u9645\u5206\u914d\u7a7a\u95f4\u7684\u5927\u5c0f\uff0c\u7c7b\u4f3c\u4e8erealloc\u7684\u6548\u679c\uff0cnew = realloc(old, n)\uff0c\u53ef\u4ee5\u6269\u5927\u6216\u8005\u7f29\u5c0f\uff08\u5982\u679c\u7f29\u5c0f\u540elen\u5c0f\u4e8e\u4e86used\uff0c\u90a3\u4e48used=\u65b0len\uff09\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7a7a\u95f4\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:resize(20)\n", "prefix": "buff:resize"}, "buff:copy": {"body": "buff:copy(${1:start},${2:para},${3:...})", "description": "buff:copy(start, para,...) - zbuff\u52a8\u6001\u5199\u6570\u636e\uff0c\u7c7b\u4f3c\u4e8ememcpy\u6548\u679c\uff0c\u5f53\u539f\u6709\u7a7a\u95f4\u4e0d\u8db3\u65f6\u52a8\u6001\u6269\u5927\u7a7a\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u5199\u5165buff\u7684\u8d77\u59cb\u4f4d\u7f6e\uff0c\u5982\u679c\u4e0d\u4e3a\u6570\u5b57\uff0c\u5219\u4e3abuff\u7684used\uff0c\u5982\u679c\u5c0f\u4e8e0\uff0c\u5219\u4eceused\u5f80\u524d\u6570\uff0c-1 = used - 1\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u6216zbuff\u8005\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:copy(nil, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[used], \"123\", 3) used+= 3 \u4ecebuff\u5f00\u59cb\u5199\u5165\u6570\u636e,\u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\nlocal len = buff:copy(0, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[0], \"123\", 3) if (used < 3) used = 3 \u4ece\u4f4d\u7f6e0\u5199\u5165\u6570\u636e,\u6307\u9488\u6709\u53ef\u80fd\u4f1a\u79fb\u52a8\nlocal len = buff:copy(2, 0x1a,0x30,0x31,0x32,0x00,0x01) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[2], [0x1a,0x30,0x31,0x32,0x00,0x01], 6) if (used < (2+6)) used = (2+6)\u4ece\u4f4d\u7f6e2\u5f00\u59cb\uff0c\u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\nlocal len = buff:copy(9, buff2) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[9], &buff2[0], buff2\u7684used) if (used < (9+buff2\u7684used)) used = (9+buff2\u7684used) \u4ece\u4f4d\u7f6e9\u5f00\u59cb\uff0c\u5408\u5e76\u5165buff2\u91cc0~used\u7684\u5185\u5bb9\nlocal len = buff:copy(5, buff2, 10, 1024) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[5], &buff2[10], 1024) if (used < (5+1024)) used = (5+1024)\n", "prefix": "buff:copy"}, "buff:used": {"body": "buff:used()", "description": "buff:used() - \u83b7\u53d6zbuff\u91cc\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\u5230\u9996\u5730\u5740\u7684\u504f\u79fb\u91cf\uff0c\u6765\u8868\u793azbuff\u5185\u5df2\u6709\u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\uff0c\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u540c\u4e8e\u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\uff0c\u7531\u4e8eseek()\u4f1a\u6539\u53d8\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\uff0c\u56e0\u6b64\u4e5f\u4f1a\u5f71\u54cd\u5230used()\u8fd4\u56de\u503c\u3002\n\u8fd4\u56de\u503c\uff1a\nint \u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:used()\n", "prefix": "buff:used"}, "buff:del": {"body": "buff:del(${1:offset},${2:length})", "description": "buff:del(offset,length) - \u5220\u9664zbuff 0~used\u8303\u56f4\u5185\u7684\u4e00\u6bb5\u6570\u636e\uff0c\u6ce8\u610f\u53ea\u662f\u6539\u53d8\u4e86used\u7684\u503c\uff0c\u5e76\u4e0d\u662f\u771f\u7684\u5728ram\u91cc\u53bb\u6e05\u9664\u6389\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u4f4d\u7f6estart, \u9ed8\u8ba40\uff0c\u5982\u679c<0\u5219\u4eceused\u5f80\u524d\u6570\uff0c\u6bd4\u5982 -1 \u90a3\u4e48start= used - 1\nint \u957f\u5ea6del_len\uff0c\u9ed8\u8ba4\u4e3aused\uff0c\u5982\u679cstart + del_len\u6570\u503c\u5927\u4e8eused\uff0c\u4f1a\u5f3a\u5236\u8c03\u6574del_len = used - start\n\u4f8b\u5b50\uff1a\nbuff:del(1,4) --\u4ece\u4f4d\u7f6e1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\nbuff:del(-1,4) --\u4ece\u4f4d\u7f6eused-1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\uff0c\u4f46\u662f\u8fd9\u80af\u5b9a\u4f1a\u8d85\u8fc7used\uff0c\u6240\u4ee5del_len\u4f1a\u8c03\u6574\u4e3a1\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u5220\u6389\u4e86\u6700\u540e\u4e00\u4e2a\u5b57\u8282\n", "prefix": "buff:del"}, "buff:query": {"body": "buff:query(${1:offset},${2:length},${3:isbigend},${4:issigned},${5:isfloat})", "description": "buff:query(offset,length,isbigend,issigned,isfloat) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea60~used\u8303\u56f4\u5185\u53d6\u51fa\u6570\u636e\uff0c\u5982\u679c\u662f1,2,4,8\u5b57\u8282\uff0c\u6839\u636e\u540e\u7eed\u53c2\u6570\u8f6c\u6362\u6210\u6d6e\u70b9\u6216\u8005\u6574\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09\nint \u6570\u636e\u7684\u957f\u5ea6\nboolean \u662f\u5426\u662f\u5927\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u4f1a\u8f6c\u6362\uff0c\u76f4\u63a5\u5b57\u8282\u6d41\u8f93\u51fa\nboolean \u662f\u5426\u662f\u6709\u7b26\u53f7\u7684\uff0c\u9ed8\u8ba4\u4e3afalse\nboolean \u662f\u5426\u662f\u6d6e\u70b9\u578b\uff0c\u9ed8\u8ba4\u4e3afalse\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:query(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:query"}, "buff:set": {"body": "buff:set(${1:start},${2:num},${3:len})", "description": "buff:set(start, num, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememset\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememset(&buff[start], num, len)\uff0c\u5f53\u7136\u6709ram\u8d8a\u754c\u4fdd\u62a4\uff0c\u4f1a\u5bf9len\u6709\u4e00\u5b9a\u7684\u9650\u5236\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\nint \u53ef\u9009\uff0c\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a\u5168\u90e8\u7a7a\u95f4\uff0c\u5982\u679c\u8d85\u51fa\u8303\u56f4\u4e86\uff0c\u4f1a\u81ea\u52a8\u622a\u65ad\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:set() --\u7b49\u540c\u4e8e memset(buff, 0, sizeof(buff))\nbuff:set(8) --\u7b49\u540c\u4e8e memset(&buff[8], 0, sizeof(buff) - 8)\nbuff:set(0, 0x55) --\u7b49\u540c\u4e8e memset(buff, 0x55, sizeof(buff))\nbuff:set(4, 0xaa, 12) --\u7b49\u7528\u4e8e memset(&buff[4], 0xaa, 12)\n", "prefix": "buff:set"}, "buff:isEqual": {"body": "buff:isEqual(${1:start},${2:buff2},${3:start2},${4:len})", "description": "buff:isEqual(start, buff2, start2, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememcmp\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememcmp(&buff[start], &buff2[start2], len)\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nzbuff \u6bd4\u8f83\u7684\u5bf9\u8c61\nint \u53ef\u9009\uff0c\u6bd4\u8f83\u7684\u5bf9\u8c61\u7684\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u6bd4\u8f83\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nboolean true\u76f8\u7b49\uff0cfalse\u4e0d\u76f8\u7b49\nint \u76f8\u7b49\u8fd4\u56de0\uff0c\u4e0d\u76f8\u7b49\u8fd4\u56de\u7b2c\u4e00\u4e2a\u4e0d\u76f8\u7b49\u4f4d\u7f6e\u7684\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, offset = buff:isEqual(1, buff2, 2, 10) --\u7b49\u540c\u4e8ememcmp(&buff[1], &buff2[2], 10)\n", "prefix": "buff:isEqual"}} \ No newline at end of file +{"_G": {"body": "_G(${0:...})", "description": "_G", "prefix": "_G"}, "_VERSION": {"body": "_VERSION(${0:...})", "description": "_VERSION", "prefix": "_VERSION"}, "assert": {"body": "assert(${1:v}${2:[, message]})", "description": "assert()", "prefix": "assert"}, "collectgarbage": {"body": "collectgarbage(${1:[opt]}${2:[, arg]})", "description": "collectgarbage()", "prefix": "collectgarbage"}, "coroutine.create": {"body": "coroutine.create( ${1:function} )", "description": "coroutine.create", "prefix": "coroutine.create"}, "coroutine.isyieldable": {"body": "coroutine.isyieldable( )", "description": "coroutine.isyieldable", "prefix": "coroutine.isyieldable"}, "coroutine.resume": {"body": "coroutine.resume( ${1:co}${2:[, val1, \u00b7\u00b7\u00b7]} )", "description": "coroutine.resume", "prefix": "coroutine.resume"}, "coroutine.running": {"body": "coroutine.running( )", "description": "coroutine.running", "prefix": "coroutine.running"}, "coroutine.status": {"body": "coroutine.status( ${1:co} )", "description": "coroutine.status", "prefix": "coroutine.status"}, "coroutine.wrap": {"body": "coroutine.wrap( ${1:function} )", "description": "coroutine.wrap", "prefix": "coroutine.wrap"}, "coroutine.yield": {"body": "coroutine.yield( ${1:...} )", "description": "coroutine.yield", "prefix": "coroutine.yield"}, "debug.debug": {"body": "debug.debug()", "description": "debug.debug ()", "prefix": "debug.debug"}, "debug.getfenv": {"body": "debug.getfenv(${0:...})", "description": "debug.getfenv (o)", "prefix": "debug.getfenv"}, "debug.gethook": {"body": "debug.gethook( ${1:[thread]} )", "description": "debug.gethook ([thread])", "prefix": "debug.gethook"}, "debug.getinfo": {"body": "debug.getinfo( ${1:[thread],}${2:f}${3:[, what]} )", "description": "debug.getinfo ([thread,] f [, what])", "prefix": "debug.getinfo"}, "debug.getlocal": {"body": "debug.getlocal( ${1:[thread],}${2:f}${3:[, local]} )", "description": "debug.getlocal ([thread,] f, local)", "prefix": "debug.getlocal"}, "debug.getmetatable": {"body": "debug.getmetatable( ${1:value} )", "description": "debug.getmetatable (value)", "prefix": "debug.getmetatable"}, "debug.getregistry": {"body": "debug.getregistry()", "description": "debug.getregistry ()", "prefix": "debug.getregistry"}, "debug.getupvalue": {"body": "debug.getupvalue( ${1:f}, ${2:up} )", "description": "debug.getupvalue (f, up)", "prefix": "debug.getupvalue"}, "debug.getuservalue": {"body": "debug.getuservalue(${0:...})", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue"}, "debug.getuservalue ": {"body": "debug.getuservalue ( ${1:u} )", "description": "debug.getuservalue (u)", "prefix": "debug.getuservalue "}, "debug.setfenv": {"body": "debug.setfenv(${0:...})", "description": "debug.setfenv (object, table)", "prefix": "debug.setfenv"}, "debug.sethook": {"body": "debug.sethook( ${1:[thead,]}${2:hook}, ${3:mask}${4:[, count]} )", "description": "debug.sethook ([thread,] hook, mask [, count])", "prefix": "debug.sethook"}, "debug.setlocal": {"body": "debug.setlocal( ${1:[thead,]}${2:level}, ${3:local}, ${4:value} )", "description": "debug.setlocal ([thread,] level, local, value)", "prefix": "debug.setlocal"}, "debug.setmetatable": {"body": "debug.setmetatable( ${1:value}, ${2:table} )", "description": "debug.setmetatable (value, table)", "prefix": "debug.setmetatable"}, "debug.setupvalue": {"body": "debug.setupvalue( ${1:f}, ${2:up}, ${3:value} )", "description": "debug.setupvalue (f, up, value)", "prefix": "debug.setupvalue"}, "debug.setuservalue": {"body": "debug.setuservalue( ${1:udata}, ${2:value} )", "description": "debug.setuservalue (udata, value)", "prefix": "debug.setuservalue"}, "debug.traceback": {"body": "debug.traceback( ${1:[thread,]}${2:[message]}${3:[, level]} )", "description": "debug.traceback ([thread,] [message [, level]])", "prefix": "debug.traceback"}, "debug.upvalueid": {"body": "debug.upvalueid( ${1:f}, ${2:n})", "description": "debug.upvalueid (f, n)", "prefix": "debug.upvalueid"}, "debug.upvaluejoin": {"body": "debug.upvaluejoin( ${1:f1}, ${2:n1}, ${3:f2}, ${4:n2} )", "description": "debug.upvaluejoin (f1, n1, f2, n2)", "prefix": "debug.upvaluejoin"}, "dofile": {"body": "dofile(${1:[filename]})", "description": "dofile ([filename])", "prefix": "dofile"}, "elif": {"body": "else if ${1:condition} then\n\t${0:-- body}\n", "description": "elif", "prefix": "elif"}, "error": {"body": "error(${0:...})", "description": "error (message [, level])", "prefix": "error"}, "file:close": {"body": "file:close(${0:...})", "description": "file:close ()", "prefix": "file:close"}, "file:flush": {"body": "file:flush(${0:...})", "description": "file:flush ()", "prefix": "file:flush"}, "file:lines": {"body": "file:lines(${0:...})", "description": "file:lines ()", "prefix": "file:lines"}, "file:read": {"body": "file:read(${0:...})", "description": "file:read (...)", "prefix": "file:read"}, "file:seek": {"body": "file:seek(${0:...})", "description": "file:seek ([whence] [, offset])", "prefix": "file:seek"}, "file:setvbuf": {"body": "file:setvbuf(${0:...})", "description": "file:setvbuf (mode [, size])", "prefix": "file:setvbuf"}, "file:write": {"body": "file:write(${0:...})", "description": "file:write (...)", "prefix": "file:write"}, "for": {"body": "for ${1:i}=${2:1},${3:10} do\n\t${0:print(i)}\nend", "description": "for i=1,10", "prefix": "for"}, "fori": {"body": "for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t${0:print(i,v)}\nend", "description": "for i,v in ipairs()", "prefix": "fori"}, "forp": {"body": "for ${1:k},${2:v} in pairs(${3:table_name}) do\n\t${0:print(k,v)}\nend", "description": "for k,v in pairs()", "prefix": "forp"}, "fun": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "fun"}, "function": {"body": "function ${1:function_name}( ${2:...} )\n\t${0:-- body}\nend", "description": "function", "prefix": "function"}, "getfenv": {"body": "getfenv(${0:...})", "description": "getfenv ([f])", "prefix": "getfenv"}, "getmetatable": {"body": "getmetatable(${1:object})", "description": "getmetatable (object)", "prefix": "getmetatable"}, "if": {"body": "if ${1:condition} then\n\t${0:-- body}\nend", "description": "if", "prefix": "if"}, "ifel": {"body": "if ${1:condition} then\n\t${2:-- body}\nelse\n\t${0:-- body}\nend", "description": "ifel", "prefix": "ifel"}, "io.close": {"body": "io.close(${0:...})", "description": "io.close ([file])", "prefix": "io.close"}, "io.flush": {"body": "io.flush(${0:...})", "description": "io.flush ()", "prefix": "io.flush"}, "io.input": {"body": "io.input(${0:...})", "description": "io.input ([file])", "prefix": "io.input"}, "io.lines": {"body": "io.lines(${0:...})", "description": "io.lines ([filename])", "prefix": "io.lines"}, "io.open": {"body": "io.open(${0:...})", "description": "io.open (filename [, mode])", "prefix": "io.open"}, "io.output": {"body": "io.output(${0:...})", "description": "io.output ([file])", "prefix": "io.output"}, "io.popen": {"body": "io.popen(${0:...})", "description": "io.popen (prog [, mode])", "prefix": "io.popen"}, "io.read": {"body": "io.read(${0:...})", "description": "io.read (...)", "prefix": "io.read"}, "io.tmpfile": {"body": "io.tmpfile(${0:...})", "description": "io.tmpfile ()", "prefix": "io.tmpfile"}, "io.type": {"body": "io.type(${0:...})", "description": "io.type (obj)", "prefix": "io.type"}, "io.write": {"body": "io.write(${0:...})", "description": "io.write (...)", "prefix": "io.write"}, "ipairs": {"body": "ipairs(${0:...})", "description": "ipairs (t)", "prefix": "ipairs"}, "load": {"body": "load(${0:...})", "description": "load (func [, chunkname])", "prefix": "load"}, "loadfile": {"body": "loadfile(${0:...})", "description": "loadfile ([filename])", "prefix": "loadfile"}, "loadstring": {"body": "loadstring(${0:...})", "description": "loadstring (string [, chunkname])", "prefix": "loadstring"}, "local": {"body": "local ${1:x} = ${0:1}", "description": "local x = 1", "prefix": "local"}, "math.abs": {"body": "math.abs( ${1:x} )", "description": "math.abs", "prefix": "math.abs"}, "math.acos": {"body": "math.acos( ${1:x} )", "description": "math.acos", "prefix": "math.acos"}, "math.asin": {"body": "math.asin( ${1:x} )", "description": "math.asin", "prefix": "math.asin"}, "math.atan": {"body": "math.atan( ${1:y}${2:[, x]} )", "description": "math.atan", "prefix": "math.atan"}, "math.atan2": {"body": "math.atan2(${0:...})", "description": "math.atan2 (y, x)", "prefix": "math.atan2"}, "math.ceil": {"body": "math.ceil( ${1:x} )", "description": "math.ceil", "prefix": "math.ceil"}, "math.cos": {"body": "math.cos( ${1:x} )", "description": "math.cos", "prefix": "math.cos"}, "math.cosh": {"body": "math.cosh(${0:...})", "description": "math.cosh (x)", "prefix": "math.cosh"}, "math.deg": {"body": "math.deg( ${1:x} )", "description": "math.deg", "prefix": "math.deg"}, "math.exp": {"body": "math.exp( ${1:x} )", "description": "math.exp", "prefix": "math.exp"}, "math.floor": {"body": "math.floor( ${1:x} )", "description": "math.floor", "prefix": "math.floor"}, "math.fmod": {"body": "math.fmod( ${1:x},${2:y} )", "description": "math.fmod", "prefix": "math.fmod"}, "math.frexp": {"body": "math.frexp(${0:...})", "description": "math.frexp (x)", "prefix": "math.frexp"}, "math.huge": {"body": "math.huge(${0:...})", "description": "math.huge", "prefix": "math.huge"}, "math.ldexp": {"body": "math.ldexp(${0:...})", "description": "math.ldexp (m, e)", "prefix": "math.ldexp"}, "math.log": {"body": "math.log( ${1:x}${2:[, base]} )", "description": "math.log", "prefix": "math.log"}, "math.log10": {"body": "math.log10(${0:...})", "description": "math.log10 (x)", "prefix": "math.log10"}, "math.math.randomseed": {"body": "math.math.randomseed( ${1:x} )", "description": "math.math.randomseed", "prefix": "math.math.randomseed"}, "math.max": {"body": "math.max( ${1:x},${2:...} )", "description": "math.max", "prefix": "math.max"}, "math.maxinteger": {"body": "math.maxinteger(${0:...})", "description": "math.maxinteger", "prefix": "math.maxinteger"}, "math.min": {"body": "math.min( ${1:x},${2:...} )", "description": "math.min", "prefix": "math.min"}, "math.mininteger": {"body": "math.mininteger(${0:...})", "description": "math.mininteger", "prefix": "math.mininteger"}, "math.modf": {"body": "math.modf( ${1:x} )", "description": "math.modf", "prefix": "math.modf"}, "math.pi": {"body": "math.pi(${0:...})", "description": "math.pi", "prefix": "math.pi"}, "math.pow": {"body": "math.pow(${0:...})", "description": "math.pow (x, y)", "prefix": "math.pow"}, "math.rad": {"body": "math.rad(${0:...})", "description": "math.rad (x)", "prefix": "math.rad"}, "math.random": {"body": "math.random( ${1:[m]}${2:[, n]} )", "description": "math.random", "prefix": "math.random"}, "math.randomseed": {"body": "math.randomseed(${0:...})", "description": "math.randomseed (x)", "prefix": "math.randomseed"}, "math.sin": {"body": "math.sin( ${1:x} )", "description": "math.sin", "prefix": "math.sin"}, "math.sinh": {"body": "math.sinh(${0:...})", "description": "math.sinh (x)", "prefix": "math.sinh"}, "math.sqrt": {"body": "math.sqrt( ${1:x} )", "description": "math.sqrt", "prefix": "math.sqrt"}, "math.tan": {"body": "math.tan( ${1:x} )", "description": "math.tan", "prefix": "math.tan"}, "math.tanh": {"body": "math.tanh(${0:...})", "description": "math.tanh (x)", "prefix": "math.tanh"}, "math.tointeger": {"body": "math.tointeger( ${1:x} )", "description": "math.tointeger", "prefix": "math.tointeger"}, "math.type": {"body": "math.type( ${1:x} )", "description": "math.type", "prefix": "math.type"}, "math.ult": {"body": "math.ult(${0:...})", "description": "math.ult (m, n)", "prefix": "math.ult"}, "module": {"body": "module(${0:...})", "description": "module (name [, ...])", "prefix": "module"}, "next": {"body": "next(${1:table}${2:[, index]})", "description": "next (table [, index])", "prefix": "next"}, "os.clock": {"body": "os.clock()", "description": "os.clock() - \u8fd4\u56de\u7a0b\u5e8f\u4f7f\u7528\u7684\u6309\u79d2\u8ba1 CPU \u65f6\u95f4\u7684\u8fd1\u4f3c\u503c\n\u4f20\u5165\u503c\uff1a\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\n-- \u5982\u9700\u8981\u83b7\u53d6 \u65f6\u95f4\u6233, \u8bf7\u4f7f\u7528 os.time()\n-- \u5982\u9700\u83b7\u53d6\u7cfb\u7edf\u8fd0\u884c\u65f6\u957f, \u8bf7\u4f7f\u7528 mcu.ticks()\n", "prefix": "os.clock"}, "os.date": {"body": "os.date(${1:fmt},${2:time})", "description": "os.date(fmt, time) - \u65e5\u671f\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring \u683c\u5f0f\u5316\u5b57\u7b26\u4e32,\u53ef\u4ee5\u662fnil\ntable \u65e5\u671f\u65f6\u95f4\u7684table\n\u8fd4\u56de\u503c\uff1a\ntable/string \u6839\u636efmt\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n\n-- \u503c\u5f97\u6ce8\u610f\u7684\u51e0\u70b9:\n-- 1. \u82e5\u9700\u8981UTC\u65f6\u95f4, fmt\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u5199\"!\"\n-- 2. fmt\u7684\u683c\u5f0f\u5316\u9075\u5faa C \u51fd\u6570 strftime, \u53ef\u4ee5\u67e5\u9605 https://developer.aliyun.com/article/320480\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date())\n-- \u83b7\u53d6UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%c\"))\n-- \u683c\u5f0f\u5316\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316UTC\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\"))\n-- \u683c\u5f0f\u5316\u65f6\u95f4\u5b57\u7b26\u4e32\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u7684\u5b57\u7b26\u4e32\", os.date(\"!%Y-%m-%d %H:%M:%S\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0})))\n\n-- \u83b7\u53d6\u672c\u5730\u65f6\u95f4\u7684table\nlog.info(\"\u672c\u5730\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"*t\")))\n-- \u83b7\u53d6UTC\u65f6\u95f4\u7684table\nlog.info(\"UTC\u65f6\u95f4\u5b57\u7b26\u4e32\", json.encode(os.date(\"!*t\")))\n", "prefix": "os.date"}, "os.difftime": {"body": "os.difftime(${1:timeA},${2:timeB})", "description": "os.difftime(timeA, timeB) - \u65f6\u95f4\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u95f4A,\u6570\u503c\u7c7b\u578b\nint \u65f6\u95f4B,\u6570\u503c\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nint \u65f6\u95f4\u5dee\u503c\n", "prefix": "os.difftime"}, "os.execute": {"body": "os.execute(${0:...})", "description": "os.execute ([command])", "prefix": "os.execute"}, "os.exit": {"body": "os.exit(${0:...})", "description": "os.exit ([code])", "prefix": "os.exit"}, "os.getenv": {"body": "os.getenv(${0:...})", "description": "os.getenv (varname)", "prefix": "os.getenv"}, "os.remove": {"body": "os.remove(${1:path})", "description": "os.remove(path) - \u79fb\u9664\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u79fb\u9664\u7684\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u5220\u9664\u6839\u76ee\u5f55\u4e0b\u7684\u67d0\u4e2a\u6587\u4ef6\nos.remove(\"/1.txt\")\n-- \u6ce8\u610f, \u7ebf\u5237\u65f6\u7684\u6587\u4ef6, \u4e00\u822c\u5728 /luadb \u76ee\u5f55, \u8fd9\u4e2a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u662f\u53ea\u8bfb\u7684\n-- \u4e5f\u5c31\u662f\u65e0\u6cd5\u6267\u884c os.remove(\"/luadb/xxx.bin\")\n", "prefix": "os.remove"}, "os.rename": {"body": "os.rename(${1:old_path},${2:new_path})", "description": "os.rename(old_path, new_path) - \u6587\u4ef6\u91cd\u547d\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u6e90\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\nstring \u76ee\u6807\u6587\u4ef6\u5b8c\u6574\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5176\u4ed6\u60c5\u51b5\u8fd4\u56denil\nstring \u5931\u8d25\u65f6\u8fd4\u56de\u539f\u56e0\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u53ea\u6709\u5728\u76f8\u540c\u6587\u4ef6\u7cfb\u7edf\u4e0b\u7684\u6587\u4ef6\u53ef\u4ee5\u91cd\u547d\u540d\n-- \u4f8b\u5982:\nos.rename(\"/1.txt\", \"/2.txt\")\n-- \u4e0d\u540c\u6587\u4ef6\u7cfb\u7edf, \u6216\u8005\u6e90\u6587\u4ef6\u7cfb\u7edf\u662f\u53ea\u8bfb\u7684, \u5219\u65e0\u6cd5\u6267\u884c\n--os.rename(\"/luadb/1.txt\", \"/luadb/2.txt\")\n--os.rename(\"/luadb/1.txt\", \"/2.txt\")\n", "prefix": "os.rename"}, "os.setlocale": {"body": "os.setlocale(${0:...})", "description": "os.setlocale (locale [, category])", "prefix": "os.setlocale"}, "os.time": {"body": "os.time(${1:mytime})", "description": "os.time(mytime) - \u65f6\u95f4\u6233\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\ntable \u65e5\u671f\u65f6\u95f4\u7684table\nreturn \u65f6\u95f4\u6233\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\u6ce8\u610f, \u8fd9\u4e2a\u51fd\u6570\u8fd4\u56de\u7684\u662fUTC\u65f6\u95f4\u6233\n-- \u65f6\u95f4\u6233, \u4f46lua\u4e0b\u7684\u7cbe\u5ea6\u53ea\u80fd\u5230\u79d2\nlog.info(\"UTC\u65f6\u95f4\u6233\", os.time())\nlog.info(\"\u81ea\u5b9a\u4e49\u65f6\u95f4\u6233\", os.time({year=2000, mon=1, day=1, hour=0, min=0, sec=0}))\n", "prefix": "os.time"}, "os.tmpname": {"body": "os.tmpname(${0:...})", "description": "os.tmpname ()", "prefix": "os.tmpname"}, "package.config": {"body": "package.config(${0:...})", "description": "package.config", "prefix": "package.config"}, "package.cpath": {"body": "package.cpath(${0:...})", "description": "package.cpath", "prefix": "package.cpath"}, "package.loaded": {"body": "package.loaded(${0:...})", "description": "package.loaded", "prefix": "package.loaded"}, "package.loaders": {"body": "package.loaders(${0:...})", "description": "package.loaders", "prefix": "package.loaders"}, "package.loadlib": {"body": "package.loadlib(${0:...})", "description": "package.loadlib (libname, funcname)", "prefix": "package.loadlib"}, "package.path": {"body": "package.path(${0:...})", "description": "package.path", "prefix": "package.path"}, "package.preload": {"body": "package.preload(${0:...})", "description": "package.preload", "prefix": "package.preload"}, "package.searchers": {"body": "package.searchers(${0:...})", "description": "package.searchers", "prefix": "package.searchers"}, "package.searchpath": {"body": "package.searchpath(${0:...})", "description": "package.searchpath (name, path [, sep [, rep]])", "prefix": "package.searchpath"}, "package.seeall": {"body": "package.seeall(${0:...})", "description": "package.seeall (module)", "prefix": "package.seeall"}, "pairs": {"body": "pairs(${0:...})", "description": "pairs (t)", "prefix": "pairs"}, "pcall": {"body": "pcall(${0:...})", "description": "pcall (f, arg1, ...)", "prefix": "pcall"}, "print": {"body": "print(${1:...})", "description": "print(...)", "prefix": "print"}, "require": {"body": "require\"${1:module}\"", "description": "require()", "prefix": "require"}, "ret": {"body": "return ${1:...}", "description": "return ...", "prefix": "ret"}, "select": {"body": "select(${1:index}, ${2:...})", "description": "select (index, \u00b7\u00b7\u00b7)", "prefix": "select"}, "setfenv": {"body": "setfenv(${0:...})", "description": "setfenv (f, table)", "prefix": "setfenv"}, "setmetatable": {"body": "setmetatable(${1:table}, ${2:metatable})", "description": "setmetatable (table, metatable)", "prefix": "setmetatable"}, "tonumber": {"body": "tonumber(${1:e}${2:[, base]})", "description": "tonumber (e [, base])", "prefix": "tonumber"}, "tostring": {"body": "tostring(${1:v})", "description": "tostring (v)", "prefix": "tostring"}, "type": {"body": "type(${1:v})", "description": "type (v)", "prefix": "type"}, "unpack": {"body": "unpack(${0:...})", "description": "unpack (list [, i [, j]])", "prefix": "unpack"}, "xpcall": {"body": "xpcall(${0:...})", "description": "xpcall (f, err)", "prefix": "xpcall"}, "sys.publish(...)": {"body": "sys.publish(${1:...})", "description": "\u53d1\u5e03\u5185\u90e8\u6d88\u606f\uff0c\u5b58\u50a8\u5728\u5185\u90e8\u6d88\u606f\u961f\u5217\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\npublish(\"NET_STATUS_IND\")\r\n", "prefix": "sys.publish(...)"}, "sys.restart(r)": {"body": "sys.restart(${1:r})", "description": "\u8f6f\u4ef6\u91cd\u542f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.restart('\u7a0b\u5e8f\u8d85\u65f6\u8f6f\u4ef6\u91cd\u542f')\r\n", "prefix": "sys.restart(r)"}, "sys.run()": {"body": "sys.run()", "description": "run()\u4ece\u5e95\u5c42\u83b7\u53d6core\u6d88\u606f\u5e76\u53ca\u65f6\u5904\u7406\u76f8\u5173\u6d88\u606f\uff0c\u67e5\u8be2\u5b9a\u65f6\u5668\u5e76\u8c03\u5ea6\u5404\u6ce8\u518c\u6210\u529f\u7684\u4efb\u52a1\u7ebf\u7a0b\u8fd0\u884c\u548c\u6302\u8d77\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsys.run()\r\n", "prefix": "sys.run()"}, "sys.setRollBack(flag, secs)": {"body": "sys.setRollBack(${1:flag},${2: secs})", "description": "\u8bbe\u7f6e\u201clua\u811a\u672c\u8fd0\u884c\u51fa\u9519\u65f6\uff0c\u662f\u5426\u56de\u9000\u539f\u59cb\u70e7\u5199\u7248\u672c\u201d\u7684\u529f\u80fd\u5f00\u5173\u3002\u5982\u679c\u6ca1\u6709\u8c03\u7528\u6b64\u63a5\u53e3\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u56de\u6eda\r\n\u8fd4\u56de\u503c\uff1a\r\nnil\r\n\u4f8b\u5b50\uff1a\r\nsys.setRollBack(true)\r\nsys.setRollBack(false)\r\n", "prefix": "sys.setRollBack(flag, secs)"}, "sys.subscribe(id, callback)": {"body": "sys.subscribe(${1:id},${2: callback})", "description": "\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.subscribe(id, callback)"}, "sys.taskInit(fun, ...)": {"body": "sys.taskInit(${1:fun},${2: ...})", "description": "\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570\uff0cmain.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\r\n\u8fd4\u56de\u503c\uff1a\r\nco \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\r\n\u4f8b\u5b50\uff1a\r\nsys.taskInit(task1,'a','b')\r\n", "prefix": "sys.taskInit(fun, ...)"}, "sys.timerIsActive(val, ...)": {"body": "sys.timerIsActive(${1:val},${2: ...})", "description": "\u5224\u65ad\u67d0\u4e2a\u5b9a\u65f6\u5668\u662f\u5426\u5904\u4e8e\u5f00\u542f\u72b6\u6001\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5f00\u542f\u72b6\u6001\u8fd4\u56detrue\uff0c\u5426\u5219nil", "prefix": "sys.timerIsActive(val, ...)"}, "sys.timerLoopStart(fnc, ms, ...)": {"body": "sys.timerLoopStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerLoopStart(fnc, ms, ...)"}, "sys.timerStart(fnc, ms, ...)": {"body": "sys.timerStart(${1:fnc},${2: ms},${3: ...})", "description": "\u5f00\u542f\u4e00\u4e2a\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\nnumber \u5b9a\u65f6\u5668ID\uff0c\u5982\u679c\u5931\u8d25\uff0c\u8fd4\u56denil", "prefix": "sys.timerStart(fnc, ms, ...)"}, "sys.timerStop(val, ...)": {"body": "sys.timerStop(${1:val},${2: ...})", "description": "\u5173\u95ed\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStop(1)\r\n", "prefix": "sys.timerStop(val, ...)"}, "sys.timerStopAll(fnc)": {"body": "sys.timerStopAll(${1:fnc})", "description": "\u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\ntimerStopAll(cbFnc)\r\n", "prefix": "sys.timerStopAll(fnc)"}, "sys.unsubscribe(id, callback)": {"body": "sys.unsubscribe(${1:id},${2: callback})", "description": "\u53d6\u6d88\u8ba2\u9605\u6d88\u606f\r\n\u8fd4\u56de\u503c\uff1a\r\n\u65e0\r\n\u4f8b\u5b50\uff1a\r\nunsubscribe(\"NET_STATUS_IND\", callback)\r\n", "prefix": "sys.unsubscribe(id, callback)"}, "sys.wait(ms)": {"body": "sys.wait(${1:ms})", "description": "Task\u4efb\u52a1\u5ef6\u65f6\u51fd\u6570\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5b9a\u65f6\u7ed3\u675f\u8fd4\u56denil,\u88ab\u5176\u4ed6\u7ebf\u7a0b\u5524\u8d77\u8fd4\u56de\u8c03\u7528\u7ebf\u7a0b\u4f20\u5165\u7684\u53c2\u6570\r\n\u4f8b\u5b50\uff1a\r\nsys.wait(30)\r\n", "prefix": "sys.wait(ms)"}, "sys.waitUntil(id, ms)": {"body": "sys.waitUntil(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nresult \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56detrue\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntil(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntil(id, ms)"}, "sys.waitUntilExt(id, ms)": {"body": "sys.waitUntilExt(${1:id},${2: ms})", "description": "Task\u4efb\u52a1\u7684\u6761\u4ef6\u7b49\u5f85\u51fd\u6570\u6269\u5c55\uff08\u5305\u62ec\u4e8b\u4ef6\u6d88\u606f\u548c\u5b9a\u65f6\u5668\u6d88\u606f\u7b49\u6761\u4ef6\uff09\uff0c\u53ea\u80fd\u7528\u4e8e\u4efb\u52a1\u51fd\u6570\u4e2d\u3002\r\n\u8fd4\u56de\u503c\uff1a\r\nmessage \u63a5\u6536\u5230\u6d88\u606f\u8fd4\u56demessage\uff0c\u8d85\u65f6\u8fd4\u56defalse\r\n\u4f8b\u5b50\uff1a\r\nresult, data = sys.waitUntilExt(\"SIM_IND\", 120000)\r\n", "prefix": "sys.waitUntilExt(id, ms)"}, "table.concat(t,s)": {"body": "table.concat(${1:t},${2: s})", "description": "\u8868\u8fde\u63a5\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n-- \u8fd4\u56de table \u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 bananaorangeapple\r\n\r\n-- \u6307\u5b9a\u8fde\u63a5\u5b57\u7b26\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \"))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 banana, orange, apple\r\n\r\n-- \u6307\u5b9a\u7d22\u5f15\u6765\u8fde\u63a5 table\r\nprint(\"\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 \",table.concat(fruits,\", \", 2,3))\r\n--\u8fde\u63a5\u540e\u7684\u5b57\u7b26\u4e32 orange, apple\r\n", "prefix": "table.concat()"}, "table.gsort(t, f)": {"body": "table.gsort(${1:t},${2: f})", "description": "\u8fd4\u56de\u4e00\u4e2a\u8fed\u4ee3\u5668\u51fd\u6570,\u6bcf\u6b21\u8c03\u7528\u51fd\u6570\u90fd\u4f1a\u8fd4\u56dehash\u8868\u7684\u6392\u5e8f\u540e\u7684\u952e\u503c\u5bf9\r\n\u8fd4\u56de\u503c\uff1a\r\nfunction.\r\n\u4f8b\u5b50\uff1a\r\ntest = {a=1,f=9,d=2,c=8,b=5}\r\nfor name,line in pairsByKeys(test) do print(name,line) end\r\n", "prefix": "table.gsort(t, f)"}, "table.insert(t,d)": {"body": "table.insert(${1:t},${2: d})", "description": "\u6dfb\u52a0table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table\r\n\u4f8b\u5b50\uff1a\r\nfruits = {\"banana\",\"orange\",\"apple\"}\r\n\r\n-- \u5728\u672b\u5c3e\u63d2\u5165\r\ntable.insert(fruits,\"mango\")\r\nprint(\"\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a \",fruits[4])\r\n--\u7d22\u5f15\u4e3a 4 \u7684\u5143\u7d20\u4e3a mango\r\n\r\n-- \u5728\u7d22\u5f15\u4e3a 2 \u7684\u952e\u5904\u63d2\u5165\r\ntable.insert(fruits,2,\"grapes\")\r\nprint(\"\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a \",fruits[2])\r\n--\u7d22\u5f15\u4e3a 2 \u7684\u5143\u7d20\u4e3a grapes\r\n\r\nprint(\"\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a \",fruits[5])\r\n--\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e3a mango\r\n", "prefix": "table.insert()"}, "table.remove(t,i)": {"body": "table.remove(${1:t},${2: i})", "description": "\u79fb\u9664table\u53c2\u6570\r\n\u8fd4\u56de\u503c\uff1a\r\n table", "prefix": "table.remove()"}, "string.byte()": {"body": "string.byte()", "description": "\u63a5\u6536\u63a7\u5236\u5b57\u7b26\uff0c\u8fd4\u56deASCII\u7801\r\n\u8fd4\u56de\u503c\uff1a\r\n ASCII\u7801\r\n\u4f8b\u5b50\uff1a\r\nstring.byte(\"ABCD\") --65\r\nstring.byte(\"ABCD\",4) --68\r\n", "prefix": "string.byte()"}, "string.char()": {"body": "string.char()", "description": "\u63a5\u6536ASCII\u7801\uff0c\u8fd4\u56de\u5bf9\u5e94\u7684\u63a7\u5236\u5b57\u7b26\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\r\n\u4f8b\u5b50\uff1a\r\nstring.char(97,98,99,100) --abcd\r\n", "prefix": "string.char()"}, "string.find()": {"body": "string.find()", "description": "\u67e5\u627e\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0s\u00a0\u4e2d\u5339\u914d\u5230\u7684\u00a0pattern\r\n\u8fd4\u56de\u503c\uff1a\r\n \u8fd4\u56de\u5339\u914d\u5b57\u7b26\u5177\u4f53\u4f4d\u7f6e\u3002\u4e0d\u5b58\u5728\u5219\u8fd4\u56de nil\r\n\u4f8b\u5b50\uff1a\r\nstring.find(\"Hello Lua user\", \"Lua\", 1) --7 9\r\n", "prefix": "string.find()"}, "string.format()": {"body": "string.format()", "description": "\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.format(\"the value is:%d\",4) --the value is:4\r\n", "prefix": "string.format()"}, "string.gsub()": {"body": "string.gsub()", "description": "\u5b57\u7b26\u4e32\u66ff\u6362", "prefix": "string.gsub()"}, "string.len()": {"body": "string.len()", "description": "\u8ba1\u7b97\u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\u957f\u5ea6\r\n\u4f8b\u5b50\uff1a\r\nstring.len(\"abc\") --3\r\n", "prefix": "string.len()"}, "string.lower()": {"body": "string.lower()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5c0f\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5c0f\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.lower()"}, "string.rep()": {"body": "string.rep()", "description": "\u5b57\u7b26\u4e32\u62f7\u8d1d\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.rep(\"abcd\",2) --abcdabcd\r\n", "prefix": "string.rep()"}, "string.reverse()": {"body": "string.reverse()", "description": "\u5b57\u7b26\u4e32\u53cd\u8f6c\r\n\u8fd4\u56de\u503c\uff1a\r\n \u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\r\n\u4f8b\u5b50\uff1a\r\nstring.reverse(\"Luat\") --tauL\r\n", "prefix": "string.reverse()"}, "string.split(str, delimiter)": {"body": "string.split(${1:str},${2: delimiter})", "description": "\u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\r\n\u8fd4\u56de\u503c\uff1a\r\n\u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u5217\u8868\r\n\u4f8b\u5b50\uff1a\r\n\"123,456,789\":split(',') -> {'123','456','789'}\r\n", "prefix": "string.split(str, delimiter)"}, "string.upper()": {"body": "string.upper()", "description": "\u5b57\u7b26\u4e32\u5168\u90e8\u8f6c\u4e3a\u5927\u5199\u5b57\u6bcd\r\n\u8fd4\u56de\u503c\uff1a\r\n \u5927\u5199\u5b57\u6bcd\u5b57\u7b26\u4e32", "prefix": "string.upper()"}, "adc.open": {"body": "adc.open(${1:id})", "description": "adc.open(id) - \u6253\u5f00adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90534,\u5e76\u8bfb\u53d6\nif adc.open(4) then\n log.info(\"adc\", adc.read(4)) -- \u8fd4\u56de\u503c\u67092\u4e2a, \u539f\u59cb\u503c\u548c\u8ba1\u7b97\u503c,\u901a\u5e38\u53ea\u9700\u8981\u540e\u8005\n log.info(\"adc\", adc.get(4)) -- \u8fd4\u56de\u503c\u67091\u4e2a, \u4ec5\u8ba1\u7b97\u503c\nend\nadc.close(4) -- \u82e5\u9700\u8981\u6301\u7eed\u8bfb\u53d6, \u5219\u4e0d\u9700\u8981close, \u529f\u8017\u4f1a\u9ad8\u4e00\u70b9.\n", "prefix": "adc.open"}, "adc.setRange": {"body": "adc.setRange(${1:range})", "description": "adc.setRange(range) - \u8bbe\u7f6eADC\u7684\u6d4b\u91cf\u8303\u56f4\uff0c\u6ce8\u610f\u8fd9\u4e2a\u548c\u5177\u4f53\u82af\u7247\u6709\u5173\uff0c\u76ee\u524d\u53ea\u652f\u6301air105/Air780E\u7cfb\u5217\n\u4f20\u5165\u503c\uff1a\nint range\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u6bd4\u5982air105\u586badc.ADC_RANGE_1_8\u548cadc.ADC_RANGE_3_6\nreturn nil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u8981\u5728\u8c03\u7528adc.open\u4e4b\u524d\u5c31\u8c03\u7528, \u4e4b\u540e\u8c03\u7528\u65e0\u6548!!!\n\n-- \u5173\u95edair105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_1_8)\n-- \u6253\u5f00air105\u5185\u90e8\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_6)\n\n\n-- EC618\u7cfb\u5217(Air780E\u7b49)/EC718E\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\u652f\u6301\u4ee5\u4e0b2\u79cd\nadc.setRange(adc.ADC_RANGE_1_2) -- \u5173\u95ed\u5206\u538b\nadc.setRange(adc.ADC_RANGE_3_8) -- \u542f\u7528\u5206\u538b\n", "prefix": "adc.setRange"}, "adc.read": {"body": "adc.read(${1:id})", "description": "adc.read(id) - \u8bfb\u53d6adc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u539f\u59cb\u503c,\u4e00\u822c\u6ca1\u7528,\u53ef\u4ee5\u76f4\u63a5\u629b\u5f03\nint \u4ece\u539f\u59cb\u503c\u6362\u7b97\u5f97\u51fa\u7684\u5b9e\u9645\u503c\uff0c\u901a\u5e38\u5355\u4f4d\u662fmV\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n -- \u8fd9\u91cc\u4f7f\u7528\u7684\u662fadc.read\u4f1a\u8fd4\u56de2\u4e2a\u503c, \u63a8\u8350\u8d70adc.get\u51fd\u6570,\u76f4\u63a5\u53d6\u5b9e\u9645\u503c\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.read"}, "adc.get": {"body": "adc.get(${1:id})", "description": "adc.get(id) - \u83b7\u53d6adc\u8ba1\u7b97\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u8fd4\u56de\u503c\uff1a\nint \u5355\u4f4d\u901a\u5e38\u662fmV, \u90e8\u5206\u901a\u9053\u4f1a\u8fd4\u56de\u6e29\u5ea6\u503c,\u5355\u4f4d\u5343\u5206\u4e4b\u4e00\u6444\u6c0f\u5ea6. \u82e5\u8bfb\u53d6\u5931\u8d25,\u4f1a\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\n-- \u672cAPI \u5728 2022.10.01\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.get(2))\nend\nadc.close(2) -- \u6309\u9700\u5173\u95ed\n", "prefix": "adc.get"}, "adc.close": {"body": "adc.close(${1:id})", "description": "adc.close(id) - \u5173\u95edadc\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00adc\u901a\u90532,\u5e76\u8bfb\u53d6\nif adc.open(2) then\n log.info(\"adc\", adc.read(2))\nend\nadc.close(2)\n", "prefix": "adc.close"}, "antbot.init": {"body": "antbot.init()", "description": "antbot.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n\u4f8b\u5b50\uff1a\n\n-- \u521d\u59cb\u5316\u8682\u8681\u94fe\u7684\u5e95\u5c42\u9002\u914d\nantbot.init()\n", "prefix": "antbot.init"}, "antbot.app_sta_get": {"body": "antbot.app_sta_get()", "description": "antbot.app_sta_get() - \u83b7\u53d6\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u7801\n", "prefix": "antbot.app_sta_get"}, "antbot.version_get": {"body": "antbot.version_get()", "description": "antbot.version_get() - \u83b7\u53d6SDK\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u7248\u672c\u53f7,\u5982\u679c\u83b7\u53d6\u5931\u8d25\u8fd4\u56denil\n", "prefix": "antbot.version_get"}, "antbot.asset_register": {"body": "antbot.asset_register(${1:asset_id},${2:asset_type},${3:asset_dataver})", "description": "antbot.asset_register(asset_id, asset_type, asset_dataver) - asset\u8d44\u6e90\u6ce8\u518c\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\nstring asset_type \u8d44\u6e90\u7c7b\u578b\nstring asset_dataver \u8d44\u6e90\u6570\u636e\u7248\u672c\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_register"}, "antbot.asset_data_publish": {"body": "antbot.asset_data_publish(${1:data})", "description": "antbot.asset_data_publish(data) - asset\u8d44\u6e90\u53d1\u5e03\n\u4f20\u5165\u503c\uff1a\nstring data \u8d44\u6e90\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.asset_data_publish"}, "antbot.device_status_get": {"body": "antbot.device_status_get()", "description": "antbot.device_status_get() - \u83b7\u53d6\u8bbe\u5907\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u5907\u72b6\u6001\n", "prefix": "antbot.device_status_get"}, "antbot.asset_status_get": {"body": "antbot.asset_status_get(${1:asset_id})", "description": "antbot.asset_status_get(asset_id) - \u83b7\u53d6assset\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nstring asset_id \u8d44\u6e90ID\n\u8fd4\u56de\u503c\uff1a\nint \u8d44\u6e90\u72b6\u6001\n", "prefix": "antbot.asset_status_get"}, "antbot.channel_switch": {"body": "antbot.channel_switch(${1:cmd})", "description": "antbot.channel_switch(cmd) - \u5207\u6362channel\n\u4f20\u5165\u503c\uff1a\nint 0 - \u5173\u95ed, 1 - \u5f00\u542f\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.channel_switch"}, "antbot.config_set": {"body": "antbot.config_set(${1:config})", "description": "antbot.config_set(config) - \u914d\u7f6e\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nstring config \u914d\u7f6e\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nint 0:\u6210\u529f \u5176\u4ed6\u503c\u4e3a\u5931\u8d25\n", "prefix": "antbot.config_set"}, "antbot.config_get": {"body": "antbot.config_get()", "description": "antbot.config_get() - \u83b7\u53d6\u8bbe\u5907\u914d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u914d\u7f6e\u5185\u5bb9\n", "prefix": "antbot.config_get"}, "audio.start": {"body": "audio.start(${1:id},${2:audio_format},${3:num_channels},${4:sample_rate},${5:bits_per_sample},${6:is_signed})", "description": "audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed) - \u542f\u52a8\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u51c6\u5907\u64ad\u653e\u97f3\u9891\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\uff0c\u9ed8\u8ba4true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\naudio.start(0, audio.PCM, 1, 16000, 16)\n", "prefix": "audio.start"}, "audio.record": {"body": "audio.record(${1:id},${2:record_type},${3:record_time},${4:amr_quailty},${5:path})", "description": "audio.record(id, record_type, record_time, amr_quailty, path) - \u5f55\u97f3\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\nint record_type \u5f55\u97f3\u97f3\u9891\u683c\u5f0f,\u652f\u6301 audio.AMR audio.PCM (\u90e8\u5206\u5e73\u53f0\u652f\u6301audio.AMR_WB)\nint record_time \u5f55\u5236\u65f6\u957f \u5355\u4f4d\u79d2,\u53ef\u9009\uff0c\u9ed8\u8ba40\u5373\u8868\u793a\u4e00\u76f4\u5f55\u5236\nint amr_quailty \u8d28\u91cf,audio.AMR\u4e0b\u6709\u6548\nstring path \u5f55\u97f3\u6587\u4ef6\u8def\u5f84,\u53ef\u9009,\u4e0d\u6307\u5b9a\u5219\u4e0d\u4fdd\u5b58,\u53ef\u5728audio.on\u56de\u8c03\u51fd\u6570\u4e2d\u5904\u7406\u539f\u59cbPCM\u6570\u636e\nint record_callback_time \u4e0d\u6307\u5b9a\u5f55\u97f3\u6587\u4ef6\u8def\u5f84\u65f6\uff0c\u5355\u6b21\u5f55\u97f3\u56de\u8c03\u65f6\u957f\uff0c\u5355\u4f4d\u662f100ms\u3002\u9ed8\u8ba41\uff0c\u65e2100ms\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nerr,info = audio.record(id, type, record_time, quailty, path)\n", "prefix": "audio.record"}, "audio.recordStop": {"body": "audio.recordStop(${1:id})", "description": "audio.recordStop(id) - \u5f55\u97f3\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint id \u591a\u5a92\u4f53\u64ad\u653e\u901a\u9053\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.recordStop(0)\n", "prefix": "audio.recordStop"}, "audio.write": {"body": "audio.write(${1:id},${2:data})", "description": "audio.write(id, data) - \u5f80\u4e00\u4e2a\u591a\u5a92\u4f53\u901a\u9053\u5199\u5165\u97f3\u9891\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u97f3\u9891\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.write(0, \"xxxxxx\")\n", "prefix": "audio.write"}, "audio.stop": {"body": "audio.stop(${1:id})", "description": "audio.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.stop(0)\n", "prefix": "audio.stop"}, "audio.pause": {"body": "audio.pause(${1:id},${2:pause})", "description": "audio.pause(id, pause) - \u6682\u505c/\u6062\u590d\u6307\u5b9a\u7684\u591a\u5a92\u4f53\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\nboolean onoff true \u6682\u505c\uff0cfalse \u6062\u590d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.pause(0, true) --\u6682\u505c\u901a\u90530\naudio.pause(0, false) --\u6062\u590d\u901a\u90530\n", "prefix": "audio.pause"}, "audio.on": {"body": "audio.on(${1:audio_id},${2:func})", "description": "audio.on(audio_id, func) - \u6ce8\u518caudio\u64ad\u653e\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint audio id, audio 0\u51990, audio 1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\uff0c\u56de\u8c03\u65f6\u4f20\u5165\u53c2\u6570\u4e3a1\u3001int \u901a\u9053ID 2\u3001int \u6d88\u606f\u503c\uff0c\u53ea\u6709audio.MORE_DATA\u548caudio.DONE\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.on(0, function(audio_id, msg)\n log.info(\"msg\", audio_id, msg)\nend)\n", "prefix": "audio.on"}, "audio.play": {"body": "audio.play(${1:id},${2:path},${3:errStop})", "description": "audio.play(id, path, errStop) - \u64ad\u653e\u6216\u8005\u505c\u6b62\u64ad\u653e\u4e00\u4e2a\u6587\u4ef6\uff0c\u64ad\u653e\u5b8c\u6210\u540e\uff0c\u4f1a\u56de\u8c03\u4e00\u4e2aaudio.DONE\u6d88\u606f\uff0c\u53ef\u4ee5\u7528pause\u6765\u6682\u505c\u6216\u8005\u6062\u590d\uff0c\u5176\u4ed6API\u4e0d\u53ef\u7528\u3002\u8003\u8651\u5230\u8bfbSD\u5361\u901f\u5ea6\u6bd4\u8f83\u6162\u800c\u62d6\u7d2fluavm\u8fdb\u7a0b\u7684\u901f\u5ea6\uff0c\u6240\u4ee5\u5c3d\u91cf\u4f7f\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/table \u6587\u4ef6\u540d\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u8868\u793a\u505c\u6b62\u64ad\u653e\uff0c\u5982\u679c\u662ftable\uff0c\u5219\u8868\u793a\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\uff0c\u4e3b\u8981\u5e94\u7528\u4e8e\u4e91\u5587\u53ed\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\uff0c\u5e76\u4e14\u4f1a\u7528\u5230errStop\u53c2\u6570\nboolean \u662f\u5426\u5728\u6587\u4ef6\u89e3\u7801\u5931\u8d25\u540e\u505c\u6b62\u89e3\u7801\uff0c\u53ea\u6709\u5728\u8fde\u7eed\u64ad\u653e\u591a\u4e2a\u6587\u4ef6\u65f6\u624d\u6709\u7528\uff0c\u9ed8\u8ba4true\uff0c\u9047\u5230\u89e3\u7801\u9519\u8bef\u81ea\u52a8\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.play(0, \"xxxxxx\") --\u5f00\u59cb\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\naudio.play(0) --\u505c\u6b62\u64ad\u653e\u67d0\u4e2a\u6587\u4ef6\n", "prefix": "audio.play"}, "audio.tts": {"body": "audio.tts(${1:id},${2:data})", "description": "audio.tts(id, data) - TTS\u64ad\u653e\u6216\u8005\u505c\u6b62\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nstring/zbuff \u9700\u8981\u64ad\u653e\u7684\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "audio.tts"}, "audio.playStop": {"body": "audio.playStop(${1:id})", "description": "audio.playStop(id) - \u505c\u6b62\u64ad\u653e\u6587\u4ef6\uff0c\u548caudio.play(id)\u662f\u4e00\u6837\u7684\u4f5c\u7528\n\u4f20\u5165\u503c\uff1a\nint audio id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.playStop(0)\n", "prefix": "audio.playStop"}, "audio.isEnd": {"body": "audio.isEnd(${1:id})", "description": "audio.isEnd(id) - \u68c0\u67e5\u5f53\u524d\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u64ad\u653e\u7ed3\u675f\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\naudio.isEnd(0)\n\n", "prefix": "audio.isEnd"}, "audio.getError": {"body": "audio.getError(${1:id})", "description": "audio.getError(id) - \u83b7\u53d6\u6700\u8fd1\u4e00\u6b21\u64ad\u653e\u7ed3\u679c\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\u7684\uff0c\u76ee\u524d\u53ea\u6709EC618\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5168\u90e8\u64ad\u653e\u6210\u529f\uff0ctrue\u6210\u529f\uff0cfalse\u6709\u6587\u4ef6\u64ad\u653e\u5931\u8d25\nboolean \u5982\u679c\u64ad\u653e\u5931\u8d25\uff0c\u662f\u5426\u662f\u7528\u6237\u505c\u6b62\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\nint \u7b2c\u51e0\u4e2a\u6587\u4ef6\u5931\u8d25\u4e86\uff0c\u4ece1\u5f00\u59cb\n\u4f8b\u5b50\uff1a\nlocal result, user_stop, file_no = audio.getError(0)\n", "prefix": "audio.getError"}, "audio.config": {"body": "audio.config(${1:id},${2:paPin},${3:onLevel},${4:dacDelay},${5:paDelay},${6:dacPin},${7:dacLevel},${8:dacTimeDelay})", "description": "audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u7279\u6027\uff0c\u6bd4\u5982\u5b9e\u73b0\u81ea\u52a8\u63a7\u5236PA\u5f00\u5173\u3002\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u662f\u5fc5\u987b\u7684\uff0c\u4e00\u822c\u5728\u8c03\u7528play\u7684\u65f6\u5019\u624d\u9700\u8981\u81ea\u52a8\u63a7\u5236\uff0c\u5176\u4ed6\u60c5\u51b5\u6bd4\u5982\u4f60\u624b\u52a8\u63a7\u5236\u64ad\u653e\u65f6\uff0c\u5c31\u53ef\u4ee5\u81ea\u5df1\u63a7\u5236PA\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint PA\u63a7\u5236IO\nint PA\u6253\u5f00\u65f6\u7684\u7535\u5e73\nint \u5728DAC\u542f\u52a8\u524d\u63d2\u5165\u7684\u5197\u4f59\u65f6\u95f4\uff0c\u5355\u4f4d100ms\uff0c\u4e00\u822c\u7528\u4e8e\u5916\u90e8DAC\nint \u5728DAC\u542f\u52a8\u540e\uff0c\u5ef6\u8fdf\u591a\u957f\u65f6\u95f4\u6253\u5f00PA\uff0c\u5355\u4f4d1ms\nint \u5916\u90e8dac\u7535\u6e90\u63a7\u5236IO\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u5219\u8868\u793a\u4f7f\u7528\u5e73\u53f0\u9ed8\u8ba4IO\uff0c\u6bd4\u5982Air780E\u4f7f\u7528DACEN\u811a\uff0cair105\u5219\u4e0d\u542f\u7528\nint \u5916\u90e8dac\u6253\u5f00\u65f6\uff0c\u7535\u6e90\u63a7\u5236IO\u7684\u7535\u5e73\uff0c\u9ed8\u8ba4\u62c9\u9ad8\nint \u97f3\u9891\u64ad\u653e\u5b8c\u6bd5\u65f6\uff0cPA\u4e0eDAC\u5173\u95ed\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d1ms\uff0c\u9ed8\u8ba40ms\n\u4f8b\u5b50\uff1a\naudio.config(0, pin.PC0, 1) --PA\u63a7\u5236\u811a\u662fPC0\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cair105\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\naudio.config(0, 25, 1, 6, 200) --PA\u63a7\u5236\u811a\u662fGPIO25\uff0c\u9ad8\u7535\u5e73\u6253\u5f00\uff0cAir780E\u4e91\u5587\u53ed\u677f\u7528\u8fd9\u4e2a\u914d\u7f6e\u5c31\u53ef\u4ee5\u7528\u4e86\n", "prefix": "audio.config"}, "audio.vol": {"body": "audio.vol(${1:id},${2:value})", "description": "audio.vol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u97f3\u91cf\u8c03\u8282\uff0c\u76f4\u63a5\u5c06\u539f\u59cb\u6570\u636e\u653e\u5927\u6216\u8005\u7f29\u5c0f\uff0c\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u5efa\u8bae\u5c3d\u91cf\u7528\u786c\u4ef6\u65b9\u6cd5\u53bb\u7f29\u653e\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~1000%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.vol"}, "audio.micVol": {"body": "audio.micVol(${1:id},${2:value})", "description": "audio.micVol(id, value) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684mic\u97f3\u91cf\u8c03\u8282\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint mic\u97f3\u91cf\uff0c\u767e\u5206\u6bd4\uff0c1%~100%\uff0c\u9ed8\u8ba4100%\uff0c\u5c31\u662f\u4e0d\u8c03\u8282\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dmic\u97f3\u91cf\n\u4f8b\u5b50\uff1a\nlocal result = audio.vol(0, 90) --\u901a\u90530\u7684\u97f3\u91cf\u8c03\u8282\u523090%\uff0cresult\u5b58\u653e\u4e86\u8c03\u8282\u540e\u7684\u97f3\u91cf\u6c34\u5e73\uff0c\u6709\u53ef\u80fd\u4ecd\u7136\u662f100\n", "prefix": "audio.micVol"}, "audio.setBus": {"body": "audio.setBus(${1:id},${2:bus_type})", "description": "audio.setBus(id, bus_type) - \u914d\u7f6e\u4e00\u4e2a\u97f3\u9891\u901a\u9053\u7684\u786c\u4ef6\u8f93\u51fa\u603b\u7ebf\uff0c\u53ea\u6709\u5bf9\u5e94soc\u8f6f\u786c\u4ef6\u5e73\u53f0\u652f\u6301\u624d\u8bbe\u7f6e\u5bf9\u5e94\u7c7b\u578b\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053,\u4f8b\u59820\nint \u603b\u7ebf\u7c7b\u578b, \u4f8b\u5982 audio.BUS_SOFT_DAC\nint \u786c\u4ef6id, \u4f8b\u5982 \u603b\u7ebf\u7c7b\u578b\u4e3aaudio.BUS_I2S\u65f6,\u786c\u4ef6id\u5373\u4e3ai2s codec\u7684i2c id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\naudio.setBus(0, audio.BUS_SOFT_DAC) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3a\u8f6f\u4ef6DAC\naudio.setBus(0, audio.BUS_I2S) --\u901a\u90530\u7684\u786c\u4ef6\u8f93\u51fa\u901a\u9053\u8bbe\u7f6e\u4e3aI2S\n", "prefix": "audio.setBus"}, "audio.debug": {"body": "audio.debug(${1:on_off})", "description": "audio.debug(on_off) - \u914d\u7f6e\u8c03\u8bd5\u4fe1\u606f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00 false\u5173\n", "prefix": "audio.debug"}, "audio.pm": {"body": "audio.pm(${1:id},${2:pm_mode})", "description": "audio.pm(id,pm_mode) - audio \u4f11\u7720\u63a7\u5236(\u4e00\u822c\u4f1a\u81ea\u52a8\u8c03\u7528\u4e0d\u9700\u8981\u624b\u52a8\u6267\u884c)\n\u4f20\u5165\u503c\uff1a\nint \u97f3\u9891\u901a\u9053\nint \u4f11\u7720\u6a21\u5f0f \n\u8fd4\u56de\u503c\uff1a\nboolean true\u6210\u529f\n\u4f8b\u5b50\uff1a\naudio.pm(multimedia_id,audio.RESUME)\n", "prefix": "audio.pm"}, "bit64.to32": {"body": "bit64.to32(${1:data64bit})", "description": "bit64.to32(data64bit) - 64bit\u6570\u636e\u8f6c\u621032bit\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nany \u6839\u636e64bit\u6570\u636e\u8f93\u51faint\u6216\u8005number\n", "prefix": "bit64.to32"}, "bit64.to64": {"body": "bit64.to64(${1:data32bit})", "description": "bit64.to64(data32bit) - 32bit\u6570\u636e\u8f6c\u621064bit\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint/number 32bit\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.to64"}, "bit64.show": {"body": "bit64.show(${1:a},${2:type},${3:flag})", "description": "bit64.show(a,type,flag) - 64bit\u6570\u636e\u683c\u5f0f\u5316\u6253\u5370\u6210\u5b57\u7b26\u4e32\uff0c\u7528\u4e8e\u663e\u793a\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u6253\u5370\u768464bit\u6570\u636e\nint \u8fdb\u5236\uff0c10=10\u8fdb\u5236\uff0c16=16\u8fdb\u5236\uff0c\u9ed8\u8ba410\uff0c\u53ea\u652f\u630110\u6216\u800516\nboolean \u6574\u5f62\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\u6253\u5370\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring \u53ef\u4ee5\u6253\u5370\u7684\u503c\n", "prefix": "bit64.show"}, "bit64.plus": {"body": "bit64.plus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.plus(a,b,flag1,flag2) - 64bit\u6570\u636e\u52a0,a+b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.plus"}, "bit64.minus": {"body": "bit64.minus(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.minus(a,b,flag1,flag2) - 64bit\u6570\u636e\u51cf,a-b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.minus"}, "bit64.multi": {"body": "bit64.multi(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.multi(a,b,flag1,flag2) - 64bit\u6570\u636e\u4e58,a*b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.multi"}, "bit64.pide": {"body": "bit64.pide(${1:a},${2:b},${3:flag1},${4:flag2})", "description": "bit64.pide(a,b,flag1,flag2) - 64bit\u6570\u636e\u9664,a/b,a\u548cb\u4e2d\u6709\u4e00\u4e2a\u4e3a\u6d6e\u70b9\uff0c\u5219\u6309\u7167\u6d6e\u70b9\u8fd0\u7b97\n\u4f20\u5165\u503c\uff1a\nstring a\nstring/int/number b\nboolean \u6574\u5f62\u8fd0\u7b97\u65f6\u662f\u5426\u6309\u7167\u65e0\u7b26\u53f7\u65b9\u5f0f\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6d6e\u70b9\u8fd0\u7b97\u5ffd\u7565\nboolean \u6d6e\u70b9\u8fd0\u7b97\u7ed3\u679c\u662f\u5426\u8981\u5f3a\u5236\u8f6c\u6210\u6574\u6570\uff0ctrue\u662f\uff0cfalse\u4e0d\u662f\uff0c\u9ed8\u8ba4false\uff0c\u6574\u5f62\u8fd0\u7b97\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.pide"}, "bit64.shift": {"body": "bit64.shift(${1:a},${2:b},${3:flag})", "description": "bit64.shift(a,b,flag) - 64bit\u6570\u636e\u4f4d\u79fb a>>b \u6216\u8005 a<>\uff0c\u9ed8\u8ba4false\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n", "prefix": "bit64.shift"}, "bit64.strtoll": {"body": "bit64.strtoll(${1:data},${2:base})", "description": "bit64.strtoll(data, base) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u4e3aLongLong\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8f6c\u6362\u7684\u6570\u636e,\u5fc5\u987b\u5b58\u5728\nint \u8f6c\u6362\u8fdb\u5236, \u9ed8\u8ba410, \u53ef\u900916\u62168\n\u8fd4\u56de\u503c\uff1a\nstring 9\u5b57\u8282\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.27 \u6dfb\u52a0\n-- \u63d0\u9192, \u5982\u679c\u8f6c\u6362\u5931\u8d25, \u662f\u8fd4\u56de9\u4e2a\u5b57\u8282\u76840x00\nlocal data = bit64.strtoll(\"864040064024194\", 10)\nlog.info(\"data\", data:toHex())\nlog.info(\"data\", bit64.show(data))\n", "prefix": "bit64.strtoll"}, "camera.init": {"body": "camera.init(${1:InitReg_or_cspi_id},${2:cspi_speed},${3:mode},${4:is_msb},${5:rx_bit},${6:seq_type},${7:is_ddr},${8:only_y},${9:scan_mode},${10:w},${11:h})", "description": "camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h) - \u521d\u59cb\u5316\u6444\u50cf\u5934\n\u4f20\u5165\u503c\uff1a\ntable/integer \u5982\u679c\u662ftable,\u5219\u662fDVP\u6444\u50cf\u5934\u7684\u914d\u7f6e\u89c1demo/camera/AIR105,\u540c\u65f6\u5ffd\u7565\u540e\u7eed\u53c2\u6570;\u5982\u679c\u662f\u6570\u5b57,\u5219\u662fcamera spi\u603b\u7ebf\u5e8f\u53f7\nint camera spi\u603b\u7ebf\u901f\u5ea6\nint camera spi\u6a21\u5f0f,0~3\nint \u5b57\u8282\u7684bit\u987a\u5e8f\u662f\u5426\u662fmsb,0\u54261\u662f\nint \u540c\u65f6\u63a5\u6536bit\u6570,1,2,4\nint byte\u5e8f\u5217,0~1\nint \u53cc\u8fb9\u6cbf\u91c7\u6837\u914d\u7f6e,0\u4e0d\u542f\u7528,\u5176\u4ed6\u503c\u6839\u636e\u5b9e\u9645SOC\u51b3\u5b9a\nint \u53ea\u63a5\u6536Y\u5206\u91cf\uff0c0\u4e0d\u542f\u7528\uff0c1\u542f\u7528\uff0c\u626b\u7801\u5fc5\u987b\u542f\u7528\uff0c\u5426\u5219\u4f1a\u5931\u8d25\nint \u5de5\u4f5c\u6a21\u5f0f\uff0ccamera.AUTO\u81ea\u52a8,camera.SCAN\u626b\u7801\nint \u6444\u50cf\u5934\u5bbd\u5ea6\nint \u6444\u50cf\u5934\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint/false \u6210\u529f\u8fd4\u56decamera_id\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera_id = camera.init(GC032A_InitReg)--\u5c4f\u5e55\u8f93\u51fargb\u56fe\u50cf\n--\u521d\u59cb\u5316\u540e\u9700\u8981start\u624d\u5f00\u59cb\u8f93\u51fa/\u626b\u7801\ncamera.start(camera_id)--\u5f00\u59cb\u6307\u5b9a\u7684camera\n", "prefix": "camera.init"}, "camera.on": {"body": "camera.on(${1:id},${2:event},${3:func})", "description": "camera.on(id, event, func) - \u6ce8\u518c\u6444\u50cf\u5934\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint camera id, camera 0\u51990, camera 1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncamera.on(0, \"scanned\", function(id, str)\n--id int camera id\n--str \u591a\u79cd\u7c7b\u578b false \u6444\u50cf\u5934\u6ca1\u6709\u6b63\u5e38\u5de5\u4f5c\uff0ctrue \u62cd\u7167\u6a21\u5f0f\u4e0b\u62cd\u7167\u6210\u529f\u5e76\u4fdd\u5b58\u5b8c\u6210\uff0c int \u539f\u59cb\u6570\u636e\u6a21\u5f0f\u4e0b\u672c\u6b21\u8fd4\u56de\u7684\u6570\u636e\u5927\u5c0f\uff0c string \u626b\u7801\u6a21\u5f0f\u4e0b\u626b\u7801\u6210\u529f\u540e\u7684\u89e3\u7801\u503c\n print(id, str)\nend)\n", "prefix": "camera.on"}, "camera.start": {"body": "camera.start(${1:id})", "description": "camera.start(id) - \u5f00\u59cb\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.start(0)\n", "prefix": "camera.start"}, "camera.stop": {"body": "camera.stop(${1:id})", "description": "camera.stop(id) - \u505c\u6b62\u6307\u5b9a\u7684camera\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.stop(0)\n", "prefix": "camera.stop"}, "camera.close": {"body": "camera.close(${1:id})", "description": "camera.close(id) - \u5173\u95ed\u6307\u5b9a\u7684camera\uff0c\u91ca\u653e\u76f8\u5e94\u7684IO\u8d44\u6e90\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.close(0)\n", "prefix": "camera.close"}, "camera.capture": {"body": "camera.capture(${1:id},${2:save_path},${3:quality})", "description": "camera.capture(id, save_path, quality) - camera\u62cd\u7167\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nstring/zbuff/nil save_path,\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\uff0c\u7a7a\u5219\u5199\u5728\u4e0a\u6b21\u8def\u5f84\u91cc\uff0c\u9ed8\u8ba4\u662f/capture.jpg\uff0c\u5982\u679c\u662fzbuff\uff0c\u5219\u5c06\u56fe\u7247\u4fdd\u5b58\u5728buff\u5185\u4e0d\u5199\u5165\u6587\u4ef6\u7cfb\u7edf\nint quality, jpeg\u538b\u7f29\u8d28\u91cf\uff0c1\u6700\u5dee\uff0c\u5360\u7528\u7a7a\u95f4\u5c0f\uff0c3\u6700\u9ad8\uff0c\u5360\u7528\u7a7a\u95f4\u6700\u5927\u800c\u4e14\u8d39\u65f6\u95f4\uff0c\u9ed8\u8ba41\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse,\u771f\u6b63\u5b8c\u6210\u540e\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\ncamera.capture(0)\n", "prefix": "camera.capture"}, "camera.video": {"body": "camera.video(${1:id},${2:w},${3:h},${4:out_path})", "description": "camera.video(id, w, h, out_path) - camera\u8f93\u51fa\u89c6\u9891\u6d41\u5230USB\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nint \u8f93\u51fa\u8def\u5f84\uff0c\u76ee\u524d\u53ea\u80fd\u7528\u865a\u62df\u4e32\u53e30\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.video(0, 320, 240, uart.VUART_0)\n", "prefix": "camera.video"}, "camera.startRaw": {"body": "camera.startRaw(${1:id},${2:w},${3:h},${4:buff})", "description": "camera.startRaw(id, w, h, buff) - \u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u8c03\u7528camera.getRaw\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nint \u5bbd\u5ea6\nint \u9ad8\u5ea6\nzbuff \u7528\u4e8e\u5b58\u653e\u6570\u636e\u7684\u7f13\u5b58\u533a\uff0c\u5927\u5c0f\u5fc5\u987b\u4e0d\u5c0f\u4e8ew X h X 2 byte\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.startRaw(0, 320, 240, buff)\n", "prefix": "camera.startRaw"}, "camera.getRaw": {"body": "camera.getRaw(${1:id})", "description": "camera.getRaw(id) - \u518d\u6b21\u542f\u52a8camera\u8f93\u51fa\u539f\u59cb\u6570\u636e\u5230\u7528\u6237\u7684zbuff\u7f13\u5b58\u533a\uff0c\u8f93\u51fa1fps\u540e\u4f1a\u505c\u6b62\uff0c\u5e76\u901a\u8fc7camera.on\u8bbe\u7f6e\u7684\u56de\u8c03\u51fd\u6570\u56de\u8c03\u63a5\u6536\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u9700\u8981\u518d\u6b21\u8f93\u51fa\uff0c\u8bf7\u7ee7\u7eed\u8c03\u7528\u672cAPI\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.getRaw(0)\n", "prefix": "camera.getRaw"}, "camera.preview": {"body": "camera.preview(${1:id},${2:onoff})", "description": "camera.preview(id, onoff) - \u542f\u505ccamera\u9884\u89c8\u529f\u80fd\uff0c\u76f4\u63a5\u8f93\u51fa\u5230LCD\u4e0a\uff0c\u53ea\u6709\u786c\u4ef6\u652f\u6301\u7684SOC\u53ef\u4ee5\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint camera id,\u4f8b\u59820\nboolean true\u5f00\u542f\uff0cfalse\u505c\u6b62\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncamera.preview(1, true)\n", "prefix": "camera.preview"}, "cc.lastNum": {"body": "cc.lastNum()", "description": "cc.lastNum() - \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nstring \u83b7\u53d6\u6700\u540e\u4e00\u6b21\u901a\u8bdd\u7684\u53f7\u7801\n", "prefix": "cc.lastNum"}, "cc.dial": {"body": "cc.dial(${1:sim_id},${2:number})", "description": "cc.dial(sim_id, number) - \u62e8\u6253\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\nstring \u7535\u8bdd\u53f7\u7801\n\u8fd4\u56de\u503c\uff1a\nbool \u62e8\u6253\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.dial"}, "cc.hangUp": {"body": "cc.hangUp(${1:sim_id})", "description": "cc.hangUp(sim_id) - \u6302\u65ad\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n", "prefix": "cc.hangUp"}, "cc.accept": {"body": "cc.accept(${1:sim_id})", "description": "cc.accept(sim_id) - \u63a5\u542c\u7535\u8bdd\n\u4f20\u5165\u503c\uff1a\nnumber sim_id\n\u8fd4\u56de\u503c\uff1a\nbool \u63a5\u542c\u7535\u8bdd\u6210\u529f\u4e0e\u5426\n", "prefix": "cc.accept"}, "cc.init": {"body": "cc.init(${1:multimedia_id})", "description": "cc.init(multimedia_id) - \u521d\u59cb\u5316\u7535\u8bdd\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nnumber multimedia_id \u591a\u5a92\u4f53id\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "cc.init"}, "cc.record": {"body": "cc.record(${1:on_off},${2:upload_zbuff1},${3:upload_zbuff2},${4:download_zbuff1},${5:download_zbuff2})", "description": "cc.record(on_off,upload_zbuff1, upload_zbuff2, download_zbuff1, download_zbuff2) - \u5f55\u97f3\u901a\u8bdd\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u542f\u5173\u95ed\u901a\u8bdd\u5f55\u97f3\u529f\u80fd\uff0cfalse\u6216\u8005nil\u5173\u95ed\uff0c\u5176\u4ed6\u5f00\u542f\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1,zbuff\u521b\u5efa\u65f6\u7684\u7a7a\u95f4\u5bb9\u91cf\u5fc5\u987b\u662f640\u7684\u500d\u6570,\u4e0b\u540c\nzbuff \u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0a\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\nzbuff \u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a2,\u548c\u4e0b\u884c\u6570\u636e\u4fdd\u5b58\u533a1\u7ec4\u6210\u53cc\u7f13\u51b2\u533a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\uff0c\u5982\u679c\u5904\u4e8e\u901a\u8bdd\u72b6\u6001\uff0c\u4f1a\u5931\u8d25\n\u4f8b\u5b50\uff1a\nbuff1 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff2 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff3 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\nbuff4 = zbuff.create(6400,0,zbuff.HEAP_AUTO)\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\ncc.record(true, buff1, buff2, buff3, buff4)\n", "prefix": "cc.record"}, "cc.quality": {"body": "cc.quality()", "description": "cc.quality() - \u83b7\u53d6\u5f53\u524d\u901a\u8bdd\u8d28\u91cf\n\u8fd4\u56de\u503c\uff1a\nint 1\u4e3a\u4f4e\u97f3\u8d28(8K)\uff0c2\u4e3a\u9ad8\u97f3\u8d28(16k)\uff0c0\u6ca1\u6709\u5728\u901a\u8bdd\n", "prefix": "cc.quality"}, "cc.on": {"body": "cc.on(${1:event},${2:func})", "description": "cc.on(event, func) - \u6ce8\u518c\u901a\u8bdd\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u540d\u79f0 \u97f3\u9891\u5f55\u97f3\u6570\u636e\u4e3a\"record\"\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ncc.on(\"record\", function(type, buff_point)\n log.info(type, buff_point) -- type==true\u662f\u4e0b\u884c\u6570\u636e\uff0cfalse\u662f\u4e0a\u884c\u6570\u636e buff_point\u6307\u793a\u53cc\u7f13\u5b58\u4e2d\u8fd4\u56de\u4e86\u54ea\u4e00\u4e2a\nend)\n", "prefix": "cc.on"}, "codec.create": {"body": "codec.create(${1:type},${2:isDecoder},${3:quality})", "description": "codec.create(type, isDecoder, quality) - \u521b\u5efa\u7f16\u89e3\u7801\u7528\u7684codec\n\u4f20\u5165\u503c\uff1a\nint \u591a\u5a92\u4f53\u7c7b\u578b\uff0c\u76ee\u524d\u652f\u6301codec.MP3 codec.AMR\nboolean \u662f\u5426\u662f\u89e3\u7801\u5668\uff0ctrue\u89e3\u7801\u5668\uff0cfalse\u7f16\u7801\u5668\uff0c\u9ed8\u8ba4true\uff0c\u662f\u89e3\u7801\u5668\nint \u7f16\u7801\u7b49\u7ea7\uff0c\u90e8\u5206bsp\u6709\u5185\u90e8\u7f16\u7801\u5668\uff0c\u53ef\u80fd\u9700\u8981\u63d0\u524d\u8f93\u5165\u7f16\u7801\u7b49\u7ea7\uff0c\u6bd4\u5982air780ep\u7684\u5185\u90e8amr\u7f16\u7801\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u89e3\u7801\u5668\nlocal decoder = codec.create(codec.MP3)--\u521b\u5efa\u4e00\u4e2amp3\u7684decoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR, false)--\u521b\u5efa\u4e00\u4e2aamr\u7684encoder\n-- \u521b\u5efa\u7f16\u7801\u5668\nlocal encoder = codec.create(codec.AMR_WB, false, 8)--\u521b\u5efa\u4e00\u4e2aamr-wb\u7684encoder\uff0c\u7f16\u7801\u7b49\u7ea7\u9ed8\u8ba48\n", "prefix": "codec.create"}, "codec.info": {"body": "codec.info(${1:decoder},${2:file_path})", "description": "codec.info(decoder, file_path) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u97f3\u9891\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\nint \u97f3\u9891\u683c\u5f0f\nint \u58f0\u97f3\u901a\u9053\u6570\nint \u91c7\u6837\u9891\u7387\nint \u91c7\u6837\u4f4d\u6570\nboolean \u662f\u5426\u6709\u7b26\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, audio_format, num_channels, sample_rate, bits_per_sample, is_signed= codec.info(coder, \"xxx\")\n", "prefix": "codec.info"}, "codec.data": {"body": "codec.data(${1:decoder},${2:out_buff})", "description": "codec.data(decoder, out_buff) - decoder\u4ece\u6587\u4ef6\u4e2d\u89e3\u6790\u51fa\u539f\u59cb\u97f3\u9891\u6570\u636e\uff0c\u6bd4\u5982\u4eceMP3\u6587\u4ef6\u91cc\u89e3\u6790\u51faPCM\u6570\u636e\uff0c\u8fd9\u91cc\u7684\u6587\u4ef6\u8def\u5f84\u5df2\u7ecf\u5728codec.info\u4f20\u5165\uff0c\u4e0d\u9700\u8981\u518d\u6b21\u4f20\u5165\n\u4f20\u5165\u503c\uff1a\nuserdata \u89e3\u7801\u7528\u7684decoder\nzbuff \u5b58\u653e\u8f93\u51fa\u6570\u636e\u7684zbuff\uff0c\u7a7a\u95f4\u5fc5\u987b\u4e0d\u5c11\u4e8e16KB\nint \u6700\u5c11\u89e3\u7801\u51fa\u591a\u5c11\u5b57\u8282\u7684\u97f3\u9891\u6570\u636e,\u9ed8\u8ba416384\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\u89e3\u6790\n\u4f8b\u5b50\uff1a\n-- \u5927\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(16*1024)\nlocal result = codec.data(coder, buff)\n-- \u5c0f\u5185\u5b58\u8bbe\u5907\nlocal buff = zbuff.create(8*1024)\nlocal result = codec.data(coder, buff, 4096)\n", "prefix": "codec.data"}, "codec.encode": {"body": "codec.encode(${1:coder},${2:in_buffer},${3:out_buffer},${4:mode})", "description": "codec.encode(coder, in_buffer, out_buffer, mode) - \u7f16\u7801\u97f3\u9891\u6570\u636e\uff0c\u7531\u4e8eflash\u548cram\u7a7a\u95f4\u4e00\u822c\u6bd4\u8f83\u6709\u9650\uff0c\u9664\u4e86\u90e8\u5206bsp\u6709\u5185\u90e8amr\u7f16\u7801\u529f\u80fd\uff0c\u76ee\u524d\u53ea\u652f\u6301amr-nb\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nuserdata codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\nzbuff \u8f93\u5165\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u4ece0\u5230used\nzbuff \u8f93\u51fa\u7684\u6570\u636e,zbuff\u5f62\u5f0f,\u81ea\u52a8\u6dfb\u52a0\u5230buff\u7684\u5c3e\u90e8,\u5982\u679c\u7a7a\u95f4\u5927\u5c0f\u4e0d\u8db3,\u4f1a\u81ea\u52a8\u6269\u5c55,\u4f46\u662f\u4f1a\u989d\u5916\u6d88\u8017\u65f6\u95f4,\u751a\u81f3\u4f1a\u5931\u8d25,\u6240\u4ee5\u5c3d\u91cf\u4e00\u5f00\u59cb\u5c31\u7ed9\u8db3\u7a7a\u95f4\nint amr_nb\u7684\u7f16\u7801\u7b49\u7ea7 0~7(\u5373 MR475~MR122)\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40 amr_wb\u7684\u7f16\u7801\u7b49\u7ea7 0~8,\u503c\u8d8a\u5927\u6d88\u8017\u7684\u7a7a\u95f4\u8d8a\u591a,\u97f3\u8d28\u8d8a\u9ad8,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ncodec.encode(amr_coder, inbuf, outbuf, codec.AMR_)\n", "prefix": "codec.encode"}, "codec.release": {"body": "codec.release(${1:coder})", "description": "codec.release(coder) - \u91ca\u653e\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f20\u5165\u503c\uff1a\ncoder codec.create\u521b\u5efa\u7684\u7f16\u89e3\u7801\u7528\u7684coder\n\u4f8b\u5b50\uff1a\ncodec.release(coder)\n", "prefix": "codec.release"}, "coremark.run": {"body": "coremark.run()", "description": "coremark.run() - \u5f00\u59cb\u8dd1\u5206\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u7ed3\u679c\u76f4\u63a5\u6253\u5370\u5728\u65e5\u5fd7\u4e2d\n\u4f8b\u5b50\uff1a\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b, \u8fd9\u4e2a\u5e93\u90fd\u4e0d\u4f1a\u5305\u542b\u5728\u6b63\u5f0f\u7248\u56fa\u4ef6\u91cc\n-- \u82e5\u9700\u4f7f\u7528,\u53ef\u4ee5\u53c2\u8003wiki\u6587\u6863\u81ea\u884c\u7f16\u8bd1\u6216\u4f7f\u7528\u4e91\u7f16\u8bd1\n-- https://wiki.luatos.com/develop/compile.html\n\n-- \u8dd1\u5206\u7684main.lua \u5e94\u79fb\u9664\u786c\u72d7\u4ee3\u7801, \u9632\u6b62\u91cd\u542f\n-- \u82e5\u8bbe\u5907\u652f\u6301\u81ea\u52a8\u4f11\u7720, \u5e94\u5173\u95ed\u4f11\u7720\u529f\u80fd\n-- \u82e5\u8bbe\u5907\u652f\u6301\u66f4\u591a\u7684\u9891\u7387\u8fd0\u884c, \u5efa\u8bae\u8bbe\u7f6e\u5230\u6700\u9ad8\u9891\u7387\n-- \u4f7f\u7528 -O3 \u6bd4 -O2 -Os \u7684\u5206\u6570\u66f4\u9ad8, \u901a\u5e38\u60c5\u51b5\u4e0b\n\n-- \u4f1a\u4e00\u76f4\u72ec\u5360\u7ebf\u7a0b\u5230\u6267\u884c\u5b8c\u6bd5, \u7136\u540e\u5728\u63a7\u5236\u53f0\u8f93\u51fa\u7ed3\u679c\ncoremark.run()\n\n-- \u8dd1\u5206\u56fe\u4e00\u4e50^_^\n\n", "prefix": "coremark.run"}, "crypto.md5": {"body": "crypto.md5(${1:str})", "description": "crypto.md5(str) - \u8ba1\u7b97md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684md5\nlog.info(\"md5\", crypto.md5(\"abc\"))\n", "prefix": "crypto.md5"}, "crypto.hmac_md5": {"body": "crypto.hmac_md5(${1:str},${2:key})", "description": "crypto.hmac_md5(str, key) - \u8ba1\u7b97hmac_md5\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_md5\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_md5\nlog.info(\"hmac_md5\", crypto.hmac_md5(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_md5"}, "crypto.sha1": {"body": "crypto.sha1(${1:str})", "description": "crypto.sha1(str) - \u8ba1\u7b97sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha1\nlog.info(\"sha1\", crypto.sha1(\"abc\"))\n", "prefix": "crypto.sha1"}, "crypto.hmac_sha1": {"body": "crypto.hmac_sha1(${1:str},${2:key})", "description": "crypto.hmac_sha1(str, key) - \u8ba1\u7b97hmac_sha1\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha1\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha1\nlog.info(\"hmac_sha1\", crypto.hmac_sha1(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha1"}, "crypto.sha256": {"body": "crypto.sha256(${1:str})", "description": "crypto.sha256(str) - \u8ba1\u7b97sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha256\nlog.info(\"sha256\", crypto.sha256(\"abc\"))\n", "prefix": "crypto.sha256"}, "crypto.hmac_sha256": {"body": "crypto.hmac_sha256(${1:str},${2:key})", "description": "crypto.hmac_sha256(str, key) - \u8ba1\u7b97hmac_sha256\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha256\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha256\nlog.info(\"hmac_sha256\", crypto.hmac_sha256(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha256"}, "crypto.sha512": {"body": "crypto.sha512(${1:str})", "description": "crypto.sha512(str) - \u8ba1\u7b97sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684sha512\nlog.info(\"sha512\", crypto.sha512(\"abc\"))\n", "prefix": "crypto.sha512"}, "crypto.hmac_sha512": {"body": "crypto.hmac_sha512(${1:str},${2:key})", "description": "crypto.hmac_sha512(str, key) - \u8ba1\u7b97hmac_sha512\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8ba1\u7b97\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u8ba1\u7b97\u5f97\u51fa\u7684hmac_sha512\u503c\u7684hex\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97\u5b57\u7b26\u4e32\"abc\"\u7684hmac_sha512\nlog.info(\"hmac_sha512\", crypto.hmac_sha512(\"abc\", \"1234567890\"))\n", "prefix": "crypto.hmac_sha512"}, "crypto.cipher_encrypt": {"body": "crypto.cipher_encrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_encrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97AES\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_encrypt(\"AES-128-CBC\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\", \"1234567890666666\")\n", "prefix": "crypto.cipher_encrypt"}, "crypto.cipher_decrypt": {"body": "crypto.cipher_decrypt(${1:type},${2:padding},${3:str},${4:key},${5:iv})", "description": "crypto.cipher_decrypt(type, padding, str, key, iv) - \u5bf9\u79f0\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u7b97\u6cd5\u540d\u79f0, \u4f8b\u5982 AES-128-ECB/AES-128-CBC, \u53ef\u67e5\u9605crypto.cipher_list()\nstring \u5bf9\u9f50\u65b9\u5f0f, \u652f\u6301PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE\nstring \u9700\u8981\u89e3\u5bc6\u7684\u6570\u636e\nstring \u5bc6\u94a5,\u9700\u8981\u5bf9\u5e94\u7b97\u6cd5\u7684\u5bc6\u94a5\u957f\u5ea6\nstring IV\u503c, \u975eECB\u7b97\u6cd5\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u7528AES\u52a0\u5bc6,\u7136\u540e\u7528AES\u89e3\u5bc6\nlocal data = crypto.cipher_encrypt(\"AES-128-ECB\", \"PKCS7\", \"1234567890123456\", \"1234567890123456\")\nlocal data2 = crypto.cipher_decrypt(\"AES-128-ECB\", \"PKCS7\", data, \"1234567890123456\")\n-- data\u7684hex\u4e3a 757CCD0CDC5C90EADBEEECF638DD0000\n-- data2\u7684\u503c\u4e3a 1234567890123456\n", "prefix": "crypto.cipher_decrypt"}, "crypto.crc16": {"body": "crypto.crc16(${1:method},${2:data},${3:poly},${4:initial},${5:finally},${6:inReversemoutReverse})", "description": "crypto.crc16(method, data, poly, initial, finally, inReversem outReverse) - \u8ba1\u7b97CRC16\n\u4f20\u5165\u503c\uff1a\nstring CRC16\u6a21\u5f0f\uff08\"IBM\",\"MAXIM\",\"USB\",\"MODBUS\",\"CCITT\",\"CCITT-FALSE\",\"X25\",\"XMODEM\",\"DNP\",\"USER-DEFINED\"\uff09\nstring \u5b57\u7b26\u4e32\nint poly\u503c\nint initial\u503c\nint finally\u503c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\nint \u8f93\u5165\u53cd\u8f6c,1\u53cd\u8f6c,\u9ed8\u8ba40\u4e0d\u53cd\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16\nlocal crc = crypto.crc16(\"\")\n", "prefix": "crypto.crc16"}, "crypto.crc16_modbus": {"body": "crypto.crc16_modbus(${1:data},${2:start})", "description": "crypto.crc16_modbus(data, start) - \u76f4\u63a5\u8ba1\u7b97modbus\u7684crc16\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint \u521d\u59cb\u5316\u503c,\u9ed8\u8ba40xFFFF\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC16\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC16 modbus\nlocal crc = crypto.crc16_modbus(data)\n-- 2023.11.06 \u65b0\u589e\u521d\u59cb\u503c\u8bbe\u7f6e\ncrc = crypto.crc16_modbus(data, 0xFFFF)\n", "prefix": "crypto.crc16_modbus"}, "crypto.crc32": {"body": "crypto.crc32(${1:data})", "description": "crypto.crc32(data) - \u8ba1\u7b97crc32\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC32\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC32\nlocal crc = crypto.crc32(data)\n", "prefix": "crypto.crc32"}, "crypto.crc8": {"body": "crypto.crc8(${1:data},${2:poly},${3:start},${4:revert})", "description": "crypto.crc8(data, poly, start, revert) - \u8ba1\u7b97crc8\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5c06\u5ffd\u7565\u9664\u4e86\u6570\u636e\u5916\u6240\u6709\u53c2\u6570\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40\nboolean \u662f\u5426\u9700\u8981\u9006\u5e8f\u5904\u7406\uff0c\u9ed8\u8ba4\u5426\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC8\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC8\nlocal crc = crypto.crc8(data)\nlocal crc = crypto.crc8(data, 0x31, 0xff, false)\n", "prefix": "crypto.crc8"}, "crypto.crc7": {"body": "crypto.crc7(${1:data},${2:poly},${3:start})", "description": "crypto.crc7(data, poly, start) - \u8ba1\u7b97crc7\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\nint crc\u591a\u9879\u5f0f\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40xE5\nint crc\u521d\u59cb\u503c\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba40x00\n\u8fd4\u56de\u503c\uff1a\nint \u5bf9\u5e94\u7684CRC7\u503c\n\u4f8b\u5b50\uff1a\n-- \u8ba1\u7b97CRC7, \u672cAPI\u4e8e2023.10.07\u65b0\u589e\nlocal crc = crypto.crc7(data)\nlocal crc = crypto.crc7(data, 0x31, 0xff)\n", "prefix": "crypto.crc7"}, "crypto.trng": {"body": "crypto.trng(${1:len})", "description": "crypto.trng(len) - \u751f\u6210\u771f\u968f\u673a\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6307\u5b9a\u968f\u673a\u6570\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u751f\u621032\u4f4d\u968f\u673a\u6570ir\nlocal r = crypto.trng(4)\nlocal _, ir = pack.unpack(r, \"I\")\n", "prefix": "crypto.trng"}, "crypto.totp": {"body": "crypto.totp(${1:secret},${2:time})", "description": "crypto.totp(secret,time) - \u8ba1\u7b97TOTP\u52a8\u6001\u5bc6\u7801\u7684\u7ed3\u679c\n\u4f20\u5165\u503c\uff1a\nstring \u7f51\u7ad9\u63d0\u4f9b\u7684\u5bc6\u94a5\uff08\u5c31\u662fBASE32\u7f16\u7801\u540e\u7684\u7ed3\u679c\uff09\nint \u53ef\u9009\uff0c\u65f6\u95f4\u6233\uff0c\u9ed8\u8ba4\u5f53\u524d\u65f6\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u8ba1\u7b97\u5f97\u51fa\u7684\u516d\u4f4d\u6570\u7ed3\u679c \u8ba1\u7b97\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--\u4f7f\u7528\u5f53\u524d\u7cfb\u7edf\u65f6\u95f4\u8ba1\u7b97\nlocal otp = crypto.totp(\"asdfassdfasdfass\")\n", "prefix": "crypto.totp"}, "crypto.base64_encode": {"body": "crypto.base64_encode(${1:data})", "description": "crypto.base64_encode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u7f16\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.toBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_encode"}, "crypto.base64_decode": {"body": "crypto.base64_decode(${1:data})", "description": "crypto.base64_decode(data) - \u5c06\u6570\u636e\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u7801\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e0e string.fromBase64 \u662f\u540c\u4e00\u4e2a\nlocal data = \"123\"\nlocal bdata = crypto.base64_encode(data)\nlog.info(\"base64\", \"encode\", data, bdata)\ndata = crypto.base64_decode(data)\nlog.info(\"base64\", \"decode\", data, bdata)\n", "prefix": "crypto.base64_decode"}, "crypto.cipher_list": {"body": "crypto.cipher_list()", "description": "crypto.cipher_list() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.27\u6dfb\u52a0\nlocal ciphers = crypto.cipher_list()\nif ciphers then\n log.info(\"crypto\", \"ciphers list\", json.encode(ciphers))\nend\n", "prefix": "crypto.cipher_list"}, "crypto.cipher_suites": {"body": "crypto.cipher_suites()", "description": "crypto.cipher_suites() - \u83b7\u53d6\u5f53\u524d\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868\n\u8fd4\u56de\u503c\uff1a\ntable \u672c\u56fa\u4ef6\u652f\u6301\u7684cipher suites\u5217\u8868,\u5b57\u7b26\u4e32\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.11.16\u6dfb\u52a0\nlocal suites = crypto.cipher_suites()\nif suites then\n log.info(\"crypto\", \"ciphers suites\", json.encode(suites))\nend\n", "prefix": "crypto.cipher_suites"}, "crypto.md_file": {"body": "crypto.md_file(${1:tp},${2:path},${3:hmac})", "description": "crypto.md_file(tp, path, hmac) - \u8ba1\u7b97\u6587\u4ef6\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u6587\u4ef6\u8def\u5f84, \u4f8b\u5982 /luadb/logo.jpg\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\"))\nlog.info(\"sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\"))\nlog.info(\"sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md_file(\"MD5\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md_file(\"SHA1\", \"/luadb/logo.jpg\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md_file(\"SHA256\", \"/luadb/logo.jpg\", \"123456\"))\n", "prefix": "crypto.md_file"}, "crypto.md": {"body": "crypto.md(${1:tp},${2:data},${3:hmac})", "description": "crypto.md(tp, data, hmac) - \u8ba1\u7b97\u6570\u636e\u7684hash\u503c(md5/sha1/sha256\u53cahmac\u5f62\u5f0f)\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5c0f\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring \u5f85\u5904\u7406\u7684\u6570\u636e\nstring hmac\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u8fc7\u7684hash\u503c,\u82e5\u5931\u8d25\u4f1a\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\n-- \u65e0hmac\u7684hash\u503c\nlog.info(\"md5\", crypto.md(\"MD5\", \"1234567890\"))\nlog.info(\"sha1\", crypto.md(\"SHA1\", \"1234567890\"))\nlog.info(\"sha256\", crypto.md(\"SHA256\", \"1234567890\"))\n\n-- \u5e26hmac\u7684hash\u503c\nlog.info(\"hmac_md5\", crypto.md(\"MD5\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha1\", crypto.md(\"SHA1\", \"1234567890\", \"123456\"))\nlog.info(\"hmac_sha256\", crypto.md(\"SHA256\", \"1234567890\", \"123456\"))\n", "prefix": "crypto.md"}, "crypto.hash_init": {"body": "crypto.hash_init(${1:tp})", "description": "crypto.hash_init(tp) - \u521b\u5efa\u6d41\u5f0fhash\u7528\u7684stream\n\u4f20\u5165\u503c\uff1a\nstring hash\u7c7b\u578b, \u5927\u5199\u5b57\u6bcd, \u4f8b\u5982 \"MD5\" \"SHA1\" \"SHA256\"\nstring hmac\u503c\uff0c\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u65e0hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\")\n\n-- \u5e26hmac\u7684hash stream\nlocal md5_stream = crypto.hash_init(\"MD5\", \"123456\")\nlocal sha1_stream = crypto.hash_init(\"SHA1\", \"123456\")\nlocal sha256_stream = crypto.hash_init(\"SHA256\", \"123456\")\n", "prefix": "crypto.hash_init"}, "crypto.hash_update": {"body": "crypto.hash_update(${1:stream},${2:data})", "description": "crypto.hash_update(stream, data) - \u6d41\u5f0fhash\u66f4\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream, \u5fc5\u9009\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nreturn \u65e0\n\u4f8b\u5b50\uff1a\ncrypto.hash_update(stream, \"OK\")\n", "prefix": "crypto.hash_update"}, "crypto.hash_finish": {"body": "crypto.hash_finish(${1:stream})", "description": "crypto.hash_finish(stream) - \u83b7\u53d6\u6d41\u5f0fhash\u6821\u9a8c\u503c\u5e76\u91ca\u653e\u521b\u5efa\u7684stream\n\u4f20\u5165\u503c\uff1a\nuserdata crypto.hash_init()\u521b\u5efa\u7684stream,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u8ba1\u7b97\u5f97\u51fa\u7684\u6d41\u5f0fhash\u503c\u7684hex\u5b57\u7b26\u4e32\uff0c\u5931\u8d25\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nlocal hashResult = crypto.hash_finish(stream)\n", "prefix": "crypto.hash_finish"}, "crypto.checksum": {"body": "crypto.checksum(${1:data},${2:mode})", "description": "crypto.checksum(data, mode) - \u8ba1\u7b97checksum\u6821\u9a8c\u548c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nint \u6a21\u5f0f,\u7d2f\u52a0\u6a21\u5f0f, 0 - \u5f02\u6216, 1 - \u7d2f\u52a0, \u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nint checksum\u503c,\u6821\u9a8c\u548c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728 2022.12.28 \u6dfb\u52a0\n-- \u5355\u7eaf\u8ba1\u7b97checksum\u503c\nlocal ck = crypto.checksum(\"OK\")\nlog.info(\"checksum\", \"ok\", string.format(\"%02X\", ck))\n-- \u7b2c\u4e8c\u4e2a\u53c2\u6570mode\u57282023.5.23\u65e5\u6dfb\u52a0\n", "prefix": "crypto.checksum"}, "dac.open": {"body": "dac.open(${1:ch},${2:freq},${3:mode})", "description": "dac.open(ch, freq, mode) - \u6253\u5f00DAC\u901a\u9053,\u5e76\u914d\u7f6e\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nint \u8f93\u51fa\u9891\u7387,\u5355\u4f4dhz\nint \u6a21\u5f0f,\u9ed8\u8ba4\u4e3a0,\u9884\u7559\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\nend\n\n", "prefix": "dac.open"}, "dac.write": {"body": "dac.write(${1:ch},${2:data})", "description": "dac.write(ch, data) - \u4ece\u6307\u5b9aDAC\u901a\u9053\u8f93\u51fa\u4e00\u6bb5\u6ce2\u5f62,\u6216\u8005\u5355\u4e2a\u503c\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\nstring \u82e5\u8f93\u51fa\u56fa\u5b9a\u503c,\u53ef\u4ee5\u586b\u6570\u503c, \u82e5\u8f93\u51fa\u6ce2\u5f62,\u586bstring\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.write"}, "dac.close": {"body": "dac.close(${1:ch})", "description": "dac.close(ch) - \u5173\u95edDAC\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053\u7f16\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\ntrue \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nif dac.open(0, 44000) then\n log.info(\"dac\", \"dac ch0 is opened\")\n dac.write(0, string.fromHex(\"ABCDABCD\"))\nend\ndac.close(0)\n", "prefix": "dac.close"}, "disp.init": {"body": "disp.init(${1:conf})", "description": "disp.init(conf) - \u663e\u793a\u5c4f\u521d\u59cb\u5316,\u8bf7\u4f7f\u7528u8g2\u5e93\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- disp\u5e93\u7684\u6240\u6709API\u5747\u5df2\u5408\u5e76\u5230u8g2\u5e93\n-- disp\u5e93\u5df2\u7ecf\u6620\u5c04\u4e3au8g2\u5e93,\u6240\u6709API\u5747\u4ee3\u7406\u5230u8g2,\u8bf7\u67e5\u9605u8g2\u5e93\u7684API\n", "prefix": "disp.init"}, "eink.init": {"body": "eink.init(${1:tp},${2:args},${3:spi_device})", "description": "eink.init(tp, args,spi_device) - eink\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nnumber eink\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1ahttps://wiki.luatos.com/api/eink.html#id1\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_busy\uff08busy\uff09
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1aeink\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1aeink\u590d\u4f4d\u5f15\u811a\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684eink.MODEL_4in2bc) \u6ce8\u610f:eink\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_eink = spi.deviceSetup(0,20,0,0,8,20000000,spi.MSB,1,1)\nlog.info(\"eink.init\",\neink.init(eink.MODEL_4in2bc,{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_eink))\n", "prefix": "eink.init"}, "eink.setup": {"body": "eink.setup(${1:full},${2:spiid},${3:pin_busy},${4:pin_reset},${5:pin_dc},${6:pin_cs})", "description": "eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs) - \u521d\u59cb\u5316eink\n\u4f20\u5165\u503c\uff1a\nint \u5168\u5c4f\u5237\u65b00,\u5c40\u90e8\u5237\u65b01,\u9ed8\u8ba4\u662f\u5168\u5c4f\u5237\u65b0\nint \u6240\u5728\u7684spi,\u9ed8\u8ba4\u662f0\nint Busy \u5fd9\u4fe1\u53f7\u7ba1\u811a\nint Reset \u590d\u4f4d\u7ba1\u811a\nint DC \u6570\u636e\u547d\u4ee4\u9009\u62e9\u7ba1\u811a\nint CS \u4f7f\u80fd\u7ba1\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "eink.setup"}, "eink.sleep": {"body": "eink.sleep()", "description": "eink.sleep() - \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\uff0c\u518d\u6b21\u4f7f\u7528\u65f6\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\n", "prefix": "eink.sleep"}, "eink.clear": {"body": "eink.clear(${1:color},${2:force})", "description": "eink.clear(color, force) - \u6e05\u9664\u7ed8\u56fe\u7f13\u51b2\u533a\uff0c\u9ed8\u8ba4\u4e0d\u4f1a\u9a6c\u4e0a\u5237\u65b0\u5230\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nnumber color \u53ef\u9009\uff0c\u9ed8\u8ba41\u3002\u5237\u5c4f\u989c\u8272\nbool force \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u9a6c\u4e0a\u6e05\u5c4f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.clear"}, "eink.setWin": {"body": "eink.setWin(${1:width},${2:height},${3:rotate})", "description": "eink.setWin(width, height, rotate) - \u8bbe\u7f6e\u7a97\u53e3\n\u4f20\u5165\u503c\uff1a\nint width \u5bbd\u5ea6\nint height \u9ad8\u5ea6\nint rotate \u663e\u793a\u65b9\u5411,0/1/2/3, \u76f8\u5f53\u4e8e\u65cb\u8f6c0\u5ea6/90\u5ea6/180\u5ea6/270\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.setWin"}, "eink.getWin": {"body": "eink.getWin()", "description": "eink.getWin() - \u83b7\u53d6\u7a97\u53e3\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nint width \u5bbd\nint height \u9ad8\nint rotate \u65cb\u8f6c\u65b9\u5411\n", "prefix": "eink.getWin"}, "eink.setFont": {"body": "eink.setFont(${1:font})", "description": "eink.setFont(font) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata \u5b57\u4f53\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684print\u6709\u6548\neink.setFont(eink.font_opposansm12_chinese)\n", "prefix": "eink.setFont"}, "eink.print": {"body": "eink.print(${1:x},${2:y},${3:str},${4:colored})", "description": "eink.print(x, y, str, colored) - \u7ed8\u5236\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u5b57\u7b26\u4e32\nint \u989c\u8272, \u53ef\u4ee5\u662f0\u6216\u80051, \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5148\u8bbe\u7f6e\u5b57\u4f53, \u7136\u540e\u5199\u5b57\n-- \u53ef\u7528\u5b57\u4f53\u53d6\u51b3\u4e8e\u5177\u4f53\u7684\u56fa\u4ef6, \u5982\u679c\u6ca1\u6709\u4f60\u60f3\u8981\u7684\u5927\u5c0f,\u53ef\u4ee5\u4e91\u7f16\u8bd1\u4e00\u4efd\u81ea\u5b9a\u4e49\u56fa\u4ef6\n-- font_opposansm8_chinese\n-- font_opposansm10_chinese\n-- font_opposansm12_chinese\n-- font_opposansm14_chinese\n-- font_opposansm16_chinese\neink.setFont(eink.font_opposansm12_chinese)\neink.print(10, 20, \"LuatOS\")\n", "prefix": "eink.print"}, "eink.show": {"body": "eink.show(${1:x},${2:y},${3:noClear})", "description": "eink.show(x, y, noClear) - \u5c06\u7f13\u51b2\u533a\u56fe\u50cf\u8f93\u51fa\u5230\u5c4f\u5e55\n\u4f20\u5165\u503c\uff1a\nint x \u8f93\u51fa\u7684x\u5750\u6807,\u9ed8\u8ba40\nint y \u8f93\u51fa\u7684y\u5750\u6807,\u9ed8\u8ba40\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.show"}, "eink.draw": {"body": "eink.draw(${1:buff},${2:buff2},${3:noclear})", "description": "eink.draw(buff, buff2, noclear) - \u76f4\u63a5\u8f93\u51fa\u6570\u636e\u5230\u5c4f\u5e55,\u652f\u6301\u53cc\u8272\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u6307\u9488\nuserdata zbuff\u6307\u9488\nbool \u53ef\u9009\uff0c\u9ed8\u8ba4false\u3002\u5982\u679c\u4e3atrue\u5219\u4e0d\u8fdb\u884c\u6e05\u5c4f\uff0c\u76f4\u63a5\u5237\u4e0a\u65b0\u5185\u5bb9\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.draw"}, "eink.line": {"body": "eink.line(${1:x},${2:y},${3:x2},${4:y2},${5:colored})", "description": "eink.line(x, y, x2, y2, colored) - \u7f13\u51b2\u533a\u7ed8\u5236\u7ebf\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u70b9x\u5750\u6807\nint \u8d77\u70b9y\u5750\u6807\nint \u7ec8\u70b9x\u5750\u6807\nint \u7ec8\u70b9y\u5750\u6807\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.line(0, 0, 10, 20, 0)\n", "prefix": "eink.line"}, "eink.rect": {"body": "eink.rect(${1:x},${2:y},${3:x2},${4:y2},${5:colored},${6:fill})", "description": "eink.rect(x, y, x2, y2, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u77e9\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u9876\u70b9x\u5750\u6807\nint \u5de6\u4e0a\u9876\u70b9y\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9x\u5750\u6807\nint \u53f3\u4e0b\u9876\u70b9y\u5750\u6807\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.rect(0, 0, 10, 20)\neink.rect(0, 0, 10, 20,0, 1) -- Filled\n", "prefix": "eink.rect"}, "eink.circle": {"body": "eink.circle(${1:x},${2:y},${3:radius},${4:colored},${5:fill})", "description": "eink.circle(x, y, radius, colored, fill) - \u7f13\u51b2\u533a\u7ed8\u5236\u5706\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3x\u5750\u6807\nint \u5706\u5fc3y\u5750\u6807\nint \u534a\u5f84\nint \u9ed8\u8ba4\u662f0\nint \u662f\u5426\u586b\u5145,\u9ed8\u8ba4\u662f0,\u4e0d\u586b\u5145\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\neink.circle(0, 0, 10)\neink.circle(0, 0, 10, 1, 1) -- Filled\n", "prefix": "eink.circle"}, "eink.qrcode": {"body": "eink.qrcode(${1:x},${2:y},${3:str},${4:size})", "description": "eink.qrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.qrcode"}, "eink.bat": {"body": "eink.bat(${1:x},${2:y},${3:bat})", "description": "eink.bat(x, y, bat) - \u7f13\u51b2\u533a\u7ed8\u5236\u7535\u6c60\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u7535\u6c60\u7535\u538b,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.bat"}, "eink.weather_icon": {"body": "eink.weather_icon(${1:x},${2:y},${3:code})", "description": "eink.weather_icon(x, y, code) - \u7f13\u51b2\u533a\u7ed8\u5236\u5929\u6c14\u56fe\u6807\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nint \u5929\u6c14\u4ee3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.weather_icon"}, "eink.model": {"body": "eink.model(${1:m})", "description": "eink.model(m) - \u8bbe\u7f6e\u58a8\u6c34\u5c4f\u9a71\u52a8\u578b\u53f7\n\u4f20\u5165\u503c\uff1a\nint \u578b\u53f7\u540d\u79f0, \u4f8b\u5982 eink.model(eink.MODEL_1in54_V2)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "eink.model"}, "eink.drawXbm": {"body": "eink.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "eink.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\neink.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "eink.drawXbm"}, "eink.setCtx": {"body": "eink.setCtx(${1:index})", "description": "eink.setCtx(index) - \u5207\u6362\u989c\u8272\u753b\u677f, \u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u989c\u8272\u7d22\u5f15, \u9ed1\u8272\u4e3a0, \u7ea2\u8272\u4e3a1\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u9002\u5408\u591a\u8272\u58a8\u6c34\u5c4f, \u5bf9\u5355\u8272\u58a8\u6c34\u5c4f(\u53ea\u6709\u9ed1\u767d)\u7684\u65e0\u6548\neink.setCtx(1)\n-- \u5207\u6362\u540e, \u6240\u6709drawXXX\u90fd\u4f1a\u64cd\u4f5c\u5728\u6307\u5b9a\u989c\u8272\u7684\u753b\u677f\n", "prefix": "eink.setCtx"}, "eink.async": {"body": "eink.async(${1:index})", "description": "eink.async(index) - \u5f02\u6b65\u65b9\u5f0f\uff0c\u4f7f\u7528\u6b64\u65b9\u5f0f\u9700\u8981\u5148 require(\"sysplus\") \u4e4b\u540e eink.clear().wait() eink.show().wait()\u8fdb\u884c\u5237\u5c4f\n\u4f20\u5165\u503c\uff1a\nint 1 \u4f7f\u7528\u5f02\u6b65\n\u4f8b\u5b50\uff1a\n eink.async(1)\n spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,1)\n eink.init(eink.MODEL_1in54,\n {port = \"device\",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},\n spi_eink)\n eink.setWin(200, 200, 0)\n sys.wait(100)\n log.info(\"e-paper 1.54\", \"Testing Go\")\n eink.print(30, 20, \"LuatOS-AIR780E\",0x00)\n eink.show().wait()\n log.info(\"e-paper 1.54\", \"Testing End\")\n", "prefix": "eink.async"}, "errDump.dump": {"body": "errDump.dump(${1:zbuff},${2:type},${3:isDelete})", "description": "errDump.dump(zbuff, type, isDelete) - \u624b\u52a8\u8bfb\u53d6\u5f02\u5e38\u65e5\u5fd7\uff0c\u4e3b\u8981\u7528\u4e8e\u7528\u6237\u5c06\u65e5\u5fd7\u53d1\u9001\u7ed9\u81ea\u5df1\u7684\u670d\u52a1\u5668\u800c\u4e0d\u662fIOT\u5e73\u53f0\uff0c\u5982\u679c\u5728errDump.config\u914d\u7f6e\u4e86\u5468\u671f\u4e0a\u4f20\uff0c\u5219\u4e0d\u80fd\u4f7f\u7528\u672c\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nzbuff \u65e5\u5fd7\u4fe1\u606f\u7f13\u5b58\uff0c\u5982\u679c\u4e3anil\u5c31\u4e0d\u4f1a\u8bfb\u51fa\uff0c\u4e00\u822c\u5f53\nint \u65e5\u5fd7\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709errDump.TYPE_SYS\u548cerrDump.TYPE_USR\nboolean \u662f\u5426\u5220\u9664\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nboolean true\u8868\u793a\u672c\u6b21\u8bfb\u53d6\u524d\u5e76\u6ca1\u6709\u5199\u5165\u6570\u636e\uff0cfalse\u53cd\u4e4b\uff0c\u5728\u5220\u9664\u65e5\u5fd7\u524d\uff0c\u6700\u597d\u518d\u8bfb\u4e00\u4e0b\u786e\u4fdd\u6ca1\u6709\u65b0\u7684\u6570\u636e\u5199\u5165\u4e86\n\u4f8b\u5b50\uff1a\nlocal result = errDump.dump(buff, errDump.TYPE_SYS, false) --\u8bfb\u51fa\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\nlocal result = errDump.dump(nil, errDump.TYPE_SYS, true) --\u6e05\u9664\u7cfb\u7edf\u8bb0\u5f55\u7684\u5f02\u5e38\u65e5\u5fd7\n", "prefix": "errDump.dump"}, "errDump.record": {"body": "errDump.record(${1:string})", "description": "errDump.record(string) - \u5199\u5165\u7528\u6237\u7684\u5f02\u5e38\u65e5\u5fd7\uff0c\u6ce8\u610f\u6700\u5927\u53ea\u67094KB\uff0c\u8d85\u8fc7\u90e8\u5206\u65b0\u7684\u8986\u76d6\u65e7\u7684\uff0c\u5f00\u542f\u81ea\u52a8\u4e0a\u4f20\u540e\u4f1a\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\n\u4f20\u5165\u503c\uff1a\nstring \u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.record(\"socket long time no connect\") --\u8bb0\u5f55\u4e0b\"socket long time no connect\"\n", "prefix": "errDump.record"}, "errDump.config": {"body": "errDump.config(${1:enable},${2:period},${3:user_flag},${4:custom_id},${5:host},${6:port})", "description": "errDump.config(enable, period, user_flag, custom_id, host, port) - \u914d\u7f6e\u5173\u952e\u65e5\u5fd7\u4e0a\u4f20IOT\u5e73\u53f0\uff0c\u8fd9\u91cc\u7684\u65e5\u5fd7\u5305\u62ec\u5f15\u8d77luavm\u5f02\u5e38\u9000\u51fa\u7684\u65e5\u5fd7\u548c\u7528\u6237\u901a\u8fc7record\u5199\u5165\u7684\u65e5\u5fd7\uff0c\u7c7b\u4f3c\u4e8eair\u7684errDump\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u542f\u7528\u8bb0\u5f55\u529f\u80fd\uff0cfalse\u7684\u8bdd\u5c06\u4e0d\u4f1a\u8bb0\u5f55\u4efb\u4f55\u65e5\u5fd7\nint \u5b9a\u65f6\u4e0a\u4f20\u5468\u671f\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4600\u79d2\uff0c\u8fd9\u4e2a\u662f\u81ea\u52a8\u4e0a\u4f20\u65f6\u5019\u540e\u7684\u91cd\u8bd5\u65f6\u95f4\u65f6\u95f4\uff0c\u5728\u5f00\u673a\u540e\u6216\u8005\u6709record\u64cd\u4f5c\u540e\u4f1a\u5f88\u5feb\u5c1d\u8bd5\u4e0a\u4f20\u5230\u5408\u5b99IOT\u5e73\u53f0\u4e00\u6b21\uff0c\u5982\u679c\u4e3a0\uff0c\u5219\u4e0d\u4f1a\u4e0a\u4f20\uff0c\u7531\u7528\u6237dump\u540e\u81ea\u5df1\u4e0a\u4f20\u81ea\u5df1\u7684\u5e73\u53f0\nstring \u7528\u6237\u7684\u7279\u6b8a\u6807\u8bc6\uff0c\u53ef\u4ee5\u4e3a\u7a7a\nstring \u8bbe\u5907\u8bc6\u522b\u53f7, 4G\u8bbe\u5907\u9ed8\u8ba4\u662fimei,\u5176\u4ed6\u8bbe\u5907\u9ed8\u8ba4\u662fmcu.unique_id\nstring \u670d\u52a1\u5668\u57df\u540d,\u9ed8\u8ba4dev_msg1.openluat.com\nint \u670d\u52a1\u5668\u7aef\u53e3,\u9ed8\u8ba4\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nerrDump.config(true, 3600, \"12345678\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f1a\u5728imei\u540e\u9644\u52a0\u4e0a12345678\nerrDump.config(false) --\u5173\u95ed\u8bb0\u5f55\u529f\u80fd\uff0c\u4e0d\u518d\u4e0a\u4f20\nerrDump.config(true, 0) --\u8bb0\u5f55\uff0c\u4f46\u662f\u4e0d\u4f1a\u4e3b\u52a8\u4e0a\u4f20\uff0c\u7531\u7528\u6237\u5b9e\u73b0\u4e0a\u4f20\u529f\u80fd\n\n-- 2023.09.22\u65b0\u589ecustom_id\u53c2\u6570\nerrDump.config(true, 3600, nil, \"ABC\") --\u4e00\u4e2a\u5c0f\u65f6\u5c1d\u8bd5\u4e0a\u6b21\u4e00\u6b21\uff0c\u4e0a\u4f20\u65f6\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u8bbe\u5907\u8bc6\u522b\u53f7ABC\n\n-- 2023.12.8 \u65b0\u589ehost\u548cport\u53c2\u6570\nerrDump.config(true, 3600, nil, nil, \"dev_msg1.openluat.com\", 12425)\n", "prefix": "errDump.config"}, "fastlz.compress": {"body": "fastlz.compress(${1:data},${2:level})", "description": "fastlz.compress(data, level) - \u5feb\u901f\u538b\u7f29\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nint \u538b\u7f29\u7ea7\u522b,\u9ed8\u8ba41, \u53ef\u90091\u6216\u80052, 2\u7684\u538b\u7f29\u6bd4\u66f4\u9ad8(\u6709\u65f6\u5019)\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u538b\u7f29\u8fc7\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u5982\u4e0b\n-- \u7cfb\u7edf\u5185\u5b58, \u56fa\u5b9a32k\n-- lua\u5185\u5b58, \u539f\u59cb\u6570\u636e\u7684\u5927\u5c0f\u76841.05\u500d,\u6700\u5c0f\u5360\u75281024\u5b57\u8282.\n", "prefix": "fastlz.compress"}, "fastlz.uncompress": {"body": "fastlz.uncompress(${1:data},${2:maxout})", "description": "fastlz.uncompress(data, maxout) - \u5feb\u901f\u89e3\u538b\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e\nint \u89e3\u538b\u540e\u7684\u6700\u5927\u5927\u5c0f, \u9ed8\u8ba4\u662f4k, \u53ef\u6309\u9700\u8c03\u6574\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n", "prefix": "fastlz.uncompress"}, "fatfs.mount": {"body": "fatfs.mount(${1:mode},${2:mount_point},${3:spiid_or_spidevice},${4:spi_cs},${5:spi_speed},${6:power_pin},${7:power_on_delay},${8:auto_format})", "description": "fatfs.mount(mode,mount_point, spiid_or_spidevice, spi_cs, spi_speed, power_pin, power_on_delay, auto_format) - \u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nint fatfs\u6a21\u5f0f,\u53ef\u9009fatfs.SPI,fatfs.SDIO,fatfs.RAM,fatfs.USB\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f /fatfs\nint \u4f20\u5165spi device\u6307\u9488,\u6216\u8005spi\u7684id,\u6216\u8005sdio\u7684id\nint \u7247\u9009\u811a\u7684GPIO \u53f7, spi\u6a21\u5f0f\u6709\u6548,\u82e5\u524d\u4e00\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint SPI\u6700\u9ad8\u901f\u5ea6,\u9ed8\u8ba410M, \u82e5\u524d2\u4e2a\u53c2\u6570\u4f20\u7684\u662fspi device,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u63a7\u5236\u811a,TF\u5361\u521d\u59cb\u524d\u5148\u62c9\u4f4e\u590d\u4f4d\u518d\u62c9\u9ad8,\u5982\u679c\u6ca1\u6709,\u6216\u8005\u662f\u5185\u7f6e\u7535\u6e90\u63a7\u5236\u65b9\u5f0f,\u8fd9\u4e2a\u53c2\u6570\u5c31\u4e0d\u9700\u8981\u4f20\nint TF\u5361\u7535\u6e90\u590d\u4f4d\u8fc7\u7a0b\u65f6\u95f4,\u5355\u4f4dms,\u9ed8\u8ba4\u503c\u662f1\nbool \u6302\u8f7d\u5931\u8d25\u662f\u5426\u5c1d\u8bd5\u683c\u5f0f\u5316,\u9ed8\u8ba4\u662ftrue,\u5373\u81ea\u52a8\u683c\u5f0f\u5316. \u672c\u53c2\u6570\u57282023.8.16\u6dfb\u52a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nstring \u5931\u8d25\u7684\u539f\u56e0\n\u4f8b\u5b50\uff1a\n-- \u65b9\u6cd51, \u4f7f\u7528SPI\u6a21\u5f0f\n local spiId = 2\n local result = spi.setup(\n spiId,--\u4e32\u53e3id\n 255, -- \u4e0d\u4f7f\u7528\u9ed8\u8ba4CS\u811a\n 0,--CPHA\n 0,--CPOL\n 8,--\u6570\u636e\u5bbd\u5ea6\n 400*1000 -- \u521d\u59cb\u5316\u65f6\u4f7f\u7528\u8f83\u4f4e\u7684\u9891\u7387\n )\n local TF_CS = pin.PB3\n gpio.setup(TF_CS, 1)\n --fatfs.debug(1) -- \u82e5\u6302\u8f7d\u5931\u8d25,\u53ef\u4ee5\u5c1d\u8bd5\u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u67e5\u627e\u539f\u56e0\n -- \u63d0\u9192, \u82e5TF/SD\u6a21\u5757\u5e26\u7535\u5e73\u8f6c\u6362, \u901a\u5e38\u4e0d\u652f\u630110M\u4ee5\u4e0a\u7684\u6ce2\u7279\u7387!!\n fatfs.mount(fatfs.SPI,\"SD\", spiId, TF_CS, 24000000)\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n -- \u5f80\u4e0b\u7684\u64cd\u4f5c, \u4f7f\u7528 io.open(\"/sd/xxx\", \"w+\") \u7b49io\u5e93\u7684API\u5c31\u53ef\u4ee5\u4e86\n", "prefix": "fatfs.mount"}, "fatfs.unmount": {"body": "fatfs.unmount(${1:mount_point})", "description": "fatfs.unmount(mount_point) - \u53d6\u6d88\u6302\u8f7dfatfs\n\u4f20\u5165\u503c\uff1a\nstring \u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u7684\u6302\u8f7d\u70b9, \u9ed8\u8ba4\u662f fatfs,\u5fc5\u987b\u4e0efatfs.mount\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0, \u5426\u5219\u8fd4\u56de\u5931\u8d25\u7801\n\u4f8b\u5b50\uff1a\nfatfs.mount(\"SD\")\n", "prefix": "fatfs.unmount"}, "fatfs.getfree": {"body": "fatfs.getfree(${1:mount_point})", "description": "fatfs.getfree(mount_point) - \u83b7\u53d6\u53ef\u7528\u7a7a\u95f4\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9, \u9700\u8981\u8ddffatfs.mount\u4f20\u5165\u7684\u503c\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\ntable \u82e5\u6210\u529f\u4f1a\u8fd4\u56detable,\u5426\u5219\u8fd4\u56denil\nint \u5bfc\u81f4\u5931\u8d25\u7684\u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- table\u5305\u542b\u7684\u5185\u5bb9\u6709\n-- total_sectors \u603b\u6247\u533a\u6570\u91cf\n-- free_sectors \u7a7a\u95f2\u6247\u533a\u6570\u91cf\n-- total_kb \u603b\u5b57\u8282\u6570,\u5355\u4f4dkb\n-- free_kb \u7a7a\u95f2\u5b57\u8282\u6570, \u5355\u4f4dkb\n-- \u6ce8\u610f,\u5f53\u524d\u6247\u533a\u5927\u5c0f\u56fa\u5b9a\u5728512\u5b57\u8282\n\n local data, err = fatfs.getfree(\"SD\")\n if data then\n log.info(\"fatfs\", \"getfree\", json.encode(data))\n else\n log.info(\"fatfs\", \"err\", err)\n end\n", "prefix": "fatfs.getfree"}, "fatfs.debug": {"body": "fatfs.debug(${1:value})", "description": "fatfs.debug(value) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,true\u4ee3\u8868\u8fdb\u5165\u8c03\u8bd5\u6a21\u5f0f,\u589e\u52a0\u8c03\u8bd5\u65e5\u5fd7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "fatfs.debug"}, "fdb.kvdb_init": {"body": "fdb.kvdb_init(${1:name},${2:partition})", "description": "fdb.kvdb_init(name, partition) - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u5e93\u540d,\u5f53\u524d\u4ec5\u652f\u6301env\nstring FAL\u5206\u533a\u540d,\u5f53\u524d\u4ec5\u652f\u6301onchip_fdb\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- fdb\u5e93\u57fa\u4e8e flashdb , \u518d\u6b21\u8868\u793a\u611f\u8c22.\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fdb.kvdb_init \u540e \u6267\u884c fdb.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fdb.kvdb_init"}, "fdb.kv_set": {"body": "fdb.kv_set(${1:key},${2:value})", "description": "fdb.kv_set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u5927255\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nnumber \u7b2c\u4e8c\u4e2a\u4e3a\u8fd4\u56de\u4e3aflashdb\u7684fdb_kv_set_blob\u8fd4\u56de\u8be6\u7ec6\u72b6\u6001,0\uff1a\u65e0\u9519\u8bef 1:\u64e6\u9664\u9519\u8bef 2:\u8bfb\u9519\u8bef 3:\u5199\u9519\u8bef 4:\u672a\u627e\u5230 5:kv\u540d\u5b57\u9519\u8bef 6:kv\u540d\u5b57\u5b58\u5728 7:\u5df2\u4fdd\u5b58 8:\u521d\u59cb\u5316\u9519\u8bef\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_set(\"wendal\", \"goodgoodstudy\"))\nend\n", "prefix": "fdb.kv_set"}, "fdb.kv_get": {"body": "fdb.kv_get(${1:key},${2:skey})", "description": "fdb.kv_get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fdb.kv_get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_get(\"wendal\"))\nend\n", "prefix": "fdb.kv_get"}, "fdb.kv_del": {"body": "fdb.kv_del(${1:key})", "description": "fdb.kv_del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fdb.kvdb_init(\"env\", \"onchip_fdb\") then\n log.info(\"fdb\", fdb.kv_del(\"wendal\"))\nend\n", "prefix": "fdb.kv_del"}, "fdb.kv_clr": {"body": "fdb.kv_clr()", "description": "fdb.kv_clr() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfdb.kv_clr()\n", "prefix": "fdb.kv_clr"}, "fdb.kv_iter": {"body": "fdb.kv_iter()", "description": "fdb.kv_iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_iter"}, "fdb.kv_next": {"body": "fdb.kv_next(${1:iter})", "description": "fdb.kv_next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fdb.kv_iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fdb.kv_iter()\nif iter then\n while 1 do\n local k = fdb.kv_next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fdb.kv_get(k))\n end\nend\n", "prefix": "fdb.kv_next"}, "fdb.kv_stat": {"body": "fdb.kv_stat()", "description": "fdb.kv_stat() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2022.07.23 \u6dfb\u52a0\nlocal used,maxs,kv_count = fdb.kv_stat()\nlog.info(\"fdb\", \"kv\", used,maxs,kv_count)\n", "prefix": "fdb.kv_stat"}, "fonts.list": {"body": "fonts.list(${1:tp})", "description": "fonts.list(tp) - \u8fd4\u56de\u56fa\u4ef6\u652f\u6301\u7684\u5b57\u4f53\u5217\u8868\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\ntable \u5b57\u4f53\u5217\u8868\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-12\nif fonts.list then\n log.info(\"fonts\", \"u8g2\", json.encode(fonts.list(\"u8g2\")))\nend\n", "prefix": "fonts.list"}, "fonts.u8g2_get": {"body": "fonts.u8g2_get(${1:name},${2:tp})", "description": "fonts.u8g2_get(name, tp) - \u83b7\u53d6\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0, \u4f8b\u5982opposansm8_chinese unifont_t_symbols\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2, \u8fd8\u53ef\u4ee5\u662flvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\noppo_8 = fonts.get(\"opposansm8_chinese\", \"u8g2\")\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n-- \u82e5\u4f7f\u7528\u4e91\u7f16\u8bd1\u7684\u81ea\u5b9a\u4e49\u5b57\u5e93, \u4f7f\u7528\u65b9\u5f0f\u5982\u4e0b\noppo_8 = fonts.get(\"oppo_bold_8\", \"u8g2\") -- oppo_bold_8 \u662f\u4e91\u7f16\u8bd1\u754c\u9762\u7684\u5b57\u5e93\u547d\u540d\nif oppo_8 then\n u8g2.SetFont(oppo_8)\nelse\n log.warn(\"fonts\", \"no such font opposansm8_chinese\")\nend\n", "prefix": "fonts.u8g2_get"}, "fonts.u8g2_load": {"body": "fonts.u8g2_load(${1:path},${2:path})", "description": "fonts.u8g2_load(path, path) - \u4ece\u6587\u4ef6\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84, \u4f8b\u5982 /luadb/abc.bin\nstring \u7c7b\u578b, \u9ed8\u8ba4 u8g2. \u4e5f\u652f\u6301lvgl\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u5b57\u4f53\u5b58\u653e,\u8fd4\u56de\u5b57\u4f53\u6307\u9488, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- API\u65b0\u589e\u4e8e2022-07-11\n-- \u63d0\u9192: \u82e5\u6587\u4ef6\u4f4d\u4e8e/luadb\u4e0b, \u4e0d\u9700\u8981\u5360\u7528\u5185\u5b58\n-- \u82e5\u6587\u4ef6\u5904\u4e8e\u5176\u4ed6\u8def\u5f84, \u4f8b\u5982tf/sd\u5361, spi flash, \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5230\u5185\u5b58, \u6d88\u8017lua vm\u7684\u5185\u5b58\u7a7a\u95f4\n-- \u52a0\u8f7d\u540e\u8bf7\u9002\u5f53\u5f15\u7528, \u4e0d\u5fc5\u53cd\u590d\u52a0\u8f7d\u540c\u4e00\u4e2a\u5b57\u4f53\u6587\u4ef6\noppo12 = fonts.load(\"/luadb/oppo12.bin\")\nif oppo12 then\n u8g2.SetFont(oppo12)\nelse\n log.warn(\"fonts\", \"no such font file oppo12.bin\")\nend\n", "prefix": "fonts.u8g2_load"}, "fota.init": {"body": "fota.init(${1:storge_location},${2:len},${3:param1},${4:param2})", "description": "fota.init(storge_location, len, param1, param2) - \u521d\u59cb\u5316fota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nint/string fota\u6570\u636e\u5b58\u50a8\u7684\u8d77\u59cb\u4f4d\u7f6e
\u5982\u679c\u662fint\uff0c\u5219\u662f\u7531\u82af\u7247\u5e73\u53f0\u5177\u4f53\u5224\u65ad
\u5982\u679c\u662fstring\uff0c\u5219\u5b58\u50a8\u5728\u6587\u4ef6\u7cfb\u7edf\u4e2d
\u5982\u679c\u4e3anil\uff0c\u5219\u7531\u5e95\u5c42\u51b3\u5b9a\u5b58\u50a8\u4f4d\u7f6e\nint \u6570\u636e\u5b58\u50a8\u7684\u6700\u5927\u7a7a\u95f4\nuserdata param1\uff0c\u5982\u679c\u6570\u636e\u5b58\u50a8\u5728spiflash\u65f6,\u4e3aspi_device\nint param2\uff0c\u76ee\u524d\u53ea\u7528\u4e8e\u5916\u90e8flash\u66f4\u65b0\u65f6, spiflash\u7535\u6e90\u63a7\u5236\u811a\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316fota\u6d41\u7a0b\nlocal result = fota.init(0, 0x00300000, spi_device) --\u7531\u4e8e105\u7684flash\u4ece0x01000000\u5f00\u59cb\uff0c\u6240\u4ee50\u5c31\u662f\u5916\u90e8spiflash\nlocal result = fota.init() --ec618\u7cfb\u5217/EC7XX\u7cfb\u5217\u4f7f\u7528\u56fa\u5b9a\u5185\u90e8\u5730\u5740\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u53c2\u6570\u4e86\nlocal result = fota.init(0xe0000000, 0, spi_device, 27) --EC7XX\u7cfb\u5217\u5141\u8bb8\u4f7f\u7528\u5916\u90e8flash\u66f4\u65b0\uff0c\u4f46\u662f\u5730\u5740\u5fc5\u987b\u52a0\u4e0a0xe0000000\u7684\u504f\u79fb\n", "prefix": "fota.init"}, "fota.wait": {"body": "fota.wait()", "description": "fota.wait() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u51c6\u5907\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u51c6\u5907\u597d\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal isDone = fota.wait()\n", "prefix": "fota.wait"}, "fota.run": {"body": "fota.run(${1:buff},${2:offset},${3:len})", "description": "fota.run(buff, offset, len) - \u5199\u5165fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nzbuff/string fota\u6570\u636e\uff0c\u5c3d\u91cf\u7528zbuff\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u957f\u5ea6,\u4f20\u5165zbuff\u65f6\u6709\u6548,\u9ed8\u8ba4\u662fzbuff:used()\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.run(buf) -- \u5199\u5165fota\u6d41\u7a0b\n\n-- \u63d0\u793a: \uff0c\u5982\u679c\u4f20\u5165\u7684\u662fzbuff\uff0c\u5199\u5165\u6210\u529f\u540e\uff0c\u8bf7\u81ea\u884c\u6e05\u7a7azbuff\u5185\u7684\u6570\u636e\n\n-- 2024.4.3\u65b0\u589eoffset, len\u53c2\u6570, \u4ec5\u5bf9zbuff\u6709\u6548\nfota.run(buff, 0, 1024)\n", "prefix": "fota.run"}, "fota.file": {"body": "fota.file(${1:path})", "description": "fota.file(path) - \u4ece\u6307\u5b9a\u6587\u4ef6\u8bfb\u53d6fota\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u63a5\u6536\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\nint \u8fd8\u672a\u5199\u5165\u7684\u6570\u636e\u91cf\uff0c\u8d85\u8fc764K\u5fc5\u987b\u505a\u7b49\u5f85\n\u4f8b\u5b50\uff1a\nlocal result, isDone, cache = fota.file(\"/xxx.bin\") -- \u5199\u5165fota\u6d41\u7a0b\n-- \u672cAPI\u4e8e2023.03.23 \u6dfb\u52a0\n", "prefix": "fota.file"}, "fota.isDone": {"body": "fota.isDone()", "description": "fota.isDone() - \u7b49\u5f85\u5e95\u5c42fota\u6d41\u7a0b\u5b8c\u6210\n\u8fd4\u56de\u503c\uff1a\nboolean \u6709\u5f02\u5e38\u8fd4\u56defalse\uff0c\u65e0\u5f02\u5e38\u8fd4\u56detrue\nboolean \u5199\u5165\u5230\u6700\u540e\u4e00\u5757\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlocal result, isDone = fota.isDone()\n", "prefix": "fota.isDone"}, "fota.finish": {"body": "fota.finish(${1:is_ok})", "description": "fota.finish(is_ok) - \u7ed3\u675ffota\u6d41\u7a0b\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u5b8c\u6574\u8d70\u5b8c\u6d41\u7a0b\uff0ctrue \u8868\u793a\u6b63\u786e\u8d70\u5b8c\u6d41\u7a0b\u4e86\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7ed3\u675ffota\u6d41\u7a0b\nlocal result = fota.finish(true)\n", "prefix": "fota.finish"}, "fs.fsstat": {"body": "fs.fsstat(${1:path})", "description": "fs.fsstat(path) - \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84,\u9ed8\u8ba4\"/\",\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nboolean \u83b7\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u603b\u7684block\u6570\u91cf\nint \u5df2\u4f7f\u7528\u7684block\u6570\u91cf\nint block\u7684\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nstring \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b,\u4f8b\u5982lfs\u4ee3\u8868littlefs\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u6839\u5206\u533a\u7684\u4fe1\u606f\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\n", "prefix": "fs.fsstat"}, "fs.fsize": {"body": "fs.fsize(${1:path})", "description": "fs.fsize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u5927\u5c0f,\u82e5\u83b7\u53d6\u5931\u8d25\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370main.luac\u7684\u5927\u5c0f\nlog.info(\"fsize\", fs.fsize(\"/main.luac\"))\n", "prefix": "fs.fsize"}, "fskv.init": {"body": "fskv.init()", "description": "fskv.init() - \u521d\u59cb\u5316kv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", \"kv\u6570\u636e\u5e93\u521d\u59cb\u5316\u6210\u529f\")\nend\n\n-- \u5173\u4e8e\u6e05\u7a7afdb\u5e93\n-- \u4e0b\u8f7d\u5de5\u5177\u662f\u6ca1\u6709\u63d0\u4f9b\u76f4\u63a5\u6e05\u9664fdb\u6570\u636e\u7684\u9014\u5f84\u7684, \u4f46\u6709\u529e\u6cd5\u89e3\u51b3\n-- \u5199\u4e00\u4e2amain.lua, \u6267\u884c fskv.kvdb_init \u540e \u6267\u884c fskv.clear() \u5373\u53ef\u5168\u6e05fdb\u6570\u636e.\n", "prefix": "fskv.init"}, "fskv.set": {"body": "fskv.set(${1:key},${2:value})", "description": "fskv.set(key, value) - \u8bbe\u7f6e\u4e00\u5bf9kv\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u4e0d\u80fdnil, \u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662fnil, function, userdata, task\nlog.info(\"fdb\", fskv.set(\"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.set(\"upgrade\", true))\nlog.info(\"fdb\", fskv.set(\"timer\", 1))\nlog.info(\"fdb\", fskv.set(\"bigd\", {name=\"wendal\",age=123}))\n", "prefix": "fskv.set"}, "fskv.sett": {"body": "fskv.sett(${1:key},${2:skey},${3:value})", "description": "fskv.sett(key, skey, value) - \u8bbe\u7f6etable\u5185\u7684\u952e\u503c\u5bf9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring table\u7684key\u540d\u79f0, \u5fc5\u586b, \u4e0d\u80fd\u662f\u7a7a\u5b57\u7b26\u4e32\nstring \u7528\u6237\u6570\u636e,\u5fc5\u586b,\u652f\u6301\u5b57\u7b26\u4e32/\u6570\u503c/table/\u5e03\u5c14\u503c, \u6570\u636e\u957f\u5ea6\u6700\u59274095\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse/nil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u57282023.7.26\u65b0\u589e,\u6ce8\u610f\u4e0eset\u51fd\u6570\u533a\u522b\n-- \u8bbe\u7f6e\u6570\u636e, \u5b57\u7b26\u4e32,\u6570\u503c,table,\u5e03\u5c14\u503c,\u5747\u53ef\n-- \u4f46\u4e0d\u53ef\u4ee5\u662ffunction, userdata, task\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"wendal\", \"goodgoodstudy\"))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"upgrade\", true))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"timer\", 1))\nlog.info(\"fdb\", fskv.sett(\"mytable\", \"bigd\", {name=\"wendal\",age=123}))\n\n-- \u4e0b\u5217\u8bed\u53e5\u5c06\u6253\u5370\u51fa4\u4e2a\u5143\u7d20\u7684table\nlog.info(\"fdb\", fskv.get(\"mytable\"), json.encode(fskv.get(\"mytable\")))\n-- \u6ce8\u610f: \u5982\u679ckey\u4e0d\u5b58\u5728, \u6216\u8005\u539f\u672c\u7684\u503c\u4e0d\u662ftable\u7c7b\u578b,\u5c06\u4f1a\u5b8c\u5168\u8986\u76d6\n-- \u4f8b\u5982\u4e0b\u5217\u5199\u6cd5,\u6700\u7ec8\u83b7\u53d6\u5230\u7684\u662ftable,\u800c\u975e\u7b2c\u4e00\u884c\u7684\u5b57\u7b26\u4e32\nlog.info(\"fdb\", fskv.set(\"mykv\", \"123\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"age\", \"123\")) -- \u4fdd\u5b58\u7684\u5c06\u662f {age:\"123\"}\n\n\n-- \u5982\u679c\u8bbe\u7f6e\u7684\u6570\u636e\u586bnil, \u4ee3\u8868\u5220\u9664\u5bf9\u5e94\u7684key\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\", \"wendal\"))\nlog.info(\"fdb\", fskv.sett(\"mykv\", \"name\")) -- \u76f8\u5f53\u4e8e\u5220\u9664\n-- \n", "prefix": "fskv.sett"}, "fskv.get": {"body": "fskv.get(${1:key},${2:skey})", "description": "fskv.get(key, skey) - \u6839\u636ekey\u83b7\u53d6\u5bf9\u5e94\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\nstring \u53ef\u9009\u7684\u6b21\u7ea7key,\u4ec5\u5f53\u539f\u59cb\u503c\u4e3atable\u65f6\u6709\u6548,\u76f8\u5f53\u4e8e fskv.get(key)[skey]\n\u8fd4\u56de\u503c\uff1a\nany \u5b58\u5728\u5219\u8fd4\u56de\u6570\u636e,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nif fskv.init() then\n log.info(\"fdb\", fskv.get(\"wendal\"))\nend\n\n-- \u82e5\u9700\u8981\"\u9ed8\u8ba4\u503c\", \u5bf9\u5e94\u975ebool\u5e03\u5c14\u503c, \u53ef\u4ee5\u8fd9\u6837\u5199\nlocal v = fskv.get(\"wendal\") or \"123\"\n", "prefix": "fskv.get"}, "fskv.del": {"body": "fskv.del(${1:key})", "description": "fskv.del(key) - \u6839\u636ekey\u5220\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring key\u7684\u540d\u79f0,\u5fc5\u586b,\u4e0d\u80fd\u7a7a\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"fdb\", fskv.del(\"wendal\"))\n", "prefix": "fskv.del"}, "fskv.clear": {"body": "fskv.clear()", "description": "fskv.clear() - \u6e05\u7a7a\u6574\u4e2akv\u6570\u636e\u5e93\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nfskv.clear()\n", "prefix": "fskv.clear"}, "fskv.iter": {"body": "fskv.iter()", "description": "fskv.iter() - kv\u6570\u636e\u5e93\u8fed\u4ee3\u5668\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u8fed\u4ee3\u5668\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fdb\", k, \"value\", fskv.kv_get(k))\n end\nend\n", "prefix": "fskv.iter"}, "fskv.next": {"body": "fskv.next(${1:iter})", "description": "fskv.next(iter) - kv\u8fed\u4ee3\u5668\u83b7\u53d6\u4e0b\u4e00\u4e2akey\n\u4f20\u5165\u503c\uff1a\nuserdata fskv.iter()\u8fd4\u56de\u7684\u6307\u9488\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32key\u503c, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6e05\u7a7a\nlocal iter = fskv.iter()\nif iter then\n while 1 do\n local k = fskv.next(iter)\n if not k then\n break\n end\n log.info(\"fskv\", k, \"value\", fskv.get(k))\n end\nend\n", "prefix": "fskv.next"}, "fskv.status": {"body": "fskv.status()", "description": "fskv.status() - \u83b7\u53d6kv\u6570\u636e\u5e93\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5df2\u4f7f\u7528\u7684\u7a7a\u95f4,\u5355\u4f4d\u5b57\u8282\nint \u603b\u53ef\u7528\u7a7a\u95f4, \u5355\u4f4d\u5b57\u8282\nint \u603bkv\u952e\u503c\u5bf9\u6570\u91cf, \u5355\u4f4d\u4e2a\n\u4f8b\u5b50\uff1a\nlocal used, total,kv_count = fskv.status()\nlog.info(\"fdb\", \"kv\", used,total,kv_count)\n", "prefix": "fskv.status"}, "ftp.login": {"body": "ftp.login(${1:adapter},${2:ip_addr},${3:port},${4:username},${5:password})", "description": "ftp.login(adapter,ip_addr,port,username,password) - FTP\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring ip_addr \u5730\u5740\nstring port \u7aef\u53e3,\u9ed8\u8ba421\nstring username \u7528\u6237\u540d\nstring password \u5bc6\u7801\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp_login = ftp.login(nil,\"xxx\")\n", "prefix": "ftp.login"}, "ftp.command": {"body": "ftp.command(${1:cmd})", "description": "ftp.command(cmd) - FTP\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nstring cmd \u547d\u4ee4 \u76ee\u524d\u652f\u6301:NOOP SYST TYPE PWD MKD CWD CDUP RMD DELE LIST\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\n // \u7a7a\u64cd\u4f5c\uff0c\u9632\u6b62\u8fde\u63a5\u65ad\u6389\n print(ftp.command(\"NOOP\").wait())\n // \u62a5\u544a\u8fdc\u7a0b\u7cfb\u7edf\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\n print(ftp.command(\"SYST\").wait())\n // \u6307\u5b9a\u6587\u4ef6\u7c7b\u578b\n print(ftp.command(\"TYPE I\").wait())\n // \u663e\u793a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u540d\n print(ftp.command(\"PWD\").wait())\n // \u521b\u5efa\u76ee\u5f55\n print(ftp.command(\"MKD QWER\").wait())\n // \u6539\u53d8\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\n print(ftp.command(\"CWD /QWER\").wait())\n // \u8fd4\u56de\u4e0a\u4e00\u5c42\u76ee\u5f55\n print(ftp.command(\"CDUP\").wait())\n // \u5220\u9664\u76ee\u5f55\n print(ftp.command(\"RMD QWER\").wait())\n // \u83b7\u53d6\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\u5217\u8868\n print(ftp.command(\"LIST\").wait())\n // \u5220\u9664\u6587\u4ef6\n print(ftp.command(\"DELE /1/12222.txt\").wait())\n", "prefix": "ftp.command"}, "ftp.pull": {"body": "ftp.pull(${1:local_name},${2:remote_name})", "description": "ftp.pull(local_name,remote_name) - FTP\u6587\u4ef6\u4e0b\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.pull(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.pull"}, "ftp.push": {"body": "ftp.push(${1:local_name},${2:remote_name})", "description": "ftp.push(local_name,remote_name) - FTP\u6587\u4ef6\u4e0a\u4f20\n\u4f20\u5165\u503c\uff1a\nstring local_name \u672c\u5730\u6587\u4ef6\nstring remote_name \u670d\u52a1\u5668\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.push(\"/1222.txt\",\"/1222.txt\").wait()\n", "prefix": "ftp.push"}, "ftp.close": {"body": "ftp.close()", "description": "ftp.close() - FTP\u5ba2\u6237\u7aef\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nbool/string \u6210\u529f\u8fd4\u56detrue \u5931\u8d25\u8fd4\u56destring\n\u4f8b\u5b50\uff1a\nftp.close().wait()\n", "prefix": "ftp.close"}, "ftp.debug": {"body": "ftp.debug(${1:onoff})", "description": "ftp.debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "ftp.debug"}, "sm.sm2encrypt": {"body": "sm.sm2encrypt(${1:pkx},${2:pky},${3:data},${4:mode},${5:mode2})", "description": "sm.sm2encrypt(pkx,pky,data, mode, mode2) - sm2\u7b97\u6cd5\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5x,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5y,\u5fc5\u9009. HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u6700\u957f32\u5b57\u8282, \u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32, \u539f\u6837\u8f93\u51fa,\u672a\u7ecfHEX\u8f6c\u6362. \u82e5\u52a0\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2encrypt"}, "sm.sm2decrypt": {"body": "sm.sm2decrypt(${1:private},${2:data},${3:mode},${4:mode2})", "description": "sm.sm2decrypt(private,data,mode,mode2) - sm2\u7b97\u6cd5\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nboolean \u8f93\u51fa\u6a21\u5f0f,\u9ed8\u8ba4false. false-GMSSL\u9ed8\u8ba4\u683c\u5f0fDER, true-\u7f51\u7ad9\u517c\u5bb9\u6a21\u5f0f\nboolean \u6807\u51c6\u7248\u672c,\u9ed8\u8ba4false. false-C1C3C2\u65b0\u56fd\u9645, true-C1C2C3\u8001\u56fd\u9645\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u89e3\u5bc6\u5931\u8d25\u4f1a\u8fd4\u56denil\u6216\u7a7a\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u63d0\u793a mode/mode2 \u53c2\u6570\u662f 2023.10.17 \u65b0\u589e\n-- \u7531\u4e8eSM2\u5728\u5404\u5e73\u53f0\u7684\u5b9e\u73b0\u90fd\u6709\u5dee\u5f02,\u7528\u6cd5\u52a1\u5fc5\u53c2\u8003demo\n", "prefix": "sm.sm2decrypt"}, "sm.sm3": {"body": "sm.sm3(${1:data})", "description": "sm.sm3(data) - sm3\u7b97\u6cd5,\u7b97HASH\u503c\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3(\"lqlq666lqlq946\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3"}, "sm.sm3hmac": {"body": "sm.sm3hmac(${1:data},${2:key})", "description": "sm.sm3hmac(data, key) - sm3\u7b97\u6cd5,\u7b97HASH\u503c,\u4f46\u5e26HMAC\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009\nstring \u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u5bf9\u5e94\u7684hash\u503c\n\u4f8b\u5b50\uff1a\nlocal encodeStr = gmssl.sm3hmac(\"lqlq666lqlq946\", \"123\")\nlog.info(\"testsm.sm3update\",string.toHex(encodeStr))\n", "prefix": "sm.sm3hmac"}, "gmssl.sm4encrypt": {"body": "gmssl.sm4encrypt(${1:mode},${2:padding},${3:originStr},${4:password})", "description": "gmssl.sm4encrypt(mode,padding,originStr,password) - SM4\u52a0\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal originStr = \"SM4 ECB ZeroPadding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aZeroPadding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nlocal encodeStr = gmssl.sm4encrypt(\"ECB\",\"ZERO\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"ZERO\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 ECB Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aECB\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a128 bit\nencodeStr = gmssl.sm4encrypt(\"ECB\",\"PKCS5\",originStr,\"1234567890123456\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"ECB\",\"PKCS5\",encodeStr,\"1234567890123456\"))\n\noriginStr = \"SM4 CBC Pkcs5Padding test\"\n--\u52a0\u5bc6\u6a21\u5f0f\uff1aCBC\uff1b\u586b\u5145\u65b9\u5f0f\uff1aPkcs5Padding\uff1b\u5bc6\u94a5\uff1a1234567890123456\uff1b\u5bc6\u94a5\u957f\u5ea6\uff1a256 bit\uff1b\u504f\u79fb\u91cf\uff1a1234567890666666\nencodeStr = gmssl.sm4encrypt(\"CBC\",\"PKCS5\",originStr,\"1234567890123456\",\"1234567890666666\")\nprint(originStr,\"encrypt\",string.toHex(encodeStr))\nlog.info(\"testsm.decrypt\",gmssl.sm4decrypt(\"CBC\",\"PKCS5\",encodeStr,\"1234567890123456\",\"1234567890666666\"))\n", "prefix": "gmssl.sm4encrypt"}, "gmssl.sm4decrypt": {"body": "gmssl.sm4decrypt(${1:mode},${2:padding},${3:encodeStr},${4:password})", "description": "gmssl.sm4decrypt(mode,padding,encodeStr,password) - SM4\u89e3\u5bc6\u7b97\u6cd5\n\u4f20\u5165\u503c\uff1a\nstring \u52a0\u5bc6\u6a21\u5f0f, CBC\u6216ECB \nstring \u586b\u5145\u65b9\u5f0f, NONE/ZERO/PKCS5/PKCS7\nstring \u5df2\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\nstring \u5bc6\u94a5\nstring \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003gmssl.sm4encrypt\n", "prefix": "gmssl.sm4decrypt"}, "sm.sm2sign": {"body": "sm.sm2sign(${1:private},${2:data},${3:id})", "description": "sm.sm2sign(private,data,id) - sm2\u7b97\u6cd5\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\n\u8fd4\u56de\u503c\uff1a\nstring \u524d\u9762\u5b57\u7b26\u4e32,\u672a\u7ecfHEX\u8f6c\u6362.\u82e5\u7b7e\u540d\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2sign"}, "sm.sm2verify": {"body": "sm.sm2verify(${1:pkx},${2:pky},${3:data},${4:id},${5:sig})", "description": "sm.sm2verify(pkx, pky, data, id, sig) - sm2\u7b97\u6cd5\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5X,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u516c\u94a5Y,\u5fc5\u9009,HEX\u5b57\u7b26\u4e32\nstring \u5f85\u8ba1\u7b97\u7684\u6570\u636e,\u5fc5\u9009,\u539f\u59cb\u6570\u636e,\u975eHEX\u5b57\u7b26\u4e32\nstring id\u503c,\u975eHEX\u5b57\u7b26\u4e32,\u53ef\u9009,\u9ed8\u8ba4\u503c\"1234567812345678\"\nstring \u7b7e\u540d\u6570\u636e,\u5fc5\u987b64\u5b57\u8282,\u975eHEX\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nboolean \u9a8c\u8bc1\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.19 \u65b0\u589e\n-- \u5177\u4f53\u7528\u6cd5\u8bf7\u67e5\u9605demo\n", "prefix": "sm.sm2verify"}, "gpio.setup": {"body": "gpio.setup(${1:pin},${2:mode},${3:pull},${4:irq},${5:alt})", "description": "gpio.setup(pin, mode, pull, irq, alt) - \u8bbe\u7f6e\u7ba1\u811a\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nint pin gpio\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nany mode \u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff1a
\u6570\u5b570/1\u4ee3\u8868\u8f93\u51fa\u6a21\u5f0f
nil\u4ee3\u8868\u8f93\u5165\u6a21\u5f0f
function\u4ee3\u8868\u4e2d\u65ad\u6a21\u5f0f\uff0c\u5982\u679c\u586bgpio.count\uff0c\u5219\u4e3a\u4e2d\u65ad\u8ba1\u6570\u529f\u80fd\uff0c\u4e2d\u65ad\u65f6\u4e0d\u56de\u8c03\nint pull \u4e0a\u62c9\u4e0b\u62c9\u6a21\u5f0f, \u53ef\u4ee5\u662f\u4e0a\u62c9\u6a21\u5f0f gpio.PULLUP \u6216\u4e0b\u62c9\u6a21\u5f0f gpio.PULLDOWN, \u6216\u8005\u5f00\u6f0f\u6a21\u5f0f 0. \u9700\u8981\u6839\u636e\u5b9e\u9645\u786c\u4ef6\u9009\u7528\nint irq \u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f,\u9ed8\u8ba4gpio.BOTH\u3002\u4e2d\u65ad\u89e6\u53d1\u6a21\u5f0f
\u4e0a\u5347\u6cbfgpio.RISING
\u4e0b\u964d\u6cbfgpio.FALLING
\u4e0a\u5347\u548c\u4e0b\u964d\u90fd\u89e6\u53d1gpio.BOTH \nint alt \u590d\u7528\u9009\u9879\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9700\u8981\u8fd9\u4e2a\u53c2\u6570\uff0c\u6709\u4e9bGPIO\u53ef\u4ee5\u590d\u7528\u5230\u4e0d\u540c\u5f15\u811a\u4e0a\uff0c\u53ef\u4ee5\u9009\u62e9\u590d\u7528\u9009\u9879\uff080\u6216\u80054\uff09\u4ece\u800c\u590d\u7528\u5230\u5bf9\u5e94\u7684\u5f15\u811a\u4e0a\n\u8fd4\u56de\u503c\uff1a\nany \u8f93\u51fa\u6a21\u5f0f\u8fd4\u56de\u8bbe\u7f6e\u7535\u5e73\u7684\u95ed\u5305, \u8f93\u5165\u6a21\u5f0f\u548c\u4e2d\u65ad\u6a21\u5f0f\u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u5165\ngpio.setup(17, nil)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\ngpio.setup(17, 0)\n\n-- \u8bbe\u7f6egpio17\u4e3a\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u9ad8,\u4e14\u542f\u7528\u5185\u90e8\u4e0a\u62c9\ngpio.setup(17, 1, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u9ed8\u8ba4\u53cc\u5411\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP)\n\n-- \u8bbe\u7f6egpio27\u4e3a\u4e2d\u65ad, \u4ec5\u4e0a\u5347\u6cbf\u89e6\u53d1\ngpio.setup(27, function(val)\n print(\"IRQ_27\",val) -- \u63d0\u9192, val\u5e76\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\nend, gpio.PULLUP, gpio.RISING)\n\n-- \u4e2d\u65ad\u8ba1\u6570 \u4e8e2024.5.8\u65b0\u589e\n-- \u8bbe\u7f6egpio7\u4e3a\u4e2d\u65ad\u8ba1\u6570\uff0c\u8be6\u7ec6demo\u89c1gpio/gpio_irq_count\ngpio.setup(7, gpio.count)\n\n-- alt_func \u4e8e2023.7.2\u65b0\u589e\n-- \u672c\u529f\u80fd\u4ec5\u5bf9\u90e8\u5206\u5e73\u53f0\u6709\u6548, \u4e14\u4ec5\u7528\u4e8e\u8c03\u6574GPIO\u590d\u7528,\u5176\u4ed6\u590d\u7528\u65b9\u5f0f\u8bf7\u4f7f\u7528muc.iomux\u51fd\u6570\n-- \u4ee5\u4e0b\u793a\u4f8b\u4ee3\u7801, \u5c06I2S_DOUT\u590d\u7528\u6210gpio18\n-- AIR780E\u7684PIN33(\u6a21\u5757\u7ba1\u811a\u5e8f\u53f7), \u5bf9\u5e94paddr 38, \u9ed8\u8ba4\u529f\u80fd\u662fI2S_DOUT, \u590d\u7528\u6210gpio18\n-- \u65b9\u5411\u8f93\u51fa,\u4e14\u521d\u59cb\u5316\u7535\u5e73\u4e3a\u4f4e,\u4f7f\u7528\u786c\u4ef6\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u914d\u7f6e\n-- Air780E(EC618\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780e.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\n-- Air780EP(EC718P\u7cfb\u5217\u7684GPIO\u590d\u7528\u8bf7\u67e5\u9605 https://air780ep.cn \u9996\u9875\u786c\u4ef6\u8d44\u6599\u8868\u683c\u4e2d\u7684Air780E&Air780EG&Air780EX&Air700E_GPIO_table_20231227.pdf)\ngpio.setup(18, 0, nil, nil, 4)\n\n-- \u63d0\u9192: \n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u5165\u6a21\u5f0f\u6216\u4e2d\u65ad,\u624d\u80fd\u901a\u8fc7gpio.get()\u83b7\u53d6\u5230\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u624d\u80fd\u901a\u8fc7gpio.set()\u8bbe\u7f6e\u7535\u5e73\n-- \u5f53\u7ba1\u811a\u4e3a\u8f93\u51fa\u6a21\u5f0f,\u901a\u8fc7gpio.get()\u603b\u4f1a\u5f97\u52300\n-- \u4e2d\u65ad\u56de\u8c03\u7684val\u53c2\u6570\u4e0d\u4ee3\u8868\u89e6\u53d1\u65b9\u5411, \u4ec5\u4ee3\u8868\u4e2d\u65ad\u540e\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u7535\u5e73\n-- \u5bf9Cat.1\u6a21\u5757,EC618\u7cfb\u5217\u53ea\u6709AONGPIO\u624d\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5176\u4ed6\u7cfb\u5217\u6240\u6709GPIO\u90fd\u80fd\u53cc\u5411\u89e6\u53d1\uff0c\u5177\u4f53\u770b\u786c\u4ef6\u624b\u518c\n-- \u9ed8\u8ba4\u8bbe\u7f6e\u4e0b,\u4e2d\u65ad\u662f\u6ca1\u6709\u9632\u6296\u65f6\u95f4\u7684,\u53ef\u4ee5\u901a\u8fc7gpio.set_debounce(pin, 50)\u6765\u8bbe\u7f6e\u9632\u6296\u65f6\u95f4\n\n-- pull\u53c2\u6570\u7684\u989d\u5916\u8bf4\u660e, \u4e0a\u62c9/\u4e0b\u62c9\u914d\u7f6e\n-- \u5bf9\u4e8e\u90e8\u5206\u7684BSP\u6765\u8bf4, \u53ea\u652f\u6301 gpio.PULLUP \u6216 gpio.PULLDOWN, \u4f46\u6709\u90e8\u5206BSP\u652f\u6301\u5f00\u6f0f\u6a21\u5f0f\n-- \u5bf9\u4e8e\u652f\u6301\u5f00\u6f0f\u7684bsp, pull\u53c2\u6570\u8981\u4f20 0 \u624d\u80fd\u5f00\u542f\u5f00\u6f0f\u6a21\u5f0f, \u4e0d\u662f\u4f20nil\n-- \u4f8b\u5982:\n-- EC618\u7cfb\u5217(Air780E/Air780EG/Air780EX/Air700E\u7b49)\n-- EC718\u7cfb\u5217(Air780EP/Air780EPV\u7b49)\n-- XT804\u7cfb\u5217(Air101/Air103/Air601)\n", "prefix": "gpio.setup"}, "gpio.caplevel": {"body": "gpio.caplevel(${1:pin},${2:level},${3:func})", "description": "gpio.caplevel(pin, level,func) - \u6355\u83b7\u7ba1\u811a\u7535\u5e73\u6301\u7eed\u65f6\u957f\uff0c\u5355\u4f4dus\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint level \u9700\u8981\u6355\u83b7\u7684\u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\uff0c\u5373\u7ba1\u811a\u4e0a\u6b63\u5e38\u65f6\u95f4\u5904\u4e8elevel\u7684\u53cd\uff0c\u6355\u83b7\u8bbe\u5b9a\u7684level\u6301\u7eed\u65f6\u95f4\nfunction func \u5b8c\u6210\u6355\u83b7\u540e\u7684\u56de\u8c03\u51fd\u6570\uff0c\u4ec5\u4e00\u4e2a\u53c2\u6570\uff0c\u53c2\u6570\u4e3a\u6355\u83b7\u5230\u7684\u65f6\u95f4\u957f\u5ea6number\u578b\u6570\u503c\uff0c\u5355\u4f4dus\n\u8fd4\u56de\u503c\uff1a\nany \u8fd4\u56de\u83b7\u53d6\u7535\u5e73\u7684\u95ed\u5305\n\u4f8b\u5b50\uff1a\n-- \u6355\u83b7pin.PA07\u4e3a\u9ad8\u7535\u5e73\u7684\u6301\u7eed\u65f6\u95f4\ngpio.caplevel(pin.PA07,1,function(val) print(val) end)\n", "prefix": "gpio.caplevel"}, "gpio.set": {"body": "gpio.set(${1:pin},${2:value})", "description": "gpio.set(pin, value) - \u8bbe\u7f6e\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\nint value \u7535\u5e73, \u53ef\u4ee5\u662f \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u6216\u8005\u76f4\u63a5\u5199\u6570\u503c1\u62160\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio17\u4e3a\u4f4e\u7535\u5e73\ngpio.set(17, 0)\n", "prefix": "gpio.set"}, "gpio.get": {"body": "gpio.get(${1:pin})", "description": "gpio.get(pin) - \u83b7\u53d6\u7ba1\u811a\u7535\u5e73\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nvalue \u7535\u5e73, \u9ad8\u7535\u5e73gpio.HIGH, \u4f4e\u7535\u5e73gpio.LOW, \u5bf9\u5e94\u6570\u503c1\u548c0\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6gpio17\u7684\u5f53\u524d\u7535\u5e73\ngpio.get(17)\n", "prefix": "gpio.get"}, "gpio.close": {"body": "gpio.close(${1:pin})", "description": "gpio.close(pin) - \u5173\u95ed\u7ba1\u811a\u529f\u80fd(\u9ad8\u963b\u8f93\u5165\u6001),\u5173\u6389\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin GPIO\u7f16\u53f7,\u5fc5\u987b\u662f\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c,\u603b\u662f\u6267\u884c\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edgpio17\ngpio.close(17)\n", "prefix": "gpio.close"}, "gpio.setDefaultPull": {"body": "gpio.setDefaultPull(${1:val})", "description": "gpio.setDefaultPull(val) - \u8bbe\u7f6eGPIO\u811a\u7684\u9ed8\u8ba4\u4e0a\u62c9/\u4e0b\u62c9\u8bbe\u7f6e, \u9ed8\u8ba4\u662f\u5e73\u53f0\u81ea\u5b9a\u4e49(\u4e00\u822c\u4e3a\u5f00\u6f0f).\n\u4f20\u5165\u503c\uff1a\nint val 0\u5e73\u53f0\u81ea\u5b9a\u4e49,1\u4e0a\u62c9, 2\u4e0b\u62c9\n\u8fd4\u56de\u503c\uff1a\nboolean \u4f20\u503c\u6b63\u786e\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6egpio.setup\u7684pull\u9ed8\u8ba4\u503c\u4e3a\u4e0a\u62c9\ngpio.setDefaultPull(1)\n", "prefix": "gpio.setDefaultPull"}, "gpio.toggle": {"body": "gpio.toggle(${1:pin})", "description": "gpio.toggle(pin) - \u53d8\u6362GPIO\u811a\u8f93\u51fa\u7535\u5e73,\u4ec5\u8f93\u51fa\u6a21\u5f0f\u53ef\u7528\n\u4f20\u5165\u503c\uff1a\nint \u7ba1\u811a\u7684GPIO\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2022.05.17 \u6dfb\u52a0\n-- \u5047\u8bbeGPIO16\u4e0a\u6709LED, \u6bcf500ms\u5207\u6362\u4e00\u6b21\u5f00\u5173\ngpio.setup(16, 0)\nsys.timerLoopStart(function()\n gpio.toggle(16)\nend, 500)\n", "prefix": "gpio.toggle"}, "gpio.pulse": {"body": "gpio.pulse(${1:pin},${2:level},${3:len},${4:delay})", "description": "gpio.pulse(pin,level,len,delay) - \u5728\u540c\u4e00\u4e2aGPIO\u8f93\u51fa\u4e00\u7ec4\u8109\u51b2, \u6ce8\u610f, len\u7684\u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7\nint/string \u6570\u503c\u6216\u8005\u5b57\u7b26\u4e32.\nint len \u957f\u5ea6 \u5355\u4f4d\u662fbit, \u9ad8\u4f4d\u5728\u524d.\nint delay \u5ef6\u8fdf,\u5f53\u524d\u65e0\u56fa\u5b9a\u65f6\u95f4\u5355\u4f4d\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u901a\u8fc7PB06\u811a\u8f93\u51fa\u8f93\u51fa8\u4e2a\u7535\u5e73\u53d8\u5316.\ngpio.pulse(pin.PB06,0xA9, 8, 0)\n", "prefix": "gpio.pulse"}, "gpio.debounce": {"body": "gpio.debounce(${1:pin},${2:ms},${3:mode})", "description": "gpio.debounce(pin, ms, mode) - \u9632\u6296\u8bbe\u7f6e, \u6839\u636e\u786c\u4ef6ticks\u8fdb\u884c\u9632\u6296\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\nint \u9632\u6296\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2, \u6700\u5927 65555 ms, \u8bbe\u7f6e\u4e3a0\u5219\u5173\u95ed\nint \u6a21\u5f0f, 0\u51b7\u5374\u6a21\u5f0f, 1\u5ef6\u65f6\u6a21\u5f0f. \u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6d88\u6296\u6a21\u5f0f, \u5f53\u524d\u652f\u63012\u79cd, 2022.12.16\u5f00\u59cb\u652f\u6301mode=1\n-- 0 \u89e6\u53d1\u4e2d\u65ad\u540e,\u9a6c\u4e0a\u4e0a\u62a5\u4e00\u6b21, \u7136\u540e\u51b7\u5374N\u4e2a\u6beb\u79d2\u540e,\u91cd\u65b0\u63a5\u53d7\u4e2d\u65ad\n-- 1 \u89e6\u53d1\u4e2d\u65ad\u540e,\u5ef6\u8fdfN\u4e2a\u6beb\u79d2,\u671f\u95f4\u6ca1\u6709\u65b0\u4e2d\u65ad\u4e14\u7535\u5e73\u6ca1\u6709\u53d8\u5316,\u4e0a\u62a5\u4e00\u6b21\n\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f0-\u51b7\u5374, \u4e2d\u65ad\u540e\u9a6c\u4e0a\u4e0a\u62a5, \u4f46100ms\u5185\u53ea\u4e0a\u62a5\u4e00\u6b21\ngpio.debounce(7, 100) -- \u82e5\u82af\u7247\u652f\u6301pin\u5e93, \u53ef\u7528pin.PA7\u4ee3\u66ff\u6570\u5b577\n-- \u5f00\u542f\u9632\u6296, \u6a21\u5f0f1-\u5ef6\u65f6, \u4e2d\u65ad\u540e\u7b49\u5f85100ms,\u671f\u95f4\u82e5\u4fdd\u6301\u8be5\u7535\u5e73\u4e86,\u65f6\u95f4\u5230\u4e4b\u540e\u4e0a\u62a5\u4e00\u6b21\n-- \u5bf9\u5e94\u7684,\u5982\u679c\u8f93\u5165\u7684\u662f\u4e00\u4e2a 50hz\u7684\u65b9\u6ce2,\u90a3\u4e48\u4e0d\u4f1a\u89e6\u53d1\u4efb\u4f55\u4e0a\u62a5\ngpio.debounce(7, 100, 1)\n\n-- \u5173\u95ed\u9632\u6296,\u65f6\u95f4\u8bbe\u7f6e\u4e3a0\u5c31\u5173\u95ed\ngpio.debounce(7, 0)\n", "prefix": "gpio.debounce"}, "gpio.count": {"body": "gpio.count(${1:pin})", "description": "gpio.count(pin) - \u83b7\u53d6gpio\u4e2d\u65ad\u6570\u91cf\uff0c\u5e76\u6e05\u7a7a\u7d2f\u8ba1\u503c\uff0c\u7c7b\u4f3cair724\u7684\u8109\u51b2\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint gpio\u53f7, 0~127, \u4e0e\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u4ece\u4e0a\u6b21\u83b7\u53d6\u4e2d\u65ad\u6570\u91cf\u540e\u5230\u5f53\u524d\u7684\u4e2d\u65ad\u8ba1\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"irq cnt\", gpio.count(10))\n", "prefix": "gpio.count"}, "gtfont.init": {"body": "gtfont.init(${1:spi_device})", "description": "gtfont.init(spi_device) - \u521d\u59cb\u5316\u9ad8\u901a\u5b57\u4f53\u82af\u7247\n\u4f20\u5165\u503c\uff1a\nuserdata \u4ec5\u652f\u6301spi device \u751f\u6210\u7684\u6307\u9488\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7279\u522b\u63d0\u9192: \u4f7f\u7528\u672c\u5e93\u7684\u4efb\u4f55\u4ee3\u7801, \u90fd\u9700\u8981 \u989d\u5916 \u7684 \u9ad8\u901a\u5b57\u4f53\u82af\u7247 !!\n-- \u6ca1\u6709\u989d\u5916\u82af\u7247\u662f\u8dd1\u4e0d\u4e86\u7684!!\ngtfont.init(spi_device)\n", "prefix": "gtfont.init"}, "hmeta.model": {"body": "hmeta.model()", "description": "hmeta.model() - \u83b7\u53d6\u6a21\u7ec4\u540d\u79f0\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.model"}, "hmeta.hwver": {"body": "hmeta.hwver()", "description": "hmeta.hwver() - \u83b7\u53d6\u6a21\u7ec4\u7684\u786c\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u80fd\u8bc6\u522b\u5230,\u8fd4\u56de\u6a21\u7ec4\u7c7b\u578b, \u5426\u5219\u4f1a\u662fnil\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n -- hmeta\u8bc6\u522b\u5e95\u5c42\u6a21\u7ec4\u7c7b\u578b\u7684\n -- \u4e0d\u540c\u7684\u6a21\u7ec4\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684bsp,\u4f46\u6839\u636e\u5c01\u88c5\u7684\u4e0d\u540c,\u6839\u636e\u5185\u90e8\u6570\u636e\u4ecd\u53ef\u8bc6\u522b\u51fa\u5177\u4f53\u6a21\u5757\n log.info(\"hmeta\", hmeta.model(), hmeta.hwver())\n log.info(\"bsp\", rtos.bsp())\n end\nend)\n", "prefix": "hmeta.hwver"}, "ht1621.setup": {"body": "ht1621.setup(${1:pin_cs},${2:pin_data},${3:pin_wr},${4:cmd_com_mode},${5:cmd_rc},${6:cmd_sysen})", "description": "ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen) - \u521d\u59cb\u5316ht1621\n\u4f20\u5165\u503c\uff1a\nint \u7247\u9009\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u6570\u636e\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint WR\u5f15\u811a, \u586b\u6a21\u5757\u7684GPIO\u7f16\u7801\nint \u547d\u4ee4\u6a21\u5f0f, \u9ed8\u8ba4\u662f0x52\nint \u5185\u90e8RC\u632f\u8361\u5668,\u9ed8\u8ba40x30\nint \u7cfb\u7edf\u632f\u8361\u5668\u5f00,\u9ed8\u8ba40x02\n\u8fd4\u56de\u503c\uff1a\nuserdata \u8fd4\u56deht1621\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.data(seg, 0, 0xeb)\n", "prefix": "ht1621.setup"}, "ht1621.lcd": {"body": "ht1621.lcd(${1:seg},${2:onoff})", "description": "ht1621.lcd(seg, onoff) - LCD\u5f00\u5173\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nboolean true\u5f00,false\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\n", "prefix": "ht1621.lcd"}, "ht1621.data": {"body": "ht1621.data(${1:seg},${2:addr},${3:sdat})", "description": "ht1621.data(seg, addr, sdat) - \u5c55\u793a\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u5730\u5740, 0-6, \u8d85\u8fc76\u65e0\u6548\nint \u6570\u636e, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal seg = ht1621.setup(4, 5, 3)\nht1621.lcd(seg, true)\nht1621.data(seg, 0, 0xF1)\n-- \u9644\u6570\u5b570-9\u7684\u503c\u8868\n-- 0,1,2,3,4,5,6,7,8,9\n-- 0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf\n", "prefix": "ht1621.data"}, "ht1621.cmd": {"body": "ht1621.cmd(${1:seg},${2:cmd})", "description": "ht1621.cmd(seg, cmd) - \u53d1\u9001\u6307\u4ee4\n\u4f20\u5165\u503c\uff1a\nuserdata ht1621.setup\u8fd4\u56de\u7684ht1621\u5bf9\u8c61\nint \u6307\u4ee4, 0-255\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5177\u4f53\u6307\u4ee4\u8bf7\u67e5\u9605\u786c\u4ef6\u624b\u518c\n", "prefix": "ht1621.cmd"}, "http.request": {"body": "http.request(${1:method},${2:url},${3:headers},${4:body},${5:opts},${6:ca_file},${7:client_ca},${8:client_key},${9:client_password})", "description": "http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, client_password) - http\u5ba2\u6237\u7aef\n\u4f20\u5165\u503c\uff1a\nstring \u8bf7\u6c42\u65b9\u6cd5, \u652f\u6301 GET/POST \u7b49\u5408\u6cd5\u7684HTTP\u65b9\u6cd5\nstring url\u5730\u5740, \u652f\u6301 http\u548chttps, \u652f\u6301\u57df\u540d, \u652f\u6301\u81ea\u5b9a\u4e49\u7aef\u53e3\ntabal \u8bf7\u6c42\u5934 \u53ef\u9009 \u4f8b\u5982 {[\"Content-Type\"] = \"application/x-www-form-urlencoded\"}\nstring/zbuff body \u53ef\u9009\ntable \u989d\u5916\u914d\u7f6e \u53ef\u9009 \u5305\u542b timeout:\u8d85\u65f6\u65f6\u95f4\u5355\u4f4dms \u53ef\u9009,\u9ed8\u8ba410\u5206\u949f,\u51990\u5373\u6c38\u4e45\u7b49\u5f85 dst:\u4e0b\u8f7d\u8def\u5f84,\u53ef\u9009 adapter:\u9009\u62e9\u4f7f\u7528\u7f51\u5361,\u53ef\u9009 debug:\u662f\u5426\u6253\u5f00debug\u4fe1\u606f,\u53ef\u9009,ipv6:\u662f\u5426\u4e3aipv6 \u9ed8\u8ba4\u4e0d\u662f,\u53ef\u9009 callback:\u4e0b\u8f7d\u56de\u8c03\u51fd\u6570,\u53c2\u6570 content_len:\u603b\u957f\u5ea6 body_len:\u4ee5\u4e0b\u8f7d\u957f\u5ea6 userdata \u7528\u6237\u4f20\u53c2,\u53ef\u9009 userdata:\u56de\u8c03\u81ea\u5b9a\u4e49\u4f20\u53c2 \nstring \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981\nstring \u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\nstring \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e, \u53ef\u9009, \u4e00\u822c\u4e0d\u9700\u8981, \u53cc\u5411https\u8ba4\u8bc1\u624d\u9700\u8981\n\u8fd4\u56de\u503c\uff1a\nint code , \u670d\u52a1\u5668\u53cd\u9988\u7684\u503c>=100, \u6700\u5e38\u89c1\u7684\u662f200.\u5982\u679c\u662f\u5e95\u5c42\u9519\u8bef,\u4f8b\u5982\u8fde\u63a5\u5931\u8d25, \u8fd4\u56de\u503c\u5c0f\u4e8e0\ntabal headers \u5f53code>100\u65f6, \u4ee3\u8868\u670d\u52a1\u5668\u8fd4\u56de\u7684\u5934\u90e8\u6570\u636e \nstring/int body \u670d\u52a1\u5668\u54cd\u5e94\u7684\u5185\u5bb9\u5b57\u7b26\u4e32,\u5982\u679c\u662f\u4e0b\u8f7d\u6a21\u5f0f, \u5219\u8fd4\u56de\u6587\u4ef6\u5927\u5c0f\n\u4f8b\u5b50\uff1a\n\n--[[\ncode\u62a5\u9519\u4fe1\u606f\u5217\u8868:\n-1 HTTP_ERROR_STATE \u9519\u8bef\u7684\u72b6\u6001, \u4e00\u822c\u662f\u5e95\u5c42\u5f02\u5e38,\u8bf7\u62a5issue\n-2 HTTP_ERROR_HEADER \u9519\u8bef\u7684\u54cd\u5e94\u5934\u90e8, \u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-3 HTTP_ERROR_BODY \u9519\u8bef\u7684\u54cd\u5e94\u4f53,\u901a\u5e38\u662f\u670d\u52a1\u5668\u95ee\u9898\n-4 HTTP_ERROR_CONNECT \u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25, \u672a\u8054\u7f51,\u5730\u5740\u9519\u8bef,\u57df\u540d\u9519\u8bef\n-5 HTTP_ERROR_CLOSE \u63d0\u524d\u65ad\u5f00\u4e86\u8fde\u63a5, \u7f51\u7edc\u6216\u670d\u52a1\u5668\u95ee\u9898\n-6 HTTP_ERROR_RX \u63a5\u6536\u6570\u636e\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\n-7 HTTP_ERROR_DOWNLOAD \u4e0b\u8f7d\u6587\u4ef6\u8fc7\u7a0b\u62a5\u9519, \u7f51\u7edc\u95ee\u9898\u6216\u4e0b\u8f7d\u8def\u5f84\u95ee\u9898\n-8 HTTP_ERROR_TIMEOUT \u8d85\u65f6, \u5305\u62ec\u8fde\u63a5\u8d85\u65f6,\u8bfb\u53d6\u6570\u636e\u8d85\u65f6\n-9 HTTP_ERROR_FOTA fota\u529f\u80fd\u62a5\u9519,\u901a\u5e38\u662f\u66f4\u65b0\u5305\u4e0d\u5408\u6cd5\n]]\n\n-- GET\u8bf7\u6c42\nlocal code, headers, body = http.request(\"GET\",\"http://site0.cn/api/httptest/simple/time\").wait()\nlog.info(\"http.get\", code, headers, body)\n-- POST\u8bf7\u6c42\nlocal code, headers, body = http.request(\"POST\",\"http://httpbin.com/post\", {}, \"abc=123\").wait()\nlog.info(\"http.post\", code, headers, body)\n\n-- GET\u8bf7\u6c42,\u4f46\u4e0b\u8f7d\u5230\u6587\u4ef6\nlocal code, headers, body = http.request(\"GET\",\"http://httpbin.com/\", {}, \"\", {dst=\"/data.bin\"}).wait()\nlog.info(\"http.get\", code, headers, body)\n\n-- \u81ea\u5b9a\u4e49\u8d85\u65f6\u65f6\u95f4, 5000ms\nhttp.request(\"GET\",\"http://httpbin.com/\", nil, nil, {timeout=5000}).wait()\n", "prefix": "http.request"}, "httpsrv.start": {"body": "httpsrv.start(${1:port},${2:func})", "description": "httpsrv.start(port, func) - \u542f\u52a8\u5e76\u76d1\u542c\u4e00\u4e2ahttp\u7aef\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\nfunction \u56de\u8c03\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u76d1\u542c80\u7aef\u53e3\nhttpsrv.start(80, function(client, method, uri, headers, body)\n -- method \u662f\u5b57\u7b26\u4e32, \u4f8b\u5982 GET POST PUT DELETE\n -- uri \u4e5f\u662f\u5b57\u7b26\u4e32 \u4f8b\u5982 / /api/abc\n -- headers table\u7c7b\u578b\n -- body \u5b57\u7b26\u4e32\n log.info(\"httpsrv\", method, uri, json.encode(headers), body)\n if uri == \"/led/1\" then\n LEDA(1)\n return 200, {}, \"ok\"\n elseif uri == \"/led/0\" then\n LEDA(0)\n return 200, {}, \"ok\"\n end\n -- \u8fd4\u56de\u503c\u7684\u7ea6\u5b9a code, headers, body\n -- \u82e5\u6ca1\u6709\u8fd4\u56de\u503c, \u5219\u9ed8\u8ba4 404, {} ,\"\"\n return 404, {}, \"Not Found\" .. uri\nend)\n-- \u5173\u4e8e\u9759\u6001\u6587\u4ef6\n-- \u60c5\u51b51: / , \u6620\u5c04\u4e3a /index.html\n-- \u60c5\u51b52: /abc.html , \u5148\u67e5\u627e /abc.html, \u4e0d\u5b58\u5728\u7684\u8bdd\u67e5\u627e /abc.html.gz\n-- \u82e5gz\u5b58\u5728, \u4f1a\u81ea\u52a8\u4ee5\u538b\u7f29\u6587\u4ef6\u8fdb\u884c\u54cd\u5e94, \u7edd\u5927\u90e8\u5206\u6d4f\u89c8\u5668\u652f\u6301.\n-- \u5f53\u524d\u9ed8\u8ba4\u67e5\u627e /luadb/xxx \u4e0b\u7684\u6587\u4ef6,\u6682\u4e0d\u53ef\u914d\u7f6e\n", "prefix": "httpsrv.start"}, "httpsrv.stop": {"body": "httpsrv.stop(${1:port})", "description": "httpsrv.stop(port) - \u505c\u6b62http\u670d\u52a1\n\u4f20\u5165\u503c\uff1a\nint \u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n", "prefix": "httpsrv.stop"}, "i2c.exist": {"body": "i2c.exist(${1:id})", "description": "i2c.exist(id) - i2c\u7f16\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u5c31\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5i2c1\u662f\u5426\u5b58\u5728\nif i2c.exist(1) then\n log.info(\"\u5b58\u5728 i2c1\")\nend\n", "prefix": "i2c.exist"}, "i2c.setup": {"body": "i2c.setup(${1:id},${2:speed},${3:pullup})", "description": "i2c.setup(id, speed, pullup) - i2c\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u901f\u5ea6, \u4f8b\u5982i2c.FAST\nbool \u662f\u5426\u8f6f\u4ef6\u4e0a\u62c9, \u9ed8\u8ba4\u4e0d\u5f00\u542f\uff0c\u9700\u8981\u786c\u4ef6\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5c31\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316i2c1\ni2c.setup(1, i2c.FAST) -- id\u6b63\u786e\u5c31\u4e00\u5b9a\u6210\u529f\n-- \u5982\u9700\u5224\u65adi2c id\u662f\u5426\u5408\u6cd5, \u8bf7\u4f7f\u7528 i2c.exist \u51fd\u6570\n", "prefix": "i2c.setup"}, "i2c.createSoft": {"body": "i2c.createSoft(${1:scl},${2:sda},${3:delay})", "description": "i2c.createSoft(scl,sda,delay) - \u65b0\u5efa\u4e00\u4e2a\u8f6f\u4ef6i2c\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nint i2c SCL\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint i2c SDA\u5f15\u811a\u7f16\u53f7(GPIO\u7f16\u53f7)\nint \u6bcf\u4e2a\u64cd\u4f5c\u7684\u5ef6\u65f6, \u5355\u4f4dus, \u9ed8\u8ba45\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6I2C\u5bf9\u8c61 \u53ef\u5f53\u4f5ci2c\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f\uff01\u8fd9\u4e2a\u63a5\u53e3\u662f\u8f6f\u4ef6\u6a21\u62dfi2c\uff0c\u901f\u5ea6\u53ef\u80fd\u4f1a\u6bd4\u786c\u4ef6\u7684\u6162\n-- \u4e0d\u9700\u8981\u8c03\u7528i2c.close\u63a5\u53e3\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\nlocal softI2C = i2c.createSoft(1, 2, 5)\ni2c.send(softI2C, 0x5C, string.char(0x0F, 0x2F))\n-- \u6ce8\u610f, \u7b2c3\u4e2a\u53c2\u6570\u662f 2023.06.19 \u6dfb\u52a0\u7684delay\n-- \u901a\u8fc7\u8c03\u6574delay\u53c2\u6570\u7684\u503c, \u53ef\u589e\u52a0\u6216\u964d\u4f4eI2C\u7684\u901f\u5ea6\n", "prefix": "i2c.createSoft"}, "i2c.send": {"body": "i2c.send(${1:id},${2:addr},${3:data},${4:stop})", "description": "i2c.send(id, addr, data,stop) - i2c\u53d1\u9001\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/table \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u5f80i2c0\u53d1\u90011\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(0, 0x68, 0x75)\n-- \u5f80i2c1\u53d1\u90012\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.send(1, 0x5C, string.char(0x0F, 0x2F))\ni2c.send(1, 0x5C, {0x0F, 0x2F})\n", "prefix": "i2c.send"}, "i2c.recv": {"body": "i2c.recv(${1:id},${2:addr},${3:len})", "description": "i2c.recv(id, addr, len) - i2c\u63a5\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u63a5\u6536\u6570\u636e\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u8bfb\u53d62\u4e2a\u5b57\u8282\u7684\u6570\u636e\nlocal data = i2c.recv(1, 0x5C, 2)\n", "prefix": "i2c.recv"}, "i2c.writeReg": {"body": "i2c.writeReg(${1:id},${2:addr},${3:reg},${4:data},${5:stop})", "description": "i2c.writeReg(id, addr, reg, data,stop) - i2c\u5199\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\ntrue/false \u53d1\u9001\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u5199\u51652\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.writeReg(1, 0x5C, 0x01, string.char(0x00, 0xF2))\n", "prefix": "i2c.writeReg"}, "i2c.readReg": {"body": "i2c.readReg(${1:id},${2:addr},${3:reg},${4:len})", "description": "i2c.readReg(id, addr, reg, len) - i2c\u8bfb\u5bc4\u5b58\u5668\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u5f85\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\ninteger \u53ef\u9009\u53c2\u6570 \u662f\u5426\u53d1\u9001\u505c\u6b62\u4f4d 1\u53d1\u9001 0\u4e0d\u53d1\u9001 \u9ed8\u8ba4\u53d1\u9001(105\u4e0d\u652f\u6301)\n\u8fd4\u56de\u503c\uff1a\nstring \u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c1\u7684\u5730\u5740\u4e3a0x5C\u7684\u8bbe\u5907\u7684\u5bc4\u5b58\u56680x01\u8bfb\u51fa2\u4e2a\u5b57\u8282\u7684\u6570\u636e\ni2c.readReg(1, 0x5C, 0x01, 2)\n", "prefix": "i2c.readReg"}, "i2c.close": {"body": "i2c.close(${1:id})", "description": "i2c.close(id) - \u5173\u95edi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edi2c1\ni2c.close(1)\n", "prefix": "i2c.close"}, "i2c.readDHT12": {"body": "i2c.readDHT12(${1:id})", "description": "i2c.readDHT12(id) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint DHT12\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x5C\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6DHT12\ni2c.setup(0)\nlocal re, H, T = i2c.readDHT12(0)\nif re then\n log.info(\"dht12\", H, T)\nend\n", "prefix": "i2c.readDHT12"}, "i2c.readSHT30": {"body": "i2c.readSHT30(${1:id},${2:addr})", "description": "i2c.readSHT30(id,addr) - \u4ecei2c\u603b\u7ebf\u8bfb\u53d6DHT30\u7684\u6e29\u6e7f\u5ea6\u6570\u636e(\u7531\"\u597d\u5947\u661f\"\u8d21\u732e)\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u8bbe\u5907addr,SHT30\u7684\u8bbe\u5907\u5730\u5740,\u9ed8\u8ba40x44 bit7\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u6e7f\u5ea6\u503c,\u5355\u4f4d0.1%, \u4f8b\u5982 591 \u4ee3\u8868 59.1%\nint \u6e29\u5ea6\u503c,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6, \u4f8b\u5982 292 \u4ee3\u8868 29.2\u6444\u6c0f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u4ecei2c0\u8bfb\u53d6SHT30\ni2c.setup(0)\nlocal re, H, T = i2c.readSHT30(0)\nif re then\n log.info(\"sht30\", H, T)\nend\n", "prefix": "i2c.readSHT30"}, "i2c.transfer": {"body": "i2c.transfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen})", "description": "i2c.transfer(id, addr, txBuff, rxBuff, rxLen) - i2c\u901a\u7528\u4f20\u8f93\uff0c\u5305\u62ec\u53d1\u9001N\u5b57\u8282\uff0c\u53d1\u9001N\u5b57\u8282+\u63a5\u6536N\u5b57\u8282\uff0c\u63a5\u6536N\u5b57\u8282\u4e09\u79cd\u529f\u80fd\uff0c\u5728\u53d1\u9001\u8f6c\u63a5\u6536\u8fc7\u7a0b\u4e2d\u53d1\u9001reStart\u4fe1\u53f7,\u89e3\u51b3\u7c7b\u4f3cmlx90614\u5fc5\u987b\u5e26restart\u4fe1\u53f7\uff0c\u4f46\u662f\u53c8\u4e0d\u80fd\u7528i2c.send\u6765\u63a7\u5236\u7684\uff0c\u6bd4\u5982air105\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\ninteger/string/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e,\u81ea\u9002\u5e94\u53c2\u6570\u7c7b\u578b\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u53d1\u9001\u6570\u636e\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff \u5982\u679c\u4e0d\u7528zbuff\uff0c\u5219\u63a5\u6536\u6570\u636e\u5c06\u5728return\u8fd4\u56de\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u53d1\u9001\u662f\u5426\u6210\u529f\nstring or nil \u5982\u679c\u53c2\u65705\u662finterger\uff0c\u5219\u8fd4\u56de\u63a5\u6536\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, rxbuff, 1)\nlocal result, _ = i2c.transfer(0, 0x11, txbuff, nil, 0) --\u53ea\u53d1\u9001txbuff\u91cc\u7684\u6570\u636e\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662f\u5199\u5bc4\u5b58\u5668\u4e86\uff0c\u8fd9\u91cc\u5bc4\u5b58\u5668\u5730\u5740\u548c\u503c\u90fd\u653e\u5728\u4e86txbuff\u91cc\nlocal result, _ = i2c.transfer(0, 0x11, \"\\x01\\x02\\x03\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c0x03\uff0c\u4e0d\u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u662feeprom\uff0c\u5c31\u662f\u5f800x01\u7684\u5730\u5740\u519902\u548c03\uff0c\u6216\u8005\u5f800x0102\u7684\u5730\u5740\u519903\uff0c\u770b\u5177\u4f53\u82af\u7247\u4e86\nlocal result, rxdata = i2c.transfer(0, 0x11, \"\\x01\\x02\", nil, 1) --\u53d1\u90010x01\uff0c 0x02\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5c31\u662feeprom\nlocal result, rxdata = i2c.transfer(0, 0x11, 0x00, nil, 1) --\u53d1\u90010x00\uff0c\u7136\u540e\u63a5\u65361\u4e2a\u5b57\u8282\uff0c\u5178\u578b\u5e94\u7528\u5404\u79cd\u4f20\u611f\u5668\n", "prefix": "i2c.transfer"}, "i2c.xfer": {"body": "i2c.xfer(${1:id},${2:addr},${3:txBuff},${4:rxBuff},${5:rxLen},${6:transfer_done_topic},${7:timeout})", "description": "i2c.xfer(id, addr, txBuff, rxBuff, rxLen, transfer_done_topic, timeout) - i2c\u975e\u963b\u585e\u901a\u7528\u4f20\u8f93\uff0c\u7c7b\u4f3ctransfer\uff0c\u4f46\u662f\u4e0d\u4f1a\u7b49\u5230I2C\u4f20\u8f93\u5b8c\u6210\u624d\u8fd4\u56de\uff0c\u8c03\u7528\u672c\u51fd\u6570\u4f1a\u7acb\u523b\u8fd4\u56de\uff0cI2C\u4f20\u8f93\u5b8c\u6210\u540e\uff0c\u901a\u8fc7\u6d88\u606f\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint I2C\u5b50\u8bbe\u5907\u7684\u5730\u5740, 7\u4f4d\u5730\u5740\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\uff0c\u957f\u5ea6\u4e3azbuff.used\nzbuff \u5f85\u63a5\u6536\u6570\u636e\u7684zbuff\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u5ffd\u7565\u540e\u9762\u53c2\u6570\uff0c \u4e0d\u63a5\u6536\u6570\u636e\u3002\u63a5\u6536\u7684\u6570\u636e\u4f1a\u653e\u5728zbuff.addr\u5f00\u59cb\u7684\u4f4d\u7f6e\uff0c\u4f1a\u8986\u76d6\u6389\u4e4b\u524d\u7684\u6570\u636e\uff0c\u6ce8\u610fzhuff\u7684\u9884\u7559\u7a7a\u95f4\u8981\u8db3\u591f\nint \u9700\u8981\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\uff0c\u5982\u679c\u4e3a0\u6216nil\uff0c\u5219\u4e0d\u63a5\u6536\u6570\u636e\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684\u6d88\u606f\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u586bnil\uff0c\u5219\u4e3a100ms\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = i2c.xfer(0, 0x11, txbuff, rxbuff, 1, \"I2CDONE\") if result then result, i2c_id, succ, error_code = sys.waitUntil(\"I2CDONE\") end if not result or not succ then log.info(\"i2c fail, error code\", error_code) else log.info(\"i2c ok\") end\n\n", "prefix": "i2c.xfer"}, "i2c.scan": {"body": "i2c.scan(${1:id},${2:speed})", "description": "i2c.scan(id,speed) - \u626b\u63cfi2c\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id, \u4f8b\u5982i2c1\u7684id\u4e3a1, i2c2\u7684id\u4e3a2\nint \u901f\u5ea6, \u53ef\u9009i2c.SLOW i2c.FAST i2c.PLUS i2c.HSMODE \u9ed8\u8ba4\u4e3ai2c.SLOW,\u5982\u63a2\u6d4b\u4e0d\u5230\u5219\u4fee\u6539\u6b64\u9879\n\u8fd4\u56de\u503c\uff1a\nnil \u5f53\u524d\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.07.04\u6dfb\u52a0\n-- \u8fd9\u4e2a\u51fd\u6570\u7684\u4e3b\u8981\u76ee\u6807\u662f\u4e3a\u4e86\u5728\u5f00\u53d1\u671f\u626b\u63cfi2c\u8bbe\u5907\n-- \u6709\u4e9bBSP\u5728\u6307\u5b9aaddr\u65e0\u54cd\u5e94\u65f6\u4f1a\u8f93\u51fa\u65e5\u5fd7,\u5bfc\u81f4\u8f93\u51fa\u4f1a\u88ab\u6253\u4e71\ni2c.scan()\n", "prefix": "i2c.scan"}, "i2s.setup": {"body": "i2s.setup(${1:id},${2:mode},${3:sample},${4:bitw},${5:channel},${6:format},${7:framebit})", "description": "i2s.setup(id, mode, sample, bitw, channel, format, framebit) - \u521d\u59cb\u5316i2s\n\u4f20\u5165\u503c\uff1a\nint i2s\u901a\u9053\u53f7,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387,\u9ed8\u8ba444100. \u53ef\u9009\nint \u6570\u636e\u4f4d\u6570,\u9ed8\u8ba416, \u53ef\u4ee5\u662f8\u7684\u500d\u6570\nint \u58f0\u9053, 0 \u5de6\u58f0\u9053, 1 \u53f3\u58f0\u9053, 2 \u7acb\u4f53\u58f0. \u53ef\u9009\nint \u683c\u5f0f, \u53ef\u9009MODE_I2S, MODE_LSB, MODE_MSB\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf, \u53ef\u900916\u548c32\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4ee5\u9ed8\u8ba4\u53c2\u6570\u521d\u59cb\u5316i2s\ni2s.setup(0)\n-- \u4ee5\u8be6\u7ec6\u53c2\u6570\u521d\u59cb\u5316i2s, \u793a\u4f8b\u4e3a\u9ed8\u8ba4\u503c\ni2s.setup(0, 0, 44100, 16, 0, 0, 16)\n", "prefix": "i2s.setup"}, "i2s.send": {"body": "i2s.send(${1:id},${2:data},${3:len})", "description": "i2s.send(id, data, len) - \u53d1\u9001i2s\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nstring \u6570\u636e, \u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216zbuff\nint \u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282, \u5b57\u7b26\u4e32\u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5168\u957f, zbuff\u9ed8\u8ba4\u4e3a\u6307\u9488\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u4f9b\u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\nlocal f = io.open(\"/luadb/abc.wav\")\nwhile 1 do\n local data = f:read(4096)\n if not data or #data == 0 then\n break\n end\n i2s.send(0, data)\n sys.wait(100)\nend\n", "prefix": "i2s.send"}, "i2s.recv": {"body": "i2s.recv(${1:id},${2:buffer},${3:len})", "description": "i2s.recv(id, buffer, len) - \u63a5\u6536i2s\u6570\u636e\uff0c\u6ce8\u610f\u5728\u6570\u636e\u5728\u56de\u8c03\u65f6\u5df2\u7ecf\u5b58\u653e\u5728zbuff\u91cc\uff0c\u76ee\u524d\u53ea\u6709air780e\u7cfb\u5217\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\nzbuff \u6570\u636e\u7f13\u5b58\u533a\nint \u5355\u6b21\u8fd4\u56de\u7684\u6570\u636e\u957f\u5ea6,\u5355\u4f4d\u5b57\u8282,\u5fc5\u987b\u4e0e\u4f20\u5165\u7684zbuff\u7684\u5927\u5c0f\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlocal buffer = zbuff.create(3200)\nlocal succ = i2s.recv(0, buffer, 3200);\n", "prefix": "i2s.recv"}, "i2s.close": {"body": "i2s.close(${1:id})", "description": "i2s.close(id) - \u5173\u95edi2s\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.close(0)\n", "prefix": "i2s.close"}, "i2s.on": {"body": "i2s.on(${1:id},${2:func})", "description": "i2s.on(id, func) - \u6ce8\u518cI2S\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\ni2s.on(0, function(id, buff)\n if buff then\n log.info(\"i2s get data in zbuff\")\n else\n log.info(\"i2s tx one block done\")\n end\nend)\n", "prefix": "i2s.on"}, "i2s.txStat": {"body": "i2s.txStat(${1:id})", "description": "i2s.txStat(id) - \u83b7\u53d6i2s\u7684\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint i2s id, i2s0\u51990, i2s1\u51991\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u603b\u5927\u5c0f\nreturn \u5e95\u5c42\u7f13\u51b2\u533a\u7684\u5269\u4f59\u5f85\u53d1\u9001\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u53d1\u9001\u7f13\u51b2\u533a\u7684\u72b6\u6001, \u4ece\u800c\u5224\u65ad\u662f\u5426\u9700\u8981\u7ee7\u7eed\u4f20\u5165\u97f3\u9891\u6570\u636e\nlocal max, remain = i2s.txStat(0)\nlog.info(\"i2s\u53d1\u9001\u7f13\u51b2\u533a\u72b6\u6001\", max, remain)\n", "prefix": "i2s.txStat"}, "i2s.getPara": {"body": "i2s.getPara(${1:id})", "description": "i2s.getPara(id) - \u83b7\u53d6I2S\u53c2\u6570\uff0c\u53c2\u6570\u5177\u4f53\u53c2\u8003setup\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u5728\u5de5\u4f5c\u72b6\u6001 true\u662f\nint \u6a21\u5f0f, 0 \u4e3b\u673a 1 \u4ece\u673a\nint \u91c7\u6837\u7387\nint \u6570\u636e\u4f4d\u6570\nint \u58f0\u9053\nint \u683c\u5f0f\nint 1\u4e2a\u58f0\u9053\u7684BCLK\u6570\u91cf\n", "prefix": "i2s.getPara"}, "iconv.open": {"body": "iconv.open(${1:tocode},${2:fromcode})", "description": "iconv.open(tocode, fromcode) - \u6253\u5f00\u76f8\u5e94\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nstring tocode$\u76ee\u6807\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nstring fromcode$\u6e90\u7f16\u7801\u683c\u5f0f$gb2312/ucs2/ucs2be/utf8\nreturn table$cd$\u7f16\u7801\u8f6c\u6362\u51fd\u6570\u7684\u8f6c\u6362\u53e5\u67c4$ \n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\n", "prefix": "iconv.open"}, "iconv:iconv": {"body": "iconv:iconv(${1:inbuf})", "description": "iconv:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u91ca\u4e49\uff1a\u5f85\u8f6c\u6362\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nnumber \u91ca\u4e49\uff1a\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c
\u53d6\u503c\uff1a0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local iconv = iconv.open(\"utf8\", \"ucs2be\")\n return iconv:iconv(ucs2s)\nend\n", "prefix": "iconv:iconv"}, "cd:iconv": {"body": "cd:iconv(${1:inbuf})", "description": "cd:iconv(inbuf) - \u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring inbuf$\u8f93\u5165\u5b57\u7b26\u4e32$\u4f8b\u5982:ucs2s \nreturn number$result$\u8fd4\u56de\u7f16\u7801\u8f6c\u6362\u540e\u7684\u7ed3\u679c$0\u6210\u529f,-1\u5931\u8d25\n\u4f8b\u5b50\uff1a\n--unicode\u5927\u7aef\u7f16\u7801 \u8f6c\u5316\u4e3a utf8\u7f16\u7801\nfunction ucs2beToUtf8(ucs2s)\n local cd = iconv.open(\"utf8\", \"ucs2be\")\n return cd:iconv(ucs2s)\nend\n", "prefix": "cd:iconv"}, "iconv.close": {"body": "iconv.close(${1:cd})", "description": "iconv.close(cd) - \u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring cd$iconv.open\u8fd4\u56de\u7684\u53e5\u67c4$ \nreturn \n\u4f8b\u5b50\uff1a\n--\u5173\u95ed\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\nlocal cd = iconv.open(\"utf8\", \"ucs2be\")\niconv.close(cd)\n", "prefix": "iconv.close"}, "io.exists": {"body": "io.exists(${1:path})", "description": "io.exists(path) - \u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlog.info(\"io\", \"file exists\", io.exists(\"/boottime\"))\n", "prefix": "io.exists"}, "io.fileSize": {"body": "io.fileSize(${1:path})", "description": "io.fileSize(path) - \u83b7\u53d6\u6587\u4ef6\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nint \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal fsize = io.fileSize(\"/bootime\")\nif fsize and fsize > 1024 then\n log.info(\"io\", \"file size\", fsize)\nend\n", "prefix": "io.fileSize"}, "io.readFile": {"body": "io.readFile(${1:path},${2:mode},${3:offset},${4:len})", "description": "io.readFile(path, mode, offset, len) - \u8bfb\u53d6\u6574\u4e2a\u6587\u4ef6,\u8bf7\u6ce8\u610f\u5185\u5b58\u6d88\u8017\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u8bfb\u53d6\u6a21\u5f0f, \u9ed8\u8ba4 \"rb\"\nint \u8d77\u59cb\u4f4d\u7f6e,\u9ed8\u8ba40\nint \u8bfb\u53d6\u957f\u5ea6,\u9ed8\u8ba4\u6574\u4e2a\u6587\u4ef6\n\u8fd4\u56de\u503c\uff1a\nstring \u6587\u4ef6\u6570\u636e,\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal data = io.readFile(\"/bootime\")\n-- \u6ce8\u610f: offset\u548clen\u53c2\u6570\u662f 2023.6.6\u6dfb\u52a0\u7684\n-- \u8bfb\u53d6abc.txt, \u5148\u8df3\u8fc7128\u5b57\u8282, \u7136\u540e\u8bfb\u53d6512\u5b57\u8282\u6570\u636e\nlocal data = io.readFile(\"/abc.txt\", \"rb\", 128, 512)\n", "prefix": "io.readFile"}, "io.writeFile": {"body": "io.writeFile(${1:path},${2:data})", "description": "io.writeFile(path, data) - \u5c06\u6570\u636e\u5199\u5165\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u8def\u5f84\nstring \u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nio.writeFile(\"/bootime\", \"1\")\n", "prefix": "io.writeFile"}, "io.fill": {"body": "io.fill(${1:buff},${2:offset},${3:len})", "description": "io.fill(buff, offset, len) - \u8bfb\u53d6\u6587\u4ef6\u5e76\u586b\u5145\u5230zbuff\u5185,\u4f46\u4e0d\u79fb\u52a8\u6307\u9488\u4f4d\u7f6e\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f53\nint \u5199\u5165\u7684\u4f4d\u7f6e,\u9ed8\u8ba4\u662f0\nint \u5199\u5165\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662fzbuff\u7684len\u51cf\u53bboffset\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u8fd4\u56de\u5b9e\u9645\u8bfb\u53d6\u5230\u7684\u957f\u5ea6\uff0c\u5982\u679c\u5c0f\u4e8e0\u4e5f\u8bf4\u660e\u662f\u8bfb\u53d6\u5931\u8d25\u4e86\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(1024)\nlocal f = io.open(\"/sd/test.txt\")\nif f then\n f:fill(buff)\nend\n", "prefix": "io.fill"}, "io.mkfs": {"body": "io.mkfs(${1:path})", "description": "io.mkfs(path) - \u683c\u5f0f\u5316\u6587\u4ef6\u7cfb\u7edf,\u9700\u6307\u5b9a\u6302\u8f7d\u70b9\n\u4f20\u5165\u503c\uff1a\nstring \u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkfs(\"/sd\")\nlog.info(\"fs\", \"mkfs\", ret, errio)\n", "prefix": "io.mkfs"}, "io.mkdir": {"body": "io.mkdir(${1:path})", "description": "io.mkdir(path) - \u521b\u5efa\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5efa\u7acb\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.mkdir(\"/data/\")\nlog.info(\"fs\", \"mkdir\", ret, errio)\n", "prefix": "io.mkdir"}, "io.rmdir": {"body": "io.rmdir(${1:path})", "description": "io.rmdir(path) - \u5220\u9664\u6587\u4ef6\u5939\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u79fb\u9664\u7684\u76ee\u5f55\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, errio = io.rmdir(\"/data/\")\nlog.info(\"fs\", \"rmdir\", ret, errio)\n", "prefix": "io.rmdir"}, "io.lsdir": {"body": "io.lsdir(${1:path},${2:len},${3:offset})", "description": "io.lsdir(path, len, offset) - \u5217\u51fa\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u679a\u4e3e\u7684\u76ee\u5f55\u8def\u5f84\nint \u6700\u5927\u957f\u5ea6, \u9ed8\u8ba410, \u6700\u9ad850\nint \u504f\u79fb\u91cf, \u9ed8\u8ba40, \u5f53\u76ee\u5f55\u6587\u4ef6\u5f88\u591a\u65f6\u5206\u9875\u67e5\u8be2\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u5e95\u5c42\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal ret, data = io.lsdir(\"/data/\", 10, 0)\nif ret then\n log.info(\"fs\", \"lsdir\", json.encode(data))\nelse\n log.info(\"fs\", \"lsdir\", \"fail\", ret, data)\nend\n", "prefix": "io.lsdir"}, "io.lsmount": {"body": "io.lsmount()", "description": "io.lsmount() - \u5217\u51fa\u6240\u6709\u6302\u8f7d\u70b9\n\u8fd4\u56de\u503c\uff1a\ntable \u6302\u8f7d\u70b9\u5217\u8868\n\u4f8b\u5b50\uff1a\nlocal data = io.lsmount()\nlog.info(\"fs\", \"lsmount\", json.encode(data))\n", "prefix": "io.lsmount"}, "ioqueue.init": {"body": "ioqueue.init(${1:hwtimer_id},${2:cmd_cnt},${3:repeat_cnt})", "description": "ioqueue.init(hwtimer_id,cmd_cnt,repeat_cnt) - \u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\uff0c\u9ed8\u8ba4\u75280\uff0c\u6839\u636e\u5b9e\u9645MCU\u786e\u5b9a\uff0cair105\u4e3a0~5\uff0c\u4e0epwm\u5171\u7528\uff0c\u540c\u4e00\u4e2a\u901a\u9053\u53f7\u4e0d\u80fd\u540c\u65f6\u4e3apwm\u548cioqueue\nint \u4e00\u4e2a\u5b8c\u6574\u5468\u671f\u9700\u8981\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u6bd4\u5b9e\u9645\u7684\u591a\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f1\uff0c\u5982\u679c\u51990\u5219\u8868\u793a\u65e0\u9650\u6b21\u6570\u5faa\u73af\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.init(0,10,5) --\u4ee5timer0\u4e3a\u65f6\u949f\u6e90\u521d\u59cb\u5316\u4e00\u4e2aio\u64cd\u4f5c\u961f\u5217\uff0c\u670910\u4e2a\u6709\u6548\u547d\u4ee4\uff0c\u5faa\u73af5\u6b21\n", "prefix": "ioqueue.init"}, "ioqueue.setdelay": {"body": "ioqueue.setdelay(${1:hwtimer_id},${2:time_us},${3:time_tick},${4:continue})", "description": "ioqueue.setdelay(hwtimer_id,time_us,time_tick,continue) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u5ef6\u65f6\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint \u5ef6\u65f6\u65f6\u95f4,0~65535us\nint \u5ef6\u65f6\u5fae\u8c03\u65f6\u95f4,0~255tick,\u603b\u7684\u5ef6\u65f6\u65f6\u95f4\u662ftime_us * 1us_tick + time_tick\nboolean \u662f\u5426\u8fde\u7eed\u662f\u8fde\u7eed\u5ef6\u65f6\uff0c\u9ed8\u8ba4\u5426\uff0c\u5982\u679c\u662f\uff0c\u5b9a\u65f6\u5668\u5728\u65f6\u95f4\u5230\u540e\u4e0d\u4f1a\u505c\u6b62\u800c\u662f\u91cd\u65b0\u8ba1\u65f6\uff0c\n", "prefix": "ioqueue.setdelay"}, "ioqueue.delay": {"body": "ioqueue.delay(${1:hwtimer_id})", "description": "ioqueue.delay(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u4e00\u6b21\u91cd\u590d\u5ef6\u65f6\uff0c\u5728\u524d\u9762\u5fc5\u987b\u6709setdelay\u4e14\u662f\u8fde\u7eed\u5ef6\u65f6\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setdelay(0,9,15,true) --\u5ef6\u65f69us+15\u4e2atick,\u5728\u4e4b\u540e\u9047\u5230delay\u547d\u4ee4\u65f6\uff0c\u4f1a\u5ef6\u65f69us+15\u4e2atick\nioqueue.delay(0)\n", "prefix": "ioqueue.delay"}, "ioqueue.setgpio": {"body": "ioqueue.setgpio(${1:hwtimer_id},${2:pin},${3:is_input},${4:pull_mode},${5:init_level})", "description": "ioqueue.setgpio(hwtimer_id,pin,is_input,pull_mode,init_level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6egpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nboolean \u662f\u5426\u662f\u8f93\u5165\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u521d\u59cb\u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setgpio(0,pin.PB01,true,gpio.PULLUP,0) --PB01\u8bbe\u7f6e\u6210\u4e0a\u62c9\u8f93\u5165\nioqueue.setgpio(0,pin.PB01,false,0,1)--PB01\u8bbe\u7f6e\u6210\u9ed8\u8ba4\u4e0a\u4e0b\u62c9\u8f93\u51fa\u9ad8\u7535\u5e73\n", "prefix": "ioqueue.setgpio"}, "ioqueue.input": {"body": "ioqueue.input(${1:hwtimer_id},${2:pin})", "description": "ioqueue.input(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bfb\u53d6gpio\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.input(0,pin.PB01)\n\n", "prefix": "ioqueue.input"}, "ioqueue.output": {"body": "ioqueue.output(${1:hwtimer_id},${2:pin},${3:level})", "description": "ioqueue.output(hwtimer_id,pin,level) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8f93\u51faGPIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u8f93\u51fa\u7535\u5e73\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.output(0,pin.PB01,0)\n", "prefix": "ioqueue.output"}, "ioqueue.set_cap": {"body": "ioqueue.set_cap(${1:hwtimer_id},${2:pin},${3:pull_mode},${4:irq_mode},${5:max_tick})", "description": "ioqueue.set_cap(hwtimer_id,pin,pull_mode,irq_mode,max_tick) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u8bbe\u7f6e\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nint \u5b9a\u65f6\u5668\u6700\u5927\u8ba1\u65f6\u65f6\u95f4 \u8003\u8651\u5230lua\u662fint\u7c7b\u578b\uff0c\u6700\u5c0f0x10000, \u6700\u5927\u503c\u4e3a0x7fffffff\uff0c\u9ed8\u8ba4\u4e3a\u6700\u5927\u503c\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.setcap(0,pin.PB01,gpio.PULLUP,gpio.FALLING,48000000)\n", "prefix": "ioqueue.set_cap"}, "ioqueue.capture": {"body": "ioqueue.capture(${1:hwtimer_id})", "description": "ioqueue.capture(hwtimer_id) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u6355\u83b7\u4e00\u6b21IO\u72b6\u6001\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capture(0)\n", "prefix": "ioqueue.capture"}, "ioqueue.capend": {"body": "ioqueue.capend(${1:hwtimer_id},${2:pin})", "description": "ioqueue.capend(hwtimer_id,pin) - \u5bf9io\u64cd\u4f5c\u961f\u5217\u589e\u52a0\u7ed3\u675f\u6355\u83b7\u67d0\u4e2aIO\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nint pin\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.capend(0,pin.PB01)\n", "prefix": "ioqueue.capend"}, "ioqueue.get": {"body": "ioqueue.get(${1:hwtimer_id},${2:input_buff},${3:capture_buff})", "description": "ioqueue.get(hwtimer_id, input_buff, capture_buff) - * \u83b7\u53d6io\u64cd\u4f5c\u961f\u5217\u4e2d\u8f93\u5165\u548c\u6355\u83b7\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nzbuff \u5b58\u653eIO\u8f93\u5165\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level \u5f62\u5f0f\u5b58\u653e\u6570\u636e\nzbuff \u5b58\u653eIO\u6355\u83b7\u6570\u636e\u7684buff\uff0c\u6309\u71671byte pin + 1byte level + 4byte tick\u5f62\u5f0f\u5b58\u653e\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u8f93\u5165\u6570\u636e\nint \u8fd4\u56de\u591a\u5c11\u7ec4IO\u6355\u83b7\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal input_cnt, capture_cnt = ioqueue.get(0, input_buff, capture_buff)\n", "prefix": "ioqueue.get"}, "ioqueue.start": {"body": "ioqueue.start(${1:hwtimer_id})", "description": "ioqueue.start(hwtimer_id) - \u542f\u52a8io\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.start(0)\n", "prefix": "ioqueue.start"}, "ioqueue.stop": {"body": "ioqueue.stop(${1:hwtimer_id})", "description": "ioqueue.stop(hwtimer_id) - \u505c\u6b62io\u64cd\u4f5c\u961f\u5217\uff0c\u53ef\u4ee5\u901a\u8fc7start\u4ece\u5934\u5f00\u59cb\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5df2\u7ecf\u5faa\u73af\u7684\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u8868\u793a\u4e00\u6b21\u5faa\u73af\u90fd\u6ca1\u6709\u5b8c\u6210\nint \u8fd4\u56de\u5355\u6b21\u5faa\u73af\u4e2d\u5df2\u7ecf\u6267\u884c\u7684cmd\u6b21\u6570\uff0c\u5982\u679c\u662f0\uff0c\u53ef\u80fd\u662f\u4e00\u6b21\u5faa\u73af\u521a\u521a\u7ed3\u675f\n\u4f8b\u5b50\uff1a\nioqueue.stop(0)\n", "prefix": "ioqueue.stop"}, "ioqueue.release": {"body": "ioqueue.release(${1:hwtimer_id})", "description": "ioqueue.release(hwtimer_id) - \u91ca\u653eio\u64cd\u4f5c\u961f\u5217\u7684\u8d44\u6e90\uff0c\u4e0b\u6b21\u4f7f\u7528\u5fc5\u987b\u91cd\u65b0init\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.release"}, "ioqueue.clear": {"body": "ioqueue.clear(${1:hwtimer_id})", "description": "ioqueue.clear(hwtimer_id) - \u6e05\u7a7aio\u64cd\u4f5c\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.clear(0)\n", "prefix": "ioqueue.clear"}, "ioqueue.done": {"body": "ioqueue.done(${1:hwtimer_id})", "description": "ioqueue.done(hwtimer_id) - \u68c0\u6d4bio\u64cd\u4f5c\u961f\u5217\u662f\u5426\u5df2\u7ecf\u6267\u884c\u5b8c\u6210\n\u4f20\u5165\u503c\uff1a\nint \u786c\u4ef6\u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u961f\u5217\u662f\u5426\u6267\u884c\u5b8c\u6210\uff0c\n\u4f8b\u5b50\uff1a\nlocal result = ioqueue.done(0)\n", "prefix": "ioqueue.done"}, "ioqueue.exti": {"body": "ioqueue.exti(${1:pin},${2:pull_mode},${3:irq_mode},${4:onoff})", "description": "ioqueue.exti(pin,pull_mode,irq_mode,onoff) - \u542f\u52a8/\u505c\u6b62\u4e00\u4e2a\u5e26\u7cfb\u7edftick\u8fd4\u56de\u7684\u5916\u90e8\u4e2d\u65ad\n\u4f20\u5165\u503c\uff1a\nint pin\nint \u4e0a\u4e0b\u62c9\u6a21\u5f0f,\u53ea\u80fd\u662f0,gpio.PULLUP,gpio.PULLDOWN\nint \u4e2d\u65ad\u6a21\u5f0f,\u53ea\u80fd\u662fgpio.BOTH,gpio.RISING,gpio.FALLING\nboolean \u5f00\u5173\uff0c\u9ed8\u8ba4\u662ffalse\u5173\nreturn \u65e0\n\u4f8b\u5b50\uff1a\nioqueue.exti(pin.PB01, gpio.PULLUP, gpio.BOTH, true)\nioqueue.exti(pin.PB01)\n", "prefix": "ioqueue.exti"}, "iotauth.aliyun": {"body": "iotauth.aliyun(${1:product_key},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp) - \u963f\u91cc\u4e91\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring product_key\nstring device_name\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"hmacmd5\" \"hmacsha1\" \"hmacsha256\" \u53ef\u9009,\u9ed8\u8ba4\"hmacmd5\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nbool istls \u662f\u5426TLS\u76f4\u8fde true:TLS\u76f4\u8fde false:TCP\u76f4\u8fde\u6a21\u5f0f \u9ed8\u8ba4TCP\u76f4\u8fde\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.aliyun(\"123456789\",\"abcdefg\",\"Y877Bgo8X5owd3lcB5wWDjryNPoB\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.aliyun"}, "iotauth.onenet": {"body": "iotauth.onenet(${1:produt_id},${2:device_name},${3:key},${4:method},${5:cur_timestamp},${6:version})", "description": "iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version) - \u4e2d\u56fd\u79fb\u52a8\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring produt_id \u4ea7\u54c1id\nstring device_name \u8bbe\u5907\u540d\u79f0\nstring key \u8bbe\u5907\u5bc6\u94a5\u6216\u8005\u9879\u76ee\u7684acess_key\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"md5\" \"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"md5\"\nnumber \u65f6\u95f4\u6233, \u4e0d\u7528\u586b\nstring version \u53ef\u9009 \u9ed8\u8ba4\"2018-10-31\"\nstring \u5f53key\u662faccess_key\u65f6, \u586b \"products/\" .. product_id . \u672c\u53c2\u6570\u4e8e2024.1.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\n-- OneNet\u5e73\u53f0\u5b98\u7f51: https://open.iot.10086.cn/\n-- OneNet\u6709\u591a\u79cd\u7248\u672c, \u6ce8\u610f\u533a\u5206, \u4e00\u822c\u6765\u8bf4produt_id\u7eaf\u6570\u5b57\u5c31\u662f\u8001\u7248\u672c, \u5426\u5219\u5c31\u662f\u65b0\u7248\u672c\n\n-- \u65b0\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u82f1\u6587\u5b57\u6bcd\u5b57\u7b26\u4e32\n-- \u5bf9\u5e94demo/onenet/studio\nlocal produt_id = \"Ck2AF9QD2K\"\nlocal device_name = \"test\"\nlocal device_key = \"KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, device_key)\nlog.info(\"onenet.new\", client_id,user_name,password)\n\n-- \u65e7\u7248OneNET\u5e73\u53f0, \u4ea7\u54c1id\u662f\u6570\u5b57\u5b57\u7b26\u4e32. 2024.1.29\u65b0\u589e\n-- \u5bf9\u5e94demo/onenet/old_mqtt\nlocal produt_id = \"12342334\"\nlocal device_name = \"test\"\nlocal access_key = \"adfasdfadsfadsf=\"\nlocal client_id,user_name,password = iotauth.onenet(produt_id, device_name, access_key, nil, nil, nil, \"products/\" .. produt_id)\nlog.info(\"onenet.old\", client_id,user_name,password)\n\n", "prefix": "iotauth.onenet"}, "iotauth.iotda": {"body": "iotauth.iotda(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.iotda(device_id,device_secret,cur_timestamp) - \u534e\u4e3a\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.iotda(\"6203cc94c7fb24029b110408_88888888\",\"123456789\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.iotda"}, "iotauth.qcloud": {"body": "iotauth.qcloud(${1:product_id},${2:device_name},${3:device_secret},${4:method},${5:cur_timestamp},${6:sdk_appid})", "description": "iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid) - \u817e\u8baf\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring \u4ea7\u54c1id,\u521b\u5efa\u9879\u76ee\u540e\u53ef\u4ee5\u67e5\u770b\u5230,\u7c7b\u4f3c\u4e8eLD8S5J1L07\nstring \u8bbe\u5907\u540d\u79f0,\u4f8b\u5982\u8bbe\u5907\u7684imei\u53f7\nstring \u8bbe\u5907\u5bc6\u94a5,\u521b\u5efa\u8bbe\u5907\u540e,\u67e5\u770b\u8bbe\u5907\u8be6\u60c5\u53ef\u5f97\u5230\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"sha1\" \"sha256\" \u53ef\u9009,\u9ed8\u8ba4\"sha256\"\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba4\u4e3a 32472115200(2999-01-01 0:0:0)\nstring sdk_appid \u53ef\u9009 \u9ed8\u8ba4\u4e3a\"12010126\"\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.qcloud(\"LD8S5J1L07\",\"test\",\"acyv3QDJrRa0fW5UE58KnQ==\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.qcloud"}, "iotauth.tuya": {"body": "iotauth.tuya(${1:device_id},${2:device_secret},${3:cur_timestamp})", "description": "iotauth.tuya(device_id,device_secret,cur_timestamp) - \u6d82\u9e26\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring device_id\nstring device_secret\nnumber cur_timestamp \u53ef\u9009 \u9ed8\u8ba47258089600(2200-01-01 0:0:0)\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.tuya(\"6c95875d0f5ba69607nzfl\",\"fb803786602df760\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.tuya"}, "iotauth.baidu": {"body": "iotauth.baidu(${1:iot_core_id},${2:device_key},${3:device_secret},${4:method},${5:cur_timestamp})", "description": "iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp) - \u767e\u5ea6\u7269\u8054\u7f51\u5e73\u53f0\u4e09\u5143\u7ec4\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nstring iot_core_id\nstring device_key\nstring device_secret\nstring method \u52a0\u5bc6\u65b9\u5f0f,\"MD5\" \"SHA256\" \u53ef\u9009,\u9ed8\u8ba4\"MD5\"\nnumber cur_timestamp \u53ef\u9009 \u5982\u4e0d\u586b\u5219\u4e0d\u6821\u9a8c\u65f6\u95f4\u6233\n\u8fd4\u56de\u503c\uff1a\nstring mqtt\u4e09\u5143\u7ec4 client_id\nstring mqtt\u4e09\u5143\u7ec4 user_name\nstring mqtt\u4e09\u5143\u7ec4 password\n\u4f8b\u5b50\uff1a\nlocal client_id,user_name,password = iotauth.baidu(\"abcd123\",\"mydevice\",\"ImSeCrEt0I1M2jkl\")\nprint(client_id,user_name,password)\n", "prefix": "iotauth.baidu"}, "ir.sendNEC": {"body": "ir.sendNEC(${1:pin},${2:addr},${3:cmd},${4:repeat},${5:disablePWM})", "description": "ir.sendNEC(pin, addr, cmd, repeat, disablePWM) - \u53d1\u9001NEC\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u4f7f\u7528\u7684GPIO\u5f15\u811a\u7f16\u53f7\nint \u7528\u6237\u7801\uff08\u5927\u4e8e0xff\u5219\u91c7\u7528Extended NEC\u6a21\u5f0f\uff09\nint \u6570\u636e\u7801\nint \u53ef\u9009\uff0c\u5f15\u5bfc\u7801\u53d1\u9001\u6b21\u6570\uff08110ms\u4e00\u6b21\uff09\uff0c\u9ed8\u8ba40\u6b21\nbool \u53ef\u9009\uff0c\u662f\u5426\u7981\u6b62\u76f4\u63a5\u53d1\u9001pwm\u6ce2\uff0c\u9ed8\u8ba4false\n\u4f8b\u5b50\uff1a\n--\u76f4\u63a5\u53d1\nir.sendNEC(0, 0x11, 0x22)\n--\u5916\u63a5\u4e8638K\u7684PWM\u8f7d\u6ce2\uff0c\u53ea\u63a7\u5236\u7535\u5e73\nir.sendNEC(0, 0x11, 0x22,0,true)\n", "prefix": "ir.sendNEC"}, "json.encode": {"body": "json.encode(${1:obj},${2:t})", "description": "json.encode(obj,t) - \u5c06\u5bf9\u8c61\u5e8f\u5217\u5316\u4e3ajson\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nobj \u9700\u8981\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\nstring \u6d6e\u70b9\u6570\u7cbe\u5ea6\u548c\u6a21\u5f0f,\u8fd9\u9879\u4e0d\u5b58\u5728\u7684\u65f6\u5019,\u4e3a\u9ed8\u8ba4\u503c\"7f\",\u6570\u5b57\u53ea\u652f\u6301\"0~14\",\u6a21\u5f0f\u53ea\u652f\u6301\"f/g\"\n\u8fd4\u56de\u503c\uff1a\nstring \u5e8f\u5217\u5316\u540e\u7684json\u5b57\u7b26\u4e32, \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nstring \u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.encode(obj)-->\u6d6e\u70b9\u6570\u7528%.7g\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\njson.encode(obj,\"12f\")-->\u6d6e\u70b9\u6570\u7528%.12f\u7684\u65b9\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\n\n-- 2024.1.9 \u8d77, \u9ed8\u8ba4\u4f7f\u75287f\u683c\u5f0f\u5316\u6d6e\u70b9\u6570\n-- \u4e4b\u524d\u7684\u7248\u672c\u4f7f\u7528 7g\u683c\u5f0f\u5316\u6d6e\u52a8\u6570\n", "prefix": "json.encode"}, "json.decode": {"body": "json.decode(${1:str})", "description": "json.decode(str) - \u5c06\u5b57\u7b26\u4e32\u53cd\u5e8f\u5217\u5316\u4e3a\u5bf9\u8c61\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u53cd\u5e8f\u5217\u5316\u7684json\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nobj \u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61(\u901a\u5e38\u662ftable), \u5931\u8d25\u7684\u8bdd\u8fd4\u56denil\nresult \u6210\u529f\u8fd4\u56de1,\u5426\u5219\u8fd4\u56de0\nerr \u53cd\u5e8f\u5217\u5316\u5931\u8d25\u7684\u62a5\u9519\u4fe1\u606f\n\u4f8b\u5b50\uff1a\njson.decode(\"[1,2,3,4,5,6]\")\n", "prefix": "json.decode"}, "keyboard.init": {"body": "keyboard.init(${1:port},${2:conf},${3:map},${4:debounce})", "description": "keyboard.init(port, conf, map, debounce) - \u521d\u59cb\u5316\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\nint \u542f\u7528\u7684keyboard\u7ba1\u811a\u63a9\u7801, \u4f8b\u5982\u4f7f\u7528keyboard0~9, \u5219\u63a9\u7801\u4e3a 0x1FF, \u82e5\u4f7f\u7528 0~3 \u5219 0xF\nint keyboard\u7ba1\u811a\u65b9\u5411\u6620\u5c04, \u5176\u4e2d\u8f93\u5165\u4e3a0,\u8f93\u51fa\u4e3a1, \u6309\u4f4d\u8bbe\u7f6e. \u4f8b\u5982 keyboard0~3\u4f5c\u4e3a\u8f93\u5165, keyboard4~7\u4e3a\u8f93\u5165, \u5219 0xF0\nint \u6d88\u6296\u914d\u7f6e,\u9884\u7559,\u53ef\u4ee5\u4e0d\u586b\n\u4f8b\u5b50\uff1a\n-- \u505a\u4e00\u4e2a 4*4 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~7, \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~7, \u5bf9\u5e94conf\u4e3a 0xFF\n-- \u5176\u4e2d0~3\u505a\u8f93\u5165, 4~7\u505a\u8f93\u51fa, \u5bf9\u5e94map \u4e3a 0xF0\nkeyboard.init(0, 0xFF, 0xF0)\n\n-- \u505a\u4e00\u4e2a 2*3 \u952e\u76d8\u77e9\u9635, \u4f7f\u7528 keyboard0~4, \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa\n-- \u4f7f\u7528 keyboard0~4, \u4e8c\u8fdb\u5236\u4e3a 11111, \u5bf9\u5e94conf\u7684\u5341\u516d\u8fdb\u5236\u8868\u8fbe\u4e3a 0x1F\n-- \u5176\u4e2d0~1\u505a\u8f93\u5165, 2~4\u505a\u8f93\u51fa, \u4e8c\u8fdb\u5236\u4e3a 11100 \u5bf9\u5e94map \u4e3a 0x14\n-- keyboard.init(0, 0xFF, 0x14)\n\nsys.subscribe(\"KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "keyboard.init"}, "lcd.init": {"body": "lcd.init(${1:tp},${2:args},${3:spi_dev},${4:init_in_service})", "description": "lcd.init(tp, args, spi_dev, init_in_service) - lcd\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lcd\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\uff1a
st7796
st7789
st7735
st7735v
st7735s
gc9a01
gc9106l
gc9306x
ili9486
custom\ntable \u9644\u52a0\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\uff1a
pin_pwr\uff08\u80cc\u5149\uff09\u4e3a\u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
port\uff1aspi\u7aef\u53e3,\u4f8b\u59820,1,2...\u5982\u679c\u4e3adevice\u65b9\u5f0f\u5219\u4e3a\"device\"
pin_dc\uff1alcd\u6570\u636e/\u547d\u4ee4\u9009\u62e9\u5f15\u811a
pin_rst\uff1alcd\u590d\u4f4d\u5f15\u811a
pin_pwr\uff1alcd\u80cc\u5149\u5f15\u811a \u53ef\u9009\u9879,\u53ef\u4e0d\u8bbe\u7f6e
direction\uff1alcd\u5c4f\u5e55\u65b9\u5411 0:0\u00b0 1:180\u00b0 2:270\u00b0 3:90\u00b0
w\uff1alcd \u6c34\u5e73\u5206\u8fa8\u7387
h\uff1alcd \u7ad6\u76f4\u5206\u8fa8\u7387
xoffset\uff1ax\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
yoffset\uff1ay\u504f\u79fb(\u4e0d\u540c\u5c4f\u5e55ic \u4e0d\u540c\u5c4f\u5e55\u65b9\u5411\u4f1a\u6709\u5dee\u5f02)
direction0\uff1a0\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction90\uff1a90\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction180\uff1a180\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
direction270\uff1a270\u00b0\u65b9\u5411\u547d\u4ee4\uff0c(\u4e0d\u540c\u5c4f\u5e55ic\u4f1a\u6709\u5dee\u5f02)
sleepcmd\uff1a\u7761\u7720\u547d\u4ee4\uff0c\u9ed8\u8ba40X10
wakecmd\uff1a\u5524\u9192\u547d\u4ee4\uff0c\u9ed8\u8ba40X11
interface_mode lcd\u6a21\u5f0f\uff0c\u9ed8\u8ba4lcd.WIRE_4_BIT_8_INTERFACE_I\nuserdata spi\u8bbe\u5907,\u5f53port = \"device\"\u65f6\u6709\u6548\nboolean \u5141\u8bb8\u521d\u59cb\u5316\u5728lcd service\u91cc\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi0\u7684st7735s \u6ce8\u610f:lcd\u521d\u59cb\u5316\u4e4b\u524d\u9700\u8981\u5148\u521d\u59cb\u5316spi\nspi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)\nlog.info(\"lcd.init\",\nlcd.init(\"st7735s\",{port = \"device\",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))\n", "prefix": "lcd.init"}, "lcd.close": {"body": "lcd.close()", "description": "lcd.close() - \u5173\u95edlcd\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\nlcd.close()\n", "prefix": "lcd.close"}, "lcd.on": {"body": "lcd.on()", "description": "lcd.on() - \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542flcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.on()\n", "prefix": "lcd.on"}, "lcd.off": {"body": "lcd.off()", "description": "lcd.off() - \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edlcd\u663e\u793a\u5c4f\u80cc\u5149\nlcd.off()\n", "prefix": "lcd.off"}, "lcd.sleep": {"body": "lcd.sleep()", "description": "lcd.sleep() - lcd\u7761\u7720\n\u4f8b\u5b50\uff1a\n-- lcd\u7761\u7720\nlcd.sleep()\n", "prefix": "lcd.sleep"}, "lcd.wakeup": {"body": "lcd.wakeup()", "description": "lcd.wakeup() - lcd\u5524\u9192\n\u4f8b\u5b50\uff1a\n-- lcd\u5524\u9192\nlcd.wakeup()\n", "prefix": "lcd.wakeup"}, "lcd.invon": {"body": "lcd.invon()", "description": "lcd.invon() - lcd\u53cd\u663e\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\nlcd.invon()\n", "prefix": "lcd.invon"}, "lcd.invoff": {"body": "lcd.invoff()", "description": "lcd.invoff() - lcd\u53cd\u663e\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- lcd\u53cd\u663e\u5173\u95ed\nlcd.invoff()\n", "prefix": "lcd.invoff"}, "lcd.cmd": {"body": "lcd.cmd(${1:cmd})", "description": "lcd.cmd(cmd) - lcd\u547d\u4ee4\n\u4f20\u5165\u503c\uff1a\nint cmd\n\u4f8b\u5b50\uff1a\n-- lcd\u547d\u4ee4\nlcd.cmd(0x21)\n", "prefix": "lcd.cmd"}, "lcd.data": {"body": "lcd.data(${1:data})", "description": "lcd.data(data) - lcd\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint data\n\u4f8b\u5b50\uff1a\n-- lcd\u6570\u636e\nlcd.data(0x21)\n", "prefix": "lcd.data"}, "lcd.setColor": {"body": "lcd.setColor(${1:back},${2:fore})", "description": "lcd.setColor(back,fore) - lcd\u989c\u8272\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u80cc\u666f\u8272\nint \u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u8bbe\u7f6e\nlcd.setColor(0xFFFF,0x0000)\n", "prefix": "lcd.setColor"}, "lcd.draw": {"body": "lcd.draw(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.draw(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nstring \u5b57\u7b26\u4e32\u6216zbuff\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlocal buff = zbuff.create({201,1,16},0x001F)\nlcd.draw(20,30,220,30,buff)\n", "prefix": "lcd.draw"}, "lcd.clear": {"body": "lcd.clear(${1:color})", "description": "lcd.clear(color) - lcd\u6e05\u5c4f\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u6e05\u5c4f\nlcd.clear()\n", "prefix": "lcd.clear"}, "lcd.fill": {"body": "lcd.fill(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "lcd.fill(x1, y1, x2, y2,color) - lcd\u989c\u8272\u586b\u5145\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e,\u4e0d\u542b\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e,\u4e0d\u542b\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u80cc\u666f\u8272\n\u4f8b\u5b50\uff1a\n-- lcd\u989c\u8272\u586b\u5145\nlcd.fill(20,30,220,30,0x0000)\n", "prefix": "lcd.fill"}, "lcd.drawPoint": {"body": "lcd.drawPoint(${1:x0},${2:y0},${3:color})", "description": "lcd.drawPoint(x0,y0,color) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint \u70b9\u7684X\u4f4d\u7f6e.\nint \u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawPoint(20,30,0x001F)\n", "prefix": "lcd.drawPoint"}, "lcd.drawLine": {"body": "lcd.drawLine(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawLine(x0,y0,x1,y1,color) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawLine(20,30,220,30,0x001F)\n", "prefix": "lcd.drawLine"}, "lcd.drawRectangle": {"body": "lcd.drawRectangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:color})", "description": "lcd.drawRectangle(x0,y0,x1,y1,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684X\u4f4d\u7f6e.\nint \u53f3\u4e0b\u8fb9\u7f18\u7684Y\u4f4d\u7f6e.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawRectangle(20,40,220,80,0x001F)\n", "prefix": "lcd.drawRectangle"}, "lcd.drawCircle": {"body": "lcd.drawCircle(${1:x0},${2:y0},${3:r},${4:color})", "description": "lcd.drawCircle(x0,y0,r,color) - \u4ecex / y\u4f4d\u7f6e\uff08\u5706\u5fc3\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u5706\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u7684X\u4f4d\u7f6e.\nint \u5706\u5fc3\u7684Y\u4f4d\u7f6e.\nint \u534a\u5f84.\nint \u7ed8\u753b\u989c\u8272 \u53ef\u9009\u53c2\u6570,\u9ed8\u8ba4\u524d\u666f\u8272\n\u4f8b\u5b50\uff1a\nlcd.drawCircle(120,120,20,0x001F)\n", "prefix": "lcd.drawCircle"}, "lcd.drawQrcode": {"body": "lcd.drawQrcode(${1:x},${2:y},${3:str},${4:size})", "description": "lcd.drawQrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lcd.drawQrcode"}, "lcd.setFont": {"body": "lcd.setFont(${1:font},${2:indentation})", "description": "lcd.setFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nint font lcd.font_XXX \u8bf7\u67e5\u9605\u5e38\u91cf\u8868\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548,\u8c03\u7528lcd.drawStr\u524d\u4e00\u5b9a\u8981\u5148\u8bbe\u7f6e\n\n-- \u82e5\u63d0\u793a \"only font pointer is allow\" , \u5219\u4ee3\u8868\u5f53\u524d\u56fa\u4ef6\u4e0d\u542b\u5bf9\u5e94\u5b57\u4f53, \u53ef\u4f7f\u7528\u4e91\u7f16\u8bd1\u670d\u52a1\u514d\u8d39\u5b9a\u5236\n-- \u4e91\u7f16\u8bd1\u6587\u6863: https://wiki.luatos.com/develop/compile/Cloud_compilation.html\n\n-- lcd\u5e93\u7684\u9ed8\u8ba4\u5b57\u4f53\u5747\u4ee5 lcd.font_ \u5f00\u5934\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm12_chinese) -- \u5177\u4f53\u53d6\u503c\u53ef\u53c2\u8003api\u6587\u6863\u7684\u5e38\u91cf\u8868\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.setFont"}, "lcd.drawStr": {"body": "lcd.drawStr(${1:x},${2:y},${3:str},${4:fg_color})", "description": "lcd.drawStr(x,y,str,fg_color) - \u663e\u793a\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807 \u6ce8\u610f:\u6b64(x,y)\u4e3a\u5de6\u4e0b\u8d77\u59cb\u5750\u6807\nstring str \u6587\u4ef6\u5185\u5bb9\nint fg_color str\u989c\u8272 \u6ce8\u610f:\u6b64\u53c2\u6570\u53ef\u9009\uff0c\u5982\u4e0d\u586b\u5199\u5219\u4f7f\u7528\u4e4b\u524d\u8bbe\u7f6e\u7684\u989c\u8272\uff0c\u7ed8\u5236\u53ea\u4f1a\u7ed8\u5236\u5b57\u4f53\u90e8\u5206\uff0c\u80cc\u666f\u9700\u8981\u81ea\u5df1\u6e05\u9664\n\u4f8b\u5b50\uff1a\n-- \u663e\u793a\u4e4b\u524d\u5148\u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nlcd.setFont(lcd.font_opposansm12)\nlcd.drawStr(40,10,\"drawStr\")\nsys.wait(2000)\nlcd.setFont(lcd.font_opposansm16_chinese)\nlcd.drawStr(40,40,\"drawStr\u6d4b\u8bd5\")\n", "prefix": "lcd.drawStr"}, "lcd.drawGtfontGb2312": {"body": "lcd.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontGb2312"}, "lcd.drawGtfontGb2312Gray": {"body": "lcd.drawGtfontGb2312Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontGb2312Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, gtfont\u662f\u989d\u5916\u7684\u5b57\u4f53\u82af\u7247\u786c\u4ef6, \u9700\u8981\u5916\u6302\u5728SPI\u603b\u7ebf\u624d\u80fd\u8c03\u7528\u672c\u51fd\u6570\u7684\nlcd.drawGtfontGb2312Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontGb2312Gray"}, "lcd.drawGtfontUtf8": {"body": "lcd.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "lcd.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "lcd.drawGtfontUtf8"}, "lcd.drawGtfontUtf8Gray": {"body": "lcd.drawGtfontUtf8Gray(${1:str},${2:size},${3:gray},${4:x},${5:y})", "description": "lcd.drawGtfontUtf8Gray(str,size,gray,x,y) - \u4f7f\u7528gtfont\u7070\u5ea6\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint gray \u7070\u5ea6[1\u9636/2\u9636/3\u9636/4\u9636]\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nlcd.drawGtfontUtf8Gray(\"\u554a\u554a\u554a\",32,4,0,40)\n", "prefix": "lcd.drawGtfontUtf8Gray"}, "lcd.getSize": {"body": "lcd.getSize()", "description": "lcd.getSize() - \u83b7\u53d6\u5c4f\u5e55\u5c3a\u5bf8\n\u8fd4\u56de\u503c\uff1a\nint \u5bbd, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\nint \u9ad8, \u5982\u679c\u672a\u521d\u59cb\u5316\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"lcd\", \"size\", lcd.getSize())\n", "prefix": "lcd.getSize"}, "lcd.drawXbm": {"body": "lcd.drawXbm(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "lcd.drawXbm(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef \u9634\u7801 \u9010\u884c \u9006\u5411\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nlcd.drawXbm(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "lcd.drawXbm"}, "lcd.showImage": {"body": "lcd.showImage(${1:x},${2:y},${3:file})", "description": "lcd.showImage(x, y, file) - \u663e\u793a\u56fe\u7247,\u5f53\u524d\u53ea\u652f\u6301jpg,jpeg\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nstring \u6587\u4ef6\u8def\u5f84\n\u4f8b\u5b50\uff1a\nlcd.showImage(0,0,\"/luadb/logo.jpg\")\n", "prefix": "lcd.showImage"}, "lcd.flush": {"body": "lcd.flush()", "description": "lcd.flush() - \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u754c\u9762, \u4ec5\u8bbe\u7f6ebuff\u4e14\u7981\u7528\u81ea\u52a8\u5c5e\u6027\u540e\u4f7f\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil/false\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e0e lcd.setupBuff lcd.autoFlush \u914d\u5408\u4f7f\u7528\nlcd.flush()\n", "prefix": "lcd.flush"}, "lcd.setupBuff": {"body": "lcd.setupBuff(${1:conf},${2:onheap})", "description": "lcd.setupBuff(conf, onheap) - \u8bbe\u7f6e\u663e\u793a\u7f13\u51b2\u533a, \u6240\u9700\u5185\u5b58\u5927\u5c0f\u4e3a 2\u00d7\u5bbd\u00d7\u9ad8 \u5b57\u8282. \u8bf7\u8861\u91cf\u5185\u5b58\u9700\u6c42\u4e0e\u4e1a\u52a1\u6240\u9700\u7684\u5237\u65b0\u9891\u6b21.\n\u4f20\u5165\u503c\uff1a\nuserdata conf\u6307\u9488, \u4e0d\u9700\u8981\u4f20\nbool true\u4f7f\u7528heap\u5185\u5b58, false\u4f7f\u7528vm\u5185\u5b58, \u9ed8\u8ba4\u4f7f\u7528vm\u5185\u5b58, \u4e0d\u9700\u8981\u4e3b\u52a8\u4f20\n\u8fd4\u56de\u503c\uff1a\nbool \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcd\u7684buff\u7f13\u51b2\u533a, \u53ef\u7406\u89e3\u4e3aFrameBuffer\u533a\u57df.\nlcd.setupBuff()\n", "prefix": "lcd.setupBuff"}, "lcd.autoFlush": {"body": "lcd.autoFlush(${1:enable})", "description": "lcd.autoFlush(enable) - \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0, \u9700\u914d\u5408lcd.setupBuff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5237\u65b0,\u9ed8\u8ba4\u4e3atrue\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6ebuff \u5e76\u7981\u7528\u81ea\u52a8\u66f4\u65b0\nlcd.setupBuff()\nlcd.autoFlush(false)\n-- \u7981\u6b62\u81ea\u52a8\u66f4\u65b0\u540e, \u9700\u8981\u4f7f\u7528 lcd.flush() \u4e3b\u52a8\u5237\u65b0\u6570\u636e\u5230\u5c4f\u5e55\n", "prefix": "lcd.autoFlush"}, "lcd.rgb565": {"body": "lcd.rgb565(${1:r},${2:g},${3:b},${4:swap})", "description": "lcd.rgb565(r, g, b, swap) - RGB565\u989c\u8272\u751f\u6210\n\u4f20\u5165\u503c\uff1a\nint \u7ea2\u8272, 0x00 ~ 0xFF\nint \u7eff\u8272, 0x00 ~ 0xFF\nint \u84dd\u8272, 0x00 ~ 0xFF\nbool \u662f\u5426\u7ffb\u8f6c, true \u7ffb\u8f6c, false \u4e0d\u7ffb\u8f6c. \u9ed8\u8ba4\u7ffb\u8f6c\n\u8fd4\u56de\u503c\uff1a\nint \u989c\u8272\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u652f\u6301\u591a\u79cd\u6a21\u5f0f, \u53c2\u6570\u6570\u91cf\u5206\u522b\u662f 1, 2, 3, 4\n-- 1. \u5355\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, swap = true, \u63a8\u8350\nlocal red = lcd.rgb565(0xFF0000)\nlocal green = lcd.rgb565(0x00FF00)\nlocal blue = lcd.rgb565(0x0000FF)\n\n-- 2. \u4e24\u53c2\u6570\u5f62\u5f0f, 24bit RGB\u503c, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF0000, true)\nlocal green = lcd.rgb565(0x00FF00, true)\nlocal blue = lcd.rgb565(0x0000FF, true)\n\n-- 3. \u4e09\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF)\n\n-- 4. \u56db\u53c2\u6570\u5f62\u5f0f, \u7ea2/\u7eff/\u84dd, \u54048bit, \u589e\u52a0swap\u7684\u8bbe\u7f6e\nlocal red = lcd.rgb565(0xFF, 0x00, 0x00, true)\nlocal green = lcd.rgb565(0x00, 0xFF, 0x00, true)\nlocal blue = lcd.rgb565(0x00, 0x00, 0xFF, true)\n", "prefix": "lcd.rgb565"}, "lcdseg.setup": {"body": "lcdseg.setup(${1:bias},${2:duty},${3:vlcd},${4:com_number},${5:fresh_rate},${6:com_mark},${7:seg_mark})", "description": "lcdseg.setup(bias, duty, vlcd, com_number, fresh_rate, com_mark, seg_mark) - \u521d\u59cb\u5316lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint bias\u503c,\u901a\u5e38\u4e3a 1/3 bias, \u5bf9\u5e94 lcdseg.BIAS_ONETHIRD\nint duty\u503c,\u901a\u5e38\u4e3a 1/4 duty, \u5bf9\u5e94 lcdseg.DUTY_ONEFOURTH\nint \u7535\u538b, \u5355\u4f4d100mV, \u4f8b\u59822.7v\u519927. air103\u652f\u6301\u7684\u503c\u6709 27/29/31/33\nint COM\u811a\u7684\u6570\u91cf, \u53d6\u51b3\u4e8e\u5177\u4f53\u6a21\u5757, air103\u652f\u63011-4\nint \u5237\u65b0\u7387,\u901a\u5e38\u4e3a60, \u5bf9\u5e9460HZ\nint COM\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFF,\u5168\u90e8\u542f\u7528.\u82e5\u53ea\u542f\u7528COM0/COM1, \u52190x03\nint seg\u542f\u7528\u4e0e\u5426\u7684\u63a9\u7801, \u9ed8\u8ba4\u4e3a0xFFFFFFFF,\u5373\u5168\u90e8\u542f\u7528. \u82e5\u53ea\u542f\u7528\u524d16\u4e2a, 0xFFFF\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316lcdseg\nif lcdseg.setup(lcdseg.BIAS_ONETHIRD, lcdseg.DUTY_ONEFOURTH, 33, 4, 60) then\n lcdseg.enable(1)\n\n lcdseg.seg_set(0, 1, 1)\n lcdseg.seg_set(2, 0, 1)\n lcdseg.seg_set(3, 31, 1)\nend\n", "prefix": "lcdseg.setup"}, "lcdseg.enable": {"body": "lcdseg.enable(${1:en})", "description": "lcdseg.enable(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u5e93\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.enable"}, "lcdseg.power": {"body": "lcdseg.power(${1:en})", "description": "lcdseg.power(en) - \u542f\u7528\u6216\u7981\u7528lcdseg\u7684\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.power"}, "lcdseg.seg_set": {"body": "lcdseg.seg_set(${1:com},${2:seg},${3:en})", "description": "lcdseg.seg_set(com, seg, en) - \u8bbe\u7f6e\u5177\u4f53\u4e00\u4e2a\u6bb5\u7801\u7684\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint COM\u53f7\nint seg\u53f7 \u8981\u66f4\u6539\u7684\u5b57\u6bb5\u7684\u4f4d\u7d22\u5f15\nint 1\u542f\u7528,0\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\n", "prefix": "lcdseg.seg_set"}, "libcoap.new": {"body": "libcoap.new(${1:code},${2:uri},${3:headers},${4:payload})", "description": "libcoap.new(code, uri, headers, payload) - \u521b\u5efa\u4e00\u4e2acoap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nint coap\u7684code, \u4f8b\u5982libcoap.GET/libcoap.POST/libcoap.PUT/libcoap.DELETE\nstring \u76ee\u6807URI,\u5fc5\u987b\u586b\u5199, \u4e0d\u9700\u8981\u52a0\u4e0a/\u5f00\u5934\ntable \u8bf7\u6c42\u5934,\u7c7b\u4f3c\u4e8ehttp\u7684headers,\u53ef\u9009\nstring \u8bf7\u6c42\u4f53,\u7c7b\u4f3c\u4e8ehttp\u7684body,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u4e00\u4e2a\u8bf7\u6c42\u670d\u52a1\u5668time\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nlocal data = coapdata:rawdata()\n", "prefix": "libcoap.new"}, "libcoap.parse": {"body": "libcoap.parse(${1:str})", "description": "libcoap.parse(str) - \u89e3\u6790coap\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring coap\u6570\u636e\u5305\n\u8fd4\u56de\u503c\uff1a\nuserdata coap\u6570\u636e\u5305,\u5982\u679c\u89e3\u6790\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode(), coapdata:data())\n", "prefix": "libcoap.parse"}, "coapdata:msgid": {"body": "coapdata:msgid()", "description": "coapdata:msgid() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684msgid\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684msgid\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:msgid())\n", "prefix": "coapdata:msgid"}, "coapdata:token": {"body": "coapdata:token()", "description": "coapdata:token() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684token\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684token\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:token())\n", "prefix": "coapdata:token"}, "coapdata:rawdata": {"body": "coapdata:rawdata()", "description": "coapdata:rawdata() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e,\u7528\u4e8e\u53d1\u9001\u5230\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684\u4e8c\u8fdb\u5236\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.new(libcoap.GET, \"time\")\nnetc:send(coapdata:rawdata())\n", "prefix": "coapdata:rawdata"}, "coapdata:code": {"body": "coapdata:code()", "description": "coapdata:code() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684code\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684code\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:code())\n", "prefix": "coapdata:code"}, "coapdata:hcode": {"body": "coapdata:hcode()", "description": "coapdata:hcode() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684http code, \u6bd4coap\u539f\u59cb\u7684code\u8981\u53cb\u597d\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684http code,\u4f8b\u5982200,205,404\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:hcode())\n", "prefix": "coapdata:hcode"}, "coapdata:type": {"body": "coapdata:type(${1:t})", "description": "coapdata:type(t) - \u83b7\u53d6coap\u6570\u636e\u5305\u7684type, \u4f8b\u5982libcoap.CON/NON/ACK/RST\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7684type\u503c,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nint coap\u6570\u636e\u5305\u7684type\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:type())\n", "prefix": "coapdata:type"}, "coapdata:data": {"body": "coapdata:data()", "description": "coapdata:data() - \u83b7\u53d6coap\u6570\u636e\u5305\u7684data\n\u8fd4\u56de\u503c\uff1a\nstring coap\u6570\u636e\u5305\u7684data\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790\u670d\u52a1\u5668\u4f20\u5165\u7684\u6570\u636e\u5305\nlocal coapdata = libcoap.parse(indata)\nlog.info(\"coapdata\", coapdata:data())\n", "prefix": "coapdata:data"}, "libgnss.parse": {"body": "libgnss.parse(${1:str})", "description": "libgnss.parse(str) - \u5904\u7406nmea\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u539f\u59cbnmea\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\u6570\u636e\nlibgnss.parse(indata)\nlog.info(\"nmea\", json.encode(libgnss.getRmc(), \"11g\"))\n", "prefix": "libgnss.parse"}, "libgnss.isFix": {"body": "libgnss.isFix()", "description": "libgnss.isFix() - \u5f53\u524d\u662f\u5426\u5df2\u7ecf\u5b9a\u4f4d\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5b9a\u4f4d\u6210\u529f\u4e0e\u5426\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"isFix\", libgnss.isFix())\n", "prefix": "libgnss.isFix"}, "libgnss.getIntLocation": {"body": "libgnss.getIntLocation(${1:speed_type})", "description": "libgnss.getIntLocation(speed_type) - \u83b7\u53d6\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u901f\u5ea6\u5355\u4f4d,\u9ed8\u8ba4\u662fm/h\n\u8fd4\u56de\u503c\uff1a\nint lat\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint lng\u6570\u636e, \u683c\u5f0f\u4e3a ddddddddd\nint speed\u6570\u636e, \u5355\u4f4d\u7c73. \u4e8e2023.9.26\u4fee\u6b63\n\u4f8b\u5b50\uff1a\n-- \u5efa\u8bae\u7528libgnss.getRmc(1)\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n\n-- 2023.12.11 \u65b0\u589espeed_type\u53c2\u6570\n--[[\n\u901f\u5ea6\u5355\u4f4d\u53ef\u9009\u503c\n0 - m/h \u7c73/\u5c0f\u65f6, \u9ed8\u8ba4\u503c, \u6574\u578b\n1 - m/s \u7c73/\u79d2, \u6d6e\u70b9\u6570\n2 - km/h \u5343\u7c73/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n3 - kn/h \u82f1\u91cc/\u5c0f\u65f6, \u6d6e\u70b9\u6570\n]]\n-- \u9ed8\u8ba4 \u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation())\n-- \u7c73/\u79d2\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(1))\n-- \u5343\u7c73/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(2))\n-- \u82f1\u91cc/\u5c0f\u65f6\nlog.info(\"nmea\", \"loc\", libgnss.getIntLocation(3))\n", "prefix": "libgnss.getIntLocation"}, "libgnss.getRmc": {"body": "libgnss.getRmc(${1:data_mode})", "description": "libgnss.getRmc(data_mode) - \u83b7\u53d6\u539f\u59cbRMC\u4f4d\u7f6e\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cbRMC\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbrmc\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"rmc\", json.encode(libgnss.getRmc(2)))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"course\":0,\n \"valid\":true, // true\u5b9a\u4f4d\u6210\u529f,false\u5b9a\u4f4d\u4e22\u5931\n \"lat\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"lng\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"variation\":0, // \u5730\u9762\u822a\u5411\uff0c\u5355\u4f4d\u4e3a\u5ea6\uff0c\u4ece\u5317\u5411\u8d77\u987a\u65f6\u9488\u8ba1\u7b97\n \"speed\":0 // \u5730\u9762\u901f\u5ea6, \u5355\u4f4d\u4e3a\"\u8282\"\n \"year\":2023, // \u5e74\u4efd\n \"month\":1, // \u6708\u4efd, 1-12\n \"day\":5, // \u6708\u4efd\u5929, 1-31\n \"hour\":7, // \u5c0f\u65f6,0-23\n \"min\":23, // \u5206\u949f,0-59\n \"sec\":20, // \u79d2,0-59\n}\n]]\n", "prefix": "libgnss.getRmc"}, "libgnss.getGsv": {"body": "libgnss.getGsv()", "description": "libgnss.getGsv() - \u83b7\u53d6\u539f\u59cbGSV\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSV\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"gsv\", json.encode(libgnss.getGsv()))\n--[[\u5b9e\u4f8b\u8f93\u51fa\n{\n \"total_sats\":24, // \u603b\u53ef\u89c1\u536b\u661f\u6570\u91cf\n \"sats\":[\n {\n \"snr\":27, // \u4fe1\u566a\u6bd4\n \"azimuth\":278, // \u65b9\u5411\u89d2\n \"elevation\":59, // \u4ef0\u89d2\n \"tp\":0, // 0 - GPS, 1 - BD\n \"nr\":4 // \u536b\u661f\u7f16\u53f7\n },\n // \u8fd9\u91cc\u5ffd\u7565\u4e8622\u4e2a\u536b\u661f\u7684\u4fe1\u606f\n {\n \"snr\":0,\n \"azimuth\":107,\n \"elevation\":19,\n \"tp\":1,\n \"nr\":31\n }\n ]\n}\n]]\n", "prefix": "libgnss.getGsv"}, "libgnss.getGsa": {"body": "libgnss.getGsa(${1:data_mode})", "description": "libgnss.getGsa(data_mode) - \u83b7\u53d6\u539f\u59cbGSA\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbGSA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\nlog.info(\"nmea\", \"gsa\", json.encode(libgnss.getGsa(), \"11g\"))\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f0, \u4e5f\u5c31\u662f\u9ed8\u8ba4\u6a21\u5f0f)\n--[[\n{\n \"sats\":[ // \u6b63\u5728\u4f7f\u7528\u7684\u536b\u661f\u7f16\u53f7\n 9,\n 6,\n 16,\n 16,\n 26,\n 21,\n 27,\n 27,\n 4,\n 36,\n 3,\n 7,\n 8,\n 194\n ],\n \"vdop\":0.03083333, // \u5782\u76f4\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"pdop\":0.0455, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"fix_type\":3, // \u5b9a\u4f4d\u6a21\u5f0f, 1-\u672a\u5b9a\u4f4d, 2-2D\u5b9a\u4f4d, 3-3D\u5b9a\u4f4d\n \"hdop\":0.0335 // \u4f4d\u7f6e\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n}\n]]\n\n-- \u793a\u4f8b\u6570\u636e(\u6a21\u5f0f1), 2024.5.26\u65b0\u589e\n[\n {\"pdop\":7.8299999,\"sats\":[13,15,18,23],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3},\n {\"pdop\":7.8299999,\"sats\":[20,35,8,13],\"vdop\":3.2400000,\"hdop\":7.1300001,\"fix_type\":3}\n]\n", "prefix": "libgnss.getGsa"}, "libgnss.getVtg": {"body": "libgnss.getVtg(${1:data_mode})", "description": "libgnss.getVtg(data_mode) - \u83b7\u53d6VTA\u901f\u5ea6\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009, 3-\u539f\u59cb\u5b57\u7b26\u4e32, \u4e0d\u4f20\u6216\u8005\u4f20\u5176\u4ed6\u503c, \u5219\u8fd4\u56de\u6d6e\u70b9\u503c\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbVTA\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u89e3\u6790nmea\nlog.info(\"nmea\", \"vtg\", json.encode(libgnss.getVtg()))\n-- \u793a\u4f8b\n--[[\n{\n \"speed_knots\":0, // \u901f\u5ea6, \u82f1\u91cc/\u5c0f\u65f6\n \"true_track_degrees\":0, // \u771f\u5317\u65b9\u5411\u89d2\n \"magnetic_track_degrees\":0, // \u78c1\u5317\u65b9\u5411\u89d2\n \"speed_kph\":0 // \u901f\u5ea6, \u5343\u7c73/\u5c0f\u65f6\n}\n-- \u63d0\u9192: Air780EG\u548cAir510U,\u5728\u901f\u5ea6<5km/h\u65f6, \u4e0d\u4f1a\u8fd4\u56de\u65b9\u5411\u89d2\n]]\n", "prefix": "libgnss.getVtg"}, "libgnss.getZda": {"body": "libgnss.getZda()", "description": "libgnss.getZda() - \u83b7\u53d6\u539f\u59cbZDA\u65f6\u95f4\u548c\u65e5\u671f\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u539f\u59cbzda\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"nmea\", \"zda\", json.encode(libgnss.getZda()))\n-- \u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"minute_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5206\u949f, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"hour_offset\":0, // \u672c\u5730\u65f6\u533a\u7684\u5c0f\u65f6, \u4e00\u822c\u56fa\u5b9a\u8f93\u51fa0\n \"year\":2023 // UTC \u5e74\uff0c\u56db\u4f4d\u6570\u5b57\n \"month\":1, // UTC \u6708\uff0c\u4e24\u4f4d\uff0c01 ~ 12\n \"day\":5, // UTC \u65e5\uff0c\u4e24\u4f4d\u6570\u5b57\uff0c01 ~ 31\n \"hour\":7, // \u5c0f\u65f6\n \"min\":50, // \u5206\n \"sec\":14, // \u79d2\n}\n]]\n", "prefix": "libgnss.getZda"}, "libgnss.debug": {"body": "libgnss.debug(${1:mode})", "description": "libgnss.debug(mode) - \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool true\u5f00\u542f\u8c03\u8bd5,false\u5173\u95ed\u8c03\u8bd5,\u9ed8\u8ba4\u4e3afalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u8c03\u8bd5, \u4f1a\u8f93\u51faGNSS\u539f\u59cb\u6570\u636e\u5230\u65e5\u5fd7\u4e2d\nlibgnss.debug(true)\n-- \u5173\u95ed\u8c03\u8bd5\nlibgnss.debug(false)\n", "prefix": "libgnss.debug"}, "libgnss.getGga": {"body": "libgnss.getGga(${1:data_mode})", "description": "libgnss.getGga(data_mode) - \u83b7\u53d6GGA\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f, 3-\u539f\u59cb\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\ntable GGA\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gga = libgnss.getGga(2)\nif gga then\n log.info(\"GGA\", json.encode(gga, \"11g\"))\nend\n--\u5b9e\u4f8b\u8f93\u51fa\n--[[\n{\n \"dgps_age\":0, // \u5dee\u5206\u6821\u6b63\u65f6\u5ef6\uff0c\u5355\u4f4d\u4e3a\u79d2\n \"fix_quality\":1, // \u5b9a\u4f4d\u72b6\u6001\u6807\u8bc6 0 - \u65e0\u6548,1 - \u5355\u70b9\u5b9a\u4f4d,2 - \u5dee\u5206\u5b9a\u4f4d\n \"satellites_tracked\":14, // \u53c2\u4e0e\u5b9a\u4f4d\u7684\u536b\u661f\u6570\u91cf\n \"altitude\":0.255, // \u6d77\u5e73\u9762\u5206\u79bb\u5ea6, \u6216\u8005\u6210\u4e3a\u6d77\u62d4, \u5355\u4f4d\u662f\u7c73,\n \"hdop\":0.0335, // \u6c34\u5e73\u7cbe\u5ea6\u56e0\u5b50\uff0c0.00 - 99.99\uff0c\u4e0d\u5b9a\u4f4d\u65f6\u503c\u4e3a 99.99\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"height\":0 // \u692d\u7403\u9ad8\uff0c\u56fa\u5b9a\u8f93\u51fa 1 \u4f4d\u5c0f\u6570\n}\n]]\n", "prefix": "libgnss.getGga"}, "libgnss.getGll": {"body": "libgnss.getGll(${1:data_mode})", "description": "libgnss.getGll(data_mode) - \u83b7\u53d6GLL\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u5750\u6807\u7c7b\u6570\u636e\u7684\u683c\u5f0f, 0-DDMM.MMM\u683c\u5f0f, 1-DDDDDDD\u683c\u5f0f, 2-DD.DDDDD\u683c\u5f0f\n\u8fd4\u56de\u503c\uff1a\ntable GLL\u6570\u636e, \u82e5\u5982\u4e0d\u5b58\u5728\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal gll = libgnss.getGll(2)\nif gll then\n log.info(\"GLL\", json.encode(gll, \"11g\"))\nend\n-- \u5b9e\u4f8b\u6570\u636e\n--[[\n{\n \"status\":\"A\", // \u5b9a\u4f4d\u72b6\u6001, A\u6709\u6548, B\u65e0\u6548\n \"mode\":\"A\", // \u5b9a\u4f4d\u6a21\u5f0f, V\u65e0\u6548, A\u5355\u70b9\u89e3, D\u5dee\u5206\u89e3\n \"sec\":20, // \u79d2, UTC\u65f6\u95f4\u4e3a\u51c6\n \"min\":23, // \u5206\u949f, UTC\u65f6\u95f4\u4e3a\u51c6\n \"hour\":7, // \u5c0f\u65f6, UTC\u65f6\u95f4\u4e3a\u51c6\n \"longitude\":113.231, // \u7ecf\u5ea6, \u6b63\u6570\u4e3a\u4e1c\u7ecf, \u8d1f\u6570\u4e3a\u897f\u7ecf\n \"latitude\":23.4067, // \u7eac\u5ea6, \u6b63\u6570\u4e3a\u5317\u7eac, \u8d1f\u6570\u4e3a\u5357\u7eac\n \"us\":0 // \u5fae\u5999\u6570, \u901a\u5e38\u4e3a0\n}\n]]\n", "prefix": "libgnss.getGll"}, "libgnss.clear": {"body": "libgnss.clear()", "description": "libgnss.clear() - \u6e05\u9664\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8be5\u64cd\u4f5c\u4f1a\u6e05\u9664\u6240\u6709\u5b9a\u4f4d\u6570\u636e\n", "prefix": "libgnss.clear"}, "libgnss.bind": {"body": "libgnss.bind(${1:id},${2:next_id})", "description": "libgnss.bind(id, next_id) - \u7ed1\u5b9auart\u7aef\u53e3\u8fdb\u884cGNSS\u6570\u636e\u8bfb\u53d6\n\u4f20\u5165\u503c\uff1a\nint uart\u7aef\u53e3\u53f7\nint \u8f6c\u53d1\u5230uart\u7684id, \u4f8b\u5982\u865a\u62dfuart.VUART_0\n\u4f8b\u5b50\uff1a\n-- \u914d\u7f6e\u4e32\u53e3\u4fe1\u606f, \u901a\u5e38\u4e3a 115200 8N1\nuart.setup(2, 115200)\n-- \u7ed1\u5b9auart, \u9a6c\u4e0a\u5f00\u59cb\u89e3\u6790GNSS\u6570\u636e\nlibgnss.bind(2)\n-- \u65e0\u9700\u518d\u8c03\u7528uart.on\u7136\u540e\u8c03\u7528libgnss.parse\n-- \u5f00\u53d1\u671f\u53ef\u6253\u5f00\u8c03\u8bd5\u65e5\u5fd7\nlibgnss.debug(true)\n\n-- 2023-01-02\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u6709\u6548\n-- \u4eceuart2\u8bfb\u53d6\u5e76\u89e3\u6790, \u540c\u65f6\u8f6c\u53d1\u5230\u865a\u62df\u4e32\u53e30\nlibgnss.bind(2, uart.VUART_0)\n", "prefix": "libgnss.bind"}, "libgnss.locStr": {"body": "libgnss.locStr(${1:mode})", "description": "libgnss.locStr(mode) - \u83b7\u53d6\u4f4d\u7f6e\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6a21\u5f0f. 0- Air780EG\u6240\u9700\u7684\u683c\u5f0f\nreturn \u6307\u5b9a\u6a21\u5f0f\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u4ec5\u63a8\u8350\u5728\u5b9a\u4f4d\u6210\u529f\u540e\u8c03\u7528\n", "prefix": "libgnss.locStr"}, "libgnss.rtcAuto": {"body": "libgnss.rtcAuto(${1:enable})", "description": "libgnss.rtcAuto(enable) - \u5b9a\u4f4d\u6210\u529f\u540e\u81ea\u52a8\u8bbe\u7f6eRTC\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f\u4e0e\u5426, \u9ed8\u8ba4\u662ffalse\u5173\u95ed\n\u4f8b\u5b50\uff1a\n-- \u5f00\u542f\u81ea\u52a8\u8bbe\u7f6eRTC\nlibgnss.rtcAuto(true)\n", "prefix": "libgnss.rtcAuto"}, "libgnss.on": {"body": "libgnss.on(${1:tp},${2:fn})", "description": "libgnss.on(tp, fn) - \u5e95\u5c42\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6\u7c7b\u578b,\u5f53\u524d\u652f\u6301\"raw\"\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5, \u7528\u4e8e\u83b7\u53d6\u5e95\u5c42\u5b9e\u9645\u6536\u5230\u7684\u6570\u636e\nlibgnss.on(\"raw\", function(data)\n log.info(\"GNSS\", data)\nend)\n", "prefix": "libgnss.on"}, "libgnss.getTxt": {"body": "libgnss.getTxt()", "description": "libgnss.getTxt() - \u83b7\u53d6\u975e\u6807\u7684GPTXT\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nreturn GPTXT\u6240\u643a\u5e26\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2023.6.6 \u6dfb\u52a0\nlog.info(\"gnss\", \"txt\", libgnss.getTxt())\n\n-- \u6d4b\u8bd5\u8bed\u53e5\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA SHORT*63\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OPEN*25\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\nlibgnss.parse(\"$GPTXT,01,01,01,ANTENNA OK*35\\r\\n\")\nlog.info(\"GNSS\", libgnss.getTxt())\n", "prefix": "libgnss.getTxt"}, "libgnss.casic_aid": {"body": "libgnss.casic_aid(${1:dt},${2:loc})", "description": "libgnss.casic_aid(dt, loc) - \u5408\u6210Air530Z\u6240\u9700\u8981\u7684\u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f20\u5165\u503c\uff1a\ntable \u65f6\u95f4\u4fe1\u606f\ntable \u7ecf\u7eac\u5ea6\u53ca\u6d77\u62d4\n\u8fd4\u56de\u503c\uff1a\nstring \u8f85\u52a9\u5b9a\u4f4d\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u9002\u5408CASIC\u7cfb\u5217GNSS\u6a21\u5757\u7684\u8f85\u52a9\u5b9a\u4f4d\u4fe1\u606f\u7684\u5408\u6210\n-- \u672c\u51fd\u6570 2023.11.14 \u65b0\u589e\n\n-- \u9996\u5148\u662f\u65f6\u95f4\u4fe1\u606f,\u6ce8\u610f\u662fUTC\u65f6\u95f4\n-- \u65f6\u95f4\u6765\u6e90\u5f88\u591a, \u4e00\u822c\u5efa\u8baesocket.sntp()\u65f6\u95f4\u540c\u6b65\u540e\u7684\u7cfb\u7edf\u65f6\u95f4\nlocal dt = os.date(\"!*t\")\n\n-- \u7136\u540e\u662f\u8f85\u52a9\u5b9a\u4f4d\u5750\u6807\n-- \u6765\u6e90\u6709\u5f88\u591a\u65b9\u5f0f:\n-- 1. \u4ece\u5386\u53f2\u5b9a\u4f4d\u6570\u636e\u5f97\u5230, \u4f8b\u5982\u4e4b\u524d\u5b9a\u4f4d\u6210\u529f\u540e\u4fdd\u5b58\u5230\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e86\n-- 2. \u901a\u8fc7\u57fa\u7ad9\u5b9a\u4f4d\u6216\u8005wifi\u5b9a\u4f4d\u83b7\u53d6\u5230\n-- 3. \u901a\u8fc7IP\u5b9a\u4f4d\u83b7\u53d6\u5230\u5927\u6982\u5750\u6807\n-- \u5750\u6807\u7cfb\u662fWGS84, \u4f46\u9274\u4e8e\u662f\u8f85\u52a9\u5b9a\u4f4d,\u7cbe\u5ea6\u4e0d\u662f\u5173\u952e\u56e0\u7d20\nlocal lla = {\n lat = 23.12,\n lng = 114.12\n}\n\nlocal aid = libgnss.casic_aid(dt, lla)\n", "prefix": "libgnss.casic_aid"}, "lf.init": {"body": "lf.init(${1:spi_device})", "description": "lf.init(spi_device) - \u521d\u59cb\u5316 little_flash\n\u4f20\u5165\u503c\uff1a\nint userdata spi_device\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n--spi_device\nspi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"lf.init\",lf.init(spi_device))\n", "prefix": "lf.init"}, "lf.mount": {"body": "lf.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "lf.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7d little_flash lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 lf.init()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"lf.mount\",lf.mount(little_flash_device,\"/little_flash\"))\n", "prefix": "lf.mount"}, "log.setLevel": {"body": "log.setLevel(${1:level})", "description": "log.setLevel(level) - \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\n\u4f20\u5165\u503c\uff1a\nstring level \u65e5\u5fd7\u7ea7\u522b,\u53ef\u7528\u5b57\u7b26\u4e32\u6216\u6570\u503c, \u5b57\u7b26\u4e32\u4e3a(SILENT,DEBUG,INFO,WARN,ERROR,FATAL), \u6570\u503c\u4e3a(0,1,2,3,4,5)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\u4e3aINFO\nlog.setLevel(\"INFO\")\n", "prefix": "log.setLevel"}, "log.style": {"body": "log.style(${1:val})", "description": "log.style(val) - \u8bbe\u7f6e\u65e5\u5fd7\u98ce\u683c\n\u4f20\u5165\u503c\uff1a\nint \u65e5\u5fd7\u98ce\u683c,\u9ed8\u8ba4\u4e3a0, \u4e0d\u4f20\u5c31\u662f\u83b7\u53d6\u5f53\u524d\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7684\u65e5\u5fd7\u98ce\u683c\n\u4f8b\u5b50\uff1a\n-- \u4ee5 log.info(\"ABC\", \"DEF\", 123) \u4e3a\u4f8b, \u5047\u8bbe\u8be5\u4ee3\u7801\u4f4d\u4e8emain.lua\u768412\u884c\n-- \u9ed8\u8ba4\u65e5\u5fd70\n-- I/user.ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c1, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f\n-- I/main.lua:12 ABC DEF 123\n-- \u8c03\u8bd5\u98ce\u683c2, \u6dfb\u52a0\u989d\u5916\u7684\u8c03\u8bd5\u4fe1\u606f, \u4f4d\u7f6e\u6709\u6240\u533a\u522b\n-- I/user.ABC main.lua:12 DEF 123\n\nlog.style(0) -- \u9ed8\u8ba4\u98ce\u683c0\nlog.style(1) -- \u8c03\u8bd5\u98ce\u683c1\nlog.style(2) -- \u8c03\u8bd5\u98ce\u683c2\n", "prefix": "log.style"}, "log.getLevel": {"body": "log.getLevel()", "description": "log.getLevel() - \u83b7\u53d6\u65e5\u5fd7\u7ea7\u522b\n\u8fd4\u56de\u503c\uff1a\nint \u65e5\u5fd7\u7ea7\u522b\u5bf9\u5e940,1,2,3,4,5\n\u4f8b\u5b50\uff1a\n-- \u5f97\u5230\u65e5\u5fd7\u7ea7\u522b\nlog.getLevel()\n", "prefix": "log.getLevel"}, "log.debug": {"body": "log.debug(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.debug(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bdebug\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa D/onenet connect ok\nlog.debug(\"onenet\", \"connect ok\")\n", "prefix": "log.debug"}, "log.info": {"body": "log.info(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.info(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522binfo\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa I/onenet connect ok\nlog.info(\"onenet\", \"connect ok\")\n", "prefix": "log.info"}, "log.warn": {"body": "log.warn(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.warn(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522bwarn\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa W/onenet connect ok\nlog.warn(\"onenet\", \"connect ok\")\n", "prefix": "log.warn"}, "log.error": {"body": "log.error(${1:tag},${2:val},${3:val2},${4:val3},${5:...})", "description": "log.error(tag, val, val2, val3, ...) - \u8f93\u51fa\u65e5\u5fd7,\u7ea7\u522berror\n\u4f20\u5165\u503c\uff1a\nstring tag \u65e5\u5fd7\u6807\u8bc6,\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\n... \u9700\u6253\u5370\u7684\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e5\u5fd7\u8f93\u51fa E/onenet connect ok\nlog.error(\"onenet\", \"connect ok\")\n", "prefix": "log.error"}, "lora.init": {"body": "lora.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.init(\"llcc68\",\n {\n id = 0, -- SPI id\n cs = pin.PB04, -- SPI \u7247\u9009\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n res = pin.PB00, -- \u590d\u4f4d\u811a\u8fde\u63a5\u7684GPIO\u53f7,\u5982\u679c\u6ca1\u6709pin\u5e93,\u586bGPIO\u6570\u5b57\u7f16\u53f7\u5c31\u884c\n busy = pin.PB01, -- \u5fd9\u68c0\u6d4b\u811a\u7684GPIO\u53f7\n dio1 = pin.PB06, -- \u6570\u636e\u8f93\u5165\u4e2d\u65ad\u811a\n lora_init = true -- \u662f\u5426\u53d1\u9001\u521d\u59cb\u5316\u547d\u4ee4. \u5982\u679c\u662f\u5524\u9192\u540e\u76f4\u63a5\u8bfb\u53d6, \u5c31\u4f20false\n }\n)\n", "prefix": "lora.init"}, "lora.set_channel": {"body": "lora.set_channel(${1:freq})", "description": "lora.set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora.set_channel(433000000)\n", "prefix": "lora.set_channel"}, "lora.set_txconfig": {"body": "lora.set_txconfig(${1:ic},${2:txconfig})", "description": "lora.set_txconfig(ic, txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_txconfig(\"llcc68\",\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora.set_txconfig"}, "lora.set_rxconfig": {"body": "lora.set_rxconfig(${1:ic},${2:set_rxconfig})", "description": "lora.set_rxconfig(ic, set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora.set_rxconfig(\"llcc68\",\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora.set_rxconfig"}, "lora.send": {"body": "lora.send(${1:data})", "description": "lora.send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora.send(\"PING\")\n", "prefix": "lora.send"}, "lora.recv": {"body": "lora.recv(${1:timeout})", "description": "lora.recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora.send(\"PING\")\nend)\n-- \u8001\u7248\u672c\u6ca1\u6709recv, \u53ef\u4ee5\u6539\u6210 lora.recive\nlora.recv(1000)\n", "prefix": "lora.recv"}, "lora.mode": {"body": "lora.mode(${1:mode})", "description": "lora.mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora.mode(lora.STANDBY)\n", "prefix": "lora.mode"}, "lora2.init": {"body": "lora2.init(${1:ic},${2:loraconfig},${3:spiconfig})", "description": "lora2.init(ic, loraconfig,spiconfig) - lora\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\nstring lora \u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\uff1a
llcc68
sx1268\ntable lora\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56delora\u5bf9\u8c61,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nspi_lora = spi.deviceSetup(spi_id,pin_cs,0,0,8,10*1000*1000,spi.MSB,1,0)\nlora_device = lora2.init(\"llcc68\",{res = pin_reset,busy = pin_busy,dio1 = pin_dio1},spi_lora)\n", "prefix": "lora2.init"}, "lora_device:set_channel": {"body": "lora_device:set_channel(${1:freq})", "description": "lora_device:set_channel(freq) - \u8bbe\u7f6e\u9891\u9053\u9891\u7387\n\u4f20\u5165\u503c\uff1a\nnumber \u9891\u7387\n\u4f8b\u5b50\uff1a\nlora_device:set_channel(433000000)\n", "prefix": "lora_device:set_channel"}, "lora_device:set_txconfig": {"body": "lora_device:set_txconfig(${1:txconfig})", "description": "lora_device:set_txconfig(txconfig) - lora\u914d\u7f6e\u53d1\u9001\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u53d1\u9001\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_txconfig(\n {\n mode=1,\n power=22,\n fdev=0,\n bandwidth=0,\n datarate=9,\n coderate=4,\n preambleLen=8,\n fixLen=false,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n timeout=3000\n }\n)\n", "prefix": "lora_device:set_txconfig"}, "lora_device:set_rxconfig": {"body": "lora_device:set_rxconfig(${1:set_rxconfig})", "description": "lora_device:set_rxconfig(set_rxconfig) - lora\u914d\u7f6e\u63a5\u6536\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\ntable lora\u63a5\u6536\u914d\u7f6e\u53c2\u6570,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173\n\u4f8b\u5b50\uff1a\nlora_device:set_rxconfig(\n {\n mode=1,\n bandwidth=0,\n datarate=9,\n coderate=4,\n bandwidthAfc=0,\n preambleLen=8,\n symbTimeout=0,\n fixLen=false,\n payloadLen=0,\n crcOn=true,\n freqHopOn=0,\n hopPeriod=0,\n iqInverted=false,\n rxContinuous=false\n }\n)\n", "prefix": "lora_device:set_rxconfig"}, "lora_device:send": {"body": "lora_device:send(${1:data})", "description": "lora_device:send(data) - \u53d1\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u5199\u5165\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlora_device:send(\"PING\")\n", "prefix": "lora_device:send"}, "lora_device:recv": {"body": "lora_device:recv(${1:timeout})", "description": "lora_device:recv(timeout) - \u5f00\u542f\u6536\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nnumber \u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba41000 \u5355\u4f4dms\n\u4f8b\u5b50\uff1a\nsys.subscribe(\"LORA_RX_DONE\", function(data, size)\n log.info(\"LORA_RX_DONE: \", data, size)\n lora_device:send(\"PING\")\nend)\nlora_device:recv(1000)\n", "prefix": "lora_device:recv"}, "lora_device:mode": {"body": "lora_device:mode(${1:mode})", "description": "lora_device:mode(mode) - \u8bbe\u7f6e\u8fdb\u5165\u6a21\u5f0f(\u4f11\u7720\uff0c\u6b63\u5e38\u7b49)\n\u4f20\u5165\u503c\uff1a\nnumber \u6a21\u5f0f \u6b63\u5e38\u6a21\u5f0f:lora.STANDBY \u4f11\u7720\u6a21\u5f0f:lora.SLEEP \u9ed8\u8ba4\u4e3a\u6b63\u5e38\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlora_device:mode(lora.STANDBY)\n", "prefix": "lora_device:mode"}, "lora_device:on": {"body": "lora_device:on(${1:cb})", "description": "lora_device:on(cb) - \u6ce8\u518clora\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb lora\u56de\u8c03,\u53c2\u6570\u5305\u62eclora_device, event, data, size\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlora_device:on(function(lora_device, event, data, size)\n log.info(\"lora\", \"event\", event, lora_device, data, size)\n if event == \"tx_done\" then\n lora_device:recv(1000)\n elseif event == \"rx_done\" then\n lora_device:send(\"PING\")\n elseif event == \"tx_timeout\" then\n\n elseif event == \"rx_timeout\" then\n lora_device:recv(1000)\n elseif event == \"rx_error\" then\n\n end\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n tx_done -- \u53d1\u9001\u5b8c\u6210\n rx_done -- \u63a5\u6536\u5b8c\u6210\n tx_timeout -- \u53d1\u9001\u8d85\u65f6\n rx_timeout -- \u63a5\u6536\u8d85\u65f6\n rx_error -- \u63a5\u6536\u9519\u8bef\n]]\n", "prefix": "lora_device:on"}, "lvgl.draw_mask_radius_param_t": {"body": "lvgl.draw_mask_radius_param_t()", "description": "lvgl.draw_mask_radius_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_radius_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_radius_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal radius = lvgl.draw_mask_radius_param_t()\n", "prefix": "lvgl.draw_mask_radius_param_t"}, "lvgl.draw_mask_radius_param_t_free": {"body": "lvgl.draw_mask_radius_param_t_free(${1:radius})", "description": "lvgl.draw_mask_radius_param_t_free(radius) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_radius_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_radius_param_t_free(radius)\n", "prefix": "lvgl.draw_mask_radius_param_t_free"}, "lvgl.draw_mask_line_param_t": {"body": "lvgl.draw_mask_line_param_t()", "description": "lvgl.draw_mask_line_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_line_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_line_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal line = lvgl.draw_mask_line_param_t()\n", "prefix": "lvgl.draw_mask_line_param_t"}, "lvgl.draw_mask_line_param_t_free": {"body": "lvgl.draw_mask_line_param_t_free(${1:line})", "description": "lvgl.draw_mask_line_param_t_free(line) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_line_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_line_param_t_free(line)\n", "prefix": "lvgl.draw_mask_line_param_t_free"}, "lvgl.draw_mask_fade_param_t": {"body": "lvgl.draw_mask_fade_param_t()", "description": "lvgl.draw_mask_fade_param_t() - \u521b\u5efa\u4e00\u4e2alv_draw_mask_fade_param_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_draw_mask_fade_param_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal fade = lvgl.draw_mask_fade_param_t()\n", "prefix": "lvgl.draw_mask_fade_param_t"}, "lvgl.draw_mask_fade_param_t_free": {"body": "lvgl.draw_mask_fade_param_t_free(${1:fade})", "description": "lvgl.draw_mask_fade_param_t_free(fade) - \u91ca\u653e\u4e00\u4e2alv_draw_mask_fade_param_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.draw_mask_fade_param_t_free(fade)\n", "prefix": "lvgl.draw_mask_fade_param_t_free"}, "lvgl.font_get": {"body": "lvgl.font_get(${1:name})", "description": "lvgl.font_get(name) - \u83b7\u53d6\u5185\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u540d\u79f0+\u5b57\u53f7, \u4f8b\u5982 opposans_m_10\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\n\nlocal font = lvgl.font_get(\"opposans_m_12\")\n", "prefix": "lvgl.font_get"}, "lvgl.font_load": {"body": "lvgl.font_load(${1:path/spi_device},${2:size},${3:bpp},${4:thickness},${5:cache_size},${6:sty_zh},${7:sty_en})", "description": "lvgl.font_load(path/spi_device,size,bpp,thickness,cache_size,sty_zh,sty_en) - \u4ece\u6587\u4ef6\u7cfb\u7edf\u52a0\u8f7d\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nstring/userdata \u5b57\u4f53\u8def\u5f84/spi_device (spi_device\u4e3a\u4f7f\u7528\u5916\u7f6e\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93\u82af\u7247)\nnumber size \u53ef\u9009,\u5b57\u53f7 16-192 \u9ed8\u8ba416(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber bpp \u53ef\u9009 \u6df1\u5ea6 \u9ed8\u8ba44(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber thickness \u53ef\u9009 \u7c97\u7ec6\u503c \u9ed8\u8ba4size * bpp(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber cache_size \u53ef\u9009 \u9ed8\u8ba40(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_zh \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba41(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\nnumber sty_en \u53ef\u9009 \u9009\u62e9\u5b57\u4f53 \u9ed8\u8ba43(\u4f7f\u7528\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n--local font = lvgl.font_load(spi_device,16)(\u9ad8\u901a\u77e2\u91cf\u5b57\u5e93)\n", "prefix": "lvgl.font_load"}, "lvgl.font_free": {"body": "lvgl.font_free(${1:font})", "description": "lvgl.font_free(font) - \u91ca\u653e\u5b57\u4f53,\u614e\u7528!!!\u4ec5\u901a\u8fc7font_load\u52a0\u8f7d\u7684\u5b57\u4f53\u5141\u8bb8\u5378\u8f7d,\u901a\u8fc7font_get\u83b7\u53d6\u7684\u5b57\u4f53\u4e0d\u5141\u8bb8\u5378\u8f7d\n\u4f20\u5165\u503c\uff1a\nstring \u5b57\u4f53\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u5b57\u4f53\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal font = lvgl.font_load(\"/font_32.bin\")\n-- N N N N \u64cd\u4f5c\n-- \u786e\u5b9a\u5b57\u4f53\u4e0d\u88ab\u4f7f\u7528,\u4e0d\u88ab\u5f15\u7528,\u4e14\u5185\u5b58\u7d27\u5f20\u9700\u8981\u91ca\u653e\nlvgl.font_free(font)\n", "prefix": "lvgl.font_free"}, "lvgl.obj_set_event_cb": {"body": "lvgl.obj_set_event_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_event_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, event), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, event\u662f\u4e8b\u4ef6\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_event_cb"}, "lvgl.obj_set_signal_cb": {"body": "lvgl.obj_set_signal_cb(${1:obj},${2:func})", "description": "lvgl.obj_set_signal_cb(obj, func) - \u8bbe\u7f6e\u7ec4\u4ef6\u7684\u4fe1\u53f7\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, signal), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.obj_set_signal_cb"}, "lvgl.anim_set_exec_cb": {"body": "lvgl.anim_set_exec_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_exec_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67092\u4e2a (obj, value), \u5176\u4e2dobj\u662f\u5f53\u524d\u5bf9\u8c61, signal\u662f\u4fe1\u53f7\u7c7b\u578b, \u4e3a\u6574\u578b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_exec_cb"}, "lvgl.anim_set_ready_cb": {"body": "lvgl.anim_set_ready_cb(${1:anim},${2:func})", "description": "lvgl.anim_set_ready_cb(anim, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (anim), \u5176\u4e2danim\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_ready_cb"}, "lvgl.anim_path_set_cb": {"body": "lvgl.anim_path_set_cb(${1:path},${2:func})", "description": "lvgl.anim_path_set_cb(path, func) - \u8bbe\u7f6e\u52a8\u753b\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nuserdata lvgl\u7ec4\u4ef6\u6307\u9488\nfunc lua\u51fd\u6570, \u53c2\u6570\u67091\u4e2a (path), \u5176\u4e2dpath\u662f\u5f53\u524d\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_path_set_cb"}, "lvgl.event_send": {"body": "lvgl.event_send(${1:obj},${2:ent})", "description": "lvgl.event_send(obj, ent) - \u53d1\u9001\u4e8b\u4ef6\u7ed9\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488\nint \u4e8b\u4ef6id, \u4f8b\u5982 lvgl.EVENT_PRESSED\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5bf9\u8c61\u5df2\u88ab\u5220\u9664\u7684\u8bdd\u8fd4\u56defalse\u6216\u8005nil\nint \u5e95\u5c42\u8fd4\u56de\u503c,\u5982\u679cobj\u4e3anil\u5c31\u8fd4\u56denil\n", "prefix": "lvgl.event_send"}, "lvgl.scr_act": {"body": "lvgl.scr_act()", "description": "lvgl.scr_act() - \u83b7\u53d6\u5f53\u524d\u6d3b\u8dc3\u7684screen\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 screen\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal scr = lvgl.scr_act()\n\n", "prefix": "lvgl.scr_act"}, "lvgl.layer_top": {"body": "lvgl.layer_top()", "description": "lvgl.layer_top() - \u83b7\u53d6layer_top\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_top"}, "lvgl.layer_sys": {"body": "lvgl.layer_sys()", "description": "lvgl.layer_sys() - \u83b7\u53d6layer_sys\n\u8fd4\u56de\u503c\uff1a\n\u6307\u9488 layer\u6307\u9488\n", "prefix": "lvgl.layer_sys"}, "lvgl.scr_load": {"body": "lvgl.scr_load(${1:scr})", "description": "lvgl.scr_load(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n lvgl.scr_load(scr)\n", "prefix": "lvgl.scr_load"}, "lvgl.scr_load_anim": {"body": "lvgl.scr_load_anim(${1:scr})", "description": "lvgl.scr_load_anim(scr) - \u8f7d\u5165\u6307\u5b9a\u7684screen\u5e76\u4f7f\u7528\u6307\u5b9a\u7684\u8f6c\u573a\u52a8\u753b\n\u4f20\u5165\u503c\uff1a\nuserdata screen\u6307\u9488\n\u4f8b\u5b50\uff1a\n local scr = lvgl.obj_create(nil, nil)\n local btn = lvgl.btn_create(scr)\n lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)\n local label = lvgl.label_create(btn)\n lvgl.label_set_text(label, \"LuatOS!\")\n\n local scr2 = lvgl.obj_create(nil,nil)\n local btn2 = lvgl.btn_create(scr2)\n lvgl.obj_align(btn, scr2, lvgl.ALIGN_CENTER, 0, 20)\n local label2 = lvgl.label_create(btn2)\n lvgl.label_set_text(label2, \"Btn2\")\n lvgl.scr_load(scr)\n --sys.wait(1000);\n lvgl.scr_load_anim(scr2,lvgl.SCR_LOAD_ANIM_OVER_LEFT,100,100,false)\n\u539f\u51fd\u6570\uff1alv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool auto_del)\n", "prefix": "lvgl.scr_load_anim"}, "lvgl.theme_set_act": {"body": "lvgl.theme_set_act(${1:name})", "description": "lvgl.theme_set_act(name) - \u8bbe\u7f6e\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898\u540d\u79f0,\u53ef\u9009\u503c\u6709 default/mono/empty/material_light/material_dark/material_no_transition/material_no_focus\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u9ed1\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"mono\")\n-- \u7a7a\u767d\u4e3b\u9898\nlvgl.theme_set_act(\"empty\")\n", "prefix": "lvgl.theme_set_act"}, "lvgl.sleep": {"body": "lvgl.sleep(${1:enable})", "description": "lvgl.sleep(enable) - LVGL\u4f11\u7720\u63a7\u5236\uff0c\u6682\u505c/\u6062\u590d\u5237\u65b0\u5b9a\u65f6\u5668\uff0c\u76ee\u524d\u53ea\u6709105\u548cEC618\u53ef\u4ee5\u7528\n\u4f20\u5165\u503c\uff1a\nboolean true\u6682\u505c false\u6062\u590d\n\u4f8b\u5b50\uff1a\nlvgl.sleep(true) --\u6682\u505c\u5237\u65b0\uff0c\u7cfb\u7edf\u53ef\u4ee5\u4f11\u7720\nlvgl.sleep(false) --\u6062\u590d\u5237\u65b0\uff0c\u7cfb\u7edf\u4e0d\u4f11\u7720\n", "prefix": "lvgl.sleep"}, "lvgl.init": {"body": "lvgl.init(${1:w},${2:h},${3:lcd},${4:buff_size},${5:buff_mode})", "description": "lvgl.init(w, h, lcd, buff_size, buff_mode) - \u521d\u59cb\u5316LVGL\n\u4f20\u5165\u503c\uff1a\nint \u5c4f\u5e55\u5bbd,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nint \u5c4f\u5e55\u9ad8,\u53ef\u9009,\u9ed8\u8ba4\u4ecelcd\u53d6\nuserdata lcd\u6307\u9488,\u53ef\u9009,lcd\u521d\u59cb\u5316\u540e\u6709\u9ed8\u8ba4\u503c,\u9884\u7559\u7684\u591a\u5c4f\u5165\u53e3\nint \u7f13\u51b2\u533a\u5927\u5c0f,\u9ed8\u8ba4\u5bbd*10, \u4e0d\u542b\u8272\u6df1.\nint \u7f13\u51b2\u6a21\u5f0f,\u9ed8\u8ba40, \u5355buff\u6a21\u5f0f, \u53ef\u90091,\u53ccbuff\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "lvgl.init"}, "lvgl.anim_create": {"body": "lvgl.anim_create()", "description": "lvgl.anim_create() - \u521b\u5efa\u5e76\u521d\u59cb\u5316\u4e00\u4e2aanim\n\u8fd4\u56de\u503c\uff1a\nuserdata anim\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim = lvgl.anim_create()\n", "prefix": "lvgl.anim_create"}, "lvgl.anim_free": {"body": "lvgl.anim_free(${1:anim})", "description": "lvgl.anim_free(anim) - \u91ca\u653e\u4e00\u4e2aanim\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_free(anim)\n", "prefix": "lvgl.anim_free"}, "lvgl.anim_path_t": {"body": "lvgl.anim_path_t()", "description": "lvgl.anim_path_t() - \u521b\u5efa\u4e00\u4e2alv_anim_path_t\n\u8fd4\u56de\u503c\uff1a\nuserdata lv_anim_path_t\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal anim_path_t = lvgl.anim_path_t()\n", "prefix": "lvgl.anim_path_t"}, "lvgl.anim_path_t_free": {"body": "lvgl.anim_path_t_free(${1:anim_path_t})", "description": "lvgl.anim_path_t_free(anim_path_t) - \u91ca\u653e\u4e00\u4e2alv_anim_path_t\n\u4f8b\u5b50\uff1a\nlocal lvgl.anim_path_t_free(anim_path_t)\n", "prefix": "lvgl.anim_path_t_free"}, "lvgl.anim_set_path_str": {"body": "lvgl.anim_set_path_str(${1:anim},${2:tp})", "description": "lvgl.anim_set_path_str(anim, tp) - \u8bbe\u7f6e\u52a8\u753b\u8def\u5f84\u65b9\u5f0f\n\u4f20\u5165\u503c\uff1a\nuserdata \u52a8\u753b\u6307\u9488\nstring \u7c7b\u578b, \u652f\u6301 linear/ease_in/ease_out/ease_in_out/overshoot/bounce/step\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.anim_set_path_str"}, "lvgl.qrcode_create": {"body": "lvgl.qrcode_create(${1:parent},${2:size},${3:dark_color},${4:light_color})", "description": "lvgl.qrcode_create(parent, size, dark_color, light_color) - \u521b\u5efaqrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6\nint \u957f\u5ea6,\u56e0\u4e3aqrcode\u662f\u6b63\u65b9\u5f62\nint \u4e8c\u7ef4\u7801\u4e2d\u6570\u636e\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0x3333ff\nint \u4e8c\u7ef4\u7801\u4e2d\u80cc\u666f\u70b9\u7684\u989c\u8272, RGB\u989c\u8272, \u9ed8\u8ba4 0xeeeeff\n\u8fd4\u56de\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efa\u5e76\u663e\u793aqrcode\nlocal qrcode = lvgl.qrcode_create(scr, 100)\nlvgl.qrcode_update(qrcode, \"https://luatos.com\")\nlvgl.obj_align(qrcode, lvgl.scr_act(), lvgl.ALIGN_CENTER, -100, -100)\n", "prefix": "lvgl.qrcode_create"}, "lvgl.qrcode_update": {"body": "lvgl.qrcode_update(${1:qrcode},${2:cnt})", "description": "lvgl.qrcode_update(qrcode, cnt) - \u8bbe\u7f6eqrcode\u7ec4\u4ef6\u7684\u4e8c\u7ef4\u7801\u5185\u5bb9,\u914d\u5408qrcode_create\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u66f4\u65b0\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse. \u901a\u5e38\u53ea\u6709\u6570\u636e\u592a\u957f\u65e0\u6cd5\u5bb9\u7eb3\u624d\u4f1a\u8fd4\u56defalse\n", "prefix": "lvgl.qrcode_update"}, "lvgl.qrcode_delete": {"body": "lvgl.qrcode_delete(${1:qrcode})", "description": "lvgl.qrcode_delete(qrcode) - \u5220\u9664qrcode\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata qrcode\u7ec4\u4ef6,\u7531qrcode_create\u521b\u5efa\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.qrcode_delete"}, "lvgl.style_t": {"body": "lvgl.style_t()", "description": "lvgl.style_t() - \u521b\u5efa\u4e00\u4e2astyle\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_t()\nlvgl.style_init(style)\n", "prefix": "lvgl.style_t"}, "lvgl.style_create": {"body": "lvgl.style_create()", "description": "lvgl.style_create() - \u521b\u5efa\u4e00\u4e2astyle\u5e76\u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n", "prefix": "lvgl.style_create"}, "lvgl.style_list_create": {"body": "lvgl.style_list_create()", "description": "lvgl.style_list_create() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n", "prefix": "lvgl.style_list_create"}, "lvgl.style_list_t": {"body": "lvgl.style_list_t()", "description": "lvgl.style_list_t() - \u521b\u5efa\u4e00\u4e2astyle_list\n\u8fd4\u56de\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_list_t()\n", "prefix": "lvgl.style_list_t"}, "lvgl.style_delete": {"body": "lvgl.style_delete(${1:style})", "description": "lvgl.style_delete(style) - \u5220\u9664style,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style = lvgl.style_create()\n-- ...\n-- ...\n-- lvgl.style_delete(style)\n", "prefix": "lvgl.style_delete"}, "lvgl.style_list_delete": {"body": "lvgl.style_list_delete(${1:style})", "description": "lvgl.style_list_delete(style) - \u5220\u9664style_list,\u614e\u7528,\u901a\u5e38\u4e0d\u4f1a\u6267\u884c\u5220\u9664\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nuserdata style\u6307\u9488\n\u4f8b\u5b50\uff1a\nlocal style_list = lvgl.style_list_create()\n-- ...\n-- ...\n-- lvgl.style_list_delete(style_list)\n", "prefix": "lvgl.style_list_delete"}, "lvgl.demo_benchmark": {"body": "lvgl.demo_benchmark()", "description": "lvgl.demo_benchmark() - lvgl benchmark demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_benchmark()\n", "prefix": "lvgl.demo_benchmark"}, "lvgl.demo_keypad_encoder": {"body": "lvgl.demo_keypad_encoder()", "description": "lvgl.demo_keypad_encoder() - lvgl keypad_encoder demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_keypad_encoder()\n", "prefix": "lvgl.demo_keypad_encoder"}, "lvgl.demo_music": {"body": "lvgl.demo_music()", "description": "lvgl.demo_music() - lvgl music demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_music()\n", "prefix": "lvgl.demo_music"}, "lvgl.demo_printer": {"body": "lvgl.demo_printer()", "description": "lvgl.demo_printer() - lvgl printer demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_printer()\n", "prefix": "lvgl.demo_printer"}, "lvgl.demo_stress": {"body": "lvgl.demo_stress()", "description": "lvgl.demo_stress() - lvgl stress demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_stress()\n", "prefix": "lvgl.demo_stress"}, "lvgl.demo_widgets": {"body": "lvgl.demo_widgets()", "description": "lvgl.demo_widgets() - lvgl widgets demo\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlvgl.init()\nlvgl.demo_widgets()\n", "prefix": "lvgl.demo_widgets"}, "lvgl.indev_drv_register": {"body": "lvgl.indev_drv_register(${1:tp},${2:dtp})", "description": "lvgl.indev_drv_register(tp, dtp) - \u6ce8\u518c\u8f93\u5165\u8bbe\u5907\u9a71\u52a8\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u7c7b\u578b\uff0c\u5f53\u524d\u652f\u6301\"pointer\",\u6307\u9488\u7c7b/\u89e6\u6478\u7c7b\u5747\u53ef\uff0c\"keyboard\",\u952e\u76d8\u7c7b\u578b\nstring \u8bbe\u5907\u578b\u53f7\uff0c\u5f53\u524d\u652f\u6301\"emulator\",\u6a21\u62df\u5668\u7c7b\u578b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlvgl.indev_drv_register(\"pointer\", \"emulator\")\n", "prefix": "lvgl.indev_drv_register"}, "lvgl.indev_point_emulator_update": {"body": "lvgl.indev_point_emulator_update(${1:x},${2:y},${3:state})", "description": "lvgl.indev_point_emulator_update(x, y, state) - \u66f4\u65b0\u6a21\u62df\u8f93\u5165\u8bbe\u5907\u7684\u5750\u6807\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint y\u5750\u6807,\u4ee5\u5de6\u4e0a\u89d2\u4e3a0,\u53f3\u4e0b\u89d2\u4e3a\u6700\u5927\u503c\nint \u72b6\u6001, 0 \u4e3a \u91ca\u653e, 1 \u4e3a\u6309\u4e0b\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6a21\u62df\u5728\u5c4f\u5e55\u4e0a\u7684\u70b9\u51fb,\u901a\u8fc7timeout\u6a21\u62df\u957f\u6309\u548c\u77ed\u6309\nsys.taskInit(function(x, y, timeout)\n lvgl.indev_point_emulator_update(x, y, 1)\n sys.wait(timeout)\n lvgl.indev_point_emulator_update(x, y, 0)\nend, 240, 120, 50)\n", "prefix": "lvgl.indev_point_emulator_update"}, "lvgl.indev_kb_update": {"body": "lvgl.indev_kb_update(${1:key})", "description": "lvgl.indev_kb_update(key) - \u66f4\u65b0\u952e\u76d8\u8f93\u5165\u8bbe\u5907\u7684\u6309\u952e\u503c\n\u4f20\u5165\u503c\uff1a\nint \u6309\u952e\u503c\uff0c\u9ed8\u8ba4\u4e3a0\uff0c\u6309\u952e\u62ac\u8d77\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "lvgl.indev_kb_update"}, "lvgl.gif_create": {"body": "lvgl.gif_create(${1:parent},${2:path})", "description": "lvgl.gif_create(parent, path) - \u521b\u5efagif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata \u7236\u7ec4\u4ef6,\u53ef\u4ee5\u662fnil,\u4f46\u901a\u5e38\u4e0d\u4f1a\u662fnil\nstring \u6587\u4ef6\u8def\u5f84\n\u8fd4\u56de\u503c\uff1a\nuserdata \u7ec4\u4ef6\u6307\u9488,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil,\u5efa\u8bae\u68c0\u67e5\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_create"}, "lvgl.gif_restart": {"body": "lvgl.gif_restart(${1:gif})", "description": "lvgl.gif_restart(gif) - \u91cd\u65b0\u64ad\u653egif\u7ec4\u4ef6\n\u4f20\u5165\u503c\uff1a\nuserdata gif\u7ec4\u4ef6\u652f\u6301, \u7531gif_create\u65b9\u6cd5\u8fd4\u56de\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal gif = lvgl.gif_create(scr, \"S/emtry.gif\")\nif gif then\n log.info(\"gif\", \"create ok\")\nend\n\n", "prefix": "lvgl.gif_restart"}, "max30102.init": {"body": "max30102.init(${1:i2c_id},${2:int})", "description": "max30102.init(i2c_id,int) - \u521d\u59cb\u5316MAX30102\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid,\u9ed8\u8ba4\u4e3a0\nint int\u5f15\u811a\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\nif max30102.init(0,pin.PC05) then\n log.info(\"max30102\", \"init ok\")\nelse\n log.info(\"max30102\", \"init fail\")\nend\n", "prefix": "max30102.init"}, "max30102.get": {"body": "max30102.get()", "description": "max30102.get() - \u83b7\u53d6\u5fc3\u7387\u8840\u6c27(\u5927\u6982\u9700\u898110s\u65f6\u95f4\u6d4b\u91cf)\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\nnumber \u5fc3\u7387\nnumber \u8840\u6c27\n", "prefix": "max30102.get"}, "max30102.shutdown": {"body": "max30102.shutdown()", "description": "max30102.shutdown() - \u5173\u95edmax30102\n", "prefix": "max30102.shutdown"}, "mcu.setClk": {"body": "mcu.setClk(${1:mhz})", "description": "mcu.setClk(mhz) - \u8bbe\u7f6e\u4e3b\u9891,\u5355\u4f4dMHZ\n\u4f20\u5165\u503c\uff1a\nint \u4e3b\u9891,\u6839\u636e\u8bbe\u5907\u7684\u4e0d\u540c\u6709\u4e0d\u540c\u7684\u6709\u6548\u503c,\u8bf7\u67e5\u9605\u624b\u518c\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n\n-- \u6ce8\u610f: \u5e76\u975e\u6240\u6709\u6a21\u5757\u90fd\u652f\u6301\u4e3b\u9891\u8c03\u6574,\u8bf7\u67e5\u9605\u624b\u518c\n-- Air101/Air103/Air601 \u652f\u6301\u8bbe\u7f6e\u6210 2/40/80/160/240. \u7279\u522b\u63d0\u9192, \u8bbe\u7f6e\u52302M\u540e, \u5982\u679c\u8981\u4f11\u7720, \u5fc5\u987b\u5148\u8bbe\u7f6e\u523080M\n-- ESP32\u7cfb\u5217\u652f\u6301\u8bbe\u7f6e\u6210 40/80/160/240 , \u9700\u89812024.1.1\u4e4b\u540e\u7684\u56fa\u4ef6\n-- Air780\u7cfb\u5217, Air105, \u4e0d\u652f\u6301\u8bbe\u7f6e\u4e3b\u9891\n-- Air780\u7cfb\u5217, \u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\u65f6\u81ea\u52a8\u964d\u9891\u523024M\n\n-- \u8bbe\u7f6e\u523080MHZ\nmcu.setClk(80)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u5230240MHZ\nmcu.setClk(240)\nsys.wait(1000)\n-- \u8bbe\u7f6e\u52302MHZ\nmcu.setClk(2)\nsys.wait(1000)\n", "prefix": "mcu.setClk"}, "mcu.getClk": {"body": "mcu.getClk()", "description": "mcu.getClk() - \u83b7\u53d6\u4e3b\u9891,\u5355\u4f4dMHZ\n\u8fd4\u56de\u503c\uff1a\nint \u82e5\u5931\u8d25\u8fd4\u56de-1,\u5426\u5219\u8fd4\u56de\u4e3b\u9891\u6570\u503c,\u82e5\u7b49\u4e8e0,\u53ef\u80fd\u5904\u4e8e32k\u6676\u632f\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nlocal mhz = mcu.getClk()\nprint(\"Boom\", mhz)\n", "prefix": "mcu.getClk"}, "mcu.unique_id": {"body": "mcu.unique_id()", "description": "mcu.unique_id() - \u83b7\u53d6\u8bbe\u5907\u552f\u4e00id. \u6ce8\u610f,\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26,\u5982\u9700\u67e5\u770b\u5efa\u8baetoHex()\u540e\u6253\u5370\n\u8fd4\u56de\u503c\uff1a\nstring \u8bbe\u5907\u552f\u4e00id.\u82e5\u4e0d\u652f\u6301, \u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32.\n\u4f8b\u5b50\uff1a\nlocal unique_id = mcu.unique_id()\nprint(\"unique_id\", unique_id)\n", "prefix": "mcu.unique_id"}, "mcu.ticks": {"body": "mcu.ticks()", "description": "mcu.ticks() - \u83b7\u53d6\u542f\u52a8\u540e\u7684tick\u6570,\u672c\u8eab\u662f\u65e0\u7b26\u53f7\u503c,\u8303\u56f40~0xffffffff,lua\u662f\u6709\u7b26\u53f7\u8ba1\u7b97,\u8ba1\u7b97\u65f6\u8d85\u8fc70x7fffffff\u4f1a\u53d8\u8d1f\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dtick\u503c\n\u4f8b\u5b50\uff1a\nlocal tick = mcu.ticks()\nprint(\"ticks\", tick)\n-- \u5982\u9700\u4e0d\u4f1a\u6ea2\u51fa\u7684\u503c, \u53ef\u7528mcu.ticks32(), \u4e8e2024.5.7\u65b0\u589e\n", "prefix": "mcu.ticks"}, "mcu.hz": {"body": "mcu.hz()", "description": "mcu.hz() - \u83b7\u53d6\u6bcf\u79d2\u7684tick\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nint \u6bcf\u79d2\u7684tick\u6570\u91cf,\u901a\u5e38\u4e3a1000\n\u4f8b\u5b50\uff1a\nlocal hz = mcu.hz()\nprint(\"mcu.hz\", hz)\n", "prefix": "mcu.hz"}, "mcu.reg32": {"body": "mcu.reg32(${1:address},${2:value},${3:mask})", "description": "mcu.reg32(address, value, mask) - \u8bfb\u5199mcu\u768432bit\u5bc4\u5b58\u5668\u6216\u8005ram,\u8c28\u614e\u4f7f\u7528\u5199\u529f\u80fd,\u8bf7\u719f\u6089mcu\u7684\u5bc4\u5b58\u5668\u4f7f\u7528\u65b9\u6cd5\u540e\u518d\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5bc4\u5b58\u5668\u6216\u8005ram\u5730\u5740\nint \u5199\u5165\u7684\u503c,\u5982\u679c\u6ca1\u6709,\u5219\u76f4\u63a5\u8fd4\u56de\u5f53\u524d\u503c\nint \u4f4d\u63a9\u7801,\u53ef\u4ee5\u5bf9\u7279\u5b9a\u51e0\u4e2a\u4f4d\u7f6e\u7684bit\u505a\u4fee\u6539, \u9ed8\u8ba40xffffffff,\u4fee\u6539\u5168\u90e832bit\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u5bc4\u5b58\u7684\u503c\n\u4f8b\u5b50\uff1a\nlocal value = mcu.reg32(0x2009FFFC, 0x01, 0x01) --\u5bf90x2009FFFC\u5730\u5740\u4e0a\u7684\u503c,\u4fee\u6539bit0\u4e3a1\n", "prefix": "mcu.reg32"}, "mcu.x32": {"body": "mcu.x32(${1:value})", "description": "mcu.x32(value) - \u8f6c\u636210\u8fdb\u5236\u6570\u4e3a16\u8fdb\u5236\u5b57\u7b26\u4e32\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u8f6c\u6362\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring 16\u8fdb\u5236\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal value = mcu.x32(0x2009FFFC) --\u8f93\u51fa\"0x2009fffc\"\n", "prefix": "mcu.x32"}, "mcu.tick64": {"body": "mcu.tick64()", "description": "mcu.tick64() - \u83b7\u53d6\u542f\u52a8\u540e\u7684\u9ad8\u7cbe\u5ea6tick\uff0c\u5982\u679c\u652f\u6301bit64\u5e93\uff0c\u53ef\u4ee5\u76f4\u63a5\u8f93\u51fa\u8f6c\u6362\u597d\u7684bit64\u7ed3\u6784\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u8f93\u51fabit64\u7ed3\u6784,true\u662f,\u5176\u4ed6\u90fd\u662ffalse,\u7559\u7a7a\u4e5f\u662ffalse,\u7528\u4e8e\u517c\u5bb9\u65e7\u7684demo\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524dtick\u503c,8\u4e2a\u5b57\u8282\u7684uint64,\u5982\u679c\u652f\u630164bit\u5e93,\u540c\u65f6\u8981\u6c42\u8f93\u51fa64bit\u7ed3\u6784\u7684\u8bdd,\u4f1a\u8f93\u51fa9\u5b57\u8282\u7684string\nint 1us\u6709\u51e0\u4e2atick,0\u8868\u793a\u672a\u77e5\n\u4f8b\u5b50\uff1a\nlocal tick_str, tick_per = mcu.tick64()\nprint(\"ticks\", tick_str, tick_per)\n", "prefix": "mcu.tick64"}, "mcu.dtick64": {"body": "mcu.dtick64(${1:tick1},${2:tick2},${3:check_value})", "description": "mcu.dtick64(tick1, tick2, check_value) - \u8ba1\u7b972\u4e2a64bit tick\u7684\u5dee\u503c\n\u4f20\u5165\u503c\uff1a\nstring 64bit\u7684string\nstring 64bit\u7684string\nint \u53c2\u8003\u503c,\u53ef\u9009\u9879,\u5982\u679c\u4e3a0,\u5219\u8fd4\u56de\u7ed3\u679c\u4e2d\u7b2c\u4e00\u4e2a\u9879\u76ee\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nboolean \u4e0e\u53c2\u8003\u503c\u6bd4\u8f83,\u5982\u679c\u5927\u4e8e\u7b49\u4e8e\u4e3atrue,\u53cd\u4e4b\u4e3afalse\nint \u5dee\u503ctick1 - tick2,\u5982\u679c\u8d85\u8fc7\u4e860x7fffffff,\u7ed3\u679c\u53ef\u80fd\u662f\u9519\u7684\n\u4f8b\u5b50\uff1a\nlocal result, diff_tick = mcu.dtick64(tick1, tick2)\nprint(\"ticks\", result, diff_tick)\n", "prefix": "mcu.dtick64"}, "mcu.setXTAL": {"body": "mcu.setXTAL(${1:source_main},${2:source_32k},${3:delay})", "description": "mcu.setXTAL(source_main, source_32k, delay) - \u9009\u62e9\u65f6\u949f\u6e90,\u5f53\u524d\u4ec5air105\u652f\u6301\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u65f6\u949f\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nboolean \u4f4e\u901f32K\u662f\u5426\u4f7f\u7528\u5916\u90e8\u65f6\u949f\u6e90,\u5982\u679c\u4e3a\u7a7a\u5219\u4e0d\u6539\u53d8\nint PLL\u7a33\u5b9a\u65f6\u95f4,\u5728\u5207\u6362\u9ad8\u901f\u65f6\u949f\u7684\u65f6\u5019,\u6839\u636e\u786c\u4ef6\u73af\u5883,\u9700\u8981delay\u4e00\u6bb5\u65f6\u95f4\u7b49\u5f85PLL\u7a33\u5b9a,\u9ed8\u8ba4\u662f1200,\u5efa\u8bae\u4e0d\u5c0f\u4e8e1024\n\u4f8b\u5b50\uff1a\nmcu.setXTAL(true, true, 1248) --\u9ad8\u901f\u65f6\u949f\u4f7f\u7528\u5916\u90e8\u65f6\u949f,\u4f4e\u901f32K\u4f7f\u7528\u5916\u90e8\u6676\u632f, delay1248\n", "prefix": "mcu.setXTAL"}, "mcu.hardfault": {"body": "mcu.hardfault(${1:mode})", "description": "mcu.hardfault(mode) - mcu\u6b7b\u673a\u65f6\u5904\u7406\u6a21\u5f0f\uff0c\u76ee\u524d\u53ea\u6709EC618\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5904\u7406\u6a21\u5f0f\uff0c0\u6b7b\u673a\u505c\u673a\uff0c1\u6b7b\u673a\u540e\u91cd\u542f\uff0c2\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f 3.\u6b7b\u673a\u65f6\u5199\u5165\u5173\u952e\u4fe1\u606f\u5230flash\u540e\u7acb\u523b\u91cd\u542f\n\u4f8b\u5b50\uff1a\nmcu.hardfault(0) --\u6b7b\u673a\u540e\u505c\u673a\uff0c\u4e00\u822c\u7528\u4e8e\u8c03\u8bd5\u72b6\u6001\nmcu.hardfault(1) --\u6b7b\u673a\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u6b63\u5f0f\u4ea7\u54c1\nmcu.hardfault(2) --\u6b7b\u673a\u540e\u5c3d\u91cf\u5c06\u9519\u8bef\u4fe1\u606f\u63d0\u4ea4\u7ed9\u5916\u90e8\u5de5\u5177\u540e\u91cd\u542f\uff0c\u4e00\u822c\u7528\u4e8e\u538b\u529b\u6d4b\u8bd5\u6216\u8005\u6b63\u5f0f\u4ea7\u54c1\n", "prefix": "mcu.hardfault"}, "mcu.iomux": {"body": "mcu.iomux(${1:type},${2:channel},${3:value})", "description": "mcu.iomux(type, channel, value) - \u5728\u5916\u8bbe\u6253\u5f00\u524d\uff0c\u5c06\u5916\u8bbeIO\u590d\u7528\u5230\u975e\u9ed8\u8ba4\u914d\u7f6e\u4e0a\uff0c\u76ee\u524d\u53ea\u652f\u6301Air780E\u7684\u90e8\u5206\u5916\u8bbe\u590d\u7528\u5230\u5176\u4ed6\u914d\u7f6e\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e34\u65f6\u63a5\u53e3\uff0c\u5982\u679c\u540e\u7eed\u6709\u66f4\u5408\u9002\u7684api\uff0c\u672c\u63a5\u53e3\u5c06\u4e0d\u518d\u66f4\u65b0\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u6709mcu.UART,mcu.I2C\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\nint \u65b0\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u9700\u8981\u6839\u636e\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\n\u4f8b\u5b50\uff1a\nmcu.iomux(mcu.UART, 2, 1) -- Air780E\u7684UART2\u590d\u7528\u5230gpio12\u548cgpio13(Air780EG\u9ed8\u8ba4\u662f\u8fd9\u4e2a\u590d\u7528\uff0c\u4e0d\u8981\u52a8)\nmcu.iomux(mcu.UART, 2, 2) -- Air780E\u7684UART2\u590d\u7528\u5230gpio6\u548cgpio7\nmcu.iomux(mcu.I2C, 0, 1) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio12\u548cgpio13\nmcu.iomux(mcu.I2C, 0, 2) -- Air780E\u7684I2C0\u590d\u7528\u5230gpio16\u548cgpio17\nmcu.iomux(mcu.I2C, 1, 1) -- Air780E\u7684I2C1\u590d\u7528\u5230gpio4\u548cgpio5\n", "prefix": "mcu.iomux"}, "mcu.altfun": {"body": "mcu.altfun(${1:type},${2:sn},${3:pad_index},${4:alt_fun},${5:is_input})", "description": "mcu.altfun(type, sn, pad_index, alt_fun, is_input) - IO\u5916\u8bbe\u529f\u80fd\u590d\u7528\u9009\u62e9\uff0c\u6ce8\u610f\u666e\u901aMCU\u662f\u4ee5GPIO\u53f7\u4e3a\u5e8f\u53f7\uff0c\u4f46\u662f\u4e13\u7528SOC\uff0c\u6bd4\u5982CAT1\u7684\uff0c\u662f\u4ee5PAD\u53f7\u4e3a\u5e8f\u53f7\u3002\u672c\u51fd\u6570\u4e0d\u662f\u6240\u6709\u5e73\u53f0\u9002\u7528\n\u4f20\u5165\u503c\uff1a\nint \u5916\u8bbe\u7c7b\u578b\uff0c\u76ee\u524d\u6709mcu.UART,mcu.I2C,mcu.SPI,mcu.PWM,mcu.GPIO,mcu.I2S,mcu.LCD,mcu.CAM\uff0c\u5177\u4f53\u9700\u8981\u770b\u5e73\u53f0\nint \u603b\u7ebf\u5e8f\u53f7\uff0c0~N\uff0c\u5982\u679c\u662fmcu.GPIO\uff0c\u5219\u662fGPIO\u53f7\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint pad\u53f7\uff0c\u5982\u679c\u7559\u7a7a\u4e0d\u5199\uff0c\u5219\u8868\u793a\u6e05\u9664\u914d\u7f6e\uff0c\u4f7f\u7528\u5e73\u53f0\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nint \u590d\u7528\u529f\u80fd\u5e8f\u53f7\uff0c0~N\u3002\u5177\u4f53\u770b\u5e73\u53f0\u7684IOMUX\u590d\u7528\u8868\nboolean \u662f\u5426\u662f\u8f93\u5165\u529f\u80fd\uff0ctrue\u662f\uff0c\u7559\u7a7a\u662ffalse\n\u4f8b\u5b50\uff1a\n-- \u4ee5 Air780EP \u4e3a\u4f8b\n-- \u5c06GPIO46\u6620\u5c04\u5230paddr 32 alt 1\nmcu.altfun(mcu.GPIO, 46, 32, 1, 0)\n-- mcu.altfun(mcu.GPIO, 46) -- \u8fd8\u539f\u6210\u9ed8\u8ba4\u914d\u7f6e\n\n-- UART2\u590d\u7528\u5230paddr 25/26 alt 3\nmcu.altfun(mcu.UART,2, 25, 3, 1)\nmcu.altfun(mcu.UART,2, 26, 3, 0)\n", "prefix": "mcu.altfun"}, "mcu.ticks2": {"body": "mcu.ticks2(${1:mode})", "description": "mcu.ticks2(mode) - \u83b7\u53d6\u9ad8\u7cbe\u5ea6\u7684\u8ba1\u6570\n\u4f20\u5165\u503c\uff1a\nint \u6a21\u5f0f, \u770b\u540e\u9762\u7684\u7528\u6cd5\u8bf4\u660e\n\u8fd4\u56de\u503c\uff1a\nint \u6839\u636emode\u7684\u4e0d\u540c,\u8fd4\u56de\u503c\u7684\u542b\u4e49\u4e0d\u540c\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.7\u65b0\u589e\n-- \u4e0emcu.ticks()\u7684\u533a\u522b\u662f,\u5e95\u5c42\u8ba1\u6570\u5668\u662f64bit\u7684, \u5728\u53ef\u9884\u8ba1\u7684\u5c06\u6765\u4e0d\u4f1a\u6ea2\u51fa\n-- \u6240\u4ee5\u672c\u51fd\u6570\u8fd4\u56de\u7684\u503c\u603b\u662f\u9012\u589e\u7684, \u800c\u4e1432bit\u56fa\u4ef6\u4e5f\u80fd\u5904\u7406\n\n-- \u6a21\u5f0f\u53ef\u9009\u503c \u53ca \u5bf9\u5e94\u7684\u8fd4\u56de\u503c\n-- 0: \u8fd4\u56de\u5fae\u79d2\u6570, \u4ee5\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890us \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 1: \u8fd4\u56de\u6beb\u79d2\u6570, \u4ee5\u5343\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890ms \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n-- 2: \u8fd4\u56de\u79d2\u6570, \u4ee5\u767e\u4e07\u79d2\u4e3a\u5206\u5272, \u4f8b\u5982 1234567890s \u8fd4\u56de2\u4e2a\u503c: 1234, 567890\n\nlocal us_h, us_l = mcu.ticks2(0)\nlocal ms_h, ms_l = mcu.ticks2(1)\nlocal sec_h, sec_l = mcu.ticks2(2)\nlog.info(\"us_h\", us_h, \"us_l\", us_l)\nlog.info(\"ms_h\", ms_h, \"ms_l\", ms_l)\nlog.info(\"sec_h\", sec_h, \"sec_l\", sec_l)\n", "prefix": "mcu.ticks2"}, "mcu.XTALRefOutput": {"body": "mcu.XTALRefOutput(${1:source_main},${2:source_32k})", "description": "mcu.XTALRefOutput(source_main, source_32k) - \u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa\n\u4f20\u5165\u503c\uff1a\nboolean \u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\nboolean \u4f4e\u901f32K\u6676\u632f\u53c2\u8003\u65f6\u949f\u662f\u5426\u8f93\u51fa\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5f53\u524d\u4ec5Air780EP\u7cfb\u5217\u652f\u6301\nmcu.XTALRefOutput(true, false) --\u9ad8\u901f\u6676\u632f\u53c2\u8003\u65f6\u949f\u8f93\u51fa,\u4f4e\u901f32K\u4e0d\u8f93\u51fa\n", "prefix": "mcu.XTALRefOutput"}, "miniz.compress": {"body": "miniz.compress(${1:data},${2:flags})", "description": "miniz.compress(data, flags) - \u5feb\u901f\u538b\u7f29,\u9700\u8981165kb\u7684\u7cfb\u7edf\u5185\u5b58\u548c32kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u538b\u7f29\u7684\u6570\u636e, \u5c11\u4e8e400\u5b57\u8282\u7684\u6570\u636e\u4e0d\u5efa\u8bae\u538b\u7f29, \u4e14\u538b\u7f29\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k.\nflags \u538b\u7f29\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.WRITE_ZLIB_HEADER , \u5373\u5199\u5165zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u538b\u7f29\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\nend\n\n", "prefix": "miniz.compress"}, "miniz.uncompress": {"body": "miniz.uncompress(${1:data},${2:flags})", "description": "miniz.uncompress(data, flags) - \u5feb\u901f\u89e3\u538b,\u9700\u898132kb\u7684LuaVM\u5185\u5b58\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u89e3\u538b\u7684\u6570\u636e, \u89e3\u538b\u540e\u7684\u6570\u636e\u4e0d\u80fd\u5927\u4e8e32k\nflags \u89e3\u538b\u53c2\u6570,\u9ed8\u8ba4\u662f miniz.PARSE_ZLIB_HEADER , \u5373\u89e3\u6790zlib\u5934\u90e8\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u89e3\u538b\u6210\u529f,\u8fd4\u56de\u6570\u636e\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal bigdata = \"123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw\"\nlocal cdata = miniz.compress(bigdata)\nif cdata then\n log.info(\"miniz\", \"before\", #bigdata, \"after\", #cdata)\n log.info(\"miniz\", \"cdata as hex\", cdata:toHex())\n\n local udata = miniz.uncompress(cdata)\n log.info(\"miniz\", \"udata\", udata)\nend\n", "prefix": "miniz.uncompress"}, "mlx90640.init": {"body": "mlx90640.init(${1:i2c_id},${2:refresh_rate)(\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3},${3:\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3})", "description": "mlx90640.init(i2c_id,refresh_rate) (\u6ce8\u610f:2023.5.15\u4e4b\u540e\u4f7f\u7528\u6b64\u63a5\u53e3,\u7528\u6237\u9700\u8981\u81ea\u884c\u521d\u59cb\u5316i2c\u63a5\u53e3) - \u521d\u59cb\u5316MLX90640\u4f20\u611f\u5668\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668\u6240\u5728\u7684i2c\u603b\u7ebfid\u6216\u8005\u8f6fi2c\u5bf9\u8c61,\u9ed8\u8ba4\u4e3a0\nint \u4f20\u611f\u5668\u7684\u6d4b\u91cf\u901f\u7387,\u9ed8\u8ba4\u4e3a4Hz\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56denil\u6216\u8005false\n\u4f8b\u5b50\uff1a\ni2c.setup(i2cid,i2c_speed)\nif mlx90640.init(0,mlx90640.FPS4HZ) then\n log.info(\"mlx90640\", \"init ok\")\n sys.wait(500) -- \u7a0d\u7b49\u7247\u523b\n while 1 do\n mlx90640.feed() -- \u53d6\u4e00\u5e27\u6570\u636e\n mlx90640.draw2lcd(0, 0 ,1)-- \u9700\u63d0\u524d\u628alcd\u521d\u59cb\u5316\u597d\n sys.wait(250) -- \u9ed8\u8ba4\u662f4HZ\n end\nelse\n log.info(\"mlx90640\", \"init fail\")\nend\n\n", "prefix": "mlx90640.init"}, "mlx90640.feed": {"body": "mlx90640.feed()", "description": "mlx90640.feed() - \u53d6\u4e00\u5e27\u6570\u636e\n", "prefix": "mlx90640.feed"}, "mlx90640.raw_data": {"body": "mlx90640.raw_data()", "description": "mlx90640.raw_data() - \u83b7\u53d6\u5e95\u5c42\u88f8\u6570\u636e,\u6d6e\u70b9\u6570\u77e9\u9635\n\u8fd4\u56de\u503c\uff1a\ntable \u6d6e\u70b9\u6570\u6570\u636e,768\u4e2a\u50cf\u7d20\u5bf9\u5e94\u7684\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_data"}, "mlx90640.raw_point": {"body": "mlx90640.raw_point(${1:index})", "description": "mlx90640.raw_point(index) - \u83b7\u53d6\u5355\u4e00\u70b9\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u7d22\u5f15\u503c(0-767)\n\u8fd4\u56de\u503c\uff1a\nnumber \u5355\u70b9\u6e29\u5ea6\u503c\n", "prefix": "mlx90640.raw_point"}, "mlx90640.ta_temp": {"body": "mlx90640.ta_temp()", "description": "mlx90640.ta_temp() - \u83b7\u53d6\u5916\u58f3\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5916\u58f3\u6e29\u5ea6\n", "prefix": "mlx90640.ta_temp"}, "mlx90640.max_temp": {"body": "mlx90640.max_temp()", "description": "mlx90640.max_temp() - \u83b7\u53d6\u6700\u9ad8\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u9ad8\u6e29\u5ea6\nnumber \u6700\u9ad8\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.max_temp"}, "mlx90640.min_temp": {"body": "mlx90640.min_temp()", "description": "mlx90640.min_temp() - \u83b7\u53d6\u6700\u4f4e\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u6700\u4f4e\u6e29\u5ea6\nnumber \u6700\u4f4e\u6e29\u5ea6\u4f4d\u7f6e\n", "prefix": "mlx90640.min_temp"}, "mlx90640.average_temp": {"body": "mlx90640.average_temp()", "description": "mlx90640.average_temp() - \u83b7\u53d6\u5e73\u5747\u6e29\u5ea6\n\u8fd4\u56de\u503c\uff1a\nnumber \u5e73\u5747\u6e29\u5ea6\n", "prefix": "mlx90640.average_temp"}, "mlx90640.get_vdd": {"body": "mlx90640.get_vdd()", "description": "mlx90640.get_vdd() - \u83b7\u53d6vdd\n\u8fd4\u56de\u503c\uff1a\nnumber vdd\n", "prefix": "mlx90640.get_vdd"}, "mlx90640.draw2lcd": {"body": "mlx90640.draw2lcd(${1:x},${2:y},${3:fold})", "description": "mlx90640.draw2lcd(x, y, fold) - \u7ed8\u5236\u5230lcd\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u89d2x\u5750\u6807\nint \u5de6\u4e0a\u89d2y\u5750\u6807\nint \u653e\u5927\u500d\u6570,\u5fc5\u987b\u4e3a2\u7684\u6307\u6570\u500d(1,2,4,8,16...)\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "mlx90640.draw2lcd"}, "mobile.imei": {"body": "mobile.imei(${1:index})", "description": "mobile.imei(index) - \u83b7\u53d6IMEI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMEI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imei"}, "mobile.imsi": {"body": "mobile.imsi(${1:index})", "description": "mobile.imsi(index) - \u83b7\u53d6IMSI\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684IMSI\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.imsi"}, "mobile.sn": {"body": "mobile.sn()", "description": "mobile.sn() - \u83b7\u53d6SN\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684SN\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil. \u6ce8\u610f, SN\u53ef\u80fd\u5305\u542b\u4e0d\u53ef\u89c1\u5b57\u7b26\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u51fa\u5382\u672a\u5fc5\u6709\u5199SN\n-- \u4e00\u822c\u7528\u9014\u7684\u552f\u4e00id, \u53ef\u4ee5\u7528mobile.imei()\u4ee3\u66ff\n-- \u5982\u9700\u8981\u771f\u6b63\u7684\u552f\u4e00ID, \u4f7f\u7528 mcu.unique_id()\n", "prefix": "mobile.sn"}, "mobile.muid": {"body": "mobile.muid()", "description": "mobile.muid() - \u83b7\u53d6MUID\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MUID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.muid"}, "mobile.iccid": {"body": "mobile.iccid(${1:id})", "description": "mobile.iccid(id) - \u83b7\u53d6\u6216\u8bbe\u7f6eICCID\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring ICCID\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.iccid"}, "mobile.number": {"body": "mobile.number(${1:id})", "description": "mobile.number(id) - \u83b7\u53d6\u624b\u673a\u5361\u53f7\uff0c\u6ce8\u610f\uff0c\u53ea\u6709\u5199\u5165\u4e86\u624b\u673a\u53f7\u624d\u80fd\u8bfb\u51fa\uff0c\u56e0\u6b64\u6709\u53ef\u80fd\u8bfb\u51fa\u6765\u662f\u7a7a\u7684\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nstring number\u503c,\u82e5\u5931\u8d25\u8fd4\u56denil\n", "prefix": "mobile.number"}, "mobile.simid": {"body": "mobile.simid(${1:id})", "description": "mobile.simid(id) - \u83b7\u53d6\u5f53\u524dSIM\u5361\u69fd,\u6216\u8005\u5207\u6362\u5361\u69fd\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u5982\u679c\u652f\u6301\u53cc\u5361\uff0c\u6bd4\u5982EC618\uff0c\u53ef\u4ee5\u586b2\u6765\u81ea\u9002\u5e94\uff0c\u4f46\u662f\u4f1a\u5360\u7528\u63894\u4e2aIO(gpio4/5/6/23)\u3002\u5982\u679c\u4e0d\u586b\u5c31\u76f4\u63a5\u8bfb\u53d6\u5f53\u524d\u5361\u69fd\nboolean \u662f\u5426\u4f18\u5148\u7528SIM0\uff0c\u53ea\u6709SIM\u5361\u7f16\u53f7\u51992\u81ea\u9002\u5e94\u624d\u6709\u7528\uff01\uff01\uff01\u3002true\u4f18\u5148\u7528SIM0\uff0cfalse\u5219\u7531\u5177\u4f53\u5e73\u53f0\u51b3\u5b9a\uff0c\u652f\u6301\u53cc\u5361\u53cc\u5f85SIM0\u4f18\u5148\uff0c\u4e0d\u652f\u6301\u7684\u662f\u4e0a\u4e00\u6b21\u68c0\u6d4b\u5230\u7684\u4f18\u5148\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5fc5\u987b\u5728\u5f00\u673a\u5c31\u914d\u7f6e\uff0c\u5426\u5219\u5c31\u65e0\u6548\u4e86\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsim\u5361\u69fd\u7f16\u53f7,\u82e5\u5931\u8d25\u8fd4\u56de-1\n\u4f8b\u5b50\uff1a\nmobile.simid(0) -- \u56fa\u5b9a\u4f7f\u7528SIM0\nmobile.simid(1) -- \u56fa\u4ef6\u4f7f\u7528SIM1\nmobile.simid(2) -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4f18\u5148\u7ea7\u770b\u5177\u4f53\u5e73\u53f0\nmobile.simid(2, true) -- -- \u81ea\u52a8\u8bc6\u522bSIM0, SIM1, \u4e14SIM0\u4f18\u5148\n-- \u63d0\u9192, \u81ea\u52a8\u8bc6\u522b\u662f\u4f1a\u589e\u52a0\u65f6\u95f4\u7684\n", "prefix": "mobile.simid"}, "mobile.simPin": {"body": "mobile.simPin(${1:id},${2:operation},${3:pin1},${4:pin2})", "description": "mobile.simPin(id,operation,pin1,pin2) - \u68c0\u6d4b\u5f53\u524dSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u5bf9SIM\u5361\u7684PIN\u7801\u505a\u76f8\u5173\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u7684\u7f16\u53f7, \u4f8b\u59820, 1, \u652f\u6301\u53cc\u5361\u53cc\u5f85\u7684\u624d\u9700\u8981\u9009\u62e9\nint PIN\u7801\u64cd\u4f5c\u7c7b\u578b\uff0c\u53ea\u80fd\u662fmobile.PIN_XXXX\uff0c\u4e0d\u64cd\u4f5c\u5c31\u7559\u7a7a\nstring \u66f4\u6362pin\u65f6\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u9a8c\u8bc1\u64cd\u4f5c\u7684pin\u7801\uff0c\u6216\u8005\u89e3\u9501pin\u7801\u65f6\u7684PUK\uff0c4~8\u5b57\u8282\nstring \u66f4\u6362pin\u7801\u64cd\u4f5c\u65f6\u7684\u65b0\u7684pin\u7801\uff0c\u89e3\u9501pin\u7801\u65f6\u7684\u65b0PIN\uff0c4~8\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nboolean \u5f53\u65e0PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56deSIM\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u6709PIN\u64cd\u4f5c\u65f6\uff0c\u8fd4\u56de\u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\nlocal cpin_is_ready = mobile.simPin() -- \u5f53\u524dsim\u5361\u662f\u5426\u51c6\u5907\u597d\uff0c\u4e00\u822c\u8fd4\u56defalse\u5c31\u662f\u6ca1\u5361\nlocal succ = mobile.simPin(0, mobile.PIN_VERIFY, \"1234\") -- \u8f93\u5165pin\u7801\u9a8c\u8bc1\n", "prefix": "mobile.simPin"}, "mobile.rtime": {"body": "mobile.rtime(${1:time},${2:auto_reset_stack},${3:data_first})", "description": "mobile.rtime(time, auto_reset_stack, data_first) - \u8bbe\u7f6eRRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\u95f4\u9694\uff0c\u5f53\u5f00\u542f\u65f6\u540e\uff0c\u9047\u5230\u6781\u5f31\u4fe1\u53f7+\u9891\u7e41\u6570\u636e\u64cd\u4f5c\u53ef\u80fd\u4f1a\u5f15\u8d77\u7f51\u7edc\u4e25\u91cd\u6545\u969c\uff0c\u56e0\u6b64\u9700\u8981\u989d\u5916\u8bbe\u7f6e\u81ea\u52a8\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nint RRC\u81ea\u52a8\u91ca\u653e\u65f6\u95f4\uff0c\u7b49\u540c\u4e8eAir724\u7684AT+RTIME\uff0c\u5355\u4f4d\u79d2\uff0c\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u505c\u7528\uff0c\u4e0d\u8981\u8d85\u8fc720\u79d2\uff0c\u6ca1\u6709\u610f\u4e49\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u65f6\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\u65f6\u95f4\u5219\u81ea\u52a8\u5f00\u542f\u3002\u672c\u53c2\u6570\u4e8e2023\u5e749\u670814\u65e5\u5df2\u5e9f\u5f03\nboolean \u662f\u5426\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0ctrue\u542f\u7528\uff0cfalse\u5173\u95ed\uff0c\u7559\u7a7a\u4e3afalse\uff0c\u5f00\u542f\u540e\u5fc5\u987b\u7b49\u5230TCP\u6570\u636eACK\u6216\u8005\u8d85\u65f6\u5931\u8d25\uff0c\u6216\u8005socket CONNECT\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u6216\u8005\u5931\u8d25\uff09\u624d\u5141\u8bb8RRC\u63d0\u524d\u91ca\u653e\uff0c\u53ef\u80fd\u4f1a\u589e\u52a0\u529f\u8017\u3002\u672c\u53c2\u6570\u4e8e2024\u5e748\u670812\u65e5\u542f\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.rtime(3) --\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\u63d0\u524d\u91ca\u653eRRC\nmobile.rtime(3,nil,true) --\u542f\u7528\u6570\u636e\u4f20\u8f93\u4f18\u5316\uff0c\u4e0e\u57fa\u7ad9\u65e0\u6570\u636e\u4ea4\u4e923\u79d2\u540e\uff0c\u63d0\u524d\u91ca\u653eRRC\n", "prefix": "mobile.rtime"}, "mobile.setAuto": {"body": "mobile.setAuto(${1:check_sim_period},${2:get_cell_period},${3:search_cell_time},${4:auto_reset_stack},${5:network_check_period})", "description": "mobile.setAuto(check_sim_period, get_cell_period, search_cell_time, auto_reset_stack, network_check_period) - \u8bbe\u7f6e\u4e00\u4e9b\u8f85\u52a9\u5468\u671f\u6027\u6216\u8005\u81ea\u52a8\u529f\u80fd\uff0c\u76ee\u524d\u652f\u6301SIM\u5361\u6682\u65f6\u8131\u79bb\u540e\u6062\u590d\uff0c\u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\uff0c\u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\n\u4f20\u5165\u503c\uff1a\nint SIM\u5361\u81ea\u52a8\u6062\u590d\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5efa\u8bae5000~10000\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0c\u4e0d\u80fd\u518d\u540c\u4e00\u65f6\u95f4\u4f7f\u7528\uff0c\u5fc5\u987b\u9519\u5f00\u6267\u884c\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u5468\u671f\u6027\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\u83b7\u53d6\u5c0f\u533a\u4fe1\u606f\u4f1a\u589e\u52a0\u90e8\u5206\u529f\u8017\u3002\u51990\u6216\u8005\u4e0d\u5199\u5219\u662f\u5173\u95ed\u529f\u80fd\nint \u6bcf\u6b21\u641c\u7d22\u5c0f\u533a\u65f6\u6700\u5927\u641c\u7d22\u65f6\u95f4\uff0c\u5355\u4f4d\u79d2\u3002\u4e0d\u8981\u8d85\u8fc78\u79d2\nboolean \u7f51\u7edc\u9047\u5230\u4e25\u91cd\u6545\u969c\u65f6\u5c1d\u8bd5\u81ea\u52a8\u6062\u590d\uff0c\u548c\u98de\u884c\u6a21\u5f0f/SIM\u5361\u5207\u6362\u51b2\u7a81\uff0ctrue\u5f00\u542f\uff0cfalse\u5173\u95ed\uff0c\u5f00\u59cb\u72b6\u6001\u662ffalse\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u6539\u53d8\nint \u8bbe\u7f6e\u5b9a\u65f6\u68c0\u6d4b\u7f51\u7edc\u662f\u5426\u6b63\u5e38\u5e76\u4e14\u5728\u68c0\u6d4b\u5230\u957f\u65f6\u95f4\u65e0\u7f51\u65f6\u901a\u8fc7\u91cd\u542f\u534f\u8bae\u6808\u6765\u6062\u590d\uff0c\u65e0\u7f51\u6062\u590d\u65f6\u957f\uff0c\u5355\u4f4dms\uff0c\u5efa\u8bae60000\u4ee5\u4e0a\uff0c\u4e3a\u7f51\u7edc\u641c\u7d22\u7f51\u7edc\u4fdd\u7559\u8db3\u591f\u7684\u65f6\u95f4\uff0c\u7559\u7a7a\u5219\u4e0d\u505a\u66f4\u6539\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mobile.setAuto"}, "mobile.apn": {"body": "mobile.apn(${1:index},${2:cid},${3:new_apn_name},${4:user_name},${5:password},${6:ip_type},${7:protocol})", "description": "mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol) - \u83b7\u53d6\u6216\u8bbe\u7f6eAPN\uff0c\u8bbe\u7f6eAPN\u5fc5\u987b\u5728\u5165\u7f51\u524d\u5c31\u8bbe\u7f6e\u597d\uff0c\u6bd4\u5982\u5728SIM\u5361\u8bc6\u522b\u5b8c\u6210\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nint cid, \u9ed8\u8ba40\uff0c\u5982\u679c\u8981\u7528\u975e\u9ed8\u8ba4APN\u6765\u6fc0\u6d3b\uff0c\u5fc5\u987b>0\nstring \u65b0\u7684APN,\u4e0d\u586b\u5c31\u662f\u83b7\u53d6APN, \u586b\u4e86\u5c31\u662f\u8bbe\u7f6eAPN, \u662f\u5426\u652f\u6301\u8bbe\u7f6e\u53d6\u51b3\u4e8e\u5e95\u5c42\u5b9e\u73b0\nstring \u65b0\u7684APN\u7684username,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nstring \u65b0\u7684APN\u7684password,\u5982\u679cAPN\u4e0d\u662f\u7a7a,\u90a3\u5fc5\u987b\u586b\u5199,\u5982\u679c\u6ca1\u6709\u7559\u4e2a\u7a7a\u5b57\u7b26\u4e32\"\"\u3002\u5982\u679cAPN\u662f\u7a7a\u7684\uff0c\u90a3\u53ef\u4ee5nil\nint \u6fc0\u6d3bAPN\u65f6\u7684IP TYPE,1=IPV4 2=IPV6 3=IPV4V6,\u9ed8\u8ba4\u662f1\nint \u6fc0\u6d3bAPN\u65f6,\u5982\u679c\u9700\u8981username\u548cpassword,\u5c31\u8981\u5199\u9274\u6743\u534f\u8bae\u7c7b\u578b,1~3,\u9ed8\u8ba43,\u4ee3\u88681\u548c2\u90fd\u5c1d\u8bd5\u4e00\u4e0b\u3002\u4e0d\u9700\u8981\u9274\u6743\u7684\u51990\nboolean \u662f\u5426\u5220\u9664APN,true\u662f,\u5176\u4ed6\u90fd\u5426,\u53ea\u6709\u53c2\u65703\u65b0\u7684APN\u4e0d\u662fstring\u7684\u65f6\u5019\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nstring \u5982\u679c\u7f51\u7edc\u6ce8\u518c\u6210\u529f\uff0c\u8fd4\u56de\u6ce8\u518c\u7528\u7684APN\u503c\uff0c\u53cd\u4e4b\u662fnil\u3002\u8bbe\u7f6e\u597d\u4e0d\u4f1a\u7acb\u523b\u6709\u8fd4\u56de\u503c\uff0c\u9700\u8981\u7b49\u7f51\u7edc\u6ce8\u518c\u6210\u529f\n\u4f8b\u5b50\uff1a\nmobile.apn(0,1,\"cmiot\",\"\",\"\",nil,0) -- \u79fb\u52a8\u516c\u7f51\u5361\u8bbe\u7f6eAPN\u4e3acmiot,\u4e00\u822c\u4e0d\u7528\u8bbe\u7f6e\nmobile.apn(0,1,\"name\",\"user\",\"password\",nil,3) -- \u4e13\u7f51\u5361\u8bbe\u7f6e\u7684demo\uff0cname\uff0cuser\uff0cpassword\u8054\u7cfb\u5361\u5546\u83b7\u53d6\n", "prefix": "mobile.apn"}, "mobile.ipv6": {"body": "mobile.ipv6(${1:onff})", "description": "mobile.ipv6(onff) - \u662f\u5426\u9ed8\u8ba4\u5f00\u542fIPV6\u529f\u80fd\uff0c\u5fc5\u987b\u5728LTE\u7f51\u7edc\u8fde\u63a5\u524d\u5c31\u8bbe\u7f6e\u597d\n\u4f20\u5165\u503c\uff1a\nboolean \u5f00\u5173 true\u5f00\u542f false \u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nboolean true \u5f53\u524d\u662f\u5f00\u542f\u7684\uff0cfalse \u5f53\u524d\u662f\u5173\u95ed\u7684\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u5f00\u542fipv6\u540e, \u5f00\u673a\u8054\u7f51\u4f1a\u61622~3\u79d2\n", "prefix": "mobile.ipv6"}, "mobile.csq": {"body": "mobile.csq()", "description": "mobile.csq() - \u83b7\u53d6csq\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dCSQ\u503c, \u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 - 31, \u8d8a\u5927\u8d8a\u597d\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, 4G\u6a21\u5757\u7684CSQ\u503c\u4ec5\u4f9b\u53c2\u8003, rsrp/rsrq\u624d\u662f\u771f\u6b63\u7684\u4fe1\u53f7\u5f3a\u5ea6\u6307\u6807\n", "prefix": "mobile.csq"}, "mobile.rssi": {"body": "mobile.rssi()", "description": "mobile.rssi() - \u83b7\u53d6rssi\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drssi\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u8303\u56f4 0 \u5230 -114, \u8d8a\u5c0f\u8d8a\u597d\n", "prefix": "mobile.rssi"}, "mobile.rsrp": {"body": "mobile.rsrp()", "description": "mobile.rsrp() - \u83b7\u53d6rsrp,\u53c2\u8003\u4fe1\u53f7\u63a5\u6536\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrp\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -44 ~ -140 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrp"}, "mobile.rsrq": {"body": "mobile.rsrq()", "description": "mobile.rsrq() - \u83b7\u53d6rsrq,\u53c2\u8003\u4fe1\u53f7\u53d1\u9001\u529f\u7387\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524drsrq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0. \u53d6\u503c\u8303\u56f4: -3 ~ -19.5 \uff0c\u503c\u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.rsrq"}, "mobile.snr": {"body": "mobile.snr()", "description": "mobile.snr() - \u83b7\u53d6snr,\u4fe1\u566a\u6bd4\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524dsnq\u503c,\u82e5\u5931\u8d25\u8fd4\u56de0.\u8303\u56f4 0 - 30, \u8d8a\u5927\u8d8a\u597d\n", "prefix": "mobile.snr"}, "mobile.eci": {"body": "mobile.eci()", "description": "mobile.eci() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684ECI(E-UTRAN Cell Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.eci"}, "mobile.tac": {"body": "mobile.tac()", "description": "mobile.tac() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684TAC\u6216\u8005LAC\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524deci\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1. \u5982\u679c\u5c1a\u672a\u6ce8\u518c\u5230\u7f51\u7edc,\u4f1a\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.7.9 \u65b0\u589e\n", "prefix": "mobile.tac"}, "mobile.enbid": {"body": "mobile.enbid()", "description": "mobile.enbid() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u7684eNBID(eNodeB Identifier)\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524denbid\u503c,\u82e5\u5931\u8d25\u8fd4\u56de-1\n", "prefix": "mobile.enbid"}, "mobile.scell": {"body": "mobile.scell()", "description": "mobile.scell() - \u83b7\u53d6\u5f53\u524d\u670d\u52a1\u5c0f\u533a\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u670d\u52a1\u5c0f\u533a\u7684\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2024.9.12 \u65b0\u589e\nlog.info(\"cell\", json.encode(mobile.scell()))\n-- \u8fd4\u56de\u503c\u793a\u4f8b\n{\n \"mnc\": 11,\n \"mcc\": 460,\n \"rssi\": -78,\n \"pci\": 115,\n \"rsrp\": -107,\n \"tac\": 30005,\n \"eci\": 124045360,\n \"cid\": 124045360,\n \"rsrq\": -9,\n \"snr\": 15,\n \"earfcn\": 1850\n}\n", "prefix": "mobile.scell"}, "mobile.flymode": {"body": "mobile.flymode(${1:index},${2:enable})", "description": "mobile.flymode(index, enable) - \u8fdb\u51fa\u98de\u884c\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7f16\u53f7,\u9ed8\u8ba40. \u5728\u652f\u6301\u53cc\u5361\u7684\u6a21\u5757\u4e0a\u624d\u4f1a\u51fa\u73b00\u62161\u7684\u60c5\u51b5\nbool \u662f\u5426\u8bbe\u7f6e\u4e3a\u98de\u884c\u6a21\u5f0f,true\u4e3a\u8bbe\u7f6e, false\u4e3a\u9000\u51fa,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u539f\u98de\u884c\u6a21\u5f0f\u7684\u72b6\u6001\n", "prefix": "mobile.flymode"}, "mobile.syncTime": {"body": "mobile.syncTime(${1:enable})", "description": "mobile.syncTime(enable) - \u914d\u7f6e\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\u5f00\u5173\uff0c\u9ed8\u8ba4\u5f00\u542f\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed, nil\u4e0d\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nbool \u5f53\u524d\u5f00\u5173\u72b6\u6001\n\u4f8b\u5b50\uff1a\nmobile.syncTime() --\u83b7\u53d6\u5f53\u524d\u5f00\u5173\u72b6\u6001\nmobile.syncTime(false) --\u5173\u95ed\u57fa\u7ad9\u540c\u6b65\u65f6\u95f4\n", "prefix": "mobile.syncTime"}, "mobile.status": {"body": "mobile.status()", "description": "mobile.status() - \u83b7\u53d6\u7f51\u7edc\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7f51\u7edc\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u72b6\u6001\u63cf\u8ff0\n-- 0:\u7f51\u7edc\u672a\u6ce8\u518c\n-- 1:\u7f51\u7edc\u5df2\u6ce8\u518c\n-- 2:\u6b63\u5728\u641c\u7f51\u4e2d\n-- 3:\u7f51\u7edc\u6ce8\u518c\u88ab\u62d2\u7edd\n-- 4:\u7f51\u7edc\u72b6\u6001\u672a\u77e5\n-- 5:\u6f2b\u6e38,\u4e14\u5df2\u6ce8\u518c\n-- 6:\u4ec5SMS\u53ef\u7528\n-- 7:\u4ec5SMS\u53ef\u7528,\u4e14\u6f2b\u6e38\u72b6\u6001\n-- 8:\u4ec5\u7d27\u6025\u547c\u53eb. \u6ce8\u610f, \u56fd\u5185\u4e0d\u652f\u6301\u6b64\u72b6\u6001,\u6a21\u5757\u4e5f\u4e0d\u652f\u6301\u7d27\u6025\u547c\u53eb\n\n-- \u4e0d\u63a8\u8350\u4f7f\u7528\u672cAPI\u5224\u65ad\u8054\u7f51\u72b6\u6001, \u5efa\u8bae\u4f7f\u7528socket.localIP()\u6765\u5224\u65ad\n", "prefix": "mobile.status"}, "mobile.getCellInfo": {"body": "mobile.getCellInfo()", "description": "mobile.getCellInfo() - \u83b7\u53d6\u57fa\u7ad9\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u57fa\u7ad9\u6570\u636e\u7684\u6570\u7ec4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \u4ece2023.06.20\u5f00\u59cb, \u9700\u8981\u4e3b\u52a8\u8bf7\u6c42\u4e00\u6b21reqCellInfo\u624d\u4f1a\u6709\u57fa\u7ad9\u6570\u636e.\n\n--\u793a\u4f8b\u8f93\u51fa(\u539f\u59cb\u6570\u636e\u662ftable, \u4e0b\u9762\u662fjson\u683c\u5f0f\u5316\u540e\u7684\u5185\u5bb9)\n--[[\n[\n {\"rsrq\":-10,\"rssi\":-55,\"cid\":124045360,\"mnc\":17,\"pci\":115,\"earfcn\":1850,\"snr\":15,\"rsrp\":-85,\"mcc\":1120,\"tdd\":0},\n {\"pci\":388,\"rsrq\":-11,\"mnc\":17,\"earfcn\":2452,\"snr\":5,\"rsrp\":-67,\"mcc\":1120,\"cid\":124045331},\n {\"pci\":100,\"rsrq\":-9,\"mnc\":17,\"earfcn\":75,\"snr\":17,\"rsrp\":-109,\"mcc\":1120,\"cid\":227096712}\n]\n]]\n\nmobile.reqCellInfo(60)\n-- \u8ba2\u9605\nsys.subscribe(\"CELL_INFO_UPDATE\", function()\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\nend)\n\n-- \u5b9a\u671f\u8f6e\u8bad\u5f0f\nsys.taskInit(function()\n sys.wait(3000)\n while 1 do\n mobile.reqCellInfo(15)\n sys.waitUntil(\"CELL_INFO_UPDATE\", 15000)\n log.info(\"cell\", json.encode(mobile.getCellInfo()))\n end\nend)\n", "prefix": "mobile.getCellInfo"}, "mobile.reqCellInfo": {"body": "mobile.reqCellInfo(${1:timeout})", "description": "mobile.reqCellInfo(timeout) - \u53d1\u8d77\u57fa\u7ad9\u4fe1\u606f\u67e5\u8be2,\u542b\u4e34\u8fd1\u5c0f\u533a\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u79d2,\u9ed8\u8ba415. \u6700\u5c115, \u6700\u9ad860\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53c2\u8003 mobile.getCellInfo \u51fd\u6570\n", "prefix": "mobile.reqCellInfo"}, "mobile.lockCell": {"body": "mobile.lockCell(${1:mode},${2:earfcn},${3:pci})", "description": "mobile.lockCell(mode, earfcn, pci) - \u9501\u5b9a/\u89e3\u9501\u5c0f\u533a\uff0c\u4ec5\u7528\u4e8e\u5916\u573a\u6d4b\u8bd5\uff0c\u6ca1\u63a5\u89e6\u8fc7\u7684\uff0c\u6216\u8005\u751f\u4ea7\u73af\u5883\u4e2d\u8bf7\u52ff\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u64cd\u4f5c\u7801 0\u5220\u9664\u4f18\u5148\u7684\u9891\u70b9\uff0c1\u8bbe\u7f6e\u4f18\u5148\u9891\u70b9\uff0c2\u9501\u5b9a\u5c0f\u533a\uff0c3\u89e3\u9501\u5c0f\u533a\nint \u4e0b\u884c\u9891\u70b9\nint phycellid\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529ftrue \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nmobile.lockCell(2,1860,32) --\u9501\u5b9a\u5c0f\u533a\nmobile.lockCell(3) --\u89e3\u9501\u5c0f\u533a\n", "prefix": "mobile.lockCell"}, "mobile.reset": {"body": "mobile.reset()", "description": "mobile.reset() - \u91cd\u542f\u534f\u8bae\u6808\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u91cd\u542fLTE\u534f\u8bae\u6808\nmobile.reset()\n", "prefix": "mobile.reset"}, "mobile.dataTraffic": {"body": "mobile.dataTraffic(${1:clearUplink},${2:clearDownlink})", "description": "mobile.dataTraffic(clearUplink, clearDownlink) - \u6570\u636e\u91cf\u6d41\u91cf\u5904\u7406\n\u4f20\u5165\u503c\uff1a\nboolean \u6e05\u7a7a\u4e0a\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\nboolean \u6e05\u7a7a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\uff0ctrue\u6e05\u7a7a\uff0c\u5176\u4ed6\u5ffd\u7565\n\u8fd4\u56de\u503c\uff1a\nint \u4e0a\u884c\u6d41\u91cfGB\nint \u4e0a\u884c\u6d41\u91cfB\nint \u4e0b\u884c\u6d41\u91cfGB\nint \u4e0b\u884c\u6d41\u91cfB\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\n-- \u4e0a\u884c\u6d41\u91cf\u503cByte = uplinkGB * 1024 * 1024 * 1024 + uplinkB\n-- \u4e0b\u884c\u6d41\u91cf\u503cByte = downlinkGB * 1024 * 1024 * 1024 + downlinkB\nlocal uplinkGB, uplinkB, downlinkGB, downlinkB = mobile.dataTraffic()\n\n-- \u6e05\u7a7a\u4e0a\u4e0b\u884c\u6d41\u91cf\u7d2f\u8ba1\u503c\nmobile.dataTraffic(true, true)\n\n-- \u4ec5\u8bb0\u5f55\u5f00\u673a\u540e\u7684\u6d41\u91cf,\u590d\u4f4d/\u91cd\u542f\u4f1a\u5f52\u96f6\n", "prefix": "mobile.dataTraffic"}, "mobile.config": {"body": "mobile.config(${1:item},${2:value})", "description": "mobile.config(item, value) - \u7f51\u7edc\u7279\u6b8a\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f6e\u9879\u76ee\uff0c\u770bmobile.CONF_XXX\nint \u914d\u7f6e\u503c,\u6839\u636e\u5177\u4f53\u914d\u7f6e\u7684item\u51b3\u5b9a\n\u8fd4\u56de\u503c\uff1a\nboolean \u662f\u5426\u6210\u529f\n\u4f8b\u5b50\uff1a\n--\u9488\u5bf9\u4e0d\u540c\u5e73\u53f0\u6709\u4e0d\u540c\u7684\u914d\u7f6e\uff0c\u8c28\u614e\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u6709EC618/EC718\u7cfb\u5217\n\n-- EC618\u914d\u7f6e\u5c0f\u533a\u91cd\u9009\u4fe1\u53f7\u5dee\u503c\u95e8\u9650\uff0c\u4e0d\u80fd\u5927\u4e8e15dbm\uff0c\u5fc5\u987b\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u624d\u80fd\u7528\nmobile.flymode(0,true)\nmobile.config(mobile.CONF_RESELTOWEAKNCELL, 15)\nmobile.config(mobile.CONF_STATICCONFIG, 1) --\u5f00\u542f\u7f51\u7edc\u9759\u6001\u4f18\u5316\nmobile.flymode(0,false)\n\n-- EC618\u8bbe\u7f6eSIM\u5199\u5165\u6b21\u6570\u7684\u7edf\u8ba1\n-- \u5173\u95ed\u7edf\u8ba1\nmobile.config(mobile.CONF_SIM_WC_MODE, 0)\n-- \u5f00\u542f\u7edf\u8ba1, \u9ed8\u8ba4\u4e5f\u662f\u5f00\u542f\u7684.\nmobile.config(mobile.CONF_SIM_WC_MODE, 1)\n-- \u8bfb\u53d6\u7edf\u8ba1\u503c,\u5f02\u6b65, \u9700\u8981\u901a\u8fc7\u7cfb\u7edf\u6d88\u606fSIM_IND\u83b7\u53d6\nsys.subscribe(\"SIM_IND\", function(stats, value)\n log.info(\"SIM_IND\", stats)\n if stats == \"SIM_WC\" then\n log.info(\"sim\", \"write counter\", value)\n end\nend)\nmobile.config(mobile.CONF_SIM_WC_MODE, 2)\n-- \u6e05\u7a7a\u7edf\u8ba1\u503c\nmobile.config(mobile.CONF_SIM_WC_MODE, 3)\n", "prefix": "mobile.config"}, "mobile.getBand": {"body": "mobile.getBand(${1:band},${2:is_default})", "description": "mobile.getBand(band, is_default) - \u83b7\u53d6\u5f53\u524d\u4f7f\u7528/\u652f\u6301\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u51faband\nboolean true\u9ed8\u8ba4\u652f\u6301\uff0cfalse\u5f53\u524d\u652f\u6301\u7684\uff0c\u9ed8\u8ba4\u662ffalse\uff0c\u5f53\u524d\u662f\u9884\u7559\u529f\u80fd\uff0c\u4e0d\u8981\u5199true\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nmobile.getBand(buff) --\u8f93\u51fa\u5f53\u524d\u4f7f\u7528\u7684band\uff0cband\u53f7\u653e\u5728buff\u5185\uff0cbuff[0]\uff0cbuff[1]\uff0cbuff[2] .. buff[buff:used() - 1]\n", "prefix": "mobile.getBand"}, "mobile.setBand": {"body": "mobile.setBand(${1:band},${2:num})", "description": "mobile.setBand(band, num) - \u8bbe\u7f6e\u4f7f\u7528\u7684band\n\u4f20\u5165\u503c\uff1a\nzbuff \u8f93\u5165\u4f7f\u7528\u7684band\nint band\u6570\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u653e\u56defalse\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create(40)\nbuff[0] = 3\nbuff[1] = 5\nbuff[2] = 8\nbuff[3] = 40\nmobile.setBand(buff, 4) --\u8bbe\u7f6e\u4f7f\u7528\u7684band\u4e00\u51714\u4e2a\uff0c\u4e3a3,5,8,40\n", "prefix": "mobile.setBand"}, "mobile.nstOnOff": {"body": "mobile.nstOnOff(${1:onoff},${2:uart_id})", "description": "mobile.nstOnOff(onoff, uart_id) - RF\u6d4b\u8bd5\u5f00\u5173\u548c\u914d\u7f6e\n\u4f20\u5165\u503c\uff1a\nboolean true\u5f00\u542f\u6d4b\u8bd5\u6a21\u5f0f\uff0cfalse\u5173\u95ed\nint \u4e32\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstOnOff(true, uart.VUART_0) --\u6253\u5f00\u6d4b\u8bd5\u6a21\u5f0f\uff0c\u5e76\u4e14\u7528\u865a\u62df\u4e32\u53e3\u53d1\u9001\u7ed3\u679c\nmobile.nstOnOff(false) --\u5173\u95ed\u6d4b\u8bd5\u6a21\u5f0f\n", "prefix": "mobile.nstOnOff"}, "mobile.nstInput": {"body": "mobile.nstInput(${1:data})", "description": "mobile.nstInput(data) - RF\u6d4b\u8bd5\u6570\u636e\u8f93\u5165\n\u4f20\u5165\u503c\uff1a\nstring or zbuff \u7528\u6237\u4ece\u4e32\u53e3\u83b7\u53d6\u7684\u6570\u636e\uff0c\u6ce8\u610f\uff0c\u5f53\u83b7\u53d6\u5b8c\u6240\u6709\u6570\u636e\u540e\uff0c\u9700\u8981\u518d\u4f20\u4e00\u4e2anil\u6765\u4f5c\u4e3a\u4f20\u8f93\u7ed3\u675f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.nstInput(uart_data)\nmobile.nstInput(nil)\n", "prefix": "mobile.nstInput"}, "mobile.vsimInit": {"body": "mobile.vsimInit()", "description": "mobile.vsimInit() - \u521d\u59cb\u5316\u5185\u7f6e\u9ed8\u8ba4\u865a\u62df\u5361\u529f\u80fd(\u4e0d\u53ef\u7528)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimInit()\n", "prefix": "mobile.vsimInit"}, "mobile.vsimOnOff": {"body": "mobile.vsimOnOff(${1:enable})", "description": "mobile.vsimOnOff(enable) - \u5207\u6362\u5185\u7f6e\u865a\u62df\u5361\u548c\u5916\u7f6e\u5b9e\u4f53\u5361\uff0c2024\u5e748\u670813\u65e5\u542f\u7528\uff0c\u865a\u62df\u5361\u9700\u8981\u56fa\u4ef6\u652f\u6301\uff0c\u5426\u5219\u5207\u6362\u540e\u65e0\u7f51\u7edc\uff0c\u9700\u8981\u5728\u98de\u884c\u6a21\u5f0f\u4e0b\u5207\u6362\uff0c\u6216\u8005\u5207\u6362\u540e\u91cd\u542f\u534f\u8bae\u6808\n\u4f20\u5165\u503c\uff1a\nbool \u5f00\u542f,true\u5f00\u542f, false\u5173\u95ed\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmobile.vsimOnOff(true) --\u4f7f\u7528\u5185\u7f6e\u865a\u62df\u5361\nmobile.vsimOnOff(false) --\u4f7f\u7528\u5916\u7f6e\u5b9e\u4f53\u5361\n", "prefix": "mobile.vsimOnOff"}, "mqttc:subscribe": {"body": "mqttc:subscribe(${1:topic},${2:qos})", "description": "mqttc:subscribe(topic, qos) - \u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\nint topic\u4e3astring\u65f6\u751f\u6548 0/1/2 \u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid,\u5f53qos\u4e3a1/2\u65f6\u6709\u6548, \u82e5\u5e95\u5c42\u8fd4\u56de\u5931\u8d25,\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=0\nmqttc:subscribe(\"/luatos/123456\", 0)\n-- \u8ba2\u9605\u5355\u4e2atopic, \u4e14qos=1\nmqttc:subscribe(\"/luatos/12345678\", 1)\n-- \u8ba2\u9605\u591a\u4e2atopic, \u4e14\u4f7f\u7528\u4e0d\u540c\u7684qos\nmqttc:subscribe({[\"/luatos/1234567\"]=1,[\"/luatos/12345678\"]=2})\n", "prefix": "mqttc:subscribe"}, "mqttc:unsubscribe": {"body": "mqttc:unsubscribe(${1:topic})", "description": "mqttc:unsubscribe(topic) - \u53d6\u6d88\u8ba2\u9605\u4e3b\u9898\n\u4f20\u5165\u503c\uff1a\nstring/table \u4e3b\u9898\n\u4f8b\u5b50\uff1a\nmqttc:unsubscribe(\"/luatos/123456\")\nmqttc:unsubscribe({\"/luatos/1234567\",\"/luatos/12345678\"})\n", "prefix": "mqttc:unsubscribe"}, "mqttc:debug": {"body": "mqttc:debug(${1:onoff})", "description": "mqttc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "mqttc:debug"}, "mqtt.create": {"body": "mqtt.create(${1:adapter},${2:host},${3:port},${4:ssl},${5:isipv6})", "description": "mqtt.create(adapter,host,port,ssl,isipv6) - mqtt\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53ea\u80fd\u662fsocket.ETH0, socket.STA, socket.AP,\u5982\u679c\u4e0d\u586b,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f,\u7136\u540e\u662f\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring \u670d\u52a1\u5668\u5730\u5740,\u53ef\u4ee5\u662f\u57df\u540d, \u4e5f\u53ef\u4ee5\u662fip\nint \u7aef\u53e3\u53f7\nbool/table \u662f\u5426\u4e3assl\u52a0\u5bc6\u8fde\u63a5,\u9ed8\u8ba4\u4e0d\u52a0\u5bc6,true\u4e3a\u65e0\u8bc1\u4e66\u6700\u7b80\u5355\u7684\u52a0\u5bc6\uff0ctable\u4e3a\u6709\u8bc1\u4e66\u7684\u52a0\u5bc6
server_cert \u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e
client_cert \u5ba2\u6237\u7aef\u8bc1\u4e66\u6570\u636e
client_key \u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e
client_password \u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e
verify \u662f\u5426\u5f3a\u5236\u6821\u9a8c 0\u4e0d\u6821\u9a8c/1\u53ef\u9009\u6821\u9a8c/2\u5f3a\u5236\u6821\u9a8c \u9ed8\u8ba42\nbool/table bool \u662f\u5426\u4e3aipv6\uff0c\u9ed8\u8ba4\u4e0d\u662f table mqtt\u6269\u5c55\u53c2\u6570, ipv6 \u662f\u5426\u4e3aipv6, rxSize \u63a5\u6536\u7f13\u51b2\u533a\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56demqtt\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884)\n-- \u666e\u901aTCP\u94fe\u63a5,mqtt\u63a5\u6536\u7f13\u51b2\u533a4096\nmqttc = mqtt.create(nil,\"120.55.137.106\", 1884, nil, {rxSize = 4096})\n-- \u52a0\u5bc6TCP\u94fe\u63a5,\u4e0d\u9a8c\u8bc1\u670d\u52a1\u5668\u8bc1\u4e66\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, true)\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\")})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u5355\u670d\u52a1\u5668\u8bc1\u4e66\u9a8c\u8bc1, \u4f46\u53ef\u9009\u8ba4\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {server_cert=io.readFile(\"/luadb/ca.crt\"), verify=1})\n-- \u52a0\u5bc6TCPTCP\u94fe\u63a5,\u53cc\u5411\u8bc1\u4e66\u9a8c\u8bc1\nmqttc = mqtt.create(nil,\"120.55.137.106\", 8883, {\n server_cert=io.readFile(\"/luadb/ca.crt\"),\n client_cert=io.readFile(\"/luadb/client.pem\"),\n client_key=\"123456\",\n client_password=\"123456\",\n })\n", "prefix": "mqtt.create"}, "mqttc:auth": {"body": "mqttc:auth(${1:client_id},${2:username},${3:password},${4:cleanSession})", "description": "mqttc:auth(client_id,username,password,cleanSession) - mqtt\u4e09\u5143\u7ec4\u914d\u7f6e\u53cacleanSession\n\u4f20\u5165\u503c\uff1a\nstring \u8bbe\u5907\u8bc6\u522bid,\u5bf9\u4e8e\u540c\u4e00\u4e2amqtt\u670d\u52a1\u5668\u6765\u8bf4, \u901a\u5e38\u8981\u6c42\u552f\u4e00,\u76f8\u540cclient_id\u4f1a\u4e92\u76f8\u8e22\u4e0b\u7ebf\nstring \u8d26\u53f7 \u53ef\u9009\nstring \u5bc6\u7801 \u53ef\u9009\nbool \u6e05\u9664session,\u9ed8\u8ba4true,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u65e0\u8d26\u53f7\u5bc6\u7801\u767b\u5f55,\u4ec5clientId\nmqttc:auth(\"123456789\")\n-- \u5e26\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\nmqttc:auth(\"123456789\",\"username\",\"password\")\n-- \u989d\u5916\u914d\u7f6ecleanSession,\u4e0d\u6e05\u9664\nmqttc:auth(\"123456789\",\"username\",\"password\", false)\n-- \u65e0clientId\u6a21\u5f0f, \u670d\u52a1\u5668\u968f\u673a\u751f\u6210id, cleanSession\u4e0d\u53ef\u914d\u7f6e\nmqttc:auth()\n", "prefix": "mqttc:auth"}, "mqttc:keepalive": {"body": "mqttc:keepalive(${1:time})", "description": "mqttc:keepalive(time) - mqtt\u5fc3\u8df3\u8bbe\u7f6e\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009 \u5355\u4f4ds \u9ed8\u8ba4240s. \u6700\u514815,\u6700\u9ad8600\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:keepalive(30)\n", "prefix": "mqttc:keepalive"}, "mqttc:on": {"body": "mqttc:on(${1:cb})", "description": "mqttc:on(cb) - \u6ce8\u518cmqtt\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb mqtt\u56de\u8c03,\u53c2\u6570\u5305\u62ecmqtt_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nmqttc:on(function(mqtt_client, event, data, payload, metas)\n -- \u7528\u6237\u81ea\u5b9a\u4e49\u4ee3\u7801\n log.info(\"mqtt\", \"event\", event, mqtt_client, data, payload)\nend)\n--[[\nevent\u53ef\u80fd\u51fa\u73b0\u7684\u503c\u6709\n conack -- \u670d\u52a1\u5668\u9274\u6743\u5b8c\u6210,mqtt\u8fde\u63a5\u5df2\u7ecf\u5efa\u7acb, \u53ef\u4ee5\u8ba2\u9605\u548c\u53d1\u5e03\u6570\u636e\u4e86,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n recv -- \u63a5\u6536\u5230\u6570\u636e,\u7531\u670d\u52a1\u5668\u4e0b\u53d1, data\u4e3atopic\u503c(string), payload\u4e3a\u4e1a\u52a1\u6570\u636e(string).metas\u662f\u5143\u6570\u636e(table), \u4e00\u822c\u4e0d\u5904\u7406. \n -- metas\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\n -- qos \u53d6\u503c\u8303\u56f40,1,2\n -- retain \u53d6\u503c\u8303\u56f4 0,1\n -- dup \u53d6\u503c\u8303\u56f4 0,1\n sent -- \u53d1\u9001\u5b8c\u6210, qos0\u4f1a\u9a6c\u4e0a\u901a\u77e5, qos1/qos2\u4f1a\u5728\u670d\u52a1\u5668\u5e94\u7b54\u4f1a\u56de\u8c03, data\u4e3a\u6d88\u606fid\n disconnect -- \u670d\u52a1\u5668\u65ad\u5f00\u8fde\u63a5,\u7f51\u7edc\u95ee\u9898\u6216\u670d\u52a1\u5668\u8e22\u4e86\u5ba2\u6237\u7aef,\u4f8b\u5982clientId\u91cd\u590d,\u8d85\u65f6\u672a\u4e0a\u62a5\u4e1a\u52a1\u6570\u636e\n pong -- \u6536\u5230\u670d\u52a1\u5668\u5fc3\u8df3\u5e94\u7b54,\u6ca1\u6709\u9644\u52a0\u6570\u636e\n]]\n", "prefix": "mqttc:on"}, "mqttc:connect": {"body": "mqttc:connect()", "description": "mqttc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nmqttc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65admqtt\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "mqttc:connect"}, "mqttc:disconnect": {"body": "mqttc:disconnect()", "description": "mqttc:disconnect() - \u65ad\u5f00\u670d\u52a1\u5668\u8fde\u63a5(\u4e0d\u4f1a\u91ca\u653e\u8d44\u6e90)\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u65ad\u5f00\u8fde\u63a5\nmqttc:disconnect()\n", "prefix": "mqttc:disconnect"}, "mqttc:autoreconn": {"body": "mqttc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "mqttc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nmqttc:autoreconn(true)\n", "prefix": "mqttc:autoreconn"}, "mqttc:publish": {"body": "mqttc:publish(${1:topic},${2:data},${3:qos},${4:retain})", "description": "mqttc:publish(topic, data, qos, retain) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4e3b\u9898,\u5fc5\u586b\nstring \u6d88\u606f,\u5fc5\u586b,\u4f46\u957f\u5ea6\u53ef\u4ee5\u662f0\nint \u6d88\u606f\u7ea7\u522b 0/1 \u9ed8\u8ba40\nint \u662f\u5426\u5b58\u6863, 0/1,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nint \u6d88\u606fid, \u5f53qos\u4e3a1\u62162\u65f6\u4f1a\u6709\u6548\u503c. \u82e5\u5e95\u5c42\u8fd4\u56de\u662f\u5426, \u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nmqttc:publish(\"/luatos/123456\", \"123\")\n", "prefix": "mqttc:publish"}, "mqttc:close": {"body": "mqttc:close()", "description": "mqttc:close() - mqtt\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nmqttc:close()\n", "prefix": "mqttc:close"}, "mqttc:ready": {"body": "mqttc:ready()", "description": "mqttc:ready() - mqtt\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal error = mqttc:ready()\n", "prefix": "mqttc:ready"}, "mqttc:state": {"body": "mqttc:state()", "description": "mqttc:state() - mqtt\u5ba2\u6237\u7aef\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nnumber \u5ba2\u6237\u7aef\u72b6\u6001\n\u4f8b\u5b50\uff1a\nlocal state = mqttc:state()\n-- \u5df2\u77e5\u72b6\u6001:\n-- 0: MQTT_STATE_DISCONNECT\n-- 1: MQTT_STATE_CONNECTING\n-- 2: MQTT_STATE_CONNECTED\n-- 3: MQTT_STATE_READY\n-- 4: MQTT_STATE_ERROR\n", "prefix": "mqttc:state"}, "mqttc:will": {"body": "mqttc:will(${1:topic},${2:payload},${3:qos},${4:retain})", "description": "mqttc:will(topic, payload, qos, retain) - \u8bbe\u7f6e\u9057\u5631\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9057\u5631\u6d88\u606f\u7684topic\nstring \u9057\u5631\u6d88\u606f\u7684payload\nstring \u9057\u5631\u6d88\u606f\u7684qos, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\nstring \u9057\u5631\u6d88\u606f\u7684retain, \u9ed8\u8ba40, \u53ef\u4ee5\u4e0d\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8981\u5728connect\u4e4b\u524d\u8c03\u7528\nmqttc:will(\"/xxx/xxx\", \"xxxxxx\")\n", "prefix": "mqttc:will"}, "otp.read": {"body": "otp.read(${1:zone},${2:offset},${3:len})", "description": "otp.read(zone, offset, len) - \u8bfb\u53d6\u6307\u5b9aOTP\u533a\u57df\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nint \u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6, \u5355\u4f4d\u5b57\u8282, \u5fc5\u987b\u662f4\u7684\u500d\u6570, \u4e0d\u80fd\u8d85\u8fc74096\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n\nlocal otpdata = otp.read(0, 0, 64)\nif otpdata then\n log.info(\"otp\", otpdata:toHex())\nend\n", "prefix": "otp.read"}, "otp.write": {"body": "otp.write(${1:zone},${2:data},${3:offset})", "description": "otp.write(zone, data, offset) - \u5f80\u6307\u5b9aOTP\u533a\u57df\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\nstring \u6570\u636e, \u957f\u5ea6\u5fc5\u987b\u662f4\u4e2a\u500d\u6570\nint \u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nbooL \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.write"}, "otp.erase": {"body": "otp.erase(${1:zone})", "description": "otp.erase(zone) - \u64e6\u9664\u6307\u5b9aOTP\u533a\u57df\n\u4f20\u5165\u503c\uff1a\nint \u533a\u57df, \u901a\u5e38\u4e3a0/1/2/3, \u4e0e\u5177\u4f53\u786c\u4ef6\u76f8\u5173\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.erase"}, "otp.lock": {"body": "otp.lock(${1:zone})", "description": "otp.lock(zone) - \u9501\u5b9aOTP\u533a\u57df. \u7279\u522b\u6ce8\u610f!!\u4e00\u65e6\u52a0\u9501\u5373\u65e0\u6cd5\u89e3\u9501,OTP\u53d8\u6210\u53ea\u8bfb!!!\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "otp.lock"}, "pack.unpack": {"body": "pack.unpack(${1:string},${2:format},${3:init})", "description": "pack.unpack( string, format, init) - \u89e3\u5305\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u89e3\u5305\u7684\u5b57\u7b26\u4e32\nstring \u683c\u5f0f\u5316\u7b26\u53f7\nint \u9ed8\u8ba4\u503c\u4e3a1\uff0c\u6807\u8bb0\u89e3\u5305\u5f00\u59cb\u7684\u4f4d\u7f6e\n\u8fd4\u56de\u503c\uff1a\nint \u5b57\u7b26\u4e32\u6807\u8bb0\u7684\u4f4d\u7f6e\nany \u7b2c\u4e00\u4e2a\u89e3\u5305\u7684\u503c, \u6839\u636eformat\u503c,\u53ef\u80fd\u6709N\u4e2a\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal _,a = pack.unpack(x,\">h\") --\u89e3\u5305\u6210short (2\u5b57\u8282)\n", "prefix": "pack.unpack"}, "pack.pack": {"body": "pack.pack(${1:format},${2:val1},${3:val2},${4:val3},${5:valn})", "description": "pack.pack( format, val1, val2, val3, valn ) - \u6253\u5305\u5b57\u7b26\u4e32\u7684\u503c\n\u4f20\u5165\u503c\uff1a\nstring format \u683c\u5f0f\u5316\u7b26\u53f7\nany \u7b2c\u4e00\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2c\u4e8c\u4e2a\u9700\u6253\u5305\u7684\u503c\nany \u7b2cn\u4e2a\u9700\u6253\u5305\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nstring \u4e00\u4e2a\u5305\u542b\u6240\u6709\u683c\u5f0f\u5316\u53d8\u91cf\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal data = pack.pack('= 2\u662f, \u6700\u5927\u4f11\u7720\u65f6\u957f\u662f740\u5c0f\u65f6\n", "prefix": "pm.dtimerStart"}, "pm.dtimerStop": {"body": "pm.dtimerStop(${1:id})", "description": "pm.dtimerStop(id) - \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u5e95\u5c42\u5b9a\u65f6\u5668\npm.dtimerStop(0) -- \u5173\u95edid=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerStop"}, "pm.dtimerCheck": {"body": "pm.dtimerCheck(${1:id})", "description": "pm.dtimerCheck(id) - \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,true\u8fd8\u5728\u8fd0\u884c\uff0cfalse\u4e0d\u5728\u8fd0\u884c\nnumber \u5982\u679c\u8fd0\u884c,\u8fd0\u884c\u5269\u4f59\u65f6\u95f4,\u5355\u4f4d\u6beb\u79d2(\u9700bsp\u652f\u6301)\n\u4f8b\u5b50\uff1a\n-- \u68c0\u67e5\u5e95\u5c42\u5b9a\u65f6\u5668\u662f\u4e0d\u662f\u5728\u8fd0\u884c\npm.dtimerCheck(0) -- \u68c0\u67e5id=0\u7684\u5e95\u5c42\u5b9a\u65f6\u5668\n", "prefix": "pm.dtimerCheck"}, "dtimerWkId": {"body": "dtimerWkId()", "description": "dtimerWkId() - \u68c0\u67e5\u5b9a\u65f6\u5524\u9192\u662f\u54ea\u4e00\u4e2a\u5b9a\u65f6\u5668\uff0c\u5982\u679c\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\uff0c\u8fd4\u56de-1\n\u8fd4\u56de\u503c\uff1a\nint \u5904\u7406\u7ed3\u679c >=0 \u662f\u672c\u6b21\u5b9a\u65f6\u5524\u9192\u7684\u5b9a\u65f6\u5668ID\uff0c\u5176\u4ed6\u9519\u8bef\uff0c\u8bf4\u660e\u4e0d\u662f\u5b9a\u65f6\u5524\u9192\u7684\n\u4f8b\u5b50\uff1a\nlocal timer_id = pm.dtimerWkId()\n", "prefix": "dtimerWkId"}, "pm.lastReson": {"body": "pm.lastReson()", "description": "pm.lastReson() - \u5f00\u673a\u539f\u56e0,\u7528\u4e8e\u5224\u65ad\u662f\u4ece\u4f11\u7720\u6a21\u5757\u5f00\u673a,\u8fd8\u662f\u7535\u6e90/\u590d\u4f4d\u5f00\u673a\n\u8fd4\u56de\u503c\uff1a\nint 0-\u4e0a\u7535/\u590d\u4f4d\u5f00\u673a, 1-RTC\u5f00\u673a, 2-WakeupIn/Pad/IO\u5f00\u673a, 3-\u672a\u77e5\u539f\u56e0(Wakeup/RTC\u7686\u6709\u53ef\u80fd)\u5f00\u673a,\u76ee\u524d\u53ea\u6709air101,air103\u4f1a\u6709\u8fd9\u4e2a\u8fd4\u56de\u503c\nint 0-\u666e\u901a\u5f00\u673a(\u4e0a\u7535/\u590d\u4f4d),3-\u6df1\u7761\u7720\u5f00\u673a,4-\u4f11\u7720\u5f00\u673a\nint \u590d\u4f4d\u5f00\u673a\u8be6\u7ec6\u539f\u56e0\uff1a0-powerkey\u6216\u8005\u4e0a\u7535\u5f00\u673a 1-\u5145\u7535\u6216\u8005AT\u6307\u4ee4\u4e0b\u8f7d\u5b8c\u6210\u540e\u5f00\u673a 2-\u95f9\u949f\u5f00\u673a 3-\u8f6f\u4ef6\u91cd\u542f 4-\u672a\u77e5\u539f\u56e0 5-RESET\u952e 6-\u5f02\u5e38\u91cd\u542f 7-\u5de5\u5177\u63a7\u5236\u91cd\u542f 8-\u5185\u90e8\u770b\u95e8\u72d7\u91cd\u542f 9-\u5916\u90e8\u91cd\u542f 10-\u5145\u7535\u5f00\u673a\n\u4f8b\u5b50\uff1a\n-- \u662f\u54ea\u79cd\u65b9\u5f0f\u5f00\u673a\u5462\nlog.info(\"pm\", \"last power reson\", pm.lastReson())\n", "prefix": "pm.lastReson"}, "pm.force": {"body": "pm.force(${1:mode})", "description": "pm.force(mode) - \u5f3a\u5236\u8fdb\u5165\u6307\u5b9a\u7684\u4f11\u7720\u6a21\u5f0f\uff0c\u5ffd\u7565\u67d0\u4e9b\u5916\u8bbe\u7684\u5f71\u54cd\uff0c\u6bd4\u5982USB\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u82e5\u8fd4\u56de\u6210\u529f,\u5927\u6982\u7387\u4f1a\u9a6c\u4e0a\u8fdb\u5165\u8be5\u4f11\u7720\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f\npm.force(pm.HIB)\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n-- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n--pm.power(pm.USB, true)\n", "prefix": "pm.force"}, "pm.check": {"body": "pm.check()", "description": "pm.check() - \u68c0\u67e5\u4f11\u7720\u72b6\u6001\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u5982\u679c\u80fd\u987a\u5229\u8fdb\u5165\u4f11\u7720,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\nint \u5e95\u5c42\u8fd4\u56de\u503c,0\u4ee3\u8868\u80fd\u8fdb\u5165\u6700\u5e95\u5c42\u4f11\u7720,\u5176\u4ed6\u503c\u4ee3\u8868\u6700\u4f4e\u53ef\u4f11\u7720\u7ea7\u522b\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u6c42\u8fdb\u5165\u4f11\u7720\u6a21\u5f0f,\u7136\u540e\u68c0\u67e5\u662f\u5426\u80fd\u771f\u7684\u4f11\u7720\npm.request(pm.HIB)\nif pm.check() then\n log.info(\"pm\", \"it is ok to hib\")\nelse\n -- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49), \u8be5\u64cd\u4f5c\u4f1a\u5173\u95edUSB\u901a\u4fe1\n pm.force(pm.HIB) -- \u5f3a\u5236\u4f11\u7720\n -- \u5524\u9192\u540e\u5982\u9700\u5f00\u542fUSB, \u8bf7\u6253\u5f00USB\u7535\u538b\n --sys.wait(100)\n --pm.power(pm.USB, true)\nend\n", "prefix": "pm.check"}, "pm.shutdown": {"body": "pm.shutdown()", "description": "pm.shutdown() - \u5173\u673a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5f53\u524d\u652f\u6301\u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\n-- \u9700\u89812022-12-22\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\npm.shutdown()\n", "prefix": "pm.shutdown"}, "pm.reboot": {"body": "pm.reboot()", "description": "pm.reboot() - \u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "pm.reboot"}, "pm.power": {"body": "pm.power(${1:id},${2:onoff})", "description": "pm.power(id, onoff) - \u5f00\u542f\u5185\u90e8\u7684\u7535\u6e90\u63a7\u5236\uff0c\u6ce8\u610f\u4e0d\u662f\u6240\u6709\u7684\u5e73\u53f0\u90fd\u652f\u6301\uff0c\u53ef\u80fd\u90e8\u5206\u5e73\u53f0\u652f\u6301\u90e8\u5206\u9009\u9879\uff0c\u770b\u786c\u4ef6\n\u4f20\u5165\u503c\uff1a\nint \u7535\u6e90\u63a7\u5236id,pm.USB pm.GPS\u4e4b\u7c7b\nboolean or int \u5f00\u5173true/1\u5f00\uff0cfalse/0\u5173\uff0c\u9ed8\u8ba4\u5173\uff0c\u90e8\u5206\u9009\u9879\u652f\u6301\u6570\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\u7535\u6e90, \u53cd\u4e4b\u5f00\u542f\u5c31\u662f\u4f20true\npm.power(pm.USB, false) \n\n-- Air780EG,\u4e3a\u5185\u7f6e\u7684GPS\u82af\u7247\u4e0a\u7535. \u6ce8\u610f, Air780EG\u7684GPS\u548cGPS_ANT\u662f\u4e00\u8d77\u63a7\u5236\u7684,\u6240\u4ee5\u5408\u5e76\u4e86.\npm.power(pm.GPS, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u5f00\u542fpwrkey\u5f00\u673a\u9632\u6296\n-- \u6ce8\u610f: \u5f00\u542f\u540e, \u590d\u4f4d\u952e\u5c31\u53d8\u6210\u5173\u673a\u4e86!!! pwrkey\u8981\u957f\u63092\u79d2\u624d\u80fd\u5f00\u673a\n-- pm.power(pm.PWK_MODE, true)\n\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)PSM+\u4f4e\u529f\u8017\u8bbe\u7f6e\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8282\u80fd\u6a21\u5f0f\uff0c0~3\uff0c0\u5b8c\u5168\u5173\u95ed\uff0c1\u6027\u80fd\u4f18\u5148\uff0c2\u5e73\u8861\uff0c3\u6781\u81f4\u529f\u8017\n-- \u8be6\u60c5\u8bbf\u95ee: https://airpsm.cn\n-- pm.power(pm.WORK_MODE, 1)\n", "prefix": "pm.power"}, "pm.ioVol": {"body": "pm.ioVol(${1:id},${2:val})", "description": "pm.ioVol(id, val) - IO\u9ad8\u7535\u5e73\u7535\u538b\u63a7\u5236\n\u4f20\u5165\u503c\uff1a\nint \u7535\u5e73id,\u76ee\u524d\u53ea\u6709pm.IOVOL_ALL_GPIO\nint \u7535\u5e73\u503c,\u5355\u4f4d\u6beb\u4f0f\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679ctrue\u6210\u529f\uff0cfalse\u5931\u8d25\n\u4f8b\u5b50\uff1a\n-- \u79fb\u82afCAT1\u5e73\u53f0\u7cfb\u5217(Air780E/Air700E/Air780EP\u7b49\u7b49)\u8bbe\u7f6eIO\u7535\u5e73, \u8303\u56f4 1650 ~ 2000\uff0c2650~3400 , \u5355\u4f4d\u6beb\u4f0f, \u6b65\u8fdb50mv\n-- \u6ce8\u610f, \u8fd9\u91cc\u7684\u8bbe\u7f6e\u4f18\u5148\u7ea7\u4f1a\u9ad8\u4e8e\u786c\u4ef6IOSEL\u811a\u7684\u914d\u7f6e\n-- \u4f46\u5f00\u673a\u65f6\u4f9d\u7136\u5148\u4f7f\u7528\u786c\u4ef6\u914d\u7f6e,\u76f4\u81f3\u8c03\u7528\u672cAPI\u8fdb\u884c\u914d\u7f6e, \u6240\u4ee5io\u7535\u5e73\u4f1a\u53d8\u5316\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa3.3V\n-- pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- \u6240\u6709GPIO\u9ad8\u7535\u5e73\u8f93\u51fa1.8V\n", "prefix": "pm.ioVol"}, "pm.wakeupPin": {"body": "pm.wakeupPin(${1:pin},${2:level})", "description": "pm.wakeupPin(pin,level) - \u914d\u7f6e\u5524\u9192\u5f15\u811a (\u5f53\u524d\u4ec5\u4ec5esp\u7cfb\u5217\u53ef\u7528)\n\u4f20\u5165\u503c\uff1a\nint/table gpio\u5f15\u811a\nint \u5524\u9192\u7535\u538b \u53ef\u9009,\u9ed8\u8ba4\u4f4e\u7535\u5e73\u5524\u9192\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\npm.wakeupPin(8,0)\n", "prefix": "pm.wakeupPin"}, "protobuf.load": {"body": "protobuf.load(${1:pbdata})", "description": "protobuf.load(pbdata) - \u52a0\u8f7dpb\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nstring \u901a\u8fc7protoc.exe\u7a0b\u5e8f\u8f6c\u6362\u5f97\u5230\u7684\u6570\u636e,\u901a\u5e38\u4ece\u6587\u4ef6\u8bfb\u53d6\u5f97\u5230\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u4e0e\u5426\nint \u8bfb\u53d6\u4e86\u591a\u957f, \u8c03\u8bd5\u7528\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u540c\u4e00\u4e2a\u6587\u4ef6\u53ea\u9700\u8981\u52a0\u8f7d\u4e00\u6b21, \u9664\u975e\u8c03\u7528\u8fc7protobuf.clear()\nprotobuf.load(io.readFile(\"/luadb/person.pb\"))\n", "prefix": "protobuf.load"}, "protobuf.clear": {"body": "protobuf.clear()", "description": "protobuf.clear() - \u6e05\u9664\u5df2\u52a0\u8f7d\u7684\u4e8c\u8fdb\u5236\u5b9a\u4e49\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c, \u603b\u662f\u6210\u529f\n\u4f8b\u5b50\uff1a\n-- \u6e05\u9664\u6240\u6709\u5df2\u52a0\u8f7d\u7684\u5b9a\u4e49\u6570\u636e\nprotobuf.clear()\n", "prefix": "protobuf.clear"}, "protobuf.encode": {"body": "protobuf.encode(${1:tpname},${2:data})", "description": "protobuf.encode(tpname, data) - \u7f16\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\ntable \u5f85\u7f16\u7801\u6570\u636e, \u5fc5\u987b\u662ftable, \u5185\u5bb9\u7b26\u5408pb\u6587\u4ef6\u91cc\u7684\u5b9a\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring \u7f16\u7801\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.encode"}, "protobuf.decode": {"body": "protobuf.decode(${1:tpname},${2:data})", "description": "protobuf.decode(tpname, data) - \u89e3\u7801protobuffs\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7c7b\u578b\u540d\u79f0, \u5b9a\u4e49\u5728pb\u6587\u4ef6\u4e2d, \u7531protobuf.load\u52a0\u8f7d\nstring \u5f85\u7f16\u7801\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\ntable \u89e3\u7801\u540e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u6570\u636e\u7f16\u7801\nlocal tb = {\n name = \"wendal\"\n}\nlocal pbdata = protobuf.encode(\"Person\", tb)\nif pbdata then\n -- \u6ce8\u610f, \u7f16\u7801\u540e\u7684\u6570\u636e\u901a\u5e38\u5e26\u4e0d\u53ef\u89c1\u5b57\u7b26\n log.info(\"protobuf\", #pbdata, pbdata:toHex())\nend\n", "prefix": "protobuf.decode"}, "pwm.open": {"body": "pwm.open(${1:channel},${2:period},${3:pulse},${4:pnum},${5:precision})", "description": "pwm.open(channel, period, pulse, pnum, precision) - \u5f00\u542f\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u9891\u7387, 1-1000000hz\nint \u5360\u7a7a\u6bd4 0-\u5206\u9891\u7cbe\u5ea6\nint \u8f93\u51fa\u5468\u671f 0\u4e3a\u6301\u7eed\u8f93\u51fa, 1\u4e3a\u5355\u6b21\u8f93\u51fa, \u5176\u4ed6\u4e3a\u6307\u5b9a\u8109\u51b2\u6570\u8f93\u51fa\nint \u5206\u9891\u7cbe\u5ea6, 100/256/1000, \u9ed8\u8ba4\u4e3a100, \u82e5\u8bbe\u5907\u4e0d\u652f\u6301\u4f1a\u6709\u65e5\u5fd7\u63d0\u793a\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00PWM5, \u9891\u73871kHz, \u5360\u7a7a\u6bd450%\npwm.open(5, 1000, 50)\n-- \u6253\u5f00PWM5, \u9891\u738710kHz, \u5206\u9891\u4e3a 31/256\npwm.open(5, 10000, 31, 0, 256)\n", "prefix": "pwm.open"}, "pwm.close": {"body": "pwm.close(${1:channel})", "description": "pwm.close(channel) - \u5173\u95ed\u6307\u5b9a\u7684PWM\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u5904\u7406\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edPWM5\npwm.close(5)\n", "prefix": "pwm.close"}, "pwm.capture": {"body": "pwm.capture(${1:channel})", "description": "pwm.capture(channel) - PWM\u6355\u83b7\n\u4f20\u5165\u503c\uff1a\nint PWM\u901a\u9053\nint \u6355\u83b7\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nboolean \u5904\u7406\u7ed3\u679c,\u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- PWM0\u6355\u83b7\nwhile 1 do\n pwm.capture(0,1000)\n local ret,channel,pulse,pwmH,pwmL = sys.waitUntil(\"PWM_CAPTURE\", 2000)\n if ret then\n log.info(\"PWM_CAPTURE\",\"channel\"..channel,\"pulse\"..pulse,\"pwmH\"..pwmH,\"pwmL\"..pwmL)\n end\nend\n", "prefix": "pwm.capture"}, "repl.enable": {"body": "repl.enable(${1:re})", "description": "repl.enable(re) - \u542f\u7528\u6216\u7981\u7528REPL\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u542f\u7528\u4e0e\u5426,\u9ed8\u8ba4\u662f\u542f\u7528\nreturn \u4e4b\u524d\u7684\u8bbe\u7f6e\u72b6\u6001\n\u4f8b\u5b50\uff1a\n-- \u82e5\u56fa\u4ef6\u652f\u6301REPL,\u5373\u7f16\u8bd1\u65f6\u542f\u7528\u4e86REPL,\u662f\u9ed8\u8ba4\u542f\u7528REPL\u529f\u80fd\u7684\n-- \u672c\u51fd\u6570\u662f\u63d0\u4f9b\u5173\u95edREPL\u7684\u9014\u5f84\nrepl.enable(false)\n", "prefix": "repl.enable"}, "repl.push": {"body": "repl.push(${1:data})", "description": "repl.push(data) - \u4e3b\u52a8\u63a8\u9001\u5f85\u5904\u7406\u7684\u6570\u636e\u5230\u5e95\u5c42\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u5904\u7406\u7684\u6570\u636e,\u901a\u5e38\u4ece\u4e32\u53e3\u6765\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u865a\u62df\u4e32\u53e3\u7684\u8bbe\u5907\u624d\u9700\u8981\u8fd9\u4e2a\u51fd\u6570\n", "prefix": "repl.push"}, "rsa.encrypt": {"body": "rsa.encrypt(${1:key},${2:data})", "description": "rsa.encrypt(key, data) - RSA\u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u52a0\u5bc6\u6570\u636e, \u4e0d\u80fd\u8d85\u8fc7\u516c\u94a5\u4f4d\u6570\u7684\u4e00\u534a, \u4f8b\u5982 2048bit\u7684\u516c\u94a5, \u53ea\u80fd\u52a0\u5bc6128\u5b57\u8282\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u4e0b\u9762\u4ee3\u7801\u4e2d\u7684 \"abc\" \u662f\u5f85\u52a0\u5bc6\u6570\u636e\nlocal res = rsa.encrypt((io.readFile(\"/luadb/public.pem\")), \"abc\")\n-- \u6253\u5370\u7ed3\u679c\nlog.info(\"rsa\", \"encrypt\", res and #res or 0, res and res:toHex() or \"\")\n", "prefix": "rsa.encrypt"}, "rsa.decrypt": {"body": "rsa.decrypt(${1:key},${2:data},${3:pwd})", "description": "rsa.decrypt(key, data, pwd) - RSA\u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nstring \u5f85\u89e3\u5bc6\u6570\u636e\nstring \u79c1\u94a5\u7684\u5bc6\u7801,\u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u6210\u529f\u540e\u7684\u6570\u636e,\u82e5\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u89e3\u5bc6\u901a\u5e38\u5f88\u6162, \u5efa\u8bae\u5728\u670d\u52a1\u5668\u7aef\u8fdb\u884c\n-- res \u662f\u5f85\u89e3\u5bc6\u7684\u6570\u636e\nlocal dst = rsa.decrypt((io.readFile(\"/luadb/privkey.pem\")), res, \"\")\nlog.info(\"rsa\", \"decrypt\", dst and #dst or 0, dst and dst:toHex() or \"\")\n", "prefix": "rsa.decrypt"}, "rsa.verify": {"body": "rsa.verify(${1:key},${2:md},${3:hash},${4:sig})", "description": "rsa.verify(key, md, hash, sig) - RSA\u9a8c\u7b7e\n\u4f20\u5165\u503c\uff1a\nstring \u516c\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring sig\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nbool \u6709\u6548\u8fd4\u56detrue,\u5426\u5219\u4e3afalse,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal ret = rsa.verify((io.readFile(\"/luadb/public.pem\")), rsa.MD_SHA1, hash, sig)\nlog.info(\"rsa\", \"verify\", ret)\n", "prefix": "rsa.verify"}, "rsa.sign": {"body": "rsa.sign(${1:key},${2:md},${3:hash},${4:pwd})", "description": "rsa.sign(key, md, hash, pwd) - RSA\u7b7e\u540d\n\u4f20\u5165\u503c\uff1a\nstring \u79c1\u94a5\u6570\u636e,\u4ec5\u652f\u6301PEM\u683c\u5f0f\nint \u7b7e\u540d\u6a21\u5f0f, \u4f8b\u5982 rsa.MD_SHA1 , rsa.MD_SHA256\nstring hash\u6570\u636e, \u5982\u679c\u662fHEX\u5b57\u7b26\u4e32,\u8bb0\u5f97fromHex\u8f6c\u4e8c\u8fdb\u5236\u6570\u636e\nstring \u79c1\u94a5\u5bc6\u7801, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nstring \u6210\u529f\u8fd4\u56desig\u6570\u636e, \u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sig = rsa.sign((io.readFile(\"/luadb/privkey.pem\")), rsa.MD_SHA1, hash, \"\")\nlog.info(\"rsa\", \"sign\", sig and #sig or 0, sig and sig:toHex() or \"\")\n", "prefix": "rsa.sign"}, "rtc.set": {"body": "rtc.set(${1:tab})", "description": "rtc.set(tab) - \u8bbe\u7f6e\u65f6\u949f\n\u4f20\u5165\u503c\uff1a\ntable or int \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.set({year=2021,mon=8,day=31,hour=17,min=8,sec=43})\n--\u76ee\u524d\u53ea\u6709Air101/Air103/Air105/EC618\u7cfb\u5217\u652f\u6301\u65f6\u95f4\u6233\u65b9\u5f0f\nrtc.set(1652230554)\n", "prefix": "rtc.set"}, "rtc.get": {"body": "rtc.get()", "description": "rtc.get() - \u83b7\u53d6\u65f6\u949f\n\u8fd4\u56de\u503c\uff1a\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u4f8b\u5b50\uff1a\nlocal t = rtc.get()\n-- {year=2021,mon=8,day=31,hour=17,min=8,sec=43}\nlog.info(\"rtc\", json.encode(t))\n", "prefix": "rtc.get"}, "rtc.timerStart": {"body": "rtc.timerStart(${1:id},${2:tab})", "description": "rtc.timerStart(id, tab) - \u8bbe\u7f6eRTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\ntable \u65f6\u949f\u53c2\u6570,\u89c1\u793a\u4f8b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\n-- \u76ee\u524d\u8be5\u63a5\u53e3\u4e0d\u9002\u7528\u4e8e\u79fb\u82af\u6a21\u5757780E/700E/780EP\u7cfb\u5217\uff0c\u9700\u8981\u5b9a\u65f6\u5524\u9192\u53ef\u4f7f\u7528pm.dtimerStart()\n-- \u4f7f\u7528\u524d\u5efa\u8bae\u5148rtc.set\u8bbe\u7f6e\u4e3a\u6b63\u786e\u7684\u65f6\u95f4\nrtc.timerStart(0, {year=2021,mon=9,day=1,hour=17,min=8,sec=43})\n", "prefix": "rtc.timerStart"}, "rtc.timerStop": {"body": "rtc.timerStop(${1:id})", "description": "rtc.timerStop(id) - \u53d6\u6d88RTC\u5524\u9192\u65f6\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u949fid,\u901a\u5e38\u53ea\u652f\u63010\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56denil\u6216false\n\u4f8b\u5b50\uff1a\nrtc.timerStop(0)\n", "prefix": "rtc.timerStop"}, "rtc.setBaseYear": {"body": "rtc.setBaseYear(${1:Base_year})", "description": "rtc.setBaseYear(Base_year) - \u8bbe\u7f6eRTC\u57fa\u51c6\u5e74,\u4e0d\u63a8\u8350\n\u4f20\u5165\u503c\uff1a\nint \u57fa\u51c6\u5e74Base_year,\u901a\u5e381900\n\u4f8b\u5b50\uff1a\nrtc.setBaseYear(1900)\n", "prefix": "rtc.setBaseYear"}, "rtc.timezone": {"body": "rtc.timezone(${1:tz})", "description": "rtc.timezone(tz) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u65f6\u533a\n\u4f20\u5165\u503c\uff1a\nint \u65f6\u533a\u503c,\u6ce8\u610f\u5355\u4f4d\u662f1/4\u65f6\u533a.\u4f8b\u5982\u4e1c\u516b\u533a\u662f 32,\u800c\u975e8. \u53ef\u4ee5\u4e0d\u4f20\nreturn \u5f53\u524d/\u8bbe\u7f6e\u540e\u7684\u65f6\u533a\u503c\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e1c8\u533a\nrtc.timezone(32)\n-- \u8bbe\u7f6e\u4e3a\u4e1c3\u533a\nrtc.timezone(12)\n-- \u8bbe\u7f6e\u4e3a\u897f4\u533a\nrtc.timezone(-16)\n-- \u6ce8\u610f: \u65e0\u8bba\u8bbe\u7f6e\u65f6\u533a\u662f\u591a\u5c11, rtc.get/set\u603b\u662fUTC\u65f6\u95f4\n-- \u65f6\u533a\u5f71\u54cd\u7684\u662f os.date/os.time \u51fd\u6570\n-- \u53ea\u6709\u90e8\u5206\u6a21\u5757\u652f\u6301\u8bbe\u7f6e\u65f6\u533a, \u4e14\u9ed8\u8ba4\u503c\u4e00\u822c\u4e3a32, \u5373\u4e1c\u516b\u533a\n", "prefix": "rtc.timezone"}, "rtos.receive": {"body": "rtos.receive(${1:timeout})", "description": "rtos.receive(timeout) - \u63a5\u53d7\u5e76\u5904\u7406\u5e95\u5c42\u6d88\u606f\u961f\u5217.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u901a\u5e38\u662f-1,\u6c38\u4e45\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\nmsgid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n", "prefix": "rtos.receive"}, "rtos.timer_start": {"body": "rtos.timer_start(${1:id},${2:timeout},${3:_repeat})", "description": "rtos.timer_start(id,timeout,_repeat) - \u542f\u52a8\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nint \u91cd\u590d\u6b21\u6570,\u9ed8\u8ba4\u662f0\n\u8fd4\u56de\u503c\uff1a\nid \u5982\u679c\u662f\u5b9a\u65f6\u5668\u6d88\u606f,\u4f1a\u8fd4\u56de\u5b9a\u65f6\u5668\u6d88\u606fid\u53ca\u9644\u52a0\u4fe1\u606f, \u5176\u4ed6\u6d88\u606f\u7531\u5e95\u5c42\u51b3\u5b9a,\u4e0d\u5411lua\u5c42\u8fdb\u884c\u4efb\u4f55\u4fdd\u8bc1.\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528 sys.timerStart\n-- \u542f\u52a8\u4e00\u4e2a3\u79d2\u7684\u5faa\u73af\u5b9a\u65f6\u5668\nrtos.timer_start(10000, 3000, -1)\n", "prefix": "rtos.timer_start"}, "rtos.timer_stop": {"body": "rtos.timer_stop(${1:id})", "description": "rtos.timer_stop(id) - \u5173\u95ed\u5e76\u91ca\u653e\u4e00\u4e2a\u5b9a\u65f6\u5668\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6237\u4ee3\u7801\u8bf7\u4f7f\u7528sys.timerStop\nrtos.timer_stop(id)\n", "prefix": "rtos.timer_stop"}, "rtos.reboot": {"body": "rtos.reboot()", "description": "rtos.reboot() - \u8bbe\u5907\u91cd\u542f\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "rtos.reboot"}, "rtos.buildDate": {"body": "rtos.buildDate()", "description": "rtos.buildDate() - \u83b7\u53d6\u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7f16\u8bd1\u65e5\u671f\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u7f16\u8bd1\u65e5\u671f\nlocal d = rtos.buildDate()\n", "prefix": "rtos.buildDate"}, "rtos.bsp": {"body": "rtos.bsp()", "description": "rtos.bsp() - \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u786c\u4ef6bsp\u578b\u53f7\n\u4f8b\u5b50\uff1a\n-- \u83b7\u53d6\u786c\u4ef6bsp\u578b\u53f7\nlocal bsp = rtos.bsp()\n", "prefix": "rtos.bsp"}, "rtos.version": {"body": "rtos.version()", "description": "rtos.version() - \u83b7\u53d6\u56fa\u4ef6\u7248\u672c\u53f7\n\u8fd4\u56de\u503c\uff1a\nstring \u56fa\u4ef6\u7248\u672c\u53f7,\u4f8b\u5982\"V0001\"\n\u4f8b\u5b50\uff1a\n-- \u8bfb\u53d6\u7248\u672c\u53f7\nlocal luatos_version = rtos.version()\n", "prefix": "rtos.version"}, "rtos.standy": {"body": "rtos.standy(${1:timeout})", "description": "rtos.standy(timeout) - \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f, \u4ec5\u90e8\u5206\u8bbe\u5907\u53ef\u7528, \u672cAPI\u5df2\u5e9f\u5f03, \u63a8\u8350\u4f7f\u7528pm\u5e93\n\u4f20\u5165\u503c\uff1a\nint \u4f11\u7720\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fdb\u5165\u5f85\u673a\u6a21\u5f0f\nrtos.standby(5000)\n", "prefix": "rtos.standy"}, "rtos.meminfo": {"body": "rtos.meminfo(${1:type})", "description": "rtos.meminfo(type) - \u83b7\u53d6\u5185\u5b58\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\ntype \"sys\"\u7cfb\u7edf\u5185\u5b58, \"lua\"\u865a\u62df\u673a\u5185\u5b58,\"psram\"psram\u5185\u5b58, \u9ed8\u8ba4\u4e3alua\u865a\u62df\u673a\u5185\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u603b\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5f53\u524d\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\nint \u5386\u53f2\u6700\u9ad8\u5df2\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f,\u5355\u4f4d\u5b57\u8282\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5185\u5b58\u5360\u7528\nlog.info(\"mem.lua\", rtos.meminfo())\nlog.info(\"mem.sys\", rtos.meminfo(\"sys\"))\n", "prefix": "rtos.meminfo"}, "rtos.firmware": {"body": "rtos.firmware()", "description": "rtos.firmware() - \u8fd4\u56de\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f,\u683c\u5f0f\u4e3a LuatOS_$VERSION_$BSP,\u53ef\u7528\u4e8eOTA\u5347\u7ea7\u5224\u65ad\u5e95\u5c42\u4fe1\u606f\n\u8fd4\u56de\u503c\uff1a\nstring \u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\n\u4f8b\u5b50\uff1a\n-- \u6253\u5370\u5e95\u5c42\u63cf\u8ff0\u4fe1\u606f\nlog.info(\"firmware\", rtos.firmware())\n", "prefix": "rtos.firmware"}, "rtos.setPaths": {"body": "rtos.setPaths(${1:pathA},${2:pathB},${3:pathC},${4:pathD})", "description": "rtos.setPaths(pathA, pathB, pathC, pathD) - \u8bbe\u7f6e\u81ea\u5b9a\u4e49lua\u811a\u672c\u641c\u7d22\u8def\u5f84,\u4f18\u5148\u7ea7\u9ad8\u4e8e\u5185\u7f6e\u8def\u5f84\n\u4f20\u5165\u503c\uff1a\nstring \u8def\u5f84A, \u4f8b\u5982 \"/sdcard/%s.luac\",\u82e5\u4e0d\u4f20\u503c,\u5c06\u9ed8\u8ba4\u4e3a\"\",\u53e6\u5916,\u6700\u5927\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc723\u5b57\u8282\nstring \u8def\u5f84B, \u4f8b\u5982 \"/sdcard/%s.lua\"\nstring \u8def\u5f84C, \u4f8b\u5982 \"/lfs2/%s.luac\"\nstring \u8def\u5f84D, \u4f8b\u5982 \"/lfs2/%s.lua\"\n\u4f8b\u5b50\uff1a\n-- \u6302\u8f7dsd\u5361\u6216\u8005spiflash\u540e\nrtos.setPaths(\"/sdcard/user/%s.luac\", \"/sdcard/user/%s.lua\")\nrequire(\"sd_user_main\") -- \u5c06\u641c\u7d22\u5e76\u52a0\u8f7d /sdcard/user/sd_user_main.luac \u548c /sdcard/user/sd_user_main.lua\n", "prefix": "rtos.setPaths"}, "rtos.nop": {"body": "rtos.nop()", "description": "rtos.nop() - \u7a7a\u51fd\u6570,\u4ec0\u4e48\u90fd\u4e0d\u505a\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u8fd9\u4e2a\u51fd\u6570\u5355\u7eaf\u5c31\u662f lua -> c -> lua \u8d70\u4e00\u904d\n-- \u6ca1\u6709\u53c2\u6570,\u6ca1\u6709\u8fd4\u56de\u503c,\u6ca1\u6709\u903b\u8f91\u5904\u7406\n-- \u5728\u7edd\u5927\u591a\u6570\u60c5\u51b5\u4e0b,\u4e0d\u4f1a\u9047\u5230\u8fd9\u4e2a\u51fd\u6570\u7684\u8c03\u7528\n-- \u5b83\u901a\u5e38\u53ea\u4f1a\u51fa\u73b0\u5728\u6027\u80fd\u6d4b\u8bd5\u7684\u4ee3\u7801\u91cc, \u56e0\u4e3a\u5b83\u4ec0\u4e48\u90fd\u4e0d\u5e72.\nrtos.nop()\n", "prefix": "rtos.nop"}, "rtos.autoCollectMem": {"body": "rtos.autoCollectMem(${1:period},${2:warning_level},${3:force_level})", "description": "rtos.autoCollectMem(period, warning_level, force_level) - \u5185\u5b58\u81ea\u52a8\u6536\u96c6\u914d\u7f6e\uff0c\u662flua\u672c\u8eab\u6536\u96c6\u673a\u5236\u7684\u4e00\u79cd\u8865\u5145\uff0c\u4e0d\u662f\u5fc5\u8981\u7684\uff0c\u800c\u4e14\u53ea\u5728luavm\u7a7a\u95f2\u65f6\u89e6\u53d1\n\u4f20\u5165\u503c\uff1a\nint \u81ea\u52a8\u6536\u96c6\u7684\u5468\u671f\uff0c\u7b49\u540c\u4e8ereceive\u8c03\u7528\u6b21\u6570\uff0c0~60000\u3002\u5982\u679c\u662f0\uff0c\u5219\u5173\u95ed\u81ea\u52a8\u6536\u96c6\u529f\u80fd\uff0c\u9ed8\u8ba4\u662f100\nint \u5185\u5b58\u4f7f\u7528\u8b66\u6212\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u8b66\u6212\u7ebf\u65f6\u624d\u4f1a\u5f00\u59cb\u5224\u65ad\u662f\u5426\u8981\u6536\u96c6\u3002\u9ed8\u8ba4\u662f80\nint \u5185\u5b58\u4f7f\u7528\u5f3a\u5236\u6536\u96c6\u6c34\u4f4d\u7ebf\uff0c\u662f\u603bluavm\u5185\u5b58\u91cf\u7684\u767e\u5206\u6bd4\uff0c50~95\uff0c\u5185\u5b58\u8fbe\u5230(>=)\u5f3a\u5236\u6536\u96c6\u7ebf\u65f6\u4f1a\u5f3a\u5236\u6536\u96c6\u3002\u9ed8\u8ba4\u662f90\uff0c\u5fc5\u987b\u6bd4\u8b66\u6212\u6c34\u4f4d\u7ebf\u5927\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nrtos.autoCollectMem(100, 80, 90)\n", "prefix": "rtos.autoCollectMem"}, "sdio.init": {"body": "sdio.init(${1:id})", "description": "sdio.init(id) - \u521d\u59cb\u5316sdio\n\u4f20\u5165\u503c\uff1a\nint \u901a\u9053id,\u4e0e\u5177\u4f53\u8bbe\u5907\u6709\u5173,\u901a\u5e38\u4ece0\u5f00\u59cb,\u9ed8\u8ba40\n\u8fd4\u56de\u503c\uff1a\nboolean \u6253\u5f00\u7ed3\u679c\n", "prefix": "sdio.init"}, "sdio.sd_read": {"body": "sdio.sd_read(${1:id},${2:offset},${3:len})", "description": "sdio.sd_read(id, offset, len) - \u76f4\u63a5\u8bfb\u5199sd\u5361\u4e0a\u7684\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u957f\u5ea6,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_read(0, 0, 1024)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_read"}, "sdio.sd_write": {"body": "sdio.sd_write(${1:id},${2:data},${3:offset})", "description": "sdio.sd_write(id, data, offset) - \u76f4\u63a5\u5199sd\u5361\n\u4f20\u5165\u503c\uff1a\nint sdio\u603b\u7ebfid\nstring \u5f85\u5199\u5165\u7684\u6570\u636e,\u957f\u5ea6\u5fc5\u987b\u662f512\u7684\u500d\u6570\nint \u504f\u79fb\u91cf,\u5fc5\u987b\u662f512\u7684\u500d\u6570\n\u8fd4\u56de\u503c\uff1a\nbool \u82e5\u8bfb\u53d6\u6210\u529f,\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316sdio\u5e76\u76f4\u63a5\u8bfb\u53d6sd\u5361\u6570\u636e\nsdio.init(0)\nlocal t = sdio.sd_write(0, data, 0)\nif t then\n --- xxx\nend\n", "prefix": "sdio.sd_write"}, "sensor.ds18b20": {"body": "sensor.ds18b20(${1:pin},${2:check_crc})", "description": "sensor.ds18b20(pin, check_crc) - \u83b7\u53d6DS18B20\u7684\u6e29\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.1\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u7801\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(5000)\n local val,result = sensor.ds18b20(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n -- val 301 == 30.1\u6444\u6c0f\u5ea6\n -- result true \u8bfb\u53d6\u6210\u529f\n log.info(\"ds18b20\", val, result)\nend\n", "prefix": "sensor.ds18b20"}, "sensor.w1_reset": {"body": "sensor.w1_reset(${1:pin})", "description": "sensor.w1_reset(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u590d\u4f4d\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\n", "prefix": "sensor.w1_reset"}, "sensor.w1_connect": {"body": "sensor.w1_connect(${1:pin})", "description": "sensor.w1_connect(pin) - \u5355\u603b\u7ebf\u534f\u8bae,\u8fde\u63a5\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n", "prefix": "sensor.w1_connect"}, "sensor.w1_write": {"body": "sensor.w1_write(${1:pin},${2:data1},${3:data2})", "description": "sensor.w1_write(pin, data1,data2) - \u5355\u603b\u7ebf\u534f\u8bae,\u5f80\u603b\u7ebf\u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u7b2c\u4e00\u4e2a\u6570\u636e\nint \u7b2c\u4e8c\u4e2a\u6570\u636e, \u53ef\u4ee5\u5199N\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "sensor.w1_write"}, "sensor.w1_read": {"body": "sensor.w1_read(${1:pin},${2:len})", "description": "sensor.w1_read(pin, len) - \u5355\u603b\u7ebf\u534f\u8bae,\u4ece\u603b\u7ebf\u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u8bfb\u53d6\u7684\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u6309\u8bfb\u53d6\u7684\u957f\u5ea6\u8fd4\u56deN\u4e2a\u6574\u6570\n", "prefix": "sensor.w1_read"}, "sensor.hx711": {"body": "sensor.hx711(${1:pin_date},${2:pin_clk})", "description": "sensor.hx711(pin_date,pin_clk) - \u83b7\u53d6Hx711\u7684\u538b\u529b\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint hx711\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local maopi = sensor.hx711(0,7)\n while true do\n sys.wait(2000)\n a = sensor.hx711(0,7) - maopi\n if a > 0 then\n log.info(\"tag\", a / 4.6)\n end\n end\n end\n)\n", "prefix": "sensor.hx711"}, "sensor.cs1237": {"body": "sensor.cs1237(${1:pin_date},${2:pin_clk})", "description": "sensor.cs1237(pin_date,pin_clk) - \u83b7\u53d6cs1237\u4f20\u611f\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint cs1237\u8bfb\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u5982\u679c\u8bbe\u5907\u4e0d\u5b58\u5728\u4f1a\u5361\u5728\u8bfb\u53d6\u63a5\u53e3\nsys.taskInit(\n function()\n sys.wait(1000)\n local cs1237_data = sensor.cs1237(0,7)\n while true do\n sys.wait(2000)\n cs1237_data = sensor.cs1237(0,7) - maopi\n log.info(\"cs1237_data:\", cs1237_data)--\u5f97\u5230\u539f\u59cb\u6570\u636e\n end\n end\n)\n", "prefix": "sensor.cs1237"}, "sensor.ws2812b": {"body": "sensor.ws2812b(${1:pin},${2:data},${3:T0H},${4:T0L},${5:T1H},${6:T1L})", "description": "sensor.ws2812b(pin,data,T0H,T0L,T1H,T1L) - \u8bbe\u7f6ews2812b\u8f93\u51fa(gpio\u9a71\u52a8\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint ws2812b\u7684gpio\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\nint T0H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\uff0c\u6bcf\u4e2a\u578b\u53f7\u4e0d\u4e00\u6837\uff0c\u81ea\u5df1\u8c03\nint T0L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1H\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\nint T1L\u65f6\u95f4\uff0c\u8868\u793a\u5ef6\u65f6\u591a\u5c11\u4e2anop\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:drawLine(1,2,5,6,0x00ffff)\nsensor.ws2812b(7,buff,300,700,700,700)\n", "prefix": "sensor.ws2812b"}, "sensor.ws2812b_pwm": {"body": "sensor.ws2812b_pwm(${1:pin},${2:data})", "description": "sensor.ws2812b_pwm(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(pwm\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981pwm\u80fd\u8f93\u51fa800k\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint pwm\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_pwm(7,buff)\n", "prefix": "sensor.ws2812b_pwm"}, "sensor.ws2812b_spi": {"body": "sensor.ws2812b_spi(${1:pin},${2:data})", "description": "sensor.ws2812b_spi(pin,data) - \u8bbe\u7f6ews2812b\u8f93\u51fa(spi\u9a71\u52a8\u65b9\u5f0f,\u9700\u8981spi\u80fd\u8f93\u51fa5M\u9891\u7387\uff0c\u5426\u5219\u65e0\u6cd5\u4f7f\u7528\u6b64\u65b9\u6cd5)\n\u4f20\u5165\u503c\uff1a\nint spi\u7aef\u53e3\u53f7\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff08\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u65e0\u89c6\u6307\u9488\u4f4d\u7f6e\u59cb\u7ec8\u4ece0\u504f\u79fb\u5f00\u59cb\uff09\n\u4f8b\u5b50\uff1a\nlocal buff = zbuff.create({8,8,24})\nbuff:setFrameBuffer(8,8,24,0x0000ff)\nsensor.ws2812b_spi(2,buff)\n", "prefix": "sensor.ws2812b_spi"}, "sensor.dht1x": {"body": "sensor.dht1x(${1:pin})", "description": "sensor.dht1x(pin) - \u83b7\u53d6DHT11/DHT12\u7684\u6e29\u6e7f\u5ea6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nboolean \u662f\u5426\u6821\u9a8ccrc\u503c,\u9ed8\u8ba4\u4e3atrue. \u4e0d\u6821\u9a8ccrc\u503c\u80fd\u63d0\u9ad8\u8bfb\u53d6\u6210\u529f\u7684\u6982\u7387,\u4f46\u53ef\u80fd\u4f1a\u8bfb\u53d6\u5230\u9519\u8bef\u7684\u503c\n\u8fd4\u56de\u503c\uff1a\nint \u6e7f\u5ea6\u6570\u636e,\u5355\u4f4d0.01%\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nint \u6e29\u5ea6\u6570\u636e,\u5355\u4f4d0.01\u6444\u6c0f\u5ea6\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\nboolean \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local h,t,r = sensor.dht1x(17, true) -- GPIO17\u4e14\u6821\u9a8cCRC\u503c\n log.info(\"dht11\", h/100,t/100,r)--90.1 23.22\nend\n", "prefix": "sensor.dht1x"}, "sensor.sc12a": {"body": "sensor.sc12a(${1:sda},${2:scl})", "description": "sensor.sc12a(sda,scl) - \u83b7\u53d6sc12a\u88ab\u89e6\u6478\u7684\u901a\u9053\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684gpio\u7aef\u53e3\u53f7\nint \u65f6\u949f\u7684gpio\u7aef\u53e3\u53f7\n\u8fd4\u56de\u503c\uff1a\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u6574\u5f62\u6570\u636e\uff0c\u8bfb\u53d6\u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u503c\n\u4f8b\u5b50\uff1a\nwhile true do\n local temp1=sensor.sc12a(4,7)\n if bit.rshift(bit.band( temp1, 0x8000), 15 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90530\")\n end\n if bit.rshift(bit.band( temp1, 0x4000), 14 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90531\")\n end\n if bit.rshift(bit.band( temp1, 0x2000), 13 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90532\")\n end\n if bit.rshift(bit.band( temp1, 0x1000), 12 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90533\")\n end\n if bit.rshift(bit.band( temp1, 0x800), 11 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90534\")\n end\n if bit.rshift(bit.band( temp1, 0x400), 10 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90535\")\n end\n if bit.rshift(bit.band( temp1, 0x200), 9 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90536\")\n end\n if bit.rshift(bit.band( temp1, 0x100), 8 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90537\")\n end\n if bit.rshift(bit.band( temp1, 0x80), 7 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90538\")\n end\n if bit.rshift(bit.band( temp1, 0x40), 6 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u90539\")\n end\n if bit.rshift(bit.band( temp1, 0x20), 5 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905310\")\n end\n if bit.rshift(bit.band( temp1, 0x10), 4 )==0x01 then\n log.info(\"\u88ab\u6309\u4e0b\u7684\u6709\u901a\u905311\")\n end\n sys.wait(200)\nend\n", "prefix": "sensor.sc12a"}, "sensor.yhm27xxx": {"body": "sensor.yhm27xxx(${1:pin},${2:chip_id},${3:reg},${4:data})", "description": "sensor.yhm27xxx(pin, chip_id, reg, data) - \u5355\u603b\u7ebf\u547d\u4ee4\u8bfb\u5199YHM27XX\n\u4f20\u5165\u503c\uff1a\nint gpio\u7aef\u53e3\u53f7\nint \u82af\u7247ID\nint \u5bc4\u5b58\u5668\u5730\u5740\nint \u8981\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u6ca1\u586b\uff0c\u5219\u8868\u793a\u4ece\u5bc4\u5b58\u5668\u8bfb\u53d6\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\nint \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5bc4\u5b58\u5668\u503c\uff0c\u5199\u5165\u6210\u529f\u65e0\u8fd4\u56de\n\u4f8b\u5b50\uff1a\nwhile 1 do\n sys.wait(1000)\n local result, data = sensor.yhm27xxx(15, 0x04, 0x05)\n log.info(\"yhm27xxx\", result, data)\nend\n", "prefix": "sensor.yhm27xxx"}, "sfd.init": {"body": "sfd.init(${1:type},${2:spi_id},${3:spi_cs})", "description": "sfd.init(type, spi_id, spi_cs) - \u521d\u59cb\u5316spi flash\n\u4f20\u5165\u503c\uff1a\nstring \u7c7b\u578b, \u53ef\u4ee5\u662f\"spi\", \u4e5f\u53ef\u4ee5\u662f\"zbuff\", \u6216\u8005\"onchip\"\nint SPI\u603b\u7ebf\u7684id, \u6216\u8005 zbuff\u5b9e\u4f8b\nint SPI FLASH\u7684\u7247\u9009\u811a\u5bf9\u5e94\u7684GPIO, \u5f53\u7c7b\u578b\u662fspi\u65f6\u624d\u9700\u8981\u4f20\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv):toHex())\nend\n-- 2023.01.15\u4e4b\u540e\u7684\u56fa\u4ef6\u652f\u6301onchip\u7c7b\u578b, \u652f\u6301\u76f4\u63a5\u8bfb\u5199\u7247\u4e0aflash\u7684\u4e00\u5c0f\u5757\u533a\u57df,\u4e00\u822c\u662f64k\n-- \u8fd9\u5757\u533a\u57df\u901a\u5e38\u662ffdb/fskv\u5e93\u6240\u5728\u7684\u533a\u57df, \u6240\u4ee5\u4e0d\u8981\u6df7\u7740\u7528\nlocal onchip = sfd.init(\"onchip\")\nlocal data = sfd.read(onchip, 0x100, 256)\nsfd.erase(onchip, 0x100)\nsfd.write(onchip, 0x100, data or \"Hi\")\n\n", "prefix": "sfd.init"}, "sfd.status": {"body": "sfd.status(${1:drv})", "description": "sfd.status(drv) - \u68c0\u67e5spi flash\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u72b6\u6001\u503c, 0 \u672a\u521d\u59cb\u5316\u6210\u529f,1\u521d\u59cb\u5316\u6210\u529f\u4e14\u7a7a\u95f2,2\u6b63\u5fd9\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"status\", sfd.status(drv))\nend\n", "prefix": "sfd.status"}, "sfd.read": {"body": "sfd.read(${1:drv},${2:offset},${3:len})", "description": "sfd.read(drv, offset, len) - \u8bfb\u53d6\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nint \u8bfb\u53d6\u957f\u5ea6,\u5f53\u524d\u9650\u5236\u5728256\u4ee5\u5185\n\u8fd4\u56de\u503c\uff1a\nstring \u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"read\", sfd.read(drv, 0x100, 256))\nend\n", "prefix": "sfd.read"}, "sfd.write": {"body": "sfd.write(${1:drv},${2:offset},${3:data})", "description": "sfd.write(drv, offset, data) - \u5199\u5165\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\nstring \u9700\u8981\u5199\u5165\u7684\u6570\u636e,\u5f53\u524d\u652f\u6301256\u5b57\u8282\u53ca\u4ee5\u4e0b\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.write(drv, 0x100, \"hi,luatos\"))\nend\n", "prefix": "sfd.write"}, "sfd.erase": {"body": "sfd.erase(${1:drv},${2:offset})", "description": "sfd.erase(drv, offset) - \u64e6\u9664\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint \u8d77\u59cb\u504f\u79fb\u91cf\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue,\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"write\", sfd.erase(drv, 0x100))\nend\n", "prefix": "sfd.erase"}, "sfd.id": {"body": "sfd.id(${1:drv})", "description": "sfd.id(drv) - \u82af\u7247\u552f\u4e00id\n\u4f20\u5165\u503c\uff1a\nuserdata sfd.init\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nstring 8\u5b57\u8282(64bit)\u7684\u82af\u7247id\n\u4f8b\u5b50\uff1a\nlocal drv = sfd.init(\"spi\", 0, 17)\nif drv then\n log.info(\"sfd\", \"chip id\", sfd.id(drv))\nend\n", "prefix": "sfd.id"}, "sfud.init": {"body": "sfud.init(${1:spi_id},${2:spi_cs},${3:spi_bandrate)/sfud.init(spi_device})", "description": "sfud.init(spi_id, spi_cs, spi_bandrate)/sfud.init(spi_device) - \u521d\u59cb\u5316sfud\n\u4f20\u5165\u503c\uff1a\nint spi_id SPI\u7684ID/userdata spi_device\nint spi_cs SPI\u7684\u7247\u9009\nint spi_bandrate SPI\u7684\u9891\u7387\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--spi\nlog.info(\"sfud.init\",sfud.init(0,20,20 * 1000 * 1000))\n--spi_device\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0)\nlog.info(\"sfud.init\",sfud.init(spi_device))\n", "prefix": "sfud.init"}, "sfud.getDeviceNum": {"body": "sfud.getDeviceNum()", "description": "sfud.getDeviceNum() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\u4e2d\u7684\u8bbe\u5907\u603b\u6570\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bbe\u5907\u603b\u6570\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getDeviceNum\",sfud.getDeviceNum())\n", "prefix": "sfud.getDeviceNum"}, "sfud.getDevice": {"body": "sfud.getDevice(${1:index})", "description": "sfud.getDevice(index) - \u901a\u8fc7flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\u83b7\u53d6flash\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint index flash\u4fe1\u606f\u8868\u4e2d\u7684\u7d22\u5f15\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDevice(1)\n", "prefix": "sfud.getDevice"}, "sfud.getDeviceTable": {"body": "sfud.getDeviceTable()", "description": "sfud.getDeviceTable() - \u83b7\u53d6flash\u8bbe\u5907\u4fe1\u606f\u8868\n\u8fd4\u56de\u503c\uff1a\nuserdata \u6210\u529f\u8fd4\u56de\u4e00\u4e2a\u6570\u636e\u7ed3\u6784,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal sfud_device = sfud.getDeviceTable()\n", "prefix": "sfud.getDeviceTable"}, "sfud.chipErase": {"body": "sfud.chipErase(${1:flash})", "description": "sfud.chipErase(flash) - \u64e6\u9664 Flash \u5168\u90e8\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.chipErase(flash)\n", "prefix": "sfud.chipErase"}, "sfud.erase": {"body": "sfud.erase(${1:flash},${2:add},${3:size})", "description": "sfud.erase(flash,add,size) - \u64e6\u9664 Flash \u6307\u5b9a\u5730\u5740\u6307\u5b9a\u5927\u5c0f\uff0c\u6309\u7167flash block\u5927\u5c0f\u8fdb\u884c\u64e6\u9664\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nnumber add \u64e6\u9664\u5730\u5740\nnumber size \u64e6\u9664\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nsfud.erase(flash,add,size)\n", "prefix": "sfud.erase"}, "sfud.read": {"body": "sfud.read(${1:flash},${2:addr},${3:size})", "description": "sfud.read(flash, addr, size) - \u8bfb\u53d6 Flash \u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nint size \u4ece\u8d77\u59cb\u5730\u5740\u5f00\u59cb\u8bfb\u53d6\u6570\u636e\u7684\u603b\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nstring data \u8bfb\u53d6\u5230\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.read\",sfud.read(sfud_device,1024,4))\n", "prefix": "sfud.read"}, "sfud.write": {"body": "sfud.write(${1:flash},${2:addr},${3:data})", "description": "sfud.write(flash, addr,data) - \u5411 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.write\",sfud.write(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.write"}, "sfud.eraseWrite": {"body": "sfud.eraseWrite(${1:flash},${2:addr},${3:data})", "description": "sfud.eraseWrite(flash, addr,data) - \u5148\u64e6\u9664\u518d\u5f80 Flash \u5199\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nint addr \u8d77\u59cb\u5730\u5740\nstring data \u5f85\u5199\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.eraseWrite\",sfud.eraseWrite(sfud_device,1024,\"sfud\"))\n", "prefix": "sfud.eraseWrite"}, "sfud.getInfo": {"body": "sfud.getInfo(${1:flash})", "description": "sfud.getInfo(flash) - \u83b7\u53d6 Flash \u5bb9\u91cf\u548cpage\u5927\u5c0f\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\n\u8fd4\u56de\u503c\uff1a\nint Flash \u5bb9\u91cf\nint page \u9875\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.getInfo\",sfud.getInfo(sfud_device))\n", "prefix": "sfud.getInfo"}, "sfud.mount": {"body": "sfud.mount(${1:flash},${2:mount_point},${3:offset},${4:maxsize})", "description": "sfud.mount(flash, mount_point, offset, maxsize) - \u6302\u8f7dsfud lfs\u6587\u4ef6\u7cfb\u7edf\n\u4f20\u5165\u503c\uff1a\nuserdata flash Flash \u8bbe\u5907\u5bf9\u8c61 sfud.get_device_table()\u8fd4\u56de\u7684\u6570\u636e\u7ed3\u6784\nstring mount_point \u6302\u8f7d\u76ee\u5f55\u540d\nint \u8d77\u59cb\u504f\u79fb\u91cf,\u9ed8\u8ba40\nint \u603b\u5927\u5c0f, \u9ed8\u8ba4\u662f\u6574\u4e2aflash\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nlog.info(\"sfud.mount\",sfud.mount(sfud_device,\"/sfud\"))\nlog.info(\"fsstat\", fs.fsstat(\"/\"))\nlog.info(\"fsstat\", fs.fsstat(\"/sfud\"))\n", "prefix": "sfud.mount"}, "sms.send": {"body": "sms.send(${1:phone},${2:msg},${3:auto_phone_fix})", "description": "sms.send(phone, msg, auto_phone_fix) - \u53d1\u9001\u77ed\u4fe1\n\u4f20\u5165\u503c\uff1a\nstring \u7535\u8bdd\u53f7\u7801,\u5fc5\u586b\nstring \u77ed\u4fe1\u5185\u5bb9,\u5fc5\u586b\nbool \u662f\u5426\u81ea\u52a8\u5904\u7406\u7535\u8bdd\u53f7\u53f7\u7801\u7684\u683c\u5f0f,\u9ed8\u8ba4\u662f\u6309\u77ed\u4fe1\u5185\u5bb9\u548c\u53f7\u7801\u683c\u5f0f\u8fdb\u884c\u81ea\u52a8\u5224\u65ad, \u8bbe\u7f6e\u4e3afalse\u53ef\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\u6216nil\n", "prefix": "sms.send"}, "sms.setNewSmsCb": {"body": "sms.setNewSmsCb(${1:func})", "description": "sms.setNewSmsCb(func) - \u8bbe\u7f6e\u65b0SMS\u7684\u56de\u8c03\u51fd\u6570\n\u4f20\u5165\u503c\uff1a\nfunction \u56de\u8c03\u51fd\u6570, 3\u4e2a\u53c2\u6570, num, txt, metas\n\u8fd4\u56de\u503c\uff1a\nnil \u4f20\u5165\u662f\u51fd\u6570\u5c31\u80fd\u6210\u529f,\u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n\nsms.setNewSmsCb(function(num, txt, metas)\n -- num \u624b\u673a\u53f7\u7801\n -- txt \u6587\u672c\u5185\u5bb9\n -- metas \u77ed\u4fe1\u7684\u5143\u6570\u636e,\u4f8b\u5982\u53d1\u9001\u7684\u65f6\u95f4,\u957f\u77ed\u4fe1\u7f16\u53f7\n -- \u6ce8\u610f, \u957f\u77ed\u4fe1\u4f1a\u81ea\u52a8\u5408\u5e76\u6210\u4e00\u6761txt\n log.info(\"sms\", num, txt, metas and json.encode(metas) or \"\")\nend)\n", "prefix": "sms.setNewSmsCb"}, "sms.autoLong": {"body": "sms.autoLong(${1:mode})", "description": "sms.autoLong(mode) - \u8bbe\u7f6e\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76\u529f\u80fd\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u5408\u5e76,true\u4e3a\u81ea\u52a8\u5408\u5e76,\u4e3a\u9ed8\u8ba4\u503c\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u540e\u7684\u503c\n\u4f8b\u5b50\uff1a\n-- \u7981\u7528\u957f\u77ed\u4fe1\u7684\u81ea\u52a8\u5408\u5e76, \u4e00\u822c\u4e0d\u9700\u8981\u7981\u7528\nsms.autoLong(false)\n", "prefix": "sms.autoLong"}, "sms.clearLong": {"body": "sms.clearLong()", "description": "sms.clearLong() - \u6e05\u9664\u957f\u77ed\u4fe1\u7f13\u5b58\n\u8fd4\u56de\u503c\uff1a\nint \u6e05\u7406\u6389\u7684\u7247\u6bb5\u6570\u91cf\n\u4f8b\u5b50\uff1a\nsms.clearLong()\n", "prefix": "sms.clearLong"}, "socket.sntp": {"body": "socket.sntp(${1:sntp_server})", "description": "socket.sntp(sntp_server) - sntp\u65f6\u95f4\u540c\u6b65\n\u4f20\u5165\u503c\uff1a\nstring/table sntp\u670d\u52a1\u5668\u5730\u5740 \u9009\u586b\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u4f8b\u5b50\uff1a\nsocket.sntp()\n--socket.sntp(\"ntp.aliyun.com\") --\u81ea\u5b9a\u4e49sntp\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp({\"ntp.aliyun.com\",\"ntp1.aliyun.com\",\"ntp2.aliyun.com\"}) --sntp\u81ea\u5b9a\u4e49\u670d\u52a1\u5668\u5730\u5740\n--socket.sntp(nil, socket.ETH0) --sntp\u81ea\u5b9a\u4e49\u9002\u914d\u5668\u5e8f\u53f7\nsys.subscribe(\"NTP_UPDATE\", function()\n log.info(\"sntp\", \"time\", os.date())\nend)\nsys.subscribe(\"NTP_ERROR\", function()\n log.info(\"socket\", \"sntp error\")\n socket.sntp()\nend)\n", "prefix": "socket.sntp"}, "socket.ntptm": {"body": "socket.ntptm()", "description": "socket.ntptm() - \u7f51\u7edc\u5bf9\u65f6\u540e\u7684\u65f6\u95f4\u6233(ms\u7ea7\u522b)\n\u8fd4\u56de\u503c\uff1a\ntable \u5305\u542b\u65f6\u95f4\u4fe1\u606f\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.11.15 \u65b0\u589e\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u5728\u6267\u884csocket.sntp()\u4e14\u83b7\u53d6\u5230NTP\u65f6\u95f4\u540e\u624d\u6709\u6548\n-- \u800c\u4e14\u662f2\u6b21sntp\u4e4b\u540e\u624d\u662f\u6bd4\u8f83\u51c6\u786e\u7684\u503c\n-- \u7f51\u7edc\u6ce2\u52a8\u8d8a\u5c0f, \u8be5\u65f6\u95f4\u6233\u8d8a\u7a33\u5b9a\nlocal tm = socket.ntptm()\n\n-- \u5bf9\u5e94\u7684table\u5305\u542b\u591a\u4e2a\u6570\u636e, \u5747\u4e3a\u6574\u6570\u503c\n\n-- \u6807\u51c6\u6570\u636e\n-- tsec \u5f53\u524d\u79d2\u6570,\u4ece1900.1.1 0:0:0 \u5f00\u59cb\u7b97, UTC\u65f6\u95f4\n-- tms \u5f53\u524d\u6beb\u79d2\u6570\n-- vaild \u662f\u5426\u6709\u6548, true \u6216\u8005 nil\n\n-- \u8c03\u8bd5\u6570\u636e, \u8c03\u8bd5\u7528,\u4e00\u822c\u7528\u6237\u4e0d\u7528\u7ba1\n-- ndelay \u7f51\u7edc\u5ef6\u65f6\u5e73\u5747\u503c,\u5355\u4f4d\u6beb\u79d2\n-- ssec \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u79d2\u6570\u504f\u79fb\u91cf\n-- sms \u7cfb\u7edf\u542f\u52a8\u65f6\u523b\u4e0e1900.1.1 0:0:0\u7684\u6beb\u79d2\u504f\u79fb\u91cf\n-- lsec \u672c\u5730\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n-- lms \u672c\u5730\u6beb\u79d2\u6570\u8ba1\u6570\u5668,\u57fa\u4e8emcu.tick64()\n\nlog.info(\"tm\u6570\u636e\", json.encode(tm))\nlog.info(\"\u65f6\u95f4\u6233\", string.format(\"%u.%03d\", tm.tsec, tm.tms))\n", "prefix": "socket.ntptm"}, "socket.sntp_port": {"body": "socket.sntp_port(${1:port})", "description": "socket.sntp_port(port) - \u8bbe\u7f6eSNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\n\u4f20\u5165\u503c\uff1a\nint port \u7aef\u53e3\u53f7, \u9ed8\u8ba4123\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u5f53\u524d\u7684\u7aef\u53e3\u53f7\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.5.17\u65b0\u589e\n-- \u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u4e0d\u9700\u8981\u8bbe\u7f6eNTP\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7,\u9ed8\u8ba4123\u5373\u53ef\n", "prefix": "socket.sntp_port"}, "socket.localIP": {"body": "socket.localIP(${1:adapter})", "description": "socket.localIP(adapter) - \u83b7\u53d6\u672c\u5730ip\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\n\u8fd4\u56de\u503c\uff1a\nstring \u901a\u5e38\u662f\u5185\u7f51ip, \u4e5f\u53ef\u80fd\u662f\u5916\u7f51ip, \u53d6\u51b3\u4e8e\u8fd0\u8425\u5546\u7684\u5206\u914d\nstring \u7f51\u7edc\u63a9\u7801\nstring \u7f51\u5173IP\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(3000)\n log.info(\"socket\", \"ip\", socket.localIP())\n -- \u8f93\u51fa\u793a\u4f8b\n -- 62.39.244.10 255.255.255.255 0.0.0.0\n end\nend)\n", "prefix": "socket.localIP"}, "socket.create": {"body": "socket.create(${1:adapter},${2:cb})", "description": "socket.create(adapter, cb) - \u5728\u67d0\u4e2a\u9002\u914d\u7684\u7f51\u5361\u4e0a\u7533\u8bf7\u4e00\u4e2asocket_ctrl\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f18\u5148\u9009\u62e9soc\u5e73\u53f0\u81ea\u5e26\u80fd\u4e0a\u5916\u7f51\u7684\u9002\u914d\u5668\uff0c\u82e5\u4ecd\u7136\u6ca1\u6709\uff0c\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nstring or function string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u5982\u679c\u56fa\u4ef6\u6ca1\u6709\u5185\u7f6esys_wait\uff0c\u5219\u5fc5\u987b\u662ffunction\n", "prefix": "socket.create"}, "socket.debug": {"body": "socket.debug(${1:ctrl},${2:onoff})", "description": "socket.debug(ctrl, onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nboolean true \u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u6253\u5f00\u8c03\u8bd5\u4fe1\u606f,\u9ed8\u8ba4\u662f\u5173\u95ed\u72b6\u6001\nsocket.debug(ctrl, true)\n", "prefix": "socket.debug"}, "socket.config": {"body": "socket.config(${1:ctrl},${2:local_port},${3:is_udp},${4:is_tls},${5:keep_idle},${6:keep_interval},${7:keep_cnt},${8:server_cert},${9:client_cert},${10:client_key},${11:client_password})", "description": "socket.config(ctrl, local_port, is_udp, is_tls, keep_idle, keep_interval, keep_cnt, server_cert, client_cert, client_key, client_password) - \u914d\u7f6enetwork\u4e00\u4e9b\u4fe1\u606f\uff0c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nint \u672c\u5730\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e0d\u5199\uff0c\u5219\u81ea\u52a8\u5206\u914d\u4e00\u4e2a\uff0c\u5982\u679c\u7528\u6237\u586b\u4e86\u7aef\u53e3\u53f7\u5219\u9700\u8981\u5c0f\u4e8e60000, \u9ed8\u8ba4\u4e0d\u5199\nboolean \u662f\u5426\u662fUDP\uff0c\u9ed8\u8ba4false\nboolean \u662f\u5426\u662f\u52a0\u5bc6\u4f20\u8f93\uff0c\u9ed8\u8ba4false\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684idle\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u4e0d\u542f\u7528\uff0c\u5982\u679c\u662f\u4e0d\u652f\u6301\u6807\u51c6posix\u63a5\u53e3\u7684\u7f51\u5361\uff08\u6bd4\u5982W5500\uff09\uff0c\u5219\u4e3a\u5fc3\u8df3\u95f4\u9694\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\nint tcp keep live\u6a21\u5f0f\u4e0b\u7684\u63a2\u6d4b\u6b21\u6570\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u670d\u52a1\u5668ca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK\uff0c\u4e0d\u9700\u8981\u52a0\u5bc6\u4f20\u8f93\u5199nil\uff0c\u540e\u7eed\u53c2\u6570\u4e5f\u5168\u90e8nil\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aefca\u8bc1\u4e66\u6570\u636e\uff0cUDP\u6a21\u5f0f\u4e0b\u7684PSK-ID\uff0cTCP\u6a21\u5f0f\u4e0b\u5982\u679c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\u65f6\uff0c\u5ffd\u7565\uff0c\u4e00\u822c\u4e0d\u9700\u8981\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u52a0\u5bc6\u6570\u636e\nstring TCP\u6a21\u5f0f\u4e0b\u7684\u5ba2\u6237\u7aef\u79c1\u94a5\u53e3\u4ee4\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n--\u6700\u666e\u901a\u7684TCP\u4f20\u8f93\nsocket.config(ctrl)\n--\u6700\u666e\u901a\u7684\u52a0\u5bc6TCP\u4f20\u8f93\uff0c\u8bc1\u4e66\u90fd\u4e0d\u7528\u9a8c\u8bc1\u7684\u90a3\u79cd\nsocket.config(ctrl, nil, nil ,true)\n", "prefix": "socket.config"}, "socket.linkup": {"body": "socket.linkup(${1:ctrl})", "description": "socket.linkup(ctrl) - \u7b49\u5f85\u7f51\u5361linkup\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecflinkup\uff0cfalse\u6ca1\u6709linkup\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.LINK\u6d88\u606f\n\u4f8b\u5b50\uff1a\n-- \u5224\u65ad\u4e00\u4e0b\u662f\u5426\u5df2\u7ecf\u8054\u7f51\nlocal succ, result = socket.linkup(ctrl)\n", "prefix": "socket.linkup"}, "socket.connect": {"body": "socket.connect(${1:ctrl},${2:ip},${3:remote_port},${4:need_ipv6_dns})", "description": "socket.connect(ctrl, ip, remote_port, need_ipv6_dns) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or int ip\u6216\u8005\u57df\u540d\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u670d\u52a1\u5668\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\nboolean \u57df\u540d\u89e3\u6790\u662f\u5426\u8981IPV6\uff0ctrue\u8981\uff0cfalse\u4e0d\u8981\uff0c\u9ed8\u8ba4false\u4e0d\u8981\uff0c\u53ea\u6709\u652f\u6301IPV6\u7684\u534f\u8bae\u6808\u624d\u6709\u6548\u679c\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679c\u6709\u5f02\u5e38\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\n\nlocal succ, result = socket.connect(ctrl, \"netlab.luatos.com\", 40123)\n\n--[[\n\u5e38\u89c1\u7684\u8fde\u63a5\u5931\u8d25\u7684code\u503c, \u4f1a\u5728\u65e5\u5fd7\u4e2d\u663e\u793a\n-1 \u5e95\u5c42\u5185\u5b58\u4e0d\u8db3\n-3 \u8d85\u65f6\n-8 \u7aef\u53e3\u5df2\u7ecf\u88ab\u5360\u7528\n-11 \u94fe\u63a5\u672a\u5efa\u7acb\n-13 \u6a21\u5757\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n-14 \u670d\u52a1\u5668\u4e3b\u52a8\u65ad\u5f00\u8fde\u63a5\n]]\n", "prefix": "socket.connect"}, "socket.discon": {"body": "socket.discon(${1:ctrl})", "description": "socket.discon(ctrl) - \u4f5c\u4e3a\u5ba2\u6237\u7aef\u65ad\u5f00\u8fde\u63a5\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\nboolean true\u5df2\u7ecf\u65ad\u5f00\uff0cfalse\u6ca1\u6709\u65ad\u5f00\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.CLOSED\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.discon(ctrl)\n", "prefix": "socket.discon"}, "socket.close": {"body": "socket.close(${1:ctrl})", "description": "socket.close(ctrl) - \u5f3a\u5236\u5173\u95edsocket\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "socket.close"}, "socket.tx": {"body": "socket.tx(${1:ctrl},${2:data},${3:ip},${4:port},${5:flag})", "description": "socket.tx(ctrl, data, ip, port, flag) - \u53d1\u9001\u6570\u636e\u7ed9\u5bf9\u7aef\uff0cUDP\u5355\u6b21\u53d1\u9001\u4e0d\u8981\u8d85\u8fc71460\u5b57\u8282\uff0c\u5426\u5219\u5f88\u5bb9\u6613\u5931\u8d25\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nstring or user_data zbuff \u8981\u53d1\u9001\u7684\u6570\u636e\nstring or int \u5bf9\u7aefIP\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\nint \u5bf9\u7aef\u7aef\u53e3\u53f7\uff0c\u5c0f\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u662fTCP\u5e94\u7528\u5219\u5ffd\u7565\uff0c\u5982\u679c\u662fUDP\uff0c\u5982\u679c\u7559\u7a7a\u5219\u7528connect\u65f6\u5019\u7684\u53c2\u6570\nint \u53d1\u9001\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u7f13\u51b2\u533a\u6ee1\u4e86\uff0cfalse\u6ca1\u6709\u6ee1\uff0c\u5982\u679ctrue\uff0c\u5219\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u6216\u8005\u7b49\u5230socket.TX_OK\u6d88\u606f\u540e\u518d\u5c1d\u8bd5\u53d1\u9001\uff0c\u540c\u65f6\u5ffd\u7565\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\nboolean true\u5df2\u7ecf\u6536\u5230\u5e94\u7b54\uff0cfalse\u6ca1\u6709\u6536\u5230\u5e94\u7b54\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.TX_OK\u6d88\u606f\uff0c \u4e5f\u53ef\u4ee5\u5ffd\u7565\u7ee7\u7eed\u53d1\u9001\uff0c\u76f4\u5230full==true\n\u4f8b\u5b50\uff1a\n\nlocal succ, full, result = socket.tx(ctrl, \"123456\", \"xxx.xxx.xxx.xxx\", xxxx)\n", "prefix": "socket.tx"}, "socket.rx": {"body": "socket.rx(${1:ctrl},${2:buff},${3:flag},${4:limit})", "description": "socket.rx(ctrl, buff, flag, limit) - \u63a5\u6536\u5bf9\u7aef\u53d1\u51fa\u7684\u6570\u636e\uff0c\u6ce8\u610f\u6570\u636e\u5df2\u7ecf\u7f13\u5b58\u5728\u5e95\u5c42\uff0c\u4f7f\u7528\u672c\u51fd\u6570\u53ea\u662f\u63d0\u53d6\u51fa\u6765\uff0cUDP\u6a21\u5f0f\u4e0b\u4e00\u6b21\u53ea\u4f1a\u53d6\u51fa\u4e00\u4e2a\u6570\u636e\u5305\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\nuser_data zbuff \u5b58\u653e\u63a5\u6536\u7684\u6570\u636e\uff0c\u5982\u679c\u7f13\u51b2\u533a\u4e0d\u591f\u5927\u4f1a\u81ea\u52a8\u6269\u5bb9\nint \u63a5\u6536\u53c2\u6570\uff0c\u76ee\u524d\u9884\u7559\uff0c\u4e0d\u8d77\u4f5c\u7528\nint \u63a5\u6536\u6570\u636e\u957f\u5ea6\u9650\u5236\uff0c\u5982\u679c\u6307\u5b9a\u4e86\uff0c\u5219\u53ea\u53d6\u524dN\u4e2a\u5b57\u8282. 2024.1.5 \u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nint \u672c\u6b21\u63a5\u6536\u5230\u6570\u636e\u957f\u5ea6\nstring \u5bf9\u7aefIP\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56denil\uff0c\u6ce8\u610f\u8fd4\u56de\u7684\u683c\u5f0f\uff0c\u5982\u679c\u662fIPV4\uff0c1byte 0x00 + 4byte\u5730\u5740 \u5982\u679c\u662fIPV6\uff0c1byte 0x01 + 16byte\u5730\u5740\nint \u5bf9\u7aefport\uff0c\u53ea\u6709UDP\u6a21\u5f0f\u4e0b\u624d\u6709\u610f\u4e49\uff0cTCP\u6a21\u5f0f\u8fd4\u56de0\n\u4f8b\u5b50\uff1a\n-- \u4ecesocket\u4e2d\u8bfb\u53d6\u6570\u636e, ctrl\u662fsocket.create\u8fd4\u56de\u7684, \u8bf7\u67e5\u9605demo/socket\nlocal buff = zbuff.create(2048)\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff)\n\n-- \u9650\u5236\u8bfb\u53d6\u957f\u5ea6, 2024.1.5 \u65b0\u589e\n-- \u6ce8\u610f\n-- \u5982\u679c\u662fUDP\u6570\u636e, \u5982\u679climit\u5c0f\u4e8eUDP\u6570\u636e\u5305\u957f\u5ea6, \u53ea\u4f1a\u53d6\u524dlimit\u4e2a\u5b57\u8282, \u5269\u4f59\u6570\u636e\u4f1a\u4e22\u5f03\n-- \u5982\u679c\u662fTCP\u6570\u636e, \u5982\u679c\u6709\u5269\u4f59\u6570\u636e, \u4e0d\u4f1a\u4e22\u5f03, \u53ef\u7ee7\u7eed\u8bfb\u53d6.\n-- \u6709\u65b0\u7684\u6570\u636e\u5230\u6765\u624d\u4f1a\u6709\u65b0\u7684EVENT\u6570\u636e, \u672a\u8bfb\u53d6\u5b8c\u6210\u7684\u6570\u636e\u4e0d\u4f1a\u89e6\u53d1\u65b0EVENT\u4e8b\u4ef6\nlocal succ, data_len, remote_ip, remote_port = socket.rx(ctrl, buff, 1500)\n\n-- \u8bfb\u53d6\u7f13\u51b2\u533a\u5927\u5c0f, 2024.1.5 \u65b0\u589e, \u6ce8\u610f,\u8001\u7248\u672c\u56fa\u4ef6\u4e0d\u4f20buff\u53c2\u6570\u4f1a\u62a5\u9519\u7684\n-- \u5bf9\u4e8eTCP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5f85\u8bfb\u53d6\u7684\u6570\u636e\u7684\u603b\u957f\u5ea6\n-- \u5bf9\u4e8eUDP\u6570\u636e, \u8fd9\u91cc\u8fd4\u56de\u7684\u662f\u5355\u4e2aUDP\u6570\u636e\u5305\u7684\u957f\u5ea6\nlocal succ, data_len = socket.rx(ctrl)\nif succ then\n log.info(\"\u5f85\u6536\u53d6\u6570\u636e\u957f\u5ea6\", data_len)\nend\n", "prefix": "socket.rx"}, "socket.read": {"body": "socket.read(${1:netc},${2:len})", "description": "socket.read(netc, len) - \u8bfb\u53d6\u6570\u636e(\u975ezbuff\u7248\u672c)\n\u4f20\u5165\u503c\uff1a\nuserdata socket.create\u5f97\u5230\u7684ctrl\nint \u9650\u5236\u8bfb\u53d6\u6570\u636e\u957f\u5ea6,\u53ef\u9009,\u4e0d\u4f20\u5c31\u662f\u8bfb\u51fa\u5168\u90e8\n\u8fd4\u56de\u503c\uff1a\nboolean \u8bfb\u53d6\u6210\u529f\u4e0e\u5426\nstring \u8bfb\u53d6\u7684\u6570\u636e,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u65f6\u6709\u6548\nstring \u5bf9\u65b9IP\u5730\u5740,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\nint \u5bf9\u65b9\u7aef\u53e3,\u4ec5\u5f53\u8bfb\u53d6\u6210\u529f\u4e14UDP\u901a\u4fe1\u65f6\u6709\u6548\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u4e8e2024.4.8\u6dfb\u52a0, \u7528\u4e8e\u7b80\u6613\u8bfb\u53d6\u4e0d\u5927\u7684\u6570\u636e\n-- \u8bf7\u4f18\u5148\u4f7f\u7528socket.rx\u51fd\u6570, \u672c\u51fd\u6570\u4e3b\u8981\u7528\u4e8e\u56fa\u4ef6\u4e0d\u542bzbuff\u5e93\u65f6\u7684\u53d8\u901a\u8c03\u7528\nlocal ok, data = socket.read(netc, 1500)\nif ok and #data > 0 then\n log.info(\"\u8bfb\u53d6\u5230\u7684\u6570\u636e\", data)\nend\n", "prefix": "socket.read"}, "socket.wait": {"body": "socket.wait(${1:ctrl})", "description": "socket.wait(ctrl) - \u7b49\u5f85\u65b0\u7684socket\u6d88\u606f\uff0c\u5728\u8fde\u63a5\u6210\u529f\u548c\u53d1\u9001\u6570\u636e\u6210\u529f\u540e\uff0c\u4f7f\u7528\u4e00\u6b21\u5c06network\u72b6\u6001\u8f6c\u6362\u5230\u63a5\u6536\u65b0\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u6709\u65b0\u7684\u6570\u636e\u9700\u8981\u63a5\u6536\uff0cfalse\u6ca1\u6709\u6570\u636e\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.EVENT\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.wait(ctrl)\n", "prefix": "socket.wait"}, "socket.listen": {"body": "socket.listen(${1:ctrl})", "description": "socket.listen(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u5f00\u59cb\u76d1\u542c\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nboolean true\u5df2\u7ecfconnect\uff0cfalse\u6ca1\u6709connect\uff0c\u4e4b\u540e\u9700\u8981\u63a5\u6536socket.ON_LINE\u6d88\u606f\n\u4f8b\u5b50\uff1a\nlocal succ, result = socket.listen(ctrl)\n", "prefix": "socket.listen"}, "socket.accept": {"body": "socket.accept(${1:ctrl})", "description": "socket.accept(ctrl) - \u4f5c\u4e3a\u670d\u52a1\u7aef\u63a5\u6536\u5230\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662f\u7c7b\u4f3cW5500\u7684\u786c\u4ef6\u534f\u8bae\u6808\u4e0d\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4e0d\u9700\u8981\u7b2c\u4e8c\u4e2a\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\uff0c\u8fd9\u91cc\u662f\u670d\u52a1\u5668\u7aef\nstring or function or nil string\u4e3a\u6d88\u606f\u901a\u77e5\u7684taskName\uff0cfunction\u5219\u4e3a\u56de\u8c03\u51fd\u6570\uff0c\u548csocket.create\u53c2\u6570\u4e00\u81f4\n\u8fd4\u56de\u503c\uff1a\nboolean true\u6ca1\u6709\u5f02\u5e38\u53d1\u751f\uff0cfalse\u5931\u8d25\u4e86\uff0c\u5982\u679cfalse\u5219\u4e0d\u9700\u8981\u770b\u4e0b\u4e00\u4e2a\u8fd4\u56de\u503c\u4e86\uff0c\u5982\u679cfalse\uff0c\u540e\u7eed\u8981close\nuser_data or nil \u5982\u679c\u652f\u63011\u5bf9\u591a\uff0c\u5219\u4f1a\u8fd4\u56de\u65b0\u7684ctrl\uff0c\u81ea\u52a8create\uff0c\u5982\u679c\u4e0d\u652f\u6301\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal succ, new_netc = socket.listen(ctrl, cb)\n", "prefix": "socket.accept"}, "socket.state": {"body": "socket.state(${1:ctrl})", "description": "socket.state(ctrl) - \u83b7\u53d6socket\u5f53\u524d\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nint or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u6570\u503c\uff0c\u5426\u5219\u8fd4\u56denil\nstring or nil,\u8f93\u5165\u53c2\u6570\u6b63\u786e\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de\u72b6\u6001\u7684\u4e2d\u6587\u63cf\u8ff0\uff0c\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nlocal state, str = socket.state(ctrl)\nlog.info(\"state\", state, str)\nstate 0 \"\u786c\u4ef6\u79bb\u7ebf\",\n 1 \"\u79bb\u7ebf\",\n 2 \"\u7b49\u5f85DNS\",\n 3 \"\u6b63\u5728\u8fde\u63a5\",\n 4 \"\u6b63\u5728TLS\u63e1\u624b\",\n 5 \"\u5728\u7ebf\",\n 6 \"\u5728\u76d1\u542c\",\n 7 \"\u6b63\u5728\u79bb\u7ebf\",\n 8 \"\u672a\u77e5\"\n", "prefix": "socket.state"}, "socket.release": {"body": "socket.release(${1:ctrl})", "description": "socket.release(ctrl) - \u4e3b\u52a8\u91ca\u653e\u6389network_ctrl\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u4f8b\u5b50\uff1a\n-- \u91ca\u653e\u540e\u5c31\u4e0d\u80fd\u518d\u4f7f\u7528\u4e86\nsocket.release(ctrl)\n", "prefix": "socket.release"}, "socket.setDNS": {"body": "socket.setDNS(${1:adapter_index},${2:dns_index},${3:ip})", "description": "socket.setDNS(adapter_index, dns_index, ip) - \u8bbe\u7f6eDNS\u670d\u52a1\u5668\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7\uff0c \u53ea\u80fd\u662fsocket.ETH0\uff0csocket.STA\uff0csocket.AP\uff0c\u5982\u679c\u4e0d\u586b\uff0c\u4f1a\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6ce8\u518c\u7684\u9002\u914d\u5668\nint dns\u670d\u52a1\u5668\u5e8f\u53f7\uff0c\u4ece1\u5f00\u59cb\nstring or int dns\uff0c\u5982\u679c\u662fIPV4\uff0c\u53ef\u4ee5\u662f\u5927\u7aef\u683c\u5f0f\u7684int\u503c\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u9ed8\u8ba4\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(nil, 1, \"114.114.114.114\")\n-- \u8bbe\u7f6e\u5236\u5b9a\u7f51\u7edc\u9002\u914d\u5668\u7684DNS\u914d\u7f6e\nsocket.setDNS(socket.ETH0, 1, \"114.114.114.114\")\n", "prefix": "socket.setDNS"}, "socket.sslLog": {"body": "socket.sslLog(${1:log_level})", "description": "socket.sslLog(log_level) - \u8bbe\u7f6eSSL\u7684log\u767b\u8bb0\n\u4f20\u5165\u503c\uff1a\nint mbedtls log\u7b49\u7ea7\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n--[[\nSSL/TLS log\u7ea7\u522b\u8bf4\u660e\n0\u4e0d\u6253\u5370\n1\u53ea\u6253\u5370\u9519\u8bef\u548c\u8b66\n2\u5927\u90e8\u5206info\n3\u53ca3\u4ee5\u4e0a\u8be6\u7ec6\u7684debug\n\n\u8fc7\u591a\u7684\u4fe1\u606f\u53ef\u80fd\u4f1a\u9020\u6210\u5185\u5b58\u788e\u7247\u5316\n]]\n-- \u6253\u5370\u5927\u90e8\u5206info\u65e5\u5fd7\nsocket.sslLog(2)\n", "prefix": "socket.sslLog"}, "socket.adapter": {"body": "socket.adapter(${1:index})", "description": "socket.adapter(index) - \u67e5\u770b\u7f51\u5361\u9002\u914d\u5668\u7684\u8054\u7f51\u72b6\u6001\n\u4f20\u5165\u503c\uff1a\nint \u9700\u8981\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\uff0c\u53ef\u4ee5\u7559\u7a7a\u4f1a\u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u9047\u5230IP READY\u7684\uff0c\u5982\u679c\u6307\u5b9a\u7f51\u5361\uff0c\u53ea\u80fd\u662fsocket.ETH0\uff08\u5916\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_ETH\uff08\u5185\u7f6e\u4ee5\u592a\u7f51\uff09\uff0csocket.LWIP_STA\uff08\u5185\u7f6eWIFI\u7684STA\uff09\uff0csocket.LWIP_AP\uff08\u5185\u7f6eWIFI\u7684AP\uff09\uff0csocket.LWIP_GP\uff08\u5185\u7f6e\u8702\u7a9d\u7f51\u7edc\u7684GPRS\uff09\uff0csocket.USB\uff08\u5916\u7f6eUSB\u7f51\u5361\uff09\n\u8fd4\u56de\u503c\uff1a\nboolean \u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u662f\u5426IP READY,true\u8868\u793a\u5df2\u7ecf\u51c6\u5907\u597d\u53ef\u4ee5\u8054\u7f51\u4e86,false\u6682\u65f6\u4e0d\u53ef\u4ee5\u8054\u7f51\nint \u6700\u540e\u4e00\u4e2a\u88ab\u67e5\u770b\u7684\u9002\u914d\u5668\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\n-- \u67e5\u770b\u5168\u90e8\u7f51\u5361\uff0c\u76f4\u5230\u627e\u5230\u4e00\u4e2a\u662fIP READY\u7684\nlocal isReady,index = socket.adapter() --\u5982\u679cisReady\u4e3atrue,\u5219index\u4e3aIP READY\u7684\u7f51\u5361\u9002\u914d\u5668\u5e8f\u53f7\n--\u67e5\u770b\u5916\u7f6e\u4ee5\u592a\u7f51\uff08\u6bd4\u5982W5500\uff09\u662f\u5426IP READY\nlocal isReady,default = socket.adapter(socket.ETH0)\n", "prefix": "socket.adapter"}, "socket.remoteIP": {"body": "socket.remoteIP(${1:ctrl})", "description": "socket.remoteIP(ctrl) - \u83b7\u53d6\u5bf9\u7aefip\n\u4f20\u5165\u503c\uff1a\nuser_data socket.create\u5f97\u5230\u7684ctrl\n\u8fd4\u56de\u503c\uff1a\nstring IP1\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709\u83b7\u53d6\u5230IP\u5730\u5740\nstring IP2\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP2\nstring IP3\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP3\nstring IP4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u6ca1\u6709IP4\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f: \uff0c\u5fc5\u987b\u5728\u63a5\u6536\u5230socket.ON_LINE\u6d88\u606f\u4e4b\u540e\u624d\u53ef\u80fd\u83b7\u53d6\u5230\uff0c\u6700\u591a\u8fd4\u56de4\u4e2aIP\u3002\n-- socket.connect\u91cc\u5982\u679cremote_port\u8bbe\u7f6e\u62100\uff0c\u5219\u5f53DNS\u5b8c\u6210\u65f6\u5c31\u8fd4\u56desocket.ON_LINE\u6d88\u606f\nlocal ip1,ip2,ip3,ip4 = socket.remoteIP(ctrl)\n", "prefix": "socket.remoteIP"}, "softkb.init": {"body": "softkb.init(${1:port},${2:key_in},${3:key_out})", "description": "softkb.init(port, key_in, key_out) - \u521d\u59cb\u5316\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\ntable \u77e9\u9635\u8f93\u5165\u6309\u952e\u8868\ntable \u77e9\u9635\u8f93\u51fa\u6309\u952e\u8868\n\u4f8b\u5b50\uff1a\n key_in = {pin.PD10,pin.PE00,pin.PE01,pin.PE02}\n key_out = {pin.PD12,pin.PD13,pin.PD14,pin.PD15}\n softkb.init(0,key_in,key_out)\n\nsys.subscribe(\"SOFT_KB_INC\", function(port, data, state)\n -- port \u5f53\u524d\u56fa\u5b9a\u4e3a0, \u53ef\u4ee5\u65e0\u89c6\n -- data, \u9700\u8981\u914d\u5408init\u7684map\u8fdb\u884c\u89e3\u6790\n -- state, 1 \u4e3a\u6309\u4e0b, 0 \u4e3a \u91ca\u653e\n -- TODO \u8be6\u7ec6\u4ecb\u7ecd\nend)\n", "prefix": "softkb.init"}, "softkb.deinit": {"body": "softkb.deinit(${1:port})", "description": "softkb.deinit(port) - \u5220\u9664\u8f6f\u4ef6\u952e\u76d8\u77e9\u9635\n\u4f20\u5165\u503c\uff1a\nint \u9884\u7559, \u5f53\u524d\u586b0\n\u4f8b\u5b50\uff1a\n softkb.deinit(0)\n", "prefix": "softkb.deinit"}, "spi.setup": {"body": "spi.setup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.setup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba42M=2000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,20,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.setup"}, "spi.createSoft": {"body": "spi.createSoft(${1:cs},${2:mosi},${3:miso},${4:clk},${5:CPHA},${6:CPOL},${7:dataw},${8:bitdict},${9:ms},${10:mode})", "description": "spi.createSoft(cs, mosi, miso, clk, CPHA, CPOL, dataw, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528\u8f6f\u4ef6SPI\n\u4f20\u5165\u503c\uff1a\nint cs\u5f15\u811a\u7f16\u53f7\uff0c\u4f20\u5165nil\u610f\u4e3aLua\u63a7\u5236cs\u811a\nint mosi\u5f15\u811a\u7f16\u53f7\nint miso\u5f15\u811a\u7f16\u53f7\nint clk\u5f15\u811a\u7f16\u53f7\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u9ed8\u8ba40\uff0c\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6\uff0c\u9ed8\u8ba48bit\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f\uff0c\u5168\u53cc\u5de51\uff0c\u534a\u53cc\u5de50\uff0c\u9ed8\u8ba4\u534a\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\n\u8f6f\u4ef6SPI\u5bf9\u8c61 \u53ef\u5f53\u4f5cSPI\u7684id\u4f7f\u7528\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6spi\nlocal softSpiDevice = spi.createSoft(0, 1, 2, 3, 0, 0, 8, spi.MSB, 1, 1)\nlocal result = spi.send(softSpiDevice, string.char(0x9f))\n", "prefix": "spi.createSoft"}, "spi.close": {"body": "spi.close(${1:id})", "description": "spi.close(id) - \u5173\u95ed\u6307\u5b9a\u7684SPI\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.close(0)\n", "prefix": "spi.close"}, "spi.transfer": {"body": "spi.transfer(${1:id},${2:send_data},${3:send_len},${4:recv_len})", "description": "spi.transfer(id, send_data, send_len, recv_len) - \u4f20\u8f93SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7(\u4f8b\u59820)\u6216\u8f6f\u4ef6SPI\u5bf9\u8c61\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi.transfer(0, \"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi.transfer(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi.transfer"}, "spi.recv": {"body": "spi.recv(${1:id},${2:size},${3:buff})", "description": "spi.recv(id, size, buff) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint \u6570\u636e\u957f\u5ea6\nuserdata zbuff\u5bf9\u8c61,\u53ef\u9009,2024.3.29\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nstring/int \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u82e5\u4f20\u5165\u7684\u662fzbuff\u5c31\u8fd4\u56de\u8bfb\u53d6\u5927\u5c0f,\u51fa\u9519\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\n-- \u63a5\u6536\u6570\u636e\nlocal recv = spi.recv(0, 4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n\n-- \u5f53\u4f20\u5165zbuff\u53c2\u6570\u65f6,\u8fd4\u56de\u503c\u6709\u6240\u4e0d\u540c. 2024.3.29\u65b0\u589e\n-- \u8bfb\u53d6\u6210\u529f\u540e, \u6307\u9488\u4f1a\u5f80\u540e\u79fb\u52a8len\u4e2a\u5b57\u8282\n-- \u5199\u5165\u4f4d\u7f6e\u4ee5\u5f53\u524dused()\u4f4d\u7f6e\u5f00\u59cb, \u8bf7\u52a1\u5fc5\u786e\u4fdd\u6709\u8db3\u591f\u7a7a\u95f4\u5199\u5165len\u957f\u5ea6\u7684\u6570\u636e\nlocal len = spi.recv(0, 4, buff)\n", "prefix": "spi.recv"}, "spi.send": {"body": "spi.send(${1:id},${2:data[},${3:len]})", "description": "spi.send(id, data[, len]) - \u53d1\u9001SPI\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi.setup(0,nil,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi.send(0, \"123\")--\u53d1\u9001123\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi.send(0, buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi.send"}, "spi.deviceSetup": {"body": "spi.deviceSetup(${1:id},${2:cs},${3:CPHA},${4:CPOL},${5:dataw},${6:bandrate},${7:bitdict},${8:ms},${9:mode})", "description": "spi.deviceSetup(id, cs, CPHA, CPOL, dataw, bandrate, bitdict, ms, mode) - \u8bbe\u7f6e\u5e76\u542f\u7528SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nint SPI\u53f7,\u4f8b\u59820\nint CS \u7247\u9009\u811a,\u5728w600\u4e0d\u53ef\u7528\u8bf7\u586bnil\nint CPHA \u9ed8\u8ba40,\u53ef\u90090/1\nint CPOL \u9ed8\u8ba40,\u53ef\u90090/1\nint \u6570\u636e\u5bbd\u5ea6,\u9ed8\u8ba48bit\nint \u6ce2\u7279\u7387,\u9ed8\u8ba420M=20000000\nint \u5927\u5c0f\u7aef, \u9ed8\u8ba4spi.MSB, \u53ef\u9009spi.LSB\nint \u4e3b\u4ece\u8bbe\u7f6e, \u9ed8\u8ba4\u4e3b1, \u53ef\u9009\u4ece\u673a0. \u901a\u5e38\u53ea\u652f\u6301\u4e3b\u673a\u6a21\u5f0f\nint \u5de5\u4f5c\u6a21\u5f0f, \u5168\u53cc\u5de51, \u534a\u53cc\u5de50, \u9ed8\u8ba4\u5168\u53cc\u5de5\n\u8fd4\u56de\u503c\uff1a\nuserdata spi_device\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,1)\n", "prefix": "spi.deviceSetup"}, "spi_device:close": {"body": "spi_device:close()", "description": "spi_device:close() - \u5173\u95ed\u6307\u5b9a\u7684SPI(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5426\u5219\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nspi_device.close()\n", "prefix": "spi_device:close"}, "spi_device:transfer": {"body": "spi_device:transfer(${1:send_data[},${2:len]})", "description": "spi_device:transfer(send_data[, len]) - \u4f20\u8f93SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\nint \u53ef\u9009\u3002\u5f85\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3adata\u957f\u5ea6\nint \u53ef\u9009\u3002\u8bfb\u53d6\u6570\u636e\u7684\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a1\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:transfer(\"123\")--\u53d1\u9001123,\u5e76\u8bfb\u53d6\u6570\u636e\nlocal result = spi_device:transfer({0x00,0x01})--\u53d1\u90010x00,0x01,\u5e76\u8bfb\u53d6\u6570\u636e\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal recv = spi_device:transfer(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb,\u5e76\u8bfb\u53d6\u6570\u636e\n", "prefix": "spi_device:transfer"}, "spi_device:send": {"body": "spi_device:send(${1:data[},${2:len]})", "description": "spi_device:send(data[, len]) - \u53d1\u9001SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nstring/zbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3azbuff\u6570\u636e\uff0c\u5219\u4f1a\u4ece\u5bf9\u8c61\u6240\u5904\u7684\u6307\u9488\u5904\u5f00\u59cb\u8bfb\n\u8fd4\u56de\u503c\uff1a\nint \u53d1\u9001\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal result = spi_device:send(\"123\")--\u53d1\u9001123\nlocal result = spi_device:send({0x00,0x01})--\u53d1\u90010x00,0x01\n\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal result = spi_device:send(buff)--\u628azbuff\u6570\u636e\u4ece\u6307\u9488\u5f00\u59cb\uff0c\u5168\u53d1\u51fa\u53bb\n", "prefix": "spi_device:send"}, "spi_device:recv": {"body": "spi_device:recv(${1:size})", "description": "spi_device:recv(size) - \u63a5\u6536\u6307\u5b9a\u957f\u5ea6\u7684SPI\u6570\u636e(\u5bf9\u8c61\u65b9\u5f0f)\n\u4f20\u5165\u503c\uff1a\nuserdata spi_device\nint \u6570\u636e\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316spi\nlocal spi_device = spi.device_setup(0,17,0,0,8,2000000,spi.MSB,1,1)\nlocal recv = spi_device:recv(4)--\u63a5\u65364\u5b57\u8282\u6570\u636e\n", "prefix": "spi_device:recv"}, "spi.xfer": {"body": "spi.xfer(${1:id},${2:txbuff},${3:rxbuff},${4:rx_len},${5:transfer_done_topic})", "description": "spi.xfer(id, txbuff, rxbuff, rx_len, transfer_done_topic) - \u975e\u963b\u585e\u65b9\u5f0f\u786c\u4ef6SPI\u4f20\u8f93SPI\u6570\u636e\uff0c\u76ee\u7684\u4e3a\u4e86\u63d0\u9ad8\u6838\u5fc3\u5229\u7528\u7387\u3002API\u76f4\u63a5\u8fd4\u56de\u662f\u5426\u542f\u52a8\u4f20\u8f93\uff0c\u4f20\u8f93\u5b8c\u6210\u540e\u901a\u8fc7topic\u56de\u8c03\uff0c\u672cAPI\u9002\u5408\u786c\u4ef6SPI\u4f20\u8f93\u5927\u91cf\u6570\u636e\u4f20\u8f93\uff0c\u5916\u8bbe\u529f\u80fd\uff08LCD SPI\uff0cW5500 SPI\u4e4b\u7c7b\u7684\uff09\u5360\u636e\u7684SPI\u548c\u8f6f\u4ef6SPI\u4e0d\u80fd\u7528\uff0c\u5c11\u91cf\u6570\u636e\u4f20\u8f93\u5efa\u8bae\u4f7f\u7528\u4f20\u7edf\u963b\u585e\u578bAPI\n\u4f20\u5165\u503c\uff1a\nuserdata or int spi_device\u6216\u8005spi_id\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u662fspi_device\uff0c\u9700\u8981\u624b\u52a8\u5728\u4f20\u8f93\u5b8c\u6210\u540e\u62c9\u9ad8cs!!!!!!\nzbuff \u5f85\u53d1\u9001\u7684\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u63a5\u6536\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u53d1\u9001\u7684\u6570\u636e\u4ecezbuff.addr\nzbuff \u63a5\u6536\u6570\u636e\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u53ea\u53d1\u9001\u6570\u636e\uff0c\u7531\u4e8e\u7528\u7684\u975e\u963b\u585e\u6a21\u578b\uff0c\u4e3a\u4fdd\u8bc1\u52a8\u6001\u6570\u636e\u7684\u6709\u6548\u6027\uff0c\u53ea\u80fd\u4f7f\u7528zbuff\uff0c\u63a5\u6536\u7684\u6570\u636e\u4ecezbuff.addr\u5f00\u59cb\u5b58\u50a8\nint \u4f20\u8f93\u6570\u636e\u957f\u5ea6\uff0c\u7279\u522b\u8bf4\u660e \u5982\u679c\u4e3a\u534a\u53cc\u5de5\uff0c\u5148\u53d1\u540e\u6536\uff0c\u6bd4\u5982spi flash\u64cd\u4f5c\u8fd9\u79cd\uff0c\u5219\u957f\u5ea6=\u53d1\u9001\u5b57\u8282+\u63a5\u6536\u5b57\u8282\uff0c\u6ce8\u610f\u4e0a\u9762\u53d1\u9001\u548c\u63a5\u6536buff\u90fd\u8981\u7559\u8db3\u591f\u7684\u6570\u636e\uff0c\u540e\u7eed\u63a5\u6536\u6570\u636e\u5904\u7406\u9700\u8981\u8df3\u8fc7\u53d1\u9001\u6570\u636e\u957f\u5ea6\u5b57\u8282\nstring \u4f20\u8f93\u5b8c\u6210\u540e\u56de\u8c03\u7684topic\n\u8fd4\u56de\u503c\uff1a\nboolean true/false \u672c\u6b21\u4f20\u8f93\u662f\u5426\u6b63\u786e\u542f\u52a8\uff0ctrue\uff0c\u542f\u52a8\uff0cfalse\uff0c\u6709\u9519\u8bef\u65e0\u6cd5\u542f\u52a8\u3002\u4f20\u8f93\u5b8c\u6210\u4f1a\u53d1\u5e03\u6d88\u606ftransfer_done_topic\u548cboolean\u578b\u7ed3\u679c\n\u4f8b\u5b50\uff1a\nlocal result = spi.xfer(spi.SPI_0, txbuff, rxbuff, 1024, \"SPIDONE\") if result then result, spi_id, succ, error_code = sys.waitUntil(\"SPIDONE\") end if not result or not succ then log.info(\"spi fail, error code\", error_code) else log.info(\"spi ok\") end\n\n", "prefix": "spi.xfer"}, "statem.create": {"body": "statem.create(${1:count},${2:repeat})", "description": "statem.create(count, repeat) - \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u72b6\u6001\u673a.\n\u4f20\u5165\u503c\uff1a\nint \u6307\u4ee4\u6761\u6570,\u9ed8\u8ba432\u6761\nint \u91cd\u590d\u6267\u884c\u7684\u6b21\u6570, 0 \u4ee3\u8868\u4e0d\u91cd\u590d, \u6b63\u6574\u6570\u4ee3\u8868\u5177\u4f53\u91cd\u590d\u6267\u884c\u7684\u6b21\u6570. \u6682\u4e0d\u652f\u6301\u6c38\u7eed\u6267\u884c\n\u8fd4\u56de\u503c\uff1a\nsome \u82e5\u6210\u529f,\u8fd4\u56de\u72b6\u6001\u673a\u6307\u9488,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\ngpio.setup(7, 0, gpio.PULLUP)\ngpio.setup(12, 0, gpio.PULLUP)\ngpio.setup(13, 0, gpio.PULLUP)\ngpio.setup(14, 0, gpio.PULLUP)\nlocal sm = statem.create()\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :usleep(10) -- \u4f11\u772010us\n :gpio_set(7, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(12, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(13, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :gpio_set(14, 1) -- gpio\u8bbe\u7f6e\u4e3a\u9ad8\u7535\u5e73\n :usleep(40) -- \u4f11\u772040us\n :gpio_set(7, 0) -- gpio\u8bbe\u7f6e\u4e3a\u4f4e\u7535\u5e73\n :finish()\n\n-- \u6267\u884c\u4e4b,\u540e\u7eed\u4f1a\u652f\u6301\u540e\u53f0\u6267\u884c\nsm:exec()\n", "prefix": "statem.create"}, "string.toHex": {"body": "string.toHex(${1:str},${2:separator})", "description": "string.toHex(str, separator) - \u5c06\u5b57\u7b26\u4e32\u8f6c\u6210HEX\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26, \u9ed8\u8ba4\u4e3a\"\"\n\u8fd4\u56de\u503c\uff1a\nstring HEX\u5b57\u7b26\u4e32\nnumber HEX\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nstring.toHex(\"\\1\\2\\3\") --> \"010203\" 6\nstring.toHex(\"123abc\") --> \"313233616263\" 12\nstring.toHex(\"123abc\", \" \") --> \"31 32 33 61 62 63 \" 12\n", "prefix": "string.toHex"}, "string.fromHex": {"body": "string.fromHex(${1:hex})", "description": "string.fromHex(hex) - \u5c06HEX\u8f6c\u6210\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring hex,16\u8fdb\u5236\u7ec4\u6210\u7684\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nstring.fromHex(\"010203\") --> \"\\1\\2\\3\"\nstring.fromHex(\"313233616263\") --> \"123abc\"\n", "prefix": "string.fromHex"}, "string.split": {"body": "string.split(${1:str},${2:delimiter},${3:keepEmtry})", "description": "string.split(str, delimiter, keepEmtry) - \u6309\u7167\u6307\u5b9a\u5206\u9694\u7b26\u5206\u5272\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\nstring \u5206\u9694\u7b26,\u53ef\u9009,\u9ed8\u8ba4 \",\"\nbool \u662f\u5426\u4fdd\u7559\u7a7a\u767d\u7247\u6bb5,\u9ed8\u8ba4\u4e3afalse,\u4e0d\u4fdd\u7559. 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\n\u8fd4\u56de\u503c\uff1a\ntable \u5206\u5272\u540e\u7684\u5b57\u7b26\u4e32\u8868\n\u4f8b\u5b50\uff1a\nlocal tmp = string.split(\"123,233333,122\")\nlog.info(\"tmp\", json.encode(tmp))\nlocal tmp = (\"123,456,789\"):split(',') --> {'123','456','789'}\nlog.info(\"tmp\", json.encode(tmp))\n\n-- \u4fdd\u7559\u7a7a\u7247\u6bb5, 2023.4.11\u4e4b\u540e\u7684\u56fa\u4ef6\u53ef\u7528\nlocal str = \"/tmp//def/1234/\"\nlocal tmp = str:split(\"/\", true) \nlog.info(\"str.split\", #tmp, json.encode(tmp))\n", "prefix": "string.split"}, "string.toValue": {"body": "string.toValue(${1:str})", "description": "string.toValue(str) - \u8fd4\u56de\u5b57\u7b26\u4e32tonumber\u7684\u8f6c\u4e49\u5b57\u7b26\u4e32(\u7528\u6765\u652f\u6301\u8d85\u8fc731\u4f4d\u6574\u6570\u7684\u8f6c\u6362)\n\u4f20\u5165\u503c\uff1a\nstring \u8f93\u5165\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u8f6c\u6362\u540e\u7684\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32\nnumber \u8f6c\u6362\u4e86\u591a\u5c11\u4e2a\u5b57\u7b26\n\u4f8b\u5b50\uff1a\nstring.toValue(\"123456\") --> \"\\1\\2\\3\\4\\5\\6\" 6\nstring.toValue(\"123abc\") --> \"\\1\\2\\3\\a\\b\\c\" 6\n", "prefix": "string.toValue"}, "string.urlEncode": {"body": "string.urlEncode(${1:\"123abc\"})", "description": "string.urlEncode(\"123 abc\") - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884curl\u7f16\u7801\u8f6c\u6362\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\nint mode:url\u7f16\u7801\u7684\u8f6c\u6362\u6807\u51c6,\n", "prefix": "string.urlEncode"}, "string.toBase64": {"body": "string.toBase64(${1:str})", "description": "string.toBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.toBase64"}, "string.fromBase64": {"body": "string.fromBase64(${1:str})", "description": "string.fromBase64(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase64\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase64"}, "string.toBase32": {"body": "string.toBase32(${1:str})", "description": "string.toBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u7f16\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.toBase32"}, "string.fromBase32": {"body": "string.fromBase32(${1:str})", "description": "string.fromBase32(str) - \u5c06\u5b57\u7b26\u4e32\u8fdb\u884cbase32\u89e3\u7801\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u7801\u540e\u7684\u5b57\u7b26\u4e32,\u5982\u679c\u89e3\u7801\u5931\u8d25\u4f1a\u8fd4\u56de0\u957f\u5ea6\u5b57\u7b26\u4e32\n", "prefix": "string.fromBase32"}, "string.startsWith": {"body": "string.startsWith(${1:str},${2:prefix})", "description": "string.startsWith(str, prefix) - \u5224\u65ad\u5b57\u7b26\u4e32\u524d\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u524d\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:startsWith(\"a\"))\nlog.info(\"str\", str:startsWith(\"b\"))\n", "prefix": "string.startsWith"}, "string.endsWith": {"body": "string.endsWith(${1:str},${2:suffix})", "description": "string.endsWith(str, suffix) - \u5224\u65ad\u5b57\u7b26\u4e32\u540e\u7f00\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u68c0\u67e5\u7684\u5b57\u7b26\u4e32\nstring \u540e\u7f00\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u771f\u4e3atrue, \u5047\u4e3afalse\n\u4f8b\u5b50\uff1a\nlocal str = \"abc\"\nlog.info(\"str\", str:endsWith(\"c\"))\nlog.info(\"str\", str:endsWith(\"b\"))\n", "prefix": "string.endsWith"}, "string.trim": {"body": "string.trim(${1:str},${2:ltrim},${3:rtrim})", "description": "string.trim(str, ltrim, rtrim) - \u88c1\u526a\u5b57\u7b26\u4e32,\u53bb\u9664\u5934\u5c3e\u7684\u7a7a\u683c\n\u4f20\u5165\u503c\uff1a\nstring \u9700\u8981\u5904\u7406\u7684\u5b57\u7b26\u4e32\nbool \u6e05\u7406\u524d\u7f00,\u9ed8\u8ba4\u4e3atrue\nbool \u6e05\u7406\u540e\u7f00,\u9ed8\u8ba4\u4e3atrue\n\u8fd4\u56de\u503c\uff1a\nstring \u6e05\u7406\u540e\u7684\u5b57\u7b26\u4e32\n\u4f8b\u5b50\uff1a\nlocal str = \"\\r\\nabc\\r\\n\"\nlog.info(\"str\", string.trim(str)) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", str:trim()) -- \u6253\u5370 \"abc\"\nlog.info(\"str\", #string.trim(str, false, true)) -- \u4ec5\u88c1\u526a\u540e\u7f00,\u6240\u4ee5\u957f\u5ea6\u662f5\n", "prefix": "string.trim"}, "sys.wait": {"body": "sys.wait(${1:timeout})", "description": "sys.wait(timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nany \u901a\u5e38\u4e3anil,\u9664\u975e\u4e3b\u52a8\u88ab\u5524\u9192(\u901a\u5e38\u4e0d\u4f1a)\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n while 1 do\n sys.wait(500)\n end\nend)\n", "prefix": "sys.wait"}, "sys.waitUntil": {"body": "sys.waitUntil(${1:topic},${2:timeout})", "description": "sys.waitUntil(topic, timeout) - Task\u534f\u7a0b\u7b49\u5f85\u6307\u5b9a\u65f6\u957f\u6216\u8005\u7279\u5b9a\u7684topic\n\u4f20\u5165\u503c\uff1a\nstring \u4e8b\u4ef6topic\nint \u7b49\u5f85\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2,\u5fc5\u987b\u5927\u4e8e0,\u5426\u5219\u65e0\u6548\n\u8fd4\u56de\u503c\uff1a\nboolean \u5982\u679c\u662f\u8d85\u65f6,\u8fd4\u56defalse,\u5426\u5219\u8fd4\u56detrue\nany \u5bf9\u5e94topic\u7684\u5185\u5bb9\n\u4f8b\u5b50\uff1a\nsys.taskInit(function()\n // do something\n local result, data = sys.waitUntil(\"NET_READY\", 30000)\n // do something else\nend)\n", "prefix": "sys.waitUntil"}, "sys.taskInit": {"body": "sys.taskInit(${1:func},${2:arg1},${3:arg2},${4:argN})", "description": "sys.taskInit(func, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2aTask\u534f\u7a0b\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\ntask \u534f\u7a0b\u5bf9\u8c61\n\u4f8b\u5b50\uff1a\nsys.taskInit(function(a, b, c)\n log.info(\"task\", a, b, c) -- \u6253\u5370 task A B C\nend, \"A\", \"B\", \"N\")\n", "prefix": "sys.taskInit"}, "sys.timerStart": {"body": "sys.timerStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStart"}, "sys.timerLoopStart": {"body": "sys.timerLoopStart(${1:func},${2:timeout},${3:arg1},${4:arg2},${5:argN})", "description": "sys.timerLoopStart(func, timeout, arg1, arg2, argN) - \u521b\u5efa\u4e00\u4e2a\u5faa\u73af\u5b9a\u65f6\u5668.\u975eTask,\u51fd\u6570\u91cc\u4e0d\u80fd\u76f4\u63a5sys.waitXXX\n\u4f20\u5165\u503c\uff1a\nfunction \u5f85\u6267\u884c\u7684\u51fd\u6570,\u53ef\u4ee5\u662f\u533f\u540d\u51fd\u6570, \u4e5f\u53ef\u4ee5\u662flocal\u6216\u5168\u5c40\u51fd\u6570\nint \u5ef6\u65f6\u65f6\u957f,\u5355\u4f4d\u6beb\u79d2\nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65701,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u65702,\u53ef\u9009 \nany \u9700\u8981\u4f20\u9012\u7684\u53c2\u6570N,\u53ef\u9009 \n\u8fd4\u56de\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u4f8b\u5b50\uff1a\nsys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerLoopStart"}, "sys.timerStop": {"body": "sys.timerStop(${1:id})", "description": "sys.timerStop(id) - \u5173\u95ed\u4e00\u4e2a\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nint \u5b9a\u65f6\u5668id\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal tcount = 0\nlocal tid \ntid = sys.timerLoopStart(function(a, b, c)\n log.info(\"task\", a, b, c) -- 1000\u6beb\u79d2\u540e\u624d\u4f1a\u6267\u884c, \u6253\u5370 task A B C\n if tcount > 10 then\n sys.timerStop(tid)\n end\n tcount = tcount + 1\nend, 1000, \"A\", \"B\", \"N\")\n", "prefix": "sys.timerStop"}, "sys.timerStopAll": {"body": "sys.timerStopAll(${1:fnc})", "description": "sys.timerStopAll(fnc) - \u5173\u95ed\u540c\u4e00\u56de\u8c03\u51fd\u6570\u7684\u6240\u6709\u5b9a\u65f6\u5668.\n\u4f20\u5165\u503c\uff1a\nfunction fnc\u56de\u8c03\u7684\u51fd\u6570\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u5173\u95ed\u56de\u8c03\u51fd\u6570\u4e3apublicTimerCbFnc\u7684\u6240\u6709\u5b9a\u65f6\u5668\nlocal function publicTimerCbFnc(tag)\nlog.info(\"publicTimerCbFnc\",tag)\nend\nsys.timerStart(publicTimerCbFnc,8000,\"first\")\nsys.timerStart(publicTimerCbFnc,8000,\"second\")\nsys.timerStart(publicTimerCbFnc,8000,\"third\")\nsys.timerStopAll(publicTimerCbFnc)\n", "prefix": "sys.timerStopAll"}, "sys.publish": {"body": "sys.publish(${1:topic},${2:arg1},${3:agr2},${4:argN})", "description": "sys.publish(topic, arg1, agr2, argN) - \u5f80\u7279\u5b9atopic\u901a\u9053\u53d1\u5e03\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nany \u9644\u5e26\u7684\u53c2\u65701\nany \u9644\u5e26\u7684\u53c2\u65702\nany \u9644\u5e26\u7684\u53c2\u6570N\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nsys.publish(\"BT_READY\", false)\n", "prefix": "sys.publish"}, "sys.subscribe": {"body": "sys.subscribe(${1:topic},${2:func})", "description": "sys.subscribe(topic, func) - \u8ba2\u9605\u4e00\u4e2atopic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.subscribe(\"BT_READY\", bt_cb)\nsys.subscribe(\"BT_READY\", function(state)\n log.info(\"sys\", \"Got BT_READY\", state)\nend)\n", "prefix": "sys.subscribe"}, "sys.unsubscribe": {"body": "sys.unsubscribe(${1:topic},${2:func})", "description": "sys.unsubscribe(topic, func) - \u53d6\u6d88\u8ba2\u9605topic\u901a\u9053\n\u4f20\u5165\u503c\uff1a\nstring topic\u7684\u503c\nfunction \u56de\u8c03\u51fd\u6570, \u6ce8\u610f, \u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528sys.waitXXX\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nlocal function bt_cb(state)\n log.info(\"bt\", state)\nend\nsys.unsubscribe(\"BT_READY\", bt_cb)\n", "prefix": "sys.unsubscribe"}, "sys.run": {"body": "sys.run()", "description": "sys.run() - sys\u5e93\u4e3b\u5faa\u73af\u65b9\u6cd5,\u4ec5\u5141\u8bb8\u5728main.lua\u7684\u672b\u5c3e\u8c03\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c. \u8fd9\u4e2a\u65b9\u6cd5\u51e0\u4e4e\u4e0d\u53ef\u80fd\u8fd4\u56de.\n\u4f8b\u5b50\uff1a\n-- \u603b\u662fmain.lua\u7684\u7ed3\u5c3e\u4e00\u53e5,\u5c06\u6765\u4e5f\u8bb8\u4f1a\u7b80\u5316\u6389\nsys.run()\n-- \u4e4b\u540e\u7684\u4ee3\u7801\u4e0d\u4f1a\u88ab\u6267\u884c\n", "prefix": "sys.run"}, "sysplus.waitMsg": {"body": "sysplus.waitMsg(${1:taskName},${2:target},${3:timeout})", "description": "sysplus.waitMsg(taskName, target, timeout) - \u7b49\u5f85\u63a5\u6536\u4e00\u4e2a\u76ee\u6807\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nstring \u76ee\u6807\u6d88\u606f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u63a5\u6536\u5230\u4efb\u610f\u6d88\u606f\u90fd\u4f1a\u9000\u51fa\nint \u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u8868\u793a\u65e0\u8d85\u65f6\uff0c\u6c38\u8fdc\u7b49\u5f85\n\u8fd4\u56de\u503c\uff1a\ntable \u6210\u529f\u8fd4\u56detable\u578b\u7684msg\uff0c\u8d85\u65f6\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u7b49\u5f85\u4efb\u52a1\nsysplus.waitMsg('a', 'b', 1000)\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_wait\n", "prefix": "sysplus.waitMsg"}, "sysplus.sendMsg": {"body": "sysplus.sendMsg(${1:taskName},${2:target},${3:arg2},${4:arg3},${5:arg4})", "description": "sysplus.sendMsg(taskName, target, arg2, arg3, arg4) - \u5411\u76ee\u6807\u4efb\u52a1\u53d1\u9001\u4e00\u4e2a\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\uff0c\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65701\uff0c\u540c\u65f6\u4e5f\u662fwaitMsg\u91cc\u7684target\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65702\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65703\nany \u6d88\u606f\u4e2d\u7684\u53c2\u65704\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5411\u4efb\u52a1a,\u76ee\u6807b\u53d1\u9001\u6d88\u606f\nsysplus.sendMsg('a', 'b')\n-- \u6ce8\u610f, \u672c\u51fd\u6570\u4f1a\u81ea\u52a8\u6ce8\u518c\u6210\u5168\u5c40\u51fd\u6570 sys_send\n", "prefix": "sysplus.sendMsg"}, "sysplus.taskInitEx": {"body": "sysplus.taskInitEx(${1:fun},${2:taskName},${3:cbFun},${4:...})", "description": "sysplus.taskInitEx(fun, taskName, cbFun, ...) - \u521b\u5efa\u4e00\u4e2a\u4efb\u52a1\u7ebf\u7a0b,\u5728\u6a21\u5757\u6700\u672b\u884c\u8c03\u7528\u8be5\u51fd\u6570\u5e76\u6ce8\u518c\u6a21\u5757\u4e2d\u7684\u4efb\u52a1\u51fd\u6570,main.lua\u5bfc\u5165\u8be5\u6a21\u5757\u5373\u53ef\n\u4f20\u5165\u503c\uff1a\nfunction \u4efb\u52a1\u51fd\u6570\u540d,\u7528\u4e8eresume\u5524\u9192\u65f6\u8c03\u7528\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\nfunction \u63a5\u6536\u5230\u975e\u76ee\u6807\u6d88\u606f\u65f6\u7684\u56de\u8c03\u51fd\u6570\nany ... \u4efb\u52a1\u51fd\u6570fun\u7684\u53ef\u53d8\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u8fd4\u56de\u8be5\u4efb\u52a1\u7684\u7ebf\u7a0b\u53f7\n\u4f8b\u5b50\uff1a\nsysplus.taskInitEx(task1,'a',callback)\n", "prefix": "sysplus.taskInitEx"}, "sysplus.taskDel": {"body": "sysplus.taskDel(${1:taskName})", "description": "sysplus.taskDel(taskName) - \u5220\u9664\u7531taskInitEx\u521b\u5efa\u7684\u4efb\u52a1\u7ebf\u7a0b\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0,\u7528\u4e8e\u5524\u9192\u4efb\u52a1\u7684id\n\u4f8b\u5b50\uff1a\nsysplus.taskDel('a')\n", "prefix": "sysplus.taskDel"}, "sysplus.cleanMsg": {"body": "sysplus.cleanMsg(${1:taskName})", "description": "sysplus.cleanMsg(taskName) - \u6e05\u9664\u6307\u5b9atask\u7684\u6d88\u606f\u961f\u5217\n\u4f20\u5165\u503c\uff1a\nstring \u4efb\u52a1\u540d\u79f0\n\u4f8b\u5b50\uff1a\nsysplus.cleanMsg('a')\n", "prefix": "sysplus.cleanMsg"}, "timer.mdelay": {"body": "timer.mdelay(${1:timeout})", "description": "timer.mdelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dms, \u6700\u9ad81024ms, \u5b9e\u9645\u4f7f\u7528\u5f3a\u70c8\u5efa\u8bae\u4e0d\u8981\u8d85\u8fc7200ms\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u671f\u95f4\u6ca1\u6709\u4efb\u4f55luat\u4ee3\u7801\u4f1a\u6267\u884c,\u5305\u62ec\u5e95\u5c42\u6d88\u606f\u5904\u7406\u673a\u5236\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\ntimer.mdelay(10)\n", "prefix": "timer.mdelay"}, "timer.udelay": {"body": "timer.udelay(${1:timeout})", "description": "timer.udelay(timeout) - \u786c\u963b\u585e\u6307\u5b9a\u65f6\u957f\u4f46us\u7ea7\u522b,\u4e0d\u4f1a\u5f88\u7cbe\u51c6\n\u4f20\u5165\u503c\uff1a\nint \u963b\u585e\u65f6\u957f,\u5355\u4f4dus, \u6700\u59273000us\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672c\u65b9\u6cd5\u901a\u5e38\u4e0d\u4f1a\u4f7f\u7528,\u9664\u975e\u4f60\u5f88\u6e05\u695a\u4f1a\u53d1\u751f\u4ec0\u4e48\n-- \u672cAPI\u5728 2023.05.18 \u6dfb\u52a0\ntimer.udelay(10)\n-- \u5b9e\u9645\u963b\u585e\u65f6\u957f\u662f\u6709\u6ce2\u52a8\u7684\n", "prefix": "timer.udelay"}, "touchkey.setup": {"body": "touchkey.setup(${1:id},${2:scan_period},${3:window},${4:threshold})", "description": "touchkey.setup(id, scan_period, window, threshold) - \u914d\u7f6e\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863, \u4f8b\u5982air101/air103\u652f\u6301 1~15, \u4f8b\u5982PA7\u5bf9\u5e94touch id=1\nint \u626b\u63cf\u95f4\u9694,\u8303\u56f41 ~ 0x3F, \u5355\u4f4d16ms,\u53ef\u9009\nint \u626b\u63cf\u7a97\u53e3,\u8303\u56f42-7, \u53ef\u9009\nint \u9600\u503c, \u8303\u56f40-127, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue, \u5931\u8d25\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\ntouchkey.setup(1)\nsys.subscribe(\"TOUCHKEY_INC\", function(id, count)\n -- \u4f20\u611f\u5668id\n -- \u8ba1\u6570\u5668,\u89e6\u6478\u6b21\u6570\u7edf\u8ba1\n log.info(\"touchkey\", id, count)\nend)\n", "prefix": "touchkey.setup"}, "touchkey.close": {"body": "touchkey.close(${1:id})", "description": "touchkey.close(id) - \u5173\u95ed\u521d\u59cb\u89e6\u6478\u6309\u952e\n\u4f20\u5165\u503c\uff1a\nint \u4f20\u611f\u5668id,\u8bf7\u67e5\u9605\u786c\u4ef6\u6587\u6863\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u4e0d\u592a\u53ef\u80fd\u9700\u8981\u5173\u6389\u7684\u6837\u5b50\ntouchkey.close(1)\n", "prefix": "touchkey.close"}, "u8g2.begin": {"body": "u8g2.begin(${1:conf})", "description": "u8g2.begin(conf) - u8g2\u663e\u793a\u5c4f\u521d\u59cb\u5316\n\u4f20\u5165\u503c\uff1a\ntable conf \u914d\u7f6e\u4fe1\u606f,\u8be6\u7ec6\u914d\u7f6e\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\n\u8fd4\u56de\u503c\uff1a\nint \u6b63\u5e38\u521d\u59cb\u53161,\u5df2\u7ecf\u521d\u59cb\u5316\u8fc72,\u5185\u5b58\u4e0d\u591f3,\u521d\u59cb\u5316\u5931\u8d25\u8fd4\u56de4\n\u4f8b\u5b50\uff1a\n-- conf\u914d\u7f6e\u9879\u8bf4\u660e\n-- ic \u5b57\u7b26\u4e32,\u4e3b\u63a7\u82af\u7247\u7c7b\u578b, \u652f\u6301custom(\u81ea\u5b9a\u4e49\u547d\u4ee4) ssd1306(\u9ed8\u8ba4) ssd1309 ssd1322 sh1106 sh1107 sh1108 st7567 uc1701 ssd1306_128x32\n-- direction \u6570\u503c,\u65b9\u5411,\u53ef\u90090 90 180 270 \u9ed8\u8ba40\n-- mode \u5b57\u7b26\u4e32,\u6a21\u5f0f,\u53ef\u9009i2c_sw:\u8f6f\u4ef6i2c i2c_hw:\u786c\u4ef6i2c,spi_hw_4pin: \u786c\u4ef6spi\n-- i2c_id: \u6570\u503c,\u786c\u4ef6i2c\u65f6\u6709\u6548\n-- i2c_scl: \u6570\u503c,\u8f6f\u4ef6i2c\u65f6\u65f6\u949f\u7ebf\u7684GPIO\u7f16\u53f7\n-- i2c_sda: \u6570\u503c\u8f6f\u4ef6i2c\u65f6\u6570\u636e\u7ebf\u7684GPIO\u7f16\u53f7\n-- spi_id\u3001spi_res\u3001spi_dc\u3001spi_cs: \u6570\u503c,\u786c\u4ef6spi\u7684SPI\u7f16\u53f7,\u590d\u4f4dGPIO\u7f16\u53f7,DC\u7ebf\u7684GPIO\u7f16\u53f7, CS\u7ebf\u7684GPIO\u7f16\u53f7\n-- x_offset: \u6570\u503c,X\u8f74\u504f\u79fb\u91cf,\u9ed8\u8ba4\u6309\u9a71\u52a8\u8d70, 2023.11.10\u65b0\u589e\u7684\u914d\u7f6e\u9879\n\n-- \u521d\u59cb\u5316\u786c\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_hw\",i2c_id=0}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u786c\u4ef6spi\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"spi_hw_4pin\",spi_id=0,spi_res=pin.PB03,spi_dc=pin.PB01,spi_cs=pin.PB04}) -- direction \u53ef\u90090 90 180 270\n-- \u521d\u59cb\u5316\u8f6f\u4ef6i2c\u7684ssd1306\nu8g2.begin({ic = \"ssd1306\",direction = 0,mode=\"i2c_sw\", i2c_scl=1, i2c_sda=4}) -- \u901a\u8fc7PA1 SCL / PA4 SDA\u6a21\u62df\n", "prefix": "u8g2.begin"}, "u8g2.close": {"body": "u8g2.close()", "description": "u8g2.close() - \u5173\u95ed\u663e\u793a\u5c4f\n\u4f8b\u5b50\uff1a\n-- \u5173\u95eddisp,\u518d\u6b21\u4f7f\u7528disp\u76f8\u5173API\u7684\u8bdd,\u9700\u8981\u91cd\u65b0\u521d\u59cb\u5316\nu8g2.close()\n", "prefix": "u8g2.close"}, "u8g2.ClearBuffer": {"body": "u8g2.ClearBuffer()", "description": "u8g2.ClearBuffer() - \u6e05\u5c4f\uff0c\u6e05\u9664\u5185\u5b58\u5e27\u7f13\u51b2\u533a\u4e2d\u7684\u6240\u6709\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u6e05\u5c4f\nu8g2.ClearBuffer()\n", "prefix": "u8g2.ClearBuffer"}, "u8g2.SendBuffer": {"body": "u8g2.SendBuffer()", "description": "u8g2.SendBuffer() - \u5c06\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\uff0c\u5c06\u5b58\u50a8\u5668\u5e27\u7f13\u51b2\u533a\u7684\u5185\u5bb9\u53d1\u9001\u5230\u663e\u793a\u5668\n\u4f8b\u5b50\uff1a\n-- \u628a\u663e\u793a\u6570\u636e\u66f4\u65b0\u5230\u5c4f\u5e55\nu8g2.SendBuffer()\n", "prefix": "u8g2.SendBuffer"}, "u8g2.DrawUTF8": {"body": "u8g2.DrawUTF8(${1:str},${2:x},${3:y})", "description": "u8g2.DrawUTF8(str, x, y) - \u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57\uff0c\u5728\u663e\u793a\u5c4f\u4e0a\u753b\u4e00\u6bb5\u6587\u5b57,\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.DrawUTF8(\"wifi is ready\", 10, 20)\n", "prefix": "u8g2.DrawUTF8"}, "u8g2.DrawButtonUTF8": {"body": "u8g2.DrawButtonUTF8(${1:str},${2:x},${3:y},${4:flags},${5:w},${6:h},${7:v},${8:str})", "description": "u8g2.DrawButtonUTF8(str, x, y, flags, w, h, v, str) - \u5728\u63d0\u4f9b\u7684\u6587\u672c\u5468\u56f4\u753b\u4e00\u4e2a\u6846\u3002\u8fd9\u4e0e DrawUTF8 \u7c7b\u4f3c\uff0c\u4f46\u4e3a\u6587\u672c\u6dfb\u52a0\u4e86\u4e00\u4e9b\u88c5\u9970\u3002\u8981\u8c03\u7528u8g2.SendBuffer()\u624d\u4f1a\u66f4\u65b0\u5230\u5c4f\u5e55 \u6ce8\u610f:\u8bbe\u7f6e\u5750\u6807\u4e3a\u663e\u793a\u5b57\u7b26\u4e32\u5de6\u4e0b\u89d2\u5750\u6807\n\u4f20\u5165\u503c\uff1a\nstring \u6587\u4ef6\u5185\u5bb9\nint \u6a2a\u5750\u6807\nint \u7ad6\u5750\u6807\nint \u6807\u5fd7 \u591a\u4e2a\u6807\u5fd7\u53ef\u4ee5\u4e0e\u201c\u6216\u201d\u8fd0\u7b97\u7b26\u4e00\u8d77\u4f7f\u7528\u3002\nint \u6587\u672c\u7684\u6700\u5c0f\u5bbd\u5ea6\u3002\u5982\u679c\u4e3a0\uff08\u6216\u4f4e\u4e8e\u6587\u672c\u5bbd\u5ea6\uff09\uff0c\u5219\u6587\u672c\u5bbd\u5ea6\u5c06\u7528\u4e8e\u6846\u67b6\u3002\nint \u6587\u672c\u524d\u540e\u7684\u989d\u5916\u7a7a\u95f4\u3002\nint \u6587\u672c\u4e0a\u4e0b\u7684\u989d\u5916\u7a7a\u95f4\u3002\n\u4f8b\u5b50\uff1a\nu8g2.DrawButtonUTF8(\"str\", 10, 20,u8g2.BTN_BW2,0,2,2)\n", "prefix": "u8g2.DrawButtonUTF8"}, "u8g2.SetFontMode": {"body": "u8g2.SetFontMode(${1:mode})", "description": "u8g2.SetFontMode(mode) - \u8bbe\u7f6e\u5b57\u4f53\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetFontMode(1)\n", "prefix": "u8g2.SetFontMode"}, "u8g2.SetFont": {"body": "u8g2.SetFont(${1:font},${2:indentation})", "description": "u8g2.SetFont(font, indentation) - \u8bbe\u7f6e\u5b57\u4f53\n\u4f20\u5165\u503c\uff1a\nuserdata font, u8g2.font_opposansm8 \u4e3a\u7eaf\u82f1\u65878\u53f7\u5b57\u4f53,\u8fd8\u6709font_opposansm10 font_opposansm12 font_opposansm16 font_opposansm18 font_opposansm20 font_opposansm22 font_opposansm24 font_opposansm32 \u53ef\u9009 u8g2.font_opposansm12_chinese \u4e3a12x12\u5168\u4e2d\u6587,\u8fd8\u6709 font_opposansm16_chinese font_opposansm24_chinese font_opposansm32_chinese \u53ef\u9009, u8g2.font_unifont_t_symbols \u4e3a\u7b26\u53f7.\nint indentation, \u7b49\u5bbd\u5b57\u4f53ascii\u53f3\u4fa7\u7f29\u8fdb0~127\u4e2apixel\uff0c\u7b49\u5bbd\u5b57\u4f53\u7684ascii\u5b57\u7b26\u53ef\u80fd\u5728\u53f3\u4fa7\u6709\u5927\u7247\u7a7a\u767d\uff0c\u7528\u6237\u53ef\u4ee5\u9009\u62e9\u5220\u9664\u90e8\u5206\u3002\u7559\u7a7a\u6216\u8005\u8d85\u8fc7127\u5219\u76f4\u63a5\u5220\u9664\u53f3\u534a\u8fb9, \u975e\u7b49\u5bbd\u5b57\u4f53\u65e0\u6548\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3a\u4e2d\u6587\u5b57\u4f53,\u5bf9\u4e4b\u540e\u7684drawStr\u6709\u6548\nu8g2.SetFont(u8g2.font_opposansm12)\n", "prefix": "u8g2.SetFont"}, "u8g2.GetDisplayHeight": {"body": "u8g2.GetDisplayHeight()", "description": "u8g2.GetDisplayHeight() - \u83b7\u53d6\u663e\u793a\u5c4f\u9ad8\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayHeight()\n", "prefix": "u8g2.GetDisplayHeight"}, "u8g2.GetDisplayWidth": {"body": "u8g2.GetDisplayWidth()", "description": "u8g2.GetDisplayWidth() - \u83b7\u53d6\u663e\u793a\u5c4f\u5bbd\u5ea6\n\u8fd4\u56de\u503c\uff1a\nint \u663e\u793a\u5c4f\u5bbd\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.GetDisplayWidth()\n", "prefix": "u8g2.GetDisplayWidth"}, "u8g2.SetDrawColor": {"body": "u8g2.SetDrawColor(${1:c})", "description": "u8g2.SetDrawColor(c) - \u4e3a\u6240\u6709\u7ed8\u56fe\u529f\u80fd\u5206\u914d\u7ed8\u56fe\u989c\u8272\u3002\n\u4f20\u5165\u503c\uff1a\nint c\u4e3a\u989c\u8272\u503c 0\u6ca1\u6709\u8272 1\u6709\u8272 2\u4e0e\u5e95\u8272xor\n\u4f8b\u5b50\uff1a\nu8g2.SetDrawColor(0)\n", "prefix": "u8g2.SetDrawColor"}, "u8g2.DrawPixel": {"body": "u8g2.DrawPixel(${1:x},${2:y})", "description": "u8g2.DrawPixel(x,y) - \u753b\u4e00\u4e2a\u70b9.\n\u4f20\u5165\u503c\uff1a\nint X\u4f4d\u7f6e.\nint Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawPixel(20, 5)\n", "prefix": "u8g2.DrawPixel"}, "u8g2.DrawLine": {"body": "u8g2.DrawLine(${1:x0},${2:y0},${3:x1},${4:y1})", "description": "u8g2.DrawLine(x0,y0,x1,y1) - \u5728\u4e24\u70b9\u4e4b\u95f4\u753b\u4e00\u6761\u7ebf.\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u4e00\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e00\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684X\u4f4d\u7f6e.\nint \u7b2c\u4e8c\u4e2a\u70b9\u7684Y\u4f4d\u7f6e.\n\u4f8b\u5b50\uff1a\nu8g2.DrawLine(20, 5, 5, 32)\n", "prefix": "u8g2.DrawLine"}, "u8g2.DrawCircle": {"body": "u8g2.DrawCircle(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawCircle(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawCircle(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawCircle"}, "u8g2.DrawDisc": {"body": "u8g2.DrawDisc(${1:x0},${2:y0},${3:rad},${4:opt})", "description": "u8g2.DrawDisc(x0,y0,rad,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u534a\u5f84.\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawDisc(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawDisc"}, "u8g2.DrawEllipse": {"body": "u8g2.DrawEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u7a7a\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawEllipse(60,30,8,u8g2.DRAW_ALL)\n", "prefix": "u8g2.DrawEllipse"}, "u8g2.DrawFilledEllipse": {"body": "u8g2.DrawFilledEllipse(${1:x0},${2:y0},${3:rx},${4:ry},${5:opt})", "description": "u8g2.DrawFilledEllipse(x0,y0,rx,ry,opt) - \u5728x,y\u4f4d\u7f6e\u753b\u4e00\u4e2a\u534a\u5f84\u4e3arad\u7684\u5b9e\u5fc3\u692d\u5706.\n\u4f20\u5165\u503c\uff1a\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u5706\u5fc3\u4f4d\u7f6e\nint \u692d\u5706\u5927\u5c0f\nint \u692d\u5706\u5927\u5c0f\nint \u9009\u62e9\u5706\u7684\u90e8\u5206\u6216\u5168\u90e8. \u9ed8\u8ba4\u5168\u753b \u53ef\u9009 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL\n\u4f8b\u5b50\uff1a\nu8g2.DrawFilledEllipse(60,30,8,15)\n", "prefix": "u8g2.DrawFilledEllipse"}, "u8g2.DrawBox": {"body": "u8g2.DrawBox(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawBox(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u586b\u5145\u7684\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawBox(3,7,25,15)\n", "prefix": "u8g2.DrawBox"}, "u8g2.DrawFrame": {"body": "u8g2.DrawFrame(${1:x},${2:y},${3:w},${4:h})", "description": "u8g2.DrawFrame(x,y,w,h) - \u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u7ed8\u5236\u4e00\u4e2a\u6846\uff08\u7a7a\u6846\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\n\u4f8b\u5b50\uff1a\nu8g2.DrawFrame(3,7,25,15)\n", "prefix": "u8g2.DrawFrame"}, "u8g2.DrawRBox": {"body": "u8g2.DrawRBox(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRBox(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u586b\u5145\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRBox(3,7,25,15)\n", "prefix": "u8g2.DrawRBox"}, "u8g2.DrawRFrame": {"body": "u8g2.DrawRFrame(${1:x},${2:y},${3:w},${4:h},${5:r})", "description": "u8g2.DrawRFrame(x,y,w,h,r) - \u7ed8\u5236\u4e00\u4e2a\u4ecex / y\u4f4d\u7f6e\uff08\u5de6\u4e0a\u8fb9\u7f18\uff09\u5f00\u59cb\u5177\u6709\u5706\u5f62\u8fb9\u7f18\u7684\u7a7a\u6846/\u6846\u67b6.\n\u4f20\u5165\u503c\uff1a\nint \u5de6\u4e0a\u8fb9\u7f18\u7684X\u4f4d\u7f6e\nint \u5de6\u4e0a\u8fb9\u7f18\u7684Y\u4f4d\u7f6e\nint \u76d2\u5b50\u7684\u5bbd\u5ea6\nint \u76d2\u5b50\u7684\u9ad8\u5ea6\nint \u56db\u4e2a\u8fb9\u7f18\u7684\u534a\u5f84\n\u4f8b\u5b50\uff1a\nu8g2.DrawRFrame(3,7,25,15)\n", "prefix": "u8g2.DrawRFrame"}, "u8g2.DrawGlyph": {"body": "u8g2.DrawGlyph(${1:x},${2:y},${3:encoding})", "description": "u8g2.DrawGlyph(x,y,encoding) - \u7ed8\u5236\u4e00\u4e2a\u56fe\u5f62\u5b57\u7b26\u3002\u5b57\u7b26\u653e\u7f6e\u5728\u6307\u5b9a\u7684\u50cf\u7d20\u4f4d\u7f6ex\u548cy.\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4f4d\u7f6e\nint \u5b57\u7b26\u7684Unicode\u503c\n\u4f8b\u5b50\uff1a\nu8g2.SetFont(u8g2_font_unifont_t_symbols)\nu8g2.DrawGlyph(5, 20, 0x2603) -- dec 9731/hex 2603 Snowman\n", "prefix": "u8g2.DrawGlyph"}, "u8g2.DrawTriangle": {"body": "u8g2.DrawTriangle(${1:x0},${2:y0},${3:x1},${4:y1},${5:x2},${6:y2})", "description": "u8g2.DrawTriangle(x0,y0,x1,y1,x2,y2) - \u7ed8\u5236\u4e00\u4e2a\u4e09\u89d2\u5f62\uff08\u5b9e\u5fc3\u591a\u8fb9\u5f62\uff09.\n\u4f20\u5165\u503c\uff1a\nint \u70b90X\u4f4d\u7f6e\nint \u70b90Y\u4f4d\u7f6e\nint \u70b91X\u4f4d\u7f6e\nint \u70b91Y\u4f4d\u7f6e\nint \u70b92X\u4f4d\u7f6e\nint \u70b92Y\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nu8g2.DrawTriangle(20,5, 27,50, 5,32)\n", "prefix": "u8g2.DrawTriangle"}, "u8g2.SetBitmapMode": {"body": "u8g2.SetBitmapMode(${1:mode})", "description": "u8g2.SetBitmapMode(mode) - \u5b9a\u4e49\u4f4d\u56fe\u51fd\u6570\u662f\u5426\u5c06\u5199\u5165\u80cc\u666f\u8272\n\u4f20\u5165\u503c\uff1a\nint mode\u5b57\u4f53\u6a21\u5f0f\uff0c\u542f\u7528\uff081\uff09\u6216\u7981\u7528\uff080\uff09\u900f\u660e\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\nu8g2.SetBitmapMode(1)\n", "prefix": "u8g2.SetBitmapMode"}, "u8g2.DrawXBM": {"body": "u8g2.DrawXBM(${1:x},${2:y},${3:w},${4:h},${5:data})", "description": "u8g2.DrawXBM(x, y, w, h, data) - \u7ed8\u5236\u4f4d\u56fe\n\u4f20\u5165\u503c\uff1a\nint X\u5750\u6807\nint y\u5750\u6807\nint \u4f4d\u56fe\u5bbd\nint \u4f4d\u56fe\u9ad8\nint \u4f4d\u56fe\u6570\u636e,\u6bcf\u4e00\u4f4d\u4ee3\u8868\u4e00\u4e2a\u50cf\u7d20\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6a21\u4f7f\u7528PCtoLCD2002\u8f6f\u4ef6\u5373\u53ef\n-- \u5728(0,0)\u4e3a\u5de6\u4e0a\u89d2,\u7ed8\u5236 16x16 \"\u4eca\" \u7684\u4f4d\u56fe\nu8g2.DrawXBM(0, 0, 16,16, string.char(\n 0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,\n 0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00\n))\n", "prefix": "u8g2.DrawXBM"}, "u8g2.DrawDrcode": {"body": "u8g2.DrawDrcode(${1:x},${2:y},${3:str},${4:size})", "description": "u8g2.DrawDrcode(x, y, str, size) - \u7f13\u51b2\u533a\u7ed8\u5236QRCode\n\u4f20\u5165\u503c\uff1a\nint x\u5750\u6807\nint y\u5750\u6807\nstring \u4e8c\u7ef4\u7801\u7684\u5185\u5bb9\nint \u663e\u793a\u5927\u5c0f (\u6ce8\u610f:\u4e8c\u7ef4\u7801\u751f\u6210\u5927\u5c0f\u4e0e\u8981\u663e\u793a\u5185\u5bb9\u548c\u7ea0\u9519\u7b49\u7ea7\u6709\u5173,\u751f\u6210\u7248\u672c\u4e3a1-40(\u5bf9\u5e94 21x21 - 177x177)\u7684\u4e0d\u5b9a\u5927\u5c0f,\u5982\u679c\u548c\u8bbe\u7f6e\u5927\u5c0f\u4e0d\u540c\u4f1a\u81ea\u52a8\u5728\u6307\u5b9a\u7684\u533a\u57df\u4e2d\u95f4\u663e\u793a\u4e8c\u7ef4\u7801,\u5982\u4e8c\u7ef4\u7801\u672a\u663e\u793a\u8bf7\u67e5\u770b\u65e5\u5fd7\u63d0\u793a)\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.DrawDrcode"}, "u8g2.SetContrast": {"body": "u8g2.SetContrast(${1:contrast})", "description": "u8g2.SetContrast(contrast) - \u8c03\u6574\u5c4f\u5e55\u5bf9\u6bd4\u5ea6\n\u4f20\u5165\u503c\uff1a\nint \u5bf9\u6bd4\u5ea6\uff08\u53d6\u503c\u8303\u56f4\u4e0eIC\u6709\u5173\uff0c\u5982st7567\u4e3a0-63\uff09\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "u8g2.SetContrast"}, "u8g2.drawGtfontGb2312": {"body": "u8g2.drawGtfontGb2312(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontGb2312(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793agb2312\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontGb2312(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontGb2312"}, "u8g2.drawGtfontUtf8": {"body": "u8g2.drawGtfontUtf8(${1:str},${2:size},${3:x},${4:y})", "description": "u8g2.drawGtfontUtf8(str,size,x,y) - \u4f7f\u7528gtfont\u663e\u793aUTF8\u5b57\u7b26\u4e32\n\u4f20\u5165\u503c\uff1a\nstring str \u663e\u793a\u5b57\u7b26\u4e32\nint size \u5b57\u4f53\u5927\u5c0f (\u652f\u630116-192\u53f7\u5927\u5c0f\u5b57\u4f53)\nint x \u6a2a\u5750\u6807\nint y \u7ad6\u5750\u6807\n\u4f8b\u5b50\uff1a\nu8g2.drawGtfontUtf8(\"\u554a\u554a\u554a\",32,0,0)\n", "prefix": "u8g2.drawGtfontUtf8"}, "u8g2.CopyBuffer": {"body": "u8g2.CopyBuffer(${1:buff})", "description": "u8g2.CopyBuffer(buff) - \u83b7\u53d6\u5e95\u5c42\u56fe\u50cf\u7f13\u51b2\u533a\n\u4f20\u5165\u503c\uff1a\nuserdata zbuff\u5b9e\u4f8b,\u7a7a\u95f4\u8981\u5927\u4e8e\u7b49\u4e8e\u5e95\u5c42buff\u7684\u5927\u5c0f\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56debuff\u5927\u5c0f,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u672c\u51fd\u6570\u5728u8g2\u521d\u59cb\u5316\u4e4b\u540e\u624d\u80fd\u8c03\u7528\n\n-- \u83b7\u53d6\u5927\u5c0f\nlocal sz = u8g2.CopyBuffer()\n\n-- \u62f7\u8d1d\u5e95\u5c42buff\nlocal buff = zbuff.create(sz)\nu8g2.CopyBuffer(buff)\n\n", "prefix": "u8g2.CopyBuffer"}, "u8g2.SetPowerSave": {"body": "u8g2.SetPowerSave(${1:is_enable})", "description": "u8g2.SetPowerSave(is_enable) - \u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nboolean \u542f\u7528\u4e0e\u5426. true \u542f\u7528, false\u7981\u7528\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e2023.11.02\u65b0\u589e\n-- \u5f00\u542f\u7701\u7535\nu8g2.SetPowerSave(true)\n-- \u5173\u95ed\u7701\u7535\nu8g2.SetPowerSave(false)\n", "prefix": "u8g2.SetPowerSave"}, "uart.setup": {"body": "uart.setup(${1:id},${2:baud_rate},${3:data_bits},${4:stop_bits},${5:partiy},${6:bit_order},${7:buff_size},${8:rs485_gpio},${9:rs485_level},${10:rs485_delay},${11:debug_enable},${12:error_drop})", "description": "uart.setup(id, baud_rate, data_bits, stop_bits, partiy, bit_order, buff_size, rs485_gpio, rs485_level, rs485_delay, debug_enable, error_drop) - \u914d\u7f6e\u4e32\u53e3\u53c2\u6570\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8, \u6700\u5927\u503c\u53d6\u51b3\u4e8e\u8bbe\u5907\nint \u6ce2\u7279\u7387, \u9ed8\u8ba4115200\uff0c\u53ef\u9009\u62e9\u6ce2\u7279\u7387\u8868:{2000000,921600,460800,230400,115200,57600,38400,19200,9600,4800,2400}\nint \u6570\u636e\u4f4d\uff0c\u9ed8\u8ba4\u4e3a8, \u53ef\u9009 7/8\nint \u505c\u6b62\u4f4d\uff0c\u9ed8\u8ba4\u4e3a1, \u6839\u636e\u5b9e\u9645\u60c5\u51b5\uff0c\u53ef\u4ee5\u67090.5/1/1.5/2\u7b49\nint \u6821\u9a8c\u4f4d\uff0c\u53ef\u9009 uart.None/uart.Even/uart.Odd\nint \u5927\u5c0f\u7aef\uff0c\u9ed8\u8ba4\u5c0f\u7aef uart.LSB, \u53ef\u9009 uart.MSB\nint \u7f13\u51b2\u533a\u5927\u5c0f\uff0c\u9ed8\u8ba4\u503c1024\nint 485\u6a21\u5f0f\u4e0b\u7684\u8f6c\u6362GPIO, \u9ed8\u8ba4\u503c0xffffffff\nint 485\u6a21\u5f0f\u4e0b\u7684rx\u65b9\u5411GPIO\u7684\u7535\u5e73, \u9ed8\u8ba4\u503c0\nint 485\u6a21\u5f0f\u4e0btx\u5411rx\u8f6c\u6362\u7684\u5ef6\u8fdf\u65f6\u95f4\uff0c\u9ed8\u8ba4\u503c12bit\u7684\u65f6\u95f4\uff0c\u5355\u4f4dus, 9600\u6ce2\u7279\u7387\u586b20000\nint \u5f00\u542f\u8c03\u8bd5\u529f\u80fd\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.DEBUG\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\nint \u9047\u5230\u63a5\u6536\u9519\u8bef\u662f\u5426\u653e\u5f03\u7f13\u5b58\u6570\u636e\uff0c\u9ed8\u8ba4\u4f7f\u80fd\uff0c\u586b\u5199uart.ERROR_DROP\u6216\u8005\u975e\u6570\u5b57\u4f7f\u80fd\uff0c\u5176\u4ed6\u503c\u90fd\u662f\u5173\u95ed\uff0c\u76ee\u524d\u53ea\u6709\u79fb\u82af\u5e73\u53f0\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8fd4\u56de0,\u5931\u8d25\u8fd4\u56de\u5176\u4ed6\u503c\n\u4f8b\u5b50\uff1a\n-- \u6700\u5e38\u7528115200 8N1\nuart.setup(1, 115200, 8, 1, uart.NONE)\n-- \u53ef\u4ee5\u7b80\u5199\u4e3a uart.setup(1)\n\n-- 485\u81ea\u52a8\u5207\u6362, \u9009\u53d6GPIO10\u4f5c\u4e3a\u6536\u53d1\u8f6c\u6362\u811a\nuart.setup(1, 115200, 8, 1, uart.NONE, uart.LSB, 1024, 10, 0, 2000)\n-- \u9047\u5230\u63a5\u6536\u9519\u8bef\u4e0d\u629b\u5f03\u7f13\u5b58\u6570\u636e\nuart.setup(1, 115200, 8, 1, uart.NONE, nil, 1024, nil, nil, nil, nil, 0)\n", "prefix": "uart.setup"}, "uart.write": {"body": "uart.write(${1:id},${2:data})", "description": "uart.write(id, data) - \u5199\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring/zbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u5168\u53d1\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u5199\u5165\u53ef\u89c1\u5b57\u7b26\u4e32\nuart.write(1, \"rdy\\r\\n\")\n-- \u5199\u5165\u5341\u516d\u8fdb\u5236\u7684\u6570\u636e\u4e32\nuart.write(1, string.char(0x55,0xAA,0x4B,0x03,0x86))\n", "prefix": "uart.write"}, "uart.read": {"body": "uart.read(${1:id},${2:len})", "description": "uart.read(id, len) - \u8bfb\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nint \u8bfb\u53d6\u957f\u5ea6\nfile/zbuff \u53ef\u9009\uff1a\u6587\u4ef6\u53e5\u67c4\u6216zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u5230\u7684\u6570\u636e / \u4f20\u5165zbuff\u65f6\uff0c\u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.read(1, 16)\n", "prefix": "uart.read"}, "uart.close": {"body": "uart.close(${1:id})", "description": "uart.close(id) - \u5173\u95ed\u4e32\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.close(1)\n", "prefix": "uart.close"}, "uart.on": {"body": "uart.on(${1:id},${2:event},${3:func})", "description": "uart.on(id, event, func) - \u6ce8\u518c\u4e32\u53e3\u4e8b\u4ef6\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nstring \u4e8b\u4ef6\u540d\u79f0\nfunction \u56de\u8c03\u65b9\u6cd5\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nuart.on(1, \"receive\", function(id, len)\n local data = uart.read(id, len)\n log.info(\"uart\", id, len, data)\nend)\n", "prefix": "uart.on"}, "uart.wait485": {"body": "uart.wait485(${1:id})", "description": "uart.wait485(id) - \u7b49\u5f85485\u6a21\u5f0f\u4e0bTX\u5b8c\u6210\uff0cmcu\u4e0d\u652f\u6301\u4e32\u53e3\u53d1\u9001\u79fb\u4f4d\u5bc4\u5b58\u5668\u7a7a\u6216\u8005\u7c7b\u4f3c\u4e2d\u65ad\u65f6\u624d\u9700\u8981\uff0c\u5728sent\u4e8b\u4ef6\u56de\u8c03\u540e\u4f7f\u7528\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u7b49\u5f85\u4e86\u591a\u5c11\u6b21\u5faa\u73af\u624d\u7b49\u5230tx\u5b8c\u6210\uff0c\u7528\u4e8e\u7c97\u52a3\u7684\u89c2\u5bdfdelay\u65f6\u95f4\u662f\u5426\u8db3\u591f\uff0c\u8fd4\u56de\u4e0d\u4e3a0\u8bf4\u660e\u8fd8\u9700\u8981\u653e\u5927delay\n", "prefix": "uart.wait485"}, "uart.exist": {"body": "uart.exist(${1:id})", "description": "uart.exist(id) - \u68c0\u67e5\u4e32\u53e3\u53f7\u662f\u5426\u5b58\u5728\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991, \u5982\u6b64\u7c7b\u63a8\n\u8fd4\u56de\u503c\uff1a\nbool \u5b58\u5728\u8fd4\u56detrue\n", "prefix": "uart.exist"}, "uart.rx": {"body": "uart.rx(${1:id},${2:buff})", "description": "uart.rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u4e32\u53e3\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nuart.rx(1, buff)\n", "prefix": "uart.rx"}, "uart.rxSize": {"body": "uart.rxSize(${1:id})", "description": "uart.rxSize(id) - \u8bfb\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal size = uart.rxSize(1)\n", "prefix": "uart.rxSize"}, "uart.rxClear": {"body": "uart.rxClear(${1:id})", "description": "uart.rxClear(id) - \u6e05\u9664\u4e32\u53e3Rx\u7f13\u5b58\u4e2d\u5269\u4f59\u6570\u636e\u91cf\uff0c\u76ee\u524dair105,air780e\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\n\u4f8b\u5b50\uff1a\nuart.rxClear(1)\n", "prefix": "uart.rxClear"}, "uart.tx": {"body": "uart.tx(${1:id},${2:buff},${3:start},${4:len})", "description": "uart.tx(id, buff, start, len) - buff\u5f62\u5f0f\u5199\u4e32\u53e3,\u7b49\u540c\u4e8ec\u8bed\u8a00uart_tx(uart_id, &buff[start], len);\n\u4f20\u5165\u503c\uff1a\nint \u4e32\u53e3id, uart0\u51990, uart1\u51991\nzbuff \u5f85\u5199\u5165\u7684\u6570\u636e\uff0c\u5982\u679c\u662fzbuff\u4f1a\u4ece\u6307\u9488\u8d77\u59cb\u4f4d\u7f6e\u5f00\u59cb\u8bfb\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nuart.tx(1, buf)\n", "prefix": "uart.tx"}, "uart.createSoft": {"body": "uart.createSoft(${1:tx_pin},${2:tx_hwtimer_id},${3:rx_pin},${4:rx_hwtimer_id},${5:adjust_period})", "description": "uart.createSoft(tx_pin, tx_hwtimer_id, rx_pin, rx_hwtimer_id, adjust_period) - \u8bbe\u7f6e\u8f6f\u4ef6uart\u7684\u786c\u4ef6\u914d\u7f6e\uff0c\u53ea\u6709\u652f\u6301\u786c\u4ef6\u5b9a\u65f6\u5668\u7684SOC\u624d\u80fd\u4f7f\u7528\uff0c\u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e00\u4e2a\uff0c\u6ce2\u7279\u7387\u6839\u636e\u5e73\u53f0\u7684\u8f6f\u786c\u4ef6\u914d\u7f6e\u6709\u4e0d\u540c\u7684\u6781\u9650\uff0c\u5efa\u8bae9600\uff0c\u63a5\u6536\u7f13\u5b58\u4e0d\u8d85\u8fc765535\uff0c\u4e0d\u652f\u6301MSB\uff0c\u652f\u6301485\u81ea\u52a8\u63a7\u5236\u3002\u540e\u7eed\u4ecd\u8981setup\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u53d1\u9001\u5f15\u811a\u7f16\u53f7\nint \u53d1\u9001\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u63a5\u6536\u5f15\u811a\u7f16\u53f7\nint \u63a5\u6536\u7528\u7684\u786c\u4ef6\u5b9a\u65f6\u5668ID\nint \u53d1\u9001\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\nint \u63a5\u6536\u65f6\u5e8f\u8c03\u6574\uff0c\u5355\u4f4d\u662f\u5b9a\u65f6\u5668\u65f6\u949f\u5468\u671f\uff0c\u9ed8\u8ba4\u662f0\uff0c\u9700\u8981\u6839\u636e\u793a\u6ce2\u5668\u6216\u8005\u903b\u8f91\u5206\u6790\u4eea\u8fdb\u884c\u5fae\u8c03\n\u8fd4\u56de\u503c\uff1a\nint \u8f6f\u4ef6uart\u7684id\uff0c\u5982\u679c\u5931\u8d25\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521d\u59cb\u5316\u8f6f\u4ef6uart\nlocal uart_id = uart.createSoft(21, 0, 1, 2) --air780e\u5efa\u8bae\u7528\u5b9a\u65f6\u56680\u548c2\uff0ctx_pin\u6700\u597d\u7528AGPIO\uff0c\u9632\u6b62\u4f11\u7720\u65f6\u8bef\u89e6\u53d1\u5bf9\u7aefRX\n", "prefix": "uart.createSoft"}, "uart.list": {"body": "uart.list(${1:max})", "description": "uart.list(max) - \u83b7\u53d6\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\uff0c\u5f53\u524d\u4ec5\u9650win32\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4256\uff0c\u6700\u591a\u83b7\u53d6\u591a\u5c11\u4e2a\u4e32\u53e3\n\u8fd4\u56de\u503c\uff1a\ntable \u83b7\u53d6\u5230\u7684\u53ef\u7528\u4e32\u53e3\u53f7\u5217\u8868\n", "prefix": "uart.list"}, "usbapp.set_id": {"body": "usbapp.set_id(${1:id},${2:vid},${3:pid})", "description": "usbapp.set_id(id, vid, pid) - USB \u8bbe\u7f6eVID\u548cPID\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint vid \u5c0f\u7aef\u683c\u5f0f\nint pid \u5c0f\u7aef\u683c\u5f0f\n\u4f8b\u5b50\uff1a\nusbapp.set_id(0, 0x1234, 0x5678)\n", "prefix": "usbapp.set_id"}, "usbapp.hid_mode": {"body": "usbapp.hid_mode(${1:id},${2:mode},${3:buff_size})", "description": "usbapp.hid_mode(id, mode, buff_size) - USB HID\u8bbe\u5907\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nint mode\uff0c\u76ee\u524d0\u662f\u952e\u76d8\uff0c1\u662f\u81ea\u5b9a\u4e49\nint buff_size\uff0c\u53ea\u80fd\u662f8,16,32,64\uff0c\u5982\u679c\u662f\u952e\u76d8\u6a21\u5f0f\u6216\u8005\u586b\u4e86\u5176\u4ed6\u503c\uff0c\u81ea\u52a8\u4e3a8\n\u4f8b\u5b50\uff1a\nusbapp.hid_mode(0, 0) -- usb hid\u952e\u76d8\u6a21\u5f0f\nusbapp.hid_mode(0, 1) -- usb hid\u81ea\u5b9a\u4e49\u6a21\u5f0f\uff0c\u7528\u4e8e\u514d\u9a71USB\u4ea4\u4e92\n", "prefix": "usbapp.hid_mode"}, "usbapp.start": {"body": "usbapp.start(${1:id})", "description": "usbapp.start(id) - \u542f\u52a8USB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u542f\u52a8USB\nusbapp.start(0)\n", "prefix": "usbapp.start"}, "usbapp.stop": {"body": "usbapp.stop(${1:id})", "description": "usbapp.stop(id) - \u5173\u95edUSB\u8bbe\u5907\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5173\u95edUSB\nusbapp.stop(0)\n", "prefix": "usbapp.stop"}, "usbapp.vhid_upload": {"body": "usbapp.vhid_upload(${1:id},${2:data})", "description": "usbapp.vhid_upload(id, data) - USB HID\u8bbe\u5907\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring \u6570\u636e. \u6ce8\u610f, HID\u7684\u53ef\u7528\u5b57\u7b26\u662f\u6709\u9650\u5236\u7684, \u57fa\u672c\u4e0a\u53ea\u6709\u53ef\u89c1\u5b57\u7b26\u662f\u652f\u6301\u7684, \u4e0d\u652f\u6301\u7684\u5b57\u7b26\u4f1a\u66ff\u6362\u4e3a\u7a7a\u683c.\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.vhid_upload(0, \"1234\") -- usb hid\u4f1a\u6a21\u62df\u6572\u51fa1234\n", "prefix": "usbapp.vhid_upload"}, "usbapp.hid_tx": {"body": "usbapp.hid_tx(${1:id},${2:data},${3:start},${4:len})", "description": "usbapp.hid_tx(id, data, start, len) - USB HID\u8bbe\u5907\u4e0a\u4f20\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nstring or zbuff \u6ce8\u610f\u6570\u636e\u91cf\u4e0d\u8db3\u65f6\u4f1a\u81ea\u52a8\u586b\u51450\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u8d77\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u53ef\u9009\uff0cdata\u4e3azbuff\u624d\u6709\u6548\uff0c\u8981\u53d1\u9001\u7684\u6570\u636e\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3azbuff\u5185\u6709\u6548\u6570\u636e\uff0c\u6700\u5927\u503c\u4e0d\u8d85\u8fc7zbuff\u7684\u6700\u5927\u7a7a\u95f4\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- HID\u4e0a\u4f20\u6570\u636e\nusbapp.hid_tx(0, \"1234\") -- usb hid\u4e0a\u4f200x31 0x32 0x33 0x34 + N\u4e2a0\n", "prefix": "usbapp.hid_tx"}, "usbapp.hid_rx": {"body": "usbapp.hid_rx(${1:id},${2:buff})", "description": "usbapp.hid_rx(id, buff) - buff\u5f62\u5f0f\u8bfb\u63a5\u6536\u5230\u7684\u6570\u636e\uff0c\u4e00\u6b21\u8bfb\u51fa\u5168\u90e8\u6570\u636e\u5b58\u5165buff\u4e2d\uff0c\u5982\u679cbuff\u7a7a\u95f4\u4e0d\u591f\u4f1a\u81ea\u52a8\u6269\u5c55\uff0c\u76ee\u524d\u53ea\u6709air105\u652f\u6301\u8fd9\u4e2a\u64cd\u4f5c\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\nzbuff zbuff\u5bf9\u8c61\n\u8fd4\u56de\u503c\uff1a\nint \u8fd4\u56de\u8bfb\u5230\u7684\u957f\u5ea6\uff0c\u5e76\u628azbuff\u6307\u9488\u540e\u79fb\n\u4f8b\u5b50\uff1a\nusbapp.hid_rx(0, buff)\n", "prefix": "usbapp.hid_rx"}, "usbapp.vhid_cancel_upload": {"body": "usbapp.vhid_cancel_upload(${1:id})", "description": "usbapp.vhid_cancel_upload(id) - USB HID\u8bbe\u5907\u53d6\u6d88\u4e0a\u4f20\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\n-- \u53d6\u6d88\u4e0a\u4f20\u6570\u636e,\u901a\u5e38\u4e0d\u9700\u8981\nusbapp.vhid_cancel_upload(0)\n", "prefix": "usbapp.vhid_cancel_upload"}, "usbapp.udisk_attach_sdhc": {"body": "usbapp.udisk_attach_sdhc(${1:id})", "description": "usbapp.udisk_attach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_attach_sdhc(0)\n", "prefix": "usbapp.udisk_attach_sdhc"}, "usbapp.udisk_detach_sdhc": {"body": "usbapp.udisk_detach_sdhc(${1:id})", "description": "usbapp.udisk_detach_sdhc(id) - USB U\u76d8\u8bbe\u5907\u53bb\u9664\u6302\u8f7dSDHC\uff0cTF\u5361\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u5907id,\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nusbapp.udisk_detach_sdhc(0)\n", "prefix": "usbapp.udisk_detach_sdhc"}, "w5500.init": {"body": "w5500.init(${1:spiid},${2:speed},${3:cs_pin},${4:irq_pin},${5:rst_pin},${6:link_pin})", "description": "w5500.init(spiid, speed, cs_pin, irq_pin, rst_pin, link_pin) - \u521d\u59cb\u5316w5500\n\u4f20\u5165\u503c\uff1a\nint spi\u901a\u9053\u53f7, \u4f8b\u5982 0, 1, 5, \u6309\u8bbe\u5907\u5b9e\u9645\u60c5\u51b5\u9009\nint spi\u901f\u5ea6, \u53ef\u4ee5\u8bbe\u7f6e\u5230\u5bf9\u5e94SPI\u7684\u6700\u9ad8\u901f\u5ea6\nint cs pin, \u7247\u9009\u811a, \u5bf9\u5e94W5500\u7684SCS\nint irq pin, \u4e2d\u65ad\u811a, \u5bf9\u5e94W5500\u7684INT\nint reset pin, \u590d\u4f4d\u811a, \u5bf9\u5e94W5500\u7684RST\nint link \u72b6\u6001 pin\uff0c\u53ef\u4ee5\u7559\u7a7a\u4e0d\u4f7f\u7528\uff0c\u9ed8\u8ba4\u4e0d\u4f7f\u7528\n\u4f8b\u5b50\uff1a\nw5500.init(spi.SPI_0, 24000000, pin.PB13, pin.PC08, pin.PC09)\n", "prefix": "w5500.init"}, "w5500.config": {"body": "w5500.config(${1:ip},${2:submask},${3:gateway},${4:mac},${5:RTR},${6:RCR},${7:speed})", "description": "w5500.config(ip, submask, gateway, mac, RTR, RCR, speed) - w5500\u914d\u7f6e\u7f51\u7edc\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u9759\u6001ip\u5730\u5740\uff0c\u5982\u679c\u9700\u8981\u7528DHCP\u83b7\u53d6\uff0c\u8bf7\u5199nil\nstring \u5b50\u7f51\u63a9\u7801\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring \u7f51\u5173\uff0c\u5982\u679c\u4f7f\u7528\u52a8\u6001ip\uff0c\u5219\u5ffd\u7565\nstring MAC\uff0c\u5199nil\u5219\u901a\u8fc7MCU\u552f\u4e00\u7801\u81ea\u52a8\u751f\u6210\uff0c\u5982\u679c\u8981\u5199\uff0c\u957f\u5ea6\u5fc5\u987b\u662f6byte\nint \u91cd\u8bd5\u95f4\u9694\u65f6\u95f4\uff0c\u9ed8\u8ba42000\uff0c\u5355\u4f4d100us\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u6700\u5927\u91cd\u8bd5\u6b21\u6570\uff0c\u9ed8\u8ba48\uff0c\u4e0d\u61c2\u7684\u4e0d\u8981\u6539\nint \u901f\u5ea6\u7c7b\u578b\uff0c\u76ee\u524d\u53ea\u67090\u786c\u4ef6\u914d\u7f6e\uff0c1\u81ea\u9002\u5e94\uff0c\u9ed8\u8ba4\u4e3a0\n\u4f8b\u5b50\uff1a\nw5500.config(\"192.168.1.2\", \"255.255.255.0\", \"192.168.1.1\", string.fromHex(\"102a3b4c5d6e\"))\n", "prefix": "w5500.config"}, "w5500.bind": {"body": "w5500.bind(${1:id})", "description": "w5500.bind(id) - \u5c06w5500\u6ce8\u518c\u8fdb\u901a\u7528\u7f51\u7edc\u63a5\u53e3\n\u4f20\u5165\u503c\uff1a\nint \u901a\u7528\u7f51\u7edc\u901a\u9053\u53f7\n\u4f8b\u5b50\uff1a\n-- \u82e5\u4f7f\u7528\u7684\u7248\u672c\u4e0d\u5e26socket\u5e93, \u6539\u6210 network.ETH0\nw5500.bind(socket.ETH0)\n", "prefix": "w5500.bind"}, "w5500.getMac": {"body": "w5500.getMac()", "description": "w5500.getMac() - \u83b7\u53d6w5500\u5f53\u524d\u7684MAC\uff0c\u5fc5\u987b\u5728init\u4e4b\u540e\u7528\uff0c\u5982\u679cconfig\u4e2d\u8bbe\u7f6e\u4e86\u81ea\u5df1\u7684MAC\uff0c\u9700\u8981\u5ef6\u8fdf\u4e00\u70b9\u65f6\u95f4\u518d\u8bfb\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684MAC\n\u4f8b\u5b50\uff1a\nlocal mac = w5500.getMac()\nlog.info(\"w5500 mac\", mac:toHex())\n", "prefix": "w5500.getMac"}, "wdt.init": {"body": "wdt.init(${1:timeout})", "description": "wdt.init(timeout) - \u521d\u59cb\u5316watchdog\u5e76\u9a6c\u4e0a\u542f\u7528.\u5927\u90e8\u5206\u8bbe\u5907\u7684watchdog\u4e00\u65e6\u542f\u7528\u5c31\u65e0\u6cd5\u5173\u95ed.\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(9000)\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.init"}, "wdt.setTimeout": {"body": "wdt.setTimeout(${1:timeout})", "description": "wdt.setTimeout(timeout) - \u90e8\u5206\u8bbe\u5907\u652f\u6301\u91cd\u65b0\u8bbe\u7f6ewatchdog\u8d85\u65f6\u65f6\u957f\n\u4f20\u5165\u503c\uff1a\nint \u8d85\u65f6\u65f6\u957f,\u5355\u4f4d\u4e3a\u6beb\u79d2\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.timerLoopStart(wdt.feed, 3000)\nsys.wait(5000)\nsys.setTimeout(5000)\n", "prefix": "wdt.setTimeout"}, "wdt.feed": {"body": "wdt.feed()", "description": "wdt.feed() - \u5582\u72d7,\u4f7f\u5f97\u8d85\u65f6\u8ba1\u65f6\u590d\u4f4d,\u91cd\u65b0\u8ba1\u65f6\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\n-- \u5b9a\u65f6\u5582\u72d7,\u6216\u8005\u6839\u636e\u4e1a\u52a1\u6309\u9700\u5582\u72d7\nsys.timerLoopStart(wdt.feed, 3000)\n", "prefix": "wdt.feed"}, "wdt.close": {"body": "wdt.close()", "description": "wdt.close() - \u5173\u95edwatchdog,\u901a\u5e38\u4e0d\u88ab\u652f\u6301\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse(\u4f8b\u5982\u5e95\u5c42\u4e0d\u652f\u6301)\n\u4f8b\u5b50\uff1a\nwdt.init(10000)\nsys.wait(9000)\nwdt.close()\n", "prefix": "wdt.close"}, "wsc:debug": {"body": "wsc:debug(${1:onoff})", "description": "wsc:debug(onoff) - \u914d\u7f6e\u662f\u5426\u6253\u5f00debug\u4fe1\u606f\n\u4f20\u5165\u503c\uff1a\nboolean \u662f\u5426\u6253\u5f00debug\u5f00\u5173\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n", "prefix": "wsc:debug"}, "websocket.create": {"body": "websocket.create(${1:adapter},${2:url},${3:keepalive},${4:use_ipv6})", "description": "websocket.create(adapter, url, keepalive, use_ipv6) - websocket\u5ba2\u6237\u7aef\u521b\u5efa\n\u4f20\u5165\u503c\uff1a\nint \u9002\u914d\u5668\u5e8f\u53f7, \u53c2\u8003socket\u5e93\u7684\u5e38\u91cf,\u9ed8\u8ba4\u4e3anil,\u4f1a\u9009\u62e9\u5e73\u53f0\u81ea\u5e26\u7684\u65b9\u5f0f\nstring \u8fde\u63a5\u5b57\u7b26\u4e32,\u53c2\u8003usage\nint \u5fc3\u8df3\u95f4\u9694,\u9ed8\u8ba460\u79d2. 2024.4.28\u65b0\u589e\nboolean \u662f\u5426\u4f7f\u7528ipv6,\u9ed8\u8ba4false. 2024.6.17\u65b0\u589e\n\u8fd4\u56de\u503c\uff1a\nuserdata \u82e5\u6210\u529f\u4f1a\u8fd4\u56dewebsocket\u5ba2\u6237\u7aef\u5b9e\u4f8b,\u5426\u5219\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u666e\u901aTCP\u94fe\u63a5\nwsc = websocket.create(nil,\"ws://air32.cn/abc\")\n-- \u52a0\u5bc6TCP\u94fe\u63a5\nwsc = websocket.create(nil,\"wss://air32.cn/abc\")\n", "prefix": "websocket.create"}, "wsc:on": {"body": "wsc:on(${1:cb})", "description": "wsc:on(cb) - \u6ce8\u518cwebsocket\u56de\u8c03\n\u4f20\u5165\u503c\uff1a\nfunction cb websocket\u56de\u8c03,\u53c2\u6570\u5305\u62ecwebsocket_client, event, data, payload\n\u8fd4\u56de\u503c\uff1a\nnil \u65e0\u8fd4\u56de\u503c\n\u4f8b\u5b50\uff1a\nwsc:on(function(websocket_client, event, data, payload)\n -- \u6253\u5370\u5404\u79cd\u4e8b\u4ef6\n log.info(\"websocket\", \"event\", event, data, payload)\nend)\n--[[\nevent\u7684\u503c\u6709:\n conack \u8fde\u63a5\u670d\u52a1\u5668\u6210\u529f,\u5df2\u7ecf\u6536\u5230websocket\u534f\u8bae\u5934\u90e8\u4fe1\u606f,\u901a\u4fe1\u5df2\u5efa\u7acb\n recv \u6536\u5230\u670d\u52a1\u5668\u4e0b\u53d1\u7684\u4fe1\u606f, data, payload \u4e0d\u4e3anil\n sent send\u51fd\u6570\u53d1\u9001\u7684\u6d88\u606f,\u670d\u52a1\u5668\u5728TCP\u534f\u8bae\u5c42\u5df2\u786e\u8ba4\u6536\u5230\n disconnect \u670d\u52a1\u5668\u8fde\u63a5\u5df2\u65ad\u5f00\n\n\u5176\u4e2d sent/disconnect \u4e8b\u4ef6\u5728 2023.04.01 \u65b0\u589e\n]]\n", "prefix": "wsc:on"}, "wsc:connect": {"body": "wsc:connect()", "description": "wsc:connect() - \u8fde\u63a5\u670d\u52a1\u5668\n\u8fd4\u56de\u503c\uff1a\nboolean \u53d1\u8d77\u6210\u529f\u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u5f00\u59cb\u5efa\u7acb\u8fde\u63a5\nwsc:connect()\n-- \u672c\u51fd\u6570\u4ec5\u4ee3\u8868\u53d1\u8d77\u6210\u529f, \u540e\u7eed\u4ecd\u9700\u6839\u636eready\u51fd\u6570\u5224\u65adwebsocket\u662f\u5426\u8fde\u63a5\u6b63\u5e38\n", "prefix": "wsc:connect"}, "wsc:autoreconn": {"body": "wsc:autoreconn(${1:reconnect},${2:reconnect_time})", "description": "wsc:autoreconn(reconnect, reconnect_time) - \u81ea\u52a8\u91cd\u8fde\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u81ea\u52a8\u91cd\u8fde\nint \u81ea\u52a8\u91cd\u8fde\u5468\u671f \u5355\u4f4dms \u9ed8\u8ba43000ms\n\u4f8b\u5b50\uff1a\nwsc:autoreconn(true)\n", "prefix": "wsc:autoreconn"}, "wsc:send": {"body": "wsc:send(${1:data},${2:fin},${3:opt})", "description": "wsc:send(data, fin, opt) - \u53d1\u5e03\u6d88\u606f\n\u4f20\u5165\u503c\uff1a\nstring \u5f85\u53d1\u9001\u7684\u6570\u636e,\u5fc5\u586b\nint \u662f\u5426\u4e3a\u6700\u540e\u4e00\u5e27,\u9ed8\u8ba41,\u5373\u9a6c\u4e0a\u8bbe\u7f6e\u4e3a\u6700\u540e\u4e00\u5e27, \u4e5f\u5c31\u662f\u5355\u5e27\u53d1\u9001\nint \u64cd\u4f5c\u7801, \u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\u5e270, \u53ef\u90091\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u4e3afalse\u6216\u8005nil\n\u4f8b\u5b50\uff1a\n-- \u7b80\u5355\u53d1\u9001\u6570\u636e\nwsc:send(\"123\")\n-- \u5206\u6bb5\u53d1\u9001\u6570\u636e, \u6700\u540e\u8981\u75281(\u5373FIN\u5e27\u7ed3\u675f)\nwsc:send(\"123\", 0)\nwsc:send(\"456\", 0)\nwsc:send(\"789\", 1)\n", "prefix": "wsc:send"}, "wsc:close": {"body": "wsc:close()", "description": "wsc:close() - websocket\u5ba2\u6237\u7aef\u5173\u95ed(\u5173\u95ed\u540e\u8d44\u6e90\u91ca\u653e\u65e0\u6cd5\u518d\u4f7f\u7528)\n\u4f8b\u5b50\uff1a\nwsc:close()\n", "prefix": "wsc:close"}, "wsc:ready": {"body": "wsc:ready()", "description": "wsc:ready() - websocket\u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\nlocal stat = wsc:ready()\n", "prefix": "wsc:ready"}, "wsc:headers": {"body": "wsc:headers(${1:headers})", "description": "wsc:headers(headers) - \u8bbe\u7f6e\u989d\u5916\u7684headers\n\u4f20\u5165\u503c\uff1a\ntable/string \u53ef\u4ee5\u662ftable,\u4e5f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nbool \u5ba2\u6237\u7aef\u662f\u5426\u5c31\u7eea\n\u4f8b\u5b50\uff1a\n-- table\u5f62\u5f0f\nwsc:headers({\n Auth=\"Basic ABCDEFGG\"\n})\n-- \u5b57\u7b26\u4e32\u5f62\u5f0f\nwsc:headers(\"Auth: Basic ABCDERG\\r\\n\")\n", "prefix": "wsc:headers"}, "wlan.init": {"body": "wlan.init()", "description": "wlan.init() - \u521d\u59cb\u5316\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.init"}, "wlan.setMode": {"body": "wlan.setMode(${1:mode})", "description": "wlan.setMode(mode) - \u8bbe\u7f6ewifi\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint wifi\u6a21\u5f0f\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6e\u4e3aAP\u6a21\u5f0f, \u5e7f\u64adssid, \u63a5\u6536wifi\u5ba2\u6237\u7aef\u7684\u94fe\u63a5\nwlan.setMode(wlan.AP)\n\n-- \u8bbe\u7f6e\u4e3aSTATION\u6a21\u5f0f, \u4e5f\u662f\u521d\u59cb\u5316\u540e\u7684\u9ed8\u8ba4\u6a21\u5f0f\nwlan.setMode(wlan.STATION)\n\n-- \u6df7\u5408\u6a21\u5f0f, \u505aAP\u53c8\u505aSTATION\nwlan.setMode(wlan.APSTA)\n", "prefix": "wlan.setMode"}, "wlan.ready": {"body": "wlan.ready()", "description": "wlan.ready() - \u4f5c\u4e3aSTATION\u65f6,\u662f\u5426\u5df2\u7ecf\u8fde\u63a5\u4e0aAP,\u4e14\u83b7\u53d6IP\u6210\u529f\n\u8fd4\u56de\u503c\uff1a\nbool \u5df2\u7ecf\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n", "prefix": "wlan.ready"}, "wlan.connect": {"body": "wlan.connect(${1:ssid},${2:password},${3:auto_reconnect},${4:bssid})", "description": "wlan.connect(ssid, password, auto_reconnect, bssid) - \u4f5c\u4e3aSTATION\u65f6,\u8fde\u63a5\u5230\u6307\u5b9aAP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684ssid\nstring AP\u7684password,\u53ef\u9009\nint 0\u5173\u95ed\u81ea\u52a8\u91cd\u8fde,1\u5f00\u542f\u81ea\u52a8\u91cd\u8fde.\u5f53\u524d\u5f3a\u5236\u5f00\u542f\u81ea\u52a8\u91cd\u8fde\nstring AP\u7684bssid,\u53ef\u9009,\u5fc5\u987b\u662f6\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u53d1\u8d77\u8fde\u63a5\u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse.\u6ce8\u610f,\u4e0d\u4ee3\u8868\u8fde\u63a5AP\u6210\u529f!!\n\u4f8b\u5b50\uff1a\n\n-- \u666e\u901a\u6a21\u5f0f,\u5e26\u5bc6\u7801\nwlan.connect(\"myap\", \"12345678\")\n-- \u666e\u901a\u6a21\u5f0f,\u4e0d\u5e26\u5bc6\u7801\nwlan.connect(\"myap\")\n-- \u7279\u6b8a\u6a21\u5f0f, \u91cd\u7528\u4e4b\u524d\u7684ssid\u548c\u5bc6\u7801,\u672c\u6b21\u76f4\u63a5\u8fde\u63a5\n-- \u6ce8\u610f, \u524d\u63d0\u662f\u672c\u6b21\u4e0a\u7535\u540e\u5df2\u7ecf\u4f20\u8fc7ssid\u548c\u6216password,\u5426\u5219\u5fc5\u5931\u8d25\nwlan.connect()\n\n-- \u7279\u6b8a\u6a21\u5f0f, \u4f7f\u7528ssid\u548c\u5bc6\u7801,\u672c\u6b21\u8fde\u63a5\u6307\u5b9abssid, 2024.5.7\u65b0\u589e\nlocal bssid = string.fromHex(\"00182946365f\")\nwlan.connect(\"myap\", \"12345678\", 1, bssid)\n", "prefix": "wlan.connect"}, "wlan.disconnect": {"body": "wlan.disconnect()", "description": "wlan.disconnect() - \u4f5c\u4e3aSTATION\u65f6,\u65ad\u5f00AP\n", "prefix": "wlan.disconnect"}, "wlan.scan": {"body": "wlan.scan()", "description": "wlan.scan() - \u626b\u63cfwifi\u9891\u6bb5\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, wlan.scan()\u662f\u5f02\u6b65API,\u542f\u52a8\u626b\u63cf\u540e\u4f1a\u9a6c\u4e0a\u8fd4\u56de\n\n-- wifi\u626b\u63cf\u6210\u529f\u540e, \u4f1a\u6709WLAN_SCAN_DONE\u6d88\u606f, \u8bfb\u53d6\u5373\u53ef\nsys.subscribe(\"WLAN_SCAN_DONE\", function ()\n local results = wlan.scanResult()\n log.info(\"scan\", \"results\", #results)\n for k,v in pairs(results) do\n log.info(\"scan\", v[\"ssid\"], v[\"rssi\"], (v[\"bssid\"]:toHex()))\n end\nend)\n\n-- \u4e0b\u9762\u6f14\u793a\u7684\u662f\u521d\u59cb\u5316wifi\u540e\u5b9a\u65f6\u626b\u63cf,\u8bf7\u6309\u5b9e\u9645\u4e1a\u52a1\u9700\u6c42\u4fee\u6539\nsys.taskInit(function()\n sys.wait(1000)\n wlan.init()\n while 1 do\n wlan.scan()\n sys.wait(15000)\n end\nend)\n", "prefix": "wlan.scan"}, "wlan.scanResult": {"body": "wlan.scanResult()", "description": "wlan.scanResult() - \u83b7\u53d6wifi\u626b\u63cf\u7ed3\u679c\n\u8fd4\u56de\u503c\uff1a\ntable \u626b\u63cf\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7528\u6cd5\u8bf7\u67e5\u9605 wlan.scan() \u51fd\u6570\n", "prefix": "wlan.scanResult"}, "wlan.smartconfig": {"body": "wlan.smartconfig(${1:mode})", "description": "wlan.smartconfig(mode) - \u914d\u7f51\n\u4f20\u5165\u503c\uff1a\nint \u914d\u7f51\u6a21\u5f0f, \u9ed8\u8ba4\u4e3aesptouch, \u82e5\u4f200\u5219\u4e3b\u52a8\u505c\u6b62\u914d\u7f51\n\u8fd4\u56de\u503c\uff1a\nbool \u542f\u52a8\u6210\u529f\u6216\u505c\u6b62\u6210\u529f, \u8fd4\u56detrue, \u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.smartconfig()\nlocal ret, ssid, passwd = sys.waitUntil(\"SC_RESULT\", 180*1000) -- \u6700\u591a\u7b493\u5206\u949f\nlog.info(\"sc\", ret, ssid, passwd)\n-- \u8be6\u7ec6\u7528\u6cd5\u8bf7\u67e5\u770bdemo\n", "prefix": "wlan.smartconfig"}, "wlan.getMac": {"body": "wlan.getMac(${1:tp},${2:hexstr})", "description": "wlan.getMac(tp, hexstr) - \u83b7\u53d6mac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nbool \u662f\u5426\u8f6cHEX\u5b57\u7b26, \u9ed8\u8ba4\u662ftrue,\u5373\u8f93\u51fahex\u5b57\u7b26\u4e32\n\u8fd4\u56de\u503c\uff1a\nstring MAC\u5730\u5740,\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5f62\u5f0f \"AABBCCDDEEFF\" \u6216\u539f\u59cb\u6570\u636e\n", "prefix": "wlan.getMac"}, "wlan.setMac": {"body": "wlan.setMac(${1:tp},${2:mac})", "description": "wlan.setMac(tp, mac) - \u8bbe\u7f6emac\n\u4f20\u5165\u503c\uff1a\nint \u8bbe\u7f6e\u4f55\u79cdmac\u5730\u5740,\u5bf9ESP32\u7cfb\u5217\u6765\u8bf4,\u53ea\u80fd\u8bbe\u7f6eSTA\u7684\u5730\u5740,\u53730\nstring \u5f85\u8bbe\u7f6e\u7684MAC\u5730\u5740,\u957f\u5ea66\u5b57\u8282\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u8bbe\u7f6eMAC\u5730\u5740, 2023-03-01\u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"F01122334455\")\nwlan.setMac(0, mac)\n\n-- \u90e8\u5206\u6a21\u5757\u652f\u6301\u6062\u590d\u9ed8\u8ba4MAC, \u4f8b\u5982esp32\u7cfb\u5217\n-- \u57282023-11-01 \u4e4b\u540e\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u7528\nlocal mac = string.fromHex(\"000000000000\")\nwlan.setMac(0, mac)\n", "prefix": "wlan.setMac"}, "wlan.getIP": {"body": "wlan.getIP()", "description": "wlan.getIP() - \u83b7\u53d6ip,\u4ec5STATION\u6216APSTA\u6a21\u5f0f\u4e0b\u6709\u610f\u4e49\n\u8fd4\u56de\u503c\uff1a\nstring ip\u5730\u5740,\u5f53\u524d\u4ec5\u8fd4\u56deipv4\u5730\u5740,\u4f8b\u5982 \"192.168.1.25\"\n", "prefix": "wlan.getIP"}, "wlan.createAP": {"body": "wlan.createAP(${1:ssid},${2:passwd},${3:gateway},${4:netmask},${5:channel},${6:opts})", "description": "wlan.createAP(ssid, passwd, gateway, netmask, channel, opts) - \u542f\u52a8AP\n\u4f20\u5165\u503c\uff1a\nstring AP\u7684SSID,\u5fc5\u586b\nstring AP\u7684\u5bc6\u7801,\u53ef\u9009\nstring AP\u7684\u7f51\u5173\u5730\u5740, \u9ed8\u8ba4192.168.4.1\nstring AP\u7684\u7f51\u5173\u63a9\u7801, \u9ed8\u8ba4255.255.255.0\nint AP\u5efa\u7acb\u7684\u901a\u9053, \u9ed8\u8ba46\ntable AP\u7684\u914d\u7f6e\u9009\u9879, \u53ef\u9009\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u8c03\u7528\u672cAP\u65f6,\u82e5wifi\u6a21\u5f0f\u4e3aSTATION,\u4f1a\u81ea\u52a8\u5207\u6362\u6210 APSTA\nwlan.createAP(\"luatos1234\", \"12341234\")\n-- \u8bbe\u7f6e\u7f51\u5173IP,\u63a9\u7801, \u901a\u9053, 2023.7.13 \u65b0\u589e, BSP\u672a\u5fc5\u652f\u6301\n-- wlan.createAP(\"luatos1234\", \"12341234\", \"192.168.4.1\", \"255.255.255.0\", 6)\n\n-- opts\u66f4\u591a\u914d\u7f6e\u9879, 2024.3.5\u65b0\u589e\n--[[\n{\n hidden = false, -- \u662f\u5426\u9690\u85cfSSID, \u9ed8\u8ba4false,\u4e0d\u9690\u85cf\n max_conn = 4 -- \u6700\u5927\u5ba2\u6237\u7aef\u6570\u91cf, \u9ed8\u8ba44\n}\n]]\n", "prefix": "wlan.createAP"}, "wlan.stopAP": {"body": "wlan.stopAP()", "description": "wlan.stopAP() - \u5173\u95edAP\u529f\u80fd\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u521b\u5efa\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\nwlan.stopAP()\n", "prefix": "wlan.stopAP"}, "wlan.getInfo": {"body": "wlan.getInfo()", "description": "wlan.getInfo() - \u83b7\u53d6\u4fe1\u606f,\u5982AP\u7684bssid,\u4fe1\u53f7\u5f3a\u5ea6, STA\u8054\u7f51\u540e\u53ef\u83b7\u53d6\n\u8fd4\u56de\u503c\uff1a\ntable \u8be6\u60c5,\u952e\u503c\u5bf9\u5f62\u5f0f\n\u4f8b\u5b50\uff1a\n\nlog.info(\"wlan\", \"info\", json.encode(wlan.getInfo()))\n--[[\n\u5178\u578b\u8f93\u51fa\n{\n \"bssid\" : \"xxxxxx\",\n \"rssi\" : -89,\n \"gw\" : \"192.168.1.1\"\n}\n]]\n", "prefix": "wlan.getInfo"}, "wlan.powerSave": {"body": "wlan.powerSave(${1:mode})", "description": "wlan.powerSave(mode) - \u8bfb\u53d6\u6216\u8bbe\u7f6e\u7701\u7535\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nint \u7701\u7535\u6a21\u5f0f,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e, \u4f8b\u5982wlan.PS_NONE\n\u8fd4\u56de\u503c\uff1a\nint \u5f53\u524d\u7701\u7535\u6a21\u5f0f/\u8bbe\u7f6e\u540e\u7684\u7701\u7535\u6a21\u5f0f\n\u4f8b\u5b50\uff1a\n-- \u8bf7\u67e5\u9605\u5e38\u91cf\u8868 PS_NONE/PS_MIN_MODEM/PS_MAX_MODEM\nlog.info(\"wlan\", \"PS\", wlan.powerSave(wlan.PS_NONE))\n-- \u672cAPI\u4e8e 2023.03.31 \u65b0\u589e\n", "prefix": "wlan.powerSave"}, "wlan.hostname": {"body": "wlan.hostname(${1:new_name})", "description": "wlan.hostname(new_name) - \u8bfb\u53d6\u6216\u8bbe\u7f6eHostname\n\u4f20\u5165\u503c\uff1a\nstring \u65b0\u7684hostname,\u53ef\u9009, \u4f20\u5165\u5c31\u662f\u8bbe\u7f6e\n\u8fd4\u56de\u503c\uff1a\nstring \u5f53\u524d\u7684hostname\u6216\u8005\u8bbe\u7f6e\u540e\u7684hostname\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.07.23 \u65b0\u589e\n-- \u672c\u51fd\u6570\u5e94\u8be5\u5728wlan.init\u4e4b\u524d\u8bbe\u7f6e\u597d, \u6700\u665a\u5e94\u65e9\u4e8ewlan.connect\n-- hostname\u7684\u9ed8\u8ba4\u503c\u662f \"LUATOS_\" + \u8bbe\u5907\u7684MAC\u503c\n-- \u4f8b\u5982: LUATOS_0022EECC2399\n\nwlan.hostname(\"\u6211\u7684wifi\u7269\u8054\u7f51\u8bbe\u5907\")\n", "prefix": "wlan.hostname"}, "wlan.staIp": {"body": "wlan.staIp(${1:dhcp_enable},${2:ip},${3:netmask},${4:gateway})", "description": "wlan.staIp(dhcp_enable, ip, netmask, gateway) - \u8bbe\u7f6eStation\u6a21\u5f0f\u4e0b\u7684IP\u83b7\u53d6\u6a21\u5f0f\n\u4f20\u5165\u503c\uff1a\nbool \u662f\u5426\u542f\u7528DHCP,\u9ed8\u8ba4\u662ftrue\nstring \u672c\u673aIP\u5730\u5740,\u4f8b\u5982192.168.2.200, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u63a9\u7801,\u4f8b\u5982255.255.255.0, \u7981\u7528DHCP\u65f6\u5fc5\u586b\nstring \u672c\u673aIP\u7f51\u5173,\u4f8b\u5982192.168.2.1, \u7981\u7528DHCP\u65f6\u5fc5\u586b\n\u8fd4\u56de\u503c\uff1a\nbool \u6210\u529f\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse\n\u4f8b\u5b50\uff1a\n-- \u672cAPI\u4e8e 2023.10.06 \u65b0\u589e\n-- \u672c\u51fd\u6570\u9700\u8981\u5728wlan.init\u4e4b\u540e\u624d\u5141\u8bb8\u8c03\u7528\n\n-- \u542f\u7528DHCP, \u9ed8\u8ba4\u4e5f\u662f\u542f\u7528DHCP,\u8fd9\u91cc\u662f\u6f14\u793aAPI\u4f7f\u7528\nwlan.staIp(true)\n-- \u7981\u7528DHCP,\u81ea\u884c\u8bbe\u7f6eIP/\u63a9\u7801/\u7f51\u5173\nwlan.staIp(false, \"192.168.2.200\", \"255.255.255.0\", \"192.168.2.1\")\n", "prefix": "wlan.staIp"}, "xxtea.encrypt": {"body": "xxtea.encrypt(${1:data},${2:key})", "description": "xxtea.encrypt(data, key) - \u52a0\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u52a0\u5bc6\u7684\u6570\u636e\nstring key \u52a0\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u52a0\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.encrypt"}, "xxtea.decrypt": {"body": "xxtea.decrypt(${1:data},${2:key})", "description": "xxtea.decrypt(data, key) - \u89e3\u5bc6\n\u4f20\u5165\u503c\uff1a\nstring data \u5f85\u89e3\u5bc6\u7684\u6570\u636e\nstring key \u89e3\u5bc6\u7528\u7684\u5bc6\u94a5\n\u8fd4\u56de\u503c\uff1a\nstring \u89e3\u5bc6\u540e\u7684\u6570\u636e, \u5931\u8d25\u8fd4\u56denil\n", "prefix": "xxtea.decrypt"}, "ymodem.create": {"body": "ymodem.create(${1:dir_path},${2:file_path})", "description": "ymodem.create(dir_path,file_path) - \u521b\u5efa\u4e00\u4e2aymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nstring \u4fdd\u5b58\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\"/\"\nstring \u5f3a\u5236\u4fdd\u5b58\u7684\u7edd\u5bf9\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f\u7a7a\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86\uff0c\u5c31\u4f1a\u76f4\u63a5\u4fdd\u5b58\u5728\u8be5\u6587\u4ef6\u4e2d\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue, \u5931\u8d25false\n\u4f8b\u5b50\uff1a\nlocal handler = ymodem.create(\"/\")\n", "prefix": "ymodem.create"}, "ymodem.receive": {"body": "ymodem.receive(${1:handler},${2:data})", "description": "ymodem.receive(handler, data) - ymodem\u63a5\u6536\u6587\u4ef6\u6570\u636e\u5e76\u4fdd\u5b58\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\nzbuff/string \u8f93\u5165\u7684\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nboolean \u6210\u529ftrue\uff0c\u5931\u8d25false\nint ack\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\nint flag\u503c\uff0c\u9700\u8981\u901a\u8fc7\u4e32\u53e3/\u7f51\u7edc\u7b49\u9014\u5f84\u8fd4\u56de\u53d1\u9001\u65b9\uff0c\u5982\u679c\u6709ack\u503c\u5219\u4e0d\u53d1\u9001flag\nboolean, \u4e00\u4e2a\u6587\u4ef6\u63a5\u6536\u5b8c\u6210true\uff0c\u4f20\u8f93\u4e2dfalse\nboolean, \u6574\u4e2a\u4f20\u8f93\u5b8c\u6210true \u5426\u5219false\n\u4f8b\u5b50\uff1a\n-- \u6ce8\u610f, \u6570\u636e\u6765\u6e90\u4e0d\u9650, \u901a\u5e38\u662fuart.read\u5f97\u5230data\nno_error,ack,flag,file_done,all_done = ymodem.receive(handler, data)\n", "prefix": "ymodem.receive"}, "ymodem.reset": {"body": "ymodem.reset(${1:handler})", "description": "ymodem.reset(handler) - \u91cd\u7f6eymodem\u5904\u7406\u8fc7\u7a0b\n\u4f20\u5165\u503c\uff1a\nuserdata ymodem\u5904\u7406\u53e5\u67c4\n\u4f8b\u5b50\uff1a\n-- \u6062\u590d\u5230\u521d\u59cb\u72b6\u6001\uff0c\u4e00\u822c\u7528\u4e8e\u63a5\u6536\u51fa\u9519\u540e\u91cd\u7f6e\uff0c\u4ece\u800c\u8fdb\u884c\u4e0b\u4e00\u6b21\u63a5\u6536\nymodem.reset(handler)\n", "prefix": "ymodem.reset"}, "ymodem.release": {"body": "ymodem.release(${1:handler})", "description": "ymodem.release(handler) - \u91ca\u653eymodem\u5904\u7406\u53e5\u67c4\n\u4f20\u5165\u503c\uff1a\nuserdata handler\n\u4f8b\u5b50\uff1a\nymodem.release(handler)\n", "prefix": "ymodem.release"}, "zbuff.create": {"body": "zbuff.create(${1:length},${2:data},${3:type})", "description": "zbuff.create(length,data,type) - \u521b\u5efazbuff\n\u4f20\u5165\u503c\uff1a\nint \u5b57\u8282\u6570\nany \u53ef\u9009\u53c2\u6570\uff0cnumber\u65f6\u4e3a\u586b\u5145\u6570\u636e\uff0cstring\u65f6\u4e3a\u586b\u5145\u5b57\u7b26\u4e32\nnumber \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n\u8fd4\u56de\u503c\uff1a\nobject zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create(1024) -- \u7a7a\u767d\u7684\nlocal buff = zbuff.create(1024, 0x33) --\u521b\u5efa\u4e00\u4e2a\u521d\u503c\u5168\u4e3a0x33\u7684\u5185\u5b58\u533a\u57df\nlocal buff = zbuff.create(1024, \"123321456654\") -- \u521b\u5efa\uff0c\u5e76\u586b\u5145\u4e00\u4e2a\u5df2\u6709\u5b57\u7b26\u4e32\u7684\u5185\u5bb9\n\n-- \u521b\u5efaframebuff\u7528\u7684zbuff\n-- zbuff.create({width,height,bit},data,type)\n-- table \u5bbd\u5ea6\u3001\u9ad8\u5ea6\u3001\u8272\u4f4d\u6df1\u5ea6\n@int \u53ef\u9009\u53c2\u6570\uff0c\u586b\u5145\u6570\u636e\n@number \u53ef\u9009\u53c2\u6570\uff0c\u5185\u5b58\u7c7b\u578b\uff0c\u53ef\u9009\uff1azbuff.HEAP_SRAM(\u5185\u90e8sram,\u9ed8\u8ba4) zbuff.HEAP_PSRAM(\u5916\u90e8psram) zbuff.HEAP_AUTO(\u81ea\u52a8\u7533\u8bf7,\u5982\u5b58\u5728psram\u5219\u5728psram\u8fdb\u884c\u7533\u8bf7,\u5982\u4e0d\u5b58\u5728\u6216\u5931\u8d25\u5219\u5728sram\u8fdb\u884c\u7533\u8bf7) \u6ce8\u610f:\u6b64\u9879\u4e0e\u786c\u4ef6\u652f\u6301\u6709\u5173\n@return object zbuff\u5bf9\u8c61\uff0c\u5982\u679c\u521b\u5efa\u5931\u8d25\u4f1a\u8fd4\u56denil\n@usage\n-- \u521b\u5efazbuff\nlocal buff = zbuff.create({128,160,16})--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\nlocal buff = zbuff.create({128,160,16},0xf800)--\u521b\u5efa\u4e00\u4e2a128*160\u7684framebuff\uff0c\u521d\u59cb\u72b6\u6001\u7ea2\u8272\n", "prefix": "zbuff.create"}, "buff:write": {"body": "buff:write(${1:para},${2:...})", "description": "buff:write(para,...) - zbuff\u5199\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal len = buff:write(\"123\") -- \u5199\u5165\u6570\u636e, \u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\uff0c\u8fd4\u56de\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\nlocal len = buff:write(0x1a,0x30,0x31,0x32,0x00,0x01) -- \u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:write"}, "buff:read": {"body": "buff:read(${1:length})", "description": "buff:read(length) - zbuff\u8bfb\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8bfb\u53d6buff\u4e2d\u7684\u5b57\u8282\u6570\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u53d6\u7ed3\u679c\n\u4f8b\u5b50\uff1a\n-- \u7c7bfile\u7684\u8bfb\u5199\u64cd\u4f5c\nlocal str = buff:read(3)\n", "prefix": "buff:read"}, "buff:clear": {"body": "buff:clear(${1:num})", "description": "buff:clear(num) - zbuff\u6e05\u7a7a\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\uff0c\u4e0d\u4f1a\u6539\u53d8buff\u6307\u9488\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:clear(0)\n", "prefix": "buff:clear"}, "buff:seek": {"body": "buff:seek(${1:base},${2:offset})", "description": "buff:seek(base,offset) - zbuff\u8bbe\u7f6e\u5149\u6807\u4f4d\u7f6e\uff08\u53ef\u80fd\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u6709\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u88ab\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\uff09\n\u4f20\u5165\u503c\uff1a\nint \u504f\u79fb\u957f\u5ea6\nint where, \u57fa\u70b9\uff0c\u9ed8\u8ba4zbuff.SEEK_SET\u3002zbuff.SEEK_SET: \u57fa\u70b9\u4e3a 0 \uff08\u6587\u4ef6\u5f00\u5934\uff09\uff0czbuff.SEEK_CUR: \u57fa\u70b9\u4e3a\u5f53\u524d\u4f4d\u7f6e\uff0czbuff.SEEK_END: \u57fa\u70b9\u4e3a\u6587\u4ef6\u5c3e\n\u8fd4\u56de\u503c\uff1a\nint \u8bbe\u7f6e\u5149\u6807\u540e\u4ecebuff\u5f00\u5934\u8ba1\u7b97\u8d77\u7684\u5149\u6807\u7684\u4f4d\u7f6e\n\u4f8b\u5b50\uff1a\nbuff:seek(0) -- \u628a\u5149\u6807\u8bbe\u7f6e\u5230\u6307\u5b9a\u4f4d\u7f6e\nbuff:seek(5,zbuff.SEEK_CUR)\nbuff:seek(-3,zbuff.SEEK_END)\n", "prefix": "buff:seek"}, "buff:pack": {"body": "buff:pack(${1:format},${2:val1},${3:val2},${4:...})", "description": "buff:pack(format,val1, val2,...) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8f6c\u5316\uff0c\u5e76\u5199\u5165\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u540e\u9762\u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0b\u9762\u7684\u4f8b\u5b50\uff09\nval \u4f20\u5165\u7684\u6570\u636e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u5199\u5165\u7684\u6570\u636e\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nbuff:pack(\">IIHA\", 0x1234, 0x4567, 0x12,\"abcdefg\") -- \u6309\u683c\u5f0f\u5199\u5165\u51e0\u4e2a\u6570\u636e\n-- A string\n-- f float\n-- d double\n-- n Lua number\n-- c char\n-- b byte / unsignen char\n-- h short\n-- H unsigned short\n-- i int\n-- I unsigned int\n-- l long\n-- L unsigned long\n-- < \u5c0f\u7aef\n-- > \u5927\u7aef\n-- = \u9ed8\u8ba4\u5927\u5c0f\u7aef\n", "prefix": "buff:pack"}, "buff:unpack": {"body": "buff:unpack(${1:format})", "description": "buff:unpack(format) - \u5c06\u4e00\u7cfb\u5217\u6570\u636e\u6309\u7167\u683c\u5f0f\u5b57\u7b26\u8bfb\u53d6\u51fa\u6765\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nstring \u6570\u636e\u7684\u683c\u5f0f\uff08\u7b26\u53f7\u542b\u4e49\u89c1\u4e0a\u9762pack\u63a5\u53e3\u7684\u4f8b\u5b50\uff09\n\u8fd4\u56de\u503c\uff1a\nint \u6210\u529f\u8bfb\u53d6\u7684\u6570\u636e\u5b57\u8282\u957f\u5ea6\nany \u6309\u683c\u5f0f\u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal cnt,a,b,c,s = buff:unpack(\">IIHA10\") -- \u6309\u683c\u5f0f\u8bfb\u53d6\u51e0\u4e2a\u6570\u636e\n--\u5982\u679c\u5168\u90e8\u6210\u529f\u8bfb\u53d6\uff0ccnt\u5c31\u662f4+4+2+10=20\n", "prefix": "buff:unpack"}, "buff:read\u7c7b\u578b": {"body": "buff:read\u7c7b\u578b()", "description": "buff:read\u7c7b\u578b() - \u8bfb\u53d6\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\n\u6ce8\u91ca \u8bfb\u53d6\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u8bfb\u53d6\u7684\u6570\u636e\uff0c\u5982\u679c\u8d8a\u754c\u5219\u4e3anil\n\u4f8b\u5b50\uff1a\nlocal data = buff:readI8()\nlocal data = buff:readU32()\n", "prefix": "buff:read\u7c7b\u578b"}, "buff:write\u7c7b\u578b": {"body": "buff:write\u7c7b\u578b()", "description": "buff:write\u7c7b\u578b() - \u5199\u5165\u4e00\u4e2a\u6307\u5b9a\u7c7b\u578b\u7684\u6570\u636e\uff08\u4ece\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u5f00\u59cb\uff1b\u6267\u884c\u540e\u6307\u9488\u4f1a\u5411\u540e\u79fb\u52a8\uff09\n\u4f20\u5165\u503c\uff1a\nnumber \u5f85\u5199\u5165\u7684\u6570\u636e\n\u6ce8\u91ca \u5199\u5165\u7c7b\u578b\u53ef\u4e3a\uff1aI8\u3001U8\u3001I16\u3001U16\u3001I32\u3001U32\u3001I64\u3001U64\u3001F32\u3001F64\n\u8fd4\u56de\u503c\uff1a\nnumber \u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:writeI8(10)\nlocal len = buff:writeU32(1024)\n", "prefix": "buff:write\u7c7b\u578b"}, "buff:toStr": {"body": "buff:toStr(${1:offset},${2:length})", "description": "buff:toStr(offset,length) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea6\u53d6\u51fa\u6570\u636e\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09,\u9ed8\u8ba4\u503c\u4e5f\u662f0\nint \u6570\u636e\u7684\u957f\u5ea6,\u9ed8\u8ba4\u662f\u5168\u90e8\u6570\u636e\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:toStr(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\nlocal s = buff:toStr() -- \u53d6\u51fa\u6574\u4e2azbuff\u7684\u6570\u636e\nlocal s = buff:toStr(0, buff:used()) -- \u53d6\u51fa\u5df2\u4f7f\u7528\u7684\u90e8\u5206, \u4e0ebuff:query()\u4e00\u6837\n", "prefix": "buff:toStr"}, "buff:len": {"body": "buff:len()", "description": "buff:len() - \u83b7\u53d6zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u8fd4\u56de\u503c\uff1a\nint zbuff\u5bf9\u8c61\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlen = buff:len()\nlen = #buff\n", "prefix": "buff:len"}, "buff:setFrameBuffer": {"body": "buff:setFrameBuffer(${1:width},${2:height},${3:bit},${4:color})", "description": "buff:setFrameBuffer(width,height,bit,color) - \u8bbe\u7f6ebuff\u5bf9\u8c61\u7684FrameBuffer\u5c5e\u6027\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint FrameBuffer\u7684\u5bbd\u5ea6\nint FrameBuffer\u7684\u9ad8\u5ea6\nint FrameBuffer\u7684\u8272\u4f4d\u6df1\u5ea6\nint FrameBuffer\u7684\u521d\u59cb\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nbool \u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nresult = buff:setFrameBuffer(320,240,16,0xffff)\n", "prefix": "buff:setFrameBuffer"}, "buff:pixel": {"body": "buff:pixel(${1:x},${2:y},${3:color})", "description": "buff:pixel(x,y,color) - \u8bbe\u7f6e\u6216\u83b7\u53d6FrameBuffer\u67d0\u4e2a\u50cf\u7d20\u70b9\u7684\u989c\u8272\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u989c\u8272\uff0c\u5982\u679c\u7559\u7a7a\u5219\u8868\u793a\u83b7\u53d6\u8be5\u4f4d\u7f6e\u7684\u989c\u8272\n\u8fd4\u56de\u503c\uff1a\nany \u8bbe\u7f6e\u989c\u8272\u65f6\uff0c\u8bbe\u7f6e\u6210\u529f\u4f1a\u8fd4\u56detrue\uff1b\u8bfb\u53d6\u989c\u8272\u65f6\uff0c\u8fd4\u56de\u989c\u8272\u7684\u503c\uff0c\u8bfb\u53d6\u5931\u8d25\u8fd4\u56denil\n\u4f8b\u5b50\uff1a\nrerult = buff:pixel(0,3,0)\ncolor = buff:pixel(0,3)\n", "prefix": "buff:pixel"}, "buff:drawLine": {"body": "buff:drawLine(${1:x1},${2:y1},${3:x2},${4:y2},${5:color})", "description": "buff:drawLine(x1,y1,x2,y2,color) - \u753b\u4e00\u6761\u7ebf\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawLine(0,0,2,3,0xffff)\n", "prefix": "buff:drawLine"}, "buff:drawRect": {"body": "buff:drawRect(${1:x1},${2:y1},${3:x2},${4:y2},${5:color},${6:fill})", "description": "buff:drawRect(x1,y1,x2,y2,color,fill) - \u753b\u4e00\u4e2a\u77e9\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u8d77\u59cb\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint \u7ed3\u675f\u5750\u6807\u70b9\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u53ef\u9009\uff0c\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawRect(0,0,2,3,0xffff)\n", "prefix": "buff:drawRect"}, "buff:drawCircle": {"body": "buff:drawCircle(${1:x},${2:y},${3:r},${4:color},${5:fill})", "description": "buff:drawCircle(x,y,r,color,fill) - \u753b\u4e00\u4e2a\u5706\u5f62\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint **\u5706\u5fc3**\u4e0e\u6700\u5de6\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u5bbd\u5ea6-1\nint **\u5706\u5fc3**\u4e0e\u6700\u4e0a\u8fb9\u7684\u8ddd\u79bb\uff0c\u8303\u56f4\u662f0~\u9ad8\u5ea6-1\nint \u5706\u7684\u534a\u5f84\nint \u53ef\u9009\uff0c\u5706\u7684\u989c\u8272\uff0c\u9ed8\u8ba4\u4e3a0\nbool \u53ef\u9009\uff0c\u662f\u5426\u5728\u5185\u90e8\u586b\u5145\uff0c\u9ed8\u8ba4nil\n\u8fd4\u56de\u503c\uff1a\nbool \u753b\u6210\u529f\u4f1a\u8fd4\u56detrue\n\u4f8b\u5b50\uff1a\nrerult = buff:drawCircle(15,5,3,0xC)\nrerult = buff:drawCircle(15,5,3,0xC,true)\n", "prefix": "buff:drawCircle"}, "buff[n": {"body": "buff[n]", "description": "buff[n] - \u4ee5\u4e0b\u6807\u5f62\u5f0f\u8fdb\u884c\u6570\u636e\u8bfb\u5199\uff08\u4e0e\u5f53\u524d\u6307\u9488\u4f4d\u7f6e\u65e0\u5173\uff1b\u6267\u884c\u540e\u6307\u9488\u4f4d\u7f6e\u4e0d\u53d8\uff09\n\u4f20\u5165\u503c\uff1a\nint \u7b2c\u51e0\u4e2a\u6570\u636e\uff0c\u4ee50\u5f00\u59cb\u7684\u4e0b\u6807\uff08C\u6807\u51c6\uff09\n\u8fd4\u56de\u503c\uff1a\nnumber \u8be5\u4f4d\u7f6e\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nbuff[0] = 0xc8\nlocal data = buff[0]\n", "prefix": "buff[n"}, "buff:free": {"body": "buff:free()", "description": "buff:free() - \u91ca\u653ezbuff\u6240\u7533\u8bf7\u5185\u5b58 \u6ce8\u610f\uff1agc\u65f6\u4f1a\u81ea\u52a8\u91ca\u653ezbuff\u4ee5\u53cazbuff\u6240\u7533\u8bf7\u5185\u5b58\uff0c\u6240\u4ee5\u901a\u5e38\u65e0\u9700\u8c03\u7528\u6b64\u51fd\u6570\uff0c\u8c03\u7528\u524d\u8bf7\u786e\u8ba4\u60a8\u5df2\u6e05\u695a\u6b64\u51fd\u6570\u7528\u5904\uff01\u8c03\u7528\u6b64\u51fd\u6570\u5e76\u4e0d\u4f1a\u91ca\u653e\u6389zbuff\uff0c\u4ec5\u4f1a\u91ca\u653e\u6389zbuff\u6240\u7533\u8bf7\u7684\u5185\u5b58\uff0czbuff\u9700\u7b49gc\u65f6\u81ea\u52a8\u91ca\u653e\uff01\uff01\uff01\n\u4f8b\u5b50\uff1a\nbuff:free()\n", "prefix": "buff:free"}, "buff:resize": {"body": "buff:resize(${1:n})", "description": "buff:resize(n) - \u8c03\u6574zbuff\u5b9e\u9645\u5206\u914d\u7a7a\u95f4\u7684\u5927\u5c0f\uff0c\u7c7b\u4f3c\u4e8erealloc\u7684\u6548\u679c\uff0cnew = realloc(old, n)\uff0c\u53ef\u4ee5\u6269\u5927\u6216\u8005\u7f29\u5c0f\uff08\u5982\u679c\u7f29\u5c0f\u540elen\u5c0f\u4e8e\u4e86used\uff0c\u90a3\u4e48used=\u65b0len\uff09\n\u4f20\u5165\u503c\uff1a\nint \u65b0\u7a7a\u95f4\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:resize(20)\n", "prefix": "buff:resize"}, "buff:copy": {"body": "buff:copy(${1:start},${2:para},${3:...})", "description": "buff:copy(start, para,...) - zbuff\u52a8\u6001\u5199\u6570\u636e\uff0c\u7c7b\u4f3c\u4e8ememcpy\u6548\u679c\uff0c\u5f53\u539f\u6709\u7a7a\u95f4\u4e0d\u8db3\u65f6\u52a8\u6001\u6269\u5927\u7a7a\u95f4\n\u4f20\u5165\u503c\uff1a\nint \u5199\u5165buff\u7684\u8d77\u59cb\u4f4d\u7f6e\uff0c\u5982\u679c\u4e0d\u4e3a\u6570\u5b57\uff0c\u5219\u4e3abuff\u7684used\uff0c\u5982\u679c\u5c0f\u4e8e0\uff0c\u5219\u4eceused\u5f80\u524d\u6570\uff0c-1 = used - 1\nany \u5199\u5165buff\u7684\u6570\u636e\uff0cstring\u6216zbuff\u8005\u65f6\u4e3a\u4e00\u4e2a\u53c2\u6570\uff0cnumber\u65f6\u53ef\u4e3a\u591a\u4e2a\u53c2\u6570\n\u8fd4\u56de\u503c\uff1a\nnumber \u6570\u636e\u6210\u529f\u5199\u5165\u7684\u957f\u5ea6\n\u4f8b\u5b50\uff1a\nlocal len = buff:copy(nil, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[used], \"123\", 3) used+= 3 \u4ecebuff\u5f00\u59cb\u5199\u5165\u6570\u636e,\u6307\u9488\u76f8\u5e94\u5730\u5f80\u540e\u79fb\u52a8\nlocal len = buff:copy(0, \"123\") -- \u7c7b\u4f3c\u4e8ememcpy(&buff[0], \"123\", 3) if (used < 3) used = 3 \u4ece\u4f4d\u7f6e0\u5199\u5165\u6570\u636e,\u6307\u9488\u6709\u53ef\u80fd\u4f1a\u79fb\u52a8\nlocal len = buff:copy(2, 0x1a,0x30,0x31,0x32,0x00,0x01) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[2], [0x1a,0x30,0x31,0x32,0x00,0x01], 6) if (used < (2+6)) used = (2+6)\u4ece\u4f4d\u7f6e2\u5f00\u59cb\uff0c\u6309\u6570\u503c\u5199\u5165\u591a\u4e2a\u5b57\u8282\u6570\u636e\nlocal len = buff:copy(9, buff2) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[9], &buff2[0], buff2\u7684used) if (used < (9+buff2\u7684used)) used = (9+buff2\u7684used) \u4ece\u4f4d\u7f6e9\u5f00\u59cb\uff0c\u5408\u5e76\u5165buff2\u91cc0~used\u7684\u5185\u5bb9\nlocal len = buff:copy(5, buff2, 10, 1024) -- \u7c7b\u4f3c\u4e8ememcpy(&buff[5], &buff2[10], 1024) if (used < (5+1024)) used = (5+1024)\n", "prefix": "buff:copy"}, "buff:used": {"body": "buff:used()", "description": "buff:used() - \u83b7\u53d6zbuff\u91cc\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\u5230\u9996\u5730\u5740\u7684\u504f\u79fb\u91cf\uff0c\u6765\u8868\u793azbuff\u5185\u5df2\u6709\u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\uff0c\u6ce8\u610f\u8fd9\u4e2a\u4e0d\u540c\u4e8e\u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\uff0c\u7531\u4e8eseek()\u4f1a\u6539\u53d8\u6700\u540e\u4e00\u4e2a\u6570\u636e\u4f4d\u7f6e\u6307\u9488\uff0c\u56e0\u6b64\u4e5f\u4f1a\u5f71\u54cd\u5230used()\u8fd4\u56de\u503c\u3002\n\u8fd4\u56de\u503c\uff1a\nint \u6709\u6548\u6570\u636e\u91cf\u5927\u5c0f\n\u4f8b\u5b50\uff1a\nbuff:used()\n", "prefix": "buff:used"}, "buff:del": {"body": "buff:del(${1:offset},${2:length})", "description": "buff:del(offset,length) - \u5220\u9664zbuff 0~used\u8303\u56f4\u5185\u7684\u4e00\u6bb5\u6570\u636e\uff0c\u6ce8\u610f\u53ea\u662f\u6539\u53d8\u4e86used\u7684\u503c\uff0c\u5e76\u4e0d\u662f\u771f\u7684\u5728ram\u91cc\u53bb\u6e05\u9664\u6389\u6570\u636e\n\u4f20\u5165\u503c\uff1a\nint \u8d77\u59cb\u4f4d\u7f6estart, \u9ed8\u8ba40\uff0c\u5982\u679c<0\u5219\u4eceused\u5f80\u524d\u6570\uff0c\u6bd4\u5982 -1 \u90a3\u4e48start= used - 1\nint \u957f\u5ea6del_len\uff0c\u9ed8\u8ba4\u4e3aused\uff0c\u5982\u679cstart + del_len\u6570\u503c\u5927\u4e8eused\uff0c\u4f1a\u5f3a\u5236\u8c03\u6574del_len = used - start\n\u4f8b\u5b50\uff1a\nbuff:del(1,4) --\u4ece\u4f4d\u7f6e1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\nbuff:del(-1,4) --\u4ece\u4f4d\u7f6eused-1\u5f00\u59cb\u5220\u96644\u4e2a\u5b57\u8282\u6570\u636e\uff0c\u4f46\u662f\u8fd9\u80af\u5b9a\u4f1a\u8d85\u8fc7used\uff0c\u6240\u4ee5del_len\u4f1a\u8c03\u6574\u4e3a1\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u5220\u6389\u4e86\u6700\u540e\u4e00\u4e2a\u5b57\u8282\n", "prefix": "buff:del"}, "buff:query": {"body": "buff:query(${1:offset},${2:length},${3:isbigend},${4:issigned},${5:isfloat})", "description": "buff:query(offset,length,isbigend,issigned,isfloat) - \u6309\u8d77\u59cb\u4f4d\u7f6e\u548c\u957f\u5ea60~used\u8303\u56f4\u5185\u53d6\u51fa\u6570\u636e\uff0c\u5982\u679c\u662f1,2,4,8\u5b57\u8282\uff0c\u6839\u636e\u540e\u7eed\u53c2\u6570\u8f6c\u6362\u6210\u6d6e\u70b9\u6216\u8005\u6574\u5f62\n\u4f20\u5165\u503c\uff1a\nint \u6570\u636e\u7684\u8d77\u59cb\u4f4d\u7f6e\uff08\u8d77\u59cb\u4f4d\u7f6e\u4e3a0\uff09\nint \u6570\u636e\u7684\u957f\u5ea6\nboolean \u662f\u5426\u662f\u5927\u7aef\u683c\u5f0f\uff0c\u5982\u679c\u4e3anil\uff0c\u5219\u4e0d\u4f1a\u8f6c\u6362\uff0c\u76f4\u63a5\u5b57\u8282\u6d41\u8f93\u51fa\nboolean \u662f\u5426\u662f\u6709\u7b26\u53f7\u7684\uff0c\u9ed8\u8ba4\u4e3afalse\nboolean \u662f\u5426\u662f\u6d6e\u70b9\u578b\uff0c\u9ed8\u8ba4\u4e3afalse\n\u8fd4\u56de\u503c\uff1a\nstring \u8bfb\u51fa\u6765\u7684\u6570\u636e\n\u4f8b\u5b50\uff1a\nlocal s = buff:query(0,5)--\u8bfb\u53d6\u5f00\u5934\u7684\u4e94\u4e2a\u5b57\u8282\u6570\u636e\n", "prefix": "buff:query"}, "buff:set": {"body": "buff:set(${1:start},${2:num},${3:len})", "description": "buff:set(start, num, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememset\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememset(&buff[start], num, len)\uff0c\u5f53\u7136\u6709ram\u8d8a\u754c\u4fdd\u62a4\uff0c\u4f1a\u5bf9len\u6709\u4e00\u5b9a\u7684\u9650\u5236\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nint \u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3a0\u3002\u8981\u8bbe\u7f6e\u4e3a\u7684\u503c\nint \u53ef\u9009\uff0c\u957f\u5ea6\uff0c\u9ed8\u8ba4\u4e3a\u5168\u90e8\u7a7a\u95f4\uff0c\u5982\u679c\u8d85\u51fa\u8303\u56f4\u4e86\uff0c\u4f1a\u81ea\u52a8\u622a\u65ad\n\u4f8b\u5b50\uff1a\n-- \u5168\u90e8\u521d\u59cb\u5316\u4e3a0\nbuff:set() --\u7b49\u540c\u4e8e memset(buff, 0, sizeof(buff))\nbuff:set(8) --\u7b49\u540c\u4e8e memset(&buff[8], 0, sizeof(buff) - 8)\nbuff:set(0, 0x55) --\u7b49\u540c\u4e8e memset(buff, 0x55, sizeof(buff))\nbuff:set(4, 0xaa, 12) --\u7b49\u7528\u4e8e memset(&buff[4], 0xaa, 12)\n", "prefix": "buff:set"}, "buff:isEqual": {"body": "buff:isEqual(${1:start},${2:buff2},${3:start2},${4:len})", "description": "buff:isEqual(start, buff2, start2, len) - zbuff\u7684\u7c7b\u4f3c\u4e8ememcmp\u64cd\u4f5c\uff0c\u7c7b\u4f3c\u4e8ememcmp(&buff[start], &buff2[start2], len)\n\u4f20\u5165\u503c\uff1a\nint \u53ef\u9009\uff0c\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0,\nzbuff \u6bd4\u8f83\u7684\u5bf9\u8c61\nint \u53ef\u9009\uff0c\u6bd4\u8f83\u7684\u5bf9\u8c61\u7684\u5f00\u59cb\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a0\nint \u6bd4\u8f83\u957f\u5ea6\n\u8fd4\u56de\u503c\uff1a\nboolean true\u76f8\u7b49\uff0cfalse\u4e0d\u76f8\u7b49\nint \u76f8\u7b49\u8fd4\u56de0\uff0c\u4e0d\u76f8\u7b49\u8fd4\u56de\u7b2c\u4e00\u4e2a\u4e0d\u76f8\u7b49\u4f4d\u7f6e\u7684\u5e8f\u53f7\n\u4f8b\u5b50\uff1a\nlocal result, offset = buff:isEqual(1, buff2, 2, 10) --\u7b49\u540c\u4e8ememcmp(&buff[1], &buff2[2], 10)\n", "prefix": "buff:isEqual"}} \ No newline at end of file diff --git a/translated-docs/api/mobile.md b/translated-docs/api/mobile.md index 93a9f42a..e569d6bd 100644 --- a/translated-docs/api/mobile.md +++ b/translated-docs/api/mobile.md @@ -355,7 +355,7 @@ To obtain or set the APN, the APN must be set before entering the network, for e |return value type | explanation| |-|-| -|string|The default APN value obtained. If the APN fails, the value is returned.nil| +|string|If the network registration is successful, return the APN value used for registration, otherwise it is nil. It is set that there will be no return value immediately, and the network registration needs to be successful.| **Examples** diff --git a/translation-data/api/mobile.txt b/translation-data/api/mobile.txt index 7116de3b..41070e51 100644 --- a/translation-data/api/mobile.txt +++ b/translation-data/api/mobile.txt @@ -86,6 +86,8 @@ The time interval for periodically obtaining cell information, in milliseconds. Firmware usage 固定使用 Fixed use +如果网络注册成功,返回注册用的APN值,反之是nil。设置好不会立刻有返回值,需要等网络注册成功 +If the network registration is successful, return the APN value used for registration, otherwise it is nil. It is set that there will be no return value immediately, and the network registration needs to be successful. 如需要真正的唯一ID, 使用 If you need a truly unique ID, use 定期轮训式