Exemplo n.º 1
0
LibFmQtData::LibFmQtData(): refCount(1) {
#if !GLIB_CHECK_VERSION(2, 36, 0)
  g_type_init();
#endif
  fm_init(NULL);
  // turn on glib debug message
  // g_setenv("G_MESSAGES_DEBUG", "all", true);
  iconTheme = new IconTheme();
  thumbnailLoader = new ThumbnailLoader();
  translator.load("libfm-qt_" + QLocale::system().name(), LIBFM_DATA_DIR "/translations");
}
Exemplo n.º 2
0
int main (int   argc, char *argv[])
{
    g_type_init();
    fm_init(NULL);

    g_test_init (&argc, &argv, NULL); // initialize test program
    g_test_add_func("/FmPath/new_child_len", test_path_child);
    g_test_add_func("/FmPath/path_parsing", test_path_parsing);
    g_test_add_func("/FmPath/uri_parsing", test_uri_parsing);
    g_test_add_func("/FmPath/predefined_paths", test_predefined_paths);

    return g_test_run();
}
static void com_broncho_jnibt_FMNative_native_init(JNIEnv* env, jobject object) 
{
	LOGE(__FUNCTION__);
	jclass clazz;
	int ret;
	
	context = (fm_context*) calloc(1, sizeof(fm_context));
	if(NULL == context) {
		LOGE("%s: out of memory-fm_context!", __FUNCTION__);
		return;
	}

	clazz = env->GetObjectClass(object);
	if(clazz == NULL) {
		LOGE("Cannot find FMNative.");
		jniThrowException(env, "java/lang/RuntimeException", "Cannot find com/broncho/jnibt/FMNative");
		return;
	}

	method_get_channel_freq_cb = env->GetMethodID(clazz, "get_channel_freq_cb", "(F)V");
	method_get_current_rssi_cb = env->GetMethodID(clazz, "get_current_rssi_cb", "(F)V");

	fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
	if (fields.context == NULL) {
		jniThrowException(env, "java/lang/RuntimeException", "Cannot find FMNative.mNativeContext");
		return;
	}

	env->SetIntField(object, fields.context, (jint)context);
	env->GetJavaVM(&(context->vm));
	context->envVer = env->GetVersion();
	context->me = env->NewGlobalRef(object);

	//init msgs
	init_msgs(&msgs);

	//start callback thread
	pthread_create(&callback_thread, NULL, fm_cb_thread, (void*)context);
	//register callback here!
	ret = fm_init(&fm_cbs);
	if (ret != 0) {
		LOGE("fm_init failed.\n");
		return;
	}

	ret = fm_func_on(&fm_block);
	if (ret != 0) {
		LOGE("fm_func_on failed.\n");
		return;
	}
}
Exemplo n.º 4
0
int main (int   argc, char *argv[])
{
#if !GLIB_CHECK_VERSION(2, 36, 0)
    g_type_init();
#endif
    fm_init(NULL);

    g_test_init (&argc, &argv, NULL); // initialize test program
    g_test_add_func("/FmPath/new_child_len", test_path_child);
    g_test_add_func("/FmPath/path_parsing", test_path_parsing);
    g_test_add_func("/FmPath/uri_parsing", test_uri_parsing);
    g_test_add_func("/FmPath/predefined_paths", test_predefined_paths);

    return g_test_run();
}
Exemplo n.º 5
0
void inits( void) {
	cli();
	USART_init(MYUBRR, TRUE);
	can_init();
	spi_init_master();
	fm_init();
	timer0_init();
	timer1_init();
	//TODO: RUN timer3_init();
	timer3_init();
	prepare_rx(1, ID_steeringWheel, MASK_FRONT_MODULE, fm_msg_handler);
	printf("\r\nFront module initialized");
	sei();
	set_bit(DDRB, DDB6);
	clear_bit(PORTB, PB6);
}
Exemplo n.º 6
0
/*
 * Setup the DDI but don't necessarily init the DDI.  This will happen
 * later once /boot is released.
 */
void
setup_ddi(void)
{
	impl_ddi_init_nodeid();
	impl_create_root_class();
	create_devinfo_tree();
	e_ddi_instance_init();
	impl_ddi_callback_init();
	log_event_init();
	fm_init();

	(void) i_ddi_load_drvconf((major_t)-1);

	ldi_init();

	i_ddi_devices_init();
	i_ddi_read_devices_files();
}
Exemplo n.º 7
0
/*
 * Setup the DDI but don't necessarily init the DDI.  This will happen
 * later once /boot is released.
 */
void
setup_ddi(void)
{
	impl_ddi_init_nodeid();
	impl_create_root_class();
	create_devinfo_tree();
	e_ddi_instance_init();
	impl_ddi_callback_init();
	log_event_init();
	fm_init();
	ndi_fm_init();
	irm_init();

	(void) i_ddi_load_drvconf(DDI_MAJOR_T_NONE);

	ldi_init();

	i_ddi_devices_init();
	i_ddi_read_devices_files();
}
Exemplo n.º 8
0
static int new_obj(lua_State *lstate) {
	GEN *gen;
	lua_Number duration, gain;
	char gentype[64];
	duration = -1.0;
	gain = 1.0;
	strcpy(gentype, lua_tostring(lstate, -2));
	lua_remove(lstate, -2);
	getnumber(lstate, "duration", &duration);
	getnumber(lstate, "gain", &gain);
	gen = (GEN *)malloc(sizeof(GEN));
	gen->data = NULL;
	gen->init = NULL;
	gen->generate = NULL;
	gen->phase = 0.0;
	if (strcmp(gentype, "fm") == 0) {
		fm_init(lstate, gen);
		gen->generate = fm_generate;
		}
	else if (strcmp(gentype, "sine") == 0) {
		sine_init(lstate, gen);
		gen->generate = sine_generate;
		}
	else if (strcmp(gentype, "white") == 0) {
		gen->generate = white_generate;
		}
	lua_pop(lstate, 1);
	lua_newtable(lstate);
	init_fader(&(gen->unit.fader), gain);
	gen->running = 0;
	lua_pushstring(lstate, "intern");
	lua_pushlightuserdata(lstate, (void *)gen);
	lua_settable(lstate, -3);
	add_method(lstate, "play", gen_play);
	add_fader_methods(lstate);
	add_method(lstate, "stop", gen_stop);
	gen->final_frame = duration * jack_sr;
	gen->pos = 0;
	return 1;
	}
Exemplo n.º 9
0
int main(int argc, char **argv)
{
#ifndef _WIN32
	struct sigaction sigact;
#endif
	struct fm_state fm; 
	char *filename = NULL;
	int n_read, r, opt, wb_mode = 0;
	int i, gain = AUTO_GAIN; // tenths of a dB
	uint8_t *buffer;
	uint32_t dev_index = 0;
	int device_count;
	int ppm_error = 0;
	char vendor[256], product[256], serial[256];
	fm_init(&fm);
	pthread_cond_init(&data_ready, NULL);
	pthread_rwlock_init(&data_rw, NULL);
	pthread_mutex_init(&data_mutex, NULL);

	while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:t:r:p:EFA:NWMULRDCh")) != -1) {
		switch (opt) {
		case 'd':
			dev_index = atoi(optarg);
			break;
		case 'f':
			if (fm.freq_len >= FREQUENCIES_LIMIT) {
				break;}
			if (strchr(optarg, ':'))
				{frequency_range(&fm, optarg);}
			else
			{
				fm.freqs[fm.freq_len] = (uint32_t)atofs(optarg);
				fm.freq_len++;
			}
			break;
		case 'g':
			gain = (int)(atof(optarg) * 10);
			break;
		case 'l':
			fm.squelch_level = (int)atof(optarg);
			break;
		case 's':
			fm.sample_rate = (uint32_t)atofs(optarg);
			break;
		case 'r':
			fm.output_rate = (int)atofs(optarg);
			break;
		case 'o':
			fm.post_downsample = (int)atof(optarg);
			if (fm.post_downsample < 1 || fm.post_downsample > MAXIMUM_OVERSAMPLE) {
				fprintf(stderr, "Oversample must be between 1 and %i\n", MAXIMUM_OVERSAMPLE);}
			break;
		case 't':
			fm.conseq_squelch = (int)atof(optarg);
			if (fm.conseq_squelch < 0) {
				fm.conseq_squelch = -fm.conseq_squelch;
				fm.terminate_on_squelch = 1;
			}
			break;
		case 'p':
			ppm_error = atoi(optarg);
			break;
		case 'E':
			fm.edge = 1;
			break;
		case 'F':
			fm.fir_enable = 1;
			break;
		case 'A':
			if (strcmp("std",  optarg) == 0) {
				fm.custom_atan = 0;}
			if (strcmp("fast", optarg) == 0) {
				fm.custom_atan = 1;}
			if (strcmp("lut",  optarg) == 0) {
				atan_lut_init();
				fm.custom_atan = 2;}
			break;
		case 'D':
			fm.deemph = 1;
			break;
		case 'C':
			fm.dc_block = 1;
			break;
		case 'N':
			fm.mode_demod = &fm_demod;
			break;
		case 'W':
			wb_mode = 1;
			fm.mode_demod = &fm_demod;
			fm.sample_rate = 170000;
			fm.output_rate = 32000;
			fm.custom_atan = 1;
			fm.post_downsample = 4;
			fm.deemph = 1;
			fm.squelch_level = 0;
			break;
		case 'M':
			fm.mode_demod = &am_demod;
			break;
		case 'U':
			fm.mode_demod = &usb_demod;
			break;
		case 'L':
			fm.mode_demod = &lsb_demod;
			break;
		case 'R':
			fm.mode_demod = &raw_demod;
			break;
		case 'h':
		default:
			usage();
			break;
		}
	}
	/* quadruple sample_rate to limit to Δθ to ±π/2 */
	fm.sample_rate *= fm.post_downsample;

	if (fm.freq_len == 0) {
		fprintf(stderr, "Please specify a frequency.\n");
		exit(1);
	}

	if (fm.freq_len >= FREQUENCIES_LIMIT) {
		fprintf(stderr, "Too many channels, maximum %i.\n", FREQUENCIES_LIMIT);
		exit(1);
	}

	if (fm.freq_len > 1 && fm.squelch_level == 0) {
		fprintf(stderr, "Please specify a squelch level.  Required for scanning multiple frequencies.\n");
		exit(1);
	}

	if (fm.freq_len > 1) {
		fm.terminate_on_squelch = 0;
	}

	if (argc <= optind) {
		filename = "-";
	} else {
		filename = argv[optind];
	}

	ACTUAL_BUF_LENGTH = lcm_post[fm.post_downsample] * DEFAULT_BUF_LENGTH;
	buffer = malloc(ACTUAL_BUF_LENGTH * sizeof(uint8_t));

	device_count = rtlsdr_get_device_count();
	if (!device_count) {
		fprintf(stderr, "No supported devices found.\n");
		exit(1);
	}

	fprintf(stderr, "Found %d device(s):\n", device_count);
	for (i = 0; i < device_count; i++) {
		rtlsdr_get_device_usb_strings(i, vendor, product, serial);
		fprintf(stderr, "  %d:  %s, %s, SN: %s\n", i, vendor, product, serial);
	}
	fprintf(stderr, "\n");

	fprintf(stderr, "Using device %d: %s\n",
		dev_index, rtlsdr_get_device_name(dev_index));

	r = rtlsdr_open(&dev, dev_index);
	if (r < 0) {
		fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index);
		exit(1);
	}
#ifndef _WIN32
	sigact.sa_handler = sighandler;
	sigemptyset(&sigact.sa_mask);
	sigact.sa_flags = 0;
	sigaction(SIGINT, &sigact, NULL);
	sigaction(SIGTERM, &sigact, NULL);
	sigaction(SIGQUIT, &sigact, NULL);
	sigaction(SIGPIPE, &sigact, NULL);
#else
	SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE );
#endif

	/* WBFM is special */
	// I really should loop over everything
	// but you are more wrong for scanning broadcast FM
	if (wb_mode) {
		fm.freqs[0] += 16000;
	}

	if (fm.deemph) {
		fm.deemph_a = (int)round(1.0/((1.0-exp(-1.0/(fm.output_rate * 75e-6)))));
	}

	optimal_settings(&fm, 0, 0);
	build_fir(&fm);

	/* Set the tuner gain */
	if (gain == AUTO_GAIN) {
		r = rtlsdr_set_tuner_gain_mode(dev, 0);
	} else {
		r = rtlsdr_set_tuner_gain_mode(dev, 1);
		gain = nearest_gain(gain);
		r = rtlsdr_set_tuner_gain(dev, gain);
	}
	if (r != 0) {
		fprintf(stderr, "WARNING: Failed to set tuner gain.\n");
	} else if (gain == AUTO_GAIN) {
		fprintf(stderr, "Tuner gain set to automatic.\n");
	} else {
		fprintf(stderr, "Tuner gain set to %0.2f dB.\n", gain/10.0);
	}
	r = rtlsdr_set_freq_correction(dev, ppm_error);

	if (strcmp(filename, "-") == 0) { /* Write samples to stdout */
		fm.file = stdout;
#ifdef _WIN32
		_setmode(_fileno(fm.file), _O_BINARY);
#endif
	} else {
		fm.file = fopen(filename, "wb");
		if (!fm.file) {
			fprintf(stderr, "Failed to open %s\n", filename);
			exit(1);
		}
	}

	/* Reset endpoint before we start reading from it (mandatory) */
	r = rtlsdr_reset_buffer(dev);
	if (r < 0) {
		fprintf(stderr, "WARNING: Failed to reset buffers.\n");}

	pthread_create(&demod_thread, NULL, demod_thread_fn, (void *)(&fm));
	/*rtlsdr_read_async(dev, rtlsdr_callback, (void *)(&fm),
			      DEFAULT_ASYNC_BUF_NUMBER,
			      ACTUAL_BUF_LENGTH);*/

	while (!do_exit) {
		sync_read(buffer, ACTUAL_BUF_LENGTH, &fm);
	}

	while (!do_exit) {
		sync_read(buffer, ACTUAL_BUF_LENGTH, &fm);
	}
	
	if (do_exit) {
		fprintf(stderr, "\nUser cancel, exiting...\n");}
	else {
		fprintf(stderr, "\nLibrary error %d, exiting...\n", r);}

	//rtlsdr_cancel_async(dev);
	safe_cond_signal(&data_ready, &data_mutex);
	pthread_join(demod_thread, NULL);

	pthread_cond_destroy(&data_ready);
	pthread_rwlock_destroy(&data_rw);
	pthread_mutex_destroy(&data_mutex);

	if (fm.file != stdout) {
		fclose(fm.file);}

	rtlsdr_close(dev);
	free (buffer);
	return r >= 0 ? r : -r;
}
Exemplo n.º 10
0
void start_opl_emulation()
{
    fm_init();
    buf=malloc(chunksize*channels*2);
    Mix_HookMusic(opl_callback,NULL);
}
Exemplo n.º 11
0
int main(int argc, char** argv)
{
    GOptionContext * context;

#if !GLIB_CHECK_VERSION(2, 36, 0)
    g_type_init();
#endif
    fm_init(NULL);

    context = g_option_context_new(" - test for libfm file search");
    g_option_context_add_main_entries(context, entries, NULL);
    if(g_option_context_parse(context, &argc, &argv, NULL) == FALSE)
		return 1;

    GString* search_uri = g_string_sized_new(1024);
    g_string_append(search_uri, "search:/");
    g_string_append(search_uri, path_list);

    g_string_append_c(search_uri, '?');

    g_string_append_printf(search_uri, "recursive=%d", not_recursive ? 0 : 1);
    g_string_append_printf(search_uri, "&show_hidden=%d", show_hidden ? 1 : 0);

    if(target)
    {
        g_string_append_printf(search_uri, "&name=%s", target);
        if(case_insensitive_target)
            g_string_append_printf(search_uri, "&name_ci=%d", case_insensitive_target ? 0 : 1);
    }

    if(target_contains)
    {
        if(regex_content)
            g_string_append_printf(search_uri, "&content_regex=%s", target_contains);
        else
            g_string_append_printf(search_uri, "&content=%s", target_contains);

        if(case_insensitive_content)
            g_string_append_printf(search_uri, "&content_ci=%d", case_insensitive_target ? 0 : 1);
    }

    if(target_type)
        g_string_append_printf(search_uri, "&types=%s", target_type);

    if(min_size > 0)
        g_string_append_printf(search_uri, "&min_size=%llu", (long long unsigned int)min_size);

    if(max_size > 0)
        g_string_append_printf(search_uri, "&max_size=%llu", (long long unsigned int)max_size);

    // g_string_append(search_uri, "search://usr/share?recursive=1&name=*.mo&name_mode=widecard&show_hidden=0&name_case_sensitive=1");

    g_print("URI: %s\n", search_uri->str);

    FmFolder* folder = fm_folder_from_uri(search_uri->str);
    g_string_free(search_uri, TRUE);
    g_signal_connect(folder, "files-added", G_CALLBACK(on_files_added), NULL);
    g_signal_connect(folder, "finish-loading", G_CALLBACK(on_finish_loading), NULL);

    /* g_timeout_add_seconds(30, on_timeout, NULL); */

    loop = g_main_loop_new(NULL, TRUE);
    g_main_loop_run(loop);
    g_main_loop_unref(loop);
    g_object_unref(folder);

    fm_finalize();
    return 0;
}