📄 otgmsapp.c
字号:
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 + -