Commit a5351be4a28c03be677a9da8ebac17d8f7f855b9

Authored by bmarechal
1 parent c0331afbef
Exists in master

add double_pid_vco and iq_pid_vco

Showing 5 changed files with 2132 additions and 4 deletions Inline Diff

redpitaya/client/dds_gnuradio.grc
<?xml version='1.0' encoding='utf-8'?> 1 1 <?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.10'?> 2 2 <?grc format='1' created='3.7.10'?>
<flow_graph> 3 3 <flow_graph>
<timestamp>Thu Feb 2 22:54:58 2017</timestamp> 4 4 <timestamp>Thu Feb 2 22:54:58 2017</timestamp>
<block> 5 5 <block>
<key>options</key> 6 6 <key>options</key>
<param> 7 7 <param>
<key>author</key> 8 8 <key>author</key>
<value></value> 9 9 <value></value>
</param> 10 10 </param>
<param> 11 11 <param>
<key>window_size</key> 12 12 <key>window_size</key>
<value></value> 13 13 <value></value>
</param> 14 14 </param>
<param> 15 15 <param>
<key>category</key> 16 16 <key>category</key>
<value>[GRC Hier Blocks]</value> 17 17 <value>[GRC Hier Blocks]</value>
</param> 18 18 </param>
<param> 19 19 <param>
<key>comment</key> 20 20 <key>comment</key>
<value></value> 21 21 <value></value>
</param> 22 22 </param>
<param> 23 23 <param>
<key>description</key> 24 24 <key>description</key>
<value></value> 25 25 <value></value>
</param> 26 26 </param>
<param> 27 27 <param>
<key>_enabled</key> 28 28 <key>_enabled</key>
<value>True</value> 29 29 <value>True</value>
</param> 30 30 </param>
<param> 31 31 <param>
<key>_coordinate</key> 32 32 <key>_coordinate</key>
<value>(8, 8)</value> 33 33 <value>(8, 8)</value>
</param> 34 34 </param>
<param> 35 35 <param>
<key>_rotation</key> 36 36 <key>_rotation</key>
<value>0</value> 37 37 <value>0</value>
</param> 38 38 </param>
<param> 39 39 <param>
<key>generate_options</key> 40 40 <key>generate_options</key>
<value>qt_gui</value> 41 41 <value>qt_gui</value>
</param> 42 42 </param>
<param> 43 43 <param>
<key>hier_block_src_path</key> 44 44 <key>hier_block_src_path</key>
<value>.:</value> 45 45 <value>.:</value>
</param> 46 46 </param>
<param> 47 47 <param>
<key>id</key> 48 48 <key>id</key>
<value>dds_gnuradio</value> 49 49 <value>dds_gnuradio</value>
</param> 50 50 </param>
<param> 51 51 <param>
<key>max_nouts</key> 52 52 <key>max_nouts</key>
<value>0</value> 53 53 <value>0</value>
</param> 54 54 </param>
<param> 55 55 <param>
<key>qt_qss_theme</key> 56 56 <key>qt_qss_theme</key>
<value></value> 57 57 <value></value>
</param> 58 58 </param>
<param> 59 59 <param>
<key>realtime_scheduling</key> 60 60 <key>realtime_scheduling</key>
<value></value> 61 61 <value></value>
</param> 62 62 </param>
<param> 63 63 <param>
<key>run_command</key> 64 64 <key>run_command</key>
<value>{python} -u {filename}</value> 65 65 <value>{python} -u {filename}</value>
</param> 66 66 </param>
<param> 67 67 <param>
<key>run_options</key> 68 68 <key>run_options</key>
<value>prompt</value> 69 69 <value>prompt</value>
</param> 70 70 </param>
<param> 71 71 <param>
<key>run</key> 72 72 <key>run</key>
<value>True</value> 73 73 <value>True</value>
</param> 74 74 </param>
<param> 75 75 <param>
<key>thread_safe_setters</key> 76 76 <key>thread_safe_setters</key>
<value></value> 77 77 <value></value>
</param> 78 78 </param>
<param> 79 79 <param>
<key>title</key> 80 80 <key>title</key>
<value></value> 81 81 <value></value>
</param> 82 82 </param>
</block> 83 83 </block>
<block> 84 84 <block>
<key>variable_qtgui_range</key> 85 85 <key>variable_qtgui_range</key>
<param> 86 86 <param>
<key>comment</key> 87 87 <key>comment</key>
<value></value> 88 88 <value></value>
</param> 89 89 </param>
<param> 90 90 <param>
<key>value</key> 91 91 <key>value</key>
<value>0</value> 92 92 <value>0</value>
</param> 93 93 </param>
<param> 94 94 <param>
<key>_enabled</key> 95 95 <key>_enabled</key>
<value>True</value> 96 96 <value>True</value>
</param> 97 97 </param>
<param> 98 98 <param>
<key>_coordinate</key> 99 99 <key>_coordinate</key>
<value>(600, 12)</value> 100 100 <value>(600, 12)</value>
</param> 101 101 </param>
<param> 102 102 <param>
<key>gui_hint</key> 103 103 <key>gui_hint</key>
<value>1, 0</value> 104 104 <value>1, 0</value>
</param> 105 105 </param>
<param> 106 106 <param>
<key>_rotation</key> 107 107 <key>_rotation</key>
<value>0</value> 108 108 <value>0</value>
</param> 109 109 </param>
<param> 110 110 <param>
<key>id</key> 111 111 <key>id</key>
<value>a_dds</value> 112 112 <value>a_dds</value>
</param> 113 113 </param>
<param> 114 114 <param>
<key>label</key> 115 115 <key>label</key>
<value>DDS amplitude</value> 116 116 <value>DDS amplitude</value>
</param> 117 117 </param>
<param> 118 118 <param>
<key>min_len</key> 119 119 <key>min_len</key>
<value>200</value> 120 120 <value>200</value>
</param> 121 121 </param>
<param> 122 122 <param>
<key>orient</key> 123 123 <key>orient</key>
<value>Qt.Horizontal</value> 124 124 <value>Qt.Horizontal</value>
</param> 125 125 </param>
<param> 126 126 <param>
<key>start</key> 127 127 <key>start</key>
<value>0</value> 128 128 <value>0</value>
</param> 129 129 </param>
<param> 130 130 <param>
<key>step</key> 131 131 <key>step</key>
<value>1</value> 132 132 <value>1</value>
</param> 133 133 </param>
<param> 134 134 <param>
<key>stop</key> 135 135 <key>stop</key>
<value>2**13-1</value> 136 136 <value>2**13-1</value>
</param> 137 137 </param>
<param> 138 138 <param>
<key>rangeType</key> 139 139 <key>rangeType</key>
<value>int</value> 140 140 <value>int</value>
</param> 141 141 </param>
<param> 142 142 <param>
<key>widget</key> 143 143 <key>widget</key>
<value>counter_slider</value> 144 144 <value>counter_slider</value>
</param> 145 145 </param>
</block> 146 146 </block>
<block> 147 147 <block>
<key>variable</key> 148 148 <key>variable</key>
<param> 149 149 <param>
<key>comment</key> 150 150 <key>comment</key>
<value></value> 151 151 <value></value>
</param> 152 152 </param>
<param> 153 153 <param>
<key>_enabled</key> 154 154 <key>_enabled</key>
<value>True</value> 155 155 <value>True</value>
</param> 156 156 </param>
<param> 157 157 <param>
<key>_coordinate</key> 158 158 <key>_coordinate</key>
<value>(8, 104)</value> 159 159 <value>(8, 104)</value>
</param> 160 160 </param>
<param> 161 161 <param>
<key>_rotation</key> 162 162 <key>_rotation</key>
<value>0</value> 163 163 <value>0</value>
</param> 164 164 </param>
<param> 165 165 <param>
<key>id</key> 166 166 <key>id</key>
<value>addr</value> 167 167 <value>addr</value>
</param> 168 168 </param>
<param> 169 169 <param>
<key>value</key> 170 170 <key>value</key>
<value>"192.168.0.203"</value> 171 171 <value>"192.168.0.201"</value>
</param> 172 172 </param>
</block> 173 173 </block>
<block> 174 174 <block>
<key>variable_qtgui_range</key> 175 175 <key>variable_qtgui_range</key>
<param> 176 176 <param>
<key>comment</key> 177 177 <key>comment</key>
<value></value> 178 178 <value></value>
</param> 179 179 </param>
<param> 180 180 <param>
<key>value</key> 181 181 <key>value</key>
<value>0</value> 182 182 <value>0</value>
</param> 183 183 </param>
<param> 184 184 <param>
<key>_enabled</key> 185 185 <key>_enabled</key>
<value>True</value> 186 186 <value>True</value>
</param> 187 187 </param>
<param> 188 188 <param>
<key>_coordinate</key> 189 189 <key>_coordinate</key>
<value>(384, 12)</value> 190 190 <value>(384, 12)</value>
</param> 191 191 </param>
<param> 192 192 <param>
<key>gui_hint</key> 193 193 <key>gui_hint</key>
<value>0, 0</value> 194 194 <value>0, 0</value>
</param> 195 195 </param>
<param> 196 196 <param>
<key>_rotation</key> 197 197 <key>_rotation</key>
<value>0</value> 198 198 <value>0</value>
</param> 199 199 </param>
<param> 200 200 <param>
<key>id</key> 201 201 <key>id</key>
<value>f_dds</value> 202 202 <value>f_dds</value>
</param> 203 203 </param>
<param> 204 204 <param>
<key>label</key> 205 205 <key>label</key>
<value>DDS frequency</value> 206 206 <value>DDS frequency</value>
</param> 207 207 </param>
<param> 208 208 <param>
<key>min_len</key> 209 209 <key>min_len</key>
<value>200</value> 210 210 <value>200</value>
</param> 211 211 </param>
<param> 212 212 <param>
<key>orient</key> 213 213 <key>orient</key>
<value>Qt.Horizontal</value> 214 214 <value>Qt.Horizontal</value>
</param> 215 215 </param>
<param> 216 216 <param>
<key>start</key> 217 217 <key>start</key>
<value>0</value> 218 218 <value>0</value>
</param> 219 219 </param>
<param> 220 220 <param>
<key>step</key> 221 221 <key>step</key>
<value>1000</value> 222 222 <value>1000</value>
</param> 223 223 </param>
<param> 224 224 <param>
<key>stop</key> 225 225 <key>stop</key>
<value>60000000</value> 226 226 <value>60000000</value>
</param> 227 227 </param>
<param> 228 228 <param>
<key>rangeType</key> 229 229 <key>rangeType</key>
<value>float</value> 230 230 <value>float</value>
</param> 231 231 </param>
<param> 232 232 <param>
<key>widget</key> 233 233 <key>widget</key>
<value>counter_slider</value> 234 234 <value>counter_slider</value>
</param> 235 235 </param>
</block> 236 236 </block>
<block> 237 237 <block>
<key>variable_qtgui_range</key> 238 238 <key>variable_qtgui_range</key>
<param> 239 239 <param>
<key>comment</key> 240 240 <key>comment</key>
<value></value> 241 241 <value></value>
</param> 242 242 </param>
<param> 243 243 <param>
<key>value</key> 244 244 <key>value</key>
<value>0</value> 245 245 <value>0</value>
</param> 246 246 </param>
<param> 247 247 <param>
<key>_enabled</key> 248 248 <key>_enabled</key>
<value>True</value> 249 249 <value>True</value>
</param> 250 250 </param>
<param> 251 251 <param>
<key>_coordinate</key> 252 252 <key>_coordinate</key>
<value>(224, 12)</value> 253 253 <value>(224, 12)</value>
</param> 254 254 </param>
<param> 255 255 <param>
<key>gui_hint</key> 256 256 <key>gui_hint</key>
<value>2, 0</value> 257 257 <value>2, 0</value>
</param> 258 258 </param>
<param> 259 259 <param>
<key>_rotation</key> 260 260 <key>_rotation</key>
<value>0</value> 261 261 <value>0</value>
</param> 262 262 </param>
<param> 263 263 <param>
<key>id</key> 264 264 <key>id</key>
<value>offset_out1</value> 265 265 <value>offset_out1</value>
</param> 266 266 </param>
<param> 267 267 <param>
<key>label</key> 268 268 <key>label</key>
<value>Offset DDS</value> 269 269 <value>Offset DDS</value>
</param> 270 270 </param>
<param> 271 271 <param>
<key>min_len</key> 272 272 <key>min_len</key>
<value>200</value> 273 273 <value>200</value>
</param> 274 274 </param>
<param> 275 275 <param>
<key>orient</key> 276 276 <key>orient</key>
<value>Qt.Horizontal</value> 277 277 <value>Qt.Horizontal</value>
</param> 278 278 </param>
<param> 279 279 <param>
<key>start</key> 280 280 <key>start</key>
<value>-2**13</value> 281 281 <value>-2**13</value>
</param> 282 282 </param>
<param> 283 283 <param>
<key>step</key> 284 284 <key>step</key>
<value>1</value> 285 285 <value>1</value>
</param> 286 286 </param>
<param> 287 287 <param>
<key>stop</key> 288 288 <key>stop</key>
<value>2**13-1</value> 289 289 <value>2**13-1</value>
</param> 290 290 </param>
<param> 291 291 <param>
<key>rangeType</key> 292 292 <key>rangeType</key>
<value>int</value> 293 293 <value>int</value>
</param> 294 294 </param>
<param> 295 295 <param>
<key>widget</key> 296 296 <key>widget</key>
<value>counter_slider</value> 297 297 <value>counter_slider</value>
</param> 298 298 </param>
</block> 299 299 </block>
<block> 300 300 <block>
<key>variable</key> 301 301 <key>variable</key>
<param> 302 302 <param>
<key>comment</key> 303 303 <key>comment</key>
<value></value> 304 304 <value></value>
</param> 305 305 </param>
<param> 306 306 <param>
<key>_enabled</key> 307 307 <key>_enabled</key>
<value>True</value> 308 308 <value>True</value>
</param> 309 309 </param>
<param> 310 310 <param>
<key>_coordinate</key> 311 311 <key>_coordinate</key>
<value>(8, 176)</value> 312 312 <value>(8, 176)</value>
</param> 313 313 </param>
<param> 314 314 <param>
<key>_rotation</key> 315 315 <key>_rotation</key>
<value>0</value> 316 316 <value>0</value>
</param> 317 317 </param>
<param> 318 318 <param>
<key>id</key> 319 319 <key>id</key>
<value>port</value> 320 320 <value>port</value>
</param> 321 321 </param>
<param> 322 322 <param>
<key>value</key> 323 323 <key>value</key>
<value>1001</value> 324 324 <value>1001</value>
</param> 325 325 </param>
</block> 326 326 </block>
<block> 327 327 <block>
<key>add_const_set_offset</key> 328 328 <key>add_const_set_offset</key>
<param> 329 329 <param>
<key>addr</key> 330 330 <key>addr</key>
<value>addr</value> 331 331 <value>addr</value>
</param> 332 332 </param>
<param> 333 333 <param>
<key>alias</key> 334 334 <key>alias</key>
<value></value> 335 335 <value></value>
</param> 336 336 </param>
<param> 337 337 <param>
<key>comment</key> 338 338 <key>comment</key>
<value></value> 339 339 <value></value>
</param> 340 340 </param>
<param> 341 341 <param>
<key>const</key> 342 342 <key>const</key>
<value>offset_out1</value> 343 343 <value>offset_out1</value>
</param> 344 344 </param>
<param> 345 345 <param>
<key>device</key> 346 346 <key>device</key>
<value>/dev/dds_offset</value> 347 347 <value>/dev/dds_offset</value>
</param> 348 348 </param>
<param> 349 349 <param>
<key>_enabled</key> 350 350 <key>_enabled</key>
<value>True</value> 351 351 <value>True</value>
</param> 352 352 </param>
<param> 353 353 <param>
<key>_coordinate</key> 354 354 <key>_coordinate</key>
<value>(200, 164)</value> 355 355 <value>(200, 164)</value>
</param> 356 356 </param>
<param> 357 357 <param>
<key>_rotation</key> 358 358 <key>_rotation</key>
<value>0</value> 359 359 <value>0</value>
</param> 360 360 </param>
<param> 361 361 <param>
<key>id</key> 362 362 <key>id</key>
<value>add_const_set_offset_0</value> 363 363 <value>add_const_set_offset_0</value>
</param> 364 364 </param>
<param> 365 365 <param>
<key>port</key> 366 366 <key>port</key>
<value>port</value> 367 367 <value>port</value>
</param> 368 368 </param>
</block> 369 369 </block>
<block> 370 370 <block>
<key>add_const_set_offset</key> 371 371 <key>add_const_set_offset</key>
<param> 372 372 <param>
<key>addr</key> 373 373 <key>addr</key>
<value>addr</value> 374 374 <value>addr</value>
</param> 375 375 </param>
<param> 376 376 <param>
<key>alias</key> 377 377 <key>alias</key>
<value></value> 378 378 <value></value>
</param> 379 379 </param>
<param> 380 380 <param>
<key>comment</key> 381 381 <key>comment</key>
<value></value> 382 382 <value></value>
</param> 383 383 </param>
<param> 384 384 <param>
<key>const</key> 385 385 <key>const</key>
<value>a_dds</value> 386 386 <value>a_dds</value>
</param> 387 387 </param>
<param> 388 388 <param>
<key>device</key> 389 389 <key>device</key>
<value>/dev/dds_ampl</value> 390 390 <value>/dev/dds_ampl</value>
</param> 391 391 </param>
<param> 392 392 <param>
<key>_enabled</key> 393 393 <key>_enabled</key>
<value>True</value> 394 394 <value>True</value>
</param> 395 395 </param>
<param> 396 396 <param>
<key>_coordinate</key> 397 397 <key>_coordinate</key>
<value>(600, 164)</value> 398 398 <value>(600, 164)</value>
</param> 399 399 </param>
<param> 400 400 <param>
<key>_rotation</key> 401 401 <key>_rotation</key>
<value>0</value> 402 402 <value>0</value>
</param> 403 403 </param>
<param> 404 404 <param>
<key>id</key> 405 405 <key>id</key>
<value>add_const_set_offset_0_0</value> 406 406 <value>add_const_set_offset_0_0</value>
</param> 407 407 </param>
<param> 408 408 <param>
<key>port</key> 409 409 <key>port</key>
<value>port</value> 410 410 <value>port</value>
</param> 411 411 </param>
</block> 412 412 </block>
<block> 413 413 <block>
<key>nco_counter_send_conf</key> 414 414 <key>nco_counter_send_conf</key>
<param> 415 415 <param>
<key>acc_size</key> 416 416 <key>acc_size</key>
<value>32</value> 417 417 <value>32</value>
</param> 418 418 </param>
<param> 419 419 <param>
<key>addr</key> 420 420 <key>addr</key>
<value>addr</value> 421 421 <value>addr</value>
</param> 422 422 </param>
<param> 423 423 <param>
<key>alias</key> 424 424 <key>alias</key>
<value></value> 425 425 <value></value>
</param> 426 426 </param>
<param> 427 427 <param>
<key>comment</key> 428 428 <key>comment</key>
<value></value> 429 429 <value></value>
</param> 430 430 </param>
<param> 431 431 <param>
<key>device</key> 432 432 <key>device</key>
<value>/dev/dds_freq</value> 433 433 <value>/dev/dds_freq</value>
</param> 434 434 </param>
<param> 435 435 <param>
<key>_enabled</key> 436 436 <key>_enabled</key>
<value>True</value> 437 437 <value>True</value>
</param> 438 438 </param>
<param> 439 439 <param>
<key>freq_dds</key> 440 440 <key>freq_dds</key>
<value>f_dds</value> 441 441 <value>f_dds</value>
</param> 442 442 </param>
<param> 443 443 <param>
<key>freq_ref</key> 444 444 <key>freq_ref</key>
<value>125000000</value> 445 445 <value>125000000</value>
</param> 446 446 </param>
<param> 447 447 <param>
<key>_coordinate</key> 448 448 <key>_coordinate</key>
<value>(384, 160)</value> 449 449 <value>(384, 160)</value>
</param> 450 450 </param>
<param> 451 451 <param>
<key>_rotation</key> 452 452 <key>_rotation</key>
<value>0</value> 453 453 <value>0</value>
</param> 454 454 </param>
<param> 455 455 <param>
<key>id</key> 456 456 <key>id</key>
<value>nco_counter_send_conf_0</value> 457 457 <value>nco_counter_send_conf_0</value>
</param> 458 458 </param>
<param> 459 459 <param>
<key>offset</key> 460 460 <key>offset</key>
<value>0</value> 461 461 <value>0</value>
</param> 462 462 </param>
<param> 463 463 <param>
<key>pinc_sw</key> 464 464 <key>pinc_sw</key>
<value>1</value> 465 465 <value>1</value>
</param> 466 466 </param>
<param> 467 467 <param>
<key>poff_sw</key> 468 468 <key>poff_sw</key>
<value>1</value> 469 469 <value>1</value>
</param> 470 470 </param>
<param> 471 471 <param>
<key>port</key> 472 472 <key>port</key>
<value>port</value> 473 473 <value>port</value>
</param> 474 474 </param>
</block> 475 475 </block>
</flow_graph> 476 476 </flow_graph>
477 477
redpitaya/client/dds_gnuradio.py
#!/usr/bin/env python2 1 1 #!/usr/bin/env python2
# -*- coding: utf-8 -*- 2 2 # -*- coding: utf-8 -*-
################################################## 3 3 ##################################################
# GNU Radio Python Flow Graph 4 4 # GNU Radio Python Flow Graph
# Title: Dds Gnuradio 5 5 # Title: Dds Gnuradio
# Generated: Fri Apr 21 12:30:52 2017 6 6 # Generated: Fri Apr 21 17:59:20 2017
################################################## 7 7 ##################################################
8 8
if __name__ == '__main__': 9 9 if __name__ == '__main__':
import ctypes 10 10 import ctypes
import sys 11 11 import sys
if sys.platform.startswith('linux'): 12 12 if sys.platform.startswith('linux'):
try: 13 13 try:
x11 = ctypes.cdll.LoadLibrary('libX11.so') 14 14 x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads() 15 15 x11.XInitThreads()
except: 16 16 except:
print "Warning: failed to XInitThreads()" 17 17 print "Warning: failed to XInitThreads()"
18 18
from PyQt4 import Qt 19 19 from PyQt4 import Qt
from gnuradio import eng_notation 20 20 from gnuradio import eng_notation
from gnuradio import gr 21 21 from gnuradio import gr
from gnuradio.eng_option import eng_option 22 22 from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes 23 23 from gnuradio.filter import firdes
from gnuradio.qtgui import Range, RangeWidget 24 24 from gnuradio.qtgui import Range, RangeWidget
from optparse import OptionParser 25 25 from optparse import OptionParser
import redpitaya_gnuradio 26 26 import redpitaya_gnuradio
import sys 27 27 import sys
28 28
29 29
class dds_gnuradio(gr.top_block, Qt.QWidget): 30 30 class dds_gnuradio(gr.top_block, Qt.QWidget):
31 31
def __init__(self): 32 32 def __init__(self):
gr.top_block.__init__(self, "Dds Gnuradio") 33 33 gr.top_block.__init__(self, "Dds Gnuradio")
Qt.QWidget.__init__(self) 34 34 Qt.QWidget.__init__(self)
self.setWindowTitle("Dds Gnuradio") 35 35 self.setWindowTitle("Dds Gnuradio")
try: 36 36 try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) 37 37 self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except: 38 38 except:
pass 39 39 pass
self.top_scroll_layout = Qt.QVBoxLayout() 40 40 self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout) 41 41 self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea() 42 42 self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) 43 43 self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll) 44 44 self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True) 45 45 self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget() 46 46 self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget) 47 47 self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget) 48 48 self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout() 49 49 self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout) 50 50 self.top_layout.addLayout(self.top_grid_layout)
51 51
self.settings = Qt.QSettings("GNU Radio", "dds_gnuradio") 52 52 self.settings = Qt.QSettings("GNU Radio", "dds_gnuradio")
self.restoreGeometry(self.settings.value("geometry").toByteArray()) 53 53 self.restoreGeometry(self.settings.value("geometry").toByteArray())
54 54
################################################## 55 55 ##################################################
# Variables 56 56 # Variables
################################################## 57 57 ##################################################
self.port = port = 1001 58 58 self.port = port = 1001
self.offset_out1 = offset_out1 = 0 59 59 self.offset_out1 = offset_out1 = 0
self.f_dds = f_dds = 0 60 60 self.f_dds = f_dds = 0
self.addr = addr = "192.168.0.203" 61 61 self.addr = addr = "192.168.0.201"
self.a_dds = a_dds = 0 62 62 self.a_dds = a_dds = 0
63 63
################################################## 64 64 ##################################################
# Blocks 65 65 # Blocks
################################################## 66 66 ##################################################
self._offset_out1_range = Range(-2**13, 2**13-1, 1, 0, 200) 67 67 self._offset_out1_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._offset_out1_win = RangeWidget(self._offset_out1_range, self.set_offset_out1, 'Offset DDS', "counter_slider", int) 68 68 self._offset_out1_win = RangeWidget(self._offset_out1_range, self.set_offset_out1, 'Offset DDS', "counter_slider", int)
self.top_grid_layout.addWidget(self._offset_out1_win, 2, 0) 69 69 self.top_grid_layout.addWidget(self._offset_out1_win, 2, 0)
self._f_dds_range = Range(0, 60000000, 1000, 0, 200) 70 70 self._f_dds_range = Range(0, 60000000, 1000, 0, 200)
self._f_dds_win = RangeWidget(self._f_dds_range, self.set_f_dds, 'DDS frequency', "counter_slider", float) 71 71 self._f_dds_win = RangeWidget(self._f_dds_range, self.set_f_dds, 'DDS frequency', "counter_slider", float)
self.top_grid_layout.addWidget(self._f_dds_win, 0, 0) 72 72 self.top_grid_layout.addWidget(self._f_dds_win, 0, 0)
self._a_dds_range = Range(0, 2**13-1, 1, 0, 200) 73 73 self._a_dds_range = Range(0, 2**13-1, 1, 0, 200)
self._a_dds_win = RangeWidget(self._a_dds_range, self.set_a_dds, 'DDS amplitude', "counter_slider", int) 74 74 self._a_dds_win = RangeWidget(self._a_dds_range, self.set_a_dds, 'DDS amplitude', "counter_slider", int)
self.top_grid_layout.addWidget(self._a_dds_win, 1, 0) 75 75 self.top_grid_layout.addWidget(self._a_dds_win, 1, 0)
self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( 76 76 self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf(
addr=addr, 77 77 addr=addr,
port=port, 78 78 port=port,
device='/dev/dds_freq', 79 79 device='/dev/dds_freq',
freq_ref=125000000, 80 80 freq_ref=125000000,
freq_dds=f_dds, 81 81 freq_dds=f_dds,
acc_size=32, 82 82 acc_size=32,
offset=0, 83 83 offset=0,
pinc_sw=1, 84 84 pinc_sw=1,
poff_sw=1, 85 85 poff_sw=1,
) 86 86 )
87 87
self.add_const_set_offset_0_0 = redpitaya_gnuradio.add_const_set_offset( 88 88 self.add_const_set_offset_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 89 89 addr=addr,
port=port, 90 90 port=port,
device='/dev/dds_ampl', 91 91 device='/dev/dds_ampl',
const=a_dds, 92 92 const=a_dds,
) 93 93 )
94 94
self.add_const_set_offset_0 = redpitaya_gnuradio.add_const_set_offset( 95 95 self.add_const_set_offset_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 96 96 addr=addr,
port=port, 97 97 port=port,
device='/dev/dds_offset', 98 98 device='/dev/dds_offset',
const=offset_out1, 99 99 const=offset_out1,
) 100 100 )
101 101
102 102
def closeEvent(self, event): 103 103 def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "dds_gnuradio") 104 104 self.settings = Qt.QSettings("GNU Radio", "dds_gnuradio")
self.settings.setValue("geometry", self.saveGeometry()) 105 105 self.settings.setValue("geometry", self.saveGeometry())
event.accept() 106 106 event.accept()
107 107
def get_port(self): 108 108 def get_port(self):
return self.port 109 109 return self.port
110 110
def set_port(self, port): 111 111 def set_port(self, port):
self.port = port 112 112 self.port = port
113 113
def get_offset_out1(self): 114 114 def get_offset_out1(self):
return self.offset_out1 115 115 return self.offset_out1
116 116
def set_offset_out1(self, offset_out1): 117 117 def set_offset_out1(self, offset_out1):
self.offset_out1 = offset_out1 118 118 self.offset_out1 = offset_out1
self.add_const_set_offset_0.set_const(device='/dev/dds_offset', const=self.offset_out1) 119 119 self.add_const_set_offset_0.set_const(device='/dev/dds_offset', const=self.offset_out1)
120 120
def get_f_dds(self): 121 121 def get_f_dds(self):
return self.f_dds 122 122 return self.f_dds
123 123
def set_f_dds(self, f_dds): 124 124 def set_f_dds(self, f_dds):
self.f_dds = f_dds 125 125 self.f_dds = f_dds
self.nco_counter_send_conf_0.set_nco(device='/dev/dds_freq', freq_ref=125000000, freq_dds=self.f_dds, acc_size=32, offset=0, pinc_sw=1, poff_sw=1) 126 126 self.nco_counter_send_conf_0.set_nco(device='/dev/dds_freq', freq_ref=125000000, freq_dds=self.f_dds, acc_size=32, offset=0, pinc_sw=1, poff_sw=1)
127 127
def get_addr(self): 128 128 def get_addr(self):
return self.addr 129 129 return self.addr
130 130
def set_addr(self, addr): 131 131 def set_addr(self, addr):
self.addr = addr 132 132 self.addr = addr
133 133
def get_a_dds(self): 134 134 def get_a_dds(self):
return self.a_dds 135 135 return self.a_dds
redpitaya/client/double_pid_vco.py
#!/usr/bin/env python2 1 1 #!/usr/bin/env python2
# -*- coding: utf-8 -*- 2 2 # -*- coding: utf-8 -*-
################################################## 3 3 ##################################################
# GNU Radio Python Flow Graph 4 4 # GNU Radio Python Flow Graph
# Title: Double Pid Vco 5 5 # Title: Double Pid Vco
# Generated: Fri Apr 21 14:54:08 2017 6 6 # Generated: Fri Apr 21 15:21:06 2017
################################################## 7 7 ##################################################
8 8
if __name__ == '__main__': 9 9 if __name__ == '__main__':
import ctypes 10 10 import ctypes
import sys 11 11 import sys
if sys.platform.startswith('linux'): 12 12 if sys.platform.startswith('linux'):
try: 13 13 try:
x11 = ctypes.cdll.LoadLibrary('libX11.so') 14 14 x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads() 15 15 x11.XInitThreads()
except: 16 16 except:
print "Warning: failed to XInitThreads()" 17 17 print "Warning: failed to XInitThreads()"
18 18
from PyQt4 import Qt 19 19 from PyQt4 import Qt
from gnuradio import eng_notation 20 20 from gnuradio import eng_notation
from gnuradio import gr 21 21 from gnuradio import gr
from gnuradio.eng_option import eng_option 22 22 from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes 23 23 from gnuradio.filter import firdes
from gnuradio.qtgui import Range, RangeWidget 24 24 from gnuradio.qtgui import Range, RangeWidget
from optparse import OptionParser 25 25 from optparse import OptionParser
import redpitaya_gnuradio 26 26 import redpitaya_gnuradio
import sys 27 27 import sys
28 28
29 29
class double_pid_vco(gr.top_block, Qt.QWidget): 30 30 class double_pid_vco(gr.top_block, Qt.QWidget):
31 31
def __init__(self): 32 32 def __init__(self):
gr.top_block.__init__(self, "Double Pid Vco") 33 33 gr.top_block.__init__(self, "Double Pid Vco")
Qt.QWidget.__init__(self) 34 34 Qt.QWidget.__init__(self)
self.setWindowTitle("Double Pid Vco") 35 35 self.setWindowTitle("Double Pid Vco")
try: 36 36 try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) 37 37 self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except: 38 38 except:
pass 39 39 pass
self.top_scroll_layout = Qt.QVBoxLayout() 40 40 self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout) 41 41 self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea() 42 42 self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) 43 43 self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll) 44 44 self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True) 45 45 self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget() 46 46 self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget) 47 47 self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget) 48 48 self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout() 49 49 self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout) 50 50 self.top_layout.addLayout(self.top_grid_layout)
51 51
self.settings = Qt.QSettings("GNU Radio", "double_pid_vco") 52 52 self.settings = Qt.QSettings("GNU Radio", "double_pid_vco")
self.restoreGeometry(self.settings.value("geometry").toByteArray()) 53 53 self.restoreGeometry(self.settings.value("geometry").toByteArray())
54 54
################################################## 55 55 ##################################################
# Variables 56 56 # Variables
################################################## 57 57 ##################################################
self.port = port = 1001 58 58 self.port = port = 1001
self.pid2_sign = pid2_sign = 0 59 59 self.pid2_sign = pid2_sign = 0
self.pid2_setpoint = pid2_setpoint = 0 60 60 self.pid2_setpoint = pid2_setpoint = 0
self.pid2_rst_int = pid2_rst_int = 0 61 61 self.pid2_rst_int = pid2_rst_int = 0
self.pid2_kp = pid2_kp = 0 62 62 self.pid2_kp = pid2_kp = 0
self.pid2_ki = pid2_ki = 0 63 63 self.pid2_ki = pid2_ki = 0
self.pid2_kd = pid2_kd = 0 64 64 self.pid2_kd = pid2_kd = 0
self.pid1_sign = pid1_sign = 0 65 65 self.pid1_sign = pid1_sign = 0
self.pid1_setpoint = pid1_setpoint = 0 66 66 self.pid1_setpoint = pid1_setpoint = 0
self.pid1_rst_int = pid1_rst_int = 0 67 67 self.pid1_rst_int = pid1_rst_int = 0
self.pid1_kp = pid1_kp = 0 68 68 self.pid1_kp = pid1_kp = 0
self.pid1_ki = pid1_ki = 0 69 69 self.pid1_ki = pid1_ki = 0
self.pid1_kd = pid1_kd = 0 70 70 self.pid1_kd = pid1_kd = 0
self.dds2_range = dds2_range = 0 71 71 self.dds2_range = dds2_range = 0
self.dds2_poff_sw = dds2_poff_sw = 1 72 72 self.dds2_poff_sw = dds2_poff_sw = 1
self.dds2_pinc_sw = dds2_pinc_sw = 1 73 73 self.dds2_pinc_sw = dds2_pinc_sw = 1
self.dds2_offset = dds2_offset = 0 74 74 self.dds2_offset = dds2_offset = 0
self.dds2_nco = dds2_nco = 40750000 75 75 self.dds2_nco = dds2_nco = 40750000
self.dds2_f0 = dds2_f0 = 40750000 76 76 self.dds2_f0 = dds2_f0 = 40750000
self.dds2_ampl = dds2_ampl = 0 77 77 self.dds2_ampl = dds2_ampl = 0
self.dds1_range = dds1_range = 0 78 78 self.dds1_range = dds1_range = 0
self.dds1_poff_sw = dds1_poff_sw = 1 79 79 self.dds1_poff_sw = dds1_poff_sw = 1
self.dds1_pinc_sw = dds1_pinc_sw = 1 80 80 self.dds1_pinc_sw = dds1_pinc_sw = 1
self.dds1_offset = dds1_offset = 0 81 81 self.dds1_offset = dds1_offset = 0
self.dds1_nco = dds1_nco = 39500000 82 82 self.dds1_nco = dds1_nco = 39500000
self.dds1_f0 = dds1_f0 = 39500000 83 83 self.dds1_f0 = dds1_f0 = 39500000
self.dds1_ampl = dds1_ampl = 0 84 84 self.dds1_ampl = dds1_ampl = 0
self.addr = addr = "192.168.0.203" 85 85 self.addr = addr = "192.168.0.203"
self.adc2_offset = adc2_offset = 0 86 86 self.adc2_offset = adc2_offset = 0
self.adc1_offset = adc1_offset = 0 87 87 self.adc1_offset = adc1_offset = 0
88 88
################################################## 89 89 ##################################################
# Blocks 90 90 # Blocks
################################################## 91 91 ##################################################
_pid2_sign_check_box = Qt.QCheckBox('pid2_sign') 92 92 _pid2_sign_check_box = Qt.QCheckBox('pid2_sign')
self._pid2_sign_choices = {True: 1, False: 0} 93 93 self._pid2_sign_choices = {True: 1, False: 0}
self._pid2_sign_choices_inv = dict((v,k) for k,v in self._pid2_sign_choices.iteritems()) 94 94 self._pid2_sign_choices_inv = dict((v,k) for k,v in self._pid2_sign_choices.iteritems())
self._pid2_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid2_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid2_sign_choices_inv[i])) 95 95 self._pid2_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid2_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid2_sign_choices_inv[i]))
self._pid2_sign_callback(self.pid2_sign) 96 96 self._pid2_sign_callback(self.pid2_sign)
_pid2_sign_check_box.stateChanged.connect(lambda i: self.set_pid2_sign(self._pid2_sign_choices[bool(i)])) 97 97 _pid2_sign_check_box.stateChanged.connect(lambda i: self.set_pid2_sign(self._pid2_sign_choices[bool(i)]))
self.top_grid_layout.addWidget(_pid2_sign_check_box, 10,1) 98 98 self.top_grid_layout.addWidget(_pid2_sign_check_box, 10,1)
self._pid2_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200) 99 99 self._pid2_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._pid2_setpoint_win = RangeWidget(self._pid2_setpoint_range, self.set_pid2_setpoint, 'pid2_setpoint', "counter_slider", int) 100 100 self._pid2_setpoint_win = RangeWidget(self._pid2_setpoint_range, self.set_pid2_setpoint, 'pid2_setpoint', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid2_setpoint_win, 9,1) 101 101 self.top_grid_layout.addWidget(self._pid2_setpoint_win, 9,1)
_pid2_rst_int_push_button = Qt.QPushButton('pid2_rst_int') 102 102 _pid2_rst_int_push_button = Qt.QPushButton('pid2_rst_int')
self._pid2_rst_int_choices = {'Pressed': 1, 'Released': 0} 103 103 self._pid2_rst_int_choices = {'Pressed': 1, 'Released': 0}
_pid2_rst_int_push_button.pressed.connect(lambda: self.set_pid2_rst_int(self._pid2_rst_int_choices['Pressed'])) 104 104 _pid2_rst_int_push_button.pressed.connect(lambda: self.set_pid2_rst_int(self._pid2_rst_int_choices['Pressed']))
_pid2_rst_int_push_button.released.connect(lambda: self.set_pid2_rst_int(self._pid2_rst_int_choices['Released'])) 105 105 _pid2_rst_int_push_button.released.connect(lambda: self.set_pid2_rst_int(self._pid2_rst_int_choices['Released']))
self.top_grid_layout.addWidget(_pid2_rst_int_push_button, 11,1) 106 106 self.top_grid_layout.addWidget(_pid2_rst_int_push_button, 11,1)
self._pid2_kp_range = Range(0, 2**13-1, 1, 0, 200) 107 107 self._pid2_kp_range = Range(0, 2**13-1, 1, 0, 200)
self._pid2_kp_win = RangeWidget(self._pid2_kp_range, self.set_pid2_kp, 'pid2_kp', "counter_slider", int) 108 108 self._pid2_kp_win = RangeWidget(self._pid2_kp_range, self.set_pid2_kp, 'pid2_kp', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid2_kp_win, 6,1) 109 109 self.top_grid_layout.addWidget(self._pid2_kp_win, 6,1)
self._pid2_ki_range = Range(0, 2**13-1, 1, 0, 200) 110 110 self._pid2_ki_range = Range(0, 2**13-1, 1, 0, 200)
self._pid2_ki_win = RangeWidget(self._pid2_ki_range, self.set_pid2_ki, 'pid2_ki', "counter_slider", int) 111 111 self._pid2_ki_win = RangeWidget(self._pid2_ki_range, self.set_pid2_ki, 'pid2_ki', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid2_ki_win, 7,1) 112 112 self.top_grid_layout.addWidget(self._pid2_ki_win, 7,1)
self._pid2_kd_range = Range(0, 2**13-1, 1, 0, 200) 113 113 self._pid2_kd_range = Range(0, 2**13-1, 1, 0, 200)
self._pid2_kd_win = RangeWidget(self._pid2_kd_range, self.set_pid2_kd, 'pid2_kd', "counter_slider", int) 114 114 self._pid2_kd_win = RangeWidget(self._pid2_kd_range, self.set_pid2_kd, 'pid2_kd', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid2_kd_win, 8,1) 115 115 self.top_grid_layout.addWidget(self._pid2_kd_win, 8,1)
_pid1_sign_check_box = Qt.QCheckBox('pid1_sign') 116 116 _pid1_sign_check_box = Qt.QCheckBox('pid1_sign')
self._pid1_sign_choices = {True: 1, False: 0} 117 117 self._pid1_sign_choices = {True: 1, False: 0}
self._pid1_sign_choices_inv = dict((v,k) for k,v in self._pid1_sign_choices.iteritems()) 118 118 self._pid1_sign_choices_inv = dict((v,k) for k,v in self._pid1_sign_choices.iteritems())
self._pid1_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid1_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid1_sign_choices_inv[i])) 119 119 self._pid1_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid1_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid1_sign_choices_inv[i]))
self._pid1_sign_callback(self.pid1_sign) 120 120 self._pid1_sign_callback(self.pid1_sign)
_pid1_sign_check_box.stateChanged.connect(lambda i: self.set_pid1_sign(self._pid1_sign_choices[bool(i)])) 121 121 _pid1_sign_check_box.stateChanged.connect(lambda i: self.set_pid1_sign(self._pid1_sign_choices[bool(i)]))
self.top_grid_layout.addWidget(_pid1_sign_check_box, 10,0) 122 122 self.top_grid_layout.addWidget(_pid1_sign_check_box, 10,0)
self._pid1_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200) 123 123 self._pid1_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._pid1_setpoint_win = RangeWidget(self._pid1_setpoint_range, self.set_pid1_setpoint, 'pid1_setpoint', "counter_slider", int) 124 124 self._pid1_setpoint_win = RangeWidget(self._pid1_setpoint_range, self.set_pid1_setpoint, 'pid1_setpoint', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid1_setpoint_win, 9,0) 125 125 self.top_grid_layout.addWidget(self._pid1_setpoint_win, 9,0)
_pid1_rst_int_push_button = Qt.QPushButton('pid1_rst_int') 126 126 _pid1_rst_int_push_button = Qt.QPushButton('pid1_rst_int')
self._pid1_rst_int_choices = {'Pressed': 1, 'Released': 0} 127 127 self._pid1_rst_int_choices = {'Pressed': 1, 'Released': 0}
_pid1_rst_int_push_button.pressed.connect(lambda: self.set_pid1_rst_int(self._pid1_rst_int_choices['Pressed'])) 128 128 _pid1_rst_int_push_button.pressed.connect(lambda: self.set_pid1_rst_int(self._pid1_rst_int_choices['Pressed']))
_pid1_rst_int_push_button.released.connect(lambda: self.set_pid1_rst_int(self._pid1_rst_int_choices['Released'])) 129 129 _pid1_rst_int_push_button.released.connect(lambda: self.set_pid1_rst_int(self._pid1_rst_int_choices['Released']))
self.top_grid_layout.addWidget(_pid1_rst_int_push_button, 11,0) 130 130 self.top_grid_layout.addWidget(_pid1_rst_int_push_button, 11,0)
self._pid1_kp_range = Range(0, 2**13-1, 1, 0, 200) 131 131 self._pid1_kp_range = Range(0, 2**13-1, 1, 0, 200)
self._pid1_kp_win = RangeWidget(self._pid1_kp_range, self.set_pid1_kp, 'pid1_kp', "counter_slider", int) 132 132 self._pid1_kp_win = RangeWidget(self._pid1_kp_range, self.set_pid1_kp, 'pid1_kp', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid1_kp_win, 6,0) 133 133 self.top_grid_layout.addWidget(self._pid1_kp_win, 6,0)
self._pid1_ki_range = Range(0, 2**13-1, 1, 0, 200) 134 134 self._pid1_ki_range = Range(0, 2**13-1, 1, 0, 200)
self._pid1_ki_win = RangeWidget(self._pid1_ki_range, self.set_pid1_ki, 'pid1_ki', "counter_slider", int) 135 135 self._pid1_ki_win = RangeWidget(self._pid1_ki_range, self.set_pid1_ki, 'pid1_ki', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid1_ki_win, 7,0) 136 136 self.top_grid_layout.addWidget(self._pid1_ki_win, 7,0)
self._pid1_kd_range = Range(0, 2**13-1, 1, 0, 200) 137 137 self._pid1_kd_range = Range(0, 2**13-1, 1, 0, 200)
self._pid1_kd_win = RangeWidget(self._pid1_kd_range, self.set_pid1_kd, 'pid1_kd', "counter_slider", int) 138 138 self._pid1_kd_win = RangeWidget(self._pid1_kd_range, self.set_pid1_kd, 'pid1_kd', "counter_slider", int)
self.top_grid_layout.addWidget(self._pid1_kd_win, 8,0) 139 139 self.top_grid_layout.addWidget(self._pid1_kd_win, 8,0)
self._dds2_range_range = Range(-2**13, 2**13-1, 1, 0, 200) 140 140 self._dds2_range_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._dds2_range_win = RangeWidget(self._dds2_range_range, self.set_dds2_range, 'dds2_range', "counter_slider", int) 141 141 self._dds2_range_win = RangeWidget(self._dds2_range_range, self.set_dds2_range, 'dds2_range', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds2_range_win, 13,1) 142 142 self.top_grid_layout.addWidget(self._dds2_range_win, 13,1)
_dds2_poff_sw_check_box = Qt.QCheckBox('dds2_poff_sw') 143 143 _dds2_poff_sw_check_box = Qt.QCheckBox('dds2_poff_sw')
self._dds2_poff_sw_choices = {True: 1, False: 0} 144 144 self._dds2_poff_sw_choices = {True: 1, False: 0}
self._dds2_poff_sw_choices_inv = dict((v,k) for k,v in self._dds2_poff_sw_choices.iteritems()) 145 145 self._dds2_poff_sw_choices_inv = dict((v,k) for k,v in self._dds2_poff_sw_choices.iteritems())
self._dds2_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds2_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds2_poff_sw_choices_inv[i])) 146 146 self._dds2_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds2_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds2_poff_sw_choices_inv[i]))
self._dds2_poff_sw_callback(self.dds2_poff_sw) 147 147 self._dds2_poff_sw_callback(self.dds2_poff_sw)
_dds2_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds2_poff_sw(self._dds2_poff_sw_choices[bool(i)])) 148 148 _dds2_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds2_poff_sw(self._dds2_poff_sw_choices[bool(i)]))
self.top_grid_layout.addWidget(_dds2_poff_sw_check_box, 2, 1) 149 149 self.top_grid_layout.addWidget(_dds2_poff_sw_check_box, 2, 1)
_dds2_pinc_sw_check_box = Qt.QCheckBox('dds2_pinc_sw') 150 150 _dds2_pinc_sw_check_box = Qt.QCheckBox('dds2_pinc_sw')
self._dds2_pinc_sw_choices = {True: 1, False: 0} 151 151 self._dds2_pinc_sw_choices = {True: 1, False: 0}
self._dds2_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds2_pinc_sw_choices.iteritems()) 152 152 self._dds2_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds2_pinc_sw_choices.iteritems())
self._dds2_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds2_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds2_pinc_sw_choices_inv[i])) 153 153 self._dds2_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds2_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds2_pinc_sw_choices_inv[i]))
self._dds2_pinc_sw_callback(self.dds2_pinc_sw) 154 154 self._dds2_pinc_sw_callback(self.dds2_pinc_sw)
_dds2_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds2_pinc_sw(self._dds2_pinc_sw_choices[bool(i)])) 155 155 _dds2_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds2_pinc_sw(self._dds2_pinc_sw_choices[bool(i)]))
self.top_grid_layout.addWidget(_dds2_pinc_sw_check_box, 1,1) 156 156 self.top_grid_layout.addWidget(_dds2_pinc_sw_check_box, 1,1)
self._dds2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) 157 157 self._dds2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._dds2_offset_win = RangeWidget(self._dds2_offset_range, self.set_dds2_offset, 'dds2_offset', "counter_slider", int) 158 158 self._dds2_offset_win = RangeWidget(self._dds2_offset_range, self.set_dds2_offset, 'dds2_offset', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds2_offset_win, 4,1) 159 159 self.top_grid_layout.addWidget(self._dds2_offset_win, 4,1)
self._dds2_nco_range = Range(0, 60000000, 1, 40750000, 200) 160 160 self._dds2_nco_range = Range(0, 60000000, 1, 40750000, 200)
self._dds2_nco_win = RangeWidget(self._dds2_nco_range, self.set_dds2_nco, 'dds2_nco', "counter_slider", int) 161 161 self._dds2_nco_win = RangeWidget(self._dds2_nco_range, self.set_dds2_nco, 'dds2_nco', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds2_nco_win, 0,1) 162 162 self.top_grid_layout.addWidget(self._dds2_nco_win, 0,1)
self._dds2_f0_range = Range(0, 60000000, 1, 40750000, 200) 163 163 self._dds2_f0_range = Range(0, 60000000, 1, 40750000, 200)
self._dds2_f0_win = RangeWidget(self._dds2_f0_range, self.set_dds2_f0, 'dds2_f0', "counter_slider", int) 164 164 self._dds2_f0_win = RangeWidget(self._dds2_f0_range, self.set_dds2_f0, 'dds2_f0', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds2_f0_win, 12,1) 165 165 self.top_grid_layout.addWidget(self._dds2_f0_win, 12,1)
self._dds2_ampl_range = Range(0, 2**13-1, 1, 0, 200) 166 166 self._dds2_ampl_range = Range(0, 2**13-1, 1, 0, 200)
self._dds2_ampl_win = RangeWidget(self._dds2_ampl_range, self.set_dds2_ampl, 'dds2_ampl', "counter_slider", int) 167 167 self._dds2_ampl_win = RangeWidget(self._dds2_ampl_range, self.set_dds2_ampl, 'dds2_ampl', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds2_ampl_win, 3,1) 168 168 self.top_grid_layout.addWidget(self._dds2_ampl_win, 3,1)
self._dds1_range_range = Range(-2**13, 2**13-1, 1, 0, 200) 169 169 self._dds1_range_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._dds1_range_win = RangeWidget(self._dds1_range_range, self.set_dds1_range, 'dds1_range', "counter_slider", int) 170 170 self._dds1_range_win = RangeWidget(self._dds1_range_range, self.set_dds1_range, 'dds1_range', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds1_range_win, 13,0) 171 171 self.top_grid_layout.addWidget(self._dds1_range_win, 13,0)
_dds1_poff_sw_check_box = Qt.QCheckBox('dds1_poff_sw') 172 172 _dds1_poff_sw_check_box = Qt.QCheckBox('dds1_poff_sw')
self._dds1_poff_sw_choices = {True: 1, False: 0} 173 173 self._dds1_poff_sw_choices = {True: 1, False: 0}
self._dds1_poff_sw_choices_inv = dict((v,k) for k,v in self._dds1_poff_sw_choices.iteritems()) 174 174 self._dds1_poff_sw_choices_inv = dict((v,k) for k,v in self._dds1_poff_sw_choices.iteritems())
self._dds1_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds1_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds1_poff_sw_choices_inv[i])) 175 175 self._dds1_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds1_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds1_poff_sw_choices_inv[i]))
self._dds1_poff_sw_callback(self.dds1_poff_sw) 176 176 self._dds1_poff_sw_callback(self.dds1_poff_sw)
_dds1_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds1_poff_sw(self._dds1_poff_sw_choices[bool(i)])) 177 177 _dds1_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds1_poff_sw(self._dds1_poff_sw_choices[bool(i)]))
self.top_grid_layout.addWidget(_dds1_poff_sw_check_box, 2, 0) 178 178 self.top_grid_layout.addWidget(_dds1_poff_sw_check_box, 2, 0)
_dds1_pinc_sw_check_box = Qt.QCheckBox('dds1_pinc_sw') 179 179 _dds1_pinc_sw_check_box = Qt.QCheckBox('dds1_pinc_sw')
self._dds1_pinc_sw_choices = {True: 1, False: 0} 180 180 self._dds1_pinc_sw_choices = {True: 1, False: 0}
self._dds1_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds1_pinc_sw_choices.iteritems()) 181 181 self._dds1_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds1_pinc_sw_choices.iteritems())
self._dds1_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds1_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds1_pinc_sw_choices_inv[i])) 182 182 self._dds1_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds1_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds1_pinc_sw_choices_inv[i]))
self._dds1_pinc_sw_callback(self.dds1_pinc_sw) 183 183 self._dds1_pinc_sw_callback(self.dds1_pinc_sw)
_dds1_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds1_pinc_sw(self._dds1_pinc_sw_choices[bool(i)])) 184 184 _dds1_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds1_pinc_sw(self._dds1_pinc_sw_choices[bool(i)]))
self.top_grid_layout.addWidget(_dds1_pinc_sw_check_box, 1,0) 185 185 self.top_grid_layout.addWidget(_dds1_pinc_sw_check_box, 1,0)
self._dds1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) 186 186 self._dds1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._dds1_offset_win = RangeWidget(self._dds1_offset_range, self.set_dds1_offset, 'dds1_offset', "counter_slider", int) 187 187 self._dds1_offset_win = RangeWidget(self._dds1_offset_range, self.set_dds1_offset, 'dds1_offset', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds1_offset_win, 4,0) 188 188 self.top_grid_layout.addWidget(self._dds1_offset_win, 4,0)
self._dds1_nco_range = Range(0, 60000000, 1, 39500000, 200) 189 189 self._dds1_nco_range = Range(0, 60000000, 1, 39500000, 200)
self._dds1_nco_win = RangeWidget(self._dds1_nco_range, self.set_dds1_nco, 'dds1_nco', "counter_slider", int) 190 190 self._dds1_nco_win = RangeWidget(self._dds1_nco_range, self.set_dds1_nco, 'dds1_nco', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds1_nco_win, 0,0) 191 191 self.top_grid_layout.addWidget(self._dds1_nco_win, 0,0)
self._dds1_f0_range = Range(0, 60000000, 1, 39500000, 200) 192 192 self._dds1_f0_range = Range(0, 60000000, 1, 39500000, 200)
self._dds1_f0_win = RangeWidget(self._dds1_f0_range, self.set_dds1_f0, 'dds1_f0', "counter_slider", int) 193 193 self._dds1_f0_win = RangeWidget(self._dds1_f0_range, self.set_dds1_f0, 'dds1_f0', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds1_f0_win, 12,0) 194 194 self.top_grid_layout.addWidget(self._dds1_f0_win, 12,0)
self._dds1_ampl_range = Range(0, 2**13-1, 1, 0, 200) 195 195 self._dds1_ampl_range = Range(0, 2**13-1, 1, 0, 200)
self._dds1_ampl_win = RangeWidget(self._dds1_ampl_range, self.set_dds1_ampl, 'dds1_ampl', "counter_slider", int) 196 196 self._dds1_ampl_win = RangeWidget(self._dds1_ampl_range, self.set_dds1_ampl, 'dds1_ampl', "counter_slider", int)
self.top_grid_layout.addWidget(self._dds1_ampl_win, 3,0) 197 197 self.top_grid_layout.addWidget(self._dds1_ampl_win, 3,0)
self._adc2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) 198 198 self._adc2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._adc2_offset_win = RangeWidget(self._adc2_offset_range, self.set_adc2_offset, 'adc2_offset', "counter_slider", int) 199 199 self._adc2_offset_win = RangeWidget(self._adc2_offset_range, self.set_adc2_offset, 'adc2_offset', "counter_slider", int)
self.top_grid_layout.addWidget(self._adc2_offset_win, 5,1) 200 200 self.top_grid_layout.addWidget(self._adc2_offset_win, 5,1)
self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) 201 201 self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int) 202 202 self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int)
self.top_grid_layout.addWidget(self._adc1_offset_win, 5,0) 203 203 self.top_grid_layout.addWidget(self._adc1_offset_win, 5,0)
self.nco_counter_send_conf_0_0 = redpitaya_gnuradio.nco_counter_send_conf( 204 204 self.nco_counter_send_conf_0_0 = redpitaya_gnuradio.nco_counter_send_conf(
addr=addr, 205 205 addr=addr,
port=port, 206 206 port=port,
device='/dev/dds2_nco', 207 207 device='/dev/dds2_nco',
freq_ref=125000000, 208 208 freq_ref=125000000,
freq_dds=dds2_nco, 209 209 freq_dds=dds2_nco,
acc_size=32, 210 210 acc_size=32,
offset=0, 211 211 offset=0,
pinc_sw=dds2_pinc_sw, 212 212 pinc_sw=dds2_pinc_sw,
poff_sw=dds2_poff_sw, 213 213 poff_sw=dds2_poff_sw,
) 214 214 )
215 215
self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( 216 216 self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf(
addr=addr, 217 217 addr=addr,
port=port, 218 218 port=port,
device='/dev/dds1_nco', 219 219 device='/dev/dds1_nco',
freq_ref=125000000, 220 220 freq_ref=125000000,
freq_dds=dds1_nco, 221 221 freq_dds=dds1_nco,
acc_size=32, 222 222 acc_size=32,
offset=0, 223 223 offset=0,
pinc_sw=dds1_pinc_sw, 224 224 pinc_sw=dds1_pinc_sw,
poff_sw=dds1_poff_sw, 225 225 poff_sw=dds1_poff_sw,
) 226 226 )
227 227
self.add_const_set_offset_0_0_0_1_1 = redpitaya_gnuradio.add_const_set_offset( 228 228 self.add_const_set_offset_0_0_0_1_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 229 229 addr=addr,
port=port, 230 230 port=port,
device='/dev/pid2_setpoint', 231 231 device='/dev/pid2_setpoint',
const=pid2_setpoint, 232 232 const=pid2_setpoint,
) 233 233 )
234 234
self.add_const_set_offset_0_0_0_1_0_1 = redpitaya_gnuradio.add_const_set_offset( 235 235 self.add_const_set_offset_0_0_0_1_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 236 236 addr=addr,
port=port, 237 237 port=port,
device='/dev/pid2_kp', 238 238 device='/dev/pid2_kp',
const=pid2_kp, 239 239 const=pid2_kp,
) 240 240 )
241 241
self.add_const_set_offset_0_0_0_1_0_0_1 = redpitaya_gnuradio.add_const_set_offset( 242 242 self.add_const_set_offset_0_0_0_1_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 243 243 addr=addr,
port=port, 244 244 port=port,
device='/dev/pid2_ki', 245 245 device='/dev/pid2_ki',
const=pid2_ki, 246 246 const=pid2_ki,
) 247 247 )
248 248
self.add_const_set_offset_0_0_0_1_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( 249 249 self.add_const_set_offset_0_0_0_1_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 250 250 addr=addr,
port=port, 251 251 port=port,
device='/dev/pid2_kd', 252 252 device='/dev/pid2_kd',
const=pid2_kd, 253 253 const=pid2_kd,
) 254 254 )
255 255
self.add_const_set_offset_0_0_0_1_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( 256 256 self.add_const_set_offset_0_0_0_1_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 257 257 addr=addr,
port=port, 258 258 port=port,
device='/dev/pid2_sign', 259 259 device='/dev/pid2_sign',
const=pid2_sign, 260 260 const=pid2_sign,
) 261 261 )
262 262
self.add_const_set_offset_0_0_0_1_0_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 263 263 self.add_const_set_offset_0_0_0_1_0_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 264 264 addr=addr,
port=port, 265 265 port=port,
device='/dev/pid2_rst_int', 266 266 device='/dev/pid2_rst_int',
const=pid2_rst_int, 267 267 const=pid2_rst_int,
) 268 268 )
269 269
self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 270 270 self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 271 271 addr=addr,
port=port, 272 272 port=port,
device='/dev/pid1_rst_int', 273 273 device='/dev/pid1_rst_int',
const=pid1_rst_int, 274 274 const=pid1_rst_int,
) 275 275 )
276 276
self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 277 277 self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 278 278 addr=addr,
port=port, 279 279 port=port,
device='/dev/pid1_sign', 280 280 device='/dev/pid1_sign',
const=pid1_sign, 281 281 const=pid1_sign,
) 282 282 )
283 283
self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 284 284 self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 285 285 addr=addr,
port=port, 286 286 port=port,
device='/dev/pid1_kd', 287 287 device='/dev/pid1_kd',
const=pid1_kd, 288 288 const=pid1_kd,
) 289 289 )
290 290
self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset( 291 291 self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 292 292 addr=addr,
port=port, 293 293 port=port,
device='/dev/pid1_ki', 294 294 device='/dev/pid1_ki',
const=pid1_ki, 295 295 const=pid1_ki,
) 296 296 )
297 297
self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset( 298 298 self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 299 299 addr=addr,
port=port, 300 300 port=port,
device='/dev/pid1_kp', 301 301 device='/dev/pid1_kp',
const=pid1_kp, 302 302 const=pid1_kp,
) 303 303 )
304 304
self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( 305 305 self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 306 306 addr=addr,
port=port, 307 307 port=port,
device='/dev/pid1_setpoint', 308 308 device='/dev/pid1_setpoint',
const=pid1_setpoint, 309 309 const=pid1_setpoint,
) 310 310 )
311 311
self.add_const_set_offset_0_0_0_0_1_1 = redpitaya_gnuradio.add_const_set_offset( 312 312 self.add_const_set_offset_0_0_0_0_1_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 313 313 addr=addr,
port=port, 314 314 port=port,
device='/dev/dds2_offset', 315 315 device='/dev/dds2_offset',
const=dds2_offset, 316 316 const=dds2_offset,
) 317 317 )
318 318
self.add_const_set_offset_0_0_0_0_1_0_1 = redpitaya_gnuradio.add_const_set_offset( 319 319 self.add_const_set_offset_0_0_0_0_1_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 320 320 addr=addr,
port=port, 321 321 port=port,
device='/dev/dds2_f0', 322 322 device='/dev/dds2_f0',
const=int(dds2_f0/(125e6/2**32)), 323 323 const=int(dds2_f0/(125e6/2**32)),
) 324 324 )
325 325
self.add_const_set_offset_0_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 326 326 self.add_const_set_offset_0_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 327 327 addr=addr,
port=port, 328 328 port=port,
device='/dev/dds2_range', 329 329 device='/dev/dds2_range',
const=dds2_range, 330 330 const=dds2_range,
) 331 331 )
332 332
self.add_const_set_offset_0_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset( 333 333 self.add_const_set_offset_0_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 334 334 addr=addr,
port=port, 335 335 port=port,
device='/dev/dds1_range', 336 336 device='/dev/dds1_range',
const=dds1_range, 337 337 const=dds1_range,
) 338 338 )
339 339
self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset( 340 340 self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 341 341 addr=addr,
port=port, 342 342 port=port,
device='/dev/dds1_f0', 343 343 device='/dev/dds1_f0',
const=int(dds1_f0/(125e6/2**32)), 344 344 const=int(dds1_f0/(125e6/2**32)),
) 345 345 )
346 346
self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( 347 347 self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 348 348 addr=addr,
port=port, 349 349 port=port,
device='/dev/dds1_offset', 350 350 device='/dev/dds1_offset',
const=dds1_offset, 351 351 const=dds1_offset,
) 352 352 )
353 353
self.add_const_set_offset_0_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 354 354 self.add_const_set_offset_0_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 355 355 addr=addr,
port=port, 356 356 port=port,
device='/dev/dds2_ampl', 357 357 device='/dev/dds2_ampl',
const=dds2_ampl, 358 358 const=dds2_ampl,
) 359 359 )
360 360
self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 361 361 self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 362 362 addr=addr,
port=port, 363 363 port=port,
device='/dev/dds1_ampl', 364 364 device='/dev/dds1_ampl',
const=dds1_ampl, 365 365 const=dds1_ampl,
) 366 366 )
367 367
self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 368 368 self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 369 369 addr=addr,
port=port, 370 370 port=port,
device='/dev/adc2_offset', 371 371 device='/dev/adc2_offset',
const=adc2_offset, 372 372 const=adc2_offset,
) 373 373 )
374 374
self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset( 375 375 self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
addr=addr, 376 376 addr=addr,
port=port, 377 377 port=port,
device='/dev/adc1_offset', 378 378 device='/dev/adc1_offset',
const=adc1_offset, 379 379 const=adc1_offset,
) 380 380 )
381 381
382 382
def closeEvent(self, event): 383 383 def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "double_pid_vco") 384 384 self.settings = Qt.QSettings("GNU Radio", "double_pid_vco")
self.settings.setValue("geometry", self.saveGeometry()) 385 385 self.settings.setValue("geometry", self.saveGeometry())
event.accept() 386 386 event.accept()
387 387
def get_port(self): 388 388 def get_port(self):
return self.port 389 389 return self.port
390 390
def set_port(self, port): 391 391 def set_port(self, port):
self.port = port 392 392 self.port = port
393 393
def get_pid2_sign(self): 394 394 def get_pid2_sign(self):
return self.pid2_sign 395 395 return self.pid2_sign
396 396
def set_pid2_sign(self, pid2_sign): 397 397 def set_pid2_sign(self, pid2_sign):
self.pid2_sign = pid2_sign 398 398 self.pid2_sign = pid2_sign
self._pid2_sign_callback(self.pid2_sign) 399 399 self._pid2_sign_callback(self.pid2_sign)
self.add_const_set_offset_0_0_0_1_0_0_0_0_1.set_const(device='/dev/pid2_sign', const=self.pid2_sign) 400 400 self.add_const_set_offset_0_0_0_1_0_0_0_0_1.set_const(device='/dev/pid2_sign', const=self.pid2_sign)
401 401
def get_pid2_setpoint(self): 402 402 def get_pid2_setpoint(self):
return self.pid2_setpoint 403 403 return self.pid2_setpoint
404 404
def set_pid2_setpoint(self, pid2_setpoint): 405 405 def set_pid2_setpoint(self, pid2_setpoint):
self.pid2_setpoint = pid2_setpoint 406 406 self.pid2_setpoint = pid2_setpoint
self.add_const_set_offset_0_0_0_1_1.set_const(device='/dev/pid2_setpoint', const=self.pid2_setpoint) 407 407 self.add_const_set_offset_0_0_0_1_1.set_const(device='/dev/pid2_setpoint', const=self.pid2_setpoint)
408 408
def get_pid2_rst_int(self): 409 409 def get_pid2_rst_int(self):
return self.pid2_rst_int 410 410 return self.pid2_rst_int
411 411
def set_pid2_rst_int(self, pid2_rst_int): 412 412 def set_pid2_rst_int(self, pid2_rst_int):
self.pid2_rst_int = pid2_rst_int 413 413 self.pid2_rst_int = pid2_rst_int
self.add_const_set_offset_0_0_0_1_0_0_0_0_0_0.set_const(device='/dev/pid2_rst_int', const=self.pid2_rst_int) 414 414 self.add_const_set_offset_0_0_0_1_0_0_0_0_0_0.set_const(device='/dev/pid2_rst_int', const=self.pid2_rst_int)
415 415
def get_pid2_kp(self): 416 416 def get_pid2_kp(self):
return self.pid2_kp 417 417 return self.pid2_kp
418 418
def set_pid2_kp(self, pid2_kp): 419 419 def set_pid2_kp(self, pid2_kp):
self.pid2_kp = pid2_kp 420 420 self.pid2_kp = pid2_kp
self.add_const_set_offset_0_0_0_1_0_1.set_const(device='/dev/pid2_kp', const=self.pid2_kp) 421 421 self.add_const_set_offset_0_0_0_1_0_1.set_const(device='/dev/pid2_kp', const=self.pid2_kp)
422 422
def get_pid2_ki(self): 423 423 def get_pid2_ki(self):
return self.pid2_ki 424 424 return self.pid2_ki
425 425
def set_pid2_ki(self, pid2_ki): 426 426 def set_pid2_ki(self, pid2_ki):
self.pid2_ki = pid2_ki 427 427 self.pid2_ki = pid2_ki
self.add_const_set_offset_0_0_0_1_0_0_1.set_const(device='/dev/pid2_ki', const=self.pid2_ki) 428 428 self.add_const_set_offset_0_0_0_1_0_0_1.set_const(device='/dev/pid2_ki', const=self.pid2_ki)
429 429
def get_pid2_kd(self): 430 430 def get_pid2_kd(self):
return self.pid2_kd 431 431 return self.pid2_kd
432 432
def set_pid2_kd(self, pid2_kd): 433 433 def set_pid2_kd(self, pid2_kd):
self.pid2_kd = pid2_kd 434 434 self.pid2_kd = pid2_kd
self.add_const_set_offset_0_0_0_1_0_0_0_1.set_const(device='/dev/pid2_kd', const=self.pid2_kd) 435 435 self.add_const_set_offset_0_0_0_1_0_0_0_1.set_const(device='/dev/pid2_kd', const=self.pid2_kd)
436 436
def get_pid1_sign(self): 437 437 def get_pid1_sign(self):
return self.pid1_sign 438 438 return self.pid1_sign
439 439
def set_pid1_sign(self, pid1_sign): 440 440 def set_pid1_sign(self, pid1_sign):
self.pid1_sign = pid1_sign 441 441 self.pid1_sign = pid1_sign
self._pid1_sign_callback(self.pid1_sign) 442 442 self._pid1_sign_callback(self.pid1_sign)
self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid1_sign', const=self.pid1_sign) 443 443 self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid1_sign', const=self.pid1_sign)
444 444
def get_pid1_setpoint(self): 445 445 def get_pid1_setpoint(self):
return self.pid1_setpoint 446 446 return self.pid1_setpoint
447 447
def set_pid1_setpoint(self, pid1_setpoint): 448 448 def set_pid1_setpoint(self, pid1_setpoint):
self.pid1_setpoint = pid1_setpoint 449 449 self.pid1_setpoint = pid1_setpoint
self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid1_setpoint', const=self.pid1_setpoint) 450 450 self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid1_setpoint', const=self.pid1_setpoint)
451 451
def get_pid1_rst_int(self): 452 452 def get_pid1_rst_int(self):
return self.pid1_rst_int 453 453 return self.pid1_rst_int
454 454
def set_pid1_rst_int(self, pid1_rst_int): 455 455 def set_pid1_rst_int(self, pid1_rst_int):
self.pid1_rst_int = pid1_rst_int 456 456 self.pid1_rst_int = pid1_rst_int
self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid1_rst_int', const=self.pid1_rst_int) 457 457 self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid1_rst_int', const=self.pid1_rst_int)
458 458
def get_pid1_kp(self): 459 459 def get_pid1_kp(self):
return self.pid1_kp 460 460 return self.pid1_kp
461 461
def set_pid1_kp(self, pid1_kp): 462 462 def set_pid1_kp(self, pid1_kp):
self.pid1_kp = pid1_kp 463 463 self.pid1_kp = pid1_kp
self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid1_kp', const=self.pid1_kp) 464 464 self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid1_kp', const=self.pid1_kp)
465 465
def get_pid1_ki(self): 466 466 def get_pid1_ki(self):
return self.pid1_ki 467 467 return self.pid1_ki
468 468
def set_pid1_ki(self, pid1_ki): 469 469 def set_pid1_ki(self, pid1_ki):
self.pid1_ki = pid1_ki 470 470 self.pid1_ki = pid1_ki
self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid1_ki', const=self.pid1_ki) 471 471 self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid1_ki', const=self.pid1_ki)
472 472
def get_pid1_kd(self): 473 473 def get_pid1_kd(self):
return self.pid1_kd 474 474 return self.pid1_kd
475 475
def set_pid1_kd(self, pid1_kd): 476 476 def set_pid1_kd(self, pid1_kd):
self.pid1_kd = pid1_kd 477 477 self.pid1_kd = pid1_kd
self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid1_kd', const=self.pid1_kd) 478 478 self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid1_kd', const=self.pid1_kd)
479 479
def get_dds2_range(self): 480 480 def get_dds2_range(self):
return self.dds2_range 481 481 return self.dds2_range
482 482
def set_dds2_range(self, dds2_range): 483 483 def set_dds2_range(self, dds2_range):
self.dds2_range = dds2_range 484 484 self.dds2_range = dds2_range
self.add_const_set_offset_0_0_0_0_1_0_0_0.set_const(device='/dev/dds2_range', const=self.dds2_range) 485 485 self.add_const_set_offset_0_0_0_0_1_0_0_0.set_const(device='/dev/dds2_range', const=self.dds2_range)
486 486
def get_dds2_poff_sw(self): 487 487 def get_dds2_poff_sw(self):
return self.dds2_poff_sw 488 488 return self.dds2_poff_sw
489 489
def set_dds2_poff_sw(self, dds2_poff_sw): 490 490 def set_dds2_poff_sw(self, dds2_poff_sw):
self.dds2_poff_sw = dds2_poff_sw 491 491 self.dds2_poff_sw = dds2_poff_sw
self._dds2_poff_sw_callback(self.dds2_poff_sw) 492 492 self._dds2_poff_sw_callback(self.dds2_poff_sw)
self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw) 493 493 self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw)
494 494
def get_dds2_pinc_sw(self): 495 495 def get_dds2_pinc_sw(self):
return self.dds2_pinc_sw 496 496 return self.dds2_pinc_sw
497 497
def set_dds2_pinc_sw(self, dds2_pinc_sw): 498 498 def set_dds2_pinc_sw(self, dds2_pinc_sw):
self.dds2_pinc_sw = dds2_pinc_sw 499 499 self.dds2_pinc_sw = dds2_pinc_sw
self._dds2_pinc_sw_callback(self.dds2_pinc_sw) 500 500 self._dds2_pinc_sw_callback(self.dds2_pinc_sw)
self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw) 501 501 self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw)
502 502
def get_dds2_offset(self): 503 503 def get_dds2_offset(self):
return self.dds2_offset 504 504 return self.dds2_offset
505 505
def set_dds2_offset(self, dds2_offset): 506 506 def set_dds2_offset(self, dds2_offset):
self.dds2_offset = dds2_offset 507 507 self.dds2_offset = dds2_offset
self.add_const_set_offset_0_0_0_0_1_1.set_const(device='/dev/dds2_offset', const=self.dds2_offset) 508 508 self.add_const_set_offset_0_0_0_0_1_1.set_const(device='/dev/dds2_offset', const=self.dds2_offset)
509 509
def get_dds2_nco(self): 510 510 def get_dds2_nco(self):
return self.dds2_nco 511 511 return self.dds2_nco
512 512
def set_dds2_nco(self, dds2_nco): 513 513 def set_dds2_nco(self, dds2_nco):
self.dds2_nco = dds2_nco 514 514 self.dds2_nco = dds2_nco
self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw) 515 515 self.nco_counter_send_conf_0_0.set_nco(device='/dev/dds2_nco', freq_ref=125000000, freq_dds=self.dds2_nco, acc_size=32, offset=0, pinc_sw=self.dds2_pinc_sw, poff_sw=self.dds2_poff_sw)
516 516
def get_dds2_f0(self): 517 517 def get_dds2_f0(self):
return self.dds2_f0 518 518 return self.dds2_f0
519 519
def set_dds2_f0(self, dds2_f0): 520 520 def set_dds2_f0(self, dds2_f0):
self.dds2_f0 = dds2_f0 521 521 self.dds2_f0 = dds2_f0
self.add_const_set_offset_0_0_0_0_1_0_1.set_const(device='/dev/dds2_f0', const=int(self.dds2_f0/(125e6/2**32))) 522 522 self.add_const_set_offset_0_0_0_0_1_0_1.set_const(device='/dev/dds2_f0', const=int(self.dds2_f0/(125e6/2**32)))
523 523
def get_dds2_ampl(self): 524 524 def get_dds2_ampl(self):
redpitaya/client/iq_pid_vco.grc
File was created 1 <?xml version='1.0' encoding='utf-8'?>
2 <?grc format='1' created='3.7.10'?>
3 <flow_graph>
4 <timestamp>Thu Feb 2 22:54:58 2017</timestamp>
5 <block>
6 <key>options</key>
7 <param>
8 <key>author</key>
9 <value></value>
10 </param>
11 <param>
12 <key>window_size</key>
13 <value>2000, 2000</value>
14 </param>
15 <param>
16 <key>category</key>
17 <value>[GRC Hier Blocks]</value>
18 </param>
19 <param>
20 <key>comment</key>
21 <value></value>
22 </param>
23 <param>
24 <key>description</key>
25 <value></value>
26 </param>
27 <param>
28 <key>_enabled</key>
29 <value>True</value>
30 </param>
31 <param>
32 <key>_coordinate</key>
33 <value>(8, 8)</value>
34 </param>
35 <param>
36 <key>_rotation</key>
37 <value>0</value>
38 </param>
39 <param>
40 <key>generate_options</key>
41 <value>qt_gui</value>
42 </param>
43 <param>
44 <key>hier_block_src_path</key>
45 <value>.:</value>
46 </param>
47 <param>
48 <key>id</key>
49 <value>iq_pid_vco</value>
50 </param>
51 <param>
52 <key>max_nouts</key>
53 <value>0</value>
54 </param>
55 <param>
56 <key>qt_qss_theme</key>
57 <value></value>
58 </param>
59 <param>
60 <key>realtime_scheduling</key>
61 <value></value>
62 </param>
63 <param>
64 <key>run_command</key>
65 <value>{python} -u {filename}</value>
66 </param>
67 <param>
68 <key>run_options</key>
69 <value>prompt</value>
70 </param>
71 <param>
72 <key>run</key>
73 <value>True</value>
74 </param>
75 <param>
76 <key>thread_safe_setters</key>
77 <value></value>
78 </param>
79 <param>
80 <key>title</key>
81 <value></value>
82 </param>
83 </block>
84 <block>
85 <key>variable_qtgui_range</key>
86 <param>
87 <key>comment</key>
88 <value></value>
89 </param>
90 <param>
91 <key>value</key>
92 <value>0</value>
93 </param>
94 <param>
95 <key>_enabled</key>
96 <value>True</value>
97 </param>
98 <param>
99 <key>_coordinate</key>
100 <value>(216, 8)</value>
101 </param>
102 <param>
103 <key>gui_hint</key>
104 <value>1, 1</value>
105 </param>
106 <param>
107 <key>_rotation</key>
108 <value>0</value>
109 </param>
110 <param>
111 <key>id</key>
112 <value>adc1_offset</value>
113 </param>
114 <param>
115 <key>label</key>
116 <value>adc1_offset</value>
117 </param>
118 <param>
119 <key>min_len</key>
120 <value>200</value>
121 </param>
122 <param>
123 <key>orient</key>
124 <value>Qt.Horizontal</value>
125 </param>
126 <param>
127 <key>start</key>
128 <value>-2**13</value>
129 </param>
130 <param>
131 <key>step</key>
132 <value>1</value>
133 </param>
134 <param>
135 <key>stop</key>
136 <value>2**13-1</value>
137 </param>
138 <param>
139 <key>rangeType</key>
140 <value>int</value>
141 </param>
142 <param>
143 <key>widget</key>
144 <value>counter_slider</value>
145 </param>
146 </block>
147 <block>
148 <key>variable</key>
149 <param>
150 <key>comment</key>
151 <value></value>
152 </param>
153 <param>
154 <key>_enabled</key>
155 <value>True</value>
156 </param>
157 <param>
158 <key>_coordinate</key>
159 <value>(8, 104)</value>
160 </param>
161 <param>
162 <key>_rotation</key>
163 <value>0</value>
164 </param>
165 <param>
166 <key>id</key>
167 <value>addr</value>
168 </param>
169 <param>
170 <key>value</key>
171 <value>"192.168.0.201"</value>
172 </param>
173 </block>
174 <block>
175 <key>variable_qtgui_range</key>
176 <param>
177 <key>comment</key>
178 <value></value>
179 </param>
180 <param>
181 <key>value</key>
182 <value>0</value>
183 </param>
184 <param>
185 <key>_enabled</key>
186 <value>True</value>
187 </param>
188 <param>
189 <key>_coordinate</key>
190 <value>(400, 8)</value>
191 </param>
192 <param>
193 <key>gui_hint</key>
194 <value>1, 2</value>
195 </param>
196 <param>
197 <key>_rotation</key>
198 <value>0</value>
199 </param>
200 <param>
201 <key>id</key>
202 <value>dac2_offset</value>
203 </param>
204 <param>
205 <key>label</key>
206 <value>dac2_offset</value>
207 </param>
208 <param>
209 <key>min_len</key>
210 <value>200</value>
211 </param>
212 <param>
213 <key>orient</key>
214 <value>Qt.Horizontal</value>
215 </param>
216 <param>
217 <key>start</key>
218 <value>-2**13</value>
219 </param>
220 <param>
221 <key>step</key>
222 <value>1</value>
223 </param>
224 <param>
225 <key>stop</key>
226 <value>2**13-1</value>
227 </param>
228 <param>
229 <key>rangeType</key>
230 <value>int</value>
231 </param>
232 <param>
233 <key>widget</key>
234 <value>counter_slider</value>
235 </param>
236 </block>
237 <block>
238 <key>variable_qtgui_range</key>
239 <param>
240 <key>comment</key>
241 <value></value>
242 </param>
243 <param>
244 <key>value</key>
245 <value>0</value>
246 </param>
247 <param>
248 <key>_enabled</key>
249 <value>True</value>
250 </param>
251 <param>
252 <key>_coordinate</key>
253 <value>(704, 8)</value>
254 </param>
255 <param>
256 <key>gui_hint</key>
257 <value>1, 3</value>
258 </param>
259 <param>
260 <key>_rotation</key>
261 <value>0</value>
262 </param>
263 <param>
264 <key>id</key>
265 <value>dds_ampl</value>
266 </param>
267 <param>
268 <key>label</key>
269 <value>dds_ampl</value>
270 </param>
271 <param>
272 <key>min_len</key>
273 <value>200</value>
274 </param>
275 <param>
276 <key>orient</key>
277 <value>Qt.Horizontal</value>
278 </param>
279 <param>
280 <key>start</key>
281 <value>0</value>
282 </param>
283 <param>
284 <key>step</key>
285 <value>1</value>
286 </param>
287 <param>
288 <key>stop</key>
289 <value>2**13-1</value>
290 </param>
291 <param>
292 <key>rangeType</key>
293 <value>int</value>
294 </param>
295 <param>
296 <key>widget</key>
297 <value>counter_slider</value>
298 </param>
299 </block>
300 <block>
301 <key>variable_qtgui_range</key>
302 <param>
303 <key>comment</key>
304 <value></value>
305 </param>
306 <param>
307 <key>value</key>
308 <value>0</value>
309 </param>
310 <param>
311 <key>_enabled</key>
312 <value>True</value>
313 </param>
314 <param>
315 <key>_coordinate</key>
316 <value>(696, 668)</value>
317 </param>
318 <param>
319 <key>gui_hint</key>
320 <value>4, 3</value>
321 </param>
322 <param>
323 <key>_rotation</key>
324 <value>0</value>
325 </param>
326 <param>
327 <key>id</key>
328 <value>dds_f0</value>
329 </param>
330 <param>
331 <key>label</key>
332 <value>dds_f0</value>
333 </param>
334 <param>
335 <key>min_len</key>
336 <value>200</value>
337 </param>
338 <param>
339 <key>orient</key>
340 <value>Qt.Horizontal</value>
341 </param>
342 <param>
343 <key>start</key>
344 <value>0</value>
345 </param>
346 <param>
347 <key>step</key>
348 <value>1</value>
349 </param>
350 <param>
351 <key>stop</key>
352 <value>60000000</value>
353 </param>
354 <param>
355 <key>rangeType</key>
356 <value>int</value>
357 </param>
358 <param>
359 <key>widget</key>
360 <value>counter_slider</value>
361 </param>
362 </block>
363 <block>
364 <key>variable_qtgui_range</key>
365 <param>
366 <key>comment</key>
367 <value></value>
368 </param>
369 <param>
370 <key>value</key>
371 <value>0</value>
372 </param>
373 <param>
374 <key>_enabled</key>
375 <value>True</value>
376 </param>
377 <param>
378 <key>_coordinate</key>
379 <value>(696, 236)</value>
380 </param>
381 <param>
382 <key>gui_hint</key>
383 <value>2, 3</value>
384 </param>
385 <param>
386 <key>_rotation</key>
387 <value>0</value>
388 </param>
389 <param>
390 <key>id</key>
391 <value>dds_nco</value>
392 </param>
393 <param>
394 <key>label</key>
395 <value>dds_nco</value>
396 </param>
397 <param>
398 <key>min_len</key>
399 <value>200</value>
400 </param>
401 <param>
402 <key>orient</key>
403 <value>Qt.Horizontal</value>
404 </param>
405 <param>
406 <key>start</key>
407 <value>0</value>
408 </param>
409 <param>
410 <key>step</key>
411 <value>1</value>
412 </param>
413 <param>
414 <key>stop</key>
415 <value>60000000</value>
416 </param>
417 <param>
418 <key>rangeType</key>
419 <value>int</value>
420 </param>
421 <param>
422 <key>widget</key>
423 <value>counter_slider</value>
424 </param>
425 </block>
426 <block>
427 <key>variable_qtgui_range</key>
428 <param>
429 <key>comment</key>
430 <value></value>
431 </param>
432 <param>
433 <key>value</key>
434 <value>0</value>
435 </param>
436 <param>
437 <key>_enabled</key>
438 <value>True</value>
439 </param>
440 <param>
441 <key>_coordinate</key>
442 <value>(704, 460)</value>
443 </param>
444 <param>
445 <key>gui_hint</key>
446 <value>3, 3</value>
447 </param>
448 <param>
449 <key>_rotation</key>
450 <value>0</value>
451 </param>
452 <param>
453 <key>id</key>
454 <value>dds_offset</value>
455 </param>
456 <param>
457 <key>label</key>
458 <value>dds_offset</value>
459 </param>
460 <param>
461 <key>min_len</key>
462 <value>200</value>
463 </param>
464 <param>
465 <key>orient</key>
466 <value>Qt.Horizontal</value>
467 </param>
468 <param>
469 <key>start</key>
470 <value>-2**13</value>
471 </param>
472 <param>
473 <key>step</key>
474 <value>1</value>
475 </param>
476 <param>
477 <key>stop</key>
478 <value>2**13-1</value>
479 </param>
480 <param>
481 <key>rangeType</key>
482 <value>int</value>
483 </param>
484 <param>
485 <key>widget</key>
486 <value>counter_slider</value>
487 </param>
488 </block>
489 <block>
490 <key>variable_qtgui_check_box</key>
491 <param>
492 <key>comment</key>
493 <value></value>
494 </param>
495 <param>
496 <key>value</key>
497 <value>1</value>
498 </param>
499 <param>
500 <key>_enabled</key>
501 <value>True</value>
502 </param>
503 <param>
504 <key>false</key>
505 <value>0</value>
506 </param>
507 <param>
508 <key>_coordinate</key>
509 <value>(960, 12)</value>
510 </param>
511 <param>
512 <key>gui_hint</key>
513 <value>1, 4</value>
514 </param>
515 <param>
516 <key>_rotation</key>
517 <value>0</value>
518 </param>
519 <param>
520 <key>id</key>
521 <value>dds_pinc_sw</value>
522 </param>
523 <param>
524 <key>label</key>
525 <value>dds_pinc_sw</value>
526 </param>
527 <param>
528 <key>true</key>
529 <value>1</value>
530 </param>
531 <param>
532 <key>type</key>
533 <value>int</value>
534 </param>
535 </block>
536 <block>
537 <key>variable_qtgui_check_box</key>
538 <param>
539 <key>comment</key>
540 <value></value>
541 </param>
542 <param>
543 <key>value</key>
544 <value>1</value>
545 </param>
546 <param>
547 <key>_enabled</key>
548 <value>True</value>
549 </param>
550 <param>
551 <key>false</key>
552 <value>0</value>
553 </param>
554 <param>
555 <key>_coordinate</key>
556 <value>(952, 204)</value>
557 </param>
558 <param>
559 <key>gui_hint</key>
560 <value>2, 4</value>
561 </param>
562 <param>
563 <key>_rotation</key>
564 <value>0</value>
565 </param>
566 <param>
567 <key>id</key>
568 <value>dds_poff_sw</value>
569 </param>
570 <param>
571 <key>label</key>
572 <value>dds_poff_sw</value>
573 </param>
574 <param>
575 <key>true</key>
576 <value>1</value>
577 </param>
578 <param>
579 <key>type</key>
580 <value>int</value>
581 </param>
582 </block>
583 <block>
584 <key>variable_qtgui_range</key>
585 <param>
586 <key>comment</key>
587 <value></value>
588 </param>
589 <param>
590 <key>value</key>
591 <value>0</value>
592 </param>
593 <param>
594 <key>_enabled</key>
595 <value>True</value>
596 </param>
597 <param>
598 <key>_coordinate</key>
599 <value>(672, 908)</value>
600 </param>
601 <param>
602 <key>gui_hint</key>
603 <value>5, 3</value>
604 </param>
605 <param>
606 <key>_rotation</key>
607 <value>0</value>
608 </param>
609 <param>
610 <key>id</key>
611 <value>dds_range</value>
612 </param>
613 <param>
614 <key>label</key>
615 <value>dds_range</value>
616 </param>
617 <param>
618 <key>min_len</key>
619 <value>200</value>
620 </param>
621 <param>
622 <key>orient</key>
623 <value>Qt.Horizontal</value>
624 </param>
625 <param>
626 <key>start</key>
627 <value>-2**13</value>
628 </param>
629 <param>
630 <key>step</key>
631 <value>1</value>
632 </param>
633 <param>
634 <key>stop</key>
635 <value>2**13-1</value>
636 </param>
637 <param>
638 <key>rangeType</key>
639 <value>int</value>
640 </param>
641 <param>
642 <key>widget</key>
643 <value>counter_slider</value>
644 </param>
645 </block>
646 <block>
647 <key>variable_qtgui_range</key>
648 <param>
649 <key>comment</key>
650 <value></value>
651 </param>
652 <param>
653 <key>value</key>
654 <value>0</value>
655 </param>
656 <param>
657 <key>_enabled</key>
658 <value>True</value>
659 </param>
660 <param>
661 <key>_coordinate</key>
662 <value>(952, 476)</value>
663 </param>
664 <param>
665 <key>gui_hint</key>
666 <value>3, 4</value>
667 </param>
668 <param>
669 <key>_rotation</key>
670 <value>0</value>
671 </param>
672 <param>
673 <key>id</key>
674 <value>demod_nco</value>
675 </param>
676 <param>
677 <key>label</key>
678 <value>demod_nco</value>
679 </param>
680 <param>
681 <key>min_len</key>
682 <value>200</value>
683 </param>
684 <param>
685 <key>orient</key>
686 <value>Qt.Horizontal</value>
687 </param>
688 <param>
689 <key>start</key>
690 <value>0</value>
691 </param>
692 <param>
693 <key>step</key>
694 <value>1</value>
695 </param>
696 <param>
697 <key>stop</key>
698 <value>60000000</value>
699 </param>
700 <param>
701 <key>rangeType</key>
702 <value>int</value>
703 </param>
704 <param>
705 <key>widget</key>
706 <value>counter_slider</value>
707 </param>
708 </block>
709 <block>
710 <key>variable_qtgui_range</key>
711 <param>
712 <key>comment</key>
713 <value></value>
714 </param>
715 <param>
716 <key>value</key>
717 <value>0</value>
718 </param>
719 <param>
720 <key>_enabled</key>
721 <value>True</value>
722 </param>
723 <param>
724 <key>_coordinate</key>
725 <value>(192, 668)</value>
726 </param>
727 <param>
728 <key>gui_hint</key>
729 <value>4, 1</value>
730 </param>
731 <param>
732 <key>_rotation</key>
733 <value>0</value>
734 </param>
735 <param>
736 <key>id</key>
737 <value>pid_kd</value>
738 </param>
739 <param>
740 <key>label</key>
741 <value>pid_kd</value>
742 </param>
743 <param>
744 <key>min_len</key>
745 <value>200</value>
746 </param>
747 <param>
748 <key>orient</key>
749 <value>Qt.Horizontal</value>
750 </param>
751 <param>
752 <key>start</key>
753 <value>0</value>
754 </param>
755 <param>
756 <key>step</key>
757 <value>1</value>
758 </param>
759 <param>
760 <key>stop</key>
761 <value>2**13-1</value>
762 </param>
763 <param>
764 <key>rangeType</key>
765 <value>int</value>
766 </param>
767 <param>
768 <key>widget</key>
769 <value>counter_slider</value>
770 </param>
771 </block>
772 <block>
773 <key>variable_qtgui_range</key>
774 <param>
775 <key>comment</key>
776 <value></value>
777 </param>
778 <param>
779 <key>value</key>
780 <value>0</value>
781 </param>
782 <param>
783 <key>_enabled</key>
784 <value>True</value>
785 </param>
786 <param>
787 <key>_coordinate</key>
788 <value>(192, 460)</value>
789 </param>
790 <param>
791 <key>gui_hint</key>
792 <value>3, 1</value>
793 </param>
794 <param>
795 <key>_rotation</key>
796 <value>0</value>
797 </param>
798 <param>
799 <key>id</key>
800 <value>pid_ki</value>
801 </param>
802 <param>
803 <key>label</key>
804 <value>pid_ki</value>
805 </param>
806 <param>
807 <key>min_len</key>
808 <value>200</value>
809 </param>
810 <param>
811 <key>orient</key>
812 <value>Qt.Horizontal</value>
813 </param>
814 <param>
815 <key>start</key>
816 <value>0</value>
817 </param>
818 <param>
819 <key>step</key>
820 <value>1</value>
821 </param>
822 <param>
823 <key>stop</key>
824 <value>2**13-1</value>
825 </param>
826 <param>
827 <key>rangeType</key>
828 <value>int</value>
829 </param>
830 <param>
831 <key>widget</key>
832 <value>counter_slider</value>
833 </param>
834 </block>
835 <block>
836 <key>variable_qtgui_range</key>
837 <param>
838 <key>comment</key>
839 <value></value>
840 </param>
841 <param>
842 <key>value</key>
843 <value>0</value>
844 </param>
845 <param>
846 <key>_enabled</key>
847 <value>True</value>
848 </param>
849 <param>
850 <key>_coordinate</key>
851 <value>(200, 236)</value>
852 </param>
853 <param>
854 <key>gui_hint</key>
855 <value>2, 1</value>
856 </param>
857 <param>
858 <key>_rotation</key>
859 <value>0</value>
860 </param>
861 <param>
862 <key>id</key>
863 <value>pid_kp</value>
864 </param>
865 <param>
866 <key>label</key>
867 <value>pid_kp</value>
868 </param>
869 <param>
870 <key>min_len</key>
871 <value>200</value>
872 </param>
873 <param>
874 <key>orient</key>
875 <value>Qt.Horizontal</value>
876 </param>
877 <param>
878 <key>start</key>
879 <value>0</value>
880 </param>
881 <param>
882 <key>step</key>
883 <value>1</value>
884 </param>
885 <param>
886 <key>stop</key>
887 <value>2**13-1</value>
888 </param>
889 <param>
890 <key>rangeType</key>
891 <value>int</value>
892 </param>
893 <param>
894 <key>widget</key>
895 <value>counter_slider</value>
896 </param>
897 </block>
898 <block>
899 <key>variable_qtgui_push_button</key>
900 <param>
901 <key>comment</key>
902 <value></value>
903 </param>
904 <param>
905 <key>value</key>
906 <value>0</value>
907 </param>
908 <param>
909 <key>_enabled</key>
910 <value>True</value>
911 </param>
912 <param>
913 <key>_coordinate</key>
914 <value>(392, 684)</value>
915 </param>
916 <param>
917 <key>gui_hint</key>
918 <value>4, 2</value>
919 </param>
920 <param>
921 <key>_rotation</key>
922 <value>0</value>
923 </param>
924 <param>
925 <key>id</key>
926 <value>pid_rst_int</value>
927 </param>
928 <param>
929 <key>label</key>
930 <value>pid_rst_int</value>
931 </param>
932 <param>
933 <key>pressed</key>
934 <value>1</value>
935 </param>
936 <param>
937 <key>released</key>
938 <value>0</value>
939 </param>
940 <param>
941 <key>type</key>
942 <value>int</value>
943 </param>
944 </block>
945 <block>
946 <key>variable_qtgui_range</key>
947 <param>
948 <key>comment</key>
949 <value></value>
950 </param>
951 <param>
952 <key>value</key>
953 <value>0</value>
954 </param>
955 <param>
956 <key>_enabled</key>
957 <value>True</value>
958 </param>
959 <param>
960 <key>_coordinate</key>
961 <value>(400, 236)</value>
962 </param>
963 <param>
964 <key>gui_hint</key>
965 <value>2, 2</value>
966 </param>
967 <param>
968 <key>_rotation</key>
969 <value>0</value>
970 </param>
971 <param>
972 <key>id</key>
973 <value>pid_setpoint</value>
974 </param>
975 <param>
976 <key>label</key>
977 <value>pid_setpoint</value>
978 </param>
979 <param>
980 <key>min_len</key>
981 <value>200</value>
982 </param>
983 <param>
984 <key>orient</key>
985 <value>Qt.Horizontal</value>
986 </param>
987 <param>
988 <key>start</key>
989 <value>-2**13</value>
990 </param>
991 <param>
992 <key>step</key>
993 <value>1</value>
994 </param>
995 <param>
996 <key>stop</key>
997 <value>2**13-1</value>
998 </param>
999 <param>
1000 <key>rangeType</key>
1001 <value>int</value>
1002 </param>
1003 <param>
1004 <key>widget</key>
1005 <value>counter_slider</value>
1006 </param>
1007 </block>
1008 <block>
1009 <key>variable_qtgui_check_box</key>
1010 <param>
1011 <key>comment</key>
1012 <value></value>
1013 </param>
1014 <param>
1015 <key>value</key>
1016 <value>0</value>
1017 </param>
1018 <param>
1019 <key>_enabled</key>
1020 <value>True</value>
1021 </param>
1022 <param>
1023 <key>false</key>
1024 <value>0</value>
1025 </param>
1026 <param>
1027 <key>_coordinate</key>
1028 <value>(400, 468)</value>
1029 </param>
1030 <param>
1031 <key>gui_hint</key>
1032 <value>3, 2</value>
1033 </param>
1034 <param>
1035 <key>_rotation</key>
1036 <value>0</value>
1037 </param>
1038 <param>
1039 <key>id</key>
1040 <value>pid_sign</value>
1041 </param>
1042 <param>
1043 <key>label</key>
1044 <value>pid_sign</value>
1045 </param>
1046 <param>
1047 <key>true</key>
1048 <value>1</value>
1049 </param>
1050 <param>
1051 <key>type</key>
1052 <value>int</value>
1053 </param>
1054 </block>
1055 <block>
1056 <key>variable</key>
1057 <param>
1058 <key>comment</key>
1059 <value></value>
1060 </param>
1061 <param>
1062 <key>_enabled</key>
1063 <value>True</value>
1064 </param>
1065 <param>
1066 <key>_coordinate</key>
1067 <value>(8, 176)</value>
1068 </param>
1069 <param>
1070 <key>_rotation</key>
1071 <value>0</value>
1072 </param>
1073 <param>
1074 <key>id</key>
1075 <value>port</value>
1076 </param>
1077 <param>
1078 <key>value</key>
1079 <value>1001</value>
1080 </param>
1081 </block>
1082 <block>
1083 <key>add_const_set_offset</key>
1084 <param>
1085 <key>addr</key>
1086 <value>addr</value>
1087 </param>
1088 <param>
1089 <key>alias</key>
1090 <value></value>
1091 </param>
1092 <param>
1093 <key>comment</key>
1094 <value></value>
1095 </param>
1096 <param>
1097 <key>const</key>
1098 <value>adc1_offset</value>
1099 </param>
1100 <param>
1101 <key>device</key>
1102 <value>/dev/adc1_offset</value>
1103 </param>
1104 <param>
1105 <key>_enabled</key>
1106 <value>True</value>
1107 </param>
1108 <param>
1109 <key>_coordinate</key>
1110 <value>(200, 144)</value>
1111 </param>
1112 <param>
1113 <key>_rotation</key>
1114 <value>0</value>
1115 </param>
1116 <param>
1117 <key>id</key>
1118 <value>add_const_set_offset_0_0_0</value>
1119 </param>
1120 <param>
1121 <key>port</key>
1122 <value>port</value>
1123 </param>
1124 </block>
1125 <block>
1126 <key>add_const_set_offset</key>
1127 <param>
1128 <key>addr</key>
1129 <value>addr</value>
1130 </param>
1131 <param>
1132 <key>alias</key>
1133 <value></value>
1134 </param>
1135 <param>
1136 <key>comment</key>
1137 <value></value>
1138 </param>
1139 <param>
1140 <key>const</key>
1141 <value>dac2_offset</value>
1142 </param>
1143 <param>
1144 <key>device</key>
1145 <value>/dev/dac2_offset</value>
1146 </param>
1147 <param>
1148 <key>_enabled</key>
1149 <value>True</value>
1150 </param>
1151 <param>
1152 <key>_coordinate</key>
1153 <value>(384, 144)</value>
1154 </param>
1155 <param>
1156 <key>_rotation</key>
1157 <value>0</value>
1158 </param>
1159 <param>
1160 <key>id</key>
1161 <value>add_const_set_offset_0_0_0_0</value>
1162 </param>
1163 <param>
1164 <key>port</key>
1165 <value>port</value>
1166 </param>
1167 </block>
1168 <block>
1169 <key>add_const_set_offset</key>
1170 <param>
1171 <key>addr</key>
1172 <value>addr</value>
1173 </param>
1174 <param>
1175 <key>alias</key>
1176 <value></value>
1177 </param>
1178 <param>
1179 <key>comment</key>
1180 <value></value>
1181 </param>
1182 <param>
1183 <key>const</key>
1184 <value>dds_ampl</value>
1185 </param>
1186 <param>
1187 <key>device</key>
1188 <value>/dev/dds_ampl</value>
1189 </param>
1190 <param>
1191 <key>_enabled</key>
1192 <value>True</value>
1193 </param>
1194 <param>
1195 <key>_coordinate</key>
1196 <value>(688, 144)</value>
1197 </param>
1198 <param>
1199 <key>_rotation</key>
1200 <value>0</value>
1201 </param>
1202 <param>
1203 <key>id</key>
1204 <value>add_const_set_offset_0_0_0_0_0</value>
1205 </param>
1206 <param>
1207 <key>port</key>
1208 <value>port</value>
1209 </param>
1210 </block>
1211 <block>
1212 <key>add_const_set_offset</key>
1213 <param>
1214 <key>addr</key>
1215 <value>addr</value>
1216 </param>
1217 <param>
1218 <key>alias</key>
1219 <value></value>
1220 </param>
1221 <param>
1222 <key>comment</key>
1223 <value></value>
1224 </param>
1225 <param>
1226 <key>const</key>
1227 <value>dds_offset</value>
1228 </param>
1229 <param>
1230 <key>device</key>
1231 <value>/dev/dds_offset</value>
1232 </param>
1233 <param>
1234 <key>_enabled</key>
1235 <value>True</value>
1236 </param>
1237 <param>
1238 <key>_coordinate</key>
1239 <value>(688, 596)</value>
1240 </param>
1241 <param>
1242 <key>_rotation</key>
1243 <value>0</value>
1244 </param>
1245 <param>
1246 <key>id</key>
1247 <value>add_const_set_offset_0_0_0_0_1</value>
1248 </param>
1249 <param>
1250 <key>port</key>
1251 <value>port</value>
1252 </param>
1253 </block>
1254 <block>
1255 <key>add_const_set_offset</key>
1256 <param>
1257 <key>addr</key>
1258 <value>addr</value>
1259 </param>
1260 <param>
1261 <key>alias</key>
1262 <value></value>
1263 </param>
1264 <param>
1265 <key>comment</key>
1266 <value></value>
1267 </param>
1268 <param>
1269 <key>const</key>
1270 <value>int(dds_f0/(125e6/2**32))</value>
1271 </param>
1272 <param>
1273 <key>device</key>
1274 <value>/dev/dds_f0</value>
1275 </param>
1276 <param>
1277 <key>_enabled</key>
1278 <value>True</value>
1279 </param>
1280 <param>
1281 <key>_coordinate</key>
1282 <value>(680, 804)</value>
1283 </param>
1284 <param>
1285 <key>_rotation</key>
1286 <value>0</value>
1287 </param>
1288 <param>
1289 <key>id</key>
1290 <value>add_const_set_offset_0_0_0_0_1_0</value>
1291 </param>
1292 <param>
1293 <key>port</key>
1294 <value>port</value>
1295 </param>
1296 </block>
1297 <block>
1298 <key>add_const_set_offset</key>
1299 <param>
1300 <key>addr</key>
1301 <value>addr</value>
1302 </param>
1303 <param>
1304 <key>alias</key>
1305 <value></value>
1306 </param>
1307 <param>
1308 <key>comment</key>
1309 <value></value>
1310 </param>
1311 <param>
1312 <key>const</key>
1313 <value>dds_range</value>
1314 </param>
1315 <param>
1316 <key>device</key>
1317 <value>/dev/dds_range</value>
1318 </param>
1319 <param>
1320 <key>_enabled</key>
1321 <value>True</value>
1322 </param>
1323 <param>
1324 <key>_coordinate</key>
1325 <value>(664, 1036)</value>
1326 </param>
1327 <param>
1328 <key>_rotation</key>
1329 <value>0</value>
1330 </param>
1331 <param>
1332 <key>id</key>
1333 <value>add_const_set_offset_0_0_0_0_1_0_0</value>
1334 </param>
1335 <param>
1336 <key>port</key>
1337 <value>port</value>
1338 </param>
1339 </block>
1340 <block>
1341 <key>add_const_set_offset</key>
1342 <param>
1343 <key>addr</key>
1344 <value>addr</value>
1345 </param>
1346 <param>
1347 <key>alias</key>
1348 <value></value>
1349 </param>
1350 <param>
1351 <key>comment</key>
1352 <value></value>
1353 </param>
1354 <param>
1355 <key>const</key>
1356 <value>pid_setpoint</value>
1357 </param>
1358 <param>
1359 <key>device</key>
1360 <value>/dev/pid_setpoint</value>
1361 </param>
1362 <param>
1363 <key>_enabled</key>
1364 <value>True</value>
1365 </param>
1366 <param>
1367 <key>_coordinate</key>
1368 <value>(384, 372)</value>
1369 </param>
1370 <param>
1371 <key>_rotation</key>
1372 <value>0</value>
1373 </param>
1374 <param>
1375 <key>id</key>
1376 <value>add_const_set_offset_0_0_0_1</value>
1377 </param>
1378 <param>
1379 <key>port</key>
1380 <value>port</value>
1381 </param>
1382 </block>
1383 <block>
1384 <key>add_const_set_offset</key>
1385 <param>
1386 <key>addr</key>
1387 <value>addr</value>
1388 </param>
1389 <param>
1390 <key>alias</key>
1391 <value></value>
1392 </param>
1393 <param>
1394 <key>comment</key>
1395 <value></value>
1396 </param>
1397 <param>
1398 <key>const</key>
1399 <value>pid_kp</value>
1400 </param>
1401 <param>
1402 <key>device</key>
1403 <value>/dev/pid_kp</value>
1404 </param>
1405 <param>
1406 <key>_enabled</key>
1407 <value>True</value>
1408 </param>
1409 <param>
1410 <key>_coordinate</key>
1411 <value>(184, 372)</value>
1412 </param>
1413 <param>
1414 <key>_rotation</key>
1415 <value>0</value>
1416 </param>
1417 <param>
1418 <key>id</key>
1419 <value>add_const_set_offset_0_0_0_1_0</value>
1420 </param>
1421 <param>
1422 <key>port</key>
1423 <value>port</value>
1424 </param>
1425 </block>
1426 <block>
1427 <key>add_const_set_offset</key>
1428 <param>
1429 <key>addr</key>
1430 <value>addr</value>
1431 </param>
1432 <param>
1433 <key>alias</key>
1434 <value></value>
1435 </param>
1436 <param>
1437 <key>comment</key>
1438 <value></value>
1439 </param>
1440 <param>
1441 <key>const</key>
1442 <value>pid_ki</value>
1443 </param>
1444 <param>
1445 <key>device</key>
1446 <value>/dev/pid_ki</value>
1447 </param>
1448 <param>
1449 <key>_enabled</key>
1450 <value>True</value>
1451 </param>
1452 <param>
1453 <key>_coordinate</key>
1454 <value>(176, 596)</value>
1455 </param>
1456 <param>
1457 <key>_rotation</key>
1458 <value>0</value>
1459 </param>
1460 <param>
1461 <key>id</key>
1462 <value>add_const_set_offset_0_0_0_1_0_0</value>
1463 </param>
1464 <param>
1465 <key>port</key>
1466 <value>port</value>
1467 </param>
1468 </block>
1469 <block>
1470 <key>add_const_set_offset</key>
1471 <param>
1472 <key>addr</key>
1473 <value>addr</value>
1474 </param>
1475 <param>
1476 <key>alias</key>
1477 <value></value>
1478 </param>
1479 <param>
1480 <key>comment</key>
1481 <value></value>
1482 </param>
1483 <param>
1484 <key>const</key>
1485 <value>pid_kd</value>
1486 </param>
1487 <param>
1488 <key>device</key>
1489 <value>/dev/pid_kd</value>
1490 </param>
1491 <param>
1492 <key>_enabled</key>
1493 <value>True</value>
1494 </param>
1495 <param>
1496 <key>_coordinate</key>
1497 <value>(176, 804)</value>
1498 </param>
1499 <param>
1500 <key>_rotation</key>
1501 <value>0</value>
1502 </param>
1503 <param>
1504 <key>id</key>
1505 <value>add_const_set_offset_0_0_0_1_0_0_0</value>
1506 </param>
1507 <param>
1508 <key>port</key>
1509 <value>port</value>
1510 </param>
1511 </block>
1512 <block>
1513 <key>add_const_set_offset</key>
1514 <param>
1515 <key>addr</key>
1516 <value>addr</value>
1517 </param>
1518 <param>
1519 <key>alias</key>
1520 <value></value>
1521 </param>
1522 <param>
1523 <key>comment</key>
1524 <value></value>
1525 </param>
1526 <param>
1527 <key>const</key>
1528 <value>pid_sign</value>
1529 </param>
1530 <param>
1531 <key>device</key>
1532 <value>/dev/pid_sign</value>
1533 </param>
1534 <param>
1535 <key>_enabled</key>
1536 <value>True</value>
1537 </param>
1538 <param>
1539 <key>_coordinate</key>
1540 <value>(392, 596)</value>
1541 </param>
1542 <param>
1543 <key>_rotation</key>
1544 <value>0</value>
1545 </param>
1546 <param>
1547 <key>id</key>
1548 <value>add_const_set_offset_0_0_0_1_0_0_0_0</value>
1549 </param>
1550 <param>
1551 <key>port</key>
1552 <value>port</value>
1553 </param>
1554 </block>
1555 <block>
1556 <key>add_const_set_offset</key>
1557 <param>
1558 <key>addr</key>
1559 <value>addr</value>
1560 </param>
1561 <param>
1562 <key>alias</key>
1563 <value></value>
1564 </param>
1565 <param>
1566 <key>comment</key>
1567 <value></value>
1568 </param>
1569 <param>
1570 <key>const</key>
1571 <value>pid_rst_int</value>
1572 </param>
1573 <param>
1574 <key>device</key>
1575 <value>/dev/pid_rst_int</value>
1576 </param>
1577 <param>
1578 <key>_enabled</key>
1579 <value>True</value>
1580 </param>
1581 <param>
1582 <key>_coordinate</key>
1583 <value>(392, 804)</value>
1584 </param>
1585 <param>
1586 <key>_rotation</key>
1587 <value>0</value>
1588 </param>
1589 <param>
1590 <key>id</key>
1591 <value>add_const_set_offset_0_0_0_1_0_0_0_0_0</value>
1592 </param>
1593 <param>
1594 <key>port</key>
1595 <value>port</value>
1596 </param>
1597 </block>
1598 <block>
1599 <key>nco_counter_send_conf</key>
1600 <param>
1601 <key>acc_size</key>
1602 <value>32</value>
1603 </param>
1604 <param>
1605 <key>addr</key>
1606 <value>addr</value>
1607 </param>
1608 <param>
1609 <key>alias</key>
1610 <value></value>
1611 </param>
1612 <param>
1613 <key>comment</key>
1614 <value></value>
1615 </param>
1616 <param>
1617 <key>device</key>
1618 <value>/dev/dds_nco</value>
1619 </param>
1620 <param>
1621 <key>_enabled</key>
1622 <value>True</value>
1623 </param>
1624 <param>
1625 <key>freq_dds</key>
1626 <value>dds_nco</value>
1627 </param>
1628 <param>
1629 <key>freq_ref</key>
1630 <value>125000000</value>
1631 </param>
1632 <param>
1633 <key>_coordinate</key>
1634 <value>(672, 344)</value>
1635 </param>
1636 <param>
1637 <key>_rotation</key>
1638 <value>0</value>
1639 </param>
1640 <param>
1641 <key>id</key>
1642 <value>nco_counter_send_conf_0</value>
1643 </param>
1644 <param>
1645 <key>offset</key>
1646 <value>0</value>
1647 </param>
1648 <param>
1649 <key>pinc_sw</key>
1650 <value>dds_pinc_sw</value>
1651 </param>
1652 <param>
1653 <key>poff_sw</key>
1654 <value>dds_poff_sw</value>
1655 </param>
1656 <param>
1657 <key>port</key>
1658 <value>port</value>
1659 </param>
1660 </block>
1661 <block>
1662 <key>nco_counter_send_conf</key>
1663 <param>
1664 <key>acc_size</key>
1665 <value>32</value>
1666 </param>
1667 <param>
1668 <key>addr</key>
1669 <value>addr</value>
1670 </param>
1671 <param>
1672 <key>alias</key>
1673 <value></value>
1674 </param>
1675 <param>
1676 <key>comment</key>
1677 <value></value>
1678 </param>
1679 <param>
1680 <key>device</key>
1681 <value>/dev/demod_nco</value>
1682 </param>
1683 <param>
1684 <key>_enabled</key>
1685 <value>True</value>
1686 </param>
1687 <param>
1688 <key>freq_dds</key>
1689 <value>demod_nco</value>
1690 </param>
1691 <param>
1692 <key>freq_ref</key>
1693 <value>125000000</value>
1694 </param>
1695 <param>
1696 <key>_coordinate</key>
1697 <value>(928, 576)</value>
1698 </param>
1699 <param>
1700 <key>_rotation</key>
1701 <value>0</value>
1702 </param>
1703 <param>
1704 <key>id</key>
1705 <value>nco_counter_send_conf_0_0</value>
1706 </param>
1707 <param>
1708 <key>offset</key>
1709 <value>0</value>
1710 </param>
1711 <param>
1712 <key>pinc_sw</key>
1713 <value>1</value>
1714 </param>
1715 <param>
1716 <key>poff_sw</key>
1717 <value>1</value>
1718 </param>
1719 <param>
1720 <key>port</key>
1721 <value>port</value>
1722 </param>
1723 </block>
1724 </flow_graph>
redpitaya/client/iq_pid_vco.py
File was created 1 #!/usr/bin/env python2
2 # -*- coding: utf-8 -*-
3 ##################################################
4 # GNU Radio Python Flow Graph
5 # Title: Iq Pid Vco
6 # Generated: Fri Apr 21 18:49:00 2017
7 ##################################################
8
9 if __name__ == '__main__':
10 import ctypes
11 import sys
12 if sys.platform.startswith('linux'):
13 try:
14 x11 = ctypes.cdll.LoadLibrary('libX11.so')
15 x11.XInitThreads()
16 except:
17 print "Warning: failed to XInitThreads()"
18
19 from PyQt4 import Qt
20 from gnuradio import eng_notation
21 from gnuradio import gr
22 from gnuradio.eng_option import eng_option
23 from gnuradio.filter import firdes
24 from gnuradio.qtgui import Range, RangeWidget
25 from optparse import OptionParser
26 import redpitaya_gnuradio
27 import sys
28
29
30 class iq_pid_vco(gr.top_block, Qt.QWidget):
31
32 def __init__(self):
33 gr.top_block.__init__(self, "Iq Pid Vco")
34 Qt.QWidget.__init__(self)
35 self.setWindowTitle("Iq Pid Vco")
36 try:
37 self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
38 except:
39 pass
40 self.top_scroll_layout = Qt.QVBoxLayout()
41 self.setLayout(self.top_scroll_layout)
42 self.top_scroll = Qt.QScrollArea()
43 self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
44 self.top_scroll_layout.addWidget(self.top_scroll)
45 self.top_scroll.setWidgetResizable(True)
46 self.top_widget = Qt.QWidget()
47 self.top_scroll.setWidget(self.top_widget)
48 self.top_layout = Qt.QVBoxLayout(self.top_widget)
49 self.top_grid_layout = Qt.QGridLayout()
50 self.top_layout.addLayout(self.top_grid_layout)
51
52 self.settings = Qt.QSettings("GNU Radio", "iq_pid_vco")
53 self.restoreGeometry(self.settings.value("geometry").toByteArray())
54
55 ##################################################
56 # Variables
57 ##################################################
58 self.port = port = 1001
59 self.pid_sign = pid_sign = 0
60 self.pid_setpoint = pid_setpoint = 0
61 self.pid_rst_int = pid_rst_int = 0
62 self.pid_kp = pid_kp = 0
63 self.pid_ki = pid_ki = 0
64 self.pid_kd = pid_kd = 0
65 self.demod_nco = demod_nco = 0
66 self.dds_range = dds_range = 0
67 self.dds_poff_sw = dds_poff_sw = 1
68 self.dds_pinc_sw = dds_pinc_sw = 1
69 self.dds_offset = dds_offset = 0
70 self.dds_nco = dds_nco = 0
71 self.dds_f0 = dds_f0 = 0
72 self.dds_ampl = dds_ampl = 0
73 self.dac2_offset = dac2_offset = 0
74 self.addr = addr = "192.168.0.201"
75 self.adc1_offset = adc1_offset = 0
76
77 ##################################################
78 # Blocks
79 ##################################################
80 _pid_sign_check_box = Qt.QCheckBox('pid_sign')
81 self._pid_sign_choices = {True: 1, False: 0}
82 self._pid_sign_choices_inv = dict((v,k) for k,v in self._pid_sign_choices.iteritems())
83 self._pid_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid_sign_choices_inv[i]))
84 self._pid_sign_callback(self.pid_sign)
85 _pid_sign_check_box.stateChanged.connect(lambda i: self.set_pid_sign(self._pid_sign_choices[bool(i)]))
86 self.top_grid_layout.addWidget(_pid_sign_check_box, 3, 2)
87 self._pid_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200)
88 self._pid_setpoint_win = RangeWidget(self._pid_setpoint_range, self.set_pid_setpoint, 'pid_setpoint', "counter_slider", int)
89 self.top_grid_layout.addWidget(self._pid_setpoint_win, 2, 2)
90 _pid_rst_int_push_button = Qt.QPushButton('pid_rst_int')
91 self._pid_rst_int_choices = {'Pressed': 1, 'Released': 0}
92 _pid_rst_int_push_button.pressed.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Pressed']))
93 _pid_rst_int_push_button.released.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Released']))
94 self.top_grid_layout.addWidget(_pid_rst_int_push_button, 4, 2)
95 self._pid_kp_range = Range(0, 2**13-1, 1, 0, 200)
96 self._pid_kp_win = RangeWidget(self._pid_kp_range, self.set_pid_kp, 'pid_kp', "counter_slider", int)
97 self.top_grid_layout.addWidget(self._pid_kp_win, 2, 1)
98 self._pid_ki_range = Range(0, 2**13-1, 1, 0, 200)
99 self._pid_ki_win = RangeWidget(self._pid_ki_range, self.set_pid_ki, 'pid_ki', "counter_slider", int)
100 self.top_grid_layout.addWidget(self._pid_ki_win, 3, 1)
101 self._pid_kd_range = Range(0, 2**13-1, 1, 0, 200)
102 self._pid_kd_win = RangeWidget(self._pid_kd_range, self.set_pid_kd, 'pid_kd', "counter_slider", int)
103 self.top_grid_layout.addWidget(self._pid_kd_win, 4, 1)
104 self._demod_nco_range = Range(0, 60000000, 1, 0, 200)
105 self._demod_nco_win = RangeWidget(self._demod_nco_range, self.set_demod_nco, 'demod_nco', "counter_slider", int)
106 self.top_grid_layout.addWidget(self._demod_nco_win, 3, 4)
107 self._dds_range_range = Range(-2**13, 2**13-1, 1, 0, 200)
108 self._dds_range_win = RangeWidget(self._dds_range_range, self.set_dds_range, 'dds_range', "counter_slider", int)
109 self.top_grid_layout.addWidget(self._dds_range_win, 5, 3)
110 _dds_poff_sw_check_box = Qt.QCheckBox('dds_poff_sw')
111 self._dds_poff_sw_choices = {True: 1, False: 0}
112 self._dds_poff_sw_choices_inv = dict((v,k) for k,v in self._dds_poff_sw_choices.iteritems())
113 self._dds_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds_poff_sw_choices_inv[i]))
114 self._dds_poff_sw_callback(self.dds_poff_sw)
115 _dds_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds_poff_sw(self._dds_poff_sw_choices[bool(i)]))
116 self.top_grid_layout.addWidget(_dds_poff_sw_check_box, 2, 4)
117 _dds_pinc_sw_check_box = Qt.QCheckBox('dds_pinc_sw')
118 self._dds_pinc_sw_choices = {True: 1, False: 0}
119 self._dds_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds_pinc_sw_choices.iteritems())
120 self._dds_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds_pinc_sw_choices_inv[i]))
121 self._dds_pinc_sw_callback(self.dds_pinc_sw)
122 _dds_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds_pinc_sw(self._dds_pinc_sw_choices[bool(i)]))
123 self.top_grid_layout.addWidget(_dds_pinc_sw_check_box, 1, 4)
124 self._dds_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
125 self._dds_offset_win = RangeWidget(self._dds_offset_range, self.set_dds_offset, 'dds_offset', "counter_slider", int)
126 self.top_grid_layout.addWidget(self._dds_offset_win, 3, 3)
127 self._dds_nco_range = Range(0, 60000000, 1, 0, 200)
128 self._dds_nco_win = RangeWidget(self._dds_nco_range, self.set_dds_nco, 'dds_nco', "counter_slider", int)
129 self.top_grid_layout.addWidget(self._dds_nco_win, 2, 3)
130 self._dds_f0_range = Range(0, 60000000, 1, 0, 200)
131 self._dds_f0_win = RangeWidget(self._dds_f0_range, self.set_dds_f0, 'dds_f0', "counter_slider", int)
132 self.top_grid_layout.addWidget(self._dds_f0_win, 4, 3)
133 self._dds_ampl_range = Range(0, 2**13-1, 1, 0, 200)
134 self._dds_ampl_win = RangeWidget(self._dds_ampl_range, self.set_dds_ampl, 'dds_ampl', "counter_slider", int)
135 self.top_grid_layout.addWidget(self._dds_ampl_win, 1, 3)
136 self._dac2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
137 self._dac2_offset_win = RangeWidget(self._dac2_offset_range, self.set_dac2_offset, 'dac2_offset', "counter_slider", int)
138 self.top_grid_layout.addWidget(self._dac2_offset_win, 1, 2)
139 self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
140 self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int)
141 self.top_grid_layout.addWidget(self._adc1_offset_win, 1, 1)
142 self.nco_counter_send_conf_0_0 = redpitaya_gnuradio.nco_counter_send_conf(
143 addr=addr,
144 port=port,
145 device='/dev/demod_nco',
146 freq_ref=125000000,
147 freq_dds=demod_nco,
148 acc_size=32,
149 offset=0,
150 pinc_sw=1,
151 poff_sw=1,
152 )
153
154 self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf(
155 addr=addr,
156 port=port,
157 device='/dev/dds_nco',
158 freq_ref=125000000,
159 freq_dds=dds_nco,
160 acc_size=32,
161 offset=0,
162 pinc_sw=dds_pinc_sw,
163 poff_sw=dds_poff_sw,
164 )
165
166 self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
167 addr=addr,
168 port=port,
169 device='/dev/pid_rst_int',
170 const=pid_rst_int,
171 )
172
173 self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
174 addr=addr,
175 port=port,
176 device='/dev/pid_sign',
177 const=pid_sign,
178 )
179
180 self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
181 addr=addr,
182 port=port,
183 device='/dev/pid_kd',
184 const=pid_kd,
185 )
186
187 self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
188 addr=addr,
189 port=port,
190 device='/dev/pid_ki',
191 const=pid_ki,
192 )
193
194 self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
195 addr=addr,
196 port=port,
197 device='/dev/pid_kp',
198 const=pid_kp,
199 )
200
201 self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
202 addr=addr,
203 port=port,
204 device='/dev/pid_setpoint',
205 const=pid_setpoint,
206 )
207
208 self.add_const_set_offset_0_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
209 addr=addr,
210 port=port,
211 device='/dev/dds_range',
212 const=dds_range,
213 )
214
215 self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
216 addr=addr,
217 port=port,
218 device='/dev/dds_f0',
219 const=int(dds_f0/(125e6/2**32)),
220 )
221
222 self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
223 addr=addr,
224 port=port,
225 device='/dev/dds_offset',
226 const=dds_offset,
227 )
228
229 self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
230 addr=addr,
231 port=port,
232 device='/dev/dds_ampl',
233 const=dds_ampl,
234 )
235
236 self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
237 addr=addr,
238 port=port,
239 device='/dev/dac2_offset',
240 const=dac2_offset,
241 )
242
243 self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
244 addr=addr,
245 port=port,
246 device='/dev/adc1_offset',
247 const=adc1_offset,
248 )
249
250
251 def closeEvent(self, event):
252 self.settings = Qt.QSettings("GNU Radio", "iq_pid_vco")
253 self.settings.setValue("geometry", self.saveGeometry())
254 event.accept()
255
256 def get_port(self):
257 return self.port
258
259 def set_port(self, port):
260 self.port = port
261
262 def get_pid_sign(self):
263 return self.pid_sign
264
265 def set_pid_sign(self, pid_sign):
266 self.pid_sign = pid_sign
267 self._pid_sign_callback(self.pid_sign)
268 self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid_sign', const=self.pid_sign)
269
270 def get_pid_setpoint(self):
271 return self.pid_setpoint
272
273 def set_pid_setpoint(self, pid_setpoint):
274 self.pid_setpoint = pid_setpoint
275 self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid_setpoint', const=self.pid_setpoint)
276
277 def get_pid_rst_int(self):
278 return self.pid_rst_int
279
280 def set_pid_rst_int(self, pid_rst_int):
281 self.pid_rst_int = pid_rst_int
282 self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid_rst_int', const=self.pid_rst_int)
283
284 def get_pid_kp(self):
285 return self.pid_kp
286
287 def set_pid_kp(self, pid_kp):
288 self.pid_kp = pid_kp
289 self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid_kp', const=self.pid_kp)
290
291 def get_pid_ki(self):
292 return self.pid_ki
293
294 def set_pid_ki(self, pid_ki):
295 self.pid_ki = pid_ki
296 self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid_ki', const=self.pid_ki)
297
298 def get_pid_kd(self):
299 return self.pid_kd
300
301 def set_pid_kd(self, pid_kd):
302 self.pid_kd = pid_kd
303 self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid_kd', const=self.pid_kd)
304
305 def get_demod_nco(self):
306 return self.demod_nco
307
308 def set_demod_nco(self, demod_nco):
309 self.demod_nco = demod_nco
310 self.nco_counter_send_conf_0_0.set_nco(device='/dev/demod_nco', freq_ref=125000000, freq_dds=self.demod_nco, acc_size=32, offset=0, pinc_sw=1, poff_sw=1)
311
312 def get_dds_range(self):
313 return self.dds_range
314
315 def set_dds_range(self, dds_range):
316 self.dds_range = dds_range
317 self.add_const_set_offset_0_0_0_0_1_0_0.set_const(device='/dev/dds_range', const=self.dds_range)
318
319 def get_dds_poff_sw(self):
320 return self.dds_poff_sw
321
322 def set_dds_poff_sw(self, dds_poff_sw):
323 self.dds_poff_sw = dds_poff_sw
324 self._dds_poff_sw_callback(self.dds_poff_sw)
325 self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.dds_pinc_sw, poff_sw=self.dds_poff_sw)
326
327 def get_dds_pinc_sw(self):
328 return self.dds_pinc_sw
329
330 def set_dds_pinc_sw(self, dds_pinc_sw):
331 self.dds_pinc_sw = dds_pinc_sw
332 self._dds_pinc_sw_callback(self.dds_pinc_sw)
333 self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.dds_pinc_sw, poff_sw=self.dds_poff_sw)
334
335 def get_dds_offset(self):
336 return self.dds_offset
337
338 def set_dds_offset(self, dds_offset):