mirror of
https://github.com/HandsomeMod/gc.git
synced 2026-01-20 02:27:23 +01:00
allow to enable & disable gadget manually
This commit is contained in:
31
gc_generic.c
31
gc_generic.c
@@ -123,6 +123,37 @@ int gc_remove_all_gadgets(gc_generic_info info)
|
||||
return GC_SUCCESS;
|
||||
}
|
||||
|
||||
int gc_enable_gadget(gc_generic_info info)
|
||||
{
|
||||
if(gc_init(info) == NULL)
|
||||
return GC_FAILED;
|
||||
usbg_gadget *g;
|
||||
g = usbg_get_first_gadget(state);
|
||||
if(usbg_enable_gadget(g, DEFAULT_UDC) != USBG_SUCCESS){
|
||||
fprintf(stderr,"failed to enable gadget! \n");
|
||||
gc_clean();
|
||||
return GC_FAILED;
|
||||
}
|
||||
|
||||
return GC_SUCCESS;
|
||||
}
|
||||
|
||||
int gc_disable_gadget(gc_generic_info info)
|
||||
{
|
||||
if(gc_init(info) == NULL)
|
||||
return GC_FAILED;
|
||||
usbg_gadget *g;
|
||||
g = usbg_get_first_gadget(state);
|
||||
if(usbg_disable_gadget(g) != USBG_SUCCESS){
|
||||
fprintf(stderr,"failed to disable gadget! \n");
|
||||
gc_clean();
|
||||
return GC_FAILED;
|
||||
}
|
||||
|
||||
return GC_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* id generate helper */
|
||||
static int gc_get_functions()
|
||||
{
|
||||
|
||||
@@ -56,6 +56,12 @@ int gc_remove_all_gadgets(gc_generic_info info);
|
||||
/* 销毁usb gadget */
|
||||
void gc_clean();
|
||||
|
||||
/* 手动开启gadget */
|
||||
int gc_enable_gadget(gc_generic_info info);
|
||||
|
||||
/* 手动关闭gadget */
|
||||
int gc_disable_gadget(gc_generic_info info);
|
||||
|
||||
/* 得到config */
|
||||
usbg_config *gc_get_config(usbg_gadget *gadget);
|
||||
|
||||
|
||||
12
main.c
12
main.c
@@ -43,8 +43,10 @@ static void print_help()
|
||||
printf("-h Show this help. \n");
|
||||
printf("-l Show active gadget functions. \n");
|
||||
printf("-c Clean all active gadget. \n");
|
||||
printf("-e Enable all active gadget. \n");
|
||||
printf("-d Disable all active gadget. \n");
|
||||
printf("-a <function> [configs ...] Add a gadget function. \n");
|
||||
printf("-d <name> Delete a gadget function by name in list (-l). \n");
|
||||
printf("-r <name> Remove a gadget function by name in list (-l). \n");
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
@@ -70,6 +72,12 @@ int main(int argc,char *argv[])
|
||||
} else if(strcmp(argv[1],"-l") == 0) {
|
||||
/* list gadget functions */
|
||||
gc_show_list();
|
||||
} else if(strcmp(argv[1],"-e") == 0) {
|
||||
/* enable gadget functions */
|
||||
gc_enable_gadget(info);
|
||||
} else if(strcmp(argv[1],"-d") == 0) {
|
||||
/* disable gadget functions */
|
||||
gc_disable_gadget(info);
|
||||
} else if(strcmp(argv[1],"-a") == 0) {
|
||||
/* add a gadget function */
|
||||
if(!is_root()){
|
||||
@@ -113,7 +121,7 @@ int main(int argc,char *argv[])
|
||||
if(gc_acm_create(argc,argv,info) == GC_FAILED)
|
||||
return -1;
|
||||
}
|
||||
} else if(strcmp(argv[1],"-d") == 0) {
|
||||
} else if(strcmp(argv[1],"-r") == 0) {
|
||||
/* delete a gadget function */
|
||||
if(argc < 3) {
|
||||
printf("You need a gadget to remove ! \n");
|
||||
|
||||
Reference in New Issue
Block a user