Robot Agent  1.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
config.c
Go to the documentation of this file.
1 
11 /* -- Includes -- */
12 /* system libraries */
13 
14 /* project libraries */
16 #include "config.h"
17 #include "def.h"
18 
19 /* -- Defines -- */
20 
21 /* -- Global Variables -- */
23 
24 /* -- Functions -- */
25 
26 void config_load(void)
27 {
28  // Local variables
29  dictionary *ini;
30  char *s;
31 
32  ini = iniparser_load("./res/config.ini");
33  if (ini == NULL) {
34  fprintf(stderr, "cannot parse file");
35  return -1 ;
36  }
37  //iniparser_dump(ini, stderr);
38 
39  // Load configurations
40 
41  // -- Serial port --
42  s = iniparser_getstring(ini, "serialport:rfid_port_path", S_CONFIG_DEFAULT_SERIALPORT_RFID_PORT_PATH);
43  strcpy(g_config.serialport_rfid_port_path, s);
44  s = iniparser_getstring(ini, "serialport:openinterface_port_path", s_CONFIG_DEFAULT_SERIALPORT_OPENINTERFACE_PORT_PATH);
45  strcpy(g_config.serialport_openinterface_port_path, s);
46 
47  // -- Environment --
48  s = iniparser_getstring(ini, "environment:room_def_path", s_CONFIG_DEFAULT_ENVIRONMENT_ROOM_DEF_PATH);
49  strcpy(g_config.enviroment_room_def_path, s);
50  s = iniparser_getstring(ini, "environment:tags_def_path", s_CONFIG_DEFAULT_ENVIRONMENT_TAGS_DEF_PATH);
51  strcpy(g_config.enviroment_tags_def_path, s);
52 
53  // -- Particle filter --
54  g_config.pf_particles_num = iniparser_getint(ini, "pf:particles_num", s_CONFIG_DEFAULT_PF_PARTICLES_NUM);
55  g_config.pf_noise_move = iniparser_getint(ini, "pf:noise_move", s_CONFIG_DEFAULT_PF_NOISE_MOVE);
56  g_config.pf_noise_turn = iniparser_getint(ini, "pf:noise_turn", s_CONFIG_DEFAULT_PF_NOISE_TURN);
57  g_config.pf_noise_tag = iniparser_getint(ini, "pf:noise_tag", s_CONFIG_DEFAULT_PF_NOISE_TAG);
58  g_config.pf_noise_wall = iniparser_getint(ini, "pf:noise_wall", s_CONFIG_DEFAULT_PF_NOISE_WALL);
59 
60  // -- Robot --
61  g_config.robot_id = iniparser_getint(ini, "robot:id", s_CONFIG_DEFAULT_ROBOT_ID);
62  g_config.robot_team = iniparser_getint(ini, "robot:team", s_CONFIG_DEFAULT_ROBOT_TEAM);
63  g_config.robot_radius = iniparser_getint(ini, "robot:radius", s_CONFIG_DEFAULT_ROBOT_RADIUS);
64  g_config.robot_init_x = iniparser_getint(ini, "robot:init_x", s_CONFIG_DEFAULT_ROBOT_INIT_X);
65  g_config.robot_init_y = iniparser_getint(ini, "robot:init_y", s_CONFIG_DEFAULT_ROBOT_INIT_Y);
66  g_config.robot_init_angle = iniparser_getint(ini, "robot:init_angle", s_CONFIG_DEFAULT_ROBOT_INIT_ANGLE);
67  g_config.robot_speed = iniparser_getint(ini, "robot:speed", s_CONFIG_DEFAULT_ROBOT_SPEED);
68 
69  // -- Pheromone --
70  g_config.pheromone_width = iniparser_getint(ini, "pheromone:width", s_CONFIG_DEFAULT_PHEROMONE_WIDTH);
71  g_config.pheromone_lifetime = iniparser_getint(ini, "pheromone:lifetime", s_CONFIG_DEFAULT_PHEROMONE_LIFETIME);
73  g_config.pheromone_eval_radius = iniparser_getint(ini, "pheromone:eval_radius", s_CONFIG_DEFAULT_PHEROMONE_EVAL_RADIUS);
74  g_config.pheromone_eval_dist = iniparser_getint(ini, "pheromone:eval_dist", s_CONFIG_DEFAULT_PHEROMONE_EVAL_DIST);
76 
77  // -- UDP --
78  s = iniparser_getstring(ini, "udp:broadcast_ip", s_CONFIG_DEFAULT_UDP_BROADCAST_IP);
79  strcpy(g_config.udp_broadcast_ip, s);
80  g_config.udp_port = iniparser_getint(ini, "udp:port", s_CONFIG_DEFAULT_UDP_PORT);
81  g_config.udp_packet_size = iniparser_getint(ini, "udp:packet_size", s_CONFIG_DEFAULT_UDP_PACKET_SIZE);
82 
83  // -- Netwokr --
84  g_config.network_bitrate = iniparser_getint(ini, "network:bitrate", s_CONFIG_DEFAULT_NETWORK_BITRATE);
85  g_config.network_tdma_slot_num = iniparser_getint(ini, "network:tdma_slot_num", s_CONFIG_DEFAULT_NETWORK_TDMA_SLOT_NUM);
86  g_config.network_tdma_period = iniparser_getint(ini, "network:tdma_period", s_CONFIG_DEFAULT_NETWORK_TDMA_PERIOD);
87 
88 
89 
90  /*// -- Scenario --
91  int scenario_victims_max;
92  int scenario_victims_num;*/
93 
94 
95 
96  // Deinit iniparser
97  iniparser_freedict(ini);
98 }
#define s_CONFIG_DEFAULT_PF_NOISE_MOVE
Definition: config.h:122
#define s_CONFIG_DEFAULT_NETWORK_TDMA_SLOT_NUM
Definition: config.h:151
int pheromone_sector_max_size
Definition: config.h:58
int robot_init_x
Definition: config.h:47
#define S_CONFIG_DEFAULT_SERIALPORT_RFID_PORT_PATH
Definition: config.h:113
char * iniparser_getstring(dictionary *d, const char *key, char *def)
Get the string associated to a key.
Definition: iniparser.c:368
int robot_radius
Definition: config.h:46
#define s_CONFIG_DEFAULT_PF_NOISE_TURN
Definition: config.h:123
#define s_CONFIG_DEFAULT_NETWORK_TDMA_PERIOD
Definition: config.h:152
int network_bitrate
Definition: config.h:70
char serialport_rfid_port_path[256]
Definition: config.h:29
char enviroment_tags_def_path[256]
Definition: config.h:34
#define s_CONFIG_DEFAULT_PHEROMONE_PHEROMONE_RADIUS
Definition: config.h:139
int robot_init_angle
Definition: config.h:49
#define s_CONFIG_DEFAULT_PHEROMONE_EVAL_RADIUS
Definition: config.h:140
config_t g_config
Definition: config.c:22
int network_tdma_slot_num
Definition: config.h:71
#define s_CONFIG_DEFAULT_ROBOT_INIT_ANGLE
Definition: config.h:133
int udp_packet_size
Definition: config.h:62
#define s_CONFIG_DEFAULT_ENVIRONMENT_ROOM_DEF_PATH
Definition: config.h:117
#define s_CONFIG_DEFAULT_PHEROMONE_LIFETIME
Definition: config.h:138
#define s_CONFIG_DEFAULT_ROBOT_INIT_Y
Definition: config.h:132
dictionary * iniparser_load(const char *ininame)
Parse an ini file and return an allocated dictionary object.
Definition: iniparser.c:629
int pf_noise_move
Definition: config.h:38
Configuration structure.
Definition: config.h:26
#define s_CONFIG_DEFAULT_PF_PARTICLES_NUM
Definition: config.h:121
#define s_CONFIG_DEFAULT_NETWORK_BITRATE
Definition: config.h:150
#define s_CONFIG_DEFAULT_PF_NOISE_WALL
Definition: config.h:125
int pf_particles_num
Definition: config.h:37
#define s_CONFIG_DEFAULT_UDP_BROADCAST_IP
Definition: config.h:145
int pheromone_width
Definition: config.h:53
char serialport_openinterface_port_path[256]
Definition: config.h:30
int pf_noise_tag
Definition: config.h:40
int network_tdma_period
Definition: config.h:72
int pheromone_eval_dist
Definition: config.h:57
int robot_team
Definition: config.h:45
int pf_noise_wall
Definition: config.h:41
#define s_CONFIG_DEFAULT_ROBOT_INIT_X
Definition: config.h:131
Parser for ini files.
#define s_CONFIG_DEFAULT_ROBOT_RADIUS
Definition: config.h:130
#define s_CONFIG_DEFAULT_PHEROMONE_WIDTH
Definition: config.h:137
char udp_broadcast_ip[16]
Definition: config.h:63
int robot_init_y
Definition: config.h:48
#define s_CONFIG_DEFAULT_SERIALPORT_OPENINTERFACE_PORT_PATH
Definition: config.h:114
int robot_id
Definition: config.h:44
#define s_CONFIG_DEFAULT_PF_NOISE_TAG
Definition: config.h:124
#define s_CONFIG_DEFAULT_PHEROMONE_SECTOR_MAX_SIZE
Definition: config.h:142
int robot_speed
Definition: config.h:50
#define s_CONFIG_DEFAULT_ROBOT_ID
Definition: config.h:128
int pheromone_eval_radius
Definition: config.h:56
char enviroment_room_def_path[256]
Definition: config.h:33
#define s_CONFIG_DEFAULT_UDP_PORT
Definition: config.h:146
void config_load(void)
Definition: config.c:26
Dictionary object.
Definition: dictionary.h:41
#define s_CONFIG_DEFAULT_ROBOT_SPEED
Definition: config.h:134
int pheromone_pheromone_radius
Definition: config.h:55
void iniparser_freedict(dictionary *d)
Free all memory associated to an ini dictionary.
Definition: iniparser.c:743
int udp_port
Definition: config.h:61
int pf_noise_turn
Definition: config.h:39
#define s_CONFIG_DEFAULT_PHEROMONE_EVAL_DIST
Definition: config.h:141
#define s_CONFIG_DEFAULT_ENVIRONMENT_TAGS_DEF_PATH
Definition: config.h:118
int iniparser_getint(dictionary *d, const char *key, int notfound)
Get the string associated to a key, convert to an int.
Definition: iniparser.c:408
int pheromone_lifetime
Definition: config.h:54
#define s_CONFIG_DEFAULT_UDP_PACKET_SIZE
Definition: config.h:147
#define s_CONFIG_DEFAULT_ROBOT_TEAM
Definition: config.h:129