⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otgmsapp.c

📁 linux下的usb开发
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -