运行钩子对应的回调函数

支持芯片: SHMICTRL系列芯片 ESP32-S3系列
void hook_run(str hookname,str classname,str eventname);
//hookname: 钩子名称,建议与appbase的方法名一致,便于理解
//classname: 钩子对应的控件名称,* 代表所有控件
//eventname: 钩子对应控件的事件名称,* 代表所有事件

在hook_run函数执行时,回调hook_add函数定义的 classname.eventname 事件;

注意:这里允许进行一对多绑定,比如:

//在urljpg控件中create事件中,使用
void create()
{    hook_add("onWIFI32","urljpg","doWIFI");
}
//在urltext控件中使用:
void create()
{    hook_add("onWIFI32","urltext","doWIFI");
}

//在 hook_run("onWIFI32","*","*"); 之后,系统会自动回调所有的urljpg以及所有的urltext的dowifi事件;

另外,由于wifi_getinfo读出的各种信息仅在onWiFI32事件中才能起作用,而在回调函数中无法正确读出wifi_getinfo的数值,因此我们构建了hook_set语句;

当执行hook_run执行后,会将对应的回调做好标志,在执行hook_set语句的时候,会自动更改设有标志的hook选项,以确保在回调事件中使用hook_get获取值;

示例

//在urljpg控件中create事件中,使用
void create()
{    hook_add("onWIFI32","urljpg","doWIFI");
}
//urljpg控件中
void doWIFI() //处理bin下载完成之后的事件
{   str url;
    int size;
    url=hook_get(0);    //url
    size=hook_get(1);    //size
    ......  //对应处理
}


//在appbase的onWIFI3事件中

void onWIFI32(int m){
   if (m==4){  //httpdnbin 下载二进制数据完成
           $dnpool_busy=0;    //下载完成
        hook_run("onWIFI32","*","*");   //获取onWIFI32所有的hook项目,并可赋值
        hook_set(wifi_getinfo(5));   //url
        hook_set(wifi_getinfo(19));   //size
    }
}

注意