5 std::vector<T>
as_vector(boost::property_tree::ptree
const& pt,
6 boost::property_tree::ptree::key_type
const& key,
7 boost::property_tree::ptree::key_type
const& sub_key
10 if (sub_key ==
"NULL"){
11 for (
auto& item : pt.get_child(key)) r.push_back(item.second.get_value<T>());
13 for (
auto& item : pt.get_child(key).get_child(sub_key)) r.push_back(item.second.get_value<T>());
22 std::stringstream serial_json(data);
24 boost::property_tree::ptree parameters;
27 boost::property_tree::read_json(serial_json, parameters);
28 device = parameters.get<
int>(
"device");
29 std::cout <<
"Setting parameters for USRP # " << device <<std::endl;
30 my_parameter.usrp_number = device;
32 }
catch (boost::exception &error){
33 std::cerr <<boost::diagnostic_information(error)<< std::endl;
34 print_error(
"missing device ID or wrong JSON string");
39 my_parameter.A_TXRX.mode =
ant_mode_from_string( parameters.get_child(
"A_TXRX").get<std::string>(
"mode"));
40 my_parameter.B_TXRX.mode =
ant_mode_from_string( parameters.get_child(
"B_TXRX").get<std::string>(
"mode"));
41 my_parameter.A_RX2.mode =
ant_mode_from_string( parameters.get_child(
"A_RX2").get<std::string>(
"mode"));
42 my_parameter.B_RX2.mode =
ant_mode_from_string( parameters.get_child(
"B_RX2").get<std::string>(
"mode"));
43 }
catch(std::exception& error){
44 std::cout << error.what()<<std::endl;
45 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"mode\" match the specifications!");
49 my_parameter.A_TXRX.tone = parameters.get_child(
"A_TXRX").get<
double>(
"rf");
50 my_parameter.B_TXRX.tone = parameters.get_child(
"B_TXRX").get<
double>(
"rf");
51 my_parameter.A_RX2.tone = parameters.get_child(
"A_RX2").get<
double>(
"rf");
52 my_parameter.B_RX2.tone = parameters.get_child(
"B_RX2").get<
double>(
"rf");
53 }
catch(std::exception& error){
54 std::cout << error.what()<<std::endl;
55 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"rf\" match the specifications!");
59 my_parameter.A_TXRX.tuning_mode = parameters.get_child(
"A_TXRX").get<
size_t>(
"tuning_mode");
60 my_parameter.B_TXRX.tuning_mode = parameters.get_child(
"B_TXRX").get<
size_t>(
"tuning_mode");
61 my_parameter.A_RX2.tuning_mode = parameters.get_child(
"A_RX2").get<
size_t>(
"tuning_mode");
62 my_parameter.B_RX2.tuning_mode = parameters.get_child(
"B_RX2").get<
size_t>(
"tuning_mode");
63 }
catch(std::exception& error){
64 std::cout << error.what()<<std::endl;
65 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"tuning_mode\" match the specifications!");
69 my_parameter.A_TXRX.rate = parameters.get_child(
"A_TXRX").get<
double>(
"rate");
70 my_parameter.B_TXRX.rate = parameters.get_child(
"B_TXRX").get<
double>(
"rate");
71 my_parameter.A_RX2.rate = parameters.get_child(
"A_RX2").get<
double>(
"rate");
72 my_parameter.B_RX2.rate = parameters.get_child(
"B_RX2").get<
double>(
"rate");
73 }
catch(std::exception& error){
74 std::cout << error.what()<<std::endl;
75 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"rate\" match the specifications!");
79 my_parameter.A_TXRX.decim = parameters.get_child(
"A_TXRX").get<
double>(
"decim");
80 my_parameter.B_TXRX.decim = parameters.get_child(
"B_TXRX").get<
double>(
"decim");
81 my_parameter.A_RX2.decim = parameters.get_child(
"A_RX2").get<
double>(
"decim");
82 my_parameter.B_RX2.decim = parameters.get_child(
"B_RX2").get<
double>(
"decim");
83 }
catch(std::exception& error){
84 std::cout << error.what()<<std::endl;
85 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"decim\" match the specifications!");
89 my_parameter.A_TXRX.fft_tones = parameters.get_child(
"A_TXRX").get<
double>(
"fft_tones");
90 my_parameter.B_TXRX.fft_tones = parameters.get_child(
"B_TXRX").get<
double>(
"fft_tones");
91 my_parameter.A_RX2.fft_tones = parameters.get_child(
"A_RX2").get<
double>(
"fft_tones");
92 my_parameter.B_RX2.fft_tones = parameters.get_child(
"B_RX2").get<
double>(
"fft_tones");
93 }
catch(std::exception& error){
94 std::cout << error.what()<<std::endl;
95 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"fft_tones\" match the specifications!");
99 my_parameter.A_TXRX.pf_average = parameters.get_child(
"A_TXRX").get<
double>(
"pf_average");
100 my_parameter.B_TXRX.pf_average = parameters.get_child(
"B_TXRX").get<
double>(
"pf_average");
101 my_parameter.A_RX2.pf_average = parameters.get_child(
"A_RX2").get<
double>(
"pf_average");
102 my_parameter.B_RX2.pf_average = parameters.get_child(
"B_RX2").get<
double>(
"pf_average");
103 }
catch(std::exception& error){
104 std::cout << error.what()<<std::endl;
105 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"pf_average\" match the specifications!");
110 my_parameter.A_TXRX.samples = parameters.get_child(
"A_TXRX").get<
size_t>(
"samples");
111 my_parameter.B_TXRX.samples = parameters.get_child(
"B_TXRX").get<
size_t>(
"samples");
112 my_parameter.A_RX2.samples = parameters.get_child(
"A_RX2").get<
size_t>(
"samples");
113 my_parameter.B_RX2.samples = parameters.get_child(
"B_RX2").get<
size_t>(
"samples");
114 }
catch(std::exception& error){
115 std::cout << error.what()<<std::endl;
116 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"samples\" match the specifications!");
120 my_parameter.A_TXRX.buffer_len = parameters.get_child(
"A_TXRX").get<
double>(
"buffer_len");
121 my_parameter.B_TXRX.buffer_len = parameters.get_child(
"B_TXRX").get<
double>(
"buffer_len");
122 my_parameter.A_RX2.buffer_len = parameters.get_child(
"A_RX2").get<
double>(
"buffer_len");
123 my_parameter.B_RX2.buffer_len = parameters.get_child(
"B_RX2").get<
double>(
"buffer_len");
124 }
catch(std::exception& error){
125 std::cout << error.what()<<std::endl;
126 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"buffer_len\" match the specifications!");
130 my_parameter.A_TXRX.burst_off = parameters.get_child(
"A_TXRX").get<
double>(
"burst_off");
131 my_parameter.B_TXRX.burst_off = parameters.get_child(
"B_TXRX").get<
double>(
"burst_off");
132 my_parameter.A_RX2.burst_off = parameters.get_child(
"A_RX2").get<
double>(
"burst_off");
133 my_parameter.B_RX2.burst_off = parameters.get_child(
"B_RX2").get<
double>(
"burst_off");
134 }
catch(std::exception& error){
135 std::cout << error.what()<<std::endl;
136 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"burst_off\" match the specifications!");
140 my_parameter.A_TXRX.burst_on = parameters.get_child(
"A_TXRX").get<
double>(
"burst_on");
141 my_parameter.B_TXRX.burst_on = parameters.get_child(
"B_TXRX").get<
double>(
"burst_on");
142 my_parameter.A_RX2.burst_on = parameters.get_child(
"A_RX2").get<
double>(
"burst_on");
143 my_parameter.B_RX2.burst_on = parameters.get_child(
"B_RX2").get<
double>(
"burst_on");
144 }
catch(std::exception& error){
145 std::cout << error.what()<<std::endl;
146 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"burst_on\" match the specifications!");
150 my_parameter.A_TXRX.bw = parameters.get_child(
"A_TXRX").get<
double>(
"bw");
151 my_parameter.B_TXRX.bw = parameters.get_child(
"B_TXRX").get<
double>(
"bw");
152 my_parameter.A_RX2.bw = parameters.get_child(
"A_RX2").get<
double>(
"bw");
153 my_parameter.B_RX2.bw = parameters.get_child(
"B_RX2").get<
double>(
"bw");
154 }
catch(std::exception& error){
155 std::cout << error.what()<<std::endl;
156 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"bw\" match the specifications!");
160 my_parameter.A_TXRX.delay = parameters.get_child(
"A_TXRX").get<
double>(
"delay");
161 my_parameter.B_TXRX.delay = parameters.get_child(
"B_TXRX").get<
double>(
"delay");
162 my_parameter.A_RX2.delay = parameters.get_child(
"A_RX2").get<
double>(
"delay");
163 my_parameter.B_RX2.delay = parameters.get_child(
"B_RX2").get<
double>(
"delay");
164 }
catch(std::exception& error){
165 std::cout << error.what()<<std::endl;
166 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"delay\" match the specifications!");
170 my_parameter.A_TXRX.gain = parameters.get_child(
"A_TXRX").get<
double>(
"gain");
171 my_parameter.B_TXRX.gain = parameters.get_child(
"B_TXRX").get<
double>(
"gain");
172 my_parameter.A_RX2.gain = parameters.get_child(
"A_RX2").get<
double>(
"gain");
173 my_parameter.B_RX2.gain = parameters.get_child(
"B_RX2").get<
double>(
"gain");
174 }
catch(std::exception& error){
175 std::cout << error.what()<<std::endl;
176 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"gain\" match the specifications!");
180 my_parameter.A_TXRX.freq = as_vector<int>(parameters,
"A_TXRX",
"freq");
181 my_parameter.B_TXRX.freq = as_vector<int>(parameters,
"B_TXRX",
"freq");
182 my_parameter.A_RX2.freq = as_vector<int>(parameters,
"A_RX2",
"freq");
183 my_parameter.B_RX2.freq = as_vector<int>(parameters,
"B_RX2",
"freq");
184 }
catch(std::exception& error){
185 std::cout << error.what()<<std::endl;
186 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"frequency\" match the specifications!");
190 my_parameter.A_TXRX.ampl = as_vector<float>(parameters,
"A_TXRX",
"ampl");
191 my_parameter.B_TXRX.ampl = as_vector<float>(parameters,
"B_TXRX",
"ampl");
192 my_parameter.A_RX2.ampl = as_vector<float>(parameters,
"A_RX2",
"ampl");
193 my_parameter.B_RX2.ampl = as_vector<float>(parameters,
"B_RX2",
"ampl");
194 }
catch(std::exception& error){
195 std::cout << error.what()<<std::endl;
196 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"amplitude\" match the specifications!");
200 my_parameter.A_TXRX.wave_type =
string_to_w_type_vector( as_vector<std::string>(parameters,
"A_TXRX",
"wave_type") );
201 my_parameter.B_TXRX.wave_type =
string_to_w_type_vector(as_vector<std::string>(parameters,
"B_TXRX",
"wave_type") );
202 my_parameter.A_RX2.wave_type =
string_to_w_type_vector(as_vector<std::string>(parameters,
"A_RX2",
"wave_type") );
203 my_parameter.B_RX2.wave_type =
string_to_w_type_vector(as_vector<std::string>(parameters,
"B_RX2",
"wave_type") );
204 }
catch(std::exception& error){
205 std::cout << error.what()<<std::endl;
206 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"wave_type\" match the specifications!");
210 my_parameter.A_TXRX.chirp_t = as_vector<float>(parameters,
"A_TXRX",
"chirp_t");
211 my_parameter.B_TXRX.chirp_t = as_vector<float>(parameters,
"B_TXRX",
"chirp_t");
212 my_parameter.A_RX2.chirp_t = as_vector<float>(parameters,
"A_RX2",
"chirp_t");
213 my_parameter.B_RX2.chirp_t = as_vector<float>(parameters,
"B_RX2",
"chirp_t");
214 }
catch(std::exception& error){
215 std::cout << error.what()<<std::endl;
216 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"chirp_t\" match the specifications!");
220 my_parameter.A_TXRX.chirp_f = as_vector<int>(parameters,
"A_TXRX",
"chirp_f");
221 my_parameter.B_TXRX.chirp_f = as_vector<int>(parameters,
"B_TXRX",
"chirp_f");
222 my_parameter.A_RX2.chirp_f = as_vector<int>(parameters,
"A_RX2",
"chirp_f");
223 my_parameter.B_RX2.chirp_f = as_vector<int>(parameters,
"B_RX2",
"chirp_f");
224 }
catch(std::exception& error){
225 std::cout << error.what()<<std::endl;
226 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"chirp_f\" match the specifications!");
230 my_parameter.A_TXRX.swipe_s = as_vector<int>(parameters,
"A_TXRX",
"swipe_s");
231 my_parameter.B_TXRX.swipe_s = as_vector<int>(parameters,
"B_TXRX",
"swipe_s");
232 my_parameter.A_RX2.swipe_s = as_vector<int>(parameters,
"A_RX2",
"swipe_s");
233 my_parameter.B_RX2.swipe_s = as_vector<int>(parameters,
"B_RX2",
"swipe_s");
234 }
catch(std::exception& error){
235 std::cout << error.what()<<std::endl;
236 print_error(
"could not parse the JSON file correctly: be sure that the data type used for descriptor \"swipe_s\" match the specifications!");
242 my_parameter.A_TXRX.data_mem_mult = parameters.get_child(
"A_TXRX").get<
double>(
"data_mem_mult");
243 my_parameter.B_TXRX.data_mem_mult = parameters.get_child(
"B_TXRX").get<
double>(
"data_mem_mult");
244 my_parameter.A_RX2.data_mem_mult = parameters.get_child(
"A_RX2").get<
double>(
"data_mem_mult");
245 my_parameter.B_RX2.data_mem_mult = parameters.get_child(
"B_RX2").get<
double>(
"data_mem_mult");
246 }
catch(std::exception& error){
247 std::cout << error.what()<<std::endl;
248 print_error(
"could not parse the JSON file correctly: be sure that the data type used\ 249 for descriptor \"data_mem_mult\" match the specifications!");
254 std::cout<<
"printing parameters..."<<std::endl;
261 for(
size_t i = 0; i< ant_parameter.wave_type.size(); i++){
262 if(ant_parameter.wave_type[i] == TONES or ant_parameter.wave_type[i] == NOISE)res =
true;
271 if(parameter->A_TXRX.mode != OFF){
274 if(parameter->A_TXRX.pf_average <= 0)parameter->A_TXRX.pf_average = 1;
275 if(parameter->A_TXRX.fft_tones <= 0){
276 parameter->A_TXRX.fft_tones = 2;
277 std::stringstream ss;
278 ss<<
"number of fft bins in A_TXRX is too low. Setting it to 2.";
282 if(parameter->A_TXRX.buffer_len == 0)parameter->A_TXRX.buffer_len = DEFAULT_BUFFER_LEN;
283 if(parameter->A_TXRX.buffer_len > MAX_USEFULL_BUFFER or parameter->A_TXRX.buffer_len < MIN_USEFULL_BUFFER){
284 std::stringstream ss;
285 ss<<
"A_TXRX buffer length was set to "<<parameter->A_TXRX.buffer_len<<
" smples. This value is out of limits ["<< MIN_USEFULL_BUFFER<<
","<< MAX_USEFULL_BUFFER<<
"]. Reset the buffer length to default: "<<DEFAULT_BUFFER_LEN ;
287 parameter->A_TXRX.buffer_len = DEFAULT_BUFFER_LEN;
289 for(
size_t i=0; i< parameter->A_TXRX.wave_type.size(); i++){
291 if(parameter->A_TXRX.wave_type[i] == CHIRP or parameter->A_TXRX.wave_type[i] == TONES){
292 if(std::abs(parameter->A_TXRX.freq.at(i)) > parameter->A_TXRX.rate){
293 std::stringstream ss;
294 ss<<
"frequency descriptor "<< i <<
" in \'A_TXRX\' parameter is out of Nyquist range: "<< parameter->A_TXRX.freq.at(i)<<
">"<<parameter->A_TXRX.rate;
299 if(parameter->A_TXRX.wave_type[i] == CHIRP){
300 if(std::abs(parameter->A_TXRX.chirp_f.at(i)) > parameter->A_TXRX.rate){
301 std::stringstream ss;
302 ss<<
"second frequency descriptor "<< i <<
" in \'A_TXRX\' parameter is out of Nyquist range: "<< parameter->A_TXRX.chirp_f.at(i)<<
">"<<parameter->A_TXRX.rate;
307 }
catch(
const std::out_of_range& e){
308 print_error(
"Number of frequency descriptor does not match the number of signal mode descriptor in parameter \'A_TXRX\'");
314 if(parameter->B_TXRX.mode != OFF){
317 if(parameter->B_TXRX.pf_average <= 0)parameter->B_TXRX.pf_average = 1;
318 if(parameter->B_TXRX.fft_tones <= 0){
319 parameter->B_TXRX.fft_tones = 2;
320 std::stringstream ss;
321 ss<<
"number of fft bins in B_TXRX is too low. Setting it to 2.";
325 if(parameter->B_TXRX.buffer_len == 0)parameter->B_TXRX.buffer_len = DEFAULT_BUFFER_LEN;
326 if(parameter->B_TXRX.buffer_len > MAX_USEFULL_BUFFER or parameter->B_TXRX.buffer_len < MIN_USEFULL_BUFFER){
327 std::stringstream ss;
328 ss<<
"B_TXRX buffer length was set to "<<parameter->B_TXRX.buffer_len<<
" smples. This value is out of limits ["<< MIN_USEFULL_BUFFER<<
","<< MAX_USEFULL_BUFFER<<
"]. Reset the buffer length to default: "<<DEFAULT_BUFFER_LEN ;
330 parameter->B_TXRX.buffer_len = DEFAULT_BUFFER_LEN;
332 for(
size_t i=0; i< parameter->B_TXRX.wave_type.size(); i++){
334 if(parameter->B_TXRX.wave_type[i] == CHIRP or parameter->B_TXRX.wave_type[i] == TONES){
335 if(std::abs(parameter->B_TXRX.freq.at(i)) > parameter->B_TXRX.rate){
336 std::stringstream ss;
337 ss<<
"frequency descriptor "<< i <<
" in \'B_TXRX\' parameter is out of Nyquist range: "<< parameter->B_TXRX.freq.at(i)<<
">"<<parameter->B_TXRX.rate;
342 if(parameter->B_TXRX.wave_type[i] == CHIRP){
343 if(std::abs(parameter->B_TXRX.chirp_f.at(i)) > parameter->B_TXRX.rate){
344 std::stringstream ss;
345 ss<<
"second frequency descriptor "<< i <<
" in \'B_TXRX\' parameter is out of Nyquist range: "<< parameter->B_TXRX.chirp_f.at(i)<<
">"<<parameter->B_TXRX.rate;
350 }
catch(
const std::out_of_range& e){
351 print_error(
"Number of frequency descriptor does not match the number of signal mode descriptor in parameter \'B_TXRX\'");
356 if(parameter->A_RX2.mode != OFF){
358 if(parameter->A_RX2.pf_average <= 0)parameter->A_RX2.pf_average = 1;
359 if(parameter->A_RX2.fft_tones <= 0){
360 parameter->A_RX2.fft_tones = 2;
361 std::stringstream ss;
362 ss<<
"number of fft bins in A_TXRX is too low. Setting it to 2.";
366 if(parameter->A_RX2.buffer_len == 0)parameter->A_RX2.buffer_len = DEFAULT_BUFFER_LEN;
367 if(parameter->A_RX2.buffer_len > MAX_USEFULL_BUFFER or parameter->A_RX2.buffer_len < MIN_USEFULL_BUFFER){
368 std::stringstream ss;
369 ss<<
"A_RX2 buffer length was set to "<<parameter->A_RX2.buffer_len<<
" smples. This value is out of limits ["<< MIN_USEFULL_BUFFER<<
","<< MAX_USEFULL_BUFFER<<
"]. Reset the buffer length to default: "<<DEFAULT_BUFFER_LEN ;
371 parameter->A_RX2.buffer_len = DEFAULT_BUFFER_LEN;
373 for(
size_t i=0; i< parameter->A_RX2.wave_type.size(); i++){
375 if(parameter->A_RX2.wave_type[i] == CHIRP or parameter->A_RX2.wave_type[i] == TONES){
376 if(std::abs(parameter->A_RX2.freq.at(i)) > parameter->A_RX2.rate){
377 std::stringstream ss;
378 ss<<
"frequency descriptor "<< i <<
" in \'A_RX2\' parameter is out of Nyquist range: "<< parameter->A_RX2.freq.at(i)<<
">"<<parameter->A_RX2.rate;
383 if(parameter->A_RX2.wave_type[i] == CHIRP){
384 if(std::abs(parameter->A_RX2.chirp_f.at(i)) > parameter->A_RX2.rate){
385 std::stringstream ss;
386 ss<<
"second frequency descriptor "<< i <<
" in \'A_RX2\' parameter is out of Nyquist range: "<< parameter->A_RX2.chirp_f.at(i)<<
">"<<parameter->A_RX2.rate;
391 }
catch(
const std::out_of_range& e){
392 print_error(
"Number of frequency descriptor does not match the number of signal mode descriptor in parameter \'A_RX2\'");
397 if(parameter->B_RX2.mode != OFF){
399 if(parameter->B_RX2.pf_average <= 0)parameter->B_RX2.pf_average = 1;
400 if(parameter->B_RX2.fft_tones <= 0){
401 parameter->B_RX2.fft_tones = 2;
402 std::stringstream ss;
403 ss<<
"number of fft bins in A_TXRX is too low. Setting it to 2.";
407 if(parameter->B_RX2.buffer_len == 0)parameter->B_RX2.buffer_len = DEFAULT_BUFFER_LEN;
408 if(parameter->B_RX2.buffer_len > MAX_USEFULL_BUFFER or parameter->B_RX2.buffer_len < MIN_USEFULL_BUFFER){
409 std::stringstream ss;
410 ss<<
"B_RX2 buffer length was set to "<<parameter->B_RX2.buffer_len<<
" smples. This value is out of limits ["<< MIN_USEFULL_BUFFER<<
","<< MAX_USEFULL_BUFFER<<
"]. Reset the buffer length to default: "<<DEFAULT_BUFFER_LEN ;
412 parameter->B_RX2.buffer_len = DEFAULT_BUFFER_LEN;
414 for(
size_t i=0; i< parameter->B_RX2.wave_type.size(); i++){
416 if(parameter->B_RX2.wave_type[i] == CHIRP or parameter->B_RX2.wave_type[i] == TONES){
417 if(std::abs(parameter->B_RX2.freq.at(i)) > parameter->B_RX2.rate){
418 std::stringstream ss;
419 ss<<
"frequency descriptor "<< i <<
" in \'B_RX2\' parameter is out of Nyquist range: "<< parameter->B_RX2.freq.at(i)<<
">"<<parameter->B_RX2.rate;
424 if(parameter->B_RX2.wave_type[i] == CHIRP){
425 if(std::abs(parameter->B_RX2.chirp_f.at(i)) > parameter->B_RX2.rate){
426 std::stringstream ss;
427 ss<<
"second frequency descriptor "<< i <<
" in \'B_RX2\' parameter is out of Nyquist range: "<< parameter->B_RX2.chirp_f.at(i)<<
">"<<parameter->B_RX2.rate;
432 }
catch(
const std::out_of_range& e){
433 print_error(
"Number of frequency descriptor does not match the number of signal mode descriptor in parameter \'B_RX2\'");
442 std::stringstream res;
443 boost::property_tree::ptree response;
444 response.put(
"type",
"ack");
445 response.put(
"payload",payload);
446 boost::property_tree::write_json(res,response);
451 std::stringstream res;
452 boost::property_tree::ptree response;
453 response.put(
"type",
"nack");
454 response.put(
"payload",payload);
455 boost::property_tree::write_json(res,response);
bool string2param(std::string data, usrp_param &my_parameter)
bool is_pfb_active(param ant_parameter)
std::string server_ack(std::string payload)
bool chk_param(usrp_param *parameter)
void print_error(std::string text)
std::string server_nack(std::string payload)
ant_mode ant_mode_from_string(std::string str)
std::vector< w_type > string_to_w_type_vector(std::vector< std::string > string_vector)
void print_warning(std::string text)
std::vector< T > as_vector(boost::property_tree::ptree const &pt, boost::property_tree::ptree::key_type const &key, boost::property_tree::ptree::key_type const &sub_key)