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

📄 otgmsapp.c

📁 philips公司ISP1362 USB OTG控制芯片的驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
	if(fp>0) fclose(fp);
	else
	{
		sprintf(printbuffer, "Selected file %s does NOT exists\n", filename);
		addlist_otgapp(printbuffer);
	}

	if( (strncmp(filename,otg_local_disk,strlen(otg_local_disk)) != 0 ) &&
		 (strncmp(filename,otg_rmt_disk,strlen(otg_rmt_disk)) != 0 ) ) {
	sprintf(printbuffer, "%s is not from OTG disk, use normal cp Command \n", filename);
	addlist_otgapp(printbuffer);
	goto RET1 ;
	}
	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));
}

void
file_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);
}

void
file_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 void
otg_clicked_idle (GtkButton   *button,
		  gpointer   data)
{

	// unmount the disk
	umount_device();	

	otgtool_idle(otgfsm_fd, &get_otg_info, otgmsapp_display);

	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 void
otg_clicked_host (GtkButton   *button,
		  gpointer   data)
{

	otgtool_host(otgfsm_fd, &get_otg_info, otgmsapp_display);

	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");
		}
	
	}
	


}

static void
otg_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 void
otg_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 void
otg_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 void
otg_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);

	}
	else
		addlist_otgapp("OTG Disks not available, so no point selecting this Disk\n ");
}

static void menudest_response (gchar *string)
{

	if(mount_flag==1)
	{
		if(strncmp(string,"Local Disk",strlen("Local Disk")) != 0)  //Remote Disk is selcted
		  sprintf(fnamebuffer_destdisk, "%s/",RMT_OTG_DISK);
		else
		  sprintf(fnamebuffer_destdisk, "%s/",LOCAL_OTG_DISK);
		gtk_entry_set_text (GTK_ENTRY (entry_destdisk), fnamebuffer_destdisk);

	}
	else
		addlist_otgapp("OTG Disks not available, so no point selecting this Disk\n ");
}

static void
otg_clicked_filesel_sourcedisk (GtkButton   *button,
		  gpointer   data)
{
	if(mount_flag==1)
	{
		file_selection_sourcedisk();
	}
	else
		addlist_otgapp("OTG device is not available, so cannot select the file in the Source Disk\n ");
		
}

static void
otg_clicked_filesel_destdisk (GtkButton   *button,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -