Beispiel #1
0
void open_serial_port(const char *port_name)
{
	int r;
	struct serial_struct kernel_serial_settings;

	if (port_fd >= 0) {
		close(port_fd);
	}
	port_fd = open(port_name, O_RDWR | O_NDELAY | O_NOCTTY);
	if (port_fd < 0) {
		report_open_error(port_name, errno);
		return;
	}
	r = set_baud(baud_setting());
	if (r == 0) {
		printf("Port \"%s\" opened at %s baud\r\n",
			port_name, baud_setting());
		new_port_setting(port_name);
	} else {
		printf("Port \"%s\" opened, unable to set baud to %s\r\n",
			port_name, baud_setting());
	}
	/* attempt to set low latency mode, but don't worry if we can't */
	r = ioctl(port_fd, TIOCGSERIAL, &kernel_serial_settings);
	if (r < 0) return;
	kernel_serial_settings.flags |= ASYNC_LOW_LATENCY;
	ioctl(port_fd, TIOCSSERIAL, &kernel_serial_settings);
}
Beispiel #2
0
void create_window(int *argc, char ***argv)
{
	GList *gtk_baud_list=NULL;
	int i;

	gtk_init(argc, argv);

	firmware_label = gtk_label_new("Firmware:");
	gtk_label_set_justify(GTK_LABEL(firmware_label), GTK_JUSTIFY_RIGHT);
	gtk_widget_show(firmware_label);

	firmware_entry = gtk_entry_new();
	gtk_widget_set_usize(firmware_entry, 110, 0);
	gtk_entry_set_text(GTK_ENTRY(firmware_entry), file_setting());
	gtk_widget_show(firmware_entry);

	program_button = gtk_button_new_with_label("Program Now");
	if (file_exists(file_setting())) {
		gtk_widget_set_sensitive(program_button, TRUE);
	} else {
		gtk_widget_set_sensitive(program_button, FALSE);
	}
	gtk_widget_show(program_button);

	line1_hbox = gtk_hbox_new(FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line1_hbox), firmware_label, FALSE, FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line1_hbox), firmware_entry, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line1_hbox), program_button, FALSE, FALSE, 2);
	gtk_widget_show(line1_hbox);


	port_label = gtk_label_new("Port:");
	gtk_label_set_justify(GTK_LABEL(port_label), GTK_JUSTIFY_RIGHT);
	gtk_widget_show(port_label);

	port_entry = gtk_entry_new();
	gtk_widget_set_usize(port_entry, 80, 0);
	gtk_entry_set_text(GTK_ENTRY(port_entry), port_setting());
	open_serial_port(port_setting());
	gtk_widget_show(port_entry);

	baud_label = gtk_label_new("Baud:");
	gtk_label_set_justify(GTK_LABEL(baud_label), GTK_JUSTIFY_RIGHT);
	gtk_widget_show(baud_label);
	
	baud_combo = gtk_combo_new();
	for (i=0; baud_list[i] != NULL; i++) {
		gtk_baud_list = g_list_append(gtk_baud_list, baud_list[i]);
	}
	gtk_combo_set_popdown_strings(GTK_COMBO(baud_combo), gtk_baud_list);
	gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(baud_combo)->entry), FALSE);
	gtk_widget_set_usize(baud_combo, 75, 0);
	for (i=0; baud_list[i] != NULL; i++) {
		if (strcmp(baud_list[i], baud_setting()) == 0) {
			gtk_list_select_item(GTK_LIST(GTK_COMBO(baud_combo)->list), i);
			break;
		}
	}
	gtk_widget_show(baud_combo);

	line2_hbox = gtk_hbox_new(FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line2_hbox), port_label, FALSE, FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line2_hbox), port_entry, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line2_hbox), baud_label, FALSE, FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line2_hbox), baud_combo, FALSE, FALSE, 2);
	gtk_widget_show(line2_hbox);


	crystal_label = gtk_label_new("Crystal:");
	gtk_label_set_justify(GTK_LABEL(crystal_label), GTK_JUSTIFY_RIGHT);
	gtk_widget_show(crystal_label);

	crystal_entry = gtk_entry_new();
	gtk_widget_set_usize(crystal_entry, 80, 0);
	gtk_entry_set_text(GTK_ENTRY(crystal_entry), crystal_setting());
	gtk_widget_show(crystal_entry);

	mhz_label = gtk_label_new("(MHz)");
	gtk_label_set_justify(GTK_LABEL(mhz_label), GTK_JUSTIFY_LEFT);
	gtk_widget_show(mhz_label);

	line3_hbox = gtk_hbox_new(FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line3_hbox), crystal_label, FALSE, FALSE, 2);
	gtk_box_pack_start(GTK_BOX(line3_hbox), crystal_entry, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line3_hbox), mhz_label, FALSE, FALSE, 2);
	gtk_widget_show(line3_hbox);


	reboot_button = gtk_button_new_with_label("Reboot");
	gtk_widget_set_sensitive(reboot_button, TRUE);
	gtk_widget_show(reboot_button);

	bootloader_button = gtk_button_new_with_label("Booloader");
	gtk_widget_show(bootloader_button);

	quit_button = gtk_button_new_with_label("Quit");
	gtk_widget_show(quit_button);

	line4_hbox = gtk_hbox_new(TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line4_hbox), reboot_button, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line4_hbox), bootloader_button, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(line4_hbox), quit_button, TRUE, TRUE, 2);
	gtk_widget_show(line4_hbox);

	main_vbox = gtk_vbox_new(FALSE, 2);
	gtk_box_pack_start(GTK_BOX(main_vbox), line1_hbox, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(main_vbox), line2_hbox, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(main_vbox), line3_hbox, TRUE, TRUE, 2);
	gtk_box_pack_start(GTK_BOX(main_vbox), line4_hbox, TRUE, TRUE, 2);
	gtk_widget_show(main_vbox);

	main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_container_add(GTK_CONTAINER(main_window), main_vbox);
	gtk_widget_show(main_window);
}