|
@@ -143,24 +143,45 @@ char** namesInDev(int *siz) {
|
143
|
143
|
char** getSerialPorts(void) {
|
144
|
144
|
int size;
|
145
|
145
|
char** files = namesInDev(&size);
|
146
|
|
- char** fin = NULL;
|
|
146
|
+ char **fin = NULL, **finish = NULL;
|
147
|
147
|
int i = 0, j = 0, f, g;
|
148
|
148
|
|
149
|
|
- printf("JNI: Got files in /dev/\n");
|
|
149
|
+ // printf("JNI: Got files in /dev (%d)\n", size);
|
150
|
150
|
|
151
|
151
|
fin = (char **)malloc(size * sizeof(char *));
|
152
|
|
- fin[size - 1] = NULL;
|
|
152
|
+ // Has space for all files in dev!
|
|
153
|
+
|
153
|
154
|
while (files[i] != NULL) {
|
|
155
|
+ // Filter for SEARCH and if it is a serial port
|
154
|
156
|
if (strstr(files[i], SEARCH) != NULL) {
|
|
157
|
+ // We have a match
|
|
158
|
+ // printf("JNI: %s matched %s", files[i], SEARCH);
|
155
|
159
|
f = serialOpen(files[i]);
|
156
|
|
- if (fd != -1) {
|
|
160
|
+ if (f != -1) {
|
|
161
|
+ // printf(" and is a serial port\n");
|
157
|
162
|
fin[j++] = files[i];
|
158
|
163
|
serialClose();
|
|
164
|
+ } else {
|
|
165
|
+ // printf(" and is not a serial port\n");
|
|
166
|
+ free(files[i]);
|
159
|
167
|
}
|
|
168
|
+ } else {
|
|
169
|
+ free(files[i]);
|
160
|
170
|
}
|
161
|
171
|
i++;
|
162
|
172
|
}
|
163
|
173
|
free(files);
|
164
|
174
|
|
165
|
|
- return fin;
|
|
175
|
+ // printf("JNI: Found %d serial ports\n", j);
|
|
176
|
+
|
|
177
|
+ // Copy in memory with matching size, NULL at end
|
|
178
|
+ finish = (char **)malloc((j + 1) * sizeof(char *));
|
|
179
|
+ finish[j] = NULL;
|
|
180
|
+ for (i = 0; i < j; i++) {
|
|
181
|
+ finish[i] = fin[i];
|
|
182
|
+ }
|
|
183
|
+
|
|
184
|
+ free(fin);
|
|
185
|
+
|
|
186
|
+ return finish;
|
166
|
187
|
}
|