Пример #1
0
// Deinitialize resources on window unload that were initialized on window load
void window_unload(Window *window) {
	current_app.unload();
	layer_remove_child_layers(rootLayer);
	if (window != NULL) {
		config_deinit(window);
	if (window != NULL)
		window_destroy(window);
	}
}
Пример #2
0
int main(int argc, char *argv[])
{
    int status;
    struct config *config = NULL;

    status = config_init_from_cmdline(argc, argv, &config);
    if (status < 0) {
        return status;
    } else if (status == 1) {
        print_test_help(argv[0]);
        return 0;
    } else if (status > 0) {
        fprintf(stderr, "Unexpected return value: %d\n", status);
        return status;
    }

    print_config(config);
    config_deinit(config);
    return EXIT_SUCCESS;
}
Пример #3
0
int main(int argc, char **argv) {
	signal(SIGHUP, sighandler);
	signal(SIGINT, sighandler);
	signal(SIGTERM, sighandler);
	signal(SIGPIPE, SIG_IGN);

	// Setting default file permissions to o+rw
	umask(~(S_IRUSR | S_IWUSR));

	// Turning off buffering
	setvbuf(stdout, NULL, _IONBF, 0);
	setvbuf(stderr, NULL, _IONBF, 0);

	processcommandline(argc, argv);

	if (!config_init(configfilename))
		return 1;

	daemon_poll_init();

	if (!usb_init())
		return 2;

	while (!nai_flags.sigexit) {
		if (!usb_process())
			break;
		if (!daemon_poll_process())
			break;
		if (!nai_process())
			break;
	}

	usb_deinit();
	daemon_poll_deinit();
	config_deinit();

	printf("main: exiting.\n");

	return 0;
}
Пример #4
0
int config_init_from_cmdline(int argc, char * const argv[],
                             struct config **config_out)
{
    int status = 0;
    struct config *config = NULL;
    int c, idx;
    bool valid;
    struct stat file_info;

    config = alloc_config_with_defaults();
    if (config == NULL) {
        pr_dbg("%s: Failed to alloc config.\n", __FUNCTION__);
        return -2;
    }

    while ((c = getopt_long(argc, argv, OPTIONS, long_options, &idx)) != -1) {
        switch (c) {
            case OPTION_HELP:
                status = 1;
                goto out;

            case OPTION_DEVICE:
                if (config->bladerf_dev == NULL) {
                    status = bladerf_open(&config->bladerf_dev, optarg);
                    if (status < 0) {
                        fprintf(stderr, "Failed to open bladeRF=%s: %s\n",
                                optarg, bladerf_strerror(status));
                        goto out;
                    }
                }
                break;

            case OPTION_OUTPUT:
                if (config->rx_output == NULL) {
                    if (!strcasecmp(optarg, "stdout")) {
                        config->rx_output = stdout;
                    } else {
                        config->rx_output = fopen(optarg, "wb");
                        if (config->rx_output == NULL) {
                            status = -errno;
                            fprintf(stderr, "Failed to open %s for writing: %s\n",
                                    optarg, strerror(-status));
                            goto out;
                        }
                    }
                }
                break;

            case OPTION_RXLNA:
                status = str2lnagain(optarg, &config->params.rx_lna_gain);
                if (status != 0) {
                    fprintf(stderr, "Invalid RX LNA gain: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_RXVGA1:
                config->params.rx_vga1_gain =
                    str2int(optarg,
                            BLADERF_RXVGA1_GAIN_MIN,
                            BLADERF_RXVGA1_GAIN_MAX,
                            &valid);

                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid RX VGA1 gain: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_RXVGA2:
                config->params.rx_vga2_gain =
                    str2int(optarg,
                            BLADERF_RXVGA2_GAIN_MIN,
                            BLADERF_RXVGA2_GAIN_MAX,
                            &valid);

                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid RX VGA2 gain: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_RXFREQ:
                config->params.rx_freq =
                    str2uint_suffix(optarg,
                                    BLADERF_FREQUENCY_MIN,
                                    BLADERF_FREQUENCY_MAX,
                                    freq_suffixes, num_freq_suffixes,
                                    &valid);

                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid RX frequency: %s\n", optarg);
                    goto out;
                }
                break;


            case OPTION_INPUT:
                if (config->tx_input == NULL) {
                    if (!strcasecmp(optarg, "stdin")) {
                        config->tx_input = stdin;
                        config->tx_filesize = -1;
                    } else {
                        config->tx_input = fopen(optarg, "rb");
                        if (config->tx_input == NULL) {
                            status = -errno;
                            fprintf(stderr, "Failed to open %s for reading: %s\n",
                                    optarg, strerror(-status));
                            goto out;
                        }
                        //Get file size
                        status = stat(optarg, &file_info);
                        if (status != 0){
                            fprintf(stderr, "Couldn't filesize of %s: %s\n",
                                    optarg, strerror(status));
                        }
                        config->tx_filesize = file_info.st_size;
                    }
                }
                break;

            case OPTION_TXVGA1:
                config->params.tx_vga1_gain =
                    str2int(optarg,
                            BLADERF_TXVGA1_GAIN_MIN,
                            BLADERF_TXVGA2_GAIN_MAX,
                            &valid);

                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid TX VGA1 gain: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_TXVGA2:
                config->params.tx_vga2_gain =
                    str2int(optarg,
                            BLADERF_TXVGA2_GAIN_MIN,
                            BLADERF_TXVGA2_GAIN_MAX,
                            &valid);

                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid TX VGA2 gain: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_TXFREQ:
                config->params.tx_freq =
                    str2uint_suffix(optarg,
                                    BLADERF_FREQUENCY_MIN,
                                    BLADERF_FREQUENCY_MAX,
                                    freq_suffixes, num_freq_suffixes,
                                    &valid);
                if (!valid) {
                    status = -1;
                    fprintf(stderr, "Invalid TX frequency: %s\n", optarg);
                    goto out;
                }
                break;

            case OPTION_QUIET:
                config->quiet = true;
                break;
        }
    }

    /* Initialize any properties not covered by user input */
    status = init_remaining_params(config);

out:
    if (status != 0) {
        config_deinit(config);
        *config_out = NULL;
    } else {
        *config_out = config;
    }

    return status;
}