Browse code

tentative main, sapchannelinfo implementation

Dario Rodriguez authored on 13/01/2015 14:02:35
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,81 @@
1
+/* sapd: main.c */
2
+
3
+#include <stdio.h>
4
+#include <stdlib.h>
5
+#include <unistd.h>
6
+#include <string.h>
7
+#include <signal.h>
8
+#include "sapmanager.h"
9
+#include "sapbtlistener.h"
10
+
11
+#include "capabilityagent.h"
12
+#include "hostmanageragent.h"
13
+
14
+static int signal_init(int signum, void (*fn)(int));
15
+static void sigint(int signum);
16
+volatile int sigint_flag=0;
17
+
18
+int main(int argc, char *argv[])
19
+{
20
+        sap_manager *manager;
21
+        sap_listener *listener;
22
+	capability_agent *agent;
23
+        char *bt_address;
24
+
25
+        if(argc!=2 || strcmp(argv[argc-1],"--help")==0) {
26
+                printf("Syntax: %s bt_address\n",argv[0]);
27
+                return(1);
28
+        }
29
+
30
+        if((manager=sap_manager_new())==NULL) {
31
+                printf("ERROR: Couldn't initialize sap manager\n");
32
+                return(2);
33
+        }
34
+
35
+        if((agent=capability_agent_new(manager))==NULL) {
36
+                printf("ERROR: Couldn't initialize sap capability agent\n");
37
+                sap_manager_free(manager),manager=NULL;
38
+                return(3);
39
+        }
40
+        host_manager_agent_register_services(manager);
41
+
42
+        if((listener=sap_listener_new())==NULL) {
43
+                printf("ERROR: Couldn't initialize sap listener\n");
44
+                capability_agent_free(agent),agent=NULL;
45
+                sap_manager_free(manager),manager=NULL;
46
+                return(4);
47
+        }
48
+
49
+        bt_address=argv[1];
50
+
51
+        sap_listener_start(listener);
52
+        sap_listener_nudge(listener,bt_address);
53
+
54
+        sigint_flag=0;
55
+        signal_init(SIGINT,sigint);
56
+        while(!sigint_flag) {
57
+                sap_manager_loop(manager,0);
58
+                sap_listener_loop(listener,100);
59
+        }
60
+        sap_listener_free(listener),listener=NULL;
61
+        capability_agent_free(agent),agent=NULL;
62
+        sap_manager_free(manager),manager=NULL;
63
+        return(0);
64
+}
65
+
66
+static int
67
+signal_init(int signum, void (*fn)(int))
68
+{
69
+        struct sigaction sa;
70
+        sa.sa_handler=fn;
71
+        sigemptyset(&sa.sa_mask);
72
+        sa.sa_flags=0;
73
+        return(sigaction(signum,&sa,0));
74
+}
75
+
76
+static void
77
+sigint(int signum)
78
+{
79
+        sigint_flag=1;
80
+}
81
+