Page 1 of 1

插座固件在未授权时进产测,指示灯没有正确指示

Posted: 2024年 Dec 27日 19:37
by qianmingjun

hi,插座固件 在测试未授权下进入产测时,验证其是否正确指示当前错误的case下,发现指示灯未能正确指示。
请帮忙查找BUG,谢谢!指示灯是配网指示灯复用功能
附件是日志


Re: 插座固件在未授权时进产测,指示灯没有正确指示

Posted: 2024年 Dec 30日 10:26
by yangjie

导致该问题的原因应该是在空模组上没有使用涂鸦 生产解决方案 对kv 进行过初始化导致的。
如果你是 tuyaos 二次开发的产品,没有打开 ENABLE_TY_LOAD_OEM_PAR 宏,可以直接在ty_app_pre_sdk_init函数中调用 ty_app_elec_start(); 无需等待 db_init 再进行初始化,这是因为 oem 固件需要从 db 中读取配置参数,才需要在 db_init 后进行ty_app_elec_start();。你这里使用的 kconfig 的配置无需等待 db_init 再进行初始化。
解决方法如下:

Code: Select all

STATIC OPERATE_RET ty_app_elec_start(VOID *data)
{
    OPERATE_RET rt = OPRT_OK;
    UINT_T chan_status = 0;

tal_sw_timer_init(); //3.6.0 及以上框架中软件定时器初始化顺序提前了,适配 3.6.0 及以上框架时可删除。

/* 应用事件注册 */
TUYA_CALL_ERR_RETURN(ty_app_event_register(APP_EVT_GROUP_ELE, ty_app_event_callback));

#if defined(ENABLE_TY_LOAD_OEM_PAR) && (ENABLE_TY_LOAD_OEM_PAR)
    TUYA_CALL_ERR_RETURN(ty_app_elec_oem_config_init());
#endif

/* 硬件注册 */
#if defined(ENABLE_TY_LOAD_OEM_PAR) && (ENABLE_TY_LOAD_OEM_PAR)
    TUYA_CALL_ERR_RETURN(ty_app_elec_oem_hardware_reg());
#else
    TUYA_CALL_ERR_RETURN(ty_app_elec_hardware_reg());
#endif

/* 网络指示灯初始化 */
TUYA_CALL_ERR_LOG(app_elec_net_led_init());

/* 通道功能初始化 */
TUYA_CALL_ERR_LOG(app_elec_channel_init());

// 主控灯初始化
TUYA_CALL_ERR_LOG(app_elec_power_led_init());
TUYA_CALL_ERR_LOG(app_elec_get_all_channel_status(&chan_status));
TUYA_CALL_ERR_LOG(app_elec_power_led_status_set(chan_status));
// 更新通道指示灯状态
app_elec_channel_led_refresh();

#if defined(ENABLE_TY_LOAD_OEM_PAR) && (ENABLE_TY_LOAD_OEM_PAR)
    ty_app_elec_oem_release();
#endif

#if (defined(ENERGY_MONITOR_ENABLE) && (ENERGY_MONITOR_ENABLE==1))
    // 关闭 WiFi 低功耗模式,避免计量采样错误,for ECR6600
    tal_wifi_lp_disable();
#endif

return rt;
}

/**
 * @brief SDK 初始化前的预初始化 注册快速启动等 SDK 事件
 *
 * @param none
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET ty_app_pre_sdk_init(VOID_T)
{
    OPERATE_RET rt = OPRT_OK;

    /*关闭产测超时检测标志,仅供研发调试使用*/
    // ty_sys_ignore_close_factory_test();

    // ty_subscribe_event(EVENT_SDK_DB_INIT_OK, "db_init", ty_app_elec_start, SUBSCRIBE_TYPE_NORMAL);

    ty_app_elec_start(NULL);

    return rt;
}

Re: 插座固件在未授权时进产测,指示灯没有正确指示

Posted: 2024年 Dec 30日 10:29
by qianmingjun

收到,解析的很详细,good!
感谢。