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

📄 otgmsapp.c

📁 philips公司ISP1362 USB OTG控制芯片的驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
		  gpointer   data)
{
	if(mount_flag==1)
	
		file_selection_destdisk();
	else
		addlist_otgapp("OTG device is not available, so cannot select the file in Destination disk\n ");

}

int main( int argc,
          char *argv[] )
{
	GtkWidget *window;
	GtkWidget *box1;
	GtkWidget *statusbox;
	GtkWidget *frame;
	GtkWidget *bbox;

	GtkWidget *hbox1;
	GtkWidget *label11;
	GtkWidget *hbox2;
	GtkWidget *label21;
	GtkWidget *button21;
	GtkWidget *button22;
	GtkWidget *boxa;
	GtkWidget *vbox3;
	GtkWidget *hbox3;
	GtkWidget *button31;
	GtkWidget *arrow31;
	GtkWidget *button32;
	GtkWidget *button33;
	GtkWidget *button34;
	GtkWidget *vbox5;
	GtkWidget *vbox4;
	GtkWidget *hbox4;
	GtkWidget *button41;
	GtkWidget *arrow41;
	GtkWidget *button44;
	GtkWidget *menu;
	GtkWidget *menu_bar;
	GtkWidget *root_menu;
	GtkWidget *menu_items;
						 
	GdkColormap *cmap;

	GtkWidget *button;

	long	flags;

   	otgfsm_fd = open(OTG_FSM_FILE, O_RDONLY);
	if(otgfsm_fd < 0) {
		printf("Error in opening file: %s\n",OTG_FSM_FILE);
		exit(0);
	}

	gtk_init (&argc, &argv);
 
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_usize (window, 500, 540);
	gtk_window_set_policy (GTK_WINDOW(window), FALSE, FALSE, TRUE);  
	gtk_signal_connect (GTK_OBJECT (window), "destroy",
			  GTK_SIGNAL_FUNC(close_otgapp),
			  NULL);
	gtk_window_set_title (GTK_WINDOW (window), "OTG Test Application");
	gtk_container_set_border_width (GTK_CONTAINER (window), 0);

	box1 = gtk_vbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (box1), 5);
	gtk_container_add (GTK_CONTAINER (window), box1);

	/* show the different menu items here */
	/* An option menu to show the status of 1362 */
	frame = gtk_frame_new("ISP1362 Status");
	gtk_box_pack_start(GTK_BOX(box1), frame, TRUE, TRUE, 0);
	hbox1 = gtk_hbox_new(FALSE, DEF_PAD);
	gtk_container_set_border_width (GTK_CONTAINER (hbox1), DEF_PAD_SMALL);
	gtk_container_add (GTK_CONTAINER(frame), hbox1);
	label11 = gtk_label_new ("ISP1362 is used as:");
	gtk_box_pack_start (GTK_BOX (hbox1), label11, FALSE, FALSE,DEF_PAD);
	isp1362statuslabel = gtk_label_new ("HOST");
	//Sub: change the text color as well 
	gtk_box_pack_start (GTK_BOX (hbox1), isp1362statuslabel, FALSE, FALSE, 0);

	/* Menu to show the 1362 mode change */
	frame = gtk_frame_new("ISP1362 Change Mode");
	gtk_box_pack_start(GTK_BOX(box1), frame, TRUE, TRUE, 0);
	hbox2 = gtk_hbox_new(FALSE, DEF_PAD);
	gtk_container_set_border_width (GTK_CONTAINER (hbox2), DEF_PAD_SMALL);
	gtk_container_add (GTK_CONTAINER(frame), hbox2);
	label21 = gtk_label_new ("ISP1362 Change Mode:");
	gtk_box_pack_start (GTK_BOX (hbox2), label21, FALSE, FALSE, DEF_PAD);
	button21 = gtk_button_new_with_label (" IDLE ");    
	gtk_signal_connect_object (GTK_OBJECT (button21), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_idle),
				 NULL);
	gtk_box_pack_start (GTK_BOX (hbox2), button21, FALSE, FALSE, 0);

	button22 = gtk_button_new_with_label (" HOST ");
	gtk_signal_connect_object (GTK_OBJECT (button22), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_host),
				 NULL );
	gtk_box_pack_start (GTK_BOX (hbox2), button22, FALSE, FALSE, 0);

	//Peripheral Button
	/*  button23 = gtk_button_new_with_label (" PERIPHERAL ");
	gtk_signal_connect (GTK_OBJECT (button23), "clicked",
			  GTK_SIGNAL_FUNC (otg_clicked_peripheral), NULL);
	gtk_box_pack_start (GTK_BOX (hbox2), button23, FALSE, FALSE, 0);
	*/


	/* Create a file selection widget */
	frame = gtk_frame_new("ISP1362 File Transfer Menu");
	gtk_box_pack_start(GTK_BOX(box1), frame, TRUE, TRUE, 0);
	boxa = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (boxa), 5);
	gtk_container_add (GTK_CONTAINER (frame), boxa);

	//Create Source Disk File selection widget
	frame = gtk_frame_new("Source Disk");
	gtk_box_pack_start(GTK_BOX(boxa), frame, TRUE, TRUE, 0);
	vbox3 = gtk_vbox_new(FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (vbox3), DEF_PAD_SMALL);
	gtk_container_add (GTK_CONTAINER(frame), vbox3);

	//Menu Item
	menu = gtk_menu_new();
	menu_items = gtk_menu_item_new_with_label("Local Disk");
	gtk_menu_append(GTK_MENU (menu), menu_items);
	gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate", GTK_SIGNAL_FUNC(menusource_response), (gpointer) g_strdup("Local Disk"));
	menu_items = gtk_menu_item_new_with_label("Remote Disk");
	gtk_menu_append(GTK_MENU (menu), menu_items);
	gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate", GTK_SIGNAL_FUNC(menusource_response), (gpointer) g_strdup("Remote Disk"));
	gtk_widget_show(menu_items);
	root_menu = gtk_menu_item_new_with_label("  Select Disk  ");
	gtk_widget_show(root_menu);

	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox3), frame, TRUE, FALSE, 0);
	hbox3 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox3), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox3);

	gtk_menu_item_set_submenu(GTK_MENU_ITEM (root_menu), menu);
	menu_bar = gtk_menu_bar_new();
	gtk_box_pack_start(GTK_BOX(hbox3), menu_bar, TRUE, FALSE, 2);
	gtk_widget_show(menu_bar);
	gtk_menu_bar_append(GTK_MENU_BAR (menu_bar), root_menu);

	//Source File selection
	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox3), frame, TRUE, TRUE, 5);
	hbox3 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox3), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox3);

	entry_sourcedisk = gtk_entry_new ();
	gtk_entry_set_max_length (GTK_ENTRY (entry_sourcedisk), 100);
	gtk_entry_set_text (GTK_ENTRY (entry_sourcedisk), "Local Disk not Available");
	gtk_box_pack_start (GTK_BOX (hbox3), entry_sourcedisk, TRUE, TRUE, 0);
	//gtk_widget_show (entry_sourcedisk);

	button31 = gtk_button_new();
	arrow31  = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
	gtk_container_add (GTK_CONTAINER(button31), arrow31);    
	gtk_signal_connect_object (GTK_OBJECT (button31), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_filesel_sourcedisk),
				 NULL);
	gtk_box_pack_start (GTK_BOX (hbox3), button31, FALSE, FALSE, 0);

	//DELETE Button	  
	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox3), frame, TRUE, FALSE, 0);
	hbox3 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox3), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox3);
	button34 = gtk_button_new_with_label ("   DELETE    ");    
	gtk_signal_connect_object (GTK_OBJECT (button34), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_sourcedelete),
				 NULL);
	gtk_box_pack_start (GTK_BOX (hbox3), button34, TRUE, FALSE, 2);

	//Create Operations widget
	frame = gtk_frame_new(NULL);
	gtk_box_pack_start(GTK_BOX(boxa), frame, TRUE, TRUE, 0);
	vbox5 = gtk_vbox_new(FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (vbox5), DEF_PAD_SMALL);
	gtk_container_add (GTK_CONTAINER(frame), vbox5);

	button32 = gtk_button_new_with_label (" COPY  ");    
	gtk_signal_connect_object (GTK_OBJECT (button32), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_copy),
				 NULL);
	gtk_box_pack_start (GTK_BOX (vbox5), button32, FALSE, FALSE, DEF_PAD);

	button33 = gtk_button_new_with_label (" MOVE  ");    
	gtk_signal_connect_object (GTK_OBJECT (button33), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_move),
				 NULL);
	gtk_box_pack_start (GTK_BOX (vbox5), button33, FALSE, FALSE, DEF_PAD);

	//Create Destination File selection widget
	frame = gtk_frame_new("Destination Disk");
	gtk_box_pack_start(GTK_BOX(boxa), frame, TRUE, TRUE, 0);
	vbox4 = gtk_vbox_new(FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (vbox4), DEF_PAD_SMALL);
	gtk_container_add (GTK_CONTAINER(frame), vbox4);

	//Menu Item
	menu = gtk_menu_new();
	menu_items = gtk_menu_item_new_with_label("Local Disk");
	gtk_menu_append(GTK_MENU (menu), menu_items);
	gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate", GTK_SIGNAL_FUNC(menudest_response), (gpointer) g_strdup("Local Disk"));
	menu_items = gtk_menu_item_new_with_label("Remote Disk");
	gtk_menu_append(GTK_MENU (menu), menu_items);
	gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate", GTK_SIGNAL_FUNC(menudest_response), (gpointer) g_strdup("Remote Disk"));
	gtk_widget_show(menu_items);
	root_menu = gtk_menu_item_new_with_label("  Select Disk  ");
	gtk_widget_show(root_menu);

	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox4), frame, TRUE, FALSE, 0);
	hbox4 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox4), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox4);

	gtk_menu_item_set_submenu(GTK_MENU_ITEM (root_menu), menu);
	menu_bar = gtk_menu_bar_new();
	gtk_box_pack_start(GTK_BOX(hbox4), menu_bar, TRUE, FALSE, 2);
	gtk_widget_show(menu_bar);
	gtk_menu_bar_append(GTK_MENU_BAR (menu_bar), root_menu);

	//Dest File selection
	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox4), frame, TRUE, TRUE, 5);
	hbox4 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox4), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox4);

	entry_destdisk = gtk_entry_new ();
	gtk_entry_set_max_length (GTK_ENTRY (entry_destdisk), 100);
	gtk_entry_set_text (GTK_ENTRY (entry_destdisk), "Remote Disk not Available");
	gtk_box_pack_start (GTK_BOX (hbox4), entry_destdisk, TRUE, TRUE, 0);
	//gtk_widget_show (entry_sourcedisk);

	button41 = gtk_button_new();
	arrow41  = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
	gtk_container_add (GTK_CONTAINER(button41), arrow41);    
	gtk_signal_connect_object (GTK_OBJECT (button41), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_filesel_destdisk),
				 NULL);
	gtk_box_pack_start (GTK_BOX (hbox4), button41, FALSE, FALSE, 0);

	//Dest DELETE Button	  
	frame = gtk_frame_new(NULL);
	gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
	gtk_box_pack_start(GTK_BOX(vbox4), frame, TRUE, FALSE, 0);
	hbox4 = gtk_hbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (hbox4), 0);
	gtk_container_add (GTK_CONTAINER (frame), hbox4);
	button44 = gtk_button_new_with_label ("   DELETE    ");    
	gtk_signal_connect_object (GTK_OBJECT (button44), "clicked",
				 GTK_SIGNAL_FUNC (otg_clicked_destdelete),
				 NULL);
	gtk_box_pack_start (GTK_BOX (hbox4), button44, TRUE, FALSE, 2);

	cmap = gdk_colormap_get_system();
	colorarray[0].red = 0xffff;
	colorarray[0].green = 0;
	colorarray[0].blue = 0;
	if (!gdk_color_alloc(cmap, &colorarray[0])) {
		g_error("couldn't allocate red color");
	}
	colorarray[1].red = 0;
	colorarray[1].green = 0xffff;
	colorarray[1].blue = 0;
	if (!gdk_color_alloc(cmap, &colorarray[1])) {
		g_error("couldn't allocate blue color");
	}
	colorarray[2].red = 0;
	colorarray[2].green = 0;
	colorarray[2].blue = 0xffff;
	if (!gdk_color_alloc(cmap, &colorarray[2])) {
		g_error("couldn't allocate green color");
	}
	/* Create the Status box */
	frame = gtk_frame_new("Status pad");
	gtk_box_pack_start(GTK_BOX(box1), frame, TRUE, TRUE, 0);
	statusbox = gtk_vbox_new(FALSE, DEF_PAD);
	gtk_container_add (GTK_CONTAINER(frame), statusbox);
	//  gtk_widget_show (statusbox);
	scrolled_window = create_text ();
	gtk_box_pack_start (GTK_BOX (statusbox), scrolled_window, 	TRUE, TRUE, 0);

	bbox = gtk_hbutton_box_new ();
	gtk_box_pack_start (GTK_BOX (box1), bbox, FALSE, FALSE, 0);
	gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);

	button = gtk_button_new_with_label ("Close");
	gtk_signal_connect (GTK_OBJECT (button), "clicked", 
			  GTK_SIGNAL_FUNC (close_otgapp), 
			  NULL);
	gtk_container_add (GTK_CONTAINER (bbox), button);
	GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
	gtk_widget_grab_default (button);

	gtk_widget_show_all (window);

  	if(otgfsm_fd > 0) {

		fcntl(otgfsm_fd, F_SETOWN, getpid());
		flags = fcntl(otgfsm_fd, F_GETFL);
		fcntl(otgfsm_fd, F_SETFL, (flags|FASYNC));
		get_otg_info.state = OTG_INV_STATE;
		ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info);

		signal(SIGIO, &sig_handler);

		if((shmid = shmget(SHM_KEY, sizeof(shm_struct_t), IPC_CREAT|0666)) < 0) {
			printf("child error in shmget\n");
			addlist_otgapp( "child error in shmget\n");
		}

		if((shm = shmat(shmid, NULL, 0)) == (shm_struct_t*)-1){
			printf("child error in attaching shm\n");
			addlist_otgapp( "child error in attaching shm\n");

		}

		shm->signal_count = 0;
		shm->signal = 0;
		shm->flag = 0;
		ioctl(otgfsm_fd, OTG_IOC_GET_STATE, &get_otg_info);
		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");
			}
			
		}
		display_current_state();
	}

  gtk_main ();
  return(0);       
}
/* code-end */

⌨️ 快捷键说明

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