]> git.meshlink.io Git - meshlink/blob - examples/meshlinkapp.c
Merge branch 'mesh_topology_output' into roles
[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         printf("Received %zu bytes from %s: %s\n", len, source->name, (char*)data);
7 }
8
9 int main(int argc , char **argv){
10         char *confbase = argc > 1 ? argv[1] : "/tmp/meshlink/";
11         char *name = argc > 2 ? argv[2] : "foo";
12
13         char *remotename = argc > 3 ? argv[3] : "bar";
14
15         meshlink_handle_t* myhandle;
16
17         myhandle = meshlink_open(confbase, name, "meshlinkapp", DEV_CLASS_STATIONARY);
18
19         //Register callback function for incoming data
20         meshlink_set_receive_cb(myhandle, (meshlink_receive_cb_t)handle_recv_data);
21
22         meshlink_start(myhandle);
23
24         while(1) {
25                 sleep(10);
26
27                 meshlink_node_t *remotenode = meshlink_get_node(myhandle, remotename);
28                 if(!remotenode) {
29                         fprintf(stderr, "Node %s not known yet.\n", remotename);
30                         continue;
31                 }
32
33                 //sample data to send out
34                 char mydata[200];
35                 memset(mydata,0,200);
36                 strcpy(mydata,"Hello World!");
37
38                 //send out data
39                 meshlink_send(myhandle,remotenode,mydata,sizeof(mydata));
40         }
41
42         meshlink_stop(myhandle);
43         meshlink_close(myhandle);
44
45         return 0;
46 }
47