summaryrefslogtreecommitdiffstats
path: root/src/modemman.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modemman.c')
-rw-r--r--src/modemman.c45
1 files changed, 29 insertions, 16 deletions
diff --git a/src/modemman.c b/src/modemman.c
index c156e61..f7521e3 100644
--- a/src/modemman.c
+++ b/src/modemman.c
@@ -1,3 +1,11 @@
+#include <stddef.h>
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <libdaemon/dlog.h>
+
#include "modemman.h"
#include "modem.h"
@@ -12,27 +20,32 @@ struct llist {
static struct llist *llist = NULL;
static int n_llist = 0;
+static void modem_try_open(const char *dev) {
+ struct modem *m;
+
+ if ((m = modem_open(dev))) {
+ struct llist *l = malloc(sizeof(struct llist));
+ assert(l);
+
+ l->modem = m;
+ l->next = llist;
+ llist = l;
+ n_llist++;
+ }
+}
+
int modem_manager_init(int channels) {
int i;
assert(channels <= MAX_CHANNELS && channels > 0);
assert(n_llist == 0);
+
+ modem_try_open("/dev/ttyz0");
- for (i = TTY_START; i < TTY_START+MAX_CHANNLES && n_llist < channels; i++) {
+ for (i = TTY_START; i < TTY_START+MAX_CHANNELS && n_llist < channels; i++) {
char d[PATH_MAX];
- struct modem *m;
-
snprintf(d, sizeof(d), "/dev/ttyI%i", i);
-
- if (m = modem_open(d)) {
- struct llist *l = malloc(sizeof(struct llist));
- assert(l);
-
- l->modem = m;
- l->next = llist;
- llist = l;
- n_llist++;
- }
+ modem_try_open(d);
}
if (n_llist < channels) {
@@ -49,11 +62,11 @@ void modem_manager_done(void) {
while (llist) {
struct llist *l;
- modem_close(l->modem);
+ modem_close(llist->modem);
l = llist;
- llist = l->next;
+ llist = llist->next;
free(l);
- n_llist = 0;
+ n_llist--;
}
assert(!n_llist && !llist);