clean shutdown in case address is in use + include ncurses functions (todo)
[my-code/ivac.git] / src / ivac.h
1 /* ivac.h -- main ivac header file */
2
3 #ifndef IVAC_H
4 #define IVAC_H
5
6 /* includes */
7 #define _GNU_SOURCE
8 #include <stdio.h>
9
10 /* for ui */
11 #include <ncurses.h>
12
13 #include "network.h"
14 #include "event.h"
15 #include "input.h"
16
17 /* defines */
18 #define CHAR_USERNAME 32
19 #define ERROR -1
20 #define SUCCESS 1
21
22 #define IVAC_LISTEN_PORT 1025
23
24 #define IVAC_S_SEC 2
25 #define IVAC_S_USEC 500
26
27 #define IVAC_SEND_NAME 'n'
28 #define IVAC_SEND_G_CAP 'g'
29 #define IVAC_SEND_AV_CAP 'c'
30
31 #define NETWORK (1<<0)
32
33 #define AUDIO (1<<0)
34 #define VIDEO (1<<1)
35 #define DUPLEX (1<<2)
36
37 #define COLUMN 80
38 #define LINE 24
39
40 /* variables */
41 typedef struct s_challenger {
42   char name[CHAR_USERNAME];
43   unsigned char g_cap;
44   unsigned short av_cap;
45 } t_challenger;
46
47 typedef struct s_ivac {
48   char username[CHAR_USERNAME];
49   unsigned char g_cap;
50   unsigned short av_cap;
51   t_net net;
52   t_event event;
53   t_input input;
54   t_challenger challenger[MAX_CONNECTIONS];
55 } t_ivac;
56
57 /* function prototypes */
58 int ivac_shutdown(t_ivac *ivac);
59 int ivac_send_info(int channel,t_ivac *ivac);
60 int ivac_receive_info(int channel,t_ivac *ivac);
61 int ivac_event_cb(t_event *event,void *ptr);
62 int ivac_regular_cb(t_event *event,void *ptr);
63 int ivac_parse_command(t_input *input,void *ptr);
64 int ivac_display_head(void);
65 int ivac_display_prompt(t_ivac *ivac);
66 int ivac_display(t_ivac *ivac);
67
68 #endif