//各模块UI共有部分
module.cpp
int module_exec_ui(module_info * mod) {
int ret = -1;
sem_init(&g_data_print_sem, 0, 0);
if(is_key_module(mod)){
ret = pthread_create(&g_fg_tid, NULL, active_fingerprint_homekey, (void *) mod);
if(ret < 0){
is_fg_runing = false;
usleep(500 * 1000);
}else{
is_fg_runing = true;
}
}else{
is_fg_runing = false;
}
MMI_ALOGI("module_exec_ui g_fg_tid :[%d]", g_fg_tid);
ret = pthread_create(&g_module_tid, NULL, launch_module, (void *) mod);
if(ret < 0) {
MMI_ALOGE("create thread fail, error=%s", strerror(errno));
return -1;
}
MMI_ALOGD("create thread(thread id=%lu) for module:[%s] test", g_module_tid, mod->module);
return 0;
}
static void *launch_module(void *module) {
signal(SIGUSR1, signal_handler);
。。。。。
}else if(is_otg_module(mod)){
launch_module_otg(mod);
}else if(is_ir_module(mod)){
launch_module_ir(mod);
}else if(!strcmp(LOCAL_AUDIOCOMB, mod->config_list[KEY_LIB_NAME].c_str())) {
launch_local_module(mod);
audio_monitor(mod);
}
return NULL;
}
static void launch_module_otg(module_info * mod) {
button *fb_btn = NULL;
button *pass_btn = NULL;
bool ispass=false;
layout *lay = get_layout(mod);
if(lay == NULL) {
ALOGE("[%s] No layout\n", mod->module);
return;
}
fb_btn = lay->find_button_by_name(KEY_STR_INDICATION);
pass_btn = lay->find_button_by_name(KEY_PASS);
if(fb_btn != NULL) {
fb_btn->set_text("Testing...");
fb_btn->set_color(COLOR_BLUE);
}
if(pass_btn != NULL) {
pass_btn->set_visibility(false);
}
sem_wait(&g_data_print_sem);
//if( strstr(mod->data,"pass") != NULL ){
ispass = true;
//}
if(ispass) {
if(fb_btn != NULL) {
fb_btn->set_text("Test pass");
fb_btn->set_color(COLOR_GREEN);
}
if(pass_btn != NULL) {
pass_btn->set_visibility(true);
}
} else {
if(fb_btn != NULL) {
fb_btn->set_text("Test fail");
fb_btn->set_color(COLOR_RED);
}
}
}
g_data_print_sem, 0, 0);
if(is_key_module(mod)){
ret = pthread_create(&g_fg_tid, NULL, active_fingerprint_homekey, (void *) mod);
if(ret < 0){
is_fg_runing = false;
usleep(500 * 1000);
}else{
is_fg_runing = true;
}
}else{
is_fg_runing = false;
}
MMI_ALOGI("module_exec_ui g_fg_tid :[%d]", g_fg_tid);
ret = pthread_create(&g_module_tid, NULL,