Page 1 of 1

【已同步】CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 14日 23:50
by wqvbdcb123

1.CBU的IOTOS SDK里调用了uya_iot_wf_gw_unactive()这个函数进入配网状态,一进入配网WIFI就复位,或APP移除设备WIFI也复位,有办法能使WIFI不复位吗?
2.SDK:ty_iot_sdk_bk7231nl_BK7231NL_2.3.1-beta.14 下面试demo 里面的按键程序,怎么没有按下再松开的键值?按下再松开的键值要怎样去实现?或者加上按下再松开的回调函数?(不想外加软件定时器检测去实现)谢谢!

typedef enum {
/** one shot */
NORMAL_KEY = 0,
/** continual shot */
SEQ_KEY,
/** long press */
LONG_KEY,
}PUSH_KEY_TYPE_E;

STATIC VOID wifi_key_process(TY_GPIO_PORT_E port,PUSH_KEY_TYPE_E type,INT_T cnt)
{
PR_DEBUG("port:%d,type:%d,cnt:%d",port,type,cnt);
OPERATE_RET op_ret = OPRT_OK;
UCHAR_T ucConnectMode = 0;

Code: Select all

if (port = WIFI_KEY_PIN) {
    if (LONG_KEY == type) 
    {//press long enter linking network
        PR_NOTICE("key long press");
        if(OPRT_OK != op_ret) {
            PR_ERR("tuya_iot_wf_gw_unactive op_ret:%d",op_ret);
            return;
        }
    } else if (NORMAL_KEY == type) 
    {
            PR_NOTICE("key normal press");
    }
    else 
    {
            PR_NOTICE("key type is no deal");
    }
}
return;

}


Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 11:41
by yingtao_33

第一个问题,目前没法实现。现在设备重置,一定会伴随设备重启的。关于设备重置的详细描述请看 https://developer.tuya.com/cn/docs/iot- ... 7srci7m1jk

第二个问题 我们先内部验证一下,迟些答复


Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 12:04
by yingtao_33

关于第二个问题,如果想要抬起触发 low_level_detect 选择 FALSE lp_tp 选择 FALLING_EDGE_TRIG 示例代码如下

Code: Select all


/* reset key config */
#define WIFI_KEY_PIN                TY_GPIOA_9  /* reset button pin */
#define WIFI_KEY_TIMER_MS           100         /* key scan poll time, default 100ms */
#define WIFI_KEY_LONG_PRESS_MS      3000        /* long press time */
#define WIFI_KEY_SEQ_PRESS_MS       400
#define WIFI_KEY_LOW_LEVEL_ENABLE   FALSE

/* key initiation */
KEY_USER_DEF_S key_def;

op_ret = key_init(NULL, 0, WIFI_KEY_TIMER_MS);
if (OPRT_OK != op_ret) {
    PR_ERR("key init err:%d", op_ret);
    return;
}

/* config key parameter */
memset(&key_def, 0, SIZEOF(key_def));
key_def.port = WIFI_KEY_PIN;
key_def.long_key_time = WIFI_KEY_LONG_PRESS_MS;
key_def.low_level_detect = WIFI_KEY_LOW_LEVEL_ENABLE;
key_def.lp_tp = FALLING_EDGE_TRIG;
key_def.call_back = wifi_key_process;
key_def.seq_key_detect_time = WIFI_KEY_SEQ_PRESS_MS;

/* register key */
op_ret = reg_proc_key(&key_def);
if (OPRT_OK != op_ret) {
    PR_ERR("register WiFi key err:%d", op_ret);
}



Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 13:37
by wqvbdcb123

low_level_detect 选择 FALSE lp_tp 选择 FALLING_EDGE_TRIG这样修改的话,可以实现长按,短按,抬起,这3种触发发方式是吧?


Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 13:46
by yingtao_33

这种方式只能实现抬起触发触发,无法三种共存


Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 14:22
by wqvbdcb123

有什么办法可使3种触发方式共成?程序要做何修改?另外按键可选双边沿出发方式?


Re: CBU的IOTOS配网和按键问题

Posted: 2022年 Dec 15日 21:42
by wqvbdcb123

按键在短按的时候,有时没反应,按键程序哪里可以调反应时间?


Re: CBU的IOTOS配网和按键问题

Posted: 2023年 Feb 21日 16:38
by yangjie
wqvbdcb123 2022年 Dec 15日 21:42

按键在短按的时候,有时没反应,按键程序哪里可以调反应时间?

可能是按下松开太快了,你可以把短按检测时间调短一点,还可以在初始化的时候将那个轮询检测时间调短一点,这样会灵敏些