int ddp_remove_module(DDP_SCENARIO_ENUM ddp_scenario, DISP_MODULE_ENUM module) { int i = 0; int idx = ddp_find_module_index(ddp_scenario,module); if( idx < 0) { DDPERR("ddp_remove_module, can not find module %s in scenario %s\n", ddp_get_module_name(module), ddp_get_scenario_name(ddp_scenario)); return -1; } for(i=idx; i<DDP_ENING_NUM-1; i++) { module_list_scenario[ddp_scenario][i] = module_list_scenario[ddp_scenario][i+1]; } module_list_scenario[ddp_scenario][DDP_ENING_NUM-1] = -1; { int * modules = ddp_get_scenario_list(ddp_scenario); int module_num = ddp_get_module_num(ddp_scenario); DDPMSG("after remove module, module list is: \n"); for(i=0;i<module_num;i++) { printk("%s-", ddp_get_module_name(modules[i])); } } return 0; }
int ddp_remove_module(DDP_SCENARIO_ENUM ddp_scenario, DISP_MODULE_ENUM module) { int i = 0; int idx = ddp_find_module_index(ddp_scenario,module); if( idx < 0) { return -1; } //should not over load ASSERT(module_list_scenario[ddp_scenario][i] == -1); for(i=idx; i<DDP_ENING_NUM-1; i++) { module_list_scenario[ddp_scenario][i] = module_list_scenario[ddp_scenario][i+1]; } module_list_scenario[ddp_scenario][i] = -1; return 0; }
int ddp_insert_module(DDP_SCENARIO_ENUM ddp_scenario, DISP_MODULE_ENUM place, DISP_MODULE_ENUM module) { int i = DDP_ENING_NUM-1; int idx = ddp_find_module_index(ddp_scenario,place); if( idx < 0) { return -1; } //should not over load ASSERT(module_list_scenario[ddp_scenario][i] == -1); for(i=DDP_ENING_NUM-2; i>idx; i--) { module_list_scenario[ddp_scenario][i+1] = module_list_scenario[ddp_scenario][i]; } module_list_scenario[ddp_scenario][i] = module; return 0; }
int ddp_insert_module(DDP_SCENARIO_ENUM ddp_scenario, DISP_MODULE_ENUM place, DISP_MODULE_ENUM module) { int i = DDP_ENING_NUM-1; int idx = ddp_find_module_index(ddp_scenario,place); if( idx < 0) { DDPERR("error: ddp_insert_module , place=%s is not in scenario %s!\n", ddp_get_module_name(place), ddp_get_scenario_name(ddp_scenario)); return -1; } for(i=0; i<DDP_ENING_NUM; i++) { if(module_list_scenario[ddp_scenario][i]==module) { //DDPERR("error: ddp_insert_module , module=%s is already in scenario %s!\n", ddp_get_module_name(module), ddp_get_scenario_name(ddp_scenario)); return -1; } } //should have empty room for insert ASSERT(module_list_scenario[ddp_scenario][DDP_ENING_NUM-1] == -1); for(i=DDP_ENING_NUM-2; i>=idx; i--) { module_list_scenario[ddp_scenario][i+1] = module_list_scenario[ddp_scenario][i]; } module_list_scenario[ddp_scenario][idx] = module; if(0) { int * modules = ddp_get_scenario_list(ddp_scenario); int module_num = ddp_get_module_num(ddp_scenario); DDPMSG("after insert module, module list is: \n"); for(i=0;i<module_num;i++) { printk("%s-", ddp_get_module_name(modules[i])); } } return 0; }
// set display interface when kernel init int ddp_set_dst_module(DDP_SCENARIO_ENUM scenario, DISP_MODULE_ENUM dst_module) { int i = 0; DDPMSG("ddp_set_dst_module, scenario=%s, dst_module=%s \n", ddp_get_scenario_name(scenario), ddp_get_module_name(dst_module)); if (ddp_find_module_index(scenario,dst_module) > 0) { DDPDBG("%s is already on path\n",ddp_get_module_name(dst_module)); return 0; } i = ddp_get_module_num_l(module_list_scenario[scenario])-1; ASSERT(i>=0); if (dst_module == DISP_MODULE_DSIDUAL) { if (i < (DDP_ENING_NUM -1)) { module_list_scenario[scenario][i++] = DISP_MODULE_SPLIT1; }else{ DDPERR("set dst module over up bound\n"); return -1; } } else { if(ddp_get_dst_module(scenario)==DISP_MODULE_DSIDUAL) { if (i >= 1) { module_list_scenario[scenario][i--] = -1; }else{ DDPERR("set dst module over low bound\n"); return -1; } } } module_list_scenario[scenario][i] = dst_module; if (scenario == DDP_SCENARIO_PRIMARY_ALL) { ddp_set_dst_module(DDP_SCENARIO_PRIMARY_DISP,dst_module); }else if(scenario==DDP_SCENARIO_SUB_ALL) { ddp_set_dst_module(DDP_SCENARIO_SUB_DISP,dst_module); } ddp_print_scenario(scenario); return 0; }