added ncurses based display system (minimal and still full of bugs) :o
[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 #include "display.h"
17
18 /* defines */
19 #define CHAR_USERNAME 32
20 #define ERROR -1
21 #define SUCCESS 1
22
23 #define IVAC_LISTEN_PORT 1025
24
25 #define IVAC_S_SEC 2
26 #define IVAC_S_USEC 500
27
28 #define IVAC_SEND_NAME 'n'
29 #define IVAC_SEND_G_CAP 'g'
30 #define IVAC_SEND_AV_CAP 'c'
31
32 #define NETWORK (1<<0)
33
34 #define AUDIO (1<<0)
35 #define VIDEO (1<<1)
36 #define DUPLEX (1<<2)
37
38 #define IVAC_CONSOLE_STRING_LEN 64
39
40 #define IVAC_HEAD_LEN 3
41 #define IVAC_PROMPT_LEN 3
42 #define IVAC_CONSOLE_LEN 8
43
44 /* variables */
45 typedef struct s_challenger {
46   char name[CHAR_USERNAME];
47   unsigned char g_cap;
48   unsigned short av_cap;
49 } t_challenger;
50
51 typedef struct s_ivac {
52   char username[CHAR_USERNAME];
53   unsigned char g_cap;
54   unsigned short av_cap;
55   t_net net;
56   t_event event;
57   t_input input;
58   t_display display;
59   t_challenger challenger[MAX_CONNECTIONS];
60   char console[IVAC_CONSOLE_LEN][IVAC_CONSOLE_STRING_LEN];
61 } t_ivac;
62
63 /* function prototypes */
64 int ivac_shutdown(t_ivac *ivac);
65 int ivac_send_info(int channel,t_ivac *ivac);
66 int ivac_receive_info(int channel,t_ivac *ivac);
67 int ivac_event_cb(t_event *event,void *ptr);
68 int ivac_regular_cb(t_event *event,void *ptr);
69 int ivac_parse_command(t_input *input,void *ptr);
70 int ivac_display_head(t_display *display);
71 int ivac_display_box(t_display *display);
72 int ivac_display_box_content(t_ivac *ivac);
73 int ivac_display_console(t_display *display);
74 int ivac_display_console_content(t_ivac *ivac);
75 int ivac_display_prompt(t_display *display);
76 int ivac_display_prompt_content(t_ivac *ivac);
77 int ivac_display(t_display *display);
78 int ivac_display_content(t_ivac *ivac);
79 int ivac_add_to_monitor(t_ivac *ivac,char *msg);
80
81 #endif