]> git.meshlink.io Git - meshlink/blob - examples/meshlinkapp.c
Fix __warn_unused_result__, add more of it and fix the resulting warnings.
[meshlink] / examples / meshlinkapp.c
1 #include "../src/logger.h"
2 #include "../src/system.h"
3 #include "../src/meshlink.h"
4
5 void handle_recv_data(meshlink_handle_t *mesh, meshlink_node_t *source, void *data, size_t len) {
6         (void)mesh;
7
8         printf("Received %zu bytes from %s: %s\n", len, source->name, (char *)data);
9 }
10
11 int main(int argc, char **argv) {
12         char *confbase = argc > 1 ? argv[1] : "/tmp/meshlink/";
13         char *name = argc > 2 ? argv[2] : "foo";
14
15         char *remotename = argc > 3 ? argv[3] : "bar";
16
17         meshlink_handle_t *myhandle;
18
19         myhandle = meshlink_open(confbase, name, "meshlinkapp", DEV_CLASS_STATIONARY);
20
21         if(!myhandle) {
22                 fprintf(stderr, "Could not open MeshLink: %s", meshlink_strerror(meshlink_errno));
23                 return 1;
24         }
25
26         //Register callback function for incoming data
27         meshlink_set_receive_cb(myhandle, (meshlink_receive_cb_t)handle_recv_data);
28
29         if(!meshlink_start(myhandle)) {
30                 fprintf(stderr, "Could not start MeshLink: %s", meshlink_strerror(meshlink_errno));
31                 return 1;
32         }
33
34         while(1) {
35                 sleep(10);
36
37                 meshlink_node_t *remotenode = meshlink_get_node(myhandle, remotename);
38
39                 if(!remotenode) {
40                         fprintf(stderr, "Node %s not known yet.\n", remotename);
41                         continue;
42                 }
43
44                 //sample data to send out
45                 char mydata[200];
46                 memset(mydata, 0, 200);
47                 strcpy(mydata, "Hello World!");
48
49                 //send out data
50                 if(!meshlink_send(myhandle, remotenode, mydata, sizeof(mydata))) {
51                         fprintf(stderr, "Error sending data: %s", meshlink_strerror(meshlink_errno));
52                         return 1;
53                 }
54         }
55
56         meshlink_stop(myhandle);
57         meshlink_close(myhandle);
58
59         return 0;
60 }
61