int feld_rxprocess(struct trx *trx, float *buf, int len)
{
	struct feld *s = (struct feld *) trx->modem;
	complex z, *zp;
	int i, n;

	if (trx->bandwidth != trx->hell_bandwidth) {
		float lp = trx->hell_bandwidth / 2.0 / SampleRate;

		fftfilt_set_freqs(s->fftfilt, 0, lp);

		trx->bandwidth = trx->hell_bandwidth;
	}

	while (len-- > 0) {
		/* create analytic signal... */
		c_re(z) = c_im(z) = *buf++;

		filter_run(s->hilbert, z, &z);

		/* ...so it can be shifted in frequency */
		z = mixer(trx, z);

		n = fftfilt_run(s->fftfilt, z, &zp);

		for (i = 0; i < n; i++)
			feld_rx(trx, zp[i]);
	}

	return 0;
}
Exemplo n.º 2
0
/*
 * Build and return the mime payload container
 */
MIME *ebxml_getpayload (XML *xml, QUEUEROW *r)
{
  int l, mapi;
  XML *exml;
  MIME *msg;
  char *b,			/* buffer for payload		*/
       *type,
       *unc = NULL,		/* encryption info		*/
       *pw = NULL,
       dn[DNSZ],
       *organization,
       pid[MAX_PATH],
       buf[MAX_PATH],
       fname[MAX_PATH];

  debug ("getpayload container...\n");
  if ((mapi = ebxml_pid (xml, r, pid)) < 0)
    return (NULL);
  ppathf (fname, cfg_map (xml, mapi, "Processed"), "%s",
    queue_field_get (r, "PAYLOADFILE"));

  /* invoke the filter if given					*/
  b = cfg_map (xml, mapi, "Filter");
  if (*b)
  {
    char *emsg;
    DBUF *rbuf = dbuf_alloc ();

    debug ("filter read %s with %s\n", fname, b);
    if (filter_run (b, fname, NULL, NULL, rbuf, &emsg, cfg_timeout (xml)))
    {
      error ("Can't filter %s - %s\n", fname, strerror (errno));
      dbuf_free (rbuf);
      return (NULL);
    }
    if (*emsg)
      warn ("filter %s returned %s\n", b, emsg);
    free (emsg);
    l = dbuf_size (rbuf);
    b = dbuf_extract (rbuf);
  }
  else
  {
    debug ("reading data from %s\n", fname);
    if ((b = readfile (fname, &l)) == NULL)
    {
      error ("Can't read %s - %s\n", fname, strerror (errno));
      return (NULL);
    }
  }

  organization = cfg_org (xml);
  type = cfg_map (xml, mapi, "Encryption.Type");
  if ((type != NULL) && *type)	/* encrypted			*/
  {
    unc = cfg_map (xml, mapi, "Encryption.Unc");
    pw = cfg_map (xml, mapi, "Encryption.Password");
    strcpy (dn, cfg_map (xml, mapi, "Encryption.Id"));
  }

  msg = payload_create (b, l, fname, organization, unc, dn, pw);

  free (b);
  if (msg == NULL)
    error ("Can't create payload container for %s\n", fname);
  return (msg);
}
static void
complete (CamelMimeFilter *f, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
{
	filter_run (f, in, len, prespace, out, outlen, outprespace, TRUE);
}
static void
filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
{
	filter_run (f, in, len, prespace, out, outlen, outprespace, FALSE);
}
Exemplo n.º 5
0
 inline void image_filter_short_run(Iter i, const Iter end, const int max_length, const Color& color) {
   for (; i != end; i++)
     filter_run(i.begin(), i.end(), max_length, std::less<size_t>(), color);
 }
Exemplo n.º 6
0
 inline void image_filter_long_run(Iter i, const Iter end, const int min_length, const Color& color) {
   for (; i != end; i++)
     filter_run(i.begin(), i.end(), min_length, std::greater<size_t>(), color);
 }
Exemplo n.º 7
0
Arquivo: alobe.c Projeto: glenux/alobe
int main(int argc, char ** argv){
	srand(time(NULL));

	Config_t * config = config_create (argc, argv);
	if (!config_is_valid (config)) { config_usage (config); exit(-1); }
    pDEBUG("Got config from command line\n");

	config_set (config);
    pDEBUG("Config set\n");

	// en fonction de la commande 
	switch (config->command){
		case COMMAND_TP1_FILTER_EX2:
			{
				Filter_t * filter = filter_create(&(config->io), 
						config->filter_size,
						config->filter_offset);
				filter_run (filter);
				filter_destroy (filter);
			}
			break;

		case COMMAND_TP1_DEGREE_EX3:
			{	
				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGREE);
				degree_set_output (degree, true);
				degree_fill_from_input_graph (degree);
				degree_destroy (degree);
			}
			break;

		case COMMAND_TP1_STORE_GRAPH_EX4:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);
				store_destroy (store);
			}
			break;

		case COMMAND_TP1_DENSITY_AVGDEGREE_MAXDEGREE_EX5:
			{
				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGSTATS);
				degree_set_output (degree, true);
				degree_fill_from_input_graph (degree);
				degree_destroy (degree);
			}
			break;

		case COMMAND_TP1_CONNEXITY_EX6:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);
				store_connexity (store, NULL);
				store_destroy (store);
			}
			break;

		case COMMAND_TP1_CONNEXITY_DEFI:
			{
				Defi_t * defi = defi_create(&(config->io),
						config->nodecount);
				defi_run (defi);
				defi_destroy (defi);
			}
			break;

		case COMMAND_TP2_DISTANCE_ONE_TO_OTHER_EX1:
			{
				fprintf(stderr,"Exercice 1 - Ecrire un  programme qui,  étant  donné un\n");
				fprintf(stderr," graphe et un de ses noeud,  calcule la distance  de ce\n");
				fprintf(stderr," noeud  a tous  les  autres,  ainsi que  la moyenne  de\n");
				fprintf(stderr," toutes ces distances.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_MAX_AND_AVERAGE);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, 1);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;

		case COMMAND_TP2_PLOT_DISTRIB_DISTANCES_EX2:
			{
				fprintf(stderr,"Exercice 2 - Tracer la  distribution des  distances à un\n");
				fprintf(stderr," noeud donné, c'est à dire pour chaque entier  i le nom-\n");
				fprintf(stderr," bre de noeuds à distance i du noeud donné.\n\n");
				
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_MAX_DISTRIBUTION);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, 1);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_EVOL_OF_DISTS_FNC_NB_PARCOURS_EX3:
			{
				fprintf(stderr, "Exercice 3 - Ecrire un  programme  qui permet  de tracer\n");
				fprintf(stderr, " l'évolution de  l'estimation de  la distance moyenne en\n");
				fprintf(stderr, " fonction du nombre de parcours effectués.\n");
				fprintf(stderr, "A chaque étape, le programme calcule la distance moyenne\n");
				fprintf(stderr, " d'un noeud à tous les autres, puis fait la moyenne avec\n");
				fprintf(stderr, " toutes les valeurs précédentes.\n\n");
						
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_EVOLUTION);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_LIMIT_INFERIOR_EX4:
			{
				fprintf(stderr, "Exercice 4 - Ecrire un  programme qui  calcule une borne\n");
				fprintf(stderr, " inférieure du diamètre, en prenant la distance maximale\n");
				fprintf(stderr, " d'un noeud donné à tous les autres.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_SHOW_LIMIT_INF);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_LIMIT_SUPERIOR_EX5:
			{
				fprintf(stderr, "Exercice 5 - Ecrire un programme  qui calcule  une borne\n");
				fprintf(stderr, " supérieure du diamètre, en prenant la distance maximale\n");
				fprintf(stderr, " dans l'arbre du parcours en largeur.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_SHOW_LIMIT_SUP);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_EVOLUTION_AND_LIMITS_DEFI:
			{
				fprintf(stderr, "Défi - Ecrire un  programme qui  donne un  encadrement de\n");
				fprintf(stderr, " plus en plus fin  du diamètre d'un graphe.  Le programme\n");
				fprintf(stderr, " effectue à  chaque étape  un parcours  en largeur et  en\n");
				fprintf(stderr, " déduit une borne inférieure et une borne supérieure pour\n");
				fprintf(stderr, " le diamètre.  Si elle  améliorent le résultat  elle sont\n");
				fprintf(stderr, " conservées  à la  place des meilleures  valeurs trouvées\n");
				fprintf(stderr, " lors des étapes précédentes.\n\n");
				
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_DEFI);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;

		case COMMAND_TP3_DISTRIB_DEG_EX1:
			{
				fprintf(stderr, "Exercice 1 - Ecrire un programme qui calcule la distribu-\n");
				fprintf(stderr, " tion des degrés d'un graphe.\n");

				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGREE);
				degree_set_output (degree, false);
				degree_fill_from_input_graph (degree);

				degree_output_distribution (degree);
				degree_destroy (degree);

			}
			break;

		case COMMAND_TP3_EVOL_AVG_DEG_EX2:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);

				store_compute_avg_degree(store, config->iterations);

				store_destroy (store);

			}
			break;

		case COMMAND_TP3_GENERATE_EX3:
			{

				fprintf(stderr, "Generating a random graph\n");

				Generator_t * generator = generator_create(&(config->io),
						config->nodecount,
						config->filter_size);

				generator_run (generator);
				generator_destroy (generator); 
			}
			break;
			
		case COMMAND_TP3_DEGENERATE_EX5:
			{
				fprintf(stderr, "Degenerating input graph\n");
				Degenerator_t * degen = degenerator_create (&(config->io),
						config->nodecount, config->iterations);						
				degenerator_set_select_mode (degen, DEGENERATOR_SELECT_RANDOM);

				degenerator_compute (degen);
				degenerator_destroy (degen);
			}
			break;
	
		case COMMAND_TP3_DEGENERATE_MAX_DEG_EX7:
			{
				fprintf(stderr, "Degenerating input graph with max degrees first\n");
				Degenerator_t * degen = degenerator_create (&(config->io),
						config->nodecount, config->iterations);						
				degenerator_set_select_mode (degen, DEGENERATOR_SELECT_MAX_DEG);

				degenerator_compute (degen);
				degenerator_destroy (degen);
			}
			break;

		default:
			{
				printf("Undefined mode\n");
			}
			break;
	}

	config_destroy (config);

	return EXIT_SUCCESS;
}