コード例 #1
0
static int send_device(const u8_t *desc, int connfd)
{
	struct devlist_device dev;

	fill_device(&dev, desc);

	if (send(connfd, &dev, sizeof(dev), 0) != sizeof(dev)) {
		LOG_ERR("send() device failed: %s", strerror(errno));
		return errno;
	}

	return 0;
}
コード例 #2
0
int main(int argc, char * argv[])
{
    SGF_t	mon_SGF;		/* ma structure de SGF */
    superbloc_t	mon_superbloc;		/* ma structure de Superbloc */


    if ( argc > 1 )
    {
	fprintf(stderr,"Usage: %s\n", argv[0]);
	exit (EXIT_PARAM);
    }

/* initialisation des structures du SF  */

    mon_SGF.device_num = create_device(argv[0]);	/* numéro du périphérique de mémoire de masse géré */
    if (mon_SGF.device_num < 0)				/* normalement l'erreur est déjà gérée dans create_device */
	exit (EXIT_DEVICE);

    init_constantes_superbloc (&mon_superbloc);		/* initialise le superbloc avec des valeurs contantes par défaut */

    mon_SGF.superbloc = &mon_superbloc;			/* pointeur vers la structure du superbloc en mémoire */

    mon_SGF.table_inoeuds = malloc(mon_SGF.superbloc->nb_max_inoeuds * sizeof(inoeud_t));
    if (mon_SGF.table_inoeuds == NULL)			/* pointeur vers la table des inoeuds */
    {
	fprintf(stderr,"%s: pb allocation mémoire\n", argv[0]);
	exit (EXIT_MEM_ALLOC);
    }

    init_constantes_table_inoeuds (&mon_SGF);		/* initialise la tables des inoeuds avec des valeurs contantes */

    fill_device(argv[0], &mon_SGF);			/* allocation (par écriture) des blocs sur le périphérique de mémoire de masse */

    ajoute_inoeud_racine(argv[0], &mon_SGF);

    close(mon_SGF.device_num);

    printf("%s: nb inoeuds: %d, nb blocs %d,", argv[0], mon_SGF.superbloc->nb_max_inoeuds, mon_SGF.superbloc->taille_du_SF );
    printf(" taille d'un bloc %d o (taille min: %ld o)\n", mon_SGF.superbloc->taille_bloc, (long int)sizeof(superbloc_t));
    printf("%s: terminé \n", argv[0]);

    exit (0);
}
コード例 #3
0
ファイル: JackAlsaDriver.cpp プロジェクト: adiknoth/jack2
static
jack_driver_param_constraint_desc_t *
enum_alsa_devices()
{
    snd_ctl_t * handle;
    snd_ctl_card_info_t * info;
    snd_pcm_info_t * pcminfo_capture;
    snd_pcm_info_t * pcminfo_playback;
    int card_no = -1;
    char card_id[JACK_DRIVER_PARAM_STRING_MAX + 1];
    char device_id[JACK_DRIVER_PARAM_STRING_MAX + 1];
    char description[64];
    int device_no;
    bool has_capture;
    bool has_playback;
    jack_driver_param_constraint_desc_t * constraint_ptr;
    uint32_t array_size = 0;

    snd_ctl_card_info_alloca(&info);
    snd_pcm_info_alloca(&pcminfo_capture);
    snd_pcm_info_alloca(&pcminfo_playback);

    constraint_ptr = NULL;

    while(snd_card_next(&card_no) >= 0 && card_no >= 0)
    {
        snprintf(card_id, sizeof(card_id), "hw:%d", card_no);

        if (snd_ctl_open(&handle, card_id, 0) >= 0 &&
            snd_ctl_card_info(handle, info) >= 0)
        {
            fill_device(&constraint_ptr, &array_size, card_id, snd_ctl_card_info_get_name(info));

            device_no = -1;

            while (snd_ctl_pcm_next_device(handle, &device_no) >= 0 && device_no != -1)
            {
                snprintf(device_id, sizeof(device_id), "%s,%d", card_id, device_no);

                snd_pcm_info_set_device(pcminfo_capture, device_no);
                snd_pcm_info_set_subdevice(pcminfo_capture, 0);
                snd_pcm_info_set_stream(pcminfo_capture, SND_PCM_STREAM_CAPTURE);
                has_capture = snd_ctl_pcm_info(handle, pcminfo_capture) >= 0;

                snd_pcm_info_set_device(pcminfo_playback, device_no);
                snd_pcm_info_set_subdevice(pcminfo_playback, 0);
                snd_pcm_info_set_stream(pcminfo_playback, SND_PCM_STREAM_PLAYBACK);
                has_playback = snd_ctl_pcm_info(handle, pcminfo_playback) >= 0;

                if (has_capture && has_playback)
                {
                    snprintf(description, sizeof(description),"%s (duplex)", snd_pcm_info_get_name(pcminfo_capture));
                }
                else if (has_capture)
                {
                    snprintf(description, sizeof(description),"%s (capture)", snd_pcm_info_get_name(pcminfo_capture));
                }
                else if (has_playback)
                {
                    snprintf(description, sizeof(description),"%s (playback)", snd_pcm_info_get_name(pcminfo_playback));
                }
                else
                {
                    continue;
                }

                fill_device(&constraint_ptr, &array_size, device_id, description);
            }

            snd_ctl_close(handle);
        }
    }

    return constraint_ptr;
}