more abstraction in network.* and input.*, first display stuff in ivac.*
[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 #include "network.h"
11 #include "event.h"
12 #include "input.h"
13
14 /* defines */
15 #define CHAR_USERNAME 32
16 #define ERROR -1
17 #define SUCCESS 1
18
19 #define IVAC_LISTEN_PORT 1025
20
21 #define IVAC_S_SEC 2
22 #define IVAC_S_USEC 500
23
24 #define IVAC_SEND_NAME 'n'
25 #define IVAC_SEND_G_CAP 'g'
26 #define IVAC_SEND_AV_CAP 'c'
27
28 #define NETWORK (1<<0)
29
30 #define AUDIO (1<<0)
31 #define VIDEO (1<<1)
32 #define DUPLEX (1<<2)
33
34 #define COLUMN 80
35 #define LINE 24
36
37 /* variables */
38 typedef struct s_challenger {
39   char name[CHAR_USERNAME];
40   unsigned char g_cap;
41   unsigned short av_cap;
42 } t_challenger;
43
44 typedef struct s_ivac {
45   char username[CHAR_USERNAME];
46   unsigned char g_cap;
47   unsigned short av_cap;
48   t_net net;
49   t_event event;
50   t_input input;
51   t_challenger challenger[MAX_CONNECTIONS];
52 } t_ivac;
53
54 /* function prototypes */
55 int ivac_send_info(int channel,t_ivac *ivac);
56 int ivac_receive_info(int channel,t_ivac *ivac);
57 int ivac_event_cb(t_event *event,void *ptr);
58 int ivac_regular_cb(t_event *event,void *ptr);
59 int ivac_parse_command(t_input *input,void *ptr);
60 int ivac_display_head(void);
61 int ivac_display_prompt(t_ivac *ivac);
62 int ivac_display(t_ivac *ivac);
63
64 #endif