/** * Load recorded data from a file. */ void data_load(FILE *file) { char buf[64]; int line = 1, origin_az = 0; while (fgets(buf, sizeof(buf), file) != NULL) { if (buf[0] == '#') { if (sscanf(buf, "# @%s %d,%*d\n", buf, &origin_az) >= 1) { if (strcmp(buf, "origin") == 0) { printf("# Origin: %d\n", origin_az); } else if (strcmp(buf, "azimuth") == 0) { printf("#### Azimuth ####\n"); data_clear(&set); set.elevation = false; } else if (strcmp(buf, "elevation") == 0) { data_pattern_dump(origin_az); printf("#### Elevation ####\n"); data_clear(&set); set.elevation = true; } else { fprintf(stderr, "%d: warning: unknown command\n", line); } } } else { float azimuth, elevation; int strength; if (sscanf(buf, format, &azimuth, &elevation, &strength) != 3) { fprintf(stderr, "%d: error: invalid data format\n", line); exit(EXIT_FAILURE); } if (!set.elevation) { data_add(azimuth, strength); } else { data_add(elevation, strength); } } line++; } // Dump the data from the elevation pattern. data_pattern_dump(origin_az); }
// BRICK DATA void *add_brick_data(t_data_type type,void *data) { if(data) { return data; } else { return data_add(type,data); } }
static void* do_server_read(void *arg) { struct connection_data *data = (struct connection_data *) arg; char *temp_buf = malloc((SOCKET_BUFFER_SIZE + 1) * sizeof(char)); while (1) { int readed = read(data->connfd, temp_buf, SOCKET_BUFFER_SIZE); if (readed <= 0) break; printf("S->L readed %d bytes\n", readed); data_add(params->client_buffer, temp_buf, readed, data); } free(temp_buf); printf("Server finished sending data to connection %d\n", data->connid); data_add(params->client_buffer, NULL, 0, data); pthread_exit(NULL); }
static void* do_icmp_parse(void *arg) { if (arg) {} while (1) { struct itun_packet *packet = packets_take(params->packets_receive); if (packet == NULL) break; struct connection_data *data = (struct connection_data *) packet->connection; switch (packet->header->type) { case TYPE_CONNECT: { struct connection_data *data = init_connection_data(packet); if (data == NULL) break; struct in_addr addr = {packet->client_ip}; char *from_ip = inet_ntoa(addr); printf("Received connect packet from %s\n", from_ip); if (pthread_create(&data->server_connect, NULL, do_server_connect, (void *) data) == -1) error("Error %d occured in pthread_create(server_connect)", errno); break; } case TYPE_SHUTDOWN_READ: { if (is_shutdown_done(data, SHUTDOWN_WRITE)) break; printf("Received SHUTDOWN_READ command\n"); data_add(params->client_buffer, NULL, 0, data); break; } case TYPE_SHUTDOWN_WRITE: { if (is_shutdown_done(data, SHUTDOWN_READ)) break; printf("Received SHUTDOWN_WRITE command\n"); data_add(data->client_buffer, NULL, 0, data); break; } case TYPE_DATA: { printf("I->L readed %d bytes\n", packet->header->length); data_add(data->client_buffer, packet->data, packet->header->length, data); break; } } packets_free_packet(packet); } pthread_exit(NULL); }
static data_t sum(void* _, data_t a, data_t b) { return data_add(a, b); }