34
34
import roslib ; roslib .load_manifest ('dynamic_reconfigure' )
35
35
except :
36
36
pass
37
- import rospy
38
- import inspect
39
37
import copy
40
38
import sys
41
39
40
+ from dynamic_reconfigure .msg import BoolParameter , DoubleParameter , IntParameter , ParamDescription , StrParameter
42
41
from dynamic_reconfigure .msg import Config as ConfigMsg
43
42
from dynamic_reconfigure .msg import ConfigDescription as ConfigDescrMsg
44
43
from dynamic_reconfigure .msg import Group as GroupMsg
45
44
from dynamic_reconfigure .msg import GroupState
46
- from dynamic_reconfigure . msg import IntParameter , BoolParameter , StrParameter , DoubleParameter , ParamDescription
45
+
47
46
48
47
class Config (dict ):
49
48
def __init__ (self , * args , ** kwargs ):
@@ -90,6 +89,7 @@ def encode_description(descr):
90
89
msg .groups = encode_groups (None , descr .config_description )
91
90
return msg
92
91
92
+
93
93
def encode_groups (parent , group ):
94
94
group_list = []
95
95
@@ -109,16 +109,21 @@ def encode_groups(parent, group):
109
109
110
110
return group_list
111
111
112
+
112
113
def encode_config (config , flat = True ):
113
114
msg = ConfigMsg ()
114
115
for k , v in config .items ():
115
116
## @todo add more checks here?
116
- if type (v ) == int : msg .ints .append (IntParameter (k , v ))
117
- elif type (v ) == bool : msg .bools .append (BoolParameter (k , v ))
118
- elif type (v ) == str : msg .strs .append (StrParameter (k , v ))
119
- elif sys .version_info .major < 3 and type (v ) == unicode :
117
+ if type (v ) == int :
118
+ msg .ints .append (IntParameter (k , v ))
119
+ elif type (v ) == bool :
120
+ msg .bools .append (BoolParameter (k , v ))
121
+ elif type (v ) == str :
122
+ msg .strs .append (StrParameter (k , v ))
123
+ elif sys .version_info .major < 3 and isinstance (v , unicode ):
120
124
msg .strs .append (StrParameter (k , v ))
121
- elif type (v ) == float : msg .doubles .append (DoubleParameter (k , v ))
125
+ elif type (v ) == float :
126
+ msg .doubles .append (DoubleParameter (k , v ))
122
127
elif type (v ) == dict or isinstance (v , Config ):
123
128
if flat is True :
124
129
def flatten (g ):
@@ -134,6 +139,7 @@ def flatten(g):
134
139
135
140
return msg
136
141
142
+
137
143
def group_dict (group ):
138
144
try :
139
145
state = group .state
@@ -142,17 +148,18 @@ def group_dict(group):
142
148
if hasattr (group , 'type' ):
143
149
type = group .type
144
150
else :
145
- type = ''
151
+ type = ''
146
152
return Config ({
147
- 'id' : group .id ,
148
- 'parent' : group .parent ,
149
- 'name' : group .name ,
150
- 'type' : type ,
153
+ 'id' : group .id ,
154
+ 'parent' : group .parent ,
155
+ 'name' : group .name ,
156
+ 'type' : type ,
151
157
'state' : state ,
152
- 'groups' : Config ({}),
153
- 'parameters' : Config ({}),
158
+ 'groups' : Config ({}),
159
+ 'parameters' : Config ({}),
154
160
})
155
161
162
+
156
163
def decode_description (msg ):
157
164
mins = decode_config (msg .min )
158
165
maxes = decode_config (msg .max )
@@ -165,14 +172,14 @@ def params_from_msg(msg):
165
172
for param in msg .parameters :
166
173
name = param .name
167
174
params .append ({
168
- 'name' : name ,
169
- 'min' : mins [name ],
170
- 'max' : maxes [name ],
171
- 'default' : defaults [name ],
172
- 'type' : param .type ,
173
- 'level' : param .level ,
174
- 'description' : param .description ,
175
- 'edit_method' : param .edit_method ,
175
+ 'name' : name ,
176
+ 'min' : mins [name ],
177
+ 'max' : maxes [name ],
178
+ 'default' : defaults [name ],
179
+ 'type' : param .type ,
180
+ 'level' : param .level ,
181
+ 'description' : param .description ,
182
+ 'edit_method' : param .edit_method ,
176
183
})
177
184
return params
178
185
@@ -186,21 +193,22 @@ def build_tree(group):
186
193
children = Config ({})
187
194
for g in grouplist :
188
195
if g .id == 0 :
189
- pass
196
+ pass
190
197
elif g .parent == group ['id' ]:
191
- gd = group_dict (g )
198
+ gd = group_dict (g )
192
199
193
- gd ['parameters' ] = params_from_msg (g )
194
- gd ['groups' ] = build_tree (gd )
195
- # add the dictionary into the tree
196
- children [gd ['name' ]] = gd
200
+ gd ['parameters' ] = params_from_msg (g )
201
+ gd ['groups' ] = build_tree (gd )
202
+ # add the dictionary into the tree
203
+ children [gd ['name' ]] = gd
197
204
return children
198
205
199
206
groups ['groups' ] = build_tree (groups )
200
207
201
208
return groups
202
209
203
- def get_tree (m , group = None ):
210
+
211
+ def get_tree (m , group = None ):
204
212
if group is None :
205
213
for x in m .groups :
206
214
if x .id == 0 :
@@ -209,7 +217,7 @@ def get_tree(m, group = None):
209
217
children = Config ({})
210
218
for g in m .groups :
211
219
if g .id == 0 :
212
- pass
220
+ pass
213
221
elif g .parent == group .id :
214
222
gd = group_dict (g )
215
223
@@ -223,9 +231,11 @@ def get_tree(m, group = None):
223
231
else :
224
232
return children
225
233
226
- def initial_config (msg , description = None ):
234
+
235
+ def initial_config (msg , description = None ):
227
236
d = Config ([(kv .name , kv .value ) for kv in msg .bools + msg .ints + msg .strs + msg .doubles ])
228
- def gt (m , descr , group = None ):
237
+
238
+ def gt (m , descr , group = None ):
229
239
# get the default group
230
240
if group is None :
231
241
for x in m .groups :
@@ -276,7 +286,8 @@ def add_params(group, descr):
276
286
277
287
return d
278
288
279
- def decode_config (msg , description = None ):
289
+
290
+ def decode_config (msg , description = None ):
280
291
if sys .version_info .major < 3 :
281
292
for s in msg .strs :
282
293
if not isinstance (s .value , unicode ):
@@ -302,17 +313,19 @@ def add_params(group, descr):
302
313
303
314
return d
304
315
316
+
305
317
def extract_params (group ):
306
318
params = []
307
319
params .extend (group ['parameters' ])
308
320
try :
309
- for n ,g in group ['groups' ].items ():
321
+ for n , g in group ['groups' ].items ():
310
322
params .extend (extract_params (g ))
311
323
except AttributeError :
312
324
for g in group ['groups' ]:
313
325
params .extend (extract_params (g ))
314
326
return params
315
327
328
+
316
329
def get_parents (group , descriptions ):
317
330
parents = []
318
331
for p in descriptions ['group' ]:
0 commit comments