Subversion Repositories Projects

Rev

Rev 505 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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