Subversion Repositories Projects

Rev

Rev 483 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
130 ligi 1
#include "config.h"
2
 
483 ligi 3
 
130 ligi 4
 
5
char *input_evdev_name;
140 ligi 6
char *input_joydev_name;
130 ligi 7
 
8
char *bluetooth_mac;
483 ligi 9
char *mk_tty;
130 ligi 10
 
484 ligi 11
 
12
char *evdev_path;
13
 
130 ligi 14
int  mk_socket_port=0;
15
int  loop_delay=0;
16
 
17
double nick_mul=0.3f;
18
double roll_mul=0.3f;
19
double gier_mul=0.3f;
20
double gas_mul=0.3f;
21
 
22
 
140 ligi 23
double nick_add=0.3f;
24
double roll_add=0.3f;
25
double gier_add=0.3f;
26
double gas_add=0.3f;
27
 
483 ligi 28
int rel_axis_nick;
29
int rel_axis_roll;
30
int rel_axis_gier;
31
int rel_axis_gas;
140 ligi 32
 
483 ligi 33
cfg_bool_t exit_after_init = cfg_false;
130 ligi 34
 
35
 
483 ligi 36
int input_count=0;
130 ligi 37
 
38
int parse_config(char* fname)
39
{
40
 
41
 
483 ligi 42
  static cfg_opt_t input_opts[] = {
43
    CFG_STR("name", 0, CFGF_NONE),    
44
 
45
    CFG_FLOAT("nick_mul", 1.0,CFGF_NONE),
46
    CFG_FLOAT("roll_mul", 1.0,CFGF_NONE),
47
    CFG_FLOAT("gier_mul", 1.0,CFGF_NONE),
48
    CFG_FLOAT("gas_mul", 1.0,CFGF_NONE),
49
 
50
    CFG_FLOAT("nick_add", 0,CFGF_NONE),
51
    CFG_FLOAT("roll_add", 0,CFGF_NONE),
52
    CFG_FLOAT("gier_add", 0,CFGF_NONE),
53
    CFG_FLOAT("gas_add", 0,CFGF_NONE),
54
 
55
    CFG_INT("rel_axis_nick",  -1,CFGF_NONE),
56
    CFG_INT("rel_axis_roll",  -1,CFGF_NONE),
57
    CFG_INT("rel_axis_gier",  -1,CFGF_NONE),
58
    CFG_INT("rel_axis_gas", -1,CFGF_NONE),
59
 
60
    CFG_INT("nick_up_btn",  -1,CFGF_NONE),
61
    CFG_INT("nick_down_btn",  -1,CFGF_NONE),
62
    CFG_INT("roll_left_btn",  -1,CFGF_NONE),
63
    CFG_INT("roll_right_btn", -1,CFGF_NONE),
64
 
65
 
66
 
67
 
68
 
69
 
70
    CFG_END()
71
  };
72
 
130 ligi 73
  cfg_opt_t opts[] = {
483 ligi 74
    CFG_SEC("input", input_opts, CFGF_MULTI | CFGF_TITLE),
130 ligi 75
    CFG_SIMPLE_STR("bluetooth_mac", &bluetooth_mac),    
76
 
483 ligi 77
    CFG_SIMPLE_STR("mk_tty", &mk_tty),    
484 ligi 78
    CFG_SIMPLE_STR("evdev_path", &evdev_path),    
483 ligi 79
 
130 ligi 80
    CFG_SIMPLE_BOOL("exit_after_init", &exit_after_init),
81
    CFG_SIMPLE_STR("input_evdev", &input_evdev_name),
140 ligi 82
    CFG_SIMPLE_STR("input_joydev", &input_joydev_name),
130 ligi 83
    CFG_SIMPLE_INT("loop_delay", &loop_delay),
84
    CFG_SIMPLE_INT("mk_socket_port", &mk_socket_port),
85
 
86
    CFG_SIMPLE_FLOAT("nick_mul", &nick_mul),
87
    CFG_SIMPLE_FLOAT("roll_mul", &roll_mul),
88
    CFG_SIMPLE_FLOAT("gier_mul", &gier_mul),
89
    CFG_SIMPLE_FLOAT("gas_mul", &gas_mul),
140 ligi 90
 
91
    CFG_SIMPLE_FLOAT("nick_add", &nick_add),
92
    CFG_SIMPLE_FLOAT("roll_add", &roll_add),
93
    CFG_SIMPLE_FLOAT("gier_add", &gier_add),
94
    CFG_SIMPLE_FLOAT("gas_add", &gas_add),
130 ligi 95
 
96
    CFG_SIMPLE_INT("rel_axis_nick", &rel_axis_nick),
97
    CFG_SIMPLE_INT("rel_axis_roll", &rel_axis_roll),
98
    CFG_SIMPLE_INT("rel_axis_gier", &rel_axis_gier),
99
    CFG_SIMPLE_INT("rel_axis_gas", &rel_axis_gas),
100
 
101
    CFG_END()
102
  };
103
 
104
  cfg_t *cfg;
105
 
106
 
107
  printf("Parsing config file %s\n",fname);
108
 
109
  cfg = cfg_init(opts, 0);
110
 
111
  cfg_parse(cfg,fname);
112
 
113
 
483 ligi 114
  input_count=cfg_size(cfg,"input");
115
 
116
  printf("%d inputs configured\n", input_count);
117
  int i;
118
  int act_input=0;
119
  for (i=0;i<input_count;i++)
120
    {
121
      cfg_t *input_sect=cfg_getnsec(cfg,"input",i);
122
 
123
 
124
      printf("processing input: %s\n",cfg_getstr( input_sect, "name"));
125
      int evdev_i=0;
126
 
127
      for (evdev_i=0;evdev_i<evdevs_count;evdev_i++)
128
        if (!strcmp(cfg_getstr( input_sect, "name"),evdevs[evdev_i].name))
129
          {
130
            sprintf( inputs[act_input].fname,"%s",evdevs[evdev_i].fname);
131
 
132
            // todo check lengt
133
            sprintf(inputs[act_input].name,"processing input: %s\n",cfg_getstr( input_sect, "name"));
134
 
135
            inputs[act_input].nick_mul=cfg_getfloat(input_sect,"nick_mul");
136
            inputs[act_input].roll_mul=cfg_getfloat(input_sect,"roll_mul");
137
            inputs[act_input].gier_mul=cfg_getfloat(input_sect,"gier_mul");
138
            inputs[act_input].gas_mul=cfg_getfloat(input_sect,"gas_mul");
139
 
140
            inputs[act_input].nick_add=cfg_getfloat(input_sect,"nick_add");
141
            inputs[act_input].roll_add=cfg_getfloat(input_sect,"roll_add");
142
            inputs[act_input].gier_add=cfg_getfloat(input_sect,"gier_add");
143
            inputs[act_input].gas_add=cfg_getfloat(input_sect,"gas_add");
144
 
145
 
146
            inputs[act_input].nick_up_btn=cfg_getint(input_sect,"nick_up_btn");
147
            inputs[act_input].nick_down_btn=cfg_getint(input_sect,"nick_down_btn");
148
 
149
            inputs[act_input].roll_left_btn=cfg_getint(input_sect,"roll_left_btn");        
150
            inputs[act_input].roll_right_btn=cfg_getint(input_sect,"roll_right_btn");
151
 
152
 
153
            inputs[act_input].rel_axis_nick=cfg_getint(input_sect,"rel_axis_nick");
154
            inputs[act_input].rel_axis_roll=cfg_getint(input_sect,"rel_axis_roll");
155
 
156
            inputs[act_input].rel_axis_gier=cfg_getint(input_sect,"rel_axis_gier");
157
            inputs[act_input].rel_axis_gas=cfg_getint(input_sect,"rel_axis_gas");
158
 
159
 
160
 
161
            act_input++;
162
          }
163
 
164
 
165
    }
166
 
167
  input_count=act_input;
168
  printf("%d inputs matching\n", input_count);
130 ligi 169
  return 0;
170
}
483 ligi 171
 
172