summaryrefslogtreecommitdiff
path: root/src/read_crossbar.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/read_crossbar.c')
-rw-r--r--src/read_crossbar.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/src/read_crossbar.c b/src/read_crossbar.c
index b075c69..5b79233 100644
--- a/src/read_crossbar.c
+++ b/src/read_crossbar.c
@@ -1,15 +1,12 @@
#include "read_crossbar.h"
-#include <ctype.h>
-#include <errno.h> //maybe I could use this
-#include <fcntl.h>
-#include <math.h>
+#include <stdbool.h>
+#include <ngspice/sharedspice.h>
+
+#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
int run_ngspice(const char *crossbar_path)
{
@@ -48,8 +45,8 @@ int read_crossbar(const char *data_path, size_t num_outputs,
return -1;
}
- result->num_samples = 0;
- result->num_outputs = num_outputs;
+ // result->num_samples = 0;
+ // result->num_outputs = num_outputs;
result->time = NULL;
result->voltages = NULL;
@@ -78,22 +75,8 @@ int read_crossbar(const char *data_path, size_t num_outputs,
char line[16384];
// size_t line_number = 0;
+ size_t sample = 0;
while (fgets(line, sizeof(line), file) != NULL) {
- /* Raises capacity if needed, not working rn tho */
- // if (result->num_samples == capacity) {
- // capacity *= 2;
- //
- // result->time = realloc(result->time, capacity *
- // sizeof(double)); result->voltages =
- // realloc(result->voltages, capacity * sizeof(double));
- //
- // if (result->time == NULL || result->voltages == NULL) {
- // fprintf(stderr, "Failed to reallocate memory");
- // fclose(file);
- // return -1;
- // }
- // }
-
char *position = line;
double sample_time = 0.0;
@@ -115,12 +98,12 @@ int read_crossbar(const char *data_path, size_t num_outputs,
sample_time = time;
}
- result->voltages[result->num_samples * num_outputs +
- output] = voltage;
+ result->voltages[sample * num_outputs + output] =
+ voltage;
position += char_count;
}
- result->time[result->num_samples] = sample_time;
- result->num_samples++;
+ result->time[sample] = sample_time;
+ sample++;
}
fclose(file);
return 0;
@@ -232,8 +215,8 @@ void free_crossbar_output_matrix(Crossbar_Output_Matrix *result)
free(result->time);
free(result->voltages);
- result->num_samples = 0;
- result->num_outputs = 0;
+ // result->num_samples = 0;
+ // result->num_outputs = 0;
result->time = NULL;
result->voltages = NULL;
}