Exemplo n.º 1
0
int main (int argc, char ** argv) {
    w=windowcf_create(SPECTRUM_FFT_LENGTH);
    wchA = windowcf_create(TRACK_LENGTH);
    wchB = windowcf_create(TRACK_LENGTH);
    wchC = windowcf_create(TRACK_LENGTH);

    wchA_filtered = windowcf_create(TRACK_LENGTH);
    wchB_filtered = windowcf_create(TRACK_LENGTH);
    wchC_filtered = windowcf_create(TRACK_LENGTH);

    wmag_buffer = windowf_create(TRACK_LENGTH);

    nco = nco_crcf_create(LIQUID_NCO);
    std::cout << "hydromath daemon is beginning..." << std::endl;
    std::cout << "NOTE: if this is symhydromath you must pass in a matfile" << std::endl;

    std::cout << argv[1] << std::endl;
    shm_init();
    shm_getg(hydrophones_results_track, shm_results_track);
    shm_getg(hydrophones_results_spectrum, shm_results_spectrum);

    //shm_results_track.tracked_ping_count=0;
    shm_results_track.tracked_ping_time=0; 


    if (argc > 1) {
        udp_init(argv[1]);
    }
    else {
        udp_init("");
    }
    //std::thread track_thread(direction_loop);
    //
    //std::thread spectrum_thread(spectrum_loop);
    track_sample_idx = 0;  

    while (loop(&spt) == 0) {
        shm_getg(hydrophones_settings, shm_settings);
        for (int i = 0; i < 3*CHANNEL_DEPTH; i+=3) {
            windowcf_push(w,    std::complex<float>(spt.data[i+1],0)); //This uses channel B

            windowcf_push(wchA, std::complex<float>(spt.data[i],0));
            windowcf_push(wchB, std::complex<float>(spt.data[i+1],0));
            windowcf_push(wchC, std::complex<float>(spt.data[i+2],0));
        }
        current_sample_count+=CHANNEL_DEPTH;        
        do_spectrum();
        do_track();
    }

    printf("loop done %li =ci\n",current_sample_count/CHANNEL_DEPTH);
    return 0;
}
Exemplo n.º 2
0
static void 
simulate_mappoints (void)
{
    int xx, yy;
    shuffle_mappoint_array ();
    for (yy = 0; yy < WORLD_SIDE_LEN; yy++) {
	/* indirection to rand array to stop lots of linear effects */
	int y = mappoint_array_y[yy];
	for (xx = 0; xx < WORLD_SIDE_LEN; xx++) {
	    int x = mappoint_array_x[xx];
	    short grp = MP_GROUP(x,y);
	    if (grp == GROUP_USED || grp == GROUP_BARE)
		continue;
	    switch (grp) {
	    case GROUP_TRACK:
		do_track (x, y);
		break;
	    case GROUP_RAIL:
		do_rail (x, y);
		break;
	    case GROUP_ROAD:
		do_road (x, y);
		break;
	    case GROUP_ORGANIC_FARM:
		do_organic_farm (x, y);
		break;
	    case GROUP_MARKET:
		do_market (x, y);
		break;
	    case GROUP_RESIDENCE_LL:
		do_residence (x, y);
		break;
	    case GROUP_RESIDENCE_ML:
		do_residence (x, y);
		break;
	    case GROUP_RESIDENCE_HL:
		do_residence (x, y);
		break;
	    case GROUP_RESIDENCE_LH:
		do_residence (x, y);
		break;
	    case GROUP_RESIDENCE_MH:
		do_residence (x, y);
		break;
	    case GROUP_RESIDENCE_HH:
		do_residence (x, y);
		break;
	    case GROUP_POWER_LINE:
	        do_power_line (x, y);
		break;
	    case GROUP_SOLAR_POWER:
		do_power_source (x, y);
		break;
	    case GROUP_SUBSTATION:
		do_power_substation (x, y);
		break;
	    case GROUP_COALMINE:
		do_coalmine (x, y);
		break;
	    case GROUP_COAL_POWER:
		do_power_source_coal (x, y);
		break;
	    case GROUP_INDUSTRY_L:
		do_industry_l (x, y);
		break;
	    case GROUP_INDUSTRY_H:
		do_industry_h (x, y);
		break;
	    case GROUP_COMMUNE:
		do_commune (x, y);
		break;
	    case GROUP_OREMINE:
		do_oremine (x, y);
		break;
	    case GROUP_PORT:
		do_port (x, y);
		break;
	    case GROUP_TIP:
		do_tip (x, y);
		break;
	    case GROUP_PARKLAND:
		do_parkland (x, y);
		break;
	    case GROUP_UNIVERSITY:
		do_university (x, y);
		break;
	    case GROUP_RECYCLE:
		do_recycle (x, y);
		break;
	    case GROUP_HEALTH:
		do_health_centre (x, y);
		break;
	    case GROUP_ROCKET:
		do_rocket_pad (x, y);
		break;
	    case GROUP_WINDMILL:
		do_windmill (x, y);
		break;
	    case GROUP_MONUMENT:
		do_monument (x, y);
		break;
	    case GROUP_SCHOOL:
		do_school (x, y);
		break;
	    case GROUP_BLACKSMITH:
		do_blacksmith (x, y);
		break;
	    case GROUP_MILL:
		do_mill (x, y);
		break;
	    case GROUP_POTTERY:
		do_pottery (x, y);
		break;
	    case GROUP_FIRESTATION:
		do_firestation (x, y);
		break;
	    case GROUP_CRICKET:
		do_cricket (x, y);
		break;
	    case GROUP_FIRE:
		do_fire (x, y);
		break;
	    case GROUP_SHANTY:
		do_shanty (x, y);
		break;
	    }
	}
    }
}