📄 otgmsapp.c
字号:
else if(fp>0) destfile_select=1; addlist_otgapp("Destination file selection is okay\n"); gtk_entry_set_text (GTK_ENTRY (entry_destdisk), filename);RET1: gtk_widget_destroy (GTK_WIDGET (fs));}voidfile_selection_sourcedisk (void){ static GtkWidget *window = NULL; if (!window) { window = gtk_file_selection_new ("ISP1362 SourceDisk File selection"); gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (window)); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE); gtk_file_selection_set_filename(GTK_FILE_SELECTION (window), fnamebuffer_sourcedisk); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window); gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (window)->ok_button), "clicked", GTK_SIGNAL_FUNC(file_selection_ok_source), window); gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (window)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT (window)); } if (!GTK_WIDGET_VISIBLE (window)) gtk_widget_show (window); else gtk_widget_destroy (window);}voidfile_selection_destdisk (void){ static GtkWidget *window = NULL; if (!window) { window = gtk_file_selection_new ("ISP1362 DestinationDisk File selection"); gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (window)); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE); gtk_file_selection_set_filename(GTK_FILE_SELECTION (window), fnamebuffer_destdisk); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window); gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (window)->ok_button), "clicked", GTK_SIGNAL_FUNC(file_selection_ok_dest), window); gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (window)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT (window)); } if (!GTK_WIDGET_VISIBLE (window)) gtk_widget_show (window); else gtk_widget_destroy (window);}static voidotg_clicked_idle (GtkButton *button, gpointer data){ // unmount the disk umount_device(); set_otg_info.state = OTG_IDLE; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info); display_current_state(); if(get_otg_info.state == OTG_B_IDLE) { sprintf(printbuffer, "ISP1362 has gone into B-Idle state \n"); addlist_otgapp(printbuffer); } else if(get_otg_info.state == OTG_A_IDLE) { sprintf(printbuffer, "ISP1362 has gone into A-Idle state \n"); addlist_otgapp(printbuffer); } }static voidotg_clicked_host (GtkButton *button, gpointer data){ int retry_count=5; int retry_count1=10; unsigned char otg_state; set_otg_info.state = OTG_HOST; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info); display_current_state(); if(get_otg_info.state != OTG_A_HOST || get_otg_info.state != OTG_B_HOST) { sprintf(printbuffer, "ISP1362 trying to become OTG host \n"); addlist_otgapp(printbuffer); set_otg_info.state = OTG_HOST; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); /* Get OTG fsm Information from the driver */ do{ sleep(1); retry_count--; ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info); otg_state = get_otg_info.state; } while(otg_state != OTG_A_HOST && otg_state != OTG_B_HOST && otg_state != OTG_A_VBUS_ERR && retry_count); } if((otg_state == OTG_B_HOST || otg_state == OTG_A_HOST) && (get_otg_info.status_code == OTG_STATUS_NONE)) { /* The device has become host and enumeration is still going on, * wait for some more time */ do{ sleep(1); retry_count1--; ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info); otg_state = get_otg_info.state; } while(((otg_state == OTG_A_HOST || otg_state == OTG_B_HOST) && get_otg_info.status_code == OTG_STATUS_NONE) && otg_state != OTG_A_VBUS_ERR && retry_count1); } if(get_otg_info.state == OTG_B_HOST) { sprintf(printbuffer, "ISP1362 has gone into B-Host state \n"); addlist_otgapp(printbuffer); }else if(get_otg_info.state == OTG_A_HOST) { sprintf(printbuffer, "ISP1362 has gone into A-Host state \n"); addlist_otgapp(printbuffer); }else { if(get_otg_info.state == OTG_A_VBUS_ERR) { sprintf(printbuffer, "ISP1362 failed to become OTG host (vbus error) \n"); addlist_otgapp(printbuffer); set_otg_info.state = OTG_BUS_DROP; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); }else if( ((retry_count == 0) && (get_otg_info.state != OTG_A_HOST) && (get_otg_info.state != OTG_B_HOST))) { sprintf(printbuffer, "ISP1362 failed to become otg host(timedout) \n"); addlist_otgapp(printbuffer); set_otg_info.state = OTG_IDLE; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); }else if(get_otg_info.status_code != OTG_STATUS_ENUM_SUCCESS) { sprintf(printbuffer, "ISP1362 failed to get enumerate the remote OTG device \n"); addlist_otgapp(printbuffer); set_otg_info.state = OTG_IDLE; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); } display_current_state(); } // add code to mount the disk if device is enumerated. if( (mount_flag == 0) && (get_otg_info.state == OTG_A_HOST || get_otg_info.state == OTG_B_HOST) && get_otg_info.status_code == OTG_STATUS_ENUM_SUCCESS) { mount_device(); if(mount_flag==1) { sprintf(fnamebuffer_sourcedisk,"%s/",LOCAL_OTG_DISK); gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), fnamebuffer_sourcedisk); sprintf(fnamebuffer_destdisk,"%s/",RMT_OTG_DISK); gtk_entry_set_text (GTK_ENTRY (entry_destdisk), fnamebuffer_destdisk); } else { gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), "Local Disk not Available"); gtk_entry_set_text (GTK_ENTRY (entry_destdisk), "Remote Disk not Available"); } } }#if 0static voidotg_clicked_peripheral (GtkButton *button, gpointer data){ // add code to unmount the disk umount_device(); set_otg_info.state = OTG_IDLE; ioctl(otgfsm_fd, OTG_IOC_SET_STATE, &set_otg_info); ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info); display_current_state(); if(get_otg_info.state == OTG_B_IDLE) { sprintf(printbuffer, "ISP1362 has gone into B-Idle state \n"); addlist_otgapp(printbuffer); sprintf(printbuffer, "Please put the other OTG Host into A-Host so that this OTG Device can enumerate \n"); addlist_otgapp(printbuffer); } else if(get_otg_info.state == OTG_A_IDLE) { sprintf(printbuffer, "ISP1362 has gone into A-Idle state \n"); addlist_otgapp(printbuffer); sprintf(printbuffer, "Please put the other OTG Host into B-Host so that this OTG Device can enumerate \n"); addlist_otgapp(printbuffer); } }#endifstatic voidotg_clicked_copy (GtkButton *button, gpointer data){ gchar cppointer[200]; gchar* filename; gchar* filenamedest; gint filenamesize=0, filenamedestsize=0; int result; if(sourcefile_select==1) { filename = gtk_editable_get_chars (GTK_EDITABLE (entry_sourcedisk), 0, -1); filenamesize = gtk_editable_get_position (GTK_EDITABLE (entry_sourcedisk)); memcpy(cppointer, "cp -f ", 6); memcpy(cppointer+6, filename, filenamesize ); memcpy(cppointer+6+filenamesize, " ", 1); filenamedest = gtk_editable_get_chars (GTK_EDITABLE (entry_destdisk), 0, -1); filenamedestsize = gtk_editable_get_position (GTK_EDITABLE (entry_destdisk)); memcpy(cppointer+6+filenamesize+1, filenamedest,filenamedestsize); memcpy(cppointer+6+filenamesize+1+filenamedestsize , "\n",2); // g_print ("OTG:%s\n",cppointer); result = system(cppointer ); if(result == 0) { system("sync"); sprintf(printbuffer, "Copying of %s into %s Successful\n",filename, filenamedest); addlist_otgapp(printbuffer); } else { sprintf(printbuffer, "Copying of %s into %s NOT successful\n",filename, filenamedest); addlist_otgapp(printbuffer); } g_free(filename); g_free(filenamedest); } else addlist_otgapp("Source file is not selected to copy\n");}static voidotg_clicked_move (GtkButton *button, gpointer data){ gchar cppointer[200]; gchar* filename; gchar* filenamedest; gint filenamesize=0, filenamedestsize=0; int result; if(sourcefile_select==1) { filename = gtk_editable_get_chars (GTK_EDITABLE (entry_sourcedisk), 0, -1); filenamesize = gtk_editable_get_position (GTK_EDITABLE (entry_sourcedisk)); memcpy(cppointer, "mv -f ", 6); memcpy(cppointer+6, filename, filenamesize ); memcpy(cppointer+6+filenamesize, " ", 1); filenamedest = gtk_editable_get_chars (GTK_EDITABLE (entry_destdisk), 0, -1); filenamedestsize = gtk_editable_get_position (GTK_EDITABLE (entry_destdisk)); memcpy(cppointer+6+filenamesize+1, filenamedest,filenamedestsize); memcpy(cppointer+6+filenamesize+1+filenamedestsize , "\n",2); //g_print ("OTG:%s\n",cppointer); result = system(cppointer ); if(result == 0) { system("sync"); sprintf(printbuffer, "Moving of %s into %s Successful\n",filename, filenamedest); addlist_otgapp(printbuffer); while(filename[filenamesize-1] != '/') filenamesize--; filename[filenamesize] = '\0'; gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), filename); sourcefile_select=0; } else { sprintf(printbuffer, "Moving of %s into %s NOT successful\n",filename, filenamedest); addlist_otgapp(printbuffer); } g_free(filename); g_free(filenamedest); } else addlist_otgapp("Source file is not selected to move\n");}static voidotg_clicked_sourcedelete(GtkButton *button, gpointer data){ gchar cppointer[200]; gchar* filename; gint filenamesize=0; int result; if(sourcefile_select==1) { filename = gtk_editable_get_chars (GTK_EDITABLE (entry_sourcedisk), 0, -1); filenamesize = gtk_editable_get_position (GTK_EDITABLE (entry_sourcedisk)); memcpy(cppointer, "rm ", 3); memcpy(cppointer+3, filename, filenamesize ); memcpy(cppointer+3+filenamesize, " \n",3); result = system(cppointer ); if(result == 0) { system("sync"); sprintf(printbuffer, "Deleting %s Successful\n",filename); addlist_otgapp(printbuffer); while(filename[filenamesize-1] != '/') filenamesize--; filename[filenamesize] = '\0'; gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), filename); sourcefile_select=0; } else { sprintf(printbuffer, "Deleting %s NOT successful\n",filename); addlist_otgapp(printbuffer); } g_free(filename); } else addlist_otgapp("File is not selected to delete\n");}static voidotg_clicked_destdelete (GtkButton *button, gpointer data){ gchar cppointer[200]; gchar* filename; gint filenamesize=0; int result; if(destfile_select==1) { filename = gtk_editable_get_chars (GTK_EDITABLE (entry_destdisk), 0, -1); filenamesize = gtk_editable_get_position (GTK_EDITABLE (entry_destdisk)); memcpy(cppointer, "rm ", 3); memcpy(cppointer+3, filename, filenamesize ); memcpy(cppointer+3+filenamesize, " \n",3); result = system(cppointer ); if(result == 0) { system("sync"); sprintf(printbuffer, "Deleting %s Successful\n",filename); addlist_otgapp(printbuffer); while(filename[filenamesize-1] != '/') filenamesize--; filename[filenamesize] = '\0'; gtk_entry_set_text (GTK_ENTRY (entry_destdisk), filename); destfile_select=0; } else { sprintf(printbuffer, "Deleting %s NOT successful\n",filename); addlist_otgapp(printbuffer); } g_free(filename); } else addlist_otgapp("File is not selected to delete\n");}static void menusource_response (gchar *string){ if(mount_flag==1) { if(strncmp(string,"Local Disk",strlen("Local Disk")) != 0) //Remote Disk is selcted sprintf(fnamebuffer_sourcedisk, "%s/",RMT_OTG_DISK); else sprintf(fnamebuffer_sourcedisk, "%s/",LOCAL_OTG_DISK); gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), fnamebuffer_sourcedisk); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -