📄 otgmsapp.c
字号:
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 voidotg_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 voidotg_clicked_filesel_destdisk (GtkButton *button, 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 + -