aboutsummaryrefslogtreecommitdiffstats
path: root/glouglou_efl/glouglou_efl.c
blob: 625ba5dd8c27f3d5e0f0ca4c6d0b790e756f45e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <Elementary.h>

#include <libglouglou.h>

Evas_Object *win, *connbox;

static Eina_Bool
_cb_conn_data(void *data, int type, Ecore_Con_Event_Server_Data *ev)
{
  Evas_Object *btn;
  struct packet *p;
  char name[32];
  int i;

  printf("data received:\n");
  for (i=0; i < ev->size; i++){
    printf("%2.2x ", ((u_char *)ev->data)[i]);
    if( (i%15 == 0 && i!=0) || i==ev->size-1 )
      printf("\n");
  }

  p = ev->data;
  switch(p->type) {
    case PACKET_NEWCONN:
      printf("  type PACKET_NEWCONN\n");
      printf("  newconn_id %d\n", p->newconn_id);
      printf("  newconn_src %4x\n", ntohl(p->newconn_src));
      printf("  newconn_dst %4x\n", ntohl(p->newconn_dst));
      printf("  newconn_proto %d\n", p->newconn_proto);
      printf("  newconn_size %d\n", ntohs(p->newconn_size));

      btn = elm_button_add(win);
      snprintf(name, sizeof(name), "%d: %x -> %x - %d",
          p->newconn_id, ntohl(p->newconn_src), ntohl(p->newconn_dst), p->newconn_proto);
      elm_object_text_set(btn, name);
      elm_box_pack_end(connbox, btn);
      evas_object_show(btn);

      break;
    case PACKET_DELCONN:
      printf("  type PACKET_DELCONN\n");
      printf("  delconn_id %d\n", p->delconn_id);
      break;
    case PACKET_DATA:
      printf("  type PACKET_DATA\n");
      printf("  data_connid %d\n", p->data_connid);
      printf("  data_size %d\n", ntohs(p->data_size));
      break;
    case PACKET_NAME:
      printf("  type PACKET_NAME\n");
      printf("  name_addr %4x\n", ntohl(p->name_addr));
      printf("  name_len %d\n", p->name_len);
      printf("  name_name_fqdn %s\n", p->name_fqdn);
      break;
  }

  return ECORE_CALLBACK_RENEW;
}

static void
_cb_on_done(void *data, Evas_Object *obj, void *event_info)
{
  elm_exit();
}

EAPI_MAIN int
elm_main(int argc, char **argv)
{
  Evas_Object *box, *lab, *btn, *bg;
  Ecore_Con_Server *conn;

  win = elm_win_util_standard_add("hello", "Hello");
  evas_object_smart_callback_add(win, "delete,request", _cb_on_done, NULL);

  bg = elm_bg_add(win);
  evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  elm_win_resize_object_add(win, bg);
  evas_object_show(bg);

  box = elm_box_add(win);
  elm_box_horizontal_set(box, EINA_TRUE);
  elm_win_resize_object_add(win, box);
  evas_object_show(box);

  lab = elm_label_add(win);
  elm_object_text_set(lab, "Welcome to glouglou_efl");
  elm_box_pack_end(box, lab);
  evas_object_show(lab);

  btn = elm_button_add(win);
  elm_object_text_set(btn, "Quit");
  elm_box_pack_end(box, btn);
  evas_object_show(btn);
  evas_object_smart_callback_add(btn, "clicked", _cb_on_done, NULL);

  connbox = elm_box_add(win);
  evas_object_show(connbox);

  evas_object_show(win);

  ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA,
    (Ecore_Event_Handler_Cb)_cb_conn_data, NULL);
  conn = ecore_con_server_connect(ECORE_CON_REMOTE_UDP, "127.0.0.1", 4430, NULL);
  ecore_con_server_send(conn, "hello", 5);
  ecore_con_server_flush(conn);

  elm_run();
  elm_shutdown();
  return 0;
}
ELM_MAIN()