代码拉取完成,页面将自动刷新
--定义模块,导入依赖库
local base = _G
local sys = require"sys"
local rtos = require"rtos"
local chg = require"chg"
module(...)
--[[
sta:按键状态,IDLE表示空闲状态,PRESSED表示已按下状态,LONGPRESSED表示已经长按下状态
longprd:长按键判断时长,默认3秒;按下大于等于3秒再弹起判定为长按键;按下后,在3秒内弹起,判定为短按键
longcb:长按键处理函数
shortcb:短按键处理函数
]]
local sta,longprd,longcb,shortcb = "IDLE",3000
local function print(...)
base.print("--zbb--keypad",...)
end
local function longtimercb()
print("longtimercb",chg.getcharger())
if not chg.getcharger() then
sta = "LONGPRESSED"
end
end
local function keymsg(msg)
print("keymsg",msg.key_matrix_row,msg.key_matrix_col,msg.pressed,sta)
if msg.pressed then
sta = "PRESSED"
if not chg.getcharger() then
sys.timerStart(longtimercb,longprd)
end
else
sys.timerStop(longtimercb)
if sta=="PRESSED" then
if shortcb then
shortcb()
end
elseif sta=="LONGPRESSED" then
if longcb then
longcb()
else
print("rtos.poweroff")
rtos.poweroff()
end
end
sta = "IDLE"
end
end
--[[
函数名:setup
功能 :配置power key按键功能
参数 :
keylongprd:number类型或者nil,长按键判断时长,单位毫秒,如果是nil,默认3000毫秒
keylongcb:function类型或者nil,长按弹起时的回调函数,如果为nil,使用默认的处理函数,会自动关机
keyshortcb:function类型或者nil,短按弹起时的回调函数
返回值:无
]]
function setup(keylongprd,keylongcb,keyshortcb)
longprd,longcb,shortcb = keylongprd,keylongcb,keyshortcb
end
local function chgind(e,val)
-- print("chgind",e,val)
if e == "CHARGER" and val == 1 then
sys.timerStop(longtimercb)
sta = "IDLE"
end
return true
end
sys.subscribe("DEV_CHG_IND",chgind)
rtos.on(rtos.MSG_KEYPAD,keymsg)
rtos.init_module(rtos.MOD_KEYPAD,0,0,0)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。