Example #1
0
int main(int argc, char *argv[]) {
	GError *error = NULL;
	GOptionContext *context;


	printf("lysdr starting\n");

	// gtk3 remove threads, see how badly things go wrong
	//gdk_threads_init();
	//gdk_threads_enter();

	gtk_init(&argc, &argv);

	context = g_option_context_new ("-");
	g_option_context_add_main_entries (context, opts, NULL);
	g_option_context_add_group (context, gtk_get_option_group (TRUE));
	if (!g_option_context_parse (context, &argc, &argv, &error)) {
		g_print ("option parsing failed: %s\n", error->message);
		exit (1);
	}

	// create a new SDR, and set up the jack client
	sdr = sdr_new(fft_size);
	audio_start(sdr);

	// define a filter and configure a default shape
	sdr->filter = filter_fir_new(128, sdr->size);

	// hook up the jack ports and start the client
	fft_setup(sdr);
	audio_connect(sdr, connect_input, connect_output);

	sdr->centre_freq = centre_freq;

	gui_display(sdr);
	gtk_adjustment_set_value(GTK_ADJUSTMENT(sdr->tuning), 0);

	gtk_main();
	audio_stop(sdr);
	filter_fir_destroy(sdr->filter);
	fft_teardown(sdr);

	sdr_destroy(sdr);
	//gdk_threads_leave();
}
Example #2
0
/**
 * Fuehrt die Verarbeitung in der Hauptschleife nach dem
 * Verhaltenscode durch. Dazu gehoert beispielsweise, die
 * Bildschirmanzeige zu steuern und den Simulator ueber den aktuellen
 * Zustand zu informieren.
 */
void post_behaviour(void) {
	static uint16_t comm_ticks = 0;
	static uint8_t uart_gui = 0;
#if defined MCU && defined DEBUG_TIMES
	static uint32_t log_ticks = 0;
#endif

#ifdef BOT_2_RPI_AVAILABLE
	bot_2_linux_listen();
#endif // BOT_2_RPI_AVAILABLE

#ifdef CREATE_TRACEFILE_AVAILABLE
	trace_add_sensors();
#endif // CREATE_TRACEFILE_AVAILABLE

	/* jeweils alle 100 ms kommunizieren Bot, User und Sim */
	if (timer_ms_passed_16(&comm_ticks, 50)
#ifdef RC5_AVAILABLE
		|| RC5_Code != 0
#endif
	) {
		if (uart_gui == 0
#ifdef RC5_AVAILABLE
			|| RC5_Code != 0
#endif
		) {
#ifdef DISPLAY_AVAILABLE
			/* GUI-Behandlung starten */
			gui_display(display_screen);
#endif // DISPLAY_AVAILABLE
			uart_gui = 1; // bot-2-sim ist erst beim naechsten Mal dran
		} else {
#ifdef BOT_2_SIM_AVAILABLE
			/* Den Sim ueber Sensoren und Aktuatoren informieren */
			bot_2_sim_inform(); // NOP auf PC
#endif // BOT_2_SIM_AVAILABLE
			uart_gui = 0; // naechstes Mal wieder mit GUI anfangen
		}
	}

#if defined MCU && defined DEBUG_TIMES
	if (timer_ms_passed_32(&log_ticks, 1000UL)) {
		uint8_t cpu, uart_in, uart_out;
		os_get_utilizations(&cpu, &uart_in, &uart_out);
		LOG_INFO("CPU=%3u%% UART_IN=%3u%% UART_OUT=%3u%%", cpu, uart_in, uart_out);
	}
#endif // MCU && DEBUG_TIMES

#ifdef PC
#ifdef CREATE_TRACEFILE_AVAILABLE
	trace_add_actuators();
#endif // CREATE_TRACEFILE_AVAILABLE

	/* Sim oder ATmega ueber naechsten Schleifendurchlauf / Bot-Zyklus informieren */
#ifdef ARM_LINUX_BOARD
	set_bot_2_atmega();
#endif // ARM_LINUX_BOARD
	command_write(CMD_DONE, SUB_CMD_NORM, simultime, 0, 0); // flusht auch den Sendepuffer

#ifdef DEBUG_TIMES
	/* Zum Debuggen der Zeiten */
	GETTIMEOFDAY(&init_stop, NULL);
	int t2 = (init_stop.tv_sec - init_start.tv_sec) * 1000000 + init_stop.tv_usec - init_start.tv_usec;
	LOG_DEBUG("Done-Token (%d) out after %d usec", simultime, t2);
#endif // DEBUG_TIMES
#endif // PC

#if defined OS_AVAILABLE
	/* Rest der Zeitscheibe (OS_TIME_SLICE ms) schlafen legen */
	os_thread_yield();
#endif // OS_AVAILABLE
}
Example #3
0
void start_program (void)
{
//TODO: remove
	gui_display (-1);
	do_start_program ();
}
Example #4
0
static void *gui_process(void *d)
{
	gtk_widgets_t *data = d;

	char *source = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->open_dialog));
	char *output = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->save_dialog));

	if (!source || !output)
		*_status = STATUS_FAILED_IO;

	uint8_t *key = NULL;
	size_t length = 0;
	switch (_key_source)
	{
		case KEY_SOURCE_FILE:
			{
				char *k = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->key_dialog));
				length = 0;
				key = (uint8_t *)strdup(k);
				g_free(k);
			}
			break;

		case KEY_SOURCE_PASSWORD:
			{
				const char *k = gtk_entry_get_text((GtkEntry *)data->password_entry);
				length = strlen(k);
				key = (uint8_t *)strndup(k, length);
			}
			break;
	}

	int c = gtk_combo_box_get_active((GtkComboBox *)data->crypto_combo);
	int h = gtk_combo_box_get_active((GtkComboBox *)data->hash_combo);
	int m = gtk_combo_box_get_active((GtkComboBox *)data->mode_combo);
	const char **ciphers = list_of_ciphers();
	const char **hashes = list_of_hashes();
	const char **modes = list_of_modes();

	crypto_t *x;
	if (_encrypted)
		x = decrypt_init(source, output, ciphers[c - 1], hashes[h - 1], modes[m - 1], key, length, _raw);
	else
		x = encrypt_init(source, output, ciphers[c - 1], hashes[h - 1], modes[m - 1], key, length, _raw, _compress, _follow, _version);

	_status = &x->status;

	g_free(source);
	g_free(output);
	free(key);

	if (x->status == STATUS_INIT)
		execute(x);

	gui_display(x, data);

	if (x->status == STATUS_SUCCESS)
	{
		set_progress_bar((GtkProgressBar *)data->progress_bar_total, PERCENT);
		set_progress_bar((GtkProgressBar *)data->progress_bar_current, PERCENT);
	}

	set_status_bar((GtkStatusbar *)data->status_bar, status(x));

	set_progress_button((GtkButton *)data->progress_cancel_button, false);
	set_progress_button((GtkButton *)data->progress_close_button, true);

	deinit(&x);

	return NULL;
}